feat(workspace): AI tool per session, one place to start a session, ended sessions open like Claude Desktop
- A session picks its own AI tool: `tool` on POST /api/lanes/:id/start (a catalog id, known + enabled, else 400 EBADTOOL/EDISABLED); a resume keeps the tool its session ran on (`sessions.tool`). The workspace's `lanes.tool` is now only the default. - The workspace home's prompt box is the one place a session starts. Its fields run in order: AI → AI Router (Native or a profile) → Model (the tool's own list, or the router's models) → Permission (Claude mode / Codex sandbox+approval / catalog bypass) → Effort. - The pane's run form (RunSetup) is gone: New run, a single pane's exit and an empty split pane's New session all go to the home. RunSetup.tsx keeps PromptEditor, CwdAutocomplete and ModelPicker (new `choices` prop). - The tool icon moved from the sidebar's workspace row to each session row (right edge, `session.tool`); the split-pane header shows the run's tool. - An ended session opens in its workspace (`&session=`, SessionReplay.tsx): its conversation read-only plus a prompt box; only a SENT message resumes it (resumeSessionId + prompt, first free slot). The console is only hidden behind it. - Analyst button beside Files/Changes in the right panel opens /sessions/:id for the opened session. - Gemini CLI ships its own icon (client/public/ai-tools/gemini.svg, from zonalogo.com). - RouterPicker always shows (Native disabled for tools without router support); useAiRouters() exported. - Tests: server start-with-tool cases; SessionReplay, home field order/tool/ router models, empty pane, Analyst; dropped the cwd-field suites (Run.defaultCwd, Workspace.laneCwd). Docs: CLAUDE.md rules, API.md, LANES.md, README, ARCHITECTURE, INSTALL.
This commit is contained in:
+1
-2
@@ -1582,8 +1582,7 @@ two minutes) keeps the status, `ended_at` and `updated_at` its hooks gave it
|
||||
(the poll still writes its usage, model and name); once the hooks stop —
|
||||
removed, or untrusted in Codex — the journal decides again, in `settleActive`
|
||||
too. The Workspace's external-session list
|
||||
(attach, `claude --resume`) and the run form's resume picker offer
|
||||
`tool = 'claude'` rows only.
|
||||
(attach, `claude --resume`) offers `tool = 'claude'` rows only.
|
||||
|
||||
**Codex hooks** (`server/lib/codex-hooks.js`, Settings → Codex → Overview →
|
||||
Codex hooks, `GET/POST/DELETE /api/settings/codex-hooks`) are installed only on
|
||||
|
||||
Reference in New Issue
Block a user