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
47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: Tool Lifecycle
|
|
|
|
The system SHALL manage tool lifecycle operations including tunnel recreation.
|
|
|
|
#### Scenario: Stop tool
|
|
- GIVEN a running tool instance
|
|
- WHEN the user stops it
|
|
- THEN `docker compose stop` is executed
|
|
- AND the cloudflared tunnel process is terminated
|
|
- AND status is updated to "stopped"
|
|
|
|
#### Scenario: Start tool
|
|
- GIVEN a stopped tool instance
|
|
- WHEN the user starts it
|
|
- THEN `docker compose start` is executed
|
|
- AND a new temporary Cloudflare tunnel is created
|
|
- AND status is updated to "running"
|
|
|
|
#### Scenario: Recreate tunnel
|
|
- GIVEN a running tool instance with a broken tunnel
|
|
- WHEN the user requests tunnel recreation
|
|
- THEN the existing cloudflared process is terminated
|
|
- AND a new temporary Cloudflare tunnel is created
|
|
- AND the instance URL is updated
|
|
- AND the instance shows as healthy
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Tunnel Health Check
|
|
|
|
The system SHALL check tunnel health for running instances.
|
|
|
|
#### Scenario: Healthy tunnel check
|
|
- GIVEN a running instance with an active tunnel
|
|
- WHEN the health check runs
|
|
- THEN the tunnel URL responds with HTTP 2xx
|
|
- AND the instance is marked as healthy
|
|
|
|
#### Scenario: Broken tunnel check
|
|
- GIVEN a running instance with a broken tunnel
|
|
- WHEN the health check runs
|
|
- THEN the tunnel URL does not respond with HTTP 2xx
|
|
- AND the instance is marked with tunnel_error
|
|
- AND a "Recreate Tunnel" button is shown
|