summaryrefslogtreecommitdiffhomepage
path: root/tasks.md
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-23 02:35:26 +0900
committerAdam Malczewski <[email protected]>2026-06-23 02:35:26 +0900
commit6d7b3923b40eb4baf3cefadfde236de646990713 (patch)
treedd97bcecc6ccac0d74d791d975af82ff0bdd3e5d /tasks.md
parent55177d549e60886338f58cb579534dc1a09f94ec (diff)
downloaddispatch-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.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/tasks.md b/tasks.md
index d7a992a..5bb27fd 100644
--- a/tasks.md
+++ b/tasks.md
@@ -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