063a839790
- Add clone_mode and branch fields to tool_instances - Add ssh_key_id to git_repositories for per-repo SSH key assignment - Implement host-side git cloning with branch selection (default: main) - Mount SSH keys into containers for git operations in clone mode - Add dirty state check on clone-mode instance deletion with confirmation - Update SessionsPage with mount/clone selector, branch input, SSH key display - Add SSH key selector to repository creation form - Add dirty delete confirmation modal with changed files list - Update API schemas and endpoints for new fields - Sync delta specs to main specs (git-repo, tool-instances, repo-clone-mode) - Archive completed OpenSpec change: repo-clone-mode-with-ssh - Document git requirement for custom tool types Quality gates: Frontend typecheck and build passed OpenSpec: repo-clone-mode-with-ssh archived with all tasks complete
39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: Tool types must define a default port
|
|
|
|
The system SHALL require all tool types to specify a `default_port`.
|
|
|
|
#### Scenario: Creating tool type without port
|
|
- **GIVEN** a user creating a new tool type
|
|
- **WHEN** they omit the `default_port` field
|
|
- **THEN** the system rejects the request with a 422 error
|
|
|
|
#### Scenario: Creating tool type with port
|
|
- **GIVEN** a user creating a new tool type with `default_port: 3000`
|
|
- **WHEN** the request is submitted
|
|
- **THEN** the tool type is created successfully
|
|
|
|
### Requirement: Tool type port must be exposed in compose template
|
|
|
|
The system SHALL validate that the compose template exposes the port defined in `default_port`.
|
|
|
|
#### Scenario: Port mismatch
|
|
- **GIVEN** a tool type with `default_port: 8443`
|
|
- **WHEN** the compose template only exposes port `3000`
|
|
- **THEN** the system rejects with an error indicating the port mismatch
|
|
|
|
#### Scenario: Port exposed correctly
|
|
- **GIVEN** a tool type with `default_port: 8443`
|
|
- **WHEN** the compose template exposes port `8443` via `ports: ["8443:8443"]`
|
|
- **THEN** the tool type is accepted
|
|
|
|
### Requirement: Tool types support multiple interfaces
|
|
|
|
The system SHALL allow tool types to specify multiple interfaces.
|
|
|
|
#### Scenario: Tool with web and terminal interfaces
|
|
- **GIVEN** a tool type with `interfaces: ["terminal", "web"]`
|
|
- **WHEN** an instance is created
|
|
- **THEN** the instance shows both "Open" (web) and "Terminal" buttons in the UI
|