{"_id":"@buddhilive/dsh-api-workspace-controller","name":"@buddhilive/dsh-api-workspace-controller","dist-tags":{"alpha":"0.1.2-alpha.3","latest":"0.1.2-alpha.3"},"versions":{"0.1.2-alpha.3":{"name":"@buddhilive/dsh-api-workspace-controller","description":"Workspace Remote commands and reconnect-safe state transport","version":"0.1.2-alpha.3","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/Buddhilive/buddhi-ai-harness.git","directory":"packages/api/workspace-controller"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types/types.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"dsh":{"client":{"external":["@buddhilive/dsh-api-gateway/client"],"inject":["@buddhilive/dsh-api-gateway","@buddhilive/dsh-client-connection"],"platform":"web"}},"license":"MIT","dependencies":{"zod":"^4.4.3","@buddhilive/dsh-deque":"^0.1.2-alpha.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@buddhilive/dsh-api-gateway":"^0.1.2-alpha.3","@buddhilive/dsh-client-connection":"^0.1.2-alpha.3","@buddhilive/dsh-host-directory-picker":"^0.1.2-alpha.3","@buddhilive/dsh-invariants":"^0.1.2-alpha.3","@buddhilive/dsh-session":"^0.1.2-alpha.3","@buddhilive/dsh-typert-protocol":"^0.1.2-alpha.3","@buddhilive/dsh-storage-domain":"^0.1.2-alpha.3","@buddhilive/dsh-workspace":"^0.1.2-alpha.3"},"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@buddhilive/dsh-api-gateway":"^0.1.2-alpha.3","@buddhilive/dsh-client-connection":"^0.1.2-alpha.3","@buddhilive/dsh-client-store":"^0.1.2-alpha.3","@buddhilive/dsh-host-directory-picker":"^0.1.2-alpha.3","@buddhilive/dsh-invariants":"^0.1.2-alpha.3","@buddhilive/dsh-session":"^0.1.2-alpha.3","@buddhilive/dsh-storage-domain":"^0.1.2-alpha.3","@buddhilive/dsh-workspace":"^0.1.2-alpha.3","@buddhilive/dsh-typert-protocol":"^0.1.2-alpha.3"},"scripts":{"bundle":"tsdown","watch":"tsdown --watch"},"_id":"@buddhilive/dsh-api-workspace-controller@0.1.2-alpha.3","bugs":{"url":"https://github.com/Buddhilive/buddhi-ai-harness/issues"},"homepage":"https://github.com/Buddhilive/buddhi-ai-harness#readme","_integrity":"sha512-l30rGdUx9vMQ1jvrvxEUTa6wyULK4WMAInQ5ozG3FRdQ1VGAV+M1LjC6NEpsoLmRmqSUNmbl7IIlzeLwIr+RSg==","_resolved":"C:\\DevDojo\\Buddhi\\buddhi-ai-harness\\dist\\npm\\buddhilive-dsh-api-workspace-controller-0.1.2-alpha.3.tgz","_from":"file:C:/DevDojo/Buddhi/buddhi-ai-harness/dist/npm/buddhilive-dsh-api-workspace-controller-0.1.2-alpha.3.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-l30rGdUx9vMQ1jvrvxEUTa6wyULK4WMAInQ5ozG3FRdQ1VGAV+M1LjC6NEpsoLmRmqSUNmbl7IIlzeLwIr+RSg==","shasum":"bede4bd9b432c187af997a239fe5bbca4d19514c","tarball":"https://registry.npmjs.org/@buddhilive/dsh-api-workspace-controller/-/dsh-api-workspace-controller-0.1.2-alpha.3.tgz","fileCount":30,"unpackedSize":175095,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEdsdlx5A7pN9znOLauoHXfSY6bFC7EQ7HoPbQJrLwhPAiA108QM2R7ecSDV+/rtYg1Kcm3uAsl7RpWIDoManVPr5Q=="}]},"_npmUser":{"name":"buddhilive","email":"visitbudkavin@gmail.com"},"directories":{},"maintainers":[{"name":"buddhilive","email":"visitbudkavin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-api-workspace-controller_0.1.2-alpha.3_1788165498073_0.5517275088439322"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T08:38:17.696Z","0.1.2-alpha.3":"2026-08-31T08:38:18.271Z","modified":"2026-08-31T08:38:18.461Z"},"maintainers":[{"name":"buddhilive","email":"visitbudkavin@gmail.com"}],"description":"Workspace Remote commands and reconnect-safe state transport","homepage":"https://github.com/Buddhilive/buddhi-ai-harness#readme","repository":{"type":"git","url":"git+https://github.com/Buddhilive/buddhi-ai-harness.git","directory":"packages/api/workspace-controller"},"bugs":{"url":"https://github.com/Buddhilive/buddhi-ai-harness/issues"},"license":"MIT","readme":"---\ndescription: \"Host 与 Client 工作区控制：修改工作区导航并跟随其完整投影。\"\nkind: \"package-reference\"\n---\n# Workspace Controller\n\n[English](README.md) | 中文\n\n## 概述\n\n`@buddhilive/dsh-api-workspace-controller` 拥有 Host 的 `ctx.workspaceController` 服务和生成的 Client `ctx.remote.workspace` namespace。它的 Remote 方法负责创建、重命名、移除和重排 Workspace，在 Workspace 内重排 Session，从 Workspace 导航中归档 Session，以及跟随完整的 Workspace 投影。当 Client 必须修改或跟随 Workspace 导航时，请通过 API Gateway 使用它。本包同时拥有 `ctx.directoryPickerController` 与生成的 `ctx.remote.directoryPicker` namespace，因为它承载的选目录 seam 是抽象的，自身从不作为 Loader entry。\n\n## 目录\n\n- [使用本包](#use-this-package)\n- [模型体验](#model-experience)\n- [已知限制与延期工作](#known-limitations-and-deferred-work)\n- [开发备注](#dev-note)\n\n-----\n\n<a id=\"use-this-package\"></a>\n## 使用本包\n\nHost 控制器会串行执行正确性取决于当前 registry 状态的变更，并为预期失败抛出带稳定 `workspace/*` 或 `directory-picker/*` 码的 `RemoteError`。它的 `follow()` 流会同步订阅持久 Workspace 变更，先发出一份完整 baseline，再按顺序发出 `upsert`、`remove`、`order` 和 `archived` 增量。重连会以替换 baseline 开始新一代，因此消费方不依赖收到断线期间的每个增量。\n\nClient 入口提供 `ClientWorkspaceModel` 和 `createWorkspaceStateStream()`。该模型拥有 Workspace 行、registry 顺序、已归档 Session id、一元变更回声，以及流与一元调用的竞态处理。较新的 Host 行按 `updatedAt` 获胜；已提交的流顺序优先于较旧的一元响应；已经移除的 Workspace id 不会被延迟数据复活。该包公开与框架无关的快照和订阅，把导航策略与 React hook 留给 UI owner。\n\n-----\n\n<a id=\"model-experience\"></a>\n## 模型体验\n\n无，因为 Workspace 组织属于浏览器与 Host 控制状态，并且不注册提示词、工具或会话事件。\n\n#### KV Cache 影响\n\n无直接影响；Workspace 变更不会改变模型请求。\n\n## 已知限制与延期工作\n\n<a id=\"known-limitations-and-deferred-work\"></a>\n\n- `follow()` 在重连后替换完整投影，不提供持久 cursor 或增量追赶协议。\n- 进程本地删除标记只会在 Client 模型生命周期内阻止延迟数据复活已移除的 Workspace。\n\n\n<a id=\"dev-note\"></a>\n### 开发备注\n\n<details>\n<summary>维护者工作上下文——点击展开</summary>\n\n无。\n\n</details>\n","readmeFilename":"README.zh.md","_rev":"1-dbf4e11f236ca6a0967b4645021a81cc"}