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
46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: Tool configs can be stored per user
|
|
The system SHALL allow users to store configuration values for tool types.
|
|
|
|
#### Scenario: Save global config
|
|
- **WHEN** a user saves a config value for a tool type
|
|
- **THEN** the config is stored with user_id and tool_type_id
|
|
- **AND** it is available for all future instances of that tool
|
|
|
|
#### Scenario: Save project-specific config
|
|
- **WHEN** a user saves a config value with a project_id
|
|
- **THEN** the config is scoped to that project
|
|
- **AND** it overrides global config for that project
|
|
|
|
### Requirement: Configs support env and file types
|
|
The system SHALL support environment variable configs and file-based configs.
|
|
|
|
#### Scenario: Env config
|
|
- **WHEN** a config has type "env"
|
|
- **THEN** it is injected as an environment variable when starting the container
|
|
|
|
#### Scenario: File config
|
|
- **WHEN** a config has type "file"
|
|
- **THEN** it is written to a file in the container
|
|
- **AND** the file path is configurable
|
|
|
|
### Requirement: Tool types have categories and interfaces
|
|
The system SHALL categorize tool types and declare their interfaces.
|
|
|
|
#### Scenario: Web interface tool
|
|
- **WHEN** a tool type has interface "web"
|
|
- **THEN** the UI shows an "Open" button
|
|
|
|
#### Scenario: Terminal interface tool
|
|
- **WHEN** a tool type has interface "terminal"
|
|
- **THEN** the UI shows a "Terminal" button
|
|
|
|
### Requirement: OpenCode is available as built-in tool
|
|
The system SHALL include OpenCode as a built-in tool type with terminal interface.
|
|
|
|
#### Scenario: Create OpenCode instance
|
|
- **WHEN** a user creates an OpenCode instance
|
|
- **THEN** it starts a container with opencode installed
|
|
- **AND** the repo is mounted at /workspace
|
|
- **AND** the user can access it via terminal |