The bare 'domain' name was too generic for a published package. The directory moves to packages/storage/storage-domain, the package becomes @deepseek-ai/dsh-storage-domain, and the plugin/invariant names follow; the ctx surface (ctx.storage.domain), the domain/changed event, and all runtime behavior are unchanged. References, catalogs, graphs, and the bilingual design note move together.
workspace/ — the workspace entity
The workspace family owns the persistent workspace concept: a directory the user works in, with a title and the ordered list of sessions that belong to it. Design record: domain KV storage Agent Note.
| Package | Role | ctx key |
|---|---|---|
workspace/ |
WorkspaceRegistry service over the storage domain form: realpath-unique paths, session-ownership accounting, entity cache |
ctx.workspace |
Ownership truth lives in the workspace record's sessionIds (ordered), never derived from session cwd; attachSession verifies the session header's cwd resolves to the workspace path, so one session structurally belongs to at most one workspace. Deletion (workspace and session cascade) is deliberately absent this phase and ships with the session-side primitives.