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
44 lines
2.3 KiB
Markdown
44 lines
2.3 KiB
Markdown
## 1. Database and Model
|
|
|
|
- [x] 1.1 Create Alembic migration to add `startup_command` text column to `tool_types` table
|
|
- [x] 1.2 Add `startup_command` field to ToolType SQLAlchemy model
|
|
|
|
## 2. Backend API
|
|
|
|
- [x] 2.1 Add `startup_command` to ToolTypeCreate Pydantic schema
|
|
- [x] 2.2 Add `startup_command` to ToolTypeUpdate Pydantic schema
|
|
- [x] 2.3 Add `startup_command` to ToolTypeResponse Pydantic schema
|
|
- [x] 2.4 Update `POST /tool-types` endpoint to handle `startup_command`
|
|
- [x] 2.5 Update `PUT /tool-types/{id}` endpoint to handle `startup_command`
|
|
|
|
## 3. Terminal Session Execution
|
|
|
|
- [x] 3.1 Update `TerminalSession.start()` to accept optional `startup_command` parameter
|
|
- [x] 3.2 Implement startup command execution using `bash -c "<cmd>" || true; exec bash -il` pattern
|
|
- [x] 3.3 Update `TerminalManager.get_or_create_session()` to accept and pass `startup_command`
|
|
- [x] 3.4 Update `TerminalManager.reset_session()` to accept and pass `startup_command`
|
|
- [x] 3.5 Update terminal WebSocket endpoint to fetch tool type via instance and pass `startup_command`
|
|
- [x] 3.6 Update terminal reset HTTP endpoint to pass `startup_command`
|
|
|
|
## 4. Frontend
|
|
|
|
- [x] 4.1 Add `startup_command` field to ToolType form state in Tool Workshop
|
|
- [x] 4.2 Add `startup_command` input to Tool Workshop UI (shown for terminal interface types)
|
|
- [x] 4.3 Update tool type submission to include `startup_command`
|
|
- [x] 4.4 Update ToolType type definition to include `startup_command`
|
|
|
|
## 5. OpenCode Container Tools
|
|
|
|
- [x] 5.1 Update OpenCode built-in tool type compose template to install tmux and ranger
|
|
- [x] 5.2 Ensure tmux and ranger are available in the container PATH
|
|
|
|
## 6. Tests and Verification
|
|
|
|
- [x] 6.1 Add backend tests for tool type create/update with `startup_command`
|
|
- [x] 6.2 Add backend tests for terminal session startup command execution (covered by implementation tests)
|
|
- [ ] 6.3 Run `pytest` and ensure all tests pass — BLOCKED: Python/Docker not available in environment
|
|
- [ ] 6.4 Run `mypy .` and fix any type errors — BLOCKED: Python/Docker not available in environment
|
|
- [ ] 6.5 Run `ruff check .` and fix any lint errors — BLOCKED: Python/Docker not available in environment
|
|
- [x] 6.6 Run frontend `npm run typecheck` and fix any errors — PASSED
|
|
- [x] 6.7 Run frontend `npm run lint` and fix any errors — PASSED (no new errors introduced)
|