01a0ef46c9
- Add startup_command field to ToolType model and API - Execute startup command before interactive shell in terminal sessions - Add tmux and ranger to OpenCode container spec - Update Tool Workshop UI with startup_command input for terminal types - Add backend tests for startup_command CRUD operations - Sync specs: tool-terminal, tool-types-definition, opencode-web-server - New spec: tool-terminal-startup-command Quality gates: Frontend typecheck/lint passed. Backend tests blocked by environment (Python/Docker not available). OpenSpec: terminal-startup-and-container-tools
43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: OpenCode runs a web server
|
|
|
|
The system SHALL configure OpenCode containers to run a web server accessible on port 3000.
|
|
|
|
#### Scenario: OpenCode container starts
|
|
- **GIVEN** an OpenCode tool instance
|
|
- **WHEN** the container starts
|
|
- **THEN** a web server is running on port 3000 inside the container
|
|
- **AND** the server serves a web terminal interface
|
|
- **AND** the container has `tmux` installed
|
|
- **AND** the container has `ranger` installed
|
|
|
|
### Requirement: OpenCode exposes web interface
|
|
|
|
The system SHALL mark OpenCode as having both terminal and web interfaces.
|
|
|
|
#### Scenario: OpenCode instance created
|
|
- **GIVEN** a new OpenCode instance
|
|
- **WHEN** the instance list is displayed
|
|
- **THEN** both "Open" and "Terminal" buttons are shown
|
|
|
|
### Requirement: OpenCode web terminal uses correct port
|
|
|
|
The system SHALL use port 3000 when creating tunnels for OpenCode instances.
|
|
|
|
#### Scenario: Tunnel created for OpenCode
|
|
- **GIVEN** an OpenCode instance with `default_port: 3000`
|
|
- **WHEN** the instance starts and creates a tunnel
|
|
- **THEN** the tunnel targets `http://container-name:3000`
|
|
|
|
### Requirement: OpenCode web terminal displays properly
|
|
|
|
The system SHALL serve a functional web terminal interface for OpenCode.
|
|
|
|
#### Scenario: User opens OpenCode web UI
|
|
- **GIVEN** a running OpenCode instance
|
|
- **WHEN** the user clicks the "Open" button
|
|
- **THEN** a new tab opens with the OpenCode web interface
|
|
- **AND** the interface shows a terminal connected to the OpenCode process
|
|
- **AND** the user can run `tmux` and `ranger` commands
|