diff options
| author | Adam Malczewski <[email protected]> | 2026-06-23 02:35:26 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-23 02:35:26 +0900 |
| commit | 6d7b3923b40eb4baf3cefadfde236de646990713 (patch) | |
| tree | dd97bcecc6ccac0d74d791d975af82ff0bdd3e5d /tasks.md | |
| parent | 55177d549e60886338f58cb579534dc1a09f94ec (diff) | |
| download | dispatch-6d7b3923b40eb4baf3cefadfde236de646990713.tar.gz dispatch-6d7b3923b40eb4baf3cefadfde236de646990713.zip | |
feat: workspaces contract + conversation-store implementation (Wave 0+1)
Wire 0.12.0: Workspace, WorkspaceEntry, ConversationMeta.workspaceId
Transport-contract 0.16.0: workspaceId on ChatRequest/QueueRequest/ChatQueueMessage;
workspace endpoint types (EnsureWorkspaceRequest, WorkspaceResponse, etc.)
Kernel: re-export Workspace/WorkspaceEntry from contracts
Conversation-store: workspace persistence + service methods (getWorkspace,
ensureWorkspace, setWorkspaceTitle, setWorkspaceDefaultCwd, deleteWorkspace,
listWorkspaces, getWorkspaceId, setWorkspaceId, getEffectiveCwd, isValidWorkspaceSlug);
listConversations filter by workspaceId; forkHistory/replaceHistory preserve
workspaceId. 111 tests pass.
FE handoff: frontend-workspaces-handoff.md (courier doc)
18 typecheck errors in session-orchestrator/transport-http/cli test fakes
(expected fan-out — fixed in Wave 2+3).
Diffstat (limited to 'tasks.md')
| -rw-r--r-- | tasks.md | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -530,6 +530,23 @@ conversation tab. Short-ID prefix resolution (4+ chars → full ID via `GET /con → `{content:""}`, `POST /conversations/:id/open` → `{conversationId}`. - [ ] Live-verify end-to-end (CLI → real conversation → FE tab open). +## Workspaces — FE design response (in review) +Cross-repo design ask from `../dispatch-web` (`backend-handoff-workspaces.md`). +Outbound courier: `frontend-workspaces-handoff.md` (final shapes + Q1–Q8). Status: +**contracts finalized, awaiting user approval to implement.** +- **Boundary decision:** workspaces live inside `conversation-store` (metadata + + cwd persistence owner); no new extension. Single owner-agent for all workspace + storage + service methods. +- **Versions:** `@dispatch/wire` `0.11.0→0.12.0`, `@dispatch/transport-contract` + `0.15.0→0.16.0`, `@dispatch/ui-contract` unchanged. +- **Key decisions:** `DELETE /workspaces/:id` closes all conversations (status→ + "closed") + reassigns to "default" + deletes workspace; auto-create workspace on + turn start if missing; `PUT /workspaces/:id` create-on-miss with optional + `title`/`defaultCwd`; `DELETE /conversations/:id/cwd` to clear explicit cwd; + `GET /conversations/:id/lsp` roots at effective cwd; WS lifecycle push deferred. +- **Waves:** Wave 0 (contracts, orchestrator) → Wave 1 (conversation-store) → + Wave 2 (session-orchestrator) → Wave 3 (transport-http + transport-ws + cli, parallel). + ## Open items - **`prefix.fingerprint` / `warm|real` cache-bust attributes (deferred):** decoupled from dedup by the content-addressed decision; also gated on cache-warming being |
