From a7c056c512484962dda3b0574dc9ff11444e5e9c Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Mon, 10 Aug 2026 23:35:06 +0800
Subject: [PATCH 01/15] docs(release): propose three independent npm publish
sequences
packages/, vendor/, and native/ carry different version baselines and change
at different times, so each releases on its own bump sequence, tag prefix, and
workflow. Records the vendor change judgement (per-package tags as the
last-published pointer), the registry-state publish rule that makes re-runs
idempotent, and the workspace:^ prerequisite for publishing at any version
other than the current 0.0.1.
English counterpart and pairing record follow once the Chinese text is
reviewed.
---
.../2026-08-10-npm-release-sequences.zh.md | 186 ++++++++++++++++++
1 file changed, 186 insertions(+)
create mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
new file mode 100644
index 0000000000..836b5e863b
--- /dev/null
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
@@ -0,0 +1,186 @@
+# Agent Note: 三条独立序列的私有 NPM 发布
+
+Status: proposed
+
+[English](2026-08-10-npm-release-sequences.md) | 中文
+
+## 问题
+
+这个仓库有三组互不相干的可发布包,但没有任何发布通道把它们送上 registry。
+
+`packages/*/*` 与 `apps/*` 组成 `@deepseek-ai/dsh` 的运行时闭包;`vendor/*` 是九个 rescope 过的 Cordis 框架包,各自带着上游的版本号;`native/landlock-run/packages/*` 是 Linux 平台包,已有自己的 `landlock-run-release.yml`。三组的版本基线、变更节奏和构建要求都不同:dsh 随产品迭代,vendor 只在同步上游或改动本地修改时才动,native 需要 musl 工具链和逐架构构建。把它们塞进一条发布流水线,等于每次产品发版都要重发框架和原生二进制。
+
+当前状态还有两处硬门。全部 217 个 workspace manifest 都是 `private: true`,直接 `npm publish` 发不出去。更隐蔽的是 933 条 dsh 兄弟包之间硬写的 `peerDependencies: "^0.0.1"`:`pnpm pack` 只替换 `workspace:` 协议,不动语义范围,而 `^0.0.1` 等于 `>=0.0.1 <0.0.2`——发 `0.0.2` 落不进去,发 `0.0.1-rc.1` 也落不进去(semver 规定不带预发布段的范围排除预发布版本)。这 933 条至今没出事,只因为版本一直停在 `0.0.1`。
+
+本仓已有的 `scripts/publish-npm-baseline.ts` 是本机发布脚本:它把 pack 与 publish 放进同一个进程,需要人工在本机完成认证与重试,且把 vendor 排除在发布集之外。它不能作为 CI 发布的基础,但其中的 tarball payload 校验与已安装产物探针是验证过的零件。
+
+## 提案
+
+### 三条独立序列
+
+`packages/`、`vendor/`、`native/` 各自一条 bump 序列、各自一次发布,不共享版本号、不共享触发、不互相等待。发 dsh 不重发 vendor,发 vendor 不重发 native。
+
+| 序列 | 成员 | 版本基线 | tag | workflow |
+|---|---|---|---|---|
+| dsh | `packages/*/*` + `apps/*`(`@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend`) | 全族一个 `0.0.x` | `dsh-v<版本>` | `release.yml`(新增) |
+| vendored framework | `vendor/*` 九个包 | 每包各自的上游版本线 | `vendor-<包名>-v<版本>`(每包一个) | `release-vendor.yml`(新增) |
+| native | `native/landlock-run/packages/*` | 自己的 `0.0.x` | `landlock-run-v<版本>` | `landlock-run-release.yml`(现状不动) |
+
+三组一律发到 npmjs.com 的 `@deepseek-ai` scope 下的**私有包**(`npm publish --access restricted`)。native 三个包现在写的是 `access: public`,要改成 `restricted`。
+
+### 版本由本地命令写进仓库,CI 只核对与上传
+
+每条序列有一条 `bump and commit` 命令:算出目标版本 → 写进相关 manifest → `pnpm install --lockfile-only` → 立刻自检 → `git add` manifest 与 lockfile → commit。发布版本因此在仓库里查得到,不存在「发出去的是哪个版本说不清楚」。tag 由人工在合入 master 后打,CI 不写仓库、不需要写权限。
+
+dsh 序列全族共用一个版本,接受 `major | minor | patch | x.y.z` 三种入参与显式版本号。先用 `0.0.1-rc.1` 这类预发布号把 pack、仓外安装探针、真实私有发布跑通一遍,验证通过后再发 `0.0.1`、`0.0.2` 这样的数字版本。dist-tag 沿用本仓 `landlock-run-release.yml` 已有的判定:版本带预发布段就 `--tag next`,否则进 `latest`。
+
+### vendor:谁改了谁发版,tag 就是账本
+
+vendor 九包加了 scope 之后与上游脱钩,但保留各自的版本线。发布版本 = 去掉预发布段后 patch+1,首发目标:
+
+| 包 | 上游版本 | 首发版本 |
+|---|---|---|
+| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
+| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
+| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
+| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
+| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
+| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
+| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
+| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
+| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
+
+只发改动过的包。变更判据不引入新的状态文件:**每包一个 tag,tag 就是「上次发布到哪个 commit」的记录**。bump 对每个包取最新的 `vendor-<包名>-v*` tag,`git diff <该 tag>..HEAD -- vendor/<目录>` 有差异就 patch+1,没差异就跳过;查不到 tag 就按上表首发。差异只看会进 tarball 的路径(复用 `scripts/publication-payload.ts` 的 `files` 规则),改动 vendor 内的注释不触发发版。
+
+tag 只是 commit 指针,不是「已发布」的证明——打了 tag 而 publish 失败的情况必须能识别。所以 bump 还要向 registry 核对「tag 所指版本确实存在」,不一致时明确失败交人处理,不让脚本猜。私有包查询需要鉴权,本机未登录时跳过这条核对,CI 里强制执行。
+
+vendor 九包**内部**的依赖范围不用改:`^1.8.1` 容纳 `1.8.2`、`^1.0.0-rc.5` 容纳 `1.0.1`,patch+1 永远落在范围内。
+
+### publish 只在 GitHub 执行,用 registry 状态决定发什么
+
+发布只从 GitHub Actions 执行,没有本机发布路径。这让「向 registry 核对」成为 CI 里的强制步骤,不需要为本机未鉴权的情况留旁路。
+
+publish 不读 tag、不读任何清单,对发布集里每个包比较 manifest 版本与 registry 上的已发布状态,按三态处置:
+
+| 状态 | 处置 |
+|---|---|
+| registry 上没有该版本 | 发布 |
+| 已有该版本,且 tarball 的 sha512 与 registry 记录的 `dist.integrity` 相同 | 跳过,属于同一批产物的重跑 |
+| 已有该版本,但 integrity 不同 | 失败退出,报「内容已变但版本未 bump」 |
+
+第三态是这条规则的目的:它拦住「改了代码却没 bump 版本」。前两态给出的是幂等——同一个 artifact 重跑 publish 不会重复发布,也不需要人工挑拣包。
+
+这条规则同时解决了一次发布事件产生多个 vendor tag、而 workflow 只能从一个 ref 触发的矛盾:workflow 不需要从 tag 推断本次该发哪些包。dsh 序列同构处理,它只有一个版本,差集要么全发要么全跳。
+
+第三态依赖同输入构建可复现(同一 commit 两次 pack 得到相同字节)。这一点必须实测确认,不能假定:`pnpm run build` 的产物若嵌入绝对路径或时间,integrity 就会在内容未变时漂移,第三态会误报。落地前先在 CI 上对同一 commit 连跑两次 pack 比对 integrity;若不可复现,则把比较下沉到 tarball 内的逐文件内容哈希,并明确排除导致漂移的字段。
+
+
+### 一次性把 workspace 内部引用改成 `workspace:^`
+
+仓库里所有指向 workspace 成员的引用统一成 `workspace:^`,由 `pnpm pack` 在发布时替换成匹配目标版本的范围。
+
+| 面 | 数量 | 效果 |
+|---|---|---|
+| dsh 兄弟包 `peerDependencies` | 933 | 发 `0.0.2` 或 `0.0.1-rc.1` 都自动得到匹配的范围 |
+| 指向 vendor 的 dep / peer / devDep | 105 + 221 + 218 | vendor patch+1 后不需要改写 dsh 侧引用,范围也不会随 vendor 递增而过期 |
+
+`scripts/check-workspace-constraints.ts` 现在断言 vendor peer 与 dev 的范围相等,改后两边都是 `workspace:^`,断言仍成立但语义要随之更新。
+
+这条是「发布期不做任何依赖改写」的前提:发布期只做一件事——pack 出字节。
+
+### 发布族对象
+
+领域里的实体是**发布族**:一组共享版本基线与 tag 前缀、可整体发布的包。新增一族等于新增一份族描述加一条 workflow lane,不改核心。
+
+| 对象 | 职责 |
+|---|---|
+| `ReleaseFamily` | 一族的身份:成员发现规则、版本策略、tag 命名、publish 目标。新增发布族在此落地 |
+| `ReleaseMember` | 一个可发布包:目录、manifest、族归属、发布顺序位次 |
+| `VersionPolicy` | 版本从哪来。`SharedSemver`(dsh:全族一个版本)与 `PerPackageChanged`(vendor:按 tag 判变更、去预发布段后 patch+1) |
+| `ReleaseSet` | 一族成员的拓扑序,按 `dependencies` 排、同层按包名排,保证确定性 |
+| `PackedBundle` | tarball 集合 + `publish-order.txt` + 元数据清单,是 pack 与 publish 之间唯一的交接物 |
+| `PublishTarget` | registry、access、dist-tag、凭据来源。dist-tag 由版本形态派生 |
+| `VersionInvariant` | 族内版本自洽;publish 必须从对应 tag 跑;tag 版本等于包版本;待发版本不得已存在于 registry |
+| `PayloadInvariant` | tarball 内容校验,复用 `scripts/publication-payload.ts` |
+| `InstalledProbe` | 仓外临时 consumer 从 tarball 安装后,用普通 Node 驱动已安装入口:`dsh --version`、`dsh --dump-default-config`、起一次 TUI 到就绪后退出。实现从 `scripts/publish-npm-baseline.ts` 搬运复用 |
+
+### workflow 形状:一次性 pack 全部,再统一 publish
+
+照参照流程(node-addon-require-builtin 的 `release.yml` 与 `scripts/pack-release.mjs`)的形状:`pack` job 一趟遍历整个发布集,逐包 `pnpm --dir <目录> pack --pack-destination <同一个目录>`,写出 `publish-order.txt`,整个目录作为**一份** artifact 上传;`publish` job 下载那一份 artifact,按 `publish-order.txt` 逐个 `npm publish`。发布集是一个整体,不存在「一半的包发出去了、另一半还在构建」。
+
+`pack` job 无凭据:install → verify → build → pack → 打包后安装验证 → upload-artifact。`publish` job 挂 `environment: npm-publish` 人工审批,只 `setup-node` 加 `download-artifact`,**不 checkout、不 build**,上传的就是 pack 出来的同一份字节。checkout 用 `fetch-depth: 0`,vendor 的变更判据需要历史与 tag。
+
+`environment` 是整条流程唯一的刹车:pack 无凭据、可随意排练;只有 publish 会停在审批上。GitHub 侧需要 `NPM_TOKEN` secret(对该 scope 有发布权限的 automation token)与 `npm-publish` environment(required reviewers,允许的 tag 限制为 `dsh-v*`、`vendor-*`、`landlock-run-v*`)。
+
+### PR 阶段跑到 pack 为止
+
+参照流程只有 `workflow_dispatch`,PR 上什么都验证不了。本仓在 `pull_request` 上跑完整的 pack:install → verify → build → 逐包 pack → 上传 tarball artifact。它证明的是「这个发布集现在能完整打出来」,无凭据、不碰任何 registry,fork 发来的 PR 也能跑。产物本身的正确性由既有测试覆盖,不在 PR 这一层重复。
+
+发布路径的测试走 master:`push: master` 跑同一套 pack 排练作为合入后回归,`workflow_dispatch` 带 `publish: true` 从 tag 走真实发布。
+
+
+
+### 仓库改造项
+
+| 项 | 内容 |
+|---|---|
+| 发布集 manifest | 去掉 `private: true`,补 `publishConfig`(`access: restricted`、`registry`) |
+| 发布集边界 | 一份显式的族与成员清单,脚本据此发现成员并校验闭包内的包都在清单里,不猜 |
+| 依赖协议 | workspace 内部引用统一 `workspace:^`,并更新 `check-workspace-constraints.ts` |
+| 根 `AGENTS.md` | 现在写着 vendored 包是 rescope 过且 `private: true`,vendor 要发布,这条约定要改 |
+| `vendor/README.md` | manifest 表补记上游版本,与我们发布的版本区分开 |
+| native 三包 | `publishConfig.access` 从 `public` 改 `restricted` |
+
+### 与既有提案的关系
+
+本 Note 取代 [以产物为先的 NPM 基线发布](2026-08-04-artifact-first-npm-baseline-publication.zh.md) 中的版本方案与发布集边界两部分:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不再排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。
+
+## 考虑过的替代方案
+
+**`-<时间戳>-<短 SHA>` 版本号。** 曾计划用它做持续 dev 发布。它与「版本必须落进代码库」冲突:版本内嵌 commit SHA,而把版本写回 manifest 会产生新的 commit,SHA 只能指向被发布的父 commit,链条要靠约定解释。改用数字版本递增后,`0.0.1-rc.1` 这类预发布号已经足够覆盖「先验证再正式发」的需求。
+
+**用 `vendor/published.json` 账本记录每包的已发版本与 commit。** 这是 tag 方案之前的设计,需要新增一份状态文件并保证它与 registry 不漂移。per-package tag 提供同样的 commit 指针,且 tag 本来就要打,不引入第二处状态。
+
+**事件级 tag(`vendor-r1`、`vendor-r2`)。** 为「一次发布事件多个包版本」准备的。改用 registry 差集决定发布集之后,workflow 不再需要从 tag 推断本次发布哪些包,per-package tag 就够用,而且每个 tag 携带的是它自己那个包的真实版本。
+
+**vendor 九包统一到 `4.0.x` 一条线。** 省掉变更检测,但 cosmokit 会从 `1.8.1` 跳到 `4.0.1`,上游血缘全部丢失;且九包内部的上游依赖范围(`^1.8.1` 之类)会立刻失配,必须改写 vendored manifest。
+
+**vendor 每次全部 patch+1,不做变更检测。** 最省事,代价是没有改动的包也拿到新版本号、内容与上一版逐字节相同。tag 方案让变更检测的成本降到「取一个 tag 加一次 diff」,不值得为省这点而让版本号虚涨。
+
+**只按版本号判断是否已发布,不比对内容。** 参照流程根本不查 registry,publish 直接逐个上传,重复版本由 npm 报错拦下。只按版本号跳过则会漏掉「改了代码没 bump」这一类,而这是唯一会安静地把旧字节留在 registry 上的错误。代价是引入对 registry 的查询与对构建可复现性的依赖。
+
+**只做打包后安装验证,不起本地 registry。** 参照流程就是这样:解包 tarball 组树、普通 Node 驱动。它绕过版本范围解析,理论上验证不了「200 多个互相依赖的包能不能从 registry 装起来」。曾提议在 CI 里起本地 registry 补这一层,被否:产物验证已由既有测试覆盖,发布路径的验证放在 master workflow 的排练里,PR 只需证明发布集能完整打出来。
+
+**以 `scripts/publish-npm-baseline.ts` 为基础扩展。** 它是本机发布脚本,把 pack 与 publish 放在同一进程,与「无凭据 pack、受保护 publish」的分离相反。它验证过的零件(payload 校验、已安装产物探针)搬运复用,避免 `pnpm run duplication` 判重复。
+
+**发布全部 217 个 workspace 包。** 发布集定为入口闭包。`support/`、`examples/` 这类包进 registry 只扩大攻击面与维护面,没有消费方。
+
+**一个 workflow 用 `family` 输入选择序列。** 两套版本模型塞进一个文件会让 concurrency group、tag 前缀、排练触发条件全部分叉成条件表达式。一族一个文件更短也更好读。
+
+**在发布期改写依赖范围。** 与一次性改成 `workspace:^` 相比,改写逻辑只在 CI 执行过,本机 `pnpm install` 看不见它是否正确,且每次发布都要重跑一遍。
+
+**CI 里执行 bump 并把版本推回仓库。** 需要给 workflow 仓库写权限,且发布分支上的版本提交会与人的提交竞争。参照流程把 bump 与 commit 留在本地命令,CI 只核对与上传。
+
+## 验收标准
+
+1. 三条序列各自可独立发布:发 dsh 不改动 vendor 与 native 的任何 manifest,反之亦然。
+2. `pnpm release:dsh <版本>` 一条命令完成 bump 与 commit,产出的 commit 含全族 manifest 与 lockfile,且立刻自检通过。
+3. `pnpm release:vendor` 只对「自其 `vendor-<包名>-v*` tag 以来 tarball 内容有变化」的包 patch+1,无变化的包 manifest 不被改动。
+4. `pull_request` 上跑完整 pack 并产出 tarball artifact,无凭据、不访问真实 registry,fork 的 PR 也能跑。
+5. `push: master` 跑同一套 pack 排练;真实发布只能由 `workflow_dispatch` 带 `publish: true` 从对应 tag 触发。
+6. publish 重跑同一 artifact 不重复发布已存在的版本;当某个版本已存在而 tarball integrity 不同时,publish 失败并指明是哪个包。
+7. 仓外临时 consumer 安装 `@deepseek-ai/dsh@0.0.1-rc.1` 后,用普通 Node 能跑通 `--version`、`--dump-default-config` 与一次 TUI 启动。
+8. 所有 workspace 内部引用为 `workspace:^`,且 pack 出的 tarball 里没有任何 `workspace:` 残留、没有指向不存在版本的范围。
+9. 发布集内没有 `private: true`,每个成员都有 `publishConfig.access: restricted`。
+
+## 风险
+
+**tag 与 registry 漂移。** 打了 tag 但 publish 失败,会让下一次 bump 误判该包已发布。缓解手段是 bump 向 registry 核对 tag 所指版本,不一致就失败退出;但本机未登录私有 registry 时这条核对被跳过,此时误判只能由 CI 的同一条核对拦下。
+
+**变更判据依赖 tag 可见。** shallow clone 或未拉取 tag 会让 vendor 的判据失效并退化成「全部首发」。`fetch-depth: 0` 是这条判据的前提,不是优化。
+
+**`workspace:^` 改动面大。** 一次触及 1477 处依赖声明。它不改变本机解析行为(pnpm 本来就从 workspace 解析),但会改变发布出去的范围写法,且要同步更新 workspace 约束门。
+
+**私有包的可见性代价。** `--access restricted` 之后,任何消费方(含 CI、沙箱 e2e、外部使用者)都必须持有 scope 凭据才能安装。native 三包从 public 转 restricted 会切断现有匿名安装路径。
+
+**首发一次性放大。** vendor 首发九包、dsh 首发全闭包,任何 payload 缺陷都会在同一次发布里暴露。用 `0.0.1-rc.1` 先跑一遍完整链路是唯一的缓解手段,正式版本号留给验证通过之后。
From 8cd38945f192d484f4011d33971aa35616214469 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Mon, 10 Aug 2026 23:35:23 +0800
Subject: [PATCH 02/15] feat(release): add release family metadata, pack,
verify, and publish
A release family owns its member discovery, version baseline, tag naming, and
packed-payload rule; the dsh family shares one version across packages/ and
apps/, while every vendor/ package keeps its own version line. Publish order is
topological over runtime dependencies so no package reaches the registry before
one it depends on.
pack packs the whole family into one directory and records the upload order;
publish decides per package against the registry, skipping a version whose
published tarball has the same integrity and failing when it differs, which is
what makes re-running publish over one artifact safe.
The vendored packages keep upstream's payload: their manifests export ./src/*,
so the harness rule that rejects sources and declaration maps would publish an
export map pointing at absent files.
---
package.json | 3 +
scripts/release/families.ts | 282 ++++++++++++++++++++++++++++++++++++
scripts/release/pack.ts | 86 +++++++++++
scripts/release/publish.ts | 130 +++++++++++++++++
scripts/release/verify.ts | 69 +++++++++
5 files changed, 570 insertions(+)
create mode 100644 scripts/release/families.ts
create mode 100644 scripts/release/pack.ts
create mode 100644 scripts/release/publish.ts
create mode 100644 scripts/release/verify.ts
diff --git a/package.json b/package.json
index 77816c319d..32138d03e8 100644
--- a/package.json
+++ b/package.json
@@ -121,6 +121,9 @@
"doc-sync": "tsx scripts/run-gates.ts doc-sync",
"hygiene": "pnpm run rescope-vendor:check && pnpm run knip && pnpm run publint && pnpm run constraints && pnpm run verify-package-invariants && pnpm run verify-built-package-invariants && pnpm run verify-cordis-config && pnpm run verify-node-next-types && pnpm run verify-runtime-closure && pnpm run verify-vendored-links",
"publish:npm-baseline": "tsx scripts/publish-npm-baseline.ts",
+ "release:verify": "tsx scripts/release/verify.ts",
+ "release:pack": "tsx scripts/release/pack.ts",
+ "release:publish": "tsx scripts/release/publish.ts",
"dsh": "node --import tsx/esm apps/cli/src/bin.ts",
"demo:headless": "node --import tsx/esm apps/cli/src/bin.ts --profile headless",
"demo:code-mode": "node scripts/demo-code-mode.mjs",
diff --git a/scripts/release/families.ts b/scripts/release/families.ts
new file mode 100644
index 0000000000..e989e54525
--- /dev/null
+++ b/scripts/release/families.ts
@@ -0,0 +1,282 @@
+/**
+ * The three independent publish sequences this repository releases from
+ * (`packages/` + `apps/`, `vendor/`, and `native/`) and the two this module
+ * owns: `dsh` and `vendor`. Each family carries its own version baseline, tag
+ * naming, and publish set, so releasing one never republishes another
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ *
+ * The family dimension lives here only. A new sequence adds a subclass and a
+ * `releaseFamilies()` entry; nothing else in the release scripts branches on it.
+ */
+
+import { globSync, readFileSync } from 'node:fs'
+import { resolve } from 'node:path'
+import { hasTypeRTRemoteNavigation, validateTarballPayload } from '../publication-payload.ts'
+
+/** Dependency sections that constrain publish order: a consumer must publish after its dependency. */
+const ORDER_SECTIONS = ['dependencies', 'optionalDependencies'] as const
+
+/** The workspace root manifest, which is never a release member. */
+const WORKSPACE_ROOT_PACKAGE = '@deepseek-ai/dsh-root'
+
+/** One publishable package of a release family. */
+export interface ReleaseMember {
+ /** Repository-relative package directory, for example `packages/core/session`. */
+ readonly directory: string
+ /** Package name from its manifest. */
+ readonly name: string
+ /** Package version from its manifest. */
+ readonly version: string
+ /** The parsed manifest, for payload policy and publication checks. */
+ readonly manifest: Readonly>
+}
+
+/**
+ * Read and parse a JSON file.
+ * @param path - absolute file path.
+ * @returns The parsed object.
+ */
+function readManifest(path: string): Record {
+ const parsed: unknown = JSON.parse(readFileSync(path, 'utf8'))
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
+ throw new Error(`${path} is not a JSON object`)
+ }
+ return parsed as Record
+}
+
+/**
+ * Read a required string field.
+ * @param manifest - parsed manifest.
+ * @param field - field name.
+ * @param context - manifest path for the error message.
+ * @returns The field value.
+ */
+function requireString(manifest: Record, field: string, context: string): string {
+ const value = manifest[field]
+ if (typeof value !== 'string' || value === '') throw new Error(`${context} must declare a string ${field}`)
+ return value
+}
+
+/** A release sequence: its members, its version baseline, and its tag naming. */
+export abstract class ReleaseFamily {
+ /** Workflow-facing identifier, also the `--family` argument. */
+ abstract readonly id: string
+
+ /** Glob patterns, relative to the repository root, that select this family's manifests. */
+ abstract readonly patterns: readonly string[]
+
+ /** Git tag prefix this family publishes from. */
+ abstract readonly tagPrefix: string
+
+ /**
+ * Discover this family's members.
+ * @param root - repository root.
+ * @returns Members sorted by directory, with names validated and deduplicated.
+ */
+ members(root: string): ReleaseMember[] {
+ const manifestPaths = globSync([...this.patterns], { cwd: root }).sort()
+ if (manifestPaths.length === 0) throw new Error(`release family ${this.id} matched no manifests`)
+
+ const members: ReleaseMember[] = []
+ const seen = new Set()
+ for (const manifestPath of manifestPaths) {
+ const normalized = manifestPath.replaceAll('\\', '/')
+ const manifest = readManifest(resolve(root, manifestPath))
+ const name = requireString(manifest, 'name', normalized)
+ const version = requireString(manifest, 'version', normalized)
+ if (name === WORKSPACE_ROOT_PACKAGE) throw new Error(`${normalized} selected the workspace root`)
+ if (!name.startsWith('@deepseek-ai/')) throw new Error(`${normalized} must name an @deepseek-ai package`)
+ if (seen.has(name)) throw new Error(`${name} appears twice in release family ${this.id}`)
+ seen.add(name)
+ members.push({
+ directory: normalized.slice(0, normalized.length - '/package.json'.length),
+ name,
+ version,
+ manifest,
+ })
+ }
+ return members
+ }
+
+ /**
+ * Order members so every package publishes after the family members it depends on.
+ * @param members - this family's members.
+ * @returns The same members in publish order; ties break by name for determinism.
+ */
+ publishOrder(members: readonly ReleaseMember[]): ReleaseMember[] {
+ const byName = new Map(members.map(member => [member.name, member]))
+ const ordered: ReleaseMember[] = []
+ const placed = new Set()
+ const visiting = new Set()
+
+ const visit = (member: ReleaseMember, path: readonly string[]): void => {
+ if (placed.has(member.name)) return
+ if (visiting.has(member.name)) {
+ throw new Error(`dependency cycle in release family ${this.id}: ${[...path, member.name].join(' -> ')}`)
+ }
+ visiting.add(member.name)
+ for (const dependency of this.orderEdges(member, byName)) {
+ visit(dependency, [...path, member.name])
+ }
+ visiting.delete(member.name)
+ placed.add(member.name)
+ ordered.push(member)
+ }
+
+ for (const member of [...members].sort((left, right) => left.name.localeCompare(right.name))) {
+ visit(member, [])
+ }
+ return ordered
+ }
+
+ /**
+ * The family members one member depends on at runtime.
+ * @param member - the dependent member.
+ * @param byName - every family member by package name.
+ * @returns Dependencies inside this family, sorted by name.
+ */
+ private orderEdges(member: ReleaseMember, byName: ReadonlyMap): ReleaseMember[] {
+ const edges: ReleaseMember[] = []
+ for (const section of ORDER_SECTIONS) {
+ const dependencies = member.manifest[section]
+ if (dependencies === null || typeof dependencies !== 'object' || Array.isArray(dependencies)) continue
+ for (const name of Object.keys(dependencies)) {
+ const dependency = byName.get(name)
+ if (dependency !== undefined && dependency.name !== member.name) edges.push(dependency)
+ }
+ }
+ return edges.sort((left, right) => left.name.localeCompare(right.name))
+ }
+
+ /**
+ * Assert this family's version baseline holds across its members.
+ * @param members - this family's members.
+ */
+ abstract verifyVersions(members: readonly ReleaseMember[]): void
+
+ /**
+ * The tag a member publishes from.
+ * @param member - the member being published.
+ * @returns The full tag name, without `refs/tags/`.
+ */
+ abstract tagFor(member: ReleaseMember): string
+
+ /**
+ * Check what a member's packed tarball carries.
+ * @param member - the packed member.
+ * @param files - every path inside its tarball.
+ */
+ abstract validatePayload(member: ReleaseMember, files: readonly string[]): void
+}
+
+/** `packages/*` and `apps/*`: one shared version across the whole family. */
+class DshFamily extends ReleaseFamily {
+ readonly id = 'dsh'
+ readonly patterns = ['packages/*/*/package.json', 'apps/*/package.json'] as const
+ readonly tagPrefix = 'dsh-v'
+
+ /**
+ * Require one version across the family, the way a single tag can name it.
+ * @param members - this family's members.
+ */
+ verifyVersions(members: readonly ReleaseMember[]): void {
+ const versions = new Set(members.map(member => member.version))
+ if (versions.size !== 1) {
+ const detail = members.map(member => `${member.directory}: ${member.version}`).join('\n')
+ throw new Error(`dsh release members must share one version:\n${detail}`)
+ }
+ }
+
+ /**
+ * The single family tag.
+ * @param member - any family member; all carry the same version.
+ * @returns `dsh-v`.
+ */
+ tagFor(member: ReleaseMember): string {
+ return `${this.tagPrefix}${member.version}`
+ }
+
+ /**
+ * Reject source and declaration-map members, the repository's publication policy.
+ * @param member - the packed member.
+ * @param files - every path inside its tarball.
+ */
+ validatePayload(member: ReleaseMember, files: readonly string[]): void {
+ validateTarballPayload(files, member.name, {
+ typeRTRemoteNavigation: hasTypeRTRemoteNavigation(member.manifest),
+ })
+ }
+}
+
+/** `vendor/*`: every package keeps its own version line, so every package has its own tag. */
+class VendorFamily extends ReleaseFamily {
+ readonly id = 'vendor'
+ readonly patterns = ['vendor/*/package.json'] as const
+ readonly tagPrefix = 'vendor-'
+
+ /**
+ * Accept independent versions; only reject a version this repository cannot publish.
+ * @param members - this family's members.
+ */
+ verifyVersions(members: readonly ReleaseMember[]): void {
+ for (const member of members) {
+ if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(member.version)) {
+ throw new Error(`${member.directory} has an unpublishable version: ${member.version}`)
+ }
+ }
+ }
+
+ /**
+ * The member's own tag, because one vendor release can carry several versions.
+ * @param member - the member being published.
+ * @returns `vendor--v`.
+ */
+ tagFor(member: ReleaseMember): string {
+ return `${this.tagPrefix}${member.name.replace('@deepseek-ai/', '')}-v${member.version}`
+ }
+
+ /**
+ * Require the payload the vendored manifest declares, including upstream's
+ * `src` tree and declaration maps.
+ *
+ * The harness policy that rejects both does not apply here: these manifests
+ * export `./src/*` for source navigation, so dropping `src` would publish a
+ * package whose export map points at absent files. What must hold instead is
+ * that every path the manifest selects is present, which `files` already
+ * decides and `pnpm pack` already enforces.
+ * @param member - the packed member.
+ * @param files - every path inside its tarball.
+ */
+ validatePayload(member: ReleaseMember, files: readonly string[]): void {
+ if (files.length === 0) throw new Error(`${member.name} packed an empty tarball`)
+ }
+}
+
+/** Every release family this module owns, in workflow order. */
+export function releaseFamilies(): readonly ReleaseFamily[] {
+ return [new DshFamily(), new VendorFamily()]
+}
+
+/**
+ * Resolve a family by its `--family` identifier.
+ * @param id - family identifier.
+ * @returns The family.
+ */
+export function releaseFamily(id: string): ReleaseFamily {
+ const family = releaseFamilies().find(candidate => candidate.id === id)
+ if (family === undefined) {
+ const known = releaseFamilies().map(candidate => candidate.id).join(', ')
+ throw new Error(`unknown release family ${id}; expected one of ${known}`)
+ }
+ return family
+}
+
+/**
+ * The npm tarball filename `pnpm pack` writes for a member.
+ * @param member - the packed member.
+ * @returns The tarball filename.
+ */
+export function tarballName(member: ReleaseMember): string {
+ const unscoped = member.name.startsWith('@') ? member.name.slice(1).replace('/', '-') : member.name
+ return `${unscoped}-${member.version}.tgz`
+}
diff --git a/scripts/release/pack.ts b/scripts/release/pack.ts
new file mode 100644
index 0000000000..1b128817b9
--- /dev/null
+++ b/scripts/release/pack.ts
@@ -0,0 +1,86 @@
+/**
+ * Pack one release family's whole publish set into a single directory, in
+ * publish order, and record that order for the publish step.
+ *
+ * The pack step is the release boundary: it runs without credentials, produces
+ * every tarball from one commit, and hands the publish step exactly those bytes
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ */
+
+import { spawnSync } from 'node:child_process'
+import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'
+import { join, resolve } from 'node:path'
+import { parseArgs } from 'node:util'
+import { releaseFamily, tarballName, type ReleaseFamily, type ReleaseMember } from './families.ts'
+
+/** Where pack output lands when `--out` is omitted. */
+const DEFAULT_OUTPUT = 'dist/npm'
+
+/** Name of the file the publish step reads to learn the upload order. */
+export const PUBLISH_ORDER_FILE = 'publish-order.txt'
+
+/**
+ * Run a command, inheriting stdio, and fail the process on a non-zero exit.
+ * @param command - executable name.
+ * @param args - command arguments.
+ */
+function run(command: string, args: readonly string[]): void {
+ const result = spawnSync(command, [...args], { stdio: 'inherit' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}`)
+}
+
+/**
+ * List a tarball's members.
+ * @param tarball - absolute tarball path.
+ * @returns Every path inside the archive.
+ */
+function tarballFiles(tarball: string): string[] {
+ const result = spawnSync('tar', ['-tzf', tarball], { encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) throw new Error(`tar -tzf ${tarball} exited with ${String(result.status)}:\n${result.stderr}`)
+ return result.stdout.split('\n').filter(line => line !== '')
+}
+
+/**
+ * Pack one member and check what its tarball carries.
+ * @param family - the release family being packed.
+ * @param member - the member to pack.
+ * @param destination - absolute output directory.
+ * @returns The tarball filename.
+ */
+function packMember(family: ReleaseFamily, member: ReleaseMember, destination: string): string {
+ run('pnpm', ['--dir', member.directory, 'pack', '--pack-destination', destination])
+
+ const filename = tarballName(member)
+ const tarball = join(destination, filename)
+ if (!existsSync(tarball)) throw new Error(`${member.name} produced no tarball at ${tarball}`)
+ family.validatePayload(member, tarballFiles(tarball))
+ return filename
+}
+
+/** Pack the family named by `--family` into `--out`. */
+function main(): void {
+ const { values } = parseArgs({
+ options: { family: { type: 'string' }, out: { type: 'string' } },
+ allowPositionals: false,
+ })
+ if (values.family === undefined) throw new Error('usage: pack.ts --family [--out dist/npm]')
+
+ const family = releaseFamily(values.family)
+ const root = process.cwd()
+ const destination = resolve(root, values.out ?? DEFAULT_OUTPUT)
+ const members = family.publishOrder(family.members(root))
+ family.verifyVersions(members)
+
+ rmSync(destination, { recursive: true, force: true })
+ mkdirSync(destination, { recursive: true })
+
+ const order: string[] = []
+ for (const member of members) order.push(packMember(family, member, destination))
+ writeFileSync(join(destination, PUBLISH_ORDER_FILE), `${order.join('\n')}\n`)
+
+ console.log(`release pack: family ${family.id}, ${String(order.length)} tarball(s) in ${values.out ?? DEFAULT_OUTPUT}`)
+}
+
+main()
diff --git a/scripts/release/publish.ts b/scripts/release/publish.ts
new file mode 100644
index 0000000000..68dae1701a
--- /dev/null
+++ b/scripts/release/publish.ts
@@ -0,0 +1,130 @@
+/**
+ * Publish one packed release family from the tarballs the pack step produced.
+ *
+ * Publication is decided per package against the registry, never from a list of
+ * "what this release includes": a version the registry lacks is published, a
+ * version whose published tarball has the same integrity is skipped, and a
+ * version whose published tarball differs fails the run — that last case means
+ * the content changed without a version bump
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ *
+ * Skipping on identical integrity is what makes re-running the publish step over
+ * the same artifact safe.
+ */
+
+import { spawnSync } from 'node:child_process'
+import { createHash } from 'node:crypto'
+import { readFileSync } from 'node:fs'
+import { join, resolve } from 'node:path'
+import { parseArgs } from 'node:util'
+import { releaseFamily } from './families.ts'
+import { PUBLISH_ORDER_FILE } from './pack.ts'
+
+/** npm access level for every package this repository publishes. */
+const ACCESS = 'restricted'
+
+/** What the registry knows about one version. */
+type RegistryState =
+ | { readonly kind: 'absent' }
+ | { readonly kind: 'present'; readonly integrity: string }
+
+/**
+ * Read a packed tarball's own manifest.
+ * @param tarball - absolute tarball path.
+ * @returns The packed `package.json` name and version.
+ */
+function packedIdentity(tarball: string): { name: string; version: string } {
+ const result = spawnSync('tar', ['-xOzf', tarball, 'package/package.json'], { encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) throw new Error(`cannot read ${tarball}:\n${result.stderr}`)
+ const manifest: unknown = JSON.parse(result.stdout)
+ if (manifest === null || typeof manifest !== 'object') throw new Error(`${tarball} has no manifest`)
+ const { name, version } = manifest as Record
+ if (typeof name !== 'string' || typeof version !== 'string') throw new Error(`${tarball} manifest lacks name/version`)
+ return { name, version }
+}
+
+/**
+ * The subresource integrity string npm records for a tarball.
+ * @param tarball - absolute tarball path.
+ * @returns A `sha512-` string.
+ */
+function integrityOf(tarball: string): string {
+ return `sha512-${createHash('sha512').update(readFileSync(tarball)).digest('base64')}`
+}
+
+/**
+ * Ask the registry whether a version exists, and with what integrity.
+ * @param name - package name.
+ * @param version - package version.
+ * @returns The registry state for that version.
+ */
+function registryState(name: string, version: string): RegistryState {
+ const result = spawnSync('npm', ['view', `${name}@${version}`, 'dist.integrity', '--json'], { encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) {
+ const output = `${result.stdout}${result.stderr}`
+ if (output.includes('E404') || output.includes('404 Not Found')) return { kind: 'absent' }
+ throw new Error(`npm view ${name}@${version} failed:\n${output}`)
+ }
+ const parsed: unknown = JSON.parse(result.stdout)
+ if (typeof parsed !== 'string' || parsed === '') {
+ throw new Error(`registry reported no dist.integrity for ${name}@${version}`)
+ }
+ return { kind: 'present', integrity: parsed }
+}
+
+/**
+ * Publish one tarball.
+ * @param tarball - absolute tarball path.
+ * @param version - the version being published; a prerelease never takes `latest`.
+ */
+function publish(tarball: string, version: string): void {
+ const args = ['publish', tarball, '--access', ACCESS]
+ if (version.includes('-')) args.push('--tag', 'next')
+ const result = spawnSync('npm', args, { stdio: 'inherit' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) throw new Error(`npm publish ${tarball} exited with ${String(result.status)}`)
+}
+
+/** Publish the family named by `--family` from the directory named by `--from`. */
+function main(): void {
+ const { values } = parseArgs({
+ options: { family: { type: 'string' }, from: { type: 'string' } },
+ allowPositionals: false,
+ })
+ if (values.family === undefined || values.from === undefined) {
+ throw new Error('usage: publish.ts --family --from ')
+ }
+
+ const family = releaseFamily(values.family)
+ const directory = resolve(process.cwd(), values.from)
+ const order = readFileSync(join(directory, PUBLISH_ORDER_FILE), 'utf8').split('\n').filter(line => line !== '')
+
+ let published = 0
+ let skipped = 0
+ for (const filename of order) {
+ const tarball = join(directory, filename)
+ const { name, version } = packedIdentity(tarball)
+ const state = registryState(name, version)
+ if (state.kind === 'present') {
+ const local = integrityOf(tarball)
+ if (state.integrity !== local) {
+ throw new Error(
+ `${name}@${version} is already published with different content`
+ + `\n registry: ${state.integrity}\n packed: ${local}`
+ + '\nBump the version, or investigate why the build is not reproducible.',
+ )
+ }
+ console.log(`release publish: ${name}@${version} already published, skipping`)
+ skipped += 1
+ continue
+ }
+ publish(tarball, version)
+ published += 1
+ }
+
+ console.log(`release publish: family ${family.id}, ${String(published)} published, ${String(skipped)} already present`)
+}
+
+main()
diff --git a/scripts/release/verify.ts b/scripts/release/verify.ts
new file mode 100644
index 0000000000..98988de18d
--- /dev/null
+++ b/scripts/release/verify.ts
@@ -0,0 +1,69 @@
+/**
+ * Verify a release family's version baseline, and — when publishing — that the
+ * run comes from the family's tag and its members are publishable.
+ *
+ * Publication happens only from GitHub Actions, so the tag and publishability
+ * checks are gates on the workflow, not advisory local warnings
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ */
+
+import { parseArgs } from 'node:util'
+import { releaseFamily, type ReleaseFamily, type ReleaseMember } from './families.ts'
+
+/**
+ * Assert every member may be published: npm refuses a `private` package.
+ * @param members - the family's members.
+ */
+function verifyPublishable(members: readonly ReleaseMember[]): void {
+ const priv = members.filter(member => member.manifest.private === true)
+ if (priv.length > 0) {
+ throw new Error(`publishing requires removing "private": true from:\n${priv.map(member => member.directory).join('\n')}`)
+ }
+}
+
+/**
+ * Assert the workflow runs from a tag this family publishes from, and that the
+ * tag names a version the family actually carries.
+ * @param family - the release family.
+ * @param members - the family's members.
+ * @param ref - the `GITHUB_REF` value.
+ */
+function verifyTag(family: ReleaseFamily, members: readonly ReleaseMember[], ref: string): void {
+ const prefix = 'refs/tags/'
+ if (!ref.startsWith(prefix)) {
+ throw new Error(`publishing release family ${family.id} requires running from a ${family.tagPrefix}* tag, got ${ref || '(no ref)'}`)
+ }
+ const tag = ref.slice(prefix.length)
+ if (!tag.startsWith(family.tagPrefix)) {
+ throw new Error(`tag ${tag} does not belong to release family ${family.id} (expected ${family.tagPrefix}*)`)
+ }
+ const expected = members.map(member => family.tagFor(member))
+ if (!expected.includes(tag)) {
+ throw new Error(`tag ${tag} names no version this family carries; its members would tag as:\n${[...new Set(expected)].join('\n')}`)
+ }
+}
+
+/** Run the verification for the family named by `--family`. */
+function main(): void {
+ const { values } = parseArgs({
+ options: { family: { type: 'string' } },
+ allowPositionals: false,
+ })
+ if (values.family === undefined) throw new Error('usage: verify.ts --family ')
+
+ const family = releaseFamily(values.family)
+ const members = family.members(process.cwd())
+ family.verifyVersions(members)
+
+ const publishing = process.env.RELEASE_PUBLISH === 'true'
+ if (publishing) {
+ verifyPublishable(members)
+ verifyTag(family, members, process.env.GITHUB_REF ?? '')
+ }
+
+ const versions = [...new Set(members.map(member => member.version))]
+ const summary = versions.length === 1 ? versions[0] : `${String(versions.length)} versions`
+ console.log(`release verify: family ${family.id}, ${String(members.length)} member(s), ${summary}${publishing ? ', publish gates passed' : ''}`)
+}
+
+main()
From 4e91230dd698bc2f5890661ebf10c7516c9c148d Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Mon, 10 Aug 2026 23:35:36 +0800
Subject: [PATCH 03/15] ci(release): pack on pull requests and publish from
family tags
Each sequence gets its own workflow so the two version models never meet in one
file. Pack runs without credentials on every pull request and master push, so a
pull request proves the whole publish set still packs; publication is a manual
dispatch guarded by the npm-publish environment, runs only from that family's
tag, and never builds - it uploads the bytes pack produced.
---
.github/workflows/release-vendor.yml | 125 ++++++++++++++++++++++++++
.github/workflows/release.yml | 127 +++++++++++++++++++++++++++
2 files changed, 252 insertions(+)
create mode 100644 .github/workflows/release-vendor.yml
create mode 100644 .github/workflows/release.yml
diff --git a/.github/workflows/release-vendor.yml b/.github/workflows/release-vendor.yml
new file mode 100644
index 0000000000..b83547b560
--- /dev/null
+++ b/.github/workflows/release-vendor.yml
@@ -0,0 +1,125 @@
+# Pack and publish the vendored framework sequence: the nine rescoped Cordis
+# packages under vendor/, each on its own version line. This sequence releases
+# independently of dsh and of the native packages.
+#
+# Pack runs without credentials on every pull request and master push.
+# Publication is a manual dispatch from a vendor-* tag; a vendor release can
+# carry several versions, so each package has its own tag.
+name: Release (vendor)
+
+on:
+ pull_request:
+ push:
+ branches: [master]
+ workflow_dispatch:
+ inputs:
+ publish:
+ description: Publish the packed tarballs to npm. Must run from a vendor-* tag.
+ required: true
+ type: boolean
+ default: false
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}
+ cancel-in-progress: false
+
+env:
+ PRIMARY_NODE_VERSION: '24'
+ DSH_TELEMETRY_DISABLED: '1'
+
+jobs:
+ pack:
+ name: Pack npm tarballs
+ runs-on: ubuntu-24.04
+ steps:
+ # Complete history: the release scripts read tags.
+ - uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+ persist-credentials: false
+
+ - uses: pnpm/action-setup@v4
+ with:
+ dest: ${{ runner.temp }}/setup-pnpm
+
+ - uses: actions/setup-node@v6
+ with:
+ node-version: ${{ env.PRIMARY_NODE_VERSION }}
+
+ - name: Configure pnpm store path
+ id: pnpm-store
+ run: |
+ store_root="$HOME/.local/share/pnpm/store"
+ echo "PNPM_CONFIG_STORE_DIR=$store_root" >> "$GITHUB_ENV"
+ store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent)
+ echo "path=$store_path" >> "$GITHUB_OUTPUT"
+
+ - uses: actions/cache/restore@v4
+ with:
+ path: ${{ steps.pnpm-store.outputs.path }}
+ key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-
+
+ - name: Install (immutable)
+ run: pnpm install --frozen-lockfile
+
+ - name: Verify release version
+ env:
+ RELEASE_PUBLISH: ${{ inputs.publish }}
+ run: pnpm run release:verify --family vendor
+
+ # The vendored packages publish their own sources and build outputs; the
+ # host build produces what their manifests select.
+ - name: Build
+ run: pnpm run build:lib:host
+
+ - name: Pack release tarballs
+ run: pnpm run release:pack --family vendor --out dist/npm-vendor
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: vendor-npm-tarballs
+ path: dist/npm-vendor/*
+ if-no-files-found: error
+ retention-days: 7
+
+ publish:
+ name: Publish to npm
+ if: inputs.publish
+ needs: pack
+ runs-on: ubuntu-24.04
+ environment: npm-publish
+ permissions:
+ contents: read
+ id-token: write
+ steps:
+ # Checkout and install carry the release scripts only; no build step.
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - uses: pnpm/action-setup@v4
+ with:
+ dest: ${{ runner.temp }}/setup-pnpm
+
+ - uses: actions/setup-node@v6
+ with:
+ node-version: ${{ env.PRIMARY_NODE_VERSION }}
+ registry-url: https://registry.npmjs.org
+
+ - name: Install (immutable, no package scripts)
+ run: pnpm install --frozen-lockfile --ignore-scripts
+
+ - uses: actions/download-artifact@v4
+ with:
+ name: vendor-npm-tarballs
+ path: dist/npm-vendor
+
+ - name: Publish tarballs
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: pnpm run release:publish --family vendor --from dist/npm-vendor
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000000..8b4005f42f
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,127 @@
+# Pack and publish the dsh release sequence: every package under packages/ plus
+# the apps/ entries, all on one version. The vendored framework and the native
+# packages are separate sequences with their own workflows and version lines.
+#
+# Pack runs without credentials on every pull request and master push, so a
+# pull request proves the whole publish set still packs. Publication is a
+# manual dispatch from a dsh-v* tag and consumes exactly the packed bytes.
+name: Release (dsh)
+
+on:
+ pull_request:
+ push:
+ branches: [master]
+ workflow_dispatch:
+ inputs:
+ publish:
+ description: Publish the packed tarballs to npm. Must run from a dsh-v* tag.
+ required: true
+ type: boolean
+ default: false
+
+permissions:
+ contents: read
+
+concurrency:
+ # dist-tags are shared registry state; never race two release runs.
+ group: ${{ github.workflow }}
+ cancel-in-progress: false
+
+env:
+ PRIMARY_NODE_VERSION: '24'
+ DSH_TELEMETRY_DISABLED: '1'
+
+jobs:
+ pack:
+ name: Pack npm tarballs
+ runs-on: ubuntu-24.04
+ steps:
+ # Complete history: the release scripts read tags.
+ - uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+ persist-credentials: false
+
+ - uses: pnpm/action-setup@v4
+ with:
+ dest: ${{ runner.temp }}/setup-pnpm
+
+ - uses: actions/setup-node@v6
+ with:
+ node-version: ${{ env.PRIMARY_NODE_VERSION }}
+
+ - name: Configure pnpm store path
+ id: pnpm-store
+ run: |
+ store_root="$HOME/.local/share/pnpm/store"
+ echo "PNPM_CONFIG_STORE_DIR=$store_root" >> "$GITHUB_ENV"
+ store_path=$(PNPM_CONFIG_STORE_DIR="$store_root" pnpm store path --silent)
+ echo "path=$store_path" >> "$GITHUB_OUTPUT"
+
+ - uses: actions/cache/restore@v4
+ with:
+ path: ${{ steps.pnpm-store.outputs.path }}
+ key: ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-node-${{ env.PRIMARY_NODE_VERSION }}-pnpm-
+
+ - name: Install (immutable)
+ run: pnpm install --frozen-lockfile
+
+ - name: Verify release version
+ env:
+ RELEASE_PUBLISH: ${{ inputs.publish }}
+ run: pnpm run release:verify --family dsh
+
+ - name: Build
+ run: pnpm run build
+
+ - name: Pack release tarballs
+ run: pnpm run release:pack --family dsh --out dist/npm
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: dsh-npm-tarballs
+ path: dist/npm/*
+ if-no-files-found: error
+ retention-days: 7
+
+ publish:
+ name: Publish to npm
+ if: inputs.publish
+ needs: pack
+ runs-on: ubuntu-24.04
+ # Required reviewers and the allowed tags live on the environment; this is
+ # the only step in the sequence that can write to the registry.
+ environment: npm-publish
+ permissions:
+ contents: read
+ id-token: write
+ steps:
+ # Checkout and install carry the release scripts only. There is no build
+ # step: publication uploads the bytes the pack job produced.
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - uses: pnpm/action-setup@v4
+ with:
+ dest: ${{ runner.temp }}/setup-pnpm
+
+ - uses: actions/setup-node@v6
+ with:
+ node-version: ${{ env.PRIMARY_NODE_VERSION }}
+ registry-url: https://registry.npmjs.org
+
+ - name: Install (immutable, no package scripts)
+ run: pnpm install --frozen-lockfile --ignore-scripts
+
+ - uses: actions/download-artifact@v4
+ with:
+ name: dsh-npm-tarballs
+ path: dist/npm
+
+ - name: Publish tarballs
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: pnpm run release:publish --family dsh --from dist/npm
From 97eb14a007cc554cead5e731db3b21605b26e988 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:02:53 +0800
Subject: [PATCH 04/15] build(release): make the release set publishable under
the private scope
Every package under packages/, apps/, and vendor/ drops "private": true and
declares publishConfig.access "restricted": the repository now states which
packages it publishes instead of deciding it at publish time. Each one also
declares its repository and directory, which is how a consumer of a private
package reaches its source.
The Landlock packages move to restricted with them. They have never been
published, so nothing anonymous depends on them today, and the whole
@deepseek-ai scope stays private.
The workspace constraint that required every package to be private now applies
to non-members only, and asserts the publishable trio on each release member.
---
apps/cli/package.json | 9 ++++++-
apps/web/package.json | 9 ++++++-
.../landlock-run/packages/entry/package.json | 2 +-
.../packages/linux-arm64/package.json | 2 +-
.../packages/linux-x64/package.json | 2 +-
packages/acp/acp/package.json | 9 ++++++-
packages/api/gateway/package.json | 9 ++++++-
packages/api/remotes/package.json | 9 ++++++-
.../attachment/attachment-local/package.json | 9 ++++++-
packages/attachment/attachment/package.json | 9 ++++++-
packages/bash/bash-env/package.json | 9 ++++++-
packages/bash/bash-local/package.json | 9 ++++++-
packages/bash/bash-sandbox/package.json | 9 ++++++-
packages/bash/bash/package.json | 9 ++++++-
packages/bash/pwsh-local/package.json | 9 ++++++-
packages/bash/pwsh-sandbox/package.json | 9 ++++++-
packages/bash/tool-bash/package.json | 9 ++++++-
packages/bash/tool-pwsh/package.json | 9 ++++++-
packages/boot/app-boot/package.json | 9 ++++++-
packages/bundle/base/package.json | 9 ++++++-
packages/bundle/headless/package.json | 9 ++++++-
packages/bundle/web-app/package.json | 9 ++++++-
packages/client/connection/package.json | 9 ++++++-
packages/client/hmr/package.json | 9 ++++++-
packages/client/locale/package.json | 9 ++++++-
packages/client/modules/package.json | 9 ++++++-
packages/client/runtime/package.json | 9 ++++++-
packages/client/schema-form/package.json | 9 ++++++-
packages/client/test-runtime/package.json | 9 ++++++-
packages/client/ui-agent-preset/package.json | 9 ++++++-
packages/client/ui-command/package.json | 9 ++++++-
packages/client/ui-conversation/package.json | 9 ++++++-
packages/client/ui-deliverables/package.json | 9 ++++++-
packages/client/ui-goal/package.json | 9 ++++++-
packages/client/ui-layout/package.json | 9 ++++++-
packages/client/ui-model/package.json | 9 ++++++-
packages/client/ui-models/package.json | 9 ++++++-
packages/client/ui-permission/package.json | 9 ++++++-
packages/client/ui-plan/package.json | 9 ++++++-
packages/client/ui-primitives/package.json | 9 ++++++-
packages/client/ui-question/package.json | 9 ++++++-
.../client/ui-settings-general/package.json | 9 ++++++-
packages/client/ui-settings/package.json | 9 ++++++-
packages/client/ui-sidebar/package.json | 9 ++++++-
packages/client/ui-skill/package.json | 9 ++++++-
packages/client/ui-slash/package.json | 9 ++++++-
packages/client/ui-slots/package.json | 9 ++++++-
packages/client/ui-subagent/package.json | 9 ++++++-
packages/client/ui-theme/package.json | 9 ++++++-
packages/client/ui-tool/package.json | 9 ++++++-
packages/client/ui-trajectory/package.json | 9 ++++++-
packages/client/ui-workspace/package.json | 9 ++++++-
packages/client/web-react/package.json | 9 ++++++-
packages/client/web/package.json | 9 ++++++-
.../code-runtime-worker/package.json | 9 ++++++-
.../code-runtime/code-runtime/package.json | 9 ++++++-
packages/compact/command-compact/package.json | 9 ++++++-
packages/compact/compact-basic/package.json | 9 ++++++-
.../compact-tool-result-prune/package.json | 9 ++++++-
packages/compact/compact/package.json | 9 ++++++-
.../context/session-reference/package.json | 9 ++++++-
packages/context/time-context/package.json | 9 ++++++-
packages/context/tmux-context/package.json | 9 ++++++-
.../context/workspace-context/package.json | 9 ++++++-
.../core/agent-default-model/package.json | 9 ++++++-
packages/core/agent-loop/package.json | 9 ++++++-
packages/core/agent-tool-mode/package.json | 9 ++++++-
packages/core/agent/package.json | 9 ++++++-
packages/core/scope/package.json | 9 ++++++-
packages/core/session/package.json | 9 ++++++-
packages/core/system-prompt/package.json | 9 ++++++-
packages/core/tools/package.json | 9 ++++++-
.../credentials-local/package.json | 9 ++++++-
packages/credentials/credentials/package.json | 9 ++++++-
packages/e2b/e2b/package.json | 9 ++++++-
packages/e2b/fs-e2b/package.json | 9 ++++++-
packages/e2b/subprocess-e2b/package.json | 9 ++++++-
packages/examples/acp-demo/package.json | 9 ++++++-
.../examples/agent-spine-demo/package.json | 9 ++++++-
packages/examples/jsonrpc-demo/package.json | 9 ++++++-
.../feedback/command-feedback/package.json | 9 ++++++-
packages/fs/fs-local/package.json | 9 ++++++-
packages/fs/fs-policy/package.json | 9 ++++++-
packages/fs/fs-sandbox/package.json | 9 ++++++-
packages/fs/fs/package.json | 9 ++++++-
packages/fs/tool-fs-search/package.json | 9 ++++++-
packages/fs/tool-fs/package.json | 9 ++++++-
.../fs/tool-str-replace-editor/package.json | 9 ++++++-
packages/goal/command-goal/package.json | 9 ++++++-
packages/goal/goal-session/package.json | 9 ++++++-
packages/goal/goal/package.json | 9 ++++++-
packages/goal/tool-goal/package.json | 9 ++++++-
packages/guard/repeat-tool-guard/package.json | 9 ++++++-
packages/guard/timeout-policy/package.json | 9 ++++++-
packages/hooks/hook-protocol/package.json | 9 ++++++-
packages/hooks/hooks-claude/package.json | 9 ++++++-
packages/hooks/hooks-codex/package.json | 9 ++++++-
packages/host/apiproxy/package.json | 9 ++++++-
.../host/directory-picker-auto/package.json | 9 ++++++-
.../host/directory-picker-browse/package.json | 9 ++++++-
.../host/directory-picker-native/package.json | 9 ++++++-
packages/host/directory-picker/package.json | 9 ++++++-
packages/host/frontend-static/package.json | 9 ++++++-
packages/host/webserver/package.json | 9 ++++++-
packages/interaction/commands/package.json | 9 ++++++-
packages/interaction/permission/package.json | 9 ++++++-
.../interaction/tool-ask-user/package.json | 9 ++++++-
.../interaction/user-approval/package.json | 9 ++++++-
.../interaction/user-interaction/package.json | 9 ++++++-
packages/llm/llm-deepseek/package.json | 9 ++++++-
packages/llm/llm-pi-ai/package.json | 9 ++++++-
packages/llm/llm-retry/package.json | 9 ++++++-
packages/llm/llm/package.json | 9 ++++++-
packages/llm/token-meter/package.json | 9 ++++++-
packages/lsp/lsp-local/package.json | 9 ++++++-
packages/lsp/lsp/package.json | 9 ++++++-
packages/lsp/tool-lsp/package.json | 9 ++++++-
packages/mcp/mcp-client/package.json | 9 ++++++-
packages/plan/plan-mode/package.json | 9 ++++++-
packages/preset/agent-presets/package.json | 9 ++++++-
packages/preset/persona/package.json | 9 ++++++-
packages/pty/pty-local/package.json | 9 ++++++-
packages/pty/pty/package.json | 9 ++++++-
.../pty/tool-bash-persistent/package.json | 9 ++++++-
packages/pty/tool-pty/package.json | 9 ++++++-
packages/sandbox/sandbox-local/package.json | 9 ++++++-
packages/sandbox/sandbox-policy/package.json | 9 ++++++-
.../sandbox/sandbox-windows-acl/package.json | 9 ++++++-
packages/sandbox/sandbox/package.json | 9 ++++++-
packages/scaffold/client/package.json | 9 ++++++-
packages/scaffold/create-sdk/package.json | 9 ++++++-
packages/scaffold/helper/package.json | 9 ++++++-
packages/scaffold/protocol/package.json | 9 ++++++-
packages/scaffold/scripts/package.json | 9 ++++++-
packages/scaffold/server/package.json | 9 ++++++-
packages/scaffold/telemetry/package.json | 9 ++++++-
.../tool-cordis/package.json | 9 ++++++-
.../session-query-sqlite/package.json | 9 ++++++-
.../session-query/session-query/package.json | 9 ++++++-
.../tool-session-query/package.json | 9 ++++++-
.../session-checkpoint-policy/package.json | 9 ++++++-
.../session-persistence-jsonl/package.json | 9 ++++++-
.../session-persistence-sqlite/package.json | 9 ++++++-
.../session/session-persistence/package.json | 9 ++++++-
.../session-projection-cache/package.json | 9 ++++++-
.../session/session-projection/package.json | 9 ++++++-
.../session-telemetry-otel/package.json | 9 ++++++-
.../session/session-telemetry/package.json | 9 ++++++-
.../package.json | 9 ++++++-
.../package.json | 9 ++++++-
.../session/session-title-llm/package.json | 9 ++++++-
packages/session/session-title/package.json | 9 ++++++-
packages/session/user-id/package.json | 9 ++++++-
packages/settings/settings-local/package.json | 9 ++++++-
packages/settings/settings/package.json | 9 ++++++-
packages/skill/skill-badge/package.json | 9 ++++++-
packages/skill/skill-local/package.json | 9 ++++++-
packages/skill/skill/package.json | 9 ++++++-
packages/skill/tool-skill/package.json | 9 ++++++-
packages/spill/spill-local/package.json | 9 ++++++-
packages/spill/spill-policy/package.json | 9 ++++++-
packages/spill/spill/package.json | 9 ++++++-
packages/storage/storage-domain/package.json | 9 ++++++-
packages/storage/storage-json/package.json | 9 ++++++-
packages/storage/storage-sqlite/package.json | 9 ++++++-
packages/storage/storage/package.json | 9 ++++++-
packages/subagent/subagent-acp/package.json | 9 ++++++-
.../subagent-claude-code/package.json | 9 ++++++-
packages/subagent/subagent-codex/package.json | 9 ++++++-
.../subagent/subagent-dsh-sdk/package.json | 9 ++++++-
packages/subagent/subagent-fork/package.json | 9 ++++++-
.../subagent/subagent-inprocess/package.json | 9 ++++++-
packages/subagent/subagent-spawn/package.json | 9 ++++++-
packages/subagent/subagent/package.json | 9 ++++++-
.../tool-subagent-control/package.json | 9 ++++++-
.../tool-subagent-report/package.json | 9 ++++++-
packages/subagent/tool-subagent/package.json | 9 ++++++-
.../subprocess/subprocess-local/package.json | 9 ++++++-
packages/subprocess/subprocess/package.json | 9 ++++++-
packages/support/acp-snapshot/package.json | 9 ++++++-
.../support/agent-loop-testkit/package.json | 9 ++++++-
packages/support/invariants/package.json | 9 ++++++-
packages/support/llm-mock-server/package.json | 9 ++++++-
packages/support/llm-replay/package.json | 9 ++++++-
packages/support/loader-smoke/package.json | 9 ++++++-
packages/tasks/tasks-local/package.json | 9 ++++++-
packages/tasks/tasks/package.json | 9 ++++++-
packages/tasks/tool-tasks/package.json | 9 ++++++-
packages/todo/tool-todo/package.json | 9 ++++++-
packages/typert/generator/package.json | 9 ++++++-
packages/typert/loader/package.json | 9 ++++++-
packages/typert/registry/package.json | 9 ++++++-
packages/typert/type-meta/package.json | 9 ++++++-
packages/util/atomic-write/package.json | 9 ++++++-
packages/util/brand/package.json | 9 ++++++-
packages/util/environment/package.json | 9 ++++++-
packages/util/native-command/package.json | 9 ++++++-
packages/util/paths/package.json | 9 ++++++-
packages/util/retention/package.json | 9 ++++++-
packages/util/timeout/package.json | 9 ++++++-
packages/web/tool-web/package.json | 9 ++++++-
packages/web/web-fetch-local/package.json | 9 ++++++-
packages/web/web-search-deepseek/package.json | 9 ++++++-
packages/web/web-search-exa/package.json | 9 ++++++-
.../web/web-search-perplexity/package.json | 9 ++++++-
packages/web/web/package.json | 9 ++++++-
packages/workflow/tool-ralph/package.json | 9 ++++++-
packages/workflow/tool-workflow/package.json | 9 ++++++-
.../workflow-workerthread/package.json | 9 ++++++-
packages/workflow/workflow/package.json | 9 ++++++-
packages/workspace/workspace/package.json | 9 ++++++-
scripts/check-workspace-constraints.ts | 27 +++++++++++++++++--
vendor/cordis/package.json | 9 ++++++-
vendor/cosmokit/package.json | 9 ++++++-
vendor/group/package.json | 9 ++++++-
vendor/hmr/package.json | 9 ++++++-
vendor/include/package.json | 9 ++++++-
vendor/loader/package.json | 9 ++++++-
vendor/logger-console/package.json | 9 ++++++-
vendor/schemastery/package.json | 9 ++++++-
vendor/timer/package.json | 9 ++++++-
221 files changed, 1764 insertions(+), 222 deletions(-)
diff --git a/apps/cli/package.json b/apps/cli/package.json
index 8b50f180f2..3155032205 100644
--- a/apps/cli/package.json
+++ b/apps/cli/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh",
"description": "dsh CLI: profile boot, plugin management, and the browser UI alias",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "apps/cli"
+ },
"type": "module",
"bin": {
"dsh": "lib/bin.js"
diff --git a/apps/web/package.json b/apps/web/package.json
index 1bf97cb17c..9e71181b4b 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-frontend",
"description": "Web application entry: vite build over the @deepseek-ai/dsh-client-web shell library; dist/ served by apps/cli's dsh web",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "apps/web"
+ },
"type": "module",
"exports": {
"./dist/*": "./dist/*",
diff --git a/native/landlock-run/packages/entry/package.json b/native/landlock-run/packages/entry/package.json
index 1614df5ad2..b3384a58c0 100644
--- a/native/landlock-run/packages/entry/package.json
+++ b/native/landlock-run/packages/entry/package.json
@@ -32,7 +32,7 @@
},
"license": "BSD-3-Clause",
"publishConfig": {
- "access": "public"
+ "access": "restricted"
},
"optionalDependencies": {
"@deepseek-ai/node-addon-landlock-run-linux-arm64": "workspace:*",
diff --git a/native/landlock-run/packages/linux-arm64/package.json b/native/landlock-run/packages/linux-arm64/package.json
index 14190e4765..11d9384c87 100644
--- a/native/landlock-run/packages/linux-arm64/package.json
+++ b/native/landlock-run/packages/linux-arm64/package.json
@@ -26,6 +26,6 @@
},
"license": "BSD-3-Clause",
"publishConfig": {
- "access": "public"
+ "access": "restricted"
}
}
diff --git a/native/landlock-run/packages/linux-x64/package.json b/native/landlock-run/packages/linux-x64/package.json
index 43c092d17b..6e3ad395e6 100644
--- a/native/landlock-run/packages/linux-x64/package.json
+++ b/native/landlock-run/packages/linux-x64/package.json
@@ -26,6 +26,6 @@
},
"license": "BSD-3-Clause",
"publishConfig": {
- "access": "public"
+ "access": "restricted"
}
}
diff --git a/packages/acp/acp/package.json b/packages/acp/acp/package.json
index 0d83ca8c24..c5564b0b2f 100644
--- a/packages/acp/acp/package.json
+++ b/packages/acp/acp/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-acp",
"description": "Automation-only Agent Client Protocol server for driving DeepSeek Harness agents over JSON-RPC stdio",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/acp/acp"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/api/gateway/package.json b/packages/api/gateway/package.json
index 9720c8530a..10a315302a 100644
--- a/packages/api/gateway/package.json
+++ b/packages/api/gateway/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-api-gateway",
"description": "TypeRT Remote Host dispatcher and Client API endpoint",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/api/gateway"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/api/remotes/package.json b/packages/api/remotes/package.json
index 2a1d92b82a..8a31f138e3 100644
--- a/packages/api/remotes/package.json
+++ b/packages/api/remotes/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-api-remotes",
"description": "Remote BFF assembly and Host Agent/Session lookup policy",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/api/remotes"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/attachment/attachment-local/package.json b/packages/attachment/attachment-local/package.json
index b11180f133..4219c40d30 100644
--- a/packages/attachment/attachment-local/package.json
+++ b/packages/attachment/attachment-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-attachment-local",
"description": "Private content-addressed DSH_HOME attachment storage",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/attachment/attachment-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/attachment/attachment/package.json b/packages/attachment/attachment/package.json
index 4ec0fee955..ad212f3933 100644
--- a/packages/attachment/attachment/package.json
+++ b/packages/attachment/attachment/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-attachment",
"description": "Durable immutable attachment storage seam for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/attachment/attachment"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/bash-env/package.json b/packages/bash/bash-env/package.json
index b2de167a64..8983029c0d 100644
--- a/packages/bash/bash-env/package.json
+++ b/packages/bash/bash-env/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-bash-env",
"description": "Tool-independent managed DSH_* shell environment registry",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/bash-env"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/bash-local/package.json b/packages/bash/bash-local/package.json
index 2a19e4da5d..f147b01f72 100644
--- a/packages/bash/bash-local/package.json
+++ b/packages/bash/bash-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-bash-local",
"description": "Local-subprocess implementation of the DeepSeek Harness bash executor seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/bash-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/bash-sandbox/package.json b/packages/bash/bash-sandbox/package.json
index b37f9dc48e..b1d1b4a13a 100644
--- a/packages/bash/bash-sandbox/package.json
+++ b/packages/bash/bash-sandbox/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-bash-sandbox",
"description": "Sandbox-consuming implementation of the DeepSeek Harness bash executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/bash-sandbox"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/bash/package.json b/packages/bash/bash/package.json
index d184a18d7b..320f077f28 100644
--- a/packages/bash/bash/package.json
+++ b/packages/bash/bash/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-bash",
"description": "Abstract bash executor seam (ctx.bash) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/bash"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/pwsh-local/package.json b/packages/bash/pwsh-local/package.json
index ecfa7f11da..a3b5d6aa7d 100644
--- a/packages/bash/pwsh-local/package.json
+++ b/packages/bash/pwsh-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-pwsh-local",
"description": "Local PowerShell implementation of the DeepSeek Harness bash executor seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/pwsh-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/pwsh-sandbox/package.json b/packages/bash/pwsh-sandbox/package.json
index fbc5227912..727496274b 100644
--- a/packages/bash/pwsh-sandbox/package.json
+++ b/packages/bash/pwsh-sandbox/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-pwsh-sandbox",
"description": "Sandbox-consuming implementation of the DeepSeek Harness PowerShell executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/pwsh-sandbox"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/tool-bash/package.json b/packages/bash/tool-bash/package.json
index bd467f103e..6440e990b0 100644
--- a/packages/bash/tool-bash/package.json
+++ b/packages/bash/tool-bash/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-bash",
"description": "Model-facing bash tool with optional generic background-task and sandbox-escalation support",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/tool-bash"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bash/tool-pwsh/package.json b/packages/bash/tool-pwsh/package.json
index 7f18585332..b06df9a992 100644
--- a/packages/bash/tool-pwsh/package.json
+++ b/packages/bash/tool-pwsh/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-pwsh",
"description": "Model-facing pwsh tool over the bash executor seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bash/tool-pwsh"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/boot/app-boot/package.json b/packages/boot/app-boot/package.json
index 0295742268..f47611040d 100644
--- a/packages/boot/app-boot/package.json
+++ b/packages/boot/app-boot/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-app-boot",
"description": "Shared boot glue for the app bins: .env loading, fail-loud Loader guards, snapshot-aware config resolution, and the Loader boot sequence",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/boot/app-boot"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bundle/base/package.json b/packages/bundle/base/package.json
index 038e3ea0c6..c2547f9aae 100644
--- a/packages/bundle/base/package.json
+++ b/packages/bundle/base/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-base",
"description": "The shared dsh core as a profile bundle: every profile's first patch layer, inserting the base plugin rows over the empty profile root",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bundle/base"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bundle/headless/package.json b/packages/bundle/headless/package.json
index e439fe75f7..4bdd04efd9 100644
--- a/packages/bundle/headless/package.json
+++ b/packages/bundle/headless/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-headless",
"description": "The dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layer",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bundle/headless"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/bundle/web-app/package.json b/packages/bundle/web-app/package.json
index b6740c7b77..c9ec594f28 100644
--- a/packages/bundle/web-app/package.json
+++ b/packages/bundle/web-app/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web-app",
"description": "The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/bundle/web-app"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/connection/package.json b/packages/client/connection/package.json
index 8f7b485c09..f03afb8eda 100644
--- a/packages/client/connection/package.json
+++ b/packages/client/connection/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-connection",
"description": "Wire consumer layer: HTTP-up/WebSocket-down client, ConnectionController dual streams with reconnect, and fixture api",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/connection"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/hmr/package.json b/packages/client/hmr/package.json
index 79e2789d33..82d8cb18e1 100644
--- a/packages/client/hmr/package.json
+++ b/packages/client/hmr/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-hmr",
"description": "Dev-only hot-reload driver for script-loaded client entries: SSE rebuilt frames → invalidate/prefetch → fiber swap through the vendored Loader entry",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/hmr"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/locale/package.json b/packages/client/locale/package.json
index dc90483e1b..f845feacc9 100644
--- a/packages/client/locale/package.json
+++ b/packages/client/locale/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-locale",
"description": "Locale plugin: Host-backed zh/en preference, browser-derived fallback, locale snapshots, and typed namespace dictionaries",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/locale"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/modules/package.json b/packages/client/modules/package.json
index a9d9d1de2d..e980619017 100644
--- a/packages/client/modules/package.json
+++ b/packages/client/modules/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-modules",
"description": "Client module system, dual-face: node half composes the __DSH_BOOT__ entry graph (incremental dsh.client scan, bundle route, index tap, webPlugins service); browser half is the lazy-CJS module table the vendored cordis Loader consumes as its internal seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/modules"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/runtime/package.json b/packages/client/runtime/package.json
index 6250a97ff5..168e916223 100644
--- a/packages/client/runtime/package.json
+++ b/packages/client/runtime/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-runtime",
"description": "Client core services: SlotsService, SessionsService (scope tree + object layer)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/runtime"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/schema-form/package.json b/packages/client/schema-form/package.json
index ee6529025c..30e0c24353 100644
--- a/packages/client/schema-form/package.json
+++ b/packages/client/schema-form/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-schema-form",
"description": "Schema/draft model layer for settings editors: rehydrates a serialized schemastery schema, validates drafts, and edits them immutably by path",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/schema-form"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/test-runtime/package.json b/packages/client/test-runtime/package.json
index 0891660b79..1efc9228d4 100644
--- a/packages/client/test-runtime/package.json
+++ b/packages/client/test-runtime/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-test-runtime",
"description": "jsdom slot test runtime: real Cordis Context + SlotsService + web-react renderer with test-owned session/workspace doubles for feature specs",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/test-runtime"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-agent-preset/package.json b/packages/client/ui-agent-preset/package.json
index 93facc56eb..90b6fc4fa8 100644
--- a/packages/client/ui-agent-preset/package.json
+++ b/packages/client/ui-agent-preset/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-agent-preset",
"description": "Agent-preset surfaces: the default for later sessions, this session's seat, and the composition editor",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-agent-preset"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-command/package.json b/packages/client/ui-command/package.json
index 5ff21d89b9..513f6cf8a4 100644
--- a/packages/client/ui-command/package.json
+++ b/packages/client/ui-command/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-command",
"description": "Client command surface: global directory cache, '/' source, three command UI kinds, popupSelect registry",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-command"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-conversation/package.json b/packages/client/ui-conversation/package.json
index a21fad9168..bb93c82608 100644
--- a/packages/client/ui-conversation/package.json
+++ b/packages/client/ui-conversation/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-conversation",
"description": "Conversation domain: skeleton, ordered chat flow, composer with the Host-backed busy-Enter preference, and details host",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-conversation"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-deliverables/package.json b/packages/client/ui-deliverables/package.json
index 4b7b8daa56..e60fc8262b 100644
--- a/packages/client/ui-deliverables/package.json
+++ b/packages/client/ui-deliverables/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-deliverables",
"description": "Produced-files turn tail: the deliverables row a finished turn ends with",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-deliverables"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-goal/package.json b/packages/client/ui-goal/package.json
index 2e5816437e..648fb0e609 100644
--- a/packages/client/ui-goal/package.json
+++ b/packages/client/ui-goal/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-goal",
"description": "Session goal surface: GoalBar docked above the composer, read from the goal session projection",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-goal"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-layout/package.json b/packages/client/ui-layout/package.json
index 5fc53a5fa8..26c056f602 100644
--- a/packages/client/ui-layout/package.json
+++ b/packages/client/ui-layout/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-layout",
"description": "Shell plugin: three-column AppFrame with drag handles, ctx.layout viewing-state service (navigation + panels)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-layout"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-model/package.json b/packages/client/ui-model/package.json
index dcd139dad5..d2ca1b3318 100644
--- a/packages/client/ui-model/package.json
+++ b/packages/client/ui-model/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-model",
"description": "Model selection: the /model popupSelect over session.models / session.selectModel",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-model"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-models/package.json b/packages/client/ui-models/package.json
index fb0ff5a0c3..8eaac3bccf 100644
--- a/packages/client/ui-models/package.json
+++ b/packages/client/ui-models/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-models",
"description": "Models settings and official-DeepSeek first-run routing over one live provider/settings/credential join",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-models"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-permission/package.json b/packages/client/ui-permission/package.json
index 457511c928..12f1a25509 100644
--- a/packages/client/ui-permission/package.json
+++ b/packages/client/ui-permission/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-permission",
"description": "Permission surfaces: a new-session default in General settings and a current-session /permission popup over the permissions projection",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-permission"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-plan/package.json b/packages/client/ui-plan/package.json
index 888cc74005..23d03b88d3 100644
--- a/packages/client/ui-plan/package.json
+++ b/packages/client/ui-plan/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-plan",
"description": "Plan-mode composer control: the conversation.input.plan seat over the plan projection and the /plan command channel",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-plan"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-primitives/package.json b/packages/client/ui-primitives/package.json
index 91d8647a55..dc0c21d31f 100644
--- a/packages/client/ui-primitives/package.json
+++ b/packages/client/ui-primitives/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-primitives",
"description": "Pure React atoms for the dsh web UI: controls, icons, markdown, and JSON inspectors (zero cordis)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-primitives"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-question/package.json b/packages/client/ui-question/package.json
index 80f18e3a2a..172f4fb4f8 100644
--- a/packages/client/ui-question/package.json
+++ b/packages/client/ui-question/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-question",
"description": "Web ask_user_question feature: host tool mount plus composer-takeover question UI",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-question"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-settings-general/package.json b/packages/client/ui-settings-general/package.json
index a66cb41153..b67d12a709 100644
--- a/packages/client/ui-settings-general/package.json
+++ b/packages/client/ui-settings-general/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-settings-general",
"description": "Settings ownerless-copy and product onboarding plugin: the General section, shell trigger/header chrome content, settings dictionaries, and the versioned welcome notice",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-settings-general"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-settings/package.json b/packages/client/ui-settings/package.json
index 138b4e3c88..a65466e2c2 100644
--- a/packages/client/ui-settings/package.json
+++ b/packages/client/ui-settings/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-settings",
"description": "Settings shell plugin: sidebar trigger, modal panel, feature sections, and an ordered full-page onboarding stage",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-settings"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-sidebar/package.json b/packages/client/ui-sidebar/package.json
index 7a135c1bcc..c4022d04d0 100644
--- a/packages/client/ui-sidebar/package.json
+++ b/packages/client/ui-sidebar/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-sidebar",
"description": "Sidebar plugin: session multi-level tree, search, grouping, state dots",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-sidebar"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-skill/package.json b/packages/client/ui-skill/package.json
index 0490958e7d..d87425625a 100644
--- a/packages/client/ui-skill/package.json
+++ b/packages/client/ui-skill/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-skill",
"description": "Web skill references and the dedicated skill tool row",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-skill"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-slash/package.json b/packages/client/ui-slash/package.json
index 7e99d22875..46de2a5951 100644
--- a/packages/client/ui-slash/package.json
+++ b/packages/client/ui-slash/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-slash",
"description": "Input trigger pipeline: '/' and '@' detection, candidate menu, pick routing to registered sources",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-slash"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-slots/package.json b/packages/client/ui-slots/package.json
index ef809470b5..c9825022e8 100644
--- a/packages/client/ui-slots/package.json
+++ b/packages/client/ui-slots/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-slots",
"description": "Slot registry pure core: SlotMap declaration merging, single register composition API, four-share props types, store-seat types, renderer install seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-slots"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-subagent/package.json b/packages/client/ui-subagent/package.json
index 6c9a178d31..bbae62edb6 100644
--- a/packages/client/ui-subagent/package.json
+++ b/packages/client/ui-subagent/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-subagent",
"description": "Subagent conversation catalog, continuation routing UI, and '@' reference source",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-subagent"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-theme/package.json b/packages/client/ui-theme/package.json
index 27f1799c56..1ad1274427 100644
--- a/packages/client/ui-theme/package.json
+++ b/packages/client/ui-theme/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-theme",
"description": "Theme plugin: ThemeService (light/dark/system preference, prefers-color-scheme resolution, theme/change snapshots; no DOM), --dsw-* token base stylesheets; registers the Appearance settings row",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-theme"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-tool/package.json b/packages/client/ui-tool/package.json
index 2db30e5d48..eb3b9366ba 100644
--- a/packages/client/ui-tool/package.json
+++ b/packages/client/ui-tool/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-tool",
"description": "Client Tool call-tree renderer and keyed per-tool presentation slot",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-tool"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-trajectory/package.json b/packages/client/ui-trajectory/package.json
index 6f85a51c8a..4aef2a424b 100644
--- a/packages/client/ui-trajectory/package.json
+++ b/packages/client/ui-trajectory/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-trajectory",
"description": "Trajectory event ledger with an interactive timing overview: pure-consumer plugin registering into the conversation ViewMap (no service)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-trajectory"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/ui-workspace/package.json b/packages/client/ui-workspace/package.json
index 5607c8cc40..7b4ad80acf 100644
--- a/packages/client/ui-workspace/package.json
+++ b/packages/client/ui-workspace/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-ui-workspace",
"description": "Workspace picker plugin: one WorkspacePicker registered into the sidebar and empty-state workspace slots",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/ui-workspace"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/web-react/package.json b/packages/client/web-react/package.json
index 5aeae6f06f..3f65de4ad8 100644
--- a/packages/client/web-react/package.json
+++ b/packages/client/web-react/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-web-react",
"description": "Shell-side React glue: createSlotRenderer, SessionProvider, bindSnapshotSelector (uSES bridge), useInvoke",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/web-react"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/client/web/package.json b/packages/client/web/package.json
index 348f1ce1cb..e4a1e60136 100644
--- a/packages/client/web/package.json
+++ b/packages/client/web/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-client-web",
"description": "Web shell kernel: bootWebShell (module system holding + seed table + two-stage boot + AppRoot gate + app-shell assembly entry), consumed by the apps/web vite entry",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/client/web"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/code-runtime/code-runtime-worker/package.json b/packages/code-runtime/code-runtime-worker/package.json
index 565541abc8..55e2cbc398 100644
--- a/packages/code-runtime/code-runtime-worker/package.json
+++ b/packages/code-runtime/code-runtime-worker/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-code-runtime-worker",
"description": "Worker-thread implementation of the DeepSeek Harness code-execution seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/code-runtime/code-runtime-worker"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/code-runtime/code-runtime/package.json b/packages/code-runtime/code-runtime/package.json
index 053e56b54a..57b85721a3 100644
--- a/packages/code-runtime/code-runtime/package.json
+++ b/packages/code-runtime/code-runtime/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-code-runtime",
"description": "Abstract code-execution seam (ctx.codeRuntime) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/code-runtime/code-runtime"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/compact/command-compact/package.json b/packages/compact/command-compact/package.json
index ec043adca7..ff64dba2a6 100644
--- a/packages/compact/command-compact/package.json
+++ b/packages/compact/command-compact/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-command-compact",
"description": "Human-facing slash command for explicit session compaction",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/compact/command-compact"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/compact/compact-basic/package.json b/packages/compact/compact-basic/package.json
index f407d15188..1f6c2b402e 100644
--- a/packages/compact/compact-basic/package.json
+++ b/packages/compact/compact-basic/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-compact-basic",
"description": "Token-meter-driven compaction policy and LLM summarization backend for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/compact/compact-basic"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/compact/compact-tool-result-prune/package.json b/packages/compact/compact-tool-result-prune/package.json
index 5a30f7fc97..45eab7b091 100644
--- a/packages/compact/compact-tool-result-prune/package.json
+++ b/packages/compact/compact-tool-result-prune/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-compact-tool-result-prune",
"description": "Replay-safe model-free head/middle/tail pruning for tool-result surface nodes",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/compact/compact-tool-result-prune"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/compact/compact/package.json b/packages/compact/compact/package.json
index 2a4c3c9518..abdcd8a090 100644
--- a/packages/compact/compact/package.json
+++ b/packages/compact/compact/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-compact",
"description": "Abstract compaction service seam (ctx.compact) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/compact/compact"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/context/session-reference/package.json b/packages/context/session-reference/package.json
index 259c7a9a63..900ec038e3 100644
--- a/packages/context/session-reference/package.json
+++ b/packages/context/session-reference/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-reference",
"description": "Cross-session snapshot references and durable untrusted model context (ctx.sessionReferences)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/context/session-reference"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/context/time-context/package.json b/packages/context/time-context/package.json
index d2bf0a1dbe..08bb776c47 100644
--- a/packages/context/time-context/package.json
+++ b/packages/context/time-context/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-time-context",
"description": "Opt-in durable per-step context with the current time and elapsed time",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/context/time-context"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/context/tmux-context/package.json b/packages/context/tmux-context/package.json
index 99959c18f3..6cff253fac 100644
--- a/packages/context/tmux-context/package.json
+++ b/packages/context/tmux-context/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tmux-context",
"description": "Opt-in durable per-step context with this agent's tmux pane and window location",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/context/tmux-context"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/context/workspace-context/package.json b/packages/context/workspace-context/package.json
index 4972796a44..843d038dc5 100644
--- a/packages/context/workspace-context/package.json
+++ b/packages/context/workspace-context/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-workspace-context",
"description": "Workspace context loader for AGENTS.md/CLAUDE.md instruction files",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/context/workspace-context"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/agent-default-model/package.json b/packages/core/agent-default-model/package.json
index e57709585b..8a6341208e 100644
--- a/packages/core/agent-default-model/package.json
+++ b/packages/core/agent-default-model/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-default-model",
"description": "Default model selection shared by Agent entry points",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/agent-default-model"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/agent-loop/package.json b/packages/core/agent-loop/package.json
index fe37f8ca1c..d37d92aede 100644
--- a/packages/core/agent-loop/package.json
+++ b/packages/core/agent-loop/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-loop",
"description": "The concrete agent loop plugin for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/agent-loop"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/agent-tool-mode/package.json b/packages/core/agent-tool-mode/package.json
index 8427822784..bb25b4a14c 100644
--- a/packages/core/agent-tool-mode/package.json
+++ b/packages/core/agent-tool-mode/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-tool-mode",
"description": "Agent-plane presentation selector: composes one agent's tools as Code Mode, native, or both",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/agent-tool-mode"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/agent/package.json b/packages/core/agent/package.json
index 5669858fd9..b75f720ad4 100644
--- a/packages/core/agent/package.json
+++ b/packages/core/agent/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent",
"description": "Agent interface, registry, initiator scope, and event vocabulary for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/agent"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/scope/package.json b/packages/core/scope/package.json
index 792a6716e6..e82a8650e5 100644
--- a/packages/core/scope/package.json
+++ b/packages/core/scope/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-scope",
"description": "Scoped-context registration primitive (scope tags, scope-filtered event dispatch) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/scope"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/session/package.json b/packages/core/session/package.json
index ada5c170d1..8fe45b8bed 100644
--- a/packages/core/session/package.json
+++ b/packages/core/session/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session",
"description": "Event-sourced session store for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/session"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/system-prompt/package.json b/packages/core/system-prompt/package.json
index 35a270cf9d..3dc65c9391 100644
--- a/packages/core/system-prompt/package.json
+++ b/packages/core/system-prompt/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-system-prompt",
"description": "System prompt assembly registry for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/system-prompt"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/core/tools/package.json b/packages/core/tools/package.json
index 7070431132..6db89c3b0f 100644
--- a/packages/core/tools/package.json
+++ b/packages/core/tools/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tools",
"description": "Tool registry and execution pipeline for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/core/tools"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/credentials/credentials-local/package.json b/packages/credentials/credentials-local/package.json
index 483fc3d5d0..b29c9d2fbb 100644
--- a/packages/credentials/credentials-local/package.json
+++ b/packages/credentials/credentials-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-credentials-local",
"description": "File-backed credentials provider ($DSH_HOME/.env under the live process environment) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/credentials/credentials-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/credentials/credentials/package.json b/packages/credentials/credentials/package.json
index 2b356c197c..f0c9c43694 100644
--- a/packages/credentials/credentials/package.json
+++ b/packages/credentials/credentials/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-credentials",
"description": "Abstract credential seam (ctx.credentials): settings carry references to secrets, providers own the values",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/credentials/credentials"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/e2b/e2b/package.json b/packages/e2b/e2b/package.json
index edb7077d63..98dff52be8 100644
--- a/packages/e2b/e2b/package.json
+++ b/packages/e2b/e2b/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-e2b",
"description": "Shared E2B sandbox lifecycle for DeepSeek Harness provider adapters",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/e2b/e2b"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/e2b/fs-e2b/package.json b/packages/e2b/fs-e2b/package.json
index 7b7faf9c03..bb3190c4be 100644
--- a/packages/e2b/fs-e2b/package.json
+++ b/packages/e2b/fs-e2b/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-fs-e2b",
"description": "E2B filesystem implementation for DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/e2b/fs-e2b"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/e2b/subprocess-e2b/package.json b/packages/e2b/subprocess-e2b/package.json
index 182c41b8f5..ca5de7a893 100644
--- a/packages/e2b/subprocess-e2b/package.json
+++ b/packages/e2b/subprocess-e2b/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subprocess-e2b",
"description": "E2B subprocess implementation for DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/e2b/subprocess-e2b"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/examples/acp-demo/package.json b/packages/examples/acp-demo/package.json
index 0e110ec3d4..e21a3b21a2 100644
--- a/packages/examples/acp-demo/package.json
+++ b/packages/examples/acp-demo/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-acp-demo",
"description": "ACP automation server app: agent spine + JSONL persistence + ACP transport, with a JSON-RPC stdio bin",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/examples/acp-demo"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/examples/agent-spine-demo/package.json b/packages/examples/agent-spine-demo/package.json
index 73520f5645..470cb869df 100644
--- a/packages/examples/agent-spine-demo/package.json
+++ b/packages/examples/agent-spine-demo/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-spine-demo",
"description": "The default executor-less/UI-less agent spine with fallback session titles, provider-routed retry, and optional persisted goals",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/examples/agent-spine-demo"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/examples/jsonrpc-demo/package.json b/packages/examples/jsonrpc-demo/package.json
index 49aec73d1f..a9452b6a22 100644
--- a/packages/examples/jsonrpc-demo/package.json
+++ b/packages/examples/jsonrpc-demo/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-jsonrpc-demo",
"description": "Bin that boots an external Cordis config for the stdio JSON-RPC SDK runtime",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/examples/jsonrpc-demo"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/feedback/command-feedback/package.json b/packages/feedback/command-feedback/package.json
index ac901d6a99..e3d72eb3cb 100644
--- a/packages/feedback/command-feedback/package.json
+++ b/packages/feedback/command-feedback/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-command-feedback",
"description": "Log-only session feedback producer and human-facing slash command",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/feedback/command-feedback"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/fs-local/package.json b/packages/fs/fs-local/package.json
index 1401a25597..feb0b621d5 100644
--- a/packages/fs/fs-local/package.json
+++ b/packages/fs/fs-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-fs-local",
"description": "Local-filesystem implementation of the DeepSeek Harness filesystem seam (ctx.fs)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/fs-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/fs-policy/package.json b/packages/fs/fs-policy/package.json
index 007ef3d529..26273eb031 100644
--- a/packages/fs/fs-policy/package.json
+++ b/packages/fs/fs-policy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-fs-policy",
"description": "File-context policy plugin for the DeepSeek Harness — observed-state, read-before-edit, and version-guarded write/edit added over the ctx.fs provider seam through the fs/* event gate (no service surface)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/fs-policy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/fs-sandbox/package.json b/packages/fs/fs-sandbox/package.json
index 015a572c19..1622fc2621 100644
--- a/packages/fs/fs-sandbox/package.json
+++ b/packages/fs/fs-sandbox/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-fs-sandbox",
"description": "Sandbox-enforcing implementation of the DeepSeek Harness filesystem seam: fences write/edit by the per-call sandbox mode (read-only denies mutation, workspace-write contains it to the workspace + temp roots) while reads pass through",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/fs-sandbox"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/fs/package.json b/packages/fs/fs/package.json
index c8445419e1..e14e5f0a15 100644
--- a/packages/fs/fs/package.json
+++ b/packages/fs/fs/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-fs",
"description": "Abstract filesystem capability seam (ctx.fs) for the DeepSeek Harness — vocabulary types, the FileSystem service (text IO + optional version-guarded atomic mutations), and the fs/* policy event vocabulary",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/fs"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/tool-fs-search/package.json b/packages/fs/tool-fs-search/package.json
index ab8a988ef6..6e8c611782 100644
--- a/packages/fs/tool-fs-search/package.json
+++ b/packages/fs/tool-fs-search/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-fs-search",
"description": "Model-facing filesystem discovery tools (glob, grep) backed by the packaged ripgrep binary (@vscode/ripgrep)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/tool-fs-search"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/tool-fs/package.json b/packages/fs/tool-fs/package.json
index b2070827cb..456f7514af 100644
--- a/packages/fs/tool-fs/package.json
+++ b/packages/fs/tool-fs/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-fs",
"description": "Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/tool-fs"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/fs/tool-str-replace-editor/package.json b/packages/fs/tool-str-replace-editor/package.json
index 04ad220a3a..7dfd74c7cd 100644
--- a/packages/fs/tool-str-replace-editor/package.json
+++ b/packages/fs/tool-str-replace-editor/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-str-replace-editor",
"description": "Model-facing view, create, literal replace, and line insert tool over the Harness filesystem service",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/fs/tool-str-replace-editor"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/goal/command-goal/package.json b/packages/goal/command-goal/package.json
index daf1ebf924..8a34968cb6 100644
--- a/packages/goal/command-goal/package.json
+++ b/packages/goal/command-goal/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-command-goal",
"description": "Human-facing slash command for persisted same-session goals",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/goal/command-goal"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/goal/goal-session/package.json b/packages/goal/goal-session/package.json
index bd315cb2c1..9fdb8e83e1 100644
--- a/packages/goal/goal-session/package.json
+++ b/packages/goal/goal-session/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-goal-session",
"description": "Race-fenced same-session goal-round driver",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/goal/goal-session"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/goal/goal/package.json b/packages/goal/goal/package.json
index 32ca4d00d9..db2fe9c3c1 100644
--- a/packages/goal/goal/package.json
+++ b/packages/goal/goal/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-goal",
"description": "Event-sourced same-session goal state and lifecycle service for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/goal/goal"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/goal/tool-goal/package.json b/packages/goal/tool-goal/package.json
index 0b03bb02b6..8c843fe7e8 100644
--- a/packages/goal/tool-goal/package.json
+++ b/packages/goal/tool-goal/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-goal",
"description": "Model-facing same-session goal tools with execution-time authority checks",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/goal/tool-goal"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/guard/repeat-tool-guard/package.json b/packages/guard/repeat-tool-guard/package.json
index 9bc4fd493f..2f9bf37a0f 100644
--- a/packages/guard/repeat-tool-guard/package.json
+++ b/packages/guard/repeat-tool-guard/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-repeat-tool-guard",
"description": "Repeat-tool-call guard plugin: advisory reminders when an agent loops on identical tool calls",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/guard/repeat-tool-guard"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/guard/timeout-policy/package.json b/packages/guard/timeout-policy/package.json
index 3f56d8e59e..9ea624ee83 100644
--- a/packages/guard/timeout-policy/package.json
+++ b/packages/guard/timeout-policy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-timeout-policy",
"description": "Tool-call timeout policy: a tools/execute wrapper that arms a per-tool deadline on exec.signal and returns TOOL_TIMEOUT when it wins",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/guard/timeout-policy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/hooks/hook-protocol/package.json b/packages/hooks/hook-protocol/package.json
index 670cd4df5d..d628b7772c 100644
--- a/packages/hooks/hook-protocol/package.json
+++ b/packages/hooks/hook-protocol/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-hook-protocol",
"description": "Shared Claude Code / Codex hook wire protocol: matcher engine, stdin/exit-code/stdout codec, multi-hook merge, and hook/* session events",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/hooks/hook-protocol"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/hooks/hooks-claude/package.json b/packages/hooks/hooks-claude/package.json
index 2af6a96466..79ea6ec65b 100644
--- a/packages/hooks/hooks-claude/package.json
+++ b/packages/hooks/hooks-claude/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-hooks-claude",
"description": "Bridge plugin: run a Claude Code hooks.json / settings hook config on the DeepSeek Harness interception seams",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/hooks/hooks-claude"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/hooks/hooks-codex/package.json b/packages/hooks/hooks-codex/package.json
index 37ac4d7bed..2f567eed26 100644
--- a/packages/hooks/hooks-codex/package.json
+++ b/packages/hooks/hooks-codex/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-hooks-codex",
"description": "Bridge plugin: run a Codex hooks.json hook config on the DeepSeek Harness interception seams",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/hooks/hooks-codex"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/apiproxy/package.json b/packages/host/apiproxy/package.json
index 5ce28e9d05..219704e6dd 100644
--- a/packages/host/apiproxy/package.json
+++ b/packages/host/apiproxy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-apiproxy",
"description": "API gateway: the ApiProxy contract (api/), the fetch carrier pair (fetch/), and the host-side gateway plugin providing ctx.apiProxy",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/apiproxy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/directory-picker-auto/package.json b/packages/host/directory-picker-auto/package.json
index b5e5164500..a553fc2c85 100644
--- a/packages/host/directory-picker-auto/package.json
+++ b/packages/host/directory-picker-auto/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-directory-picker-auto",
"description": "Adaptive chooser of the directory-picker seam: resolves the host situation at boot and mounts the native or browse backend for the DeepSeek Harness web GUI host",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/directory-picker-auto"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/directory-picker-browse/package.json b/packages/host/directory-picker-browse/package.json
index 04078b9ea7..329e955c54 100644
--- a/packages/host/directory-picker-browse/package.json
+++ b/packages/host/directory-picker-browse/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-directory-picker-browse",
"description": "In-app browsing backend of the directory-picker seam (listing/creation primitives over the host filesystem)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/directory-picker-browse"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/directory-picker-native/package.json b/packages/host/directory-picker-native/package.json
index b725cd1001..d3000b1e98 100644
--- a/packages/host/directory-picker-native/package.json
+++ b/packages/host/directory-picker-native/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-directory-picker-native",
"description": "Native-OS-chooser backend of the directory-picker seam for the DeepSeek Harness web GUI host",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/directory-picker-native"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/directory-picker/package.json b/packages/host/directory-picker/package.json
index c348021815..a8feccefbe 100644
--- a/packages/host/directory-picker/package.json
+++ b/packages/host/directory-picker/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-directory-picker",
"description": "Abstract workspace-directory picking seam (ctx.directoryPicker) for the DeepSeek Harness web GUI host",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/directory-picker"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/frontend-static/package.json b/packages/host/frontend-static/package.json
index 73414a5422..9da90e8b20 100644
--- a/packages/host/frontend-static/package.json
+++ b/packages/host/frontend-static/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-frontend-static",
"description": "SPA dist server for the Web shell: owns the webserver fallback seat, serving the built frontend with index-tap injection, traversal rejection, and SPA index fallback",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/frontend-static"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/host/webserver/package.json b/packages/host/webserver/package.json
index e7a4b4cbf9..0f29d976e6 100644
--- a/packages/host/webserver/package.json
+++ b/packages/host/webserver/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-host-webserver",
"description": "Web route-registration plugin: HTTP and upgrade routes, index transform taps, and static dist fallback; knows no harness concepts",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/host/webserver"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/interaction/commands/package.json b/packages/interaction/commands/package.json
index 96fd3e6740..2909fda952 100644
--- a/packages/interaction/commands/package.json
+++ b/packages/interaction/commands/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-commands",
"description": "Plugin-owned human command registry for DeepSeek Harness UI surfaces",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/interaction/commands"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/interaction/permission/package.json b/packages/interaction/permission/package.json
index 5fad3f9d25..4ec76c4e16 100644
--- a/packages/interaction/permission/package.json
+++ b/packages/interaction/permission/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-permission",
"description": "User-facing permission presets (ctx.permission) for the DeepSeek Harness: one product-level Permissions select bundling the sandbox-mode and approval-policy knobs, written through to their own session events",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/interaction/permission"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/interaction/tool-ask-user/package.json b/packages/interaction/tool-ask-user/package.json
index b7291d4ccc..76b103ca04 100644
--- a/packages/interaction/tool-ask-user/package.json
+++ b/packages/interaction/tool-ask-user/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-ask-user",
"description": "Model-facing ask_user_question tool over the ctx.userInteraction seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/interaction/tool-ask-user"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/interaction/user-approval/package.json b/packages/interaction/user-approval/package.json
index 854e316df9..99f1e82f1f 100644
--- a/packages/interaction/user-approval/package.json
+++ b/packages/interaction/user-approval/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-user-approval",
"description": "User-approval seam (ctx.approval) for the DeepSeek Harness: one-shot permission decisions dispatched to composed answerers over the approval/request waterfall, fail-closed by default",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/interaction/user-approval"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/interaction/user-interaction/package.json b/packages/interaction/user-interaction/package.json
index c72e3f1298..67022c524b 100644
--- a/packages/interaction/user-interaction/package.json
+++ b/packages/interaction/user-interaction/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-user-interaction",
"description": "Abstract user-interaction seam (ctx.userInteraction) for asking the human during agent runs",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/interaction/user-interaction"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/llm/llm-deepseek/package.json b/packages/llm/llm-deepseek/package.json
index d2573696be..3bc2702d1b 100644
--- a/packages/llm/llm-deepseek/package.json
+++ b/packages/llm/llm-deepseek/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm-deepseek",
"description": "DeepSeek chat-completions adapter for the DeepSeek Harness LLM seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/llm/llm-deepseek"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/llm/llm-pi-ai/package.json b/packages/llm/llm-pi-ai/package.json
index f7a931d902..06003f4165 100644
--- a/packages/llm/llm-pi-ai/package.json
+++ b/packages/llm/llm-pi-ai/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm-pi-ai",
"description": "pi-ai-backed DeepSeek adapter for the DeepSeek Harness LLM seam (design-verification twin of dsh-llm-deepseek)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/llm/llm-pi-ai"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/llm/llm-retry/package.json b/packages/llm/llm-retry/package.json
index 5f69487147..8baa7e8e5d 100644
--- a/packages/llm/llm-retry/package.json
+++ b/packages/llm/llm-retry/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm-retry",
"description": "Provider-routed LLM request retry policy for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/llm/llm-retry"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/llm/llm/package.json b/packages/llm/llm/package.json
index 1a11622738..67a45ccf88 100644
--- a/packages/llm/llm/package.json
+++ b/packages/llm/llm/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm",
"description": "Provider-neutral LLM service interface for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/llm/llm"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/llm/token-meter/package.json b/packages/llm/token-meter/package.json
index 61cd66617f..50762fc86f 100644
--- a/packages/llm/token-meter/package.json
+++ b/packages/llm/token-meter/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-token-meter",
"description": "Replay-aware token measurement service (ctx.tokenMeter) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/llm/token-meter"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/lsp/lsp-local/package.json b/packages/lsp/lsp-local/package.json
index 02fcddd558..0a2181c3de 100644
--- a/packages/lsp/lsp-local/package.json
+++ b/packages/lsp/lsp-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-lsp-local",
"description": "Generic stdio language-server provider for the DeepSeek Harness LSP capability seam (ctx.lsp) — spawns configured servers, translates JSON-RPC, and serves transient-open goToDefinition/findReferences/goToImplementation/hover queries in the host filesystem namespace",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/lsp/lsp-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/lsp/lsp/package.json b/packages/lsp/lsp/package.json
index d5993b515e..c4a2385665 100644
--- a/packages/lsp/lsp/package.json
+++ b/packages/lsp/lsp/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-lsp",
"description": "Abstract LSP capability seam (ctx.lsp) for the DeepSeek Harness — language-server provider registry keyed by branded id and extension mapping, order-independent per-query selection, normalized definition/references/implementation/hover requests and results, and the LspError taxonomy",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/lsp/lsp"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/lsp/tool-lsp/package.json b/packages/lsp/tool-lsp/package.json
index 7b7dc54dc2..4a23cffe88 100644
--- a/packages/lsp/tool-lsp/package.json
+++ b/packages/lsp/tool-lsp/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-lsp",
"description": "Model-facing lsp tool over the DeepSeek Harness LSP capability seam (ctx.lsp) — one read-only tool with goToDefinition/findReferences/goToImplementation/hover operations, one-based UTF-16 cursor coordinates, bounded location rendering, and hover normalization",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/lsp/tool-lsp"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/mcp/mcp-client/package.json b/packages/mcp/mcp-client/package.json
index e5b110e7db..a7f3fc3b90 100644
--- a/packages/mcp/mcp-client/package.json
+++ b/packages/mcp/mcp-client/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-mcp-client",
"description": "MCP client bridge: connects to MCP servers and registers their tools on ctx.tools",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/mcp/mcp-client"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/plan/plan-mode/package.json b/packages/plan/plan-mode/package.json
index d5c24e3877..1c8b81cc30 100644
--- a/packages/plan/plan-mode/package.json
+++ b/packages/plan/plan-mode/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-plan-mode",
"description": "Logged per-agent plan mode with deployment guidance, a direct slash command, and a user-reviewed exit",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/plan/plan-mode"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/preset/agent-presets/package.json b/packages/preset/agent-presets/package.json
index 5a08e6f99d..00a8318ad0 100644
--- a/packages/preset/agent-presets/package.json
+++ b/packages/preset/agent-presets/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-presets",
"description": "Per-session agent composition from preset cordis.yml files for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/preset/agent-presets"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/preset/persona/package.json b/packages/preset/persona/package.json
index cda2faf015..193a9cb45e 100644
--- a/packages/preset/persona/package.json
+++ b/packages/preset/persona/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-persona",
"description": "Composition-authored deployment persona section for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/preset/persona"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/pty/pty-local/package.json b/packages/pty/pty-local/package.json
index 82705255dc..9aad0c1502 100644
--- a/packages/pty/pty-local/package.json
+++ b/packages/pty/pty-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-pty-local",
"description": "Persistent shell PTY backend over the DeepSeek Harness subprocess terminal primitive",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/pty/pty-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/pty/pty/package.json b/packages/pty/pty/package.json
index 9671cfd8ca..75f3b33302 100644
--- a/packages/pty/pty/package.json
+++ b/packages/pty/pty/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-pty",
"description": "Persistent PTY session seam for the DeepSeek Harness — owner-scoped ids, backend registry, interactive sends, reads, signals, and awaited cleanup",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/pty/pty"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/pty/tool-bash-persistent/package.json b/packages/pty/tool-bash-persistent/package.json
index fdd5688e8e..34d95c6f78 100644
--- a/packages/pty/tool-bash-persistent/package.json
+++ b/packages/pty/tool-bash-persistent/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-bash-persistent",
"description": "Model-facing owner-scoped persistent Bash tool backed by the Harness PTY service",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/pty/tool-bash-persistent"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/pty/tool-pty/package.json b/packages/pty/tool-pty/package.json
index f3afefdc0a..2db01c4416 100644
--- a/packages/pty/tool-pty/package.json
+++ b/packages/pty/tool-pty/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-pty",
"description": "Six model-facing persistent PTY tools with owner isolation and generic background-task integration",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/pty/tool-pty"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/sandbox/sandbox-local/package.json b/packages/sandbox/sandbox-local/package.json
index 5af6264b4a..c68cd8532a 100644
--- a/packages/sandbox/sandbox-local/package.json
+++ b/packages/sandbox/sandbox-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sandbox-local",
"description": "Local process-sandbox backends for the DeepSeek Harness sandbox seam: bwrap, the npm-distributed landlock-run launcher, macOS Seatbelt, or the Windows ACL restricted-token runner — functionally probed, fail-closed",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/sandbox/sandbox-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/sandbox/sandbox-policy/package.json b/packages/sandbox/sandbox-policy/package.json
index 7636977d6e..d90befdd9e 100644
--- a/packages/sandbox/sandbox-policy/package.json
+++ b/packages/sandbox/sandbox-policy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sandbox-policy",
"description": "Per-call sandbox policy resolver and current model context: deployment fallbacks plus each session's mode and workspace root, shared by every enforcing capability family",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/sandbox/sandbox-policy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/sandbox/sandbox-windows-acl/package.json b/packages/sandbox/sandbox-windows-acl/package.json
index 8305b2cc20..6d8d9c722b 100644
--- a/packages/sandbox/sandbox-windows-acl/package.json
+++ b/packages/sandbox/sandbox-windows-acl/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sandbox-windows-acl",
"description": "Windows ACL write-restriction sandbox backend (restricted-token spawn with orphan-SID write allowlist) for the DeepSeek Harness sandbox seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/sandbox/sandbox-windows-acl"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/sandbox/sandbox/package.json b/packages/sandbox/sandbox/package.json
index 558588cfa7..9fc9f8a460 100644
--- a/packages/sandbox/sandbox/package.json
+++ b/packages/sandbox/sandbox/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sandbox",
"description": "Abstract process-sandbox seam (ctx.sandbox) for the DeepSeek Harness: same-world confinement vocabulary and the SandboxProvider contract",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/sandbox/sandbox"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/client/package.json b/packages/scaffold/client/package.json
index 7e0a4b0540..227e00a1ab 100644
--- a/packages/scaffold/client/package.json
+++ b/packages/scaffold/client/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sdk-client",
"description": "TypeScript client SDK for driving a DeepSeek Harness runtime subprocess over stdio JSON-RPC: the DeepSeekHarness high-level turns API and the lower-level HarnessClient",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/client"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/create-sdk/package.json b/packages/scaffold/create-sdk/package.json
index 4b40b6b2ca..e61b645303 100644
--- a/packages/scaffold/create-sdk/package.json
+++ b/packages/scaffold/create-sdk/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/create-sdk",
"description": "Create a DeepSeek Harness SDK project with npm create @deepseek-ai/sdk",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/create-sdk"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/helper/package.json b/packages/scaffold/helper/package.json
index f65b51052a..0266daaba1 100644
--- a/packages/scaffold/helper/package.json
+++ b/packages/scaffold/helper/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-helper",
"description": "Domain model and infrastructure for creating and editing DeepSeek Harness SDK projects",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/helper"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/protocol/package.json b/packages/scaffold/protocol/package.json
index c0d6ff1046..feb8784a6d 100644
--- a/packages/scaffold/protocol/package.json
+++ b/packages/scaffold/protocol/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-sdk-protocol",
"description": "Shared wire protocol for the DeepSeek Harness SDK runtime: the newline-delimited JSON-RPC stdio transport and the named request, result, and notification types spoken between the runtime server and SDK clients",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/protocol"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/scripts/package.json b/packages/scaffold/scripts/package.json
index d6ef776d67..e24969d78d 100644
--- a/packages/scaffold/scripts/package.json
+++ b/packages/scaffold/scripts/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-scripts",
"description": "DeepSeek Harness SDK launcher for start, dev, build, and project configuration",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/scripts"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/server/package.json b/packages/scaffold/server/package.json
index 457a375b04..6911f4b117 100644
--- a/packages/scaffold/server/package.json
+++ b/packages/scaffold/server/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-jsonrpc",
"description": "Stdio JSON-RPC server plugin for out-of-process DeepSeek Harness SDK clients",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/server"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/scaffold/telemetry/package.json b/packages/scaffold/telemetry/package.json
index 3ebd894a99..419d8f9ed1 100644
--- a/packages/scaffold/telemetry/package.json
+++ b/packages/scaffold/telemetry/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-telemetry",
"description": "Launcher-side dsh-sdk telemetry: secret redaction, consent resolution, anonymous id, payload builder, and fire-and-forget reporter",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/scaffold/telemetry"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/self-modification/tool-cordis/package.json b/packages/self-modification/tool-cordis/package.json
index 5544c84b49..1fc3fcebb1 100644
--- a/packages/self-modification/tool-cordis/package.json
+++ b/packages/self-modification/tool-cordis/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-cordis",
"description": "Self-referential cordis toolset: inspect the live runtime, mount and dispose model-written plugins",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/self-modification/tool-cordis"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session-query/session-query-sqlite/package.json b/packages/session-query/session-query-sqlite/package.json
index d2ca6da01a..a54c9e0e1b 100644
--- a/packages/session-query/session-query-sqlite/package.json
+++ b/packages/session-query/session-query-sqlite/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-query-sqlite",
"description": "Concrete ctx.sessionQuery backend with SQLite FTS5 search",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session-query/session-query-sqlite"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session-query/session-query/package.json b/packages/session-query/session-query/package.json
index 30e6a52593..cdd3d740f5 100644
--- a/packages/session-query/session-query/package.json
+++ b/packages/session-query/session-query/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-query",
"description": "Combined session query service contract with concrete reads, traces, and filters",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session-query/session-query"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session-query/tool-session-query/package.json b/packages/session-query/tool-session-query/package.json
index 0e8f8c95ee..0da248f48a 100644
--- a/packages/session-query/tool-session-query/package.json
+++ b/packages/session-query/tool-session-query/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-session-query",
"description": "Workspace-authorized model-facing session history search, trace, and event read tools",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session-query/tool-session-query"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-checkpoint-policy/package.json b/packages/session/session-checkpoint-policy/package.json
index 6a7a07ad13..8a5766641f 100644
--- a/packages/session/session-checkpoint-policy/package.json
+++ b/packages/session/session-checkpoint-policy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-checkpoint-policy",
"description": "Semantic session durability checkpoints before model requests and tool side effects",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-checkpoint-policy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-persistence-jsonl/package.json b/packages/session/session-persistence-jsonl/package.json
index 9960565102..6bc752ed0f 100644
--- a/packages/session/session-persistence-jsonl/package.json
+++ b/packages/session/session-persistence-jsonl/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-persistence-jsonl",
"description": "JSONL durable session persistence backend for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-persistence-jsonl"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-persistence-sqlite/package.json b/packages/session/session-persistence-sqlite/package.json
index 62bbba8dba..8d6f05cbd8 100644
--- a/packages/session/session-persistence-sqlite/package.json
+++ b/packages/session/session-persistence-sqlite/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-persistence-sqlite",
"description": "SQLite durable session persistence backend for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-persistence-sqlite"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-persistence/package.json b/packages/session/session-persistence/package.json
index 94b1455beb..d556ebff73 100644
--- a/packages/session/session-persistence/package.json
+++ b/packages/session/session-persistence/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-persistence",
"description": "Abstract durable session persistence seam (ctx.sessionPersistence) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-persistence"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-projection-cache/package.json b/packages/session/session-projection-cache/package.json
index d54b0d18e7..885c293dc9 100644
--- a/packages/session/session-projection-cache/package.json
+++ b/packages/session/session-projection-cache/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-projection-cache",
"description": "Persisted projection cache (ctx.sessionProjectionCache): durable per-session projection checkpoints over the domain data form, throttled write-behind, and the cold-read ladder (cache row + persistence tail replay)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-projection-cache"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-projection/package.json b/packages/session/session-projection/package.json
index 46445673ab..d17884eadb 100644
--- a/packages/session/session-projection/package.json
+++ b/packages/session/session-projection/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-projection",
"description": "Session-projection seam: the merge-extensible projection type table, the provider contract, and the ctx.sessionProjections registry serving whole current values of log-derived per-session state",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-projection"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-telemetry-otel/package.json b/packages/session/session-telemetry-otel/package.json
index 9a8c4e914f..569e62e70b 100644
--- a/packages/session/session-telemetry-otel/package.json
+++ b/packages/session/session-telemetry-otel/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-telemetry-otel",
"description": "OpenTelemetry backend for the DeepSeek Harness telemetry seam: hands captured session records to the OTel JS SDK's log pipeline",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-telemetry-otel"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-telemetry/package.json b/packages/session/session-telemetry/package.json
index 2176d02313..d9ac09b6b7 100644
--- a/packages/session/session-telemetry/package.json
+++ b/packages/session/session-telemetry/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-telemetry",
"description": "Telemetry seam for the DeepSeek Harness: session-event capture, projection, redaction, and handoff to a reporting backend",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-telemetry"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-title-all-messages-llm/package.json b/packages/session/session-title-all-messages-llm/package.json
index 70c3b4c255..ecd82f5f72 100644
--- a/packages/session/session-title-all-messages-llm/package.json
+++ b/packages/session/session-title-all-messages-llm/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-title-all-messages-llm",
"description": "All-user-messages LLM provider plugin for DeepSeek Harness session titles",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-title-all-messages-llm"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-title-first-message-llm/package.json b/packages/session/session-title-first-message-llm/package.json
index 0c934c192b..88e8ddb1ca 100644
--- a/packages/session/session-title-first-message-llm/package.json
+++ b/packages/session/session-title-first-message-llm/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-title-first-message-llm",
"description": "First-message LLM provider plugin for DeepSeek Harness session titles",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-title-first-message-llm"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-title-llm/package.json b/packages/session/session-title-llm/package.json
index 6e5acac31f..7b2c4caacd 100644
--- a/packages/session/session-title-llm/package.json
+++ b/packages/session/session-title-llm/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-title-llm",
"description": "Shared LLM generation policy for DeepSeek Harness session-title providers",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-title-llm"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/session-title/package.json b/packages/session/session-title/package.json
index 820df4c70d..84a3b8caaf 100644
--- a/packages/session/session-title/package.json
+++ b/packages/session/session-title/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-session-title",
"description": "Log-backed session title service and provider registry for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/session-title"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/session/user-id/package.json b/packages/session/user-id/package.json
index 5e86cc4a32..fe733ccfd0 100644
--- a/packages/session/user-id/package.json
+++ b/packages/session/user-id/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-user-id",
"description": "Shared anonymous user identity for DeepSeek Harness telemetry and feedback correlation",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/session/user-id"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/settings/settings-local/package.json b/packages/settings/settings-local/package.json
index 5e086b8efe..c66e51274d 100644
--- a/packages/settings/settings-local/package.json
+++ b/packages/settings/settings-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-settings-local",
"description": "File-backed settings provider (settings.yaml) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/settings/settings-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/settings/settings/package.json b/packages/settings/settings/package.json
index 23cb60d13c..da6a1cccc0 100644
--- a/packages/settings/settings/package.json
+++ b/packages/settings/settings/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-settings",
"description": "Abstract user-settings seam (ctx.settings) for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/settings/settings"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/skill/skill-badge/package.json b/packages/skill/skill-badge/package.json
index 7df1703c0e..5b23d44f9c 100644
--- a/packages/skill/skill-badge/package.json
+++ b/packages/skill/skill-badge/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-skill-badge",
"description": "Bundled dsh badge skill provider for DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/skill/skill-badge"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/skill/skill-local/package.json b/packages/skill/skill-local/package.json
index 24ce31af02..1cec60bf92 100644
--- a/packages/skill/skill-local/package.json
+++ b/packages/skill/skill-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-skill-local",
"description": "Local filesystem skill provider for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/skill/skill-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/skill/skill/package.json b/packages/skill/skill/package.json
index 20309664cd..921adf7632 100644
--- a/packages/skill/skill/package.json
+++ b/packages/skill/skill/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-skill",
"description": "Agent skill provider registry for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/skill/skill"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/skill/tool-skill/package.json b/packages/skill/tool-skill/package.json
index 07adab663a..25e0f9b2c9 100644
--- a/packages/skill/tool-skill/package.json
+++ b/packages/skill/tool-skill/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-skill",
"description": "Model-facing skill loading tool for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/skill/tool-skill"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/spill/spill-local/package.json b/packages/spill/spill-local/package.json
index fcfacf1dcf..7dd63ce56a 100644
--- a/packages/spill/spill-local/package.json
+++ b/packages/spill/spill-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-spill-local",
"description": "Local-filesystem implementation of the DeepSeek Harness spill storage seam (private session-scoped files)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/spill/spill-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/spill/spill-policy/package.json b/packages/spill/spill-policy/package.json
index 3d6cda2186..f425208b8d 100644
--- a/packages/spill/spill-policy/package.json
+++ b/packages/spill/spill-policy/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-spill-policy",
"description": "Tool-result spill policy for the DeepSeek Harness — replaces oversized plain-text tool results with a retained preview plus a spill-file path (no service surface)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/spill/spill-policy"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/spill/spill/package.json b/packages/spill/spill/package.json
index 996069461e..9340d28a37 100644
--- a/packages/spill/spill/package.json
+++ b/packages/spill/spill/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-spill",
"description": "Abstract spill storage seam (ctx.spillStore) for the DeepSeek Harness — save oversized tool text and return a retrieval locator",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/spill/spill"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/storage/storage-domain/package.json b/packages/storage/storage-domain/package.json
index fe5915c2ea..5c6f8836f0 100644
--- a/packages/storage/storage-domain/package.json
+++ b/packages/storage/storage-domain/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-storage-domain",
"description": "Domain data form (ctx.storage.domain): schema-validated, event-emitting KV domains over storage backends for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/storage/storage-domain"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/storage/storage-json/package.json b/packages/storage/storage-json/package.json
index 55012ed819..73d8ed9e74 100644
--- a/packages/storage/storage-json/package.json
+++ b/packages/storage/storage-json/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-storage-json",
"description": "JSON file KV storage backend for the DeepSeek Harness storage hub",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/storage/storage-json"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/storage/storage-sqlite/package.json b/packages/storage/storage-sqlite/package.json
index 6283822419..4ad22a7946 100644
--- a/packages/storage/storage-sqlite/package.json
+++ b/packages/storage/storage-sqlite/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-storage-sqlite",
"description": "SQLite storage backend (kv facet) for the DeepSeek Harness storage hub",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/storage/storage-sqlite"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/storage/storage/package.json b/packages/storage/storage/package.json
index 094814dfa1..b638d392e0 100644
--- a/packages/storage/storage/package.json
+++ b/packages/storage/storage/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-storage",
"description": "Storage hub (ctx.storage): named backend registry plus mounted data-form facilities for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/storage/storage"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-acp/package.json b/packages/subagent/subagent-acp/package.json
index a99154af56..155e89ced1 100644
--- a/packages/subagent/subagent-acp/package.json
+++ b/packages/subagent/subagent-acp/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-acp",
"description": "Out-of-process ACP subagent backend: drives a child agent in a spawned subprocess over the Agent Client Protocol",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-acp"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-claude-code/package.json b/packages/subagent/subagent-claude-code/package.json
index d2234104cb..758d30435c 100644
--- a/packages/subagent/subagent-claude-code/package.json
+++ b/packages/subagent/subagent-claude-code/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-claude-code",
"description": "One-shot Claude Code subagent provider over the official Agent SDK",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-claude-code"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-codex/package.json b/packages/subagent/subagent-codex/package.json
index a14173e3ee..e44de3fa75 100644
--- a/packages/subagent/subagent-codex/package.json
+++ b/packages/subagent/subagent-codex/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-codex",
"description": "One-shot Codex subagent provider over the official app-server protocol",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-codex"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-dsh-sdk/package.json b/packages/subagent/subagent-dsh-sdk/package.json
index 58bdd83e13..22d66af4bd 100644
--- a/packages/subagent/subagent-dsh-sdk/package.json
+++ b/packages/subagent/subagent-dsh-sdk/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-dsh-sdk",
"description": "Out-of-process SDK subagent backend: drives a child DeepSeek Harness runtime subprocess over stdio JSON-RPC through the TypeScript SDK client",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-dsh-sdk"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-fork/package.json b/packages/subagent/subagent-fork/package.json
index 57d79a38d4..c0abf8ab3f 100644
--- a/packages/subagent/subagent-fork/package.json
+++ b/packages/subagent/subagent-fork/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-fork",
"description": "In-process fork subagent backend: runs a child agent seeded with a prefix of the parent's log",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-fork"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-inprocess/package.json b/packages/subagent/subagent-inprocess/package.json
index 15dfe1c321..09fe807748 100644
--- a/packages/subagent/subagent-inprocess/package.json
+++ b/packages/subagent/subagent-inprocess/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-inprocess",
"description": "Shared in-process subagent run driver: drives a child agent on ctx.agents (used by the spawn and fork backends)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-inprocess"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent-spawn/package.json b/packages/subagent/subagent-spawn/package.json
index f20b96227c..c865aa5251 100644
--- a/packages/subagent/subagent-spawn/package.json
+++ b/packages/subagent/subagent-spawn/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent-spawn",
"description": "In-process spawn subagent backend: runs a fresh child agent on ctx.agents",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent-spawn"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/subagent/package.json b/packages/subagent/subagent/package.json
index fc1f2dfb86..070fe2c8cb 100644
--- a/packages/subagent/subagent/package.json
+++ b/packages/subagent/subagent/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subagent",
"description": "Abstract subagent seam (ctx.subagents): named-provider registry for delegating to child agents",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/subagent"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/tool-subagent-control/package.json b/packages/subagent/tool-subagent-control/package.json
index d1ca31c635..c89d35c727 100644
--- a/packages/subagent/tool-subagent-control/package.json
+++ b/packages/subagent/tool-subagent-control/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-subagent-control",
"description": "Globally named send_message, interrupt_agent, and list_agents tools over ctx.subagents continuations",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/tool-subagent-control"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/tool-subagent-report/package.json b/packages/subagent/tool-subagent-report/package.json
index c3f0e530ec..665230bdbd 100644
--- a/packages/subagent/tool-subagent-report/package.json
+++ b/packages/subagent/tool-subagent-report/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-subagent-report",
"description": "Child-scoped report tool over ctx.subagents continuations",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/tool-subagent-report"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subagent/tool-subagent/package.json b/packages/subagent/tool-subagent/package.json
index d5d0da52d4..5ba14c54b7 100644
--- a/packages/subagent/tool-subagent/package.json
+++ b/packages/subagent/tool-subagent/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-subagent",
"description": "Model-facing subagent delegation tool over the ctx.subagents seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subagent/tool-subagent"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subprocess/subprocess-local/package.json b/packages/subprocess/subprocess-local/package.json
index d966c0efb8..a9547a9c48 100644
--- a/packages/subprocess/subprocess-local/package.json
+++ b/packages/subprocess/subprocess-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subprocess-local",
"description": "Local-subprocess implementation of the DeepSeek Harness subprocess seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subprocess/subprocess-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/subprocess/subprocess/package.json b/packages/subprocess/subprocess/package.json
index f22708c717..a1a4e40865 100644
--- a/packages/subprocess/subprocess/package.json
+++ b/packages/subprocess/subprocess/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-subprocess",
"description": "Subprocess seam (ctx.subprocess) for the DeepSeek Harness — managed process groups, bounded spill-backed output, and escalated kills behind one abstract service",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/subprocess/subprocess"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/acp-snapshot/package.json b/packages/support/acp-snapshot/package.json
index fb4e13ec1e..929ba31708 100644
--- a/packages/support/acp-snapshot/package.json
+++ b/packages/support/acp-snapshot/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-acp-snapshot",
"description": "ACP test kit: shared subprocess launcher, snapshot scenario harness, expected-output normalizers, and suite factory",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/acp-snapshot"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/agent-loop-testkit/package.json b/packages/support/agent-loop-testkit/package.json
index 2bbfa195a7..5ca1382750 100644
--- a/packages/support/agent-loop-testkit/package.json
+++ b/packages/support/agent-loop-testkit/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-agent-loop-testkit",
"description": "Shared prerequisite mounting for tests that exercise the concrete agent loop",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/agent-loop-testkit"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/invariants/package.json b/packages/support/invariants/package.json
index 3ef3a80f41..0f1503b835 100644
--- a/packages/support/invariants/package.json
+++ b/packages/support/invariants/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-invariants",
"description": "Registry service for package-owned DeepSeek Harness runtime invariants",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/invariants"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/llm-mock-server/package.json b/packages/support/llm-mock-server/package.json
index c342697f01..9f5acda6cb 100644
--- a/packages/support/llm-mock-server/package.json
+++ b/packages/support/llm-mock-server/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm-mock-server",
"description": "Scriptable OpenAI-compatible HTTP/SSE fault server for LLM recovery tests",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/llm-mock-server"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/llm-replay/package.json b/packages/support/llm-replay/package.json
index 0c85caf96f..d199ea5a4f 100644
--- a/packages/support/llm-replay/package.json
+++ b/packages/support/llm-replay/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-llm-replay",
"description": "Replay LLM plugin: short-circuits llm/stream with model chunks reconstructed from a recorded session JSONL (keyless snapshot tests)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/llm-replay"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/support/loader-smoke/package.json b/packages/support/loader-smoke/package.json
index 10dc20f863..0de74f6e60 100644
--- a/packages/support/loader-smoke/package.json
+++ b/packages/support/loader-smoke/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-loader-smoke",
"description": "Shared subprocess and direct-agent harness for keyless real-Loader example smoke tests",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/support/loader-smoke"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/tasks/tasks-local/package.json b/packages/tasks/tasks-local/package.json
index 76deaf9b8d..aa4673b811 100644
--- a/packages/tasks/tasks-local/package.json
+++ b/packages/tasks/tasks-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tasks-local",
"description": "Process-local implementation of the DeepSeek Harness background task registry seam",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/tasks/tasks-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/tasks/tasks/package.json b/packages/tasks/tasks/package.json
index 61b8cd1ab8..2e59a68679 100644
--- a/packages/tasks/tasks/package.json
+++ b/packages/tasks/tasks/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tasks",
"description": "Background task registry (ctx.tasks) for the DeepSeek Harness — shared ids, owner isolation, polling, cancellation, and completion listeners for long-running tool work",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/tasks/tasks"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/tasks/tool-tasks/package.json b/packages/tasks/tool-tasks/package.json
index 38827df4f8..f55816cc82 100644
--- a/packages/tasks/tool-tasks/package.json
+++ b/packages/tasks/tool-tasks/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-tasks",
"description": "Model-facing background task control tools (task_output, task_list, task_kill) over the ctx.tasks registry",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/tasks/tool-tasks"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/todo/tool-todo/package.json b/packages/todo/tool-todo/package.json
index ee57660440..3bd9294687 100644
--- a/packages/todo/tool-todo/package.json
+++ b/packages/todo/tool-todo/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-todo",
"description": "Model-facing todo_write tool over the DeepSeek Harness event-sourced session log",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/todo/tool-todo"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/typert/generator/package.json b/packages/typert/generator/package.json
index fd9f14c449..117f18f48b 100644
--- a/packages/typert/generator/package.json
+++ b/packages/typert/generator/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-typert-generator",
"description": "TypeScript project analyzer and model-driven Typert artifact generator",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/typert/generator"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/typert/loader/package.json b/packages/typert/loader/package.json
index 998c0ec3a5..4f33f4bc23 100644
--- a/packages/typert/loader/package.json
+++ b/packages/typert/loader/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-typert-loader",
"description": "Loader integration for generated Typert package contributions",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/typert/loader"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/typert/registry/package.json b/packages/typert/registry/package.json
index dacb88764b..67f2611db1 100644
--- a/packages/typert/registry/package.json
+++ b/packages/typert/registry/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-typert-registry",
"description": "Runtime registry for generated package reflection and Zod schemas",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/typert/registry"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/typert/type-meta/package.json b/packages/typert/type-meta/package.json
index 9a1c362780..ae3fb96a2b 100644
--- a/packages/typert/type-meta/package.json
+++ b/packages/typert/type-meta/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-type-meta",
"description": "Compiler-independent Remote metadata and TypeRT provider protocols",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/typert/type-meta"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/atomic-write/package.json b/packages/util/atomic-write/package.json
index b54b5989cf..5556d4ab96 100644
--- a/packages/util/atomic-write/package.json
+++ b/packages/util/atomic-write/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-atomic-write",
"description": "Zero-dependency atomic file replacement: exclusive-create random-suffix temp + rename carrying the caller-stated permissions (writeFileAtomic)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/atomic-write"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/brand/package.json b/packages/util/brand/package.json
index 534cb20049..cdf9307e73 100644
--- a/packages/util/brand/package.json
+++ b/packages/util/brand/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-brand",
"description": "Type-only Branded nominal-typing primitive for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/brand"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/environment/package.json b/packages/util/environment/package.json
index 113f3b10c9..7eee1c2b1e 100644
--- a/packages/util/environment/package.json
+++ b/packages/util/environment/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-environment",
"description": "Immutable DeepSeek Harness launch environment that records which layer supplied each value",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/environment"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/native-command/package.json b/packages/util/native-command/package.json
index a50e0f2c12..81c6c8c771 100644
--- a/packages/util/native-command/package.json
+++ b/packages/util/native-command/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-native-command",
"description": "Zero-dependency no-shell execFile runner for host-native OS integrations: utf8 stdio capture, abort propagation, Windows hide",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/native-command"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/paths/package.json b/packages/util/paths/package.json
index 749d3e7ac9..2405fc5b65 100644
--- a/packages/util/paths/package.json
+++ b/packages/util/paths/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-paths",
"description": "Shared filesystem path helpers for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/paths"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/retention/package.json b/packages/util/retention/package.json
index ad61896d35..d7eec5489a 100644
--- a/packages/util/retention/package.json
+++ b/packages/util/retention/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-retention",
"description": "Zero-dependency bounded-retention primitive: ItemRetainer/TextRetainer + neutral notice helpers (what did we keep, what did we omit)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/retention"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/util/timeout/package.json b/packages/util/timeout/package.json
index 0a398aa7a4..2404dd13ff 100644
--- a/packages/util/timeout/package.json
+++ b/packages/util/timeout/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-timeout",
"description": "Zero-dependency timeout/deadline primitive: clampTimeout, deadline, timeoutOf, TimeoutReason (timing + classification only, no termination)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/util/timeout"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/tool-web/package.json b/packages/web/tool-web/package.json
index 585c5a0e83..2eb44ba59c 100644
--- a/packages/web/tool-web/package.json
+++ b/packages/web/tool-web/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-web",
"description": "Model-facing web tools (web_search, web_fetch) over the DeepSeek Harness web capability seam (ctx.web)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/tool-web"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/web-fetch-local/package.json b/packages/web/web-fetch-local/package.json
index cc34f6535d..61948fb142 100644
--- a/packages/web/web-fetch-local/package.json
+++ b/packages/web/web-fetch-local/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web-fetch-local",
"description": "Anonymous public HTTP(S) fetch provider for the DeepSeek Harness web capability seam (ctx.web)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/web-fetch-local"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/web-search-deepseek/package.json b/packages/web/web-search-deepseek/package.json
index cee385654b..bcca1d616a 100644
--- a/packages/web/web-search-deepseek/package.json
+++ b/packages/web/web-search-deepseek/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web-search-deepseek",
"description": "DeepSeek-backed search provider (native web_search via the Anthropic-compatible API) for the DeepSeek Harness web capability seam (ctx.web)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/web-search-deepseek"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/web-search-exa/package.json b/packages/web/web-search-exa/package.json
index 1861465ce9..15e907649d 100644
--- a/packages/web/web-search-exa/package.json
+++ b/packages/web/web-search-exa/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web-search-exa",
"description": "Exa-backed search provider for the DeepSeek Harness web capability seam (ctx.web)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/web-search-exa"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/web-search-perplexity/package.json b/packages/web/web-search-perplexity/package.json
index 9c821c8dd7..a952c7f83d 100644
--- a/packages/web/web-search-perplexity/package.json
+++ b/packages/web/web-search-perplexity/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web-search-perplexity",
"description": "Perplexity-backed search provider for the DeepSeek Harness web capability seam (ctx.web)",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/web-search-perplexity"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/web/web/package.json b/packages/web/web/package.json
index 4d4f787412..6f74c65f2b 100644
--- a/packages/web/web/package.json
+++ b/packages/web/web/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-web",
"description": "Abstract web access capability seam (ctx.web) for the DeepSeek Harness — search/fetch provider registry, registration-order-independent selection, request/result vocabulary, and the WebError taxonomy",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/web/web"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/workflow/tool-ralph/package.json b/packages/workflow/tool-ralph/package.json
index c2ebc18c31..184f656206 100644
--- a/packages/workflow/tool-ralph/package.json
+++ b/packages/workflow/tool-ralph/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-ralph",
"description": "Model-facing fresh-agent Ralph loop over the workflow and subagent seams",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/workflow/tool-ralph"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/workflow/tool-workflow/package.json b/packages/workflow/tool-workflow/package.json
index 0078621f99..125df12935 100644
--- a/packages/workflow/tool-workflow/package.json
+++ b/packages/workflow/tool-workflow/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-tool-workflow",
"description": "Model-facing workflow tool: run a JavaScript orchestration script over ctx.workflows",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/workflow/tool-workflow"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/workflow/workflow-workerthread/package.json b/packages/workflow/workflow-workerthread/package.json
index e229c02e37..d085ba235f 100644
--- a/packages/workflow/workflow-workerthread/package.json
+++ b/packages/workflow/workflow-workerthread/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-workflow-workerthread",
"description": "worker-thread workflow engine: executes model-written orchestration scripts off the host event loop, bridging agent() calls back to ctx.subagents",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/workflow/workflow-workerthread"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/workflow/workflow/package.json b/packages/workflow/workflow/package.json
index 3cc199028a..e2a6eb21d3 100644
--- a/packages/workflow/workflow/package.json
+++ b/packages/workflow/workflow/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-workflow",
"description": "Workflow capability seam: ctx.workflows service, run vocabulary, and workflow/* events",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/workflow/workflow"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/packages/workspace/workspace/package.json b/packages/workspace/workspace/package.json
index b33296c228..9c0c5127d5 100644
--- a/packages/workspace/workspace/package.json
+++ b/packages/workspace/workspace/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-workspace",
"description": "Workspace entity registry (ctx.workspace): durable workspace records with validated session attachment over the domain data form for the DeepSeek Harness",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/workspace/workspace"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/scripts/check-workspace-constraints.ts b/scripts/check-workspace-constraints.ts
index 49ff148922..cdada48fc5 100644
--- a/scripts/check-workspace-constraints.ts
+++ b/scripts/check-workspace-constraints.ts
@@ -41,6 +41,14 @@ const publicationSourceAllowlist: Readonly> =
'@deepseek-ai/node-addon-landlock-run': ['src/main.c'],
}
const repositoryUrl = 'git+https://github.com/deepseek-harness/deepseek-harness.git'
+/**
+ * Source home the published packages point consumers at. It differs from
+ * {@link repositoryUrl}, which the Landlock packages keep because npm resolves
+ * their trusted publishing against the repository that runs the workflow.
+ */
+const publishedRepositoryUrl = 'git+https://github.com/deepseek-ai/deepseek-harness.git'
+/** Directories whose packages this repository publishes: one release member each. */
+const releaseMemberDirectory = /^(?:packages\/[^/]+\/[^/]+|apps\/[^/]+|vendor\/[^/]+)$/
const localArtifactDirs = new Set(['node_modules'])
const appPackageFiles: Readonly> = {
@@ -232,8 +240,8 @@ function checkWorkspace({ dir, manifest }: WorkspaceManifest): string[] {
if (manifest.private === true) {
errors.push(`${label}: published Landlock package must not set "private": true`)
}
- if (manifest.publishConfig?.access !== 'public') {
- errors.push(`${label}: published Landlock package must set publishConfig.access to "public"`)
+ if (manifest.publishConfig?.access !== 'restricted') {
+ errors.push(`${label}: published Landlock package must set publishConfig.access to "restricted"`)
}
const expectedDirectory = dir
if (manifest.repository?.type !== 'git'
@@ -241,6 +249,21 @@ function checkWorkspace({ dir, manifest }: WorkspaceManifest): string[] {
|| manifest.repository.directory !== expectedDirectory) {
errors.push(`${label}: published Landlock package repository must use ${repositoryUrl} with directory ${expectedDirectory} for trusted publishing`)
}
+ } else if (releaseMemberDirectory.test(dir)) {
+ // Release members state that they are publishable: npm refuses a private
+ // package, the scope is published privately, and the repository field is
+ // how a consumer of a private package finds its source.
+ if (manifest.private === true) {
+ errors.push(`${label}: release member must not set "private": true`)
+ }
+ if (manifest.publishConfig?.access !== 'restricted') {
+ errors.push(`${label}: release member must set publishConfig.access to "restricted"`)
+ }
+ if (manifest.repository?.type !== 'git'
+ || manifest.repository.url !== publishedRepositoryUrl
+ || manifest.repository.directory !== dir) {
+ errors.push(`${label}: release member repository must use ${publishedRepositoryUrl} with directory ${dir}`)
+ }
} else if (manifest.private !== true) {
errors.push(`${label}: package.json must set "private": true`)
}
diff --git a/vendor/cordis/package.json b/vendor/cordis/package.json
index ddc49b0655..3428ccbdbc 100644
--- a/vendor/cordis/package.json
+++ b/vendor/cordis/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis",
"description": "Meta-Framework for Modern JavaScript Applications",
"version": "4.0.0-rc.7",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/cordis"
+ },
"sideEffects": false,
"type": "module",
"main": "lib/index.js",
diff --git a/vendor/cosmokit/package.json b/vendor/cosmokit/package.json
index db14a695e7..de1b3947bc 100644
--- a/vendor/cosmokit/package.json
+++ b/vendor/cosmokit/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cosmokit",
"description": "A collection of common utilities",
"version": "1.8.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/cosmokit"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/vendor/group/package.json b/vendor/group/package.json
index 9ddb0a132c..c9f242a7d3 100644
--- a/vendor/group/package.json
+++ b/vendor/group/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-group",
"description": "Nested plugin group for cordis",
"version": "1.0.0",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/group"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/vendor/hmr/package.json b/vendor/hmr/package.json
index 4ebaf14959..019c027584 100644
--- a/vendor/hmr/package.json
+++ b/vendor/hmr/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-hmr",
"description": "Hot Module Replacement Plugin for Cordis",
"version": "1.0.15",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/hmr"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/vendor/include/package.json b/vendor/include/package.json
index 3c56bd065b..7fb6c3f36b 100644
--- a/vendor/include/package.json
+++ b/vendor/include/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-include",
"description": "Include files in cordis configurations",
"version": "1.0.4",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/include"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/vendor/loader/package.json b/vendor/loader/package.json
index e535334803..aab8c19bf5 100644
--- a/vendor/loader/package.json
+++ b/vendor/loader/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-loader",
"description": "Plugin loader for cordis",
"version": "1.0.0-rc.5",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/loader"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
diff --git a/vendor/logger-console/package.json b/vendor/logger-console/package.json
index b1cc3734bb..aeeb81fb50 100644
--- a/vendor/logger-console/package.json
+++ b/vendor/logger-console/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-logger-console",
"description": "Console logger exporter for cordis",
"version": "1.0.0",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/logger-console"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/shared.d.ts",
diff --git a/vendor/schemastery/package.json b/vendor/schemastery/package.json
index f2a0c61e5a..e31c6e6251 100644
--- a/vendor/schemastery/package.json
+++ b/vendor/schemastery/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/schemastery",
"description": "Type driven schema validator",
"version": "3.18.0",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/schemastery"
+ },
"type": "module",
"main": "lib/index.cjs",
"module": "lib/index.mjs",
diff --git a/vendor/timer/package.json b/vendor/timer/package.json
index 9bf741fc51..32f564aa9d 100644
--- a/vendor/timer/package.json
+++ b/vendor/timer/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/cordis-plugin-timer",
"description": "Timer service for cordis",
"version": "1.1.2",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "vendor/timer"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
From 35e2601a280f4b2a25a5a2896205b1d94df8d0aa Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:03:15 +0800
Subject: [PATCH 05/15] docs(release): add the English npm release sequences
note and its pairing
Also corrects the Chinese text where decisions moved after it was written: the
release set is every member of packages/, apps/, and vendor/ rather than a
dependency closure, because plugins are mounted by name from cordis.yml and a
closure misses runtime-required packages; the Landlock packages publish
privately with the rest; and the manifests carry repository metadata alongside
the access level.
---
...2026-08-10-npm-release-sequences.i18n.yaml | 6 +
.../2026-08-10-npm-release-sequences.md | 185 ++++++++++++++++++
.../2026-08-10-npm-release-sequences.zh.md | 14 +-
3 files changed, 199 insertions(+), 6 deletions(-)
create mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
create mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
new file mode 100644
index 0000000000..df41fb5816
--- /dev/null
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
@@ -0,0 +1,6 @@
+# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
+# side as of the last confirmed-consistent state. Both languages carry equal authority;
+# after editing either side, bring the other along and re-record with:
+# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
+2026-08-10-npm-release-sequences.md: 700d922495c539145dd470fbff84e3e211f6ba4e
+2026-08-10-npm-release-sequences.zh.md: 59761eacb1c65d4a38e721a319924bf58c5b423e
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
new file mode 100644
index 0000000000..700d922495
--- /dev/null
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
@@ -0,0 +1,185 @@
+# Agent Note: Private npm publication as three independent sequences
+
+Status: proposed
+
+English | [中文](2026-08-10-npm-release-sequences.zh.md)
+
+## Problem
+
+This repository holds three unrelated groups of publishable packages and no channel that sends any of them to a registry.
+
+`packages/*/*` and `apps/*` form the runtime surface of `@deepseek-ai/dsh`; `vendor/*` holds nine rescoped Cordis framework packages, each carrying its upstream version; `native/landlock-run/packages/*` holds Linux platform packages that already have `landlock-run-release.yml`. The three differ in version baseline, change rate, and build requirements: dsh moves with the product, vendor moves only when upstream is re-synced or a local modification changes, and native needs a musl toolchain and one build per architecture. Forcing them through one pipeline means every product release republishes the framework and the native binaries.
+
+Two hard blockers sit in the current state. All 217 workspace manifests set `private: true`, which npm refuses to publish. The subtler one is 933 hard-written `peerDependencies: "^0.0.1"` entries between sibling dsh packages: `pnpm pack` substitutes the `workspace:` protocol but leaves semver ranges alone, and `^0.0.1` means `>=0.0.1 <0.0.2` — it excludes `0.0.2`, and semver excludes prereleases from a range without a prerelease of its own, so it excludes `0.0.1-rc.1` too. Those 933 entries have never failed only because the version has never left `0.0.1`.
+
+The existing `scripts/publish-npm-baseline.ts` is a local publication script: it packs and publishes in one process, needs a human to authenticate and retry on their own machine, and excludes vendor from its release set. It cannot be the basis for CI publication, but its tarball payload validation and installed-artifact probes are verified parts.
+
+## Proposal
+
+### Three independent sequences
+
+`packages/`, `vendor/`, and `native/` each get one bump sequence and one publication, sharing no version, no trigger, and no waiting. Releasing dsh does not republish vendor; releasing vendor does not republish native.
+
+| Sequence | Members | Version baseline | Tag | Workflow |
+|---|---|---|---|---|
+| dsh | `packages/*/*` + `apps/*` (`@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend`) | one version for the whole family, `0.0.x` | `dsh-v` | `release.yml` (new) |
+| vendored framework | the nine `vendor/*` packages | each package on its own version line | `vendor--v` (one per package) | `release-vendor.yml` (new) |
+| native | `native/landlock-run/packages/*` | its own `0.0.x` | `landlock-run-v` | `landlock-run-release.yml` (unchanged) |
+
+All three publish privately to the `@deepseek-ai` scope on npmjs.com (`npm publish --access restricted`).
+
+### Versions land in the repository from a local command; CI only checks and uploads
+
+Each sequence has one `bump and commit` command: derive the target version, write it into the relevant manifests, run `pnpm install --lockfile-only`, self-check immediately, then `git add` the manifests and the lockfile and commit. The published version is therefore readable from the repository, and "which version went out" is never a question. A human creates the tag after the commit merges to master; CI never writes to the repository and needs no write permission.
+
+The dsh sequence shares one version across the family and accepts `major | minor | patch | x.y.z`. A prerelease version such as `0.0.1-rc.1` drives pack, the installed-artifact probes, and one real private publication end to end first; numbered versions like `0.0.1` and `0.0.2` follow once that passes. The dist-tag decision is the one this repository already makes in `landlock-run-release.yml`: a version with a prerelease segment publishes under `--tag next`, anything else takes `latest`.
+
+### vendor: publish what changed, and let tags be the ledger
+
+The vendored packages are decoupled from upstream by their scope but keep their own version lines. The published version is the upstream version with its prerelease segment dropped and its patch incremented:
+
+| Package | Upstream version | First published version |
+|---|---|---|
+| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
+| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
+| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
+| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
+| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
+| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
+| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
+| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
+| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
+
+Only changed packages publish, and the change judgement adds no state file: **each package has its own tag, and that tag records the commit it last published from**. For each package, bump reads the newest `vendor--v*` tag and runs `git diff ..HEAD -- vendor/`; a difference means patch+1, no difference means skip, and a missing tag means the first publication from the table above. The diff considers only paths that reach the tarball (the `files` rules in `scripts/publication-payload.ts`), so editing a comment inside a vendored package does not trigger a release.
+
+A tag is a commit pointer, not proof of publication — a tag created for a publication that then failed must be recognizable. So bump also asks the registry whether the version that tag names exists, and fails for a human to resolve when it does not, rather than guessing. Querying a private package needs authentication; the check is skipped on a machine that is not logged in and enforced in CI.
+
+The dependency ranges *inside* the nine vendored packages need no rewrite: `^1.8.1` admits `1.8.2` and `^1.0.0-rc.5` admits `1.0.1`, so patch+1 always lands inside the range.
+
+### Publication runs only on GitHub, and the registry decides what goes out
+
+Publication runs only from GitHub Actions; there is no local publication path. That makes the registry check a mandatory CI step instead of something with a bypass for an unauthenticated machine.
+
+Publish reads no tag and no manifest of "what this release includes". For each member it compares the manifest version against the registry, in three states:
+
+| State | Action |
+|---|---|
+| the registry does not have that version | publish |
+| the registry has it, and the tarball's sha512 equals the recorded `dist.integrity` | skip: this is a re-run over one artifact |
+| the registry has it, and the integrity differs | fail, reporting content changed without a version bump |
+
+The third state is the point of the rule: it catches code that changed without a version bump. The first two provide idempotence — re-running publish over one artifact republishes nothing and needs no manual selection of packages.
+
+The same rule resolves the tension between one vendor release carrying several tags and a workflow that can only run from one ref: the workflow never infers which packages to publish from the tag it ran from. The dsh sequence behaves identically with one version: the difference is either the whole set or nothing.
+
+The third state depends on a reproducible build — packing the same commit twice must produce the same bytes. That must be measured, not assumed: if `pnpm run build` embeds absolute paths or timestamps, integrity drifts while content is unchanged and the third state reports a false failure. Before this lands, pack the same commit twice in CI and compare integrity; if it is not reproducible, compare per-file content hashes inside the tarball instead and exclude the fields that drift.
+
+### Rewrite workspace-internal references to `workspace:^`, once
+
+Every reference to a workspace member becomes `workspace:^`, so `pnpm pack` substitutes a range that matches the target version:
+
+| Surface | Count | Effect |
+|---|---|---|
+| sibling dsh `peerDependencies` | 933 | `0.0.2` and `0.0.1-rc.1` both get a matching range |
+| dep / peer / devDep pointing at vendor | 105 + 221 + 218 | no dsh-side rewrite after a vendor patch+1, and no range that goes stale as vendor increments |
+
+`scripts/check-workspace-constraints.ts` currently asserts that the vendor peer and dev ranges are equal; both become `workspace:^`, so the assertion still holds but its wording changes with it.
+
+This is what makes "no dependency rewriting at publication time" possible: publication does one thing, which is packing bytes.
+
+### Release family objects
+
+The entity in this domain is a **release family**: a set of packages sharing one version baseline and tag naming that publishes as a unit. Adding a family means adding a family description and one workflow lane, not changing the core.
+
+| Object | Responsibility |
+|---|---|
+| `ReleaseFamily` | a family's identity: member discovery, version policy, tag naming, publish target. A new release family lands here |
+| `ReleaseMember` | one publishable package: directory, manifest, family, position in publish order |
+| `VersionPolicy` | where the version comes from. `SharedSemver` (dsh: one version for the family) and `PerPackageChanged` (vendor: change judged by tag, prerelease dropped, patch incremented) |
+| `ReleaseSet` | a family's members in topological order over `dependencies`, ties broken by package name for determinism |
+| `PackedBundle` | the tarballs plus `publish-order.txt` and its metadata: the only handoff between pack and publish |
+| `PublishTarget` | registry, access, dist-tag, credential source. The dist-tag derives from the version's shape |
+| `VersionInvariant` | the family's versions agree; publication runs from the family's tag; the tag version equals the package version; the target version is absent from the registry |
+| `PayloadInvariant` | tarball content validation, reusing `scripts/publication-payload.ts` |
+| `InstalledProbe` | a throwaway consumer outside the repository installs from the tarballs and drives the installed entry with plain Node: `dsh --version`, `dsh --dump-default-config`, and one TUI startup to ready and exit. Moved over from `scripts/publish-npm-baseline.ts` |
+
+### Workflow shape: pack everything at once, then publish as one set
+
+The shape comes from the reference flow (`release.yml` and `scripts/pack-release.mjs` in node-addon-require-builtin): the `pack` job walks the whole release set once, running `pnpm --dir pack --pack-destination ` per member, writes `publish-order.txt`, and uploads that directory as **one** artifact; the `publish` job downloads that artifact and runs `npm publish` per entry in `publish-order.txt`. The release set is one unit — half the packages can never reach the registry while the other half is still building.
+
+The `pack` job carries no credentials: install, verify, build, pack, installed-artifact verification, upload-artifact. The `publish` job sits behind the `npm-publish` environment for human approval, runs `setup-node` and `download-artifact` only, and **neither checks out nor builds** — it uploads the bytes pack produced. Checkout uses `fetch-depth: 0`, because the vendor change judgement reads history and tags.
+
+The environment is the only brake in the flow: pack has no credentials and can be rehearsed freely, and only publish stops for approval. GitHub needs an `NPM_TOKEN` secret (an automation token with publish rights on the scope) and an `npm-publish` environment (required reviewers, allowed tags limited to `dsh-v*`, `vendor-*`, and `landlock-run-v*`).
+
+### Pull requests run as far as pack
+
+The reference flow only has `workflow_dispatch`, so it verifies nothing on a pull request. Here `pull_request` runs the full pack: install, verify, build, pack per member, upload the tarball artifact. What it proves is that this release set still packs completely; it uses no credentials, touches no registry, and runs for pull requests from forks. The artifacts' own correctness is covered by existing tests and is not repeated at this layer.
+
+The publication path is exercised from master: `push: master` runs the same pack rehearsal as a post-merge regression, and `workflow_dispatch` with `publish: true` performs a real publication from a tag.
+
+### Repository changes
+
+| Item | Content |
+|---|---|
+| release-set manifests | drop `private: true`; add `publishConfig.access: restricted` and `repository` (`git+https://github.com/deepseek-ai/deepseek-harness.git` plus each package's `directory`) |
+| release-set boundary | every member of `packages/*/*`, `apps/*`, and `vendor/*`; no smaller selection |
+| dependency protocol | workspace-internal references become `workspace:^`, with `check-workspace-constraints.ts` updated |
+| root `AGENTS.md` | it states that vendored packages are rescoped and `private: true`; vendor now publishes, so that convention changes |
+| `vendor/README.md` | its manifest table records the upstream version, kept distinct from the version we publish |
+| the three native packages | `publishConfig.access` moves from `public` to `restricted`; they have never been published, so no anonymous install path exists to preserve |
+
+### Relationship to the existing proposal
+
+This Agent Note replaces the version scheme and the release-set boundary in [artifact-first npm baseline publication](2026-08-04-artifact-first-npm-baseline-publication.md): its `--` prerelease versions and `dev-` dist-tag are not adopted, and vendor is no longer excluded from the release set. What both agree on stays: pack and publish are separate, publish consumes only verified tarballs, and the payload and installed-artifact probes are release gates.
+
+## Alternatives considered
+
+**A `--` version.** Planned for continuous dev publication. It conflicts with keeping the published version in the repository: the version embeds a commit SHA, and writing the version back produces a new commit, so the SHA can only name the parent commit that was published and the link needs a convention to explain it. With numbered versions, a prerelease such as `0.0.1-rc.1` already covers "verify first, then release".
+
+**A `vendor/published.json` ledger recording each package's published version and commit.** This preceded the tag design. It adds a state file that must not drift from the registry. A per-package tag gives the same commit pointer, and the tag has to exist anyway, so it introduces no second copy of the state.
+
+**Event-level tags (`vendor-r1`, `vendor-r2`).** Prepared for one release event carrying several package versions. Once the registry decides what publishes, the workflow no longer infers the set from the tag, so per-package tags suffice — and each one names its own package's real version.
+
+**Putting the nine vendored packages on one `4.0.x` line.** It removes change detection, but cosmokit would jump from `1.8.1` to `4.0.1` and lose its upstream lineage; the upstream ranges inside the nine (`^1.8.1` and friends) would stop matching immediately, forcing a rewrite of the vendored manifests.
+
+**Incrementing every vendored package on every vendor release, with no change detection.** The least machinery, at the cost of new version numbers for packages whose content is byte-identical to the previous release. Tags reduce change detection to reading one tag and running one diff, which is not worth trading for inflated version numbers.
+
+**Deciding "already published" from the version alone, without comparing content.** The reference flow queries no registry at all: publish uploads each tarball and npm rejects a duplicate version. Skipping on the version alone misses code that changed without a bump, which is the only failure that quietly leaves stale bytes on the registry. The cost is a registry query and a dependency on reproducible builds.
+
+**Verifying only the packed install, with no local registry.** This is what the reference flow does: unpack the tarballs into a tree and drive it with plain Node. It bypasses version-range resolution, so in principle it cannot prove that 200-odd interdependent packages install from a registry. Running a local registry in CI to cover that layer was proposed and rejected: artifact correctness is already covered by existing tests, the publication path is exercised by the master rehearsal, and a pull request only needs to prove the release set packs.
+
+**Selecting a subset by entry closure.** Crawling `dependencies` from `@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend` yields 156 packages, 61 fewer than the whole set. But this repository's plugins are mounted by name from `cordis.yml` rather than imported: `vendor/cordis-plugin-group` and `vendor/cordis-plugin-logger-console` fall outside the dependency closure while being required at runtime. Selecting by code dependency fails as "the consumer installs it and it will not start", and it would need a standing proof that no mounted package was missed. The release set is therefore all of `packages/*/*`, `apps/*`, and `vendor/*`; under a private scope the extra packages are invisible outside the organization. `python/`, the root `examples/`, `docs/`, and `website/` are not members.
+
+**Extending `scripts/publish-npm-baseline.ts`.** It is a local publication script that packs and publishes in one process, the opposite of separating credential-free packing from protected publication. Its verified parts — payload validation and installed-artifact probes — are reused so `pnpm run duplication` does not report clones.
+
+**One workflow with a `family` input.** Two version models in one file forks the concurrency group, the tag prefix, and the rehearsal triggers into conditional expressions. One file per family is both shorter and easier to read.
+
+**Rewriting dependency ranges at publication time.** Compared with rewriting them to `workspace:^` once, the rewrite runs only in CI, a local `pnpm install` cannot show whether it is correct, and it repeats on every release.
+
+**Running bump in CI and pushing the version back.** It needs repository write permission for the workflow, and a version commit on the release branch races human commits. The reference flow leaves bump and commit to local commands and lets CI check and upload.
+
+## Acceptance criteria
+
+1. The three sequences release independently: releasing dsh modifies no vendor or native manifest, and the converse holds.
+2. `pnpm release:dsh ` performs bump and commit in one command, and the resulting commit carries the family's manifests and the lockfile and self-checks immediately.
+3. `pnpm release:vendor` increments the patch only for packages whose tarball content changed since their `vendor--v*` tag, and leaves the manifests of unchanged packages alone.
+4. `pull_request` runs the full pack and produces the tarball artifact, with no credentials and no access to a real registry, including for pull requests from forks.
+5. `push: master` runs the same pack rehearsal; a real publication can only come from `workflow_dispatch` with `publish: true` from that family's tag.
+6. Re-running publish over one artifact republishes no existing version, and when a version exists whose tarball integrity differs, publish fails and names the package.
+7. A throwaway consumer outside the repository installs `@deepseek-ai/dsh@0.0.1-rc.1` and drives `--version`, `--dump-default-config`, and one TUI startup with plain Node.
+8. Every workspace-internal reference is `workspace:^`, the packed tarballs carry no `workspace:` remnant, and no range points at a version that does not exist.
+9. No release-set member sets `private: true`, and each one sets `publishConfig.access: restricted`.
+
+## Risks
+
+**Tags drifting from the registry.** A tag created for a publication that then failed makes the next bump treat the package as published. Bump asks the registry whether the version the tag names exists and fails when it does not; on a machine that is not logged in to the private registry that check is skipped, and only the same check in CI catches it.
+
+**The change judgement depends on visible tags.** A shallow clone, or a checkout without tags, breaks the vendor judgement and degrades it to "publish everything for the first time". `fetch-depth: 0` is a precondition of the judgement, not an optimization.
+
+**`workspace:^` touches a large surface.** It rewrites 1477 dependency declarations at once. It does not change local resolution — pnpm already resolves from the workspace — but it changes the ranges that go out, and the workspace constraint gate changes with it.
+
+**The visibility cost of private packages.** After `--access restricted`, every consumer — CI, sandbox e2e, and outside users — needs scope credentials to install. The three native packages move to `restricted` as well; they have never been published, so no existing anonymous install path is cut off.
+
+**The `repository` organization differs from the one running the workflow.** The release set names `github.com/deepseek-ai/deepseek-harness` while the workflow runs in `deepseek-harness/deepseek-harness`. Token-based publication is unaffected; npm provenance (OIDC) requires the two to agree, so adopting it means either changing `repository` or publishing from the public repository.
+
+**The first publication is one large step.** Nine vendored packages and the whole dsh set publish at once, so any payload defect surfaces in a single release. Driving the complete path with `0.0.1-rc.1` first is the only mitigation, which is why numbered versions wait for that to pass.
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
index 836b5e863b..59761eacb1 100644
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
@@ -124,16 +124,16 @@ publish 不读 tag、不读任何清单,对发布集里每个包比较 manifes
| 项 | 内容 |
|---|---|
-| 发布集 manifest | 去掉 `private: true`,补 `publishConfig`(`access: restricted`、`registry`) |
-| 发布集边界 | 一份显式的族与成员清单,脚本据此发现成员并校验闭包内的包都在清单里,不猜 |
+| 发布集 manifest | 去掉 `private: true`,补 `publishConfig.access: restricted` 与 `repository`(`git+https://github.com/deepseek-ai/deepseek-harness.git` + 各自 `directory`) |
+| 发布集边界 | `packages/*/*` + `apps/*` + `vendor/*` 全部成员,不另挑子集 |
| 依赖协议 | workspace 内部引用统一 `workspace:^`,并更新 `check-workspace-constraints.ts` |
| 根 `AGENTS.md` | 现在写着 vendored 包是 rescope 过且 `private: true`,vendor 要发布,这条约定要改 |
| `vendor/README.md` | manifest 表补记上游版本,与我们发布的版本区分开 |
-| native 三包 | `publishConfig.access` 从 `public` 改 `restricted` |
+| native 三包 | `publishConfig.access` 从 `public` 改 `restricted`;它们尚未发布过,所以没有匿名安装路径要保 |
### 与既有提案的关系
-本 Note 取代 [以产物为先的 NPM 基线发布](2026-08-04-artifact-first-npm-baseline-publication.zh.md) 中的版本方案与发布集边界两部分:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不再排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。
+本 Note 取代 [以产物为先的 NPM 基线发布](2026-08-04-artifact-first-npm-baseline-publication.md) 中的版本方案与发布集边界两部分:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不再排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。
## 考虑过的替代方案
@@ -153,7 +153,7 @@ publish 不读 tag、不读任何清单,对发布集里每个包比较 manifes
**以 `scripts/publish-npm-baseline.ts` 为基础扩展。** 它是本机发布脚本,把 pack 与 publish 放在同一进程,与「无凭据 pack、受保护 publish」的分离相反。它验证过的零件(payload 校验、已安装产物探针)搬运复用,避免 `pnpm run duplication` 判重复。
-**发布全部 217 个 workspace 包。** 发布集定为入口闭包。`support/`、`examples/` 这类包进 registry 只扩大攻击面与维护面,没有消费方。
+**按入口闭包挑一部分包发。** 从 `@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend` 沿 `dependencies` 爬得到 156 个包,比全量少 61 个。但本仓的插件是 cordis.yml 按名字挂载的,不是被 import 的:`vendor/cordis-plugin-group` 与 `vendor/cordis-plugin-logger-console` 就落在依赖闭包之外,而它们是运行时必需。照代码依赖挑,漏掉的表现是消费方装完起不来,且要额外证明「没漏任何挂载项」。发布集因此取 `packages/*/*` + `apps/*` + `vendor/*` 全部;私有 scope 下多几个包不对外可见。`python/`、根 `examples/`、`docs/` 与 `website/` 不是发布集成员。
**一个 workflow 用 `family` 输入选择序列。** 两套版本模型塞进一个文件会让 concurrency group、tag 前缀、排练触发条件全部分叉成条件表达式。一族一个文件更短也更好读。
@@ -181,6 +181,8 @@ publish 不读 tag、不读任何清单,对发布集里每个包比较 manifes
**`workspace:^` 改动面大。** 一次触及 1477 处依赖声明。它不改变本机解析行为(pnpm 本来就从 workspace 解析),但会改变发布出去的范围写法,且要同步更新 workspace 约束门。
-**私有包的可见性代价。** `--access restricted` 之后,任何消费方(含 CI、沙箱 e2e、外部使用者)都必须持有 scope 凭据才能安装。native 三包从 public 转 restricted 会切断现有匿名安装路径。
+**私有包的可见性代价。** `--access restricted` 之后,任何消费方(含 CI、沙箱 e2e、外部使用者)都必须持有 scope 凭据才能安装。native 三包一并转 `restricted`;它们尚未发布过,因此没有既有的匿名安装路径被切断。
+
+**`repository` 指向的组织与运行 workflow 的组织不一致。** 发布集写的是 `github.com/deepseek-ai/deepseek-harness`,而 workflow 跑在 `deepseek-harness/deepseek-harness`。用 token 发布不受影响;一旦改用 npm provenance(OIDC),npm 会要求二者一致,届时要么改 `repository`,要么从公开仓库发布。
**首发一次性放大。** vendor 首发九包、dsh 首发全闭包,任何 payload 缺陷都会在同一次发布里暴露。用 `0.0.1-rc.1` 先跑一遍完整链路是唯一的缓解手段,正式版本号留给验证通过之后。
From d4128ae57f8c5181500aeaa7d81e097310980e4a Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:03:15 +0800
Subject: [PATCH 06/15] chore(release): satisfy knip for the release scripts
The release scripts spawn tar to read a packed tarball, and resolving a family
by id is the only entry point into the family list.
---
knip.json | 1 +
scripts/release/families.ts | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/knip.json b/knip.json
index 2f755dbb5f..44f45da1ad 100644
--- a/knip.json
+++ b/knip.json
@@ -9,6 +9,7 @@
"musl-gcc",
"python3",
"sandbox-exec",
+ "tar",
"taskkill",
"where.exe"
],
diff --git a/scripts/release/families.ts b/scripts/release/families.ts
index e989e54525..b02c21cb1e 100644
--- a/scripts/release/families.ts
+++ b/scripts/release/families.ts
@@ -253,7 +253,7 @@ class VendorFamily extends ReleaseFamily {
}
/** Every release family this module owns, in workflow order. */
-export function releaseFamilies(): readonly ReleaseFamily[] {
+function releaseFamilies(): readonly ReleaseFamily[] {
return [new DshFamily(), new VendorFamily()]
}
From 2c85c484d3b205043e73620dc9e16c0adfb38813 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:16:45 +0800
Subject: [PATCH 07/15] build(release): reference workspace members through the
workspace protocol
1504 hand-written ranges pointing at workspace members become workspace:^, so
pnpm pack substitutes each member's real version at publication: sibling
peerDependencies follow the family version instead of being pinned at ^0.0.1,
and a reference to a vendored package follows that package's own line. Without
this, publishing 0.0.2 ships peer ranges naming a version that does not exist,
and 0.0.1-rc.1 does not satisfy ^0.0.1 either.
It also retires ranges that had gone stale against the workspace: ^4.0.0-rc.6
for a 4.0.0-rc.7 checkout, ^3.17.0 for schemastery 3.18.0.
workspace:* stays where an exact published version is the point, which is how
the Landlock entry pins its platform packages.
A workspace constraint now requires the protocol, so a new package cannot
reintroduce a hand-written range. The same constraint caught packages/boot/cmdline
arriving on master without the publishable trio, which this change completes.
---
apps/cli/package.json | 2 +-
packages/acp/acp/package.json | 14 +-
packages/api/gateway/package.json | 10 +-
packages/api/remotes/package.json | 16 +-
.../attachment/attachment-local/package.json | 12 +-
packages/attachment/attachment/package.json | 8 +-
packages/bash/bash-env/package.json | 16 +-
packages/bash/bash-local/package.json | 14 +-
packages/bash/bash-sandbox/package.json | 14 +-
packages/bash/bash/package.json | 10 +-
packages/bash/pwsh-local/package.json | 14 +-
packages/bash/pwsh-sandbox/package.json | 14 +-
packages/bash/tool-bash/package.json | 28 +-
packages/bash/tool-pwsh/package.json | 28 +-
packages/boot/app-boot/package.json | 20 +-
packages/boot/cmdline/package.json | 17 +-
packages/bundle/base/package.json | 6 +-
packages/bundle/headless/package.json | 18 +-
packages/bundle/web-app/package.json | 14 +-
packages/client/connection/package.json | 10 +-
packages/client/hmr/package.json | 14 +-
packages/client/locale/package.json | 16 +-
packages/client/modules/package.json | 6 +-
packages/client/runtime/package.json | 12 +-
packages/client/schema-form/package.json | 8 +-
packages/client/test-runtime/package.json | 14 +-
packages/client/ui-agent-preset/package.json | 22 +-
packages/client/ui-command/package.json | 20 +-
packages/client/ui-conversation/package.json | 36 +-
packages/client/ui-deliverables/package.json | 14 +-
packages/client/ui-goal/package.json | 20 +-
packages/client/ui-layout/package.json | 12 +-
packages/client/ui-model/package.json | 22 +-
packages/client/ui-models/package.json | 18 +-
packages/client/ui-permission/package.json | 24 +-
packages/client/ui-plan/package.json | 20 +-
packages/client/ui-primitives/package.json | 6 +-
packages/client/ui-question/package.json | 8 +-
.../client/ui-settings-general/package.json | 22 +-
packages/client/ui-settings/package.json | 12 +-
packages/client/ui-sidebar/package.json | 14 +-
packages/client/ui-skill/package.json | 20 +-
packages/client/ui-slash/package.json | 14 +-
packages/client/ui-slots/package.json | 6 +-
packages/client/ui-subagent/package.json | 22 +-
packages/client/ui-theme/package.json | 18 +-
packages/client/ui-tool/package.json | 16 +-
packages/client/ui-trajectory/package.json | 10 +-
packages/client/ui-workspace/package.json | 14 +-
packages/client/web-react/package.json | 6 +-
packages/client/web/package.json | 8 +-
.../code-runtime-worker/package.json | 14 +-
.../code-runtime/code-runtime/package.json | 6 +-
packages/compact/command-compact/package.json | 10 +-
packages/compact/compact-basic/package.json | 22 +-
.../compact-tool-result-prune/package.json | 16 +-
packages/compact/compact/package.json | 14 +-
.../context/session-reference/package.json | 20 +-
packages/context/time-context/package.json | 12 +-
packages/context/tmux-context/package.json | 14 +-
.../context/workspace-context/package.json | 20 +-
.../core/agent-default-model/package.json | 14 +-
packages/core/agent-loop/package.json | 22 +-
packages/core/agent-tool-mode/package.json | 10 +-
packages/core/agent/package.json | 16 +-
packages/core/scope/package.json | 6 +-
packages/core/session/package.json | 14 +-
packages/core/system-prompt/package.json | 12 +-
packages/core/tools/package.json | 22 +-
.../credentials-local/package.json | 16 +-
packages/credentials/credentials/package.json | 8 +-
packages/e2b/e2b/package.json | 8 +-
packages/e2b/fs-e2b/package.json | 10 +-
packages/e2b/subprocess-e2b/package.json | 14 +-
packages/examples/acp-demo/package.json | 32 +-
.../examples/agent-spine-demo/package.json | 52 +-
packages/examples/jsonrpc-demo/package.json | 6 +-
.../feedback/command-feedback/package.json | 12 +-
packages/fs/fs-local/package.json | 10 +-
packages/fs/fs-policy/package.json | 8 +-
packages/fs/fs-sandbox/package.json | 14 +-
packages/fs/fs/package.json | 12 +-
packages/fs/tool-fs-search/package.json | 24 +-
packages/fs/tool-fs/package.json | 24 +-
.../fs/tool-str-replace-editor/package.json | 16 +-
packages/goal/command-goal/package.json | 10 +-
packages/goal/goal-session/package.json | 14 +-
packages/goal/goal/package.json | 22 +-
packages/goal/tool-goal/package.json | 20 +-
packages/guard/repeat-tool-guard/package.json | 12 +-
packages/guard/timeout-policy/package.json | 12 +-
packages/hooks/hook-protocol/package.json | 10 +-
packages/hooks/hooks-claude/package.json | 22 +-
packages/hooks/hooks-codex/package.json | 20 +-
packages/host/apiproxy/package.json | 10 +-
.../host/directory-picker-auto/package.json | 14 +-
.../host/directory-picker-browse/package.json | 18 +-
.../host/directory-picker-native/package.json | 12 +-
packages/host/directory-picker/package.json | 6 +-
packages/host/frontend-static/package.json | 10 +-
packages/host/webserver/package.json | 8 +-
packages/interaction/commands/package.json | 14 +-
packages/interaction/permission/package.json | 24 +-
.../interaction/tool-ask-user/package.json | 12 +-
.../interaction/user-approval/package.json | 20 +-
.../interaction/user-interaction/package.json | 10 +-
packages/llm/llm-deepseek/package.json | 18 +-
packages/llm/llm-pi-ai/package.json | 20 +-
packages/llm/llm-retry/package.json | 18 +-
packages/llm/llm/package.json | 14 +-
packages/llm/token-meter/package.json | 16 +-
packages/lsp/lsp-local/package.json | 20 +-
packages/lsp/lsp/package.json | 10 +-
packages/lsp/tool-lsp/package.json | 18 +-
packages/mcp/mcp-client/package.json | 14 +-
packages/plan/plan-mode/package.json | 22 +-
packages/preset/agent-presets/package.json | 22 +-
packages/preset/persona/package.json | 10 +-
packages/pty/pty-local/package.json | 20 +-
packages/pty/pty/package.json | 10 +-
.../pty/tool-bash-persistent/package.json | 16 +-
packages/pty/tool-pty/package.json | 22 +-
packages/sandbox/sandbox-local/package.json | 14 +-
packages/sandbox/sandbox-policy/package.json | 16 +-
.../sandbox/sandbox-windows-acl/package.json | 6 +-
packages/sandbox/sandbox/package.json | 10 +-
packages/scaffold/client/package.json | 12 +-
packages/scaffold/create-sdk/package.json | 6 +-
packages/scaffold/helper/package.json | 10 +-
packages/scaffold/protocol/package.json | 12 +-
packages/scaffold/scripts/package.json | 6 +-
packages/scaffold/server/package.json | 22 +-
packages/scaffold/telemetry/package.json | 10 +-
.../tool-cordis/package.json | 14 +-
.../session-query-sqlite/package.json | 14 +-
.../session-query/session-query/package.json | 16 +-
.../tool-session-query/package.json | 20 +-
.../session-checkpoint-policy/package.json | 16 +-
.../session-persistence-jsonl/package.json | 12 +-
.../session-persistence-sqlite/package.json | 12 +-
.../session/session-persistence/package.json | 12 +-
.../session-projection-cache/package.json | 16 +-
.../session/session-projection/package.json | 8 +-
.../session-telemetry-otel/package.json | 18 +-
.../session/session-telemetry/package.json | 10 +-
.../package.json | 16 +-
.../package.json | 16 +-
.../session/session-title-llm/package.json | 16 +-
packages/session/session-title/package.json | 16 +-
packages/session/user-id/package.json | 10 +-
packages/settings/settings-local/package.json | 14 +-
packages/settings/settings/package.json | 12 +-
packages/skill/skill-badge/package.json | 8 +-
packages/skill/skill-local/package.json | 14 +-
packages/skill/skill/package.json | 12 +-
packages/skill/tool-skill/package.json | 16 +-
packages/spill/spill-local/package.json | 10 +-
packages/spill/spill-policy/package.json | 18 +-
packages/spill/spill/package.json | 12 +-
packages/storage/storage-domain/package.json | 10 +-
packages/storage/storage-json/package.json | 10 +-
packages/storage/storage-sqlite/package.json | 10 +-
packages/storage/storage/package.json | 6 +-
packages/subagent/subagent-acp/package.json | 22 +-
.../subagent-claude-code/package.json | 18 +-
packages/subagent/subagent-codex/package.json | 22 +-
.../subagent/subagent-dsh-sdk/package.json | 22 +-
packages/subagent/subagent-fork/package.json | 18 +-
.../subagent/subagent-inprocess/package.json | 22 +-
packages/subagent/subagent-spawn/package.json | 14 +-
packages/subagent/subagent/package.json | 34 +-
.../tool-subagent-control/package.json | 14 +-
.../tool-subagent-report/package.json | 14 +-
packages/subagent/tool-subagent/package.json | 20 +-
.../subprocess/subprocess-local/package.json | 10 +-
packages/subprocess/subprocess/package.json | 6 +-
packages/support/acp-snapshot/package.json | 8 +-
.../support/agent-loop-testkit/package.json | 16 +-
packages/support/invariants/package.json | 6 +-
packages/support/llm-mock-server/package.json | 6 +-
packages/support/llm-replay/package.json | 12 +-
packages/support/loader-smoke/package.json | 12 +-
packages/tasks/tasks-local/package.json | 14 +-
packages/tasks/tasks/package.json | 12 +-
packages/tasks/tool-tasks/package.json | 20 +-
packages/todo/tool-todo/package.json | 16 +-
packages/typert/generator/package.json | 6 +-
packages/typert/loader/package.json | 12 +-
packages/typert/registry/package.json | 6 +-
packages/typert/type-meta/package.json | 6 +-
packages/util/atomic-write/package.json | 6 +-
packages/util/brand/package.json | 6 +-
packages/util/environment/package.json | 6 +-
packages/util/native-command/package.json | 6 +-
packages/util/paths/package.json | 6 +-
packages/util/retention/package.json | 6 +-
packages/util/timeout/package.json | 6 +-
packages/web/tool-web/package.json | 16 +-
packages/web/web-fetch-local/package.json | 12 +-
packages/web/web-search-deepseek/package.json | 18 +-
packages/web/web-search-exa/package.json | 12 +-
.../web/web-search-perplexity/package.json | 12 +-
packages/web/web/package.json | 10 +-
packages/workflow/tool-ralph/package.json | 20 +-
packages/workflow/tool-workflow/package.json | 18 +-
.../workflow-workerthread/package.json | 22 +-
packages/workflow/workflow/package.json | 14 +-
packages/workspace/workspace/package.json | 16 +-
pnpm-lock.yaml | 460 +++++++++---------
scripts/check-workspace-constraints.ts | 33 +-
vendor/cordis/package.json | 6 +-
vendor/group/package.json | 4 +-
vendor/hmr/package.json | 8 +-
vendor/include/package.json | 6 +-
vendor/loader/package.json | 4 +-
vendor/logger-console/package.json | 6 +-
vendor/schemastery/package.json | 2 +-
vendor/timer/package.json | 4 +-
218 files changed, 1774 insertions(+), 1736 deletions(-)
diff --git a/apps/cli/package.json b/apps/cli/package.json
index 3155032205..71f64a0f41 100644
--- a/apps/cli/package.json
+++ b/apps/cli/package.json
@@ -72,7 +72,7 @@
"@deepseek-ai/dsh-workflow-workerthread": "workspace:^",
"@deepseek-ai/dsh-workspace-context": "workspace:^",
"commander": "^15.0.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"js-yaml": "^4.2.0",
"node-addon-require-builtin": "^0.1.4"
},
diff --git a/packages/acp/acp/package.json b/packages/acp/acp/package.json
index c5564b0b2f..5293a94e5d 100644
--- a/packages/acp/acp/package.json
+++ b/packages/acp/acp/package.json
@@ -33,14 +33,14 @@
"license": "BSD-3-Clause",
"dependencies": {
"@agentclientprotocol/sdk": "0.25.1",
- "@deepseek-ai/schemastery": "^3.17.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -51,6 +51,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/api/gateway/package.json b/packages/api/gateway/package.json
index 10a315302a..bd90451fdc 100644
--- a/packages/api/gateway/package.json
+++ b/packages/api/gateway/package.json
@@ -59,17 +59,17 @@
"@deepseek-ai/dsh-type-meta": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-typert-registry": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-typert-registry": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-client-connection": "workspace:^",
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"zod": "^4.4.3"
}
}
diff --git a/packages/api/remotes/package.json b/packages/api/remotes/package.json
index 8a31f138e3..0a96fb2239 100644
--- a/packages/api/remotes/package.json
+++ b/packages/api/remotes/package.json
@@ -53,13 +53,13 @@
"@deepseek-ai/dsh-type-meta": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-typert-registry": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-typert-registry": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -68,6 +68,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/attachment/attachment-local/package.json b/packages/attachment/attachment-local/package.json
index 4219c40d30..c8804218f1 100644
--- a/packages/attachment/attachment-local/package.json
+++ b/packages/attachment/attachment-local/package.json
@@ -22,19 +22,19 @@
"files": ["lib/index.js", "lib/invariant.js", "lib/types/**/*.d.ts"],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-attachment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-attachment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"sharp": "^0.35.3"
},
"devDependencies": {
"@deepseek-ai/dsh-attachment": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/attachment/attachment/package.json b/packages/attachment/attachment/package.json
index ad212f3933..9d58dccdf6 100644
--- a/packages/attachment/attachment/package.json
+++ b/packages/attachment/attachment/package.json
@@ -22,13 +22,13 @@
"files": ["lib/index.js", "lib/invariant.js", "lib/types/**/*.d.ts"],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/bash-env/package.json b/packages/bash/bash-env/package.json
index 8983029c0d..cde53b2bd1 100644
--- a/packages/bash/bash-env/package.json
+++ b/packages/bash/bash-env/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-paths": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/bash-local/package.json b/packages/bash/bash-local/package.json
index f147b01f72..85eb6f2655 100644
--- a/packages/bash/bash-local/package.json
+++ b/packages/bash/bash-local/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-bash": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/bash-sandbox/package.json b/packages/bash/bash-sandbox/package.json
index b1d1b4a13a..e77dba32e5 100644
--- a/packages/bash/bash-sandbox/package.json
+++ b/packages/bash/bash-sandbox/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-bash-local": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-bash-local": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-bash": "workspace:^",
@@ -47,7 +47,7 @@
"@deepseek-ai/dsh-sandbox": "workspace:^",
"@deepseek-ai/dsh-sandbox-local": "workspace:^",
"@deepseek-ai/dsh-sandbox-policy": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"@deepseek-ai/node-addon-landlock-run": "workspace:*"
}
}
diff --git a/packages/bash/bash/package.json b/packages/bash/bash/package.json
index 320f077f28..8d22d657fe 100644
--- a/packages/bash/bash/package.json
+++ b/packages/bash/bash/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-sandbox": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/pwsh-local/package.json b/packages/bash/pwsh-local/package.json
index a3b5d6aa7d..5e58a5cd3f 100644
--- a/packages/bash/pwsh-local/package.json
+++ b/packages/bash/pwsh-local/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-bash": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/pwsh-sandbox/package.json b/packages/bash/pwsh-sandbox/package.json
index 727496274b..12669329c4 100644
--- a/packages/bash/pwsh-sandbox/package.json
+++ b/packages/bash/pwsh-sandbox/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-pwsh-local": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-pwsh-local": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-bash": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-sandbox-local": "workspace:^",
"@deepseek-ai/dsh-sandbox-policy": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/tool-bash/package.json b/packages/bash/tool-bash/package.json
index 6440e990b0..a3d878e8e2 100644
--- a/packages/bash/tool-bash/package.json
+++ b/packages/bash/tool-bash/package.json
@@ -32,21 +32,21 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-bash-env": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-bash-env": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -68,6 +68,6 @@
"@deepseek-ai/dsh-tool-tasks": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bash/tool-pwsh/package.json b/packages/bash/tool-pwsh/package.json
index b06df9a992..5188891aea 100644
--- a/packages/bash/tool-pwsh/package.json
+++ b/packages/bash/tool-pwsh/package.json
@@ -32,21 +32,21 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-bash-env": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-bash-env": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -65,6 +65,6 @@
"@deepseek-ai/dsh-tool-tasks": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/boot/app-boot/package.json b/packages/boot/app-boot/package.json
index f47611040d..4139847364 100644
--- a/packages/boot/app-boot/package.json
+++ b/packages/boot/app-boot/package.json
@@ -35,15 +35,15 @@
"js-yaml": "^4.2.0"
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-group": "^1.0.0",
- "@deepseek-ai/cordis-plugin-hmr": "^1.0.15",
- "@deepseek-ai/cordis-plugin-include": "^1.0.4",
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-group": "workspace:^",
+ "@deepseek-ai/cordis-plugin-hmr": "workspace:^",
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/cordis-plugin-hmr": {
@@ -61,6 +61,6 @@
"@deepseek-ai/dsh-paths": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@types/js-yaml": "^4.0.9",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/boot/cmdline/package.json b/packages/boot/cmdline/package.json
index 28647bfc24..131c254af0 100644
--- a/packages/boot/cmdline/package.json
+++ b/packages/boot/cmdline/package.json
@@ -2,7 +2,14 @@
"name": "@deepseek-ai/dsh-cmdline",
"description": "Immutable command-line handoff from a dsh launcher to any app plugin that injects cmdlineArgs",
"version": "0.0.1",
- "private": true,
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
+ "directory": "packages/boot/cmdline"
+ },
"type": "module",
"main": "lib/index.js",
"types": "lib/types/index.d.ts",
@@ -25,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"commander": "^15.0.0",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bundle/base/package.json b/packages/bundle/base/package.json
index c2547f9aae..dc54c75012 100644
--- a/packages/bundle/base/package.json
+++ b/packages/bundle/base/package.json
@@ -122,11 +122,11 @@
"@deepseek-ai/dsh-workspace-context": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bundle/headless/package.json b/packages/bundle/headless/package.json
index 4bdd04efd9..7778b7be8b 100644
--- a/packages/bundle/headless/package.json
+++ b/packages/bundle/headless/package.json
@@ -46,17 +46,17 @@
"dependencies": {
"@deepseek-ai/dsh-cmdline": "workspace:^",
"@deepseek-ai/dsh-code-runtime-worker": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"commander": "^15.0.0"
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-agent-default-model": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-agent-default-model": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -65,6 +65,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/bundle/web-app/package.json b/packages/bundle/web-app/package.json
index c9ec594f28..cde4fa1013 100644
--- a/packages/bundle/web-app/package.json
+++ b/packages/bundle/web-app/package.json
@@ -87,21 +87,21 @@
"@deepseek-ai/dsh-storage-domain": "workspace:^",
"@deepseek-ai/dsh-storage-json": "workspace:^",
"@deepseek-ai/dsh-workspace": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"commander": "^15.0.0"
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-bash-env": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-bash-env": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-bash-env": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/client/connection/package.json b/packages/client/connection/package.json
index f03afb8eda..1b9481db93 100644
--- a/packages/client/connection/package.json
+++ b/packages/client/connection/package.json
@@ -44,7 +44,7 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"ws": "^8.21.0"
},
"files": [
@@ -54,14 +54,14 @@
"lib/types/**/*.d.ts"
],
"peerDependencies": {
- "@deepseek-ai/dsh-host-webserver": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-host-webserver": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/ws": "^8.18.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/client/hmr/package.json b/packages/client/hmr/package.json
index 82d8cb18e1..3dad86d07a 100644
--- a/packages/client/hmr/package.json
+++ b/packages/client/hmr/package.json
@@ -38,21 +38,21 @@
},
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-client-modules": "^0.0.1",
- "@deepseek-ai/dsh-host-webserver": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-client-modules": "workspace:^",
+ "@deepseek-ai/dsh-host-webserver": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-client-modules": "workspace:^",
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/locale/package.json b/packages/client/locale/package.json
index f845feacc9..d44e8ee529 100644
--- a/packages/client/locale/package.json
+++ b/packages/client/locale/package.json
@@ -41,12 +41,12 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -55,12 +55,12 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"dependencies": {
"@deepseek-ai/dsh-settings": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/modules/package.json b/packages/client/modules/package.json
index e980619017..e93cd2951d 100644
--- a/packages/client/modules/package.json
+++ b/packages/client/modules/package.json
@@ -45,7 +45,7 @@
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
@@ -54,7 +54,7 @@
"lib/types/**/*.d.ts"
],
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/client/runtime/package.json b/packages/client/runtime/package.json
index 168e916223..87e259f64c 100644
--- a/packages/client/runtime/package.json
+++ b/packages/client/runtime/package.json
@@ -60,10 +60,10 @@
"zustand": "~4.4.7"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-type-meta": "^0.0.1",
- "@deepseek-ai/dsh-typert-registry": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-type-meta": "workspace:^",
+ "@deepseek-ai/dsh-typert-registry": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -71,8 +71,8 @@
"@deepseek-ai/dsh-type-meta": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/schema-form/package.json b/packages/client/schema-form/package.json
index 30e0c24353..35d80feba6 100644
--- a/packages/client/schema-form/package.json
+++ b/packages/client/schema-form/package.json
@@ -27,15 +27,15 @@
},
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/test-runtime/package.json b/packages/client/test-runtime/package.json
index 1efc9228d4..54088ded59 100644
--- a/packages/client/test-runtime/package.json
+++ b/packages/client/test-runtime/package.json
@@ -32,12 +32,12 @@
"vitest": "^4.1.8"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-web-react": "^0.0.1",
- "@deepseek-ai/dsh-host-apiproxy": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-web-react": "workspace:^",
+ "@deepseek-ai/dsh-host-apiproxy": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
@@ -49,7 +49,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
"@types/react-dom": "~18.3.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-agent-preset/package.json b/packages/client/ui-agent-preset/package.json
index 90b6fc4fa8..77133dac21 100644
--- a/packages/client/ui-agent-preset/package.json
+++ b/packages/client/ui-agent-preset/package.json
@@ -47,16 +47,16 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-settings": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-web-react": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-settings": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-web-react": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -71,7 +71,7 @@
"@deepseek-ai/dsh-client-web-react": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-command/package.json b/packages/client/ui-command/package.json
index 513f6cf8a4..d6b015eb96 100644
--- a/packages/client/ui-command/package.json
+++ b/packages/client/ui-command/package.json
@@ -49,15 +49,15 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -71,7 +71,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-conversation/package.json b/packages/client/ui-conversation/package.json
index bb93c82608..f3dd749dde 100644
--- a/packages/client/ui-conversation/package.json
+++ b/packages/client/ui-conversation/package.json
@@ -48,25 +48,25 @@
"dependencies": {
"@deepseek-ai/dsh-settings": "workspace:^",
"clsx": "^2.0.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-attachment": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm-retry": "^0.0.1",
- "@deepseek-ai/dsh-token-meter": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-attachment": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm-retry": "workspace:^",
+ "@deepseek-ai/dsh-token-meter": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -93,7 +93,7 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-tool-todo": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-deliverables/package.json b/packages/client/ui-deliverables/package.json
index e60fc8262b..a5a82a833f 100644
--- a/packages/client/ui-deliverables/package.json
+++ b/packages/client/ui-deliverables/package.json
@@ -48,12 +48,12 @@
"react": "^18.2.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-client-locale": "workspace:^",
@@ -63,7 +63,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/ui-goal/package.json b/packages/client/ui-goal/package.json
index 648fb0e609..d1ed34e43c 100644
--- a/packages/client/ui-goal/package.json
+++ b/packages/client/ui-goal/package.json
@@ -46,15 +46,15 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-api-remotes": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-api-remotes": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -69,7 +69,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@testing-library/react": "^16.1.0",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-layout/package.json b/packages/client/ui-layout/package.json
index 26c056f602..879100dbe6 100644
--- a/packages/client/ui-layout/package.json
+++ b/packages/client/ui-layout/package.json
@@ -44,11 +44,11 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-theme": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-theme": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -58,7 +58,7 @@
"@deepseek-ai/dsh-client-ui-theme": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-model/package.json b/packages/client/ui-model/package.json
index d2ca1b3318..b8f411cdc7 100644
--- a/packages/client/ui-model/package.json
+++ b/packages/client/ui-model/package.json
@@ -45,17 +45,17 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-command": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-command": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
"clsx": "^2.1.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -70,7 +70,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
"clsx": "^2.1.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-models/package.json b/packages/client/ui-models/package.json
index 8eaac3bccf..0a7b6bbae8 100644
--- a/packages/client/ui-models/package.json
+++ b/packages/client/ui-models/package.json
@@ -45,14 +45,14 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-schema-form": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-web-react": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-schema-form": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-web-react": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -67,7 +67,7 @@
"@deepseek-ai/dsh-client-web-react": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-permission/package.json b/packages/client/ui-permission/package.json
index 12f1a25509..880666ecad 100644
--- a/packages/client/ui-permission/package.json
+++ b/packages/client/ui-permission/package.json
@@ -46,17 +46,17 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-schema-form": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-command": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-permission": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-schema-form": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-command": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-permission": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -72,7 +72,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-permission": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-plan/package.json b/packages/client/ui-plan/package.json
index 23d03b88d3..52d8e9fffd 100644
--- a/packages/client/ui-plan/package.json
+++ b/packages/client/ui-plan/package.json
@@ -45,15 +45,15 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-plan-mode": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-plan-mode": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -68,7 +68,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-plan-mode": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-primitives/package.json b/packages/client/ui-primitives/package.json
index dc0c21d31f..732321b932 100644
--- a/packages/client/ui-primitives/package.json
+++ b/packages/client/ui-primitives/package.json
@@ -52,7 +52,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
"@types/react-dom": "~18.3.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
@@ -60,7 +60,7 @@
"lib/types/**/*.d.ts"
],
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/client/ui-question/package.json b/packages/client/ui-question/package.json
index 172f4fb4f8..3153f8fd69 100644
--- a/packages/client/ui-question/package.json
+++ b/packages/client/ui-question/package.json
@@ -53,9 +53,9 @@
"react": "^18.2.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -65,7 +65,7 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-interaction": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/ui-settings-general/package.json b/packages/client/ui-settings-general/package.json
index b67d12a709..8eee8eab62 100644
--- a/packages/client/ui-settings-general/package.json
+++ b/packages/client/ui-settings-general/package.json
@@ -47,18 +47,18 @@
"license": "BSD-3-Clause",
"dependencies": {
"@deepseek-ai/dsh-settings": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-settings": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-web-react": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-settings": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-web-react": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -72,7 +72,7 @@
"@deepseek-ai/dsh-client-web-react": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-settings/package.json b/packages/client/ui-settings/package.json
index a65466e2c2..37c1e1607c 100644
--- a/packages/client/ui-settings/package.json
+++ b/packages/client/ui-settings/package.json
@@ -47,11 +47,11 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
@@ -64,7 +64,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react-dom": "~18.3.0",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-sidebar/package.json b/packages/client/ui-sidebar/package.json
index c4022d04d0..bffbbfd54c 100644
--- a/packages/client/ui-sidebar/package.json
+++ b/packages/client/ui-sidebar/package.json
@@ -48,12 +48,12 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -65,7 +65,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-skill/package.json b/packages/client/ui-skill/package.json
index d87425625a..c1ee7720bb 100644
--- a/packages/client/ui-skill/package.json
+++ b/packages/client/ui-skill/package.json
@@ -46,15 +46,15 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-tool": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-tool": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -69,7 +69,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@testing-library/react": "^16.1.0",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-slash/package.json b/packages/client/ui-slash/package.json
index 46de2a5951..00b5bd1f9a 100644
--- a/packages/client/ui-slash/package.json
+++ b/packages/client/ui-slash/package.json
@@ -47,12 +47,12 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -63,7 +63,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/ui-slots/package.json b/packages/client/ui-slots/package.json
index c9825022e8..54b3d64925 100644
--- a/packages/client/ui-slots/package.json
+++ b/packages/client/ui-slots/package.json
@@ -29,7 +29,7 @@
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
@@ -37,7 +37,7 @@
"lib/types/**/*.d.ts"
],
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/client/ui-subagent/package.json b/packages/client/ui-subagent/package.json
index bbae62edb6..997bfadcf6 100644
--- a/packages/client/ui-subagent/package.json
+++ b/packages/client/ui-subagent/package.json
@@ -50,16 +50,16 @@
"react": "^18.2.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slash": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-token-meter": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-token-meter": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-client-locale": "workspace:^",
@@ -73,7 +73,7 @@
"@deepseek-ai/dsh-subagent": "workspace:^",
"@deepseek-ai/dsh-token-meter": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/ui-theme/package.json b/packages/client/ui-theme/package.json
index 1ad1274427..8d22586ffd 100644
--- a/packages/client/ui-theme/package.json
+++ b/packages/client/ui-theme/package.json
@@ -43,13 +43,13 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-client-connection": "^0.0.1",
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-connection": "workspace:^",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -60,7 +60,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
@@ -77,6 +77,6 @@
"dependencies": {
"@deepseek-ai/dsh-settings": "workspace:^",
"clsx": "^2.0.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
}
}
diff --git a/packages/client/ui-tool/package.json b/packages/client/ui-tool/package.json
index eb3b9366ba..c0465db10c 100644
--- a/packages/client/ui-tool/package.json
+++ b/packages/client/ui-tool/package.json
@@ -48,13 +48,13 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-conversation": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -69,7 +69,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@testing-library/react": "^16.1.0",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-trajectory/package.json b/packages/client/ui-trajectory/package.json
index 4aef2a424b..c50633c2c1 100644
--- a/packages/client/ui-trajectory/package.json
+++ b/packages/client/ui-trajectory/package.json
@@ -48,10 +48,10 @@
"diff": "^9.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
@@ -63,7 +63,7 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
"@types/react-dom": "~18.3.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/packages/client/ui-workspace/package.json b/packages/client/ui-workspace/package.json
index 7b4ad80acf..206e037bc1 100644
--- a/packages/client/ui-workspace/package.json
+++ b/packages/client/ui-workspace/package.json
@@ -49,12 +49,12 @@
"clsx": "^2.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -67,7 +67,7 @@
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"files": [
diff --git a/packages/client/web-react/package.json b/packages/client/web-react/package.json
index 3f65de4ad8..1fe9231134 100644
--- a/packages/client/web-react/package.json
+++ b/packages/client/web-react/package.json
@@ -32,13 +32,13 @@
"use-sync-external-store": "1.2.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/client/web/package.json b/packages/client/web/package.json
index e4a1e60136..eff725c83d 100644
--- a/packages/client/web/package.json
+++ b/packages/client/web/package.json
@@ -43,13 +43,13 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
"@types/react-dom": "~18.3.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"typescript": "^6.0.3"
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"files": [
"lib/index.js",
diff --git a/packages/code-runtime/code-runtime-worker/package.json b/packages/code-runtime/code-runtime-worker/package.json
index 55e2cbc398..bacaca170a 100644
--- a/packages/code-runtime/code-runtime-worker/package.json
+++ b/packages/code-runtime/code-runtime-worker/package.json
@@ -36,20 +36,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-code-runtime": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-code-runtime": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-code-runtime": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/code-runtime/code-runtime/package.json b/packages/code-runtime/code-runtime/package.json
index 57b85721a3..89db4e6d88 100644
--- a/packages/code-runtime/code-runtime/package.json
+++ b/packages/code-runtime/code-runtime/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/compact/command-compact/package.json b/packages/compact/command-compact/package.json
index ff64dba2a6..3b36536a34 100644
--- a/packages/compact/command-compact/package.json
+++ b/packages/compact/command-compact/package.json
@@ -32,10 +32,10 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -46,6 +46,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/compact/compact-basic/package.json b/packages/compact/compact-basic/package.json
index 1f6c2b402e..941e3aa32d 100644
--- a/packages/compact/compact-basic/package.json
+++ b/packages/compact/compact-basic/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-token-meter": "^0.0.1",
- "@deepseek-ai/dsh-compact-tool-result-prune": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-token-meter": "workspace:^",
+ "@deepseek-ai/dsh-compact-tool-result-prune": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/dsh-compact-tool-result-prune": {
@@ -48,7 +48,7 @@
}
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -65,6 +65,6 @@
"@deepseek-ai/dsh-token-meter": "workspace:^",
"@deepseek-ai/dsh-compact-tool-result-prune": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/compact/compact-tool-result-prune/package.json b/packages/compact/compact-tool-result-prune/package.json
index 45eab7b091..21951f5750 100644
--- a/packages/compact/compact-tool-result-prune/package.json
+++ b/packages/compact/compact-tool-result-prune/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-token-meter": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-token-meter": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-token-meter": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/compact/compact/package.json b/packages/compact/compact/package.json
index abdcd8a090..18879ad5b5 100644
--- a/packages/compact/compact/package.json
+++ b/packages/compact/compact/package.json
@@ -41,12 +41,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/context/session-reference/package.json b/packages/context/session-reference/package.json
index 900ec038e3..4c7c7af3f8 100644
--- a/packages/context/session-reference/package.json
+++ b/packages/context/session-reference/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-retention": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-query": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-retention": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-query": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -52,6 +52,6 @@
"@deepseek-ai/dsh-retention": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-query": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/context/time-context/package.json b/packages/context/time-context/package.json
index 08bb776c47..6956bf48e0 100644
--- a/packages/context/time-context/package.json
+++ b/packages/context/time-context/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/context/tmux-context/package.json b/packages/context/tmux-context/package.json
index 6cff253fac..241661250f 100644
--- a/packages/context/tmux-context/package.json
+++ b/packages/context/tmux-context/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/context/workspace-context/package.json b/packages/context/workspace-context/package.json
index 843d038dc5..236009f90d 100644
--- a/packages/context/workspace-context/package.json
+++ b/packages/context/workspace-context/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tool-fs": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/agent-default-model/package.json b/packages/core/agent-default-model/package.json
index 8a6341208e..8826a9fcc4 100644
--- a/packages/core/agent-default-model/package.json
+++ b/packages/core/agent-default-model/package.json
@@ -32,20 +32,20 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-settings": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/agent-loop/package.json b/packages/core/agent-loop/package.json
index d37d92aede..9f37505853 100644
--- a/packages/core/agent-loop/package.json
+++ b/packages/core/agent-loop/package.json
@@ -31,18 +31,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/agent-tool-mode/package.json b/packages/core/agent-tool-mode/package.json
index bb25b4a14c..a47dbd1434 100644
--- a/packages/core/agent-tool-mode/package.json
+++ b/packages/core/agent-tool-mode/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/agent/package.json b/packages/core/agent/package.json
index b75f720ad4..b4fe30f2e5 100644
--- a/packages/core/agent/package.json
+++ b/packages/core/agent/package.json
@@ -37,13 +37,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-type-meta": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-type-meta": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-type-meta": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/scope/package.json b/packages/core/scope/package.json
index e82a8650e5..53bd185aa5 100644
--- a/packages/core/scope/package.json
+++ b/packages/core/scope/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/session/package.json b/packages/core/session/package.json
index 8fe45b8bed..40508e9a64 100644
--- a/packages/core/session/package.json
+++ b/packages/core/session/package.json
@@ -41,12 +41,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-type-meta": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-type-meta": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -55,6 +55,6 @@
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-type-meta": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/system-prompt/package.json b/packages/core/system-prompt/package.json
index 3dc65c9391..e219dfa37a 100644
--- a/packages/core/system-prompt/package.json
+++ b/packages/core/system-prompt/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-scope": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/core/tools/package.json b/packages/core/tools/package.json
index 6db89c3b0f..e02c4afaef 100644
--- a/packages/core/tools/package.json
+++ b/packages/core/tools/package.json
@@ -41,18 +41,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-code-runtime": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-code-runtime": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -63,6 +63,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/credentials/credentials-local/package.json b/packages/credentials/credentials-local/package.json
index b29c9d2fbb..004c5caec4 100644
--- a/packages/credentials/credentials-local/package.json
+++ b/packages/credentials/credentials-local/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-atomic-write": "^0.0.1",
- "@deepseek-ai/dsh-credentials": "^0.0.1",
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-atomic-write": "workspace:^",
+ "@deepseek-ai/dsh-credentials": "workspace:^",
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"chokidar": "^4.0.3",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"yaml": "^2.9.0"
},
"devDependencies": {
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-environment": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/credentials/credentials/package.json b/packages/credentials/credentials/package.json
index f0c9c43694..8cc0d61e40 100644
--- a/packages/credentials/credentials/package.json
+++ b/packages/credentials/credentials/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/e2b/e2b/package.json b/packages/e2b/e2b/package.json
index 98dff52be8..fb47ba6c83 100644
--- a/packages/e2b/e2b/package.json
+++ b/packages/e2b/e2b/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"e2b": "2.29.1",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-loader-smoke": "workspace:^",
"@deepseek-ai/dsh-sandbox-policy": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/e2b/fs-e2b/package.json b/packages/e2b/fs-e2b/package.json
index bb3190c4be..47c026eaf2 100644
--- a/packages/e2b/fs-e2b/package.json
+++ b/packages/e2b/fs-e2b/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-e2b": "^0.0.1",
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-e2b": "workspace:^",
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-e2b": "workspace:^",
"@deepseek-ai/dsh-fs": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/e2b/subprocess-e2b/package.json b/packages/e2b/subprocess-e2b/package.json
index ca5de7a893..b7be6db8be 100644
--- a/packages/e2b/subprocess-e2b/package.json
+++ b/packages/e2b/subprocess-e2b/package.json
@@ -32,20 +32,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-e2b": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-e2b": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-e2b": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/examples/acp-demo/package.json b/packages/examples/acp-demo/package.json
index e21a3b21a2..1c7763482c 100644
--- a/packages/examples/acp-demo/package.json
+++ b/packages/examples/acp-demo/package.json
@@ -40,20 +40,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-include": "^1.0.4",
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-acp": "^0.0.1",
- "@deepseek-ai/dsh-agent-spine-demo": "^0.0.1",
- "@deepseek-ai/dsh-app-boot": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session-checkpoint-policy": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.0.1",
- "@deepseek-ai/dsh-session-query": "^0.0.1",
- "@deepseek-ai/dsh-session-query-sqlite": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-workspace-context": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/schemastery": "^3.17.0"
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-acp": "workspace:^",
+ "@deepseek-ai/dsh-agent-spine-demo": "workspace:^",
+ "@deepseek-ai/dsh-app-boot": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session-checkpoint-policy": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
+ "@deepseek-ai/dsh-session-query": "workspace:^",
+ "@deepseek-ai/dsh-session-query-sqlite": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-workspace-context": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -70,7 +70,7 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-workspace-context": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/schemastery": "^3.17.0"
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^"
}
}
diff --git a/packages/examples/agent-spine-demo/package.json b/packages/examples/agent-spine-demo/package.json
index 470cb869df..3bfac5084c 100644
--- a/packages/examples/agent-spine-demo/package.json
+++ b/packages/examples/agent-spine-demo/package.json
@@ -32,30 +32,30 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-timer": "^1.1.2",
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-agent-loop": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-goal-session": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-llm-retry": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-title": "^0.0.1",
- "@deepseek-ai/dsh-skill": "^0.0.1",
- "@deepseek-ai/dsh-skill-local": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tasks-local": "^0.0.1",
- "@deepseek-ai/dsh-bash-env": "^0.0.1",
- "@deepseek-ai/dsh-tool-bash": "^0.0.1",
- "@deepseek-ai/dsh-tool-goal": "^0.0.1",
- "@deepseek-ai/dsh-tool-skill": "^0.0.1",
- "@deepseek-ai/dsh-tool-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-workspace-context": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-timer": "workspace:^",
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-agent-loop": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-goal-session": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-llm-retry": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-title": "workspace:^",
+ "@deepseek-ai/dsh-skill": "workspace:^",
+ "@deepseek-ai/dsh-skill-local": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tasks-local": "workspace:^",
+ "@deepseek-ai/dsh-bash-env": "workspace:^",
+ "@deepseek-ai/dsh-tool-bash": "workspace:^",
+ "@deepseek-ai/dsh-tool-goal": "workspace:^",
+ "@deepseek-ai/dsh-tool-skill": "workspace:^",
+ "@deepseek-ai/dsh-tool-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-workspace-context": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-timer": "workspace:^",
@@ -92,9 +92,9 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-workspace-context": "workspace:^",
"@deepseek-ai/node-addon-landlock-run": "workspace:*",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
}
}
diff --git a/packages/examples/jsonrpc-demo/package.json b/packages/examples/jsonrpc-demo/package.json
index a9452b6a22..ac6b0f05ee 100644
--- a/packages/examples/jsonrpc-demo/package.json
+++ b/packages/examples/jsonrpc-demo/package.json
@@ -48,11 +48,11 @@
"@deepseek-ai/dsh-app-boot": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/feedback/command-feedback/package.json b/packages/feedback/command-feedback/package.json
index e3d72eb3cb..afdba48641 100644
--- a/packages/feedback/command-feedback/package.json
+++ b/packages/feedback/command-feedback/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-user-id": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-user-id": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-user-id": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/fs-local/package.json b/packages/fs/fs-local/package.json
index feb0b621d5..c79a13a9d2 100644
--- a/packages/fs/fs-local/package.json
+++ b/packages/fs/fs-local/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"koffi": "^3.1.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-fs": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/fs-policy/package.json b/packages/fs/fs-policy/package.json
index 26273eb031..39b6e0b6f0 100644
--- a/packages/fs/fs-policy/package.json
+++ b/packages/fs/fs-policy/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-fs": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/fs-sandbox/package.json b/packages/fs/fs-sandbox/package.json
index 1622fc2621..610724a528 100644
--- a/packages/fs/fs-sandbox/package.json
+++ b/packages/fs/fs-sandbox/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-fs-local": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-fs-local": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-fs": "workspace:^",
@@ -45,6 +45,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-sandbox": "workspace:^",
"@deepseek-ai/dsh-sandbox-policy": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/fs/package.json b/packages/fs/fs/package.json
index e14e5f0a15..fa97204f47 100644
--- a/packages/fs/fs/package.json
+++ b/packages/fs/fs/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-sandbox": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/tool-fs-search/package.json b/packages/fs/tool-fs-search/package.json
index 6e8c611782..8a6a50f1b3 100644
--- a/packages/fs/tool-fs-search/package.json
+++ b/packages/fs/tool-fs-search/package.json
@@ -33,19 +33,19 @@
"license": "BSD-3-Clause",
"dependencies": {
"@vscode/ripgrep": "^1.18.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-retention": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-spill": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-retention": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-spill": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -59,6 +59,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/tool-fs/package.json b/packages/fs/tool-fs/package.json
index 456f7514af..1e4ef4fbf8 100644
--- a/packages/fs/tool-fs/package.json
+++ b/packages/fs/tool-fs/package.json
@@ -33,19 +33,19 @@
"license": "BSD-3-Clause",
"dependencies": {
"diff": "^9.0.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -63,6 +63,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/fs/tool-str-replace-editor/package.json b/packages/fs/tool-str-replace-editor/package.json
index 7dfd74c7cd..2a3b18bfdc 100644
--- a/packages/fs/tool-str-replace-editor/package.json
+++ b/packages/fs/tool-str-replace-editor/package.json
@@ -31,15 +31,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/goal/command-goal/package.json b/packages/goal/command-goal/package.json
index 8a34968cb6..bac6e02048 100644
--- a/packages/goal/command-goal/package.json
+++ b/packages/goal/command-goal/package.json
@@ -32,10 +32,10 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -45,6 +45,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/goal/goal-session/package.json b/packages/goal/goal-session/package.json
index 9fdb8e83e1..a43a4b1169 100644
--- a/packages/goal/goal-session/package.json
+++ b/packages/goal/goal-session/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -49,6 +49,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/goal/goal/package.json b/packages/goal/goal/package.json
index db2fe9c3c1..5ae59a8093 100644
--- a/packages/goal/goal/package.json
+++ b/packages/goal/goal/package.json
@@ -55,18 +55,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-type-meta": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-type-meta": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.17.2",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -79,6 +79,6 @@
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-type-meta": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/goal/tool-goal/package.json b/packages/goal/tool-goal/package.json
index 8c843fe7e8..309e020842 100644
--- a/packages/goal/tool-goal/package.json
+++ b/packages/goal/tool-goal/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-goal": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-goal": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/guard/repeat-tool-guard/package.json b/packages/guard/repeat-tool-guard/package.json
index 2f9bf37a0f..fbb6a39192 100644
--- a/packages/guard/repeat-tool-guard/package.json
+++ b/packages/guard/repeat-tool-guard/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/guard/timeout-policy/package.json b/packages/guard/timeout-policy/package.json
index 9ea624ee83..ab07cc70e0 100644
--- a/packages/guard/timeout-policy/package.json
+++ b/packages/guard/timeout-policy/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/hooks/hook-protocol/package.json b/packages/hooks/hook-protocol/package.json
index d628b7772c..7d842222e0 100644
--- a/packages/hooks/hook-protocol/package.json
+++ b/packages/hooks/hook-protocol/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-bash": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/hooks/hooks-claude/package.json b/packages/hooks/hooks-claude/package.json
index 79ea6ec65b..a41e2e3b4d 100644
--- a/packages/hooks/hooks-claude/package.json
+++ b/packages/hooks/hooks-claude/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-hook-protocol": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-hook-protocol": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -60,6 +60,6 @@
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/hooks/hooks-codex/package.json b/packages/hooks/hooks-codex/package.json
index 2f567eed26..4ff3f3dc38 100644
--- a/packages/hooks/hooks-codex/package.json
+++ b/packages/hooks/hooks-codex/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-hook-protocol": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-hook-protocol": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-session-persistence": "workspace:^",
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/host/apiproxy/package.json b/packages/host/apiproxy/package.json
index 219704e6dd..c6da4ab3ae 100644
--- a/packages/host/apiproxy/package.json
+++ b/packages/host/apiproxy/package.json
@@ -69,13 +69,13 @@
"@deepseek-ai/dsh-user-approval": "workspace:^",
"@deepseek-ai/dsh-user-interaction": "workspace:^",
"@deepseek-ai/dsh-workspace": "workspace:^",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent-presets": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent-presets": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent-presets": "workspace:^",
@@ -84,6 +84,6 @@
"@deepseek-ai/dsh-storage-domain": "workspace:^",
"@deepseek-ai/dsh-type-meta": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/host/directory-picker-auto/package.json b/packages/host/directory-picker-auto/package.json
index a553fc2c85..bea692eedc 100644
--- a/packages/host/directory-picker-auto/package.json
+++ b/packages/host/directory-picker-auto/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-host-directory-picker-browse": "^0.0.1",
- "@deepseek-ai/dsh-host-directory-picker-native": "^0.0.1",
- "@deepseek-ai/dsh-host-webserver": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-host-directory-picker-browse": "workspace:^",
+ "@deepseek-ai/dsh-host-directory-picker-native": "workspace:^",
+ "@deepseek-ai/dsh-host-webserver": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-host-directory-picker-native": "workspace:^",
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/host/directory-picker-browse/package.json b/packages/host/directory-picker-browse/package.json
index 329e955c54..224f73de29 100644
--- a/packages/host/directory-picker-browse/package.json
+++ b/packages/host/directory-picker-browse/package.json
@@ -39,16 +39,16 @@
"dependencies": {
"@deepseek-ai/dsh-host-directory-picker": "workspace:^",
"clsx": "^2.0.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-locale": "^0.0.1",
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-primitives": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-workspace": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-locale": "workspace:^",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-workspace": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -60,7 +60,7 @@
"@deepseek-ai/dsh-client-ui-workspace": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"dsh": {
diff --git a/packages/host/directory-picker-native/package.json b/packages/host/directory-picker-native/package.json
index d3000b1e98..acf9278c89 100644
--- a/packages/host/directory-picker-native/package.json
+++ b/packages/host/directory-picker-native/package.json
@@ -47,11 +47,11 @@
"koffi": "^3.1.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-client-runtime": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-slots": "^0.0.1",
- "@deepseek-ai/dsh-client-ui-workspace": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-client-runtime": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+ "@deepseek-ai/dsh-client-ui-workspace": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0"
},
"devDependencies": {
@@ -60,7 +60,7 @@
"@deepseek-ai/dsh-client-ui-workspace": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@types/react": "~18.3.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"react": "^18.2.0",
"tsx": "^4.19.2"
},
diff --git a/packages/host/directory-picker/package.json b/packages/host/directory-picker/package.json
index a8feccefbe..afad024fa2 100644
--- a/packages/host/directory-picker/package.json
+++ b/packages/host/directory-picker/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/host/frontend-static/package.json b/packages/host/frontend-static/package.json
index 9da90e8b20..de7ceb9cf2 100644
--- a/packages/host/frontend-static/package.json
+++ b/packages/host/frontend-static/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-host-webserver": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-host-webserver": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-host-webserver": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/host/webserver/package.json b/packages/host/webserver/package.json
index 0f29d976e6..48378f5ff9 100644
--- a/packages/host/webserver/package.json
+++ b/packages/host/webserver/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/dsh-invariants": "^0.0.1"
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^"
}
}
diff --git a/packages/interaction/commands/package.json b/packages/interaction/commands/package.json
index 2909fda952..8e527f64be 100644
--- a/packages/interaction/commands/package.json
+++ b/packages/interaction/commands/package.json
@@ -41,12 +41,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/interaction/permission/package.json b/packages/interaction/permission/package.json
index 4ec76c4e16..85c959315d 100644
--- a/packages/interaction/permission/package.json
+++ b/packages/interaction/permission/package.json
@@ -41,19 +41,19 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-bash": "^0.0.1",
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-bash": "workspace:^",
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -66,6 +66,6 @@
"@deepseek-ai/dsh-session-projection": "workspace:^",
"@deepseek-ai/dsh-settings": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/interaction/tool-ask-user/package.json b/packages/interaction/tool-ask-user/package.json
index 76b103ca04..b0ffe378ee 100644
--- a/packages/interaction/tool-ask-user/package.json
+++ b/packages/interaction/tool-ask-user/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-interaction": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-interaction": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -45,6 +45,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-interaction": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/interaction/user-approval/package.json b/packages/interaction/user-approval/package.json
index 99f1e82f1f..892dcbcf87 100644
--- a/packages/interaction/user-approval/package.json
+++ b/packages/interaction/user-approval/package.json
@@ -37,17 +37,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -57,6 +57,6 @@
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/interaction/user-interaction/package.json b/packages/interaction/user-interaction/package.json
index 67022c524b..cd0336ae5c 100644
--- a/packages/interaction/user-interaction/package.json
+++ b/packages/interaction/user-interaction/package.json
@@ -37,15 +37,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/llm/llm-deepseek/package.json b/packages/llm/llm-deepseek/package.json
index 3bc2702d1b..8baa42f0c9 100644
--- a/packages/llm/llm-deepseek/package.json
+++ b/packages/llm/llm-deepseek/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-credentials": "^0.0.1",
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-credentials": "workspace:^",
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"eventsource-parser": "^3.1.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-credentials": "workspace:^",
@@ -51,6 +51,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-settings": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/llm/llm-pi-ai/package.json b/packages/llm/llm-pi-ai/package.json
index 06003f4165..5427a26277 100644
--- a/packages/llm/llm-pi-ai/package.json
+++ b/packages/llm/llm-pi-ai/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-attachment": "^0.0.1",
- "@deepseek-ai/dsh-credentials": "^0.0.1",
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-attachment": "workspace:^",
+ "@deepseek-ai/dsh-credentials": "workspace:^",
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@earendil-works/pi-ai": "^0.82.1",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-attachment": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-llm-deepseek": "workspace:^",
"@deepseek-ai/dsh-settings": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/llm/llm-retry/package.json b/packages/llm/llm-retry/package.json
index 8baa7e8e5d..556d42abf9 100644
--- a/packages/llm/llm-retry/package.json
+++ b/packages/llm/llm-retry/package.json
@@ -36,16 +36,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -64,6 +64,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/llm/llm/package.json b/packages/llm/llm/package.json
index 67a45ccf88..9341670dd1 100644
--- a/packages/llm/llm/package.json
+++ b/packages/llm/llm/package.json
@@ -45,20 +45,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-attachment": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-attachment": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-attachment": "workspace:^",
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/llm/token-meter/package.json b/packages/llm/token-meter/package.json
index 50762fc86f..0755e6842a 100644
--- a/packages/llm/token-meter/package.json
+++ b/packages/llm/token-meter/package.json
@@ -37,15 +37,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-projection": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/lsp/lsp-local/package.json b/packages/lsp/lsp-local/package.json
index 0a2181c3de..9cdc20a6c7 100644
--- a/packages/lsp/lsp-local/package.json
+++ b/packages/lsp/lsp-local/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-lsp": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-lsp": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -54,7 +54,7 @@
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"typescript": "^6.0.3",
"typescript-language-server": "^5.0.0"
}
diff --git a/packages/lsp/lsp/package.json b/packages/lsp/lsp/package.json
index c4a2385665..41b5f12e42 100644
--- a/packages/lsp/lsp/package.json
+++ b/packages/lsp/lsp/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/lsp/tool-lsp/package.json b/packages/lsp/tool-lsp/package.json
index 4a23cffe88..ab5b9603e8 100644
--- a/packages/lsp/tool-lsp/package.json
+++ b/packages/lsp/tool-lsp/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-lsp": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-lsp": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -56,6 +56,6 @@
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-timeout-policy": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/mcp/mcp-client/package.json b/packages/mcp/mcp-client/package.json
index a7f3fc3b90..1a12f7c674 100644
--- a/packages/mcp/mcp-client/package.json
+++ b/packages/mcp/mcp-client/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.12.0",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@modelcontextprotocol/server-everything": "^2026.7.4",
"@modelcontextprotocol/server-filesystem": "^2026.7.4",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/plan/plan-mode/package.json b/packages/plan/plan-mode/package.json
index 1c8b81cc30..c8c228e00a 100644
--- a/packages/plan/plan-mode/package.json
+++ b/packages/plan/plan-mode/package.json
@@ -41,16 +41,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-commands": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-interaction": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-commands": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-interaction": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/dsh-commands": {
@@ -72,6 +72,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-interaction": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/preset/agent-presets/package.json b/packages/preset/agent-presets/package.json
index 00a8318ad0..c5fc5eb165 100644
--- a/packages/preset/agent-presets/package.json
+++ b/packages/preset/agent-presets/package.json
@@ -32,19 +32,19 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-include": "^1.0.4",
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-atomic-write": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-atomic-write": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"js-yaml": "^4.1.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -61,6 +61,6 @@
"@deepseek-ai/dsh-settings-local": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/preset/persona/package.json b/packages/preset/persona/package.json
index 193a9cb45e..db3121cdaa 100644
--- a/packages/preset/persona/package.json
+++ b/packages/preset/persona/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/pty/pty-local/package.json b/packages/pty/pty-local/package.json
index 9aad0c1502..f7f84504bd 100644
--- a/packages/pty/pty-local/package.json
+++ b/packages/pty/pty-local/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-pty": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-pty": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/pty/pty/package.json b/packages/pty/pty/package.json
index 75f3b33302..ad874ee876 100644
--- a/packages/pty/pty/package.json
+++ b/packages/pty/pty/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/pty/tool-bash-persistent/package.json b/packages/pty/tool-bash-persistent/package.json
index 34d95c6f78..25f248e047 100644
--- a/packages/pty/tool-bash-persistent/package.json
+++ b/packages/pty/tool-bash-persistent/package.json
@@ -31,15 +31,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-pty": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-pty": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -56,6 +56,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/pty/tool-pty/package.json b/packages/pty/tool-pty/package.json
index 2db01c4416..c60acc3572 100644
--- a/packages/pty/tool-pty/package.json
+++ b/packages/pty/tool-pty/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-pty": "^0.0.1",
- "@deepseek-ai/dsh-retention": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-pty": "workspace:^",
+ "@deepseek-ai/dsh-retention": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -63,6 +63,6 @@
"@deepseek-ai/dsh-tasks-local": "workspace:^",
"@deepseek-ai/dsh-tool-tasks": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/sandbox/sandbox-local/package.json b/packages/sandbox/sandbox-local/package.json
index c68cd8532a..52a2801b7b 100644
--- a/packages/sandbox/sandbox-local/package.json
+++ b/packages/sandbox/sandbox-local/package.json
@@ -32,22 +32,22 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@deepseek-ai/dsh-sandbox-windows-acl": "workspace:^",
"@deepseek-ai/node-addon-landlock-run": "workspace:*",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-sandbox": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/sandbox/sandbox-policy/package.json b/packages/sandbox/sandbox-policy/package.json
index d90befdd9e..9aaf77e59f 100644
--- a/packages/sandbox/sandbox-policy/package.json
+++ b/packages/sandbox/sandbox-policy/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-sandbox": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/sandbox/sandbox-windows-acl/package.json b/packages/sandbox/sandbox-windows-acl/package.json
index 6d8d9c722b..a59898ea86 100644
--- a/packages/sandbox/sandbox-windows-acl/package.json
+++ b/packages/sandbox/sandbox-windows-acl/package.json
@@ -38,8 +38,8 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"koffi": "^3.1.0"
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-pwsh-local": "workspace:^",
"@deepseek-ai/dsh-sandbox-local": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/sandbox/sandbox/package.json b/packages/sandbox/sandbox/package.json
index 9fc9f8a460..057920ce44 100644
--- a/packages/sandbox/sandbox/package.json
+++ b/packages/sandbox/sandbox/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/client/package.json b/packages/scaffold/client/package.json
index 227e00a1ab..41786be068 100644
--- a/packages/scaffold/client/package.json
+++ b/packages/scaffold/client/package.json
@@ -31,17 +31,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sdk-protocol": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sdk-protocol": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-sdk-protocol": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/create-sdk/package.json b/packages/scaffold/create-sdk/package.json
index e61b645303..3f4395eed7 100644
--- a/packages/scaffold/create-sdk/package.json
+++ b/packages/scaffold/create-sdk/package.json
@@ -39,11 +39,11 @@
"commander": "^15.0.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/helper/package.json b/packages/scaffold/helper/package.json
index 0266daaba1..d79661c0ea 100644
--- a/packages/scaffold/helper/package.json
+++ b/packages/scaffold/helper/package.json
@@ -38,10 +38,10 @@
"yaml": "^2.9.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-tool-subagent": "workspace:^",
"@deepseek-ai/dsh-tool-todo": "workspace:^",
"@deepseek-ai/dsh-tool-web": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/protocol/package.json b/packages/scaffold/protocol/package.json
index feb8784a6d..7fc86b5fc3 100644
--- a/packages/scaffold/protocol/package.json
+++ b/packages/scaffold/protocol/package.json
@@ -31,17 +31,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/scripts/package.json b/packages/scaffold/scripts/package.json
index e24969d78d..20fd286b50 100644
--- a/packages/scaffold/scripts/package.json
+++ b/packages/scaffold/scripts/package.json
@@ -48,8 +48,8 @@
},
"peerDependencies": {
"@deepseek-ai/dsh-app-boot": "workspace:^",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
"tsdown": "^0.22.2",
"tsx": "^4.22.4"
},
@@ -64,7 +64,7 @@
"devDependencies": {
"@deepseek-ai/dsh-app-boot": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"tsdown": "^0.22.2",
"tsx": "^4.22.4"
}
diff --git a/packages/scaffold/server/package.json b/packages/scaffold/server/package.json
index 6911f4b117..237ce06ecc 100644
--- a/packages/scaffold/server/package.json
+++ b/packages/scaffold/server/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.17.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-llm-deepseek": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-sdk-protocol": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-llm-deepseek": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-sdk-protocol": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -57,6 +57,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/scaffold/telemetry/package.json b/packages/scaffold/telemetry/package.json
index 419d8f9ed1..50c501cd51 100644
--- a/packages/scaffold/telemetry/package.json
+++ b/packages/scaffold/telemetry/package.json
@@ -35,15 +35,15 @@
"yaml": "^2.9.0"
},
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/self-modification/tool-cordis/package.json b/packages/self-modification/tool-cordis/package.json
index 1fc3fcebb1..ed0f466b62 100644
--- a/packages/self-modification/tool-cordis/package.json
+++ b/packages/self-modification/tool-cordis/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/cordis-plugin-timer": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-loop": "workspace:^",
@@ -52,6 +52,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session-query/session-query-sqlite/package.json b/packages/session-query/session-query-sqlite/package.json
index a54c9e0e1b..9a799bf167 100644
--- a/packages/session-query/session-query-sqlite/package.json
+++ b/packages/session-query/session-query-sqlite/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-session-query": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-session-query": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/dsh-session-persistence": {
@@ -44,7 +44,7 @@
}
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-session-persistence": "workspace:^",
"@deepseek-ai/dsh-session-persistence-sqlite": "workspace:^",
"@deepseek-ai/dsh-session-query": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session-query/session-query/package.json b/packages/session-query/session-query/package.json
index cdd3d740f5..6f19563c7b 100644
--- a/packages/session-query/session-query/package.json
+++ b/packages/session-query/session-query/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-title": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-title": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/dsh-session-persistence": {
@@ -52,6 +52,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-title": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session-query/tool-session-query/package.json b/packages/session-query/tool-session-query/package.json
index 0da248f48a..71afb52687 100644
--- a/packages/session-query/tool-session-query/package.json
+++ b/packages/session-query/tool-session-query/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-query": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-query": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-timeout-policy": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-checkpoint-policy/package.json b/packages/session/session-checkpoint-policy/package.json
index 8a5766641f..1151cf1a9c 100644
--- a/packages/session/session-checkpoint-policy/package.json
+++ b/packages/session/session-checkpoint-policy/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -52,6 +52,6 @@
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-persistence-jsonl/package.json b/packages/session/session-persistence-jsonl/package.json
index 6bc752ed0f..38d6cfba97 100644
--- a/packages/session/session-persistence-jsonl/package.json
+++ b/packages/session/session-persistence-jsonl/package.json
@@ -32,19 +32,19 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"koffi": "^3.1.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-persistence-sqlite/package.json b/packages/session/session-persistence-sqlite/package.json
index 8d6f05cbd8..f52fdc6bca 100644
--- a/packages/session/session-persistence-sqlite/package.json
+++ b/packages/session/session-persistence-sqlite/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-persistence/package.json b/packages/session/session-persistence/package.json
index d556ebff73..8430c7c91a 100644
--- a/packages/session/session-persistence/package.json
+++ b/packages/session/session-persistence/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -44,6 +44,6 @@
"@deepseek-ai/dsh-scope": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-projection-cache/package.json b/packages/session/session-projection-cache/package.json
index 885c293dc9..cbc40eebe0 100644
--- a/packages/session/session-projection-cache/package.json
+++ b/packages/session/session-projection-cache/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-storage-domain": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-storage-domain": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-session-projection": "workspace:^",
"@deepseek-ai/dsh-storage": "workspace:^",
"@deepseek-ai/dsh-storage-domain": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-projection/package.json b/packages/session/session-projection/package.json
index d17884eadb..4d7a438fae 100644
--- a/packages/session/session-projection/package.json
+++ b/packages/session/session-projection/package.json
@@ -40,13 +40,13 @@
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-telemetry-otel/package.json b/packages/session/session-telemetry-otel/package.json
index 569e62e70b..0d2a88bc6a 100644
--- a/packages/session/session-telemetry-otel/package.json
+++ b/packages/session/session-telemetry-otel/package.json
@@ -38,16 +38,16 @@
"@opentelemetry/otlp-exporter-base": "^0.220.0",
"@opentelemetry/resources": "^2.9.0",
"@opentelemetry/sdk-logs": "^0.220.0",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-command-feedback": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-telemetry": "^0.0.1",
- "@deepseek-ai/dsh-user-id": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-command-feedback": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-telemetry": "workspace:^",
+ "@deepseek-ai/dsh-user-id": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -57,6 +57,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-telemetry": "workspace:^",
"@deepseek-ai/dsh-user-id": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-telemetry/package.json b/packages/session/session-telemetry/package.json
index d9ac09b6b7..613d1f6ac3 100644
--- a/packages/session/session-telemetry/package.json
+++ b/packages/session/session-telemetry/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-title-all-messages-llm/package.json b/packages/session/session-title-all-messages-llm/package.json
index ecd82f5f72..c406342a9f 100644
--- a/packages/session/session-title-all-messages-llm/package.json
+++ b/packages/session/session-title-all-messages-llm/package.json
@@ -27,15 +27,15 @@
"files": ["lib/index.js", "lib/invariant.js", "lib/types/**/*.d.ts"],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-title": "^0.0.1",
- "@deepseek-ai/dsh-session-title-llm": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-title": "workspace:^",
+ "@deepseek-ai/dsh-session-title-llm": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -43,6 +43,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-title": "workspace:^",
"@deepseek-ai/dsh-session-title-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-title-first-message-llm/package.json b/packages/session/session-title-first-message-llm/package.json
index 88e8ddb1ca..a75f220053 100644
--- a/packages/session/session-title-first-message-llm/package.json
+++ b/packages/session/session-title-first-message-llm/package.json
@@ -27,15 +27,15 @@
"files": ["lib/index.js", "lib/invariant.js", "lib/types/**/*.d.ts"],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-title": "^0.0.1",
- "@deepseek-ai/dsh-session-title-llm": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-title": "workspace:^",
+ "@deepseek-ai/dsh-session-title-llm": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -46,6 +46,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-title": "workspace:^",
"@deepseek-ai/dsh-session-title-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-title-llm/package.json b/packages/session/session-title-llm/package.json
index 7b2c4caacd..062eca9259 100644
--- a/packages/session/session-title-llm/package.json
+++ b/packages/session/session-title-llm/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-title": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-title": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-title": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/session-title/package.json b/packages/session/session-title/package.json
index 84a3b8caaf..e0239f185b 100644
--- a/packages/session/session-title/package.json
+++ b/packages/session/session-title/package.json
@@ -41,15 +41,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
@@ -60,6 +60,6 @@
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-session-persistence-sqlite": "workspace:^",
"@deepseek-ai/dsh-session-projection": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/session/user-id/package.json b/packages/session/user-id/package.json
index fe733ccfd0..36046b5b58 100644
--- a/packages/session/user-id/package.json
+++ b/packages/session/user-id/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/settings/settings-local/package.json b/packages/settings/settings-local/package.json
index c66e51274d..0f5bca31f3 100644
--- a/packages/settings/settings-local/package.json
+++ b/packages/settings/settings-local/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-atomic-write": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-settings": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-atomic-write": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-settings": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"chokidar": "^4.0.3",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"yaml": "^2.9.0"
},
"devDependencies": {
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
"@deepseek-ai/dsh-settings": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/settings/settings/package.json b/packages/settings/settings/package.json
index da6a1cccc0..568a8fba58 100644
--- a/packages/settings/settings/package.json
+++ b/packages/settings/settings/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/cordis": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^"
}
}
diff --git a/packages/skill/skill-badge/package.json b/packages/skill/skill-badge/package.json
index 5b23d44f9c..eb55678529 100644
--- a/packages/skill/skill-badge/package.json
+++ b/packages/skill/skill-badge/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-skill": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-skill": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-skill": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/skill/skill-local/package.json b/packages/skill/skill-local/package.json
index 1cec60bf92..386da9386b 100644
--- a/packages/skill/skill-local/package.json
+++ b/packages/skill/skill-local/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-fs": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-paths": "^0.0.1",
- "@deepseek-ai/dsh-skill": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-fs": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-paths": "workspace:^",
+ "@deepseek-ai/dsh-skill": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"chokidar": "^5.0.0",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"yaml": "^2.4.2"
},
"devDependencies": {
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
"@deepseek-ai/dsh-skill": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/skill/skill/package.json b/packages/skill/skill/package.json
index 921adf7632..b546ae9c60 100644
--- a/packages/skill/skill/package.json
+++ b/packages/skill/skill/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-scope": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/skill/tool-skill/package.json b/packages/skill/tool-skill/package.json
index 25e0f9b2c9..f1315b47cf 100644
--- a/packages/skill/tool-skill/package.json
+++ b/packages/skill/tool-skill/package.json
@@ -32,15 +32,15 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-skill": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-skill": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -51,6 +51,6 @@
"@deepseek-ai/dsh-skill": "workspace:^",
"@deepseek-ai/dsh-skill-local": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/spill/spill-local/package.json b/packages/spill/spill-local/package.json
index 7dd63ce56a..43f1bfcfeb 100644
--- a/packages/spill/spill-local/package.json
+++ b/packages/spill/spill-local/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-spill": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-spill": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -45,6 +45,6 @@
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-spill": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/spill/spill-policy/package.json b/packages/spill/spill-policy/package.json
index f425208b8d..8236e9104a 100644
--- a/packages/spill/spill-policy/package.json
+++ b/packages/spill/spill-policy/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-retention": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-spill": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-retention": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-spill": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -52,6 +52,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-spill": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/spill/spill/package.json b/packages/spill/spill/package.json
index 9340d28a37..48a21f52c9 100644
--- a/packages/spill/spill/package.json
+++ b/packages/spill/spill/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/storage/storage-domain/package.json b/packages/storage/storage-domain/package.json
index 5c6f8836f0..9c3acd2ba7 100644
--- a/packages/storage/storage-domain/package.json
+++ b/packages/storage/storage-domain/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-storage": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-storage": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-storage": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/storage/storage-json/package.json b/packages/storage/storage-json/package.json
index 73d8ed9e74..86ec3dc5b8 100644
--- a/packages/storage/storage-json/package.json
+++ b/packages/storage/storage-json/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-storage": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-storage": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-storage": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/storage/storage-sqlite/package.json b/packages/storage/storage-sqlite/package.json
index 4ad22a7946..b30e80b5e7 100644
--- a/packages/storage/storage-sqlite/package.json
+++ b/packages/storage/storage-sqlite/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-storage": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-storage": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-storage": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/storage/storage/package.json b/packages/storage/storage/package.json
index b638d392e0..efe8294de3 100644
--- a/packages/storage/storage/package.json
+++ b/packages/storage/storage/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-acp/package.json b/packages/subagent/subagent-acp/package.json
index 155e89ced1..62a648e3d5 100644
--- a/packages/subagent/subagent-acp/package.json
+++ b/packages/subagent/subagent-acp/package.json
@@ -32,21 +32,21 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@agentclientprotocol/sdk": "0.25.1",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
@@ -56,6 +56,6 @@
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-claude-code/package.json b/packages/subagent/subagent-claude-code/package.json
index 758d30435c..22876aa0ca 100644
--- a/packages/subagent/subagent-claude-code/package.json
+++ b/packages/subagent/subagent-claude-code/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@anthropic-ai/sdk": "0.93.0",
"@anthropic-ai/claude-agent-sdk": "0.3.220",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -55,6 +55,6 @@
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-codex/package.json b/packages/subagent/subagent-codex/package.json
index e44de3fa75..d22b5c517f 100644
--- a/packages/subagent/subagent-codex/package.json
+++ b/packages/subagent/subagent-codex/package.json
@@ -32,20 +32,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sdk-protocol": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sdk-protocol": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
@@ -57,6 +57,6 @@
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@openai/codex": "0.147.0",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-dsh-sdk/package.json b/packages/subagent/subagent-dsh-sdk/package.json
index 22d66af4bd..d6cc3a3eef 100644
--- a/packages/subagent/subagent-dsh-sdk/package.json
+++ b/packages/subagent/subagent-dsh-sdk/package.json
@@ -32,20 +32,20 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sdk-client": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sdk-client": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
@@ -55,6 +55,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
"@deepseek-ai/dsh-subprocess": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-fork/package.json b/packages/subagent/subagent-fork/package.json
index c0abf8ab3f..08515ea47b 100644
--- a/packages/subagent/subagent-fork/package.json
+++ b/packages/subagent/subagent-fork/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subagent-inprocess": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subagent-inprocess": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-loop": "workspace:^",
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-subagent": "workspace:^",
"@deepseek-ai/dsh-subagent-inprocess": "workspace:^",
"@deepseek-ai/dsh-subagent-spawn": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-inprocess/package.json b/packages/subagent/subagent-inprocess/package.json
index 09fe807748..8bf3d7a8ca 100644
--- a/packages/subagent/subagent-inprocess/package.json
+++ b/packages/subagent/subagent-inprocess/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-include": "^1.0.4",
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-loop": "workspace:^",
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-tool-fs": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent-spawn/package.json b/packages/subagent/subagent-spawn/package.json
index c865aa5251..a45bc78143 100644
--- a/packages/subagent/subagent-spawn/package.json
+++ b/packages/subagent/subagent-spawn/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-subagent-inprocess": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-subagent-inprocess": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-loop": "workspace:^",
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
@@ -55,6 +55,6 @@
"@deepseek-ai/dsh-subagent-inprocess": "workspace:^",
"@deepseek-ai/dsh-tool-bash": "workspace:^",
"@deepseek-ai/dsh-tool-subagent": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/subagent/package.json b/packages/subagent/subagent/package.json
index 070fe2c8cb..4be1d4d947 100644
--- a/packages/subagent/subagent/package.json
+++ b/packages/subagent/subagent/package.json
@@ -40,22 +40,22 @@
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-agent-presets": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-sandbox": "^0.0.1",
- "@deepseek-ai/dsh-sandbox-policy": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-session-projection-cache": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-user-approval": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-agent-presets": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-sandbox": "workspace:^",
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-session-projection-cache": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-user-approval": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/dsh-agent-presets": {
@@ -101,6 +101,6 @@
"@deepseek-ai/dsh-tasks": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-approval": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/tool-subagent-control/package.json b/packages/subagent/tool-subagent-control/package.json
index c89d35c727..0184a5af1a 100644
--- a/packages/subagent/tool-subagent-control/package.json
+++ b/packages/subagent/tool-subagent-control/package.json
@@ -37,12 +37,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -57,6 +57,6 @@
"@deepseek-ai/dsh-subagent": "workspace:^",
"@deepseek-ai/dsh-subagent-spawn": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/tool-subagent-report/package.json b/packages/subagent/tool-subagent-report/package.json
index 665230bdbd..78adfef325 100644
--- a/packages/subagent/tool-subagent-report/package.json
+++ b/packages/subagent/tool-subagent-report/package.json
@@ -32,14 +32,14 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-subagent-spawn": "workspace:^",
"@deepseek-ai/dsh-tool-subagent-control": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subagent/tool-subagent/package.json b/packages/subagent/tool-subagent/package.json
index 5ba14c54b7..6930f5dcc2 100644
--- a/packages/subagent/tool-subagent/package.json
+++ b/packages/subagent/tool-subagent/package.json
@@ -32,19 +32,19 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-tasks-local": "workspace:^",
"@deepseek-ai/dsh-tool-tasks": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subprocess/subprocess-local/package.json b/packages/subprocess/subprocess-local/package.json
index a9547a9c48..d307a0742b 100644
--- a/packages/subprocess/subprocess-local/package.json
+++ b/packages/subprocess/subprocess-local/package.json
@@ -36,10 +36,10 @@
},
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-subprocess": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-subprocess": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"node-pty": "^1.1.0"
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-subprocess": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/subprocess/subprocess/package.json b/packages/subprocess/subprocess/package.json
index a1a4e40865..214f5f67a8 100644
--- a/packages/subprocess/subprocess/package.json
+++ b/packages/subprocess/subprocess/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/acp-snapshot/package.json b/packages/support/acp-snapshot/package.json
index 929ba31708..642565885f 100644
--- a/packages/support/acp-snapshot/package.json
+++ b/packages/support/acp-snapshot/package.json
@@ -37,13 +37,13 @@
"vitest": "^4.1.8"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/agent-loop-testkit/package.json b/packages/support/agent-loop-testkit/package.json
index 5ca1382750..0bde847ca9 100644
--- a/packages/support/agent-loop-testkit/package.json
+++ b/packages/support/agent-loop-testkit/package.json
@@ -32,13 +32,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -48,6 +48,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/invariants/package.json b/packages/support/invariants/package.json
index 0f1503b835..122ab3dd9f 100644
--- a/packages/support/invariants/package.json
+++ b/packages/support/invariants/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/llm-mock-server/package.json b/packages/support/llm-mock-server/package.json
index 9f5acda6cb..13456d14e7 100644
--- a/packages/support/llm-mock-server/package.json
+++ b/packages/support/llm-mock-server/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/llm-replay/package.json b/packages/support/llm-replay/package.json
index d199ea5a4f..326d13bb81 100644
--- a/packages/support/llm-replay/package.json
+++ b/packages/support/llm-replay/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-compact": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-compact": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-compact": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/support/loader-smoke/package.json b/packages/support/loader-smoke/package.json
index 0de74f6e60..169bf2f548 100644
--- a/packages/support/loader-smoke/package.json
+++ b/packages/support/loader-smoke/package.json
@@ -36,17 +36,17 @@
"tsx": "^4.22.4"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/tasks/tasks-local/package.json b/packages/tasks/tasks-local/package.json
index aa4673b811..b92cbfe03f 100644
--- a/packages/tasks/tasks-local/package.json
+++ b/packages/tasks/tasks-local/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-scope": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-scope": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-tasks": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/tasks/tasks/package.json b/packages/tasks/tasks/package.json
index 2e59a68679..5bd6a7e3c1 100644
--- a/packages/tasks/tasks/package.json
+++ b/packages/tasks/tasks/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/tasks/tool-tasks/package.json b/packages/tasks/tool-tasks/package.json
index f55816cc82..69aed7e859 100644
--- a/packages/tasks/tool-tasks/package.json
+++ b/packages/tasks/tool-tasks/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-retention": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tasks": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-retention": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tasks": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -54,6 +54,6 @@
"@deepseek-ai/dsh-tasks": "workspace:^",
"@deepseek-ai/dsh-tasks-local": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/todo/tool-todo/package.json b/packages/todo/tool-todo/package.json
index 3bd9294687..d15d05bb10 100644
--- a/packages/todo/tool-todo/package.json
+++ b/packages/todo/tool-todo/package.json
@@ -37,16 +37,16 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-projection": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-projection": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-include": "workspace:^",
@@ -62,6 +62,6 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-user-interaction": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/typert/generator/package.json b/packages/typert/generator/package.json
index 117f18f48b..f17ce63b8a 100644
--- a/packages/typert/generator/package.json
+++ b/packages/typert/generator/package.json
@@ -41,14 +41,14 @@
"typescript": "^6.0.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-tool-cordis": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"zod": "^4.4.3"
}
}
diff --git a/packages/typert/loader/package.json b/packages/typert/loader/package.json
index 4f33f4bc23..7d1baa743a 100644
--- a/packages/typert/loader/package.json
+++ b/packages/typert/loader/package.json
@@ -32,19 +32,19 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-typert-registry": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-typert-registry": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-typert-registry": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"zod": "^4.4.3"
}
}
diff --git a/packages/typert/registry/package.json b/packages/typert/registry/package.json
index 67f2611db1..464415116b 100644
--- a/packages/typert/registry/package.json
+++ b/packages/typert/registry/package.json
@@ -57,11 +57,11 @@
"zod": "^4.4.3"
},
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/typert/type-meta/package.json b/packages/typert/type-meta/package.json
index ae3fb96a2b..e383ba0eec 100644
--- a/packages/typert/type-meta/package.json
+++ b/packages/typert/type-meta/package.json
@@ -37,11 +37,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/atomic-write/package.json b/packages/util/atomic-write/package.json
index 5556d4ab96..b514058816 100644
--- a/packages/util/atomic-write/package.json
+++ b/packages/util/atomic-write/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/brand/package.json b/packages/util/brand/package.json
index cdf9307e73..01f33fefe5 100644
--- a/packages/util/brand/package.json
+++ b/packages/util/brand/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/environment/package.json b/packages/util/environment/package.json
index 7eee1c2b1e..ddc2e40d23 100644
--- a/packages/util/environment/package.json
+++ b/packages/util/environment/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/native-command/package.json b/packages/util/native-command/package.json
index 81c6c8c771..b3145ee41a 100644
--- a/packages/util/native-command/package.json
+++ b/packages/util/native-command/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/paths/package.json b/packages/util/paths/package.json
index 2405fc5b65..04d692f56d 100644
--- a/packages/util/paths/package.json
+++ b/packages/util/paths/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/retention/package.json b/packages/util/retention/package.json
index d7eec5489a..7e172bb131 100644
--- a/packages/util/retention/package.json
+++ b/packages/util/retention/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.6"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/util/timeout/package.json b/packages/util/timeout/package.json
index 2404dd13ff..194662100a 100644
--- a/packages/util/timeout/package.json
+++ b/packages/util/timeout/package.json
@@ -32,11 +32,11 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/tool-web/package.json b/packages/web/tool-web/package.json
index 2eb44ba59c..c5e1ea2b6b 100644
--- a/packages/web/tool-web/package.json
+++ b/packages/web/tool-web/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-web": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-web": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@joplin/turndown-plugin-gfm": "^1.0.67",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/schemastery": "workspace:^",
"turndown": "^7.2.4"
},
"devDependencies": {
@@ -58,6 +58,6 @@
"@deepseek-ai/dsh-web": "workspace:^",
"@deepseek-ai/dsh-web-fetch-local": "workspace:^",
"@deepseek-ai/dsh-web-search-exa": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/web-fetch-local/package.json b/packages/web/web-fetch-local/package.json
index 61948fb142..148ecde3e0 100644
--- a/packages/web/web-fetch-local/package.json
+++ b/packages/web/web-fetch-local/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-timeout": "^0.0.1",
- "@deepseek-ai/dsh-web": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-timeout": "workspace:^",
+ "@deepseek-ai/dsh-web": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-timeout": "workspace:^",
"@deepseek-ai/dsh-web": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/web-search-deepseek/package.json b/packages/web/web-search-deepseek/package.json
index bcca1d616a..f3b29d20a4 100644
--- a/packages/web/web-search-deepseek/package.json
+++ b/packages/web/web-search-deepseek/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-credentials": "^0.0.1",
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-web": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-credentials": "workspace:^",
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-web": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -51,6 +51,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-web": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/web-search-exa/package.json b/packages/web/web-search-exa/package.json
index 15e907649d..da16ca3fce 100644
--- a/packages/web/web-search-exa/package.json
+++ b/packages/web/web-search-exa/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-web": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-web": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-environment": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-web": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/web-search-perplexity/package.json b/packages/web/web-search-perplexity/package.json
index a952c7f83d..1d266f1d13 100644
--- a/packages/web/web-search-perplexity/package.json
+++ b/packages/web/web-search-perplexity/package.json
@@ -32,18 +32,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-environment": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-web": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-environment": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-web": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-environment": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-web": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/web/web/package.json b/packages/web/web/package.json
index 6f74c65f2b..d9cf4f5726 100644
--- a/packages/web/web/package.json
+++ b/packages/web/web/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/workflow/tool-ralph/package.json b/packages/workflow/tool-ralph/package.json
index 184f656206..341508e3ed 100644
--- a/packages/workflow/tool-ralph/package.json
+++ b/packages/workflow/tool-ralph/package.json
@@ -32,17 +32,17 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-workflow": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-workflow": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
@@ -59,6 +59,6 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-workflow": "workspace:^",
"@deepseek-ai/dsh-workflow-workerthread": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/workflow/tool-workflow/package.json b/packages/workflow/tool-workflow/package.json
index 125df12935..d111d2797d 100644
--- a/packages/workflow/tool-workflow/package.json
+++ b/packages/workflow/tool-workflow/package.json
@@ -32,16 +32,16 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-system-prompt": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-workflow": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-system-prompt": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-workflow": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -53,6 +53,6 @@
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-workflow": "workspace:^",
"@deepseek-ai/dsh-workflow-workerthread": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/workflow/workflow-workerthread/package.json b/packages/workflow/workflow-workerthread/package.json
index d085ba235f..53e03ebc2d 100644
--- a/packages/workflow/workflow-workerthread/package.json
+++ b/packages/workflow/workflow-workerthread/package.json
@@ -37,18 +37,18 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-subagent": "^0.0.1",
- "@deepseek-ai/dsh-tools": "^0.0.1",
- "@deepseek-ai/dsh-workflow": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-subagent": "workspace:^",
+ "@deepseek-ai/dsh-tools": "workspace:^",
+ "@deepseek-ai/dsh-workflow": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -63,7 +63,7 @@
"@deepseek-ai/dsh-system-prompt": "workspace:^",
"@deepseek-ai/dsh-tools": "workspace:^",
"@deepseek-ai/dsh-workflow": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"tsx": "^4.19.2"
}
}
diff --git a/packages/workflow/workflow/package.json b/packages/workflow/workflow/package.json
index e2a6eb21d3..1c342bcebe 100644
--- a/packages/workflow/workflow/package.json
+++ b/packages/workflow/workflow/package.json
@@ -32,12 +32,12 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-agent": "^0.0.1",
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-llm": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-agent": "workspace:^",
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-llm": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"devDependencies": {
"@deepseek-ai/dsh-agent": "workspace:^",
@@ -45,6 +45,6 @@
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/packages/workspace/workspace/package.json b/packages/workspace/workspace/package.json
index 9c0c5127d5..7efc53b6c8 100644
--- a/packages/workspace/workspace/package.json
+++ b/packages/workspace/workspace/package.json
@@ -37,13 +37,13 @@
],
"license": "BSD-3-Clause",
"peerDependencies": {
- "@deepseek-ai/dsh-brand": "^0.0.1",
- "@deepseek-ai/dsh-storage-domain": "^0.0.1",
- "@deepseek-ai/dsh-invariants": "^0.0.1",
- "@deepseek-ai/dsh-session": "^0.0.1",
- "@deepseek-ai/dsh-session-persistence": "^0.0.1",
- "@deepseek-ai/dsh-storage": "^0.0.1",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/dsh-brand": "workspace:^",
+ "@deepseek-ai/dsh-storage-domain": "workspace:^",
+ "@deepseek-ai/dsh-invariants": "workspace:^",
+ "@deepseek-ai/dsh-session": "workspace:^",
+ "@deepseek-ai/dsh-session-persistence": "workspace:^",
+ "@deepseek-ai/dsh-storage": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"zod": "^4.4.3"
@@ -55,6 +55,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence": "workspace:^",
"@deepseek-ai/dsh-storage": "workspace:^",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9e74ebfd80..16602cc946 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -127,7 +127,7 @@ importers:
apps/cli:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../vendor/cordis
'@deepseek-ai/cordis-plugin-hmr':
specifier: workspace:*
@@ -752,7 +752,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -786,7 +786,7 @@ importers:
version: link:../../typert/type-meta
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -811,7 +811,7 @@ importers:
version: link:../../typert/type-meta
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -835,7 +835,7 @@ importers:
packages/attachment/attachment:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -854,7 +854,7 @@ importers:
version: 0.35.3(@types/node@22.20.0)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-attachment':
specifier: workspace:^
@@ -869,7 +869,7 @@ importers:
packages/bash/bash:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -888,7 +888,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -919,7 +919,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -940,7 +940,7 @@ importers:
packages/bash/bash-sandbox:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -974,7 +974,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -995,7 +995,7 @@ importers:
packages/bash/pwsh-sandbox:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -1026,7 +1026,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -1093,7 +1093,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -1151,7 +1151,7 @@ importers:
version: 4.2.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-group':
specifier: workspace:^
@@ -1187,7 +1187,7 @@ importers:
packages/boot/cmdline:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -1443,7 +1443,7 @@ importers:
version: link:../../context/workspace-context
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -1465,7 +1465,7 @@ importers:
version: 15.0.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -1625,7 +1625,7 @@ importers:
version: 15.0.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -1668,7 +1668,7 @@ importers:
version: 8.21.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-host-webserver':
specifier: workspace:^
@@ -1687,7 +1687,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -1705,7 +1705,7 @@ importers:
packages/client/locale:
dependencies:
'@deepseek-ai/dsh-client-connection':
- specifier: ^0.0.1
+ specifier: workspace:^
version: link:../connection
'@deepseek-ai/dsh-settings':
specifier: workspace:^
@@ -1715,7 +1715,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-runtime':
specifier: workspace:^
@@ -1739,7 +1739,7 @@ importers:
packages/client/modules:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -1806,7 +1806,7 @@ importers:
version: 4.4.7(@types/react@18.3.31)(immer@10.2.0)(react@18.3.1)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -1834,7 +1834,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -1853,7 +1853,7 @@ importers:
version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.3)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1)(vite@8.0.16(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-runtime':
specifier: workspace:^
@@ -1886,7 +1886,7 @@ importers:
packages/client/ui-agent-preset:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -1932,7 +1932,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -1981,7 +1981,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -2063,7 +2063,7 @@ importers:
version: 18.3.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2090,7 +2090,7 @@ importers:
packages/client/ui-goal:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-api-remotes':
specifier: workspace:^
@@ -2135,7 +2135,7 @@ importers:
packages/client/ui-layout:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2162,7 +2162,7 @@ importers:
packages/client/ui-model:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2204,7 +2204,7 @@ importers:
packages/client/ui-models:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2246,7 +2246,7 @@ importers:
packages/client/ui-permission:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2291,7 +2291,7 @@ importers:
packages/client/ui-plan:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2394,7 +2394,7 @@ importers:
version: 4.3.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -2431,7 +2431,7 @@ importers:
version: 18.3.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -2462,7 +2462,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2505,7 +2505,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2548,7 +2548,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2581,7 +2581,7 @@ importers:
packages/client/ui-skill:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2630,7 +2630,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2660,7 +2660,7 @@ importers:
packages/client/ui-slots:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -2676,7 +2676,7 @@ importers:
version: 18.3.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2715,7 +2715,7 @@ importers:
packages/client/ui-theme:
dependencies:
'@deepseek-ai/dsh-client-connection':
- specifier: ^0.0.1
+ specifier: workspace:^
version: link:../connection
'@deepseek-ai/dsh-settings':
specifier: workspace:^
@@ -2728,7 +2728,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2762,7 +2762,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-connection':
specifier: workspace:^
@@ -2814,7 +2814,7 @@ importers:
version: 9.0.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-runtime':
specifier: workspace:^
@@ -2851,7 +2851,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -2912,7 +2912,7 @@ importers:
version: 18.3.1(react@18.3.1)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -2949,7 +2949,7 @@ importers:
version: 1.2.0(react@18.3.1)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -2961,7 +2961,7 @@ importers:
packages/code-runtime/code-runtime:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -2974,7 +2974,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-code-runtime':
specifier: workspace:^
@@ -2992,7 +2992,7 @@ importers:
packages/compact/command-compact:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -3022,7 +3022,7 @@ importers:
packages/compact/compact:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -3047,7 +3047,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -3099,7 +3099,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -3130,7 +3130,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3161,7 +3161,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3198,7 +3198,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3226,7 +3226,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -3271,7 +3271,7 @@ importers:
packages/core/agent:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -3302,7 +3302,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3324,7 +3324,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3361,7 +3361,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3388,7 +3388,7 @@ importers:
packages/core/scope:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -3397,7 +3397,7 @@ importers:
packages/core/session:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -3425,7 +3425,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -3444,7 +3444,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3474,7 +3474,7 @@ importers:
packages/credentials/credentials:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -3496,7 +3496,7 @@ importers:
version: 2.9.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-atomic-write':
specifier: workspace:^
@@ -3524,7 +3524,7 @@ importers:
version: 2.29.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -3539,7 +3539,7 @@ importers:
packages/e2b/fs-e2b:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-e2b':
specifier: workspace:^
@@ -3558,7 +3558,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-e2b':
specifier: workspace:^
@@ -3580,7 +3580,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -3632,7 +3632,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-timer':
specifier: workspace:^
@@ -3744,7 +3744,7 @@ importers:
version: link:../../boot/app-boot
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -3753,7 +3753,7 @@ importers:
packages/feedback/command-feedback:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -3783,7 +3783,7 @@ importers:
packages/fs/fs:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -3808,7 +3808,7 @@ importers:
version: 3.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-fs':
specifier: workspace:^
@@ -3823,7 +3823,7 @@ importers:
packages/fs/fs-policy:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-fs':
specifier: workspace:^
@@ -3838,7 +3838,7 @@ importers:
packages/fs/fs-sandbox:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-fs':
specifier: workspace:^
@@ -3866,7 +3866,7 @@ importers:
version: 9.0.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3924,7 +3924,7 @@ importers:
version: 1.18.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -3967,7 +3967,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4009,7 +4009,7 @@ importers:
packages/goal/command-goal:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -4043,7 +4043,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4076,7 +4076,7 @@ importers:
packages/goal/goal-session:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4113,7 +4113,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -4147,7 +4147,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4174,7 +4174,7 @@ importers:
packages/guard/timeout-policy:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -4192,7 +4192,7 @@ importers:
packages/hooks/hook-protocol:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -4211,7 +4211,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4263,7 +4263,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4387,7 +4387,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent-presets':
specifier: workspace:^
@@ -4411,7 +4411,7 @@ importers:
packages/host/directory-picker:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -4420,7 +4420,7 @@ importers:
packages/host/directory-picker-auto:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -4457,7 +4457,7 @@ importers:
version: 2.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-locale':
specifier: workspace:^
@@ -4500,7 +4500,7 @@ importers:
version: 3.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-client-runtime':
specifier: workspace:^
@@ -4531,7 +4531,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -4550,7 +4550,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -4559,7 +4559,7 @@ importers:
packages/interaction/commands:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4587,7 +4587,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-bash':
specifier: workspace:^
@@ -4620,7 +4620,7 @@ importers:
packages/interaction/tool-ask-user:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4648,7 +4648,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4675,7 +4675,7 @@ importers:
packages/interaction/user-interaction:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4694,7 +4694,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-attachment':
specifier: workspace:^
@@ -4719,7 +4719,7 @@ importers:
version: 3.1.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-credentials':
specifier: workspace:^
@@ -4750,7 +4750,7 @@ importers:
version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-attachment':
specifier: workspace:^
@@ -4784,7 +4784,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -4845,7 +4845,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-compact':
specifier: workspace:^
@@ -4866,7 +4866,7 @@ importers:
packages/lsp/lsp:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -4885,7 +4885,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -4928,7 +4928,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -4980,7 +4980,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5008,7 +5008,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5054,7 +5054,7 @@ importers:
version: 4.2.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -5106,7 +5106,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5121,7 +5121,7 @@ importers:
packages/pty/pty:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5143,7 +5143,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5177,7 +5177,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -5229,7 +5229,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -5286,7 +5286,7 @@ importers:
packages/sandbox/sandbox:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5311,7 +5311,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5333,7 +5333,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5358,7 +5358,7 @@ importers:
version: 3.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5373,7 +5373,7 @@ importers:
packages/scaffold/client:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5398,7 +5398,7 @@ importers:
version: 15.0.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5423,7 +5423,7 @@ importers:
version: 2.9.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -5459,7 +5459,7 @@ importers:
packages/scaffold/protocol:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5490,7 +5490,7 @@ importers:
version: 0.1.4
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-app-boot':
specifier: workspace:^
@@ -5512,7 +5512,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -5555,7 +5555,7 @@ importers:
version: 2.9.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -5574,10 +5574,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/cordis-plugin-timer':
specifier: workspace:^
@@ -5613,7 +5613,7 @@ importers:
packages/session-query/session-query:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -5641,7 +5641,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -5669,7 +5669,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5714,7 +5714,7 @@ importers:
packages/session/session-checkpoint-policy:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -5753,7 +5753,7 @@ importers:
packages/session/session-persistence:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -5781,7 +5781,7 @@ importers:
version: 3.1.1
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5800,7 +5800,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5819,7 +5819,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5838,7 +5838,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5862,7 +5862,7 @@ importers:
packages/session/session-telemetry:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -5899,7 +5899,7 @@ importers:
version: 0.220.0(@opentelemetry/api@1.9.1)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -5933,7 +5933,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -5964,7 +5964,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -5989,7 +5989,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -6023,7 +6023,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6044,7 +6044,7 @@ importers:
packages/session/user-id:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -6063,7 +6063,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -6085,7 +6085,7 @@ importers:
version: 2.9.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-atomic-write':
specifier: workspace:^
@@ -6107,7 +6107,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6122,7 +6122,7 @@ importers:
packages/skill/skill-badge:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6144,7 +6144,7 @@ importers:
version: 2.9.0
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-fs':
specifier: workspace:^
@@ -6166,7 +6166,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6196,7 +6196,7 @@ importers:
packages/spill/spill:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -6218,7 +6218,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -6243,7 +6243,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6273,7 +6273,7 @@ importers:
packages/storage/storage:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6289,7 +6289,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6305,7 +6305,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6321,7 +6321,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6337,7 +6337,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6401,10 +6401,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6447,7 +6447,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6484,10 +6484,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6530,10 +6530,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6570,10 +6570,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6606,13 +6606,13 @@ importers:
packages/subagent/subagent-inprocess:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
- specifier: ^1.0.4
+ specifier: workspace:^
version: link:../../../vendor/include
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6664,10 +6664,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6716,10 +6716,10 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6764,7 +6764,7 @@ importers:
packages/subagent/tool-subagent-control:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6810,7 +6810,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6852,7 +6852,7 @@ importers:
packages/subprocess/subprocess:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6865,7 +6865,7 @@ importers:
version: 1.1.0(patch_hash=7a0c04f1f49d798a9ffe2f7f414c01064a44ca2489772d0c3e1235ab336755e6)
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6890,7 +6890,7 @@ importers:
version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1)(vite@8.0.16(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6902,7 +6902,7 @@ importers:
packages/support/agent-loop-testkit:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6933,13 +6933,13 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
packages/support/llm-mock-server:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -6948,7 +6948,7 @@ importers:
packages/support/llm-replay:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-compact':
specifier: workspace:^
@@ -6973,7 +6973,7 @@ importers:
version: 4.22.4
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -6991,7 +6991,7 @@ importers:
packages/tasks/tasks:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7009,7 +7009,7 @@ importers:
packages/tasks/tasks-local:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7040,7 +7040,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7080,7 +7080,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
@@ -7132,7 +7132,7 @@ importers:
version: 6.0.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7154,7 +7154,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -7179,7 +7179,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7188,7 +7188,7 @@ importers:
packages/typert/type-meta:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7197,7 +7197,7 @@ importers:
packages/util/atomic-write:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7206,7 +7206,7 @@ importers:
packages/util/brand:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7215,7 +7215,7 @@ importers:
packages/util/environment:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7224,7 +7224,7 @@ importers:
packages/util/native-command:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7233,7 +7233,7 @@ importers:
packages/util/paths:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7242,7 +7242,7 @@ importers:
packages/util/retention:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.6
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7251,7 +7251,7 @@ importers:
packages/util/timeout:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7270,7 +7270,7 @@ importers:
version: 7.2.4
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7319,7 +7319,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7335,7 +7335,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
@@ -7354,7 +7354,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7385,7 +7385,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-environment':
specifier: workspace:^
@@ -7404,7 +7404,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-environment':
specifier: workspace:^
@@ -7423,7 +7423,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
@@ -7475,7 +7475,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7508,7 +7508,7 @@ importers:
packages/workflow/workflow:
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7533,7 +7533,7 @@ importers:
version: link:../../../vendor/schemastery
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-agent':
specifier: workspace:^
@@ -7582,7 +7582,7 @@ importers:
version: 4.4.3
devDependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../../../vendor/cordis
'@deepseek-ai/dsh-brand':
specifier: workspace:^
@@ -7927,10 +7927,10 @@ importers:
vendor/cordis:
dependencies:
'@deepseek-ai/cordis-plugin-include':
- specifier: ^1.0.4
+ specifier: workspace:^
version: link:../include
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../loader
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
@@ -7944,10 +7944,10 @@ importers:
vendor/group:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../loader
vendor/hmr:
@@ -7956,10 +7956,10 @@ importers:
specifier: ^7.29.0
version: 7.29.7
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cordis-plugin-timer':
- specifier: ^1.1.2
+ specifier: workspace:^
version: link:../timer
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
@@ -7987,10 +7987,10 @@ importers:
vendor/include:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cordis-plugin-loader':
- specifier: ^1.0.0-rc.5
+ specifier: workspace:^
version: link:../loader
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
@@ -8002,7 +8002,7 @@ importers:
vendor/loader:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
@@ -8014,7 +8014,7 @@ importers:
vendor/logger-console:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
@@ -8038,7 +8038,7 @@ importers:
vendor/timer:
dependencies:
'@deepseek-ai/cordis':
- specifier: ^4.0.0-rc.7
+ specifier: workspace:^
version: link:../cordis
'@deepseek-ai/cosmokit':
specifier: link:../cosmokit
diff --git a/scripts/check-workspace-constraints.ts b/scripts/check-workspace-constraints.ts
index cdada48fc5..30afce1e9f 100644
--- a/scripts/check-workspace-constraints.ts
+++ b/scripts/check-workspace-constraints.ts
@@ -80,6 +80,8 @@ interface PackageManifest {
repository?: { type?: string; url?: string; directory?: string }
peerDependencies?: Record
devDependencies?: Record
+ dependencies?: Record
+ optionalDependencies?: Record
}
/** One workspace manifest and its repo-relative path. */
@@ -380,9 +382,38 @@ function checkRepositoryVersion(): string[] {
return ['package.json: version must be stable X.Y.Z']
}
+/** Dependency sections whose ranges reach a published tarball or a local install. */
+const dependencySections = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'] as const
+
+/**
+ * Require the `workspace:` protocol for every reference to a workspace member.
+ *
+ * A hand-written range says nothing about the version the workspace actually
+ * carries, and `pnpm pack` leaves it alone: `^0.0.1` published from version
+ * `0.0.2` names a version that does not exist. The protocol makes pack
+ * substitute the member's real version, so no release step rewrites ranges.
+ * @param manifests - every workspace manifest.
+ * @returns One error per reference that names a workspace member without the protocol.
+ */
+function checkWorkspaceProtocol(manifests: readonly WorkspaceManifest[]): string[] {
+ const members = new Set(manifests.map(entry => entry.manifest.name).filter(name => name !== undefined))
+ const errors: string[] = []
+ for (const { dir, manifest } of manifests) {
+ for (const section of dependencySections) {
+ for (const [name, range] of Object.entries(manifest[section] ?? {})) {
+ if (!members.has(name) || range.startsWith('workspace:')) continue
+ errors.push(`${manifest.name ?? dir}: ${section}.${name} must use the workspace: protocol, got ${range}`)
+ }
+ }
+ }
+ return errors
+}
+
+const manifests = workspaceManifests()
const errors = [
...checkRepositoryVersion(),
- ...workspaceManifests().flatMap(checkWorkspace),
+ ...manifests.flatMap(checkWorkspace),
+ ...checkWorkspaceProtocol(manifests),
...checkHierarchyShape(),
...collectProjectReferenceFaceViolations(root),
]
diff --git a/vendor/cordis/package.json b/vendor/cordis/package.json
index 3428ccbdbc..576ea209a7 100644
--- a/vendor/cordis/package.json
+++ b/vendor/cordis/package.json
@@ -32,8 +32,8 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-include": "^1.0.4",
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5"
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^"
},
"peerDependenciesMeta": {
"@deepseek-ai/cordis-plugin-include": {
@@ -45,6 +45,6 @@
},
"dependencies": {
"@standard-schema/spec": "^1.1.0",
- "@deepseek-ai/cosmokit": "^1.8.1"
+ "@deepseek-ai/cosmokit": "workspace:^"
}
}
diff --git a/vendor/group/package.json b/vendor/group/package.json
index c9f242a7d3..b5e07fdb66 100644
--- a/vendor/group/package.json
+++ b/vendor/group/package.json
@@ -30,7 +30,7 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
}
}
diff --git a/vendor/hmr/package.json b/vendor/hmr/package.json
index 019c027584..68617b430e 100644
--- a/vendor/hmr/package.json
+++ b/vendor/hmr/package.json
@@ -41,15 +41,15 @@
}
},
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-timer": "^1.1.2",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-timer": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
"@babel/code-frame": "^7.29.0",
"chokidar": "^4.0.3",
- "@deepseek-ai/cosmokit": "^1.8.1",
+ "@deepseek-ai/cosmokit": "workspace:^",
"picomatch": "^4.0.3",
- "@deepseek-ai/schemastery": "^3.18.0"
+ "@deepseek-ai/schemastery": "workspace:^"
},
"devDependencies": {
"@types/babel__code-frame": "^7.27.0",
diff --git a/vendor/include/package.json b/vendor/include/package.json
index 7fb6c3f36b..de1509c92b 100644
--- a/vendor/include/package.json
+++ b/vendor/include/package.json
@@ -30,11 +30,11 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/cosmokit": "^1.8.1",
+ "@deepseek-ai/cosmokit": "workspace:^",
"js-yaml": "^4.1.0"
}
}
diff --git a/vendor/loader/package.json b/vendor/loader/package.json
index aab8c19bf5..62e88b2594 100644
--- a/vendor/loader/package.json
+++ b/vendor/loader/package.json
@@ -30,7 +30,7 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7",
+ "@deepseek-ai/cordis": "workspace:^",
"node-addon-require-builtin": "^0.1.4"
},
"peerDependenciesMeta": {
@@ -39,6 +39,6 @@
}
},
"dependencies": {
- "@deepseek-ai/cosmokit": "^1.8.1"
+ "@deepseek-ai/cosmokit": "workspace:^"
}
}
diff --git a/vendor/logger-console/package.json b/vendor/logger-console/package.json
index aeeb81fb50..29b4b423ab 100644
--- a/vendor/logger-console/package.json
+++ b/vendor/logger-console/package.json
@@ -32,11 +32,11 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/cosmokit": "^1.8.1",
- "@deepseek-ai/schemastery": "^3.18.0",
+ "@deepseek-ai/cosmokit": "workspace:^",
+ "@deepseek-ai/schemastery": "workspace:^",
"supports-color": "^9.4.0"
}
}
diff --git a/vendor/schemastery/package.json b/vendor/schemastery/package.json
index e31c6e6251..26cfd9b937 100644
--- a/vendor/schemastery/package.json
+++ b/vendor/schemastery/package.json
@@ -34,6 +34,6 @@
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
- "@deepseek-ai/cosmokit": "^1.8.1"
+ "@deepseek-ai/cosmokit": "workspace:^"
}
}
diff --git a/vendor/timer/package.json b/vendor/timer/package.json
index 32f564aa9d..a8138fae67 100644
--- a/vendor/timer/package.json
+++ b/vendor/timer/package.json
@@ -30,9 +30,9 @@
"author": "Shigma ",
"license": "MIT",
"peerDependencies": {
- "@deepseek-ai/cordis": "^4.0.0-rc.7"
+ "@deepseek-ai/cordis": "workspace:^"
},
"dependencies": {
- "@deepseek-ai/cosmokit": "^1.8.1"
+ "@deepseek-ai/cosmokit": "workspace:^"
}
}
From 27c9ca12a2d3079e51fc85dff048ccec1828186f Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:26:26 +0800
Subject: [PATCH 08/15] feat(release): drive the installed entry from the
packed tarballs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
A throwaway consumer outside the repository declares every member as a file:
dependency, installs, and runs the installed executable with plain Node,
asserting the version it reports. That is the check a workspace link or a stale
lib/ in the checkout cannot pass for: it reads only what files selected.
The family declares its executable, so the vendored family — libraries a
consumer imports, with no executable — states that it has none instead of
carrying a probe that would prove nothing.
Both pack workflows run it after packing, still without credentials.
---
.github/workflows/release-vendor.yml | 3 +
.github/workflows/release.yml | 3 +
package.json | 1 +
scripts/release/families.ts | 19 ++++
scripts/release/verify-packed-install.ts | 105 +++++++++++++++++++++++
5 files changed, 131 insertions(+)
create mode 100644 scripts/release/verify-packed-install.ts
diff --git a/.github/workflows/release-vendor.yml b/.github/workflows/release-vendor.yml
index b83547b560..dc778f3d21 100644
--- a/.github/workflows/release-vendor.yml
+++ b/.github/workflows/release-vendor.yml
@@ -80,6 +80,9 @@ jobs:
- name: Pack release tarballs
run: pnpm run release:pack --family vendor --out dist/npm-vendor
+ - name: Verify packed install
+ run: pnpm run release:verify-packed-install --family vendor --from dist/npm-vendor
+
- uses: actions/upload-artifact@v4
with:
name: vendor-npm-tarballs
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8b4005f42f..affdd3c900 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -79,6 +79,9 @@ jobs:
- name: Pack release tarballs
run: pnpm run release:pack --family dsh --out dist/npm
+ - name: Verify packed install
+ run: pnpm run release:verify-packed-install --family dsh --from dist/npm
+
- uses: actions/upload-artifact@v4
with:
name: dsh-npm-tarballs
diff --git a/package.json b/package.json
index 32138d03e8..0d17549909 100644
--- a/package.json
+++ b/package.json
@@ -123,6 +123,7 @@
"publish:npm-baseline": "tsx scripts/publish-npm-baseline.ts",
"release:verify": "tsx scripts/release/verify.ts",
"release:pack": "tsx scripts/release/pack.ts",
+ "release:verify-packed-install": "tsx scripts/release/verify-packed-install.ts",
"release:publish": "tsx scripts/release/publish.ts",
"dsh": "node --import tsx/esm apps/cli/src/bin.ts",
"demo:headless": "node --import tsx/esm apps/cli/src/bin.ts --profile headless",
diff --git a/scripts/release/families.ts b/scripts/release/families.ts
index b02c21cb1e..78f5de1951 100644
--- a/scripts/release/families.ts
+++ b/scripts/release/families.ts
@@ -57,6 +57,14 @@ function requireString(manifest: Record, field: string, context
return value
}
+/** The executable a family's installed artifacts are driven through. */
+export interface InstalledEntry {
+ /** Package that carries the executable. */
+ readonly packageName: string
+ /** Path to the executable inside that package. */
+ readonly binPath: string
+}
+
/** A release sequence: its members, its version baseline, and its tag naming. */
export abstract class ReleaseFamily {
/** Workflow-facing identifier, also the `--family` argument. */
@@ -167,6 +175,12 @@ export abstract class ReleaseFamily {
* @param files - every path inside its tarball.
*/
abstract validatePayload(member: ReleaseMember, files: readonly string[]): void
+
+ /**
+ * The executable that proves this family's artifacts install and run, or
+ * `undefined` for a family that publishes no executable.
+ */
+ abstract readonly installedEntry: InstalledEntry | undefined
}
/** `packages/*` and `apps/*`: one shared version across the whole family. */
@@ -206,6 +220,8 @@ class DshFamily extends ReleaseFamily {
typeRTRemoteNavigation: hasTypeRTRemoteNavigation(member.manifest),
})
}
+
+ readonly installedEntry = { packageName: '@deepseek-ai/dsh', binPath: 'lib/bin.js' }
}
/** `vendor/*`: every package keeps its own version line, so every package has its own tag. */
@@ -250,6 +266,9 @@ class VendorFamily extends ReleaseFamily {
validatePayload(member: ReleaseMember, files: readonly string[]): void {
if (files.length === 0) throw new Error(`${member.name} packed an empty tarball`)
}
+
+ /** No installed-entry probe: these are libraries a consumer imports, with no executable. */
+ readonly installedEntry = undefined
}
/** Every release family this module owns, in workflow order. */
diff --git a/scripts/release/verify-packed-install.ts b/scripts/release/verify-packed-install.ts
new file mode 100644
index 0000000000..d50e876f06
--- /dev/null
+++ b/scripts/release/verify-packed-install.ts
@@ -0,0 +1,105 @@
+/**
+ * Install a packed release family into a throwaway consumer outside the
+ * repository and drive its installed executable with plain Node.
+ *
+ * Everything the packed tarballs need comes from the tarballs themselves: the
+ * consumer declares every member as a `file:` dependency, so the only registry
+ * traffic is for external dependencies. What this proves is that `files`
+ * selected a complete payload and that the published dependency ranges resolve
+ * — a workspace link or a stale `lib/` in the checkout cannot stand in for a
+ * missing file here
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ */
+
+import { spawnSync } from 'node:child_process'
+import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'
+import { tmpdir } from 'node:os'
+import { join, resolve } from 'node:path'
+import { pathToFileURL } from 'node:url'
+import { parseArgs } from 'node:util'
+import { releaseFamily, tarballName, type ReleaseMember } from './families.ts'
+
+/**
+ * Environment for the installed artifact: no host Node hooks, no host DeepSeek
+ * Harness home, and no ambient npm user agent that would confuse npm.
+ * @param consumerRoot - the throwaway consumer directory.
+ * @returns The child environment.
+ */
+function consumerEnvironment(consumerRoot: string): NodeJS.ProcessEnv {
+ const environment = { ...process.env }
+ delete environment.npm_config_user_agent
+ delete environment.NPM_CONFIG_USER_AGENT
+ delete environment.NODE_OPTIONS
+ delete environment.NODE_PATH
+ environment.DSH_HOME = resolve(consumerRoot, '.dsh')
+ environment.DSH_AGENTS_HOME = resolve(consumerRoot, '.agents')
+ environment.DSH_TELEMETRY_DISABLED = '1'
+ return environment
+}
+
+/**
+ * Run a command in the consumer and fail the process on a non-zero exit.
+ * @param command - executable name.
+ * @param args - command arguments.
+ * @param cwd - working directory.
+ * @param env - child environment.
+ * @returns The captured stdout, trimmed.
+ */
+function run(command: string, args: readonly string[], cwd: string, env: NodeJS.ProcessEnv): string {
+ const result = spawnSync(command, [...args], { cwd, env, encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) {
+ throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}:\n${result.stdout}\n${result.stderr}`)
+ }
+ return result.stdout.trim()
+}
+
+/** Install the family named by `--family` from `--from` and drive its entry. */
+function main(): void {
+ const { values } = parseArgs({
+ options: { family: { type: 'string' }, from: { type: 'string' } },
+ allowPositionals: false,
+ })
+ if (values.family === undefined || values.from === undefined) {
+ throw new Error('usage: verify-packed-install.ts --family --from ')
+ }
+
+ const family = releaseFamily(values.family)
+ const entry = family.installedEntry
+ const root = process.cwd()
+ const packed = resolve(root, values.from)
+ const members: ReleaseMember[] = family.members(root)
+
+ if (entry === undefined) {
+ console.log(`release verify-packed-install: family ${family.id} publishes no executable, nothing to drive`)
+ return
+ }
+
+ const consumerRoot = mkdtempSync(join(tmpdir(), `dsh-packed-${family.id}-`))
+ try {
+ const dependencies = Object.fromEntries(members.map(member =>
+ [member.name, pathToFileURL(join(packed, tarballName(member))).href]))
+ writeFileSync(join(consumerRoot, 'package.json'), `${JSON.stringify({
+ name: `dsh-packed-install-${family.id}`,
+ version: '0.0.0',
+ private: true,
+ dependencies,
+ }, null, 2)}\n`)
+
+ const environment = consumerEnvironment(consumerRoot)
+ console.log(`release verify-packed-install: installing ${String(members.length)} tarball(s) into ${consumerRoot}`)
+ run('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false'], consumerRoot, environment)
+
+ const bin = join(consumerRoot, 'node_modules', ...entry.packageName.split('/'), entry.binPath)
+ const version = run(process.execPath, [bin, '--version'], consumerRoot, environment)
+ const expected = members.find(member => member.name === entry.packageName)?.version
+ if (version !== expected) {
+ throw new Error(`installed ${entry.packageName} --version reported ${JSON.stringify(version)}, expected ${String(expected)}`)
+ }
+ console.log(`release verify-packed-install: installed ${entry.packageName} reports ${version}`)
+ } finally {
+ rmSync(consumerRoot, { recursive: true, force: true })
+ }
+}
+
+main()
From a943e67798d7cd8c7d72c788e9184ab75174d605 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:36:39 +0800
Subject: [PATCH 09/15] feat(release): bump and commit a release family in one
command
release:dsh takes major, minor, patch, or an explicit version and writes one
version across the family; release:vendor takes none and increments each
package's own patch, but only for packages whose published payload changed since
their vendor--v* tag. That tag is the record of the commit a package
last published from, so the change judgement needs no state file, and the diff
is filtered through the manifest's files rules - editing a vendored comment does
not trigger a release.
Both refresh the lockfile, commit, and print the tag to create after the commit
merges. --dry-run reports the plan and writes nothing.
Incrementing the release numbers is also what drops an upstream prerelease
segment: cordis 4.0.0-rc.7 publishes as 4.0.1, because a prerelease version
would not satisfy a consumer's plain range.
---
package.json | 2 +
scripts/release/bump.ts | 199 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 201 insertions(+)
create mode 100644 scripts/release/bump.ts
diff --git a/package.json b/package.json
index 0d17549909..277bd7fe85 100644
--- a/package.json
+++ b/package.json
@@ -121,6 +121,8 @@
"doc-sync": "tsx scripts/run-gates.ts doc-sync",
"hygiene": "pnpm run rescope-vendor:check && pnpm run knip && pnpm run publint && pnpm run constraints && pnpm run verify-package-invariants && pnpm run verify-built-package-invariants && pnpm run verify-cordis-config && pnpm run verify-node-next-types && pnpm run verify-runtime-closure && pnpm run verify-vendored-links",
"publish:npm-baseline": "tsx scripts/publish-npm-baseline.ts",
+ "release:dsh": "tsx scripts/release/bump.ts --family dsh",
+ "release:vendor": "tsx scripts/release/bump.ts --family vendor",
"release:verify": "tsx scripts/release/verify.ts",
"release:pack": "tsx scripts/release/pack.ts",
"release:verify-packed-install": "tsx scripts/release/verify-packed-install.ts",
diff --git a/scripts/release/bump.ts b/scripts/release/bump.ts
new file mode 100644
index 0000000000..83e1b3a2da
--- /dev/null
+++ b/scripts/release/bump.ts
@@ -0,0 +1,199 @@
+/**
+ * Bump one release family's version and commit it, so the published version is
+ * readable from the repository rather than derived inside CI
+ * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ *
+ * The dsh family shares one version: `major`, `minor`, `patch`, or an explicit
+ * `x.y.z` (including a prerelease such as `0.0.1-rc.1`). The vendored family
+ * has one version line per package and publishes only what changed since that
+ * package's own `vendor--v*` tag, which is the record of the commit it
+ * last published from.
+ *
+ * The version lands in the manifests, the lockfile follows, and a human creates
+ * the tag after the commit merges. CI never writes to the repository.
+ */
+
+import { spawnSync } from 'node:child_process'
+import { readFileSync, writeFileSync } from 'node:fs'
+import { join, matchesGlob } from 'node:path'
+import { parseArgs } from 'node:util'
+import { releaseFamily, type ReleaseFamily, type ReleaseMember } from './families.ts'
+
+/** Files npm publishes whether or not `files` lists them. */
+const ALWAYS_PUBLISHED = ['package.json', 'README*', 'LICENSE*', 'LICENCE*'] as const
+
+/** Release types the dsh family accepts besides an explicit version. */
+const RELEASE_TYPES = ['major', 'minor', 'patch'] as const
+
+/**
+ * Run a command and fail the process on a non-zero exit.
+ * @param command - executable name.
+ * @param args - command arguments.
+ * @returns The captured stdout, trimmed.
+ */
+function run(command: string, args: readonly string[]): string {
+ const result = spawnSync(command, [...args], { encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) {
+ throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}:\n${result.stdout}\n${result.stderr}`)
+ }
+ return result.stdout.trim()
+}
+
+/**
+ * Split a version into its release numbers, discarding any prerelease segment.
+ * @param version - the current version.
+ * @returns Major, minor, and patch.
+ */
+function releaseNumbers(version: string): [number, number, number] {
+ const match = /^(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?$/.exec(version)
+ if (match === null) throw new Error(`cannot read release numbers from version ${version}`)
+ return [Number(match[1]), Number(match[2]), Number(match[3])]
+}
+
+/**
+ * The next dsh version.
+ * @param current - the family's current shared version.
+ * @param request - `major`, `minor`, `patch`, or an explicit version.
+ * @returns The target version.
+ */
+function nextSharedVersion(current: string, request: string): string {
+ if (!RELEASE_TYPES.includes(request as typeof RELEASE_TYPES[number])) {
+ if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(request)) {
+ throw new Error(`usage: release:dsh , got ${request}`)
+ }
+ return request
+ }
+ const [major, minor, patch] = releaseNumbers(current)
+ if (request === 'major') return `${String(major + 1)}.0.0`
+ if (request === 'minor') return `${String(major)}.${String(minor + 1)}.0`
+ return `${String(major)}.${String(minor)}.${String(patch + 1)}`
+}
+
+/**
+ * The version a vendored package publishes next: its release numbers with the
+ * patch incremented, which also drops an upstream prerelease segment.
+ * @param current - the package's current version.
+ * @returns The target version.
+ */
+function nextVendorVersion(current: string): string {
+ const [major, minor, patch] = releaseNumbers(current)
+ return `${String(major)}.${String(minor)}.${String(patch + 1)}`
+}
+
+/**
+ * Whether a repository-relative path reaches the member's published payload.
+ * @param member - the member the path belongs to.
+ * @param path - repository-relative path.
+ * @returns True when `files` (or npm's always-published set) selects it.
+ */
+function reachesPayload(member: ReleaseMember, path: string): boolean {
+ const relative = path.slice(member.directory.length + 1)
+ const files = member.manifest.files
+ const patterns = [
+ ...ALWAYS_PUBLISHED,
+ ...Array.isArray(files) ? files.filter((entry): entry is string => typeof entry === 'string') : [],
+ ]
+ return patterns.some(pattern =>
+ matchesGlob(relative, pattern) || matchesGlob(relative, `${pattern}/**`) || relative === pattern)
+}
+
+/**
+ * The newest tag a member published from, or undefined when it never published.
+ * @param family - the member's family.
+ * @param member - the member.
+ * @returns The tag name.
+ */
+function lastPublishedTag(family: ReleaseFamily, member: ReleaseMember): string | undefined {
+ const prefix = family.tagFor(member).replace(/-v[^-]*$/, '-v')
+ const tags = run('git', ['tag', '--list', `${prefix}*`, '--sort=-v:refname']).split('\n').filter(line => line !== '')
+ return tags[0]
+}
+
+/**
+ * Whether a member's published payload changed since it last published.
+ * @param family - the member's family.
+ * @param member - the member.
+ * @returns True when the member needs a new version.
+ */
+function changedSincePublication(family: ReleaseFamily, member: ReleaseMember): boolean {
+ const tag = lastPublishedTag(family, member)
+ if (tag === undefined) return true
+ const changed = run('git', ['diff', '--name-only', `${tag}..HEAD`, '--', member.directory])
+ .split('\n').filter(line => line !== '')
+ return changed.some(path => reachesPayload(member, path))
+}
+
+/**
+ * Write a version into a member's manifest, preserving formatting and key order.
+ * @param root - repository root.
+ * @param member - the member to rewrite.
+ * @param version - the target version.
+ */
+function writeVersion(root: string, member: ReleaseMember, version: string): void {
+ const path = join(root, member.directory, 'package.json')
+ const text = readFileSync(path, 'utf8')
+ const line = `"version": "${member.version}"`
+ if (!text.includes(line)) throw new Error(`${member.directory}: cannot locate ${line}`)
+ writeFileSync(path, text.replace(line, `"version": "${version}"`))
+}
+
+/** Bump the family named by `--family` and commit; `--dry-run` only reports the plan. */
+function main(): void {
+ const { values, positionals } = parseArgs({
+ options: { family: { type: 'string' }, 'dry-run': { type: 'boolean', default: false } },
+ allowPositionals: true,
+ })
+ if (values.family === undefined) throw new Error('usage: bump.ts --family [version]')
+
+ const family = releaseFamily(values.family)
+ const root = process.cwd()
+ const members = family.members(root)
+ family.verifyVersions(members)
+
+ const planned: { member: ReleaseMember; version: string }[] = []
+ let sharedVersion: string | undefined
+ if (family.id === 'dsh') {
+ const request = positionals[0]
+ if (request === undefined) throw new Error('usage: release:dsh ')
+ const [first] = members
+ if (first === undefined) throw new Error(`release family ${family.id} has no members`)
+ sharedVersion = nextSharedVersion(first.version, request)
+ for (const member of members) planned.push({ member, version: sharedVersion })
+ } else {
+ if (positionals.length > 0) throw new Error('release:vendor takes no version: each package increments its own patch')
+ for (const member of members) {
+ if (!changedSincePublication(family, member)) continue
+ planned.push({ member, version: nextVendorVersion(member.version) })
+ }
+ }
+
+ if (planned.length === 0) {
+ console.log(`release bump: family ${family.id}, nothing changed since publication`)
+ return
+ }
+
+ const dryRun = values['dry-run']
+ if (!dryRun) {
+ for (const { member, version } of planned) writeVersion(root, member, version)
+ run('pnpm', ['install', '--lockfile-only'])
+ }
+
+ const summary = sharedVersion
+ ?? planned.map(entry => `${entry.member.name.replace('@deepseek-ai/', '')} ${entry.version}`).join(', ')
+ console.log(`release bump: family ${family.id} -> ${summary}`)
+ for (const { member, version } of planned) console.log(` ${member.directory}: ${member.version} -> ${version}`)
+
+ if (dryRun) {
+ console.log('release bump: dry run, nothing written')
+ return
+ }
+ run('git', ['add', 'pnpm-lock.yaml', ...planned.map(entry => join(entry.member.directory, 'package.json'))])
+ run('git', ['commit', '-m', `release(${family.id}): ${summary}`])
+ // The dsh family tags once for its shared version; vendor tags each package.
+ const tags = [...new Set(planned.map(entry => family.tagFor({ ...entry.member, version: entry.version })))]
+ console.log('release bump: committed. After this merges to master, tag it:')
+ for (const tag of tags) console.log(` git tag ${tag} && git push origin ${tag}`)
+}
+
+main()
From bb489d13251f0aeb5b934e2a39dff68f5364eb9d Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:46:04 +0800
Subject: [PATCH 10/15] fix(release): align the package-invariant and
public-link gates
The invariant companion rule pinned @deepseek-ai/dsh-invariants to a ^0.0.1
peerDependency, which the workspace protocol replaces; it now requires
workspace:^ like every other workspace-internal reference.
The release note stated the provenance risk by naming the internal repository,
which the public-link gate rejects in tracked files. It now states the same
constraint without naming it.
---
.../process/2026-08-10-npm-release-sequences.i18n.yaml | 4 ++--
.../proposed/process/2026-08-10-npm-release-sequences.md | 2 +-
.../proposed/process/2026-08-10-npm-release-sequences.zh.md | 2 +-
scripts/package-invariants.ts | 4 ++--
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
index df41fb5816..76798fc636 100644
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
-2026-08-10-npm-release-sequences.md: 700d922495c539145dd470fbff84e3e211f6ba4e
-2026-08-10-npm-release-sequences.zh.md: 59761eacb1c65d4a38e721a319924bf58c5b423e
+2026-08-10-npm-release-sequences.md: bfe4ccaeddee3713445a3ffb77d575e4af207ae2
+2026-08-10-npm-release-sequences.zh.md: 3df42748429ac62e8131bfe22e4ebaafb4943b32
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
index 700d922495..bfe4ccaedd 100644
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
@@ -180,6 +180,6 @@ This Agent Note replaces the version scheme and the release-set boundary in [art
**The visibility cost of private packages.** After `--access restricted`, every consumer — CI, sandbox e2e, and outside users — needs scope credentials to install. The three native packages move to `restricted` as well; they have never been published, so no existing anonymous install path is cut off.
-**The `repository` organization differs from the one running the workflow.** The release set names `github.com/deepseek-ai/deepseek-harness` while the workflow runs in `deepseek-harness/deepseek-harness`. Token-based publication is unaffected; npm provenance (OIDC) requires the two to agree, so adopting it means either changing `repository` or publishing from the public repository.
+**The `repository` field names a different organization than the one running the workflow.** The release set points consumers at `github.com/deepseek-ai/deepseek-harness`, which is not where these workflows run. Token-based publication is unaffected; npm provenance (OIDC) requires the two to agree, so adopting it means either repointing `repository` or publishing from the organization it names.
**The first publication is one large step.** Nine vendored packages and the whole dsh set publish at once, so any payload defect surfaces in a single release. Driving the complete path with `0.0.1-rc.1` first is the only mitigation, which is why numbered versions wait for that to pass.
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
index 59761eacb1..3df4274842 100644
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
+++ b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
@@ -183,6 +183,6 @@ publish 不读 tag、不读任何清单,对发布集里每个包比较 manifes
**私有包的可见性代价。** `--access restricted` 之后,任何消费方(含 CI、沙箱 e2e、外部使用者)都必须持有 scope 凭据才能安装。native 三包一并转 `restricted`;它们尚未发布过,因此没有既有的匿名安装路径被切断。
-**`repository` 指向的组织与运行 workflow 的组织不一致。** 发布集写的是 `github.com/deepseek-ai/deepseek-harness`,而 workflow 跑在 `deepseek-harness/deepseek-harness`。用 token 发布不受影响;一旦改用 npm provenance(OIDC),npm 会要求二者一致,届时要么改 `repository`,要么从公开仓库发布。
+**`repository` 指向的组织与运行 workflow 的组织不一致。** 发布集让消费方指向 `github.com/deepseek-ai/deepseek-harness`,而这些 workflow 并不跑在那里。用 token 发布不受影响;一旦改用 npm provenance(OIDC),npm 会要求二者一致,届时要么把 `repository` 改指过去,要么从它指向的组织发布。
**首发一次性放大。** vendor 首发九包、dsh 首发全闭包,任何 payload 缺陷都会在同一次发布里暴露。用 `0.0.1-rc.1` 先跑一遍完整链路是唯一的缓解手段,正式版本号留给验证通过之后。
diff --git a/scripts/package-invariants.ts b/scripts/package-invariants.ts
index eeae171a0b..98ade09aa6 100644
--- a/scripts/package-invariants.ts
+++ b/scripts/package-invariants.ts
@@ -96,11 +96,11 @@ function checkManifest(
addViolation(violations, owner.manifestPath, 'files must publish lib/invariant.js')
}
if (owner.packageName === '@deepseek-ai/dsh-invariants') return
- if (manifest.peerDependencies?.['@deepseek-ai/dsh-invariants'] !== '^0.0.1') {
+ if (manifest.peerDependencies?.['@deepseek-ai/dsh-invariants'] !== 'workspace:^') {
addViolation(
violations,
owner.manifestPath,
- '@deepseek-ai/dsh-invariants must be a ^0.0.1 peerDependency',
+ '@deepseek-ai/dsh-invariants must be a workspace:^ peerDependency',
)
}
if (manifest.devDependencies?.['@deepseek-ai/dsh-invariants'] !== 'workspace:^') {
From 787443b13f55d3daa3b8e1a57dac29214759ffbc Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 00:51:02 +0800
Subject: [PATCH 11/15] fix(release): verify the packed install against the
framework it peers on
The harness packages declare the vendored framework as a peer, so installing
only the dsh tarballs left npm resolving @deepseek-ai/cordis from a private
registry the credential-free pack job cannot reach. The verification now takes
several pack directories and installs every tarball in them, and the dsh
workflow packs the vendored family for that purpose while still publishing only
its own set.
The verification also reads what each tarball declares instead of what the
checkout says, which is what let the process and tarball helpers become one
home each - the three copies of a spawn wrapper were a duplication finding.
---
.github/workflows/release.yml | 8 ++-
scripts/release/bump.ts | 27 ++------
scripts/release/pack.ts | 29 +--------
scripts/release/process.ts | 65 +++++++++++++++++++
scripts/release/publish.ts | 43 ++-----------
scripts/release/tarball.ts | 53 ++++++++++++++++
scripts/release/verify-packed-install.ts | 81 ++++++++++++------------
7 files changed, 182 insertions(+), 124 deletions(-)
create mode 100644 scripts/release/process.ts
create mode 100644 scripts/release/tarball.ts
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index affdd3c900..6c7a7489f3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -79,8 +79,14 @@ jobs:
- name: Pack release tarballs
run: pnpm run release:pack --family dsh --out dist/npm
+ # The harness packages declare the vendored framework as a peer, and this
+ # job has no credentials for the private registry, so the verification
+ # installs that family's pack output too. Only dist/npm is published.
+ - name: Pack the vendored framework for verification
+ run: pnpm run release:pack --family vendor --out dist/npm-vendor
+
- name: Verify packed install
- run: pnpm run release:verify-packed-install --family dsh --from dist/npm
+ run: pnpm run release:verify-packed-install --family dsh --from dist/npm --from dist/npm-vendor
- uses: actions/upload-artifact@v4
with:
diff --git a/scripts/release/bump.ts b/scripts/release/bump.ts
index 83e1b3a2da..9755fd00c4 100644
--- a/scripts/release/bump.ts
+++ b/scripts/release/bump.ts
@@ -13,11 +13,11 @@
* the tag after the commit merges. CI never writes to the repository.
*/
-import { spawnSync } from 'node:child_process'
import { readFileSync, writeFileSync } from 'node:fs'
import { join, matchesGlob } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily, type ReleaseFamily, type ReleaseMember } from './families.ts'
+import { capture } from './process.ts'
/** Files npm publishes whether or not `files` lists them. */
const ALWAYS_PUBLISHED = ['package.json', 'README*', 'LICENSE*', 'LICENCE*'] as const
@@ -25,21 +25,6 @@ const ALWAYS_PUBLISHED = ['package.json', 'README*', 'LICENSE*', 'LICENCE*'] as
/** Release types the dsh family accepts besides an explicit version. */
const RELEASE_TYPES = ['major', 'minor', 'patch'] as const
-/**
- * Run a command and fail the process on a non-zero exit.
- * @param command - executable name.
- * @param args - command arguments.
- * @returns The captured stdout, trimmed.
- */
-function run(command: string, args: readonly string[]): string {
- const result = spawnSync(command, [...args], { encoding: 'utf8' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) {
- throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}:\n${result.stdout}\n${result.stderr}`)
- }
- return result.stdout.trim()
-}
-
/**
* Split a version into its release numbers, discarding any prerelease segment.
* @param version - the current version.
@@ -106,7 +91,7 @@ function reachesPayload(member: ReleaseMember, path: string): boolean {
*/
function lastPublishedTag(family: ReleaseFamily, member: ReleaseMember): string | undefined {
const prefix = family.tagFor(member).replace(/-v[^-]*$/, '-v')
- const tags = run('git', ['tag', '--list', `${prefix}*`, '--sort=-v:refname']).split('\n').filter(line => line !== '')
+ const tags = capture('git', ['tag', '--list', `${prefix}*`, '--sort=-v:refname']).split('\n').filter(line => line !== '')
return tags[0]
}
@@ -119,7 +104,7 @@ function lastPublishedTag(family: ReleaseFamily, member: ReleaseMember): string
function changedSincePublication(family: ReleaseFamily, member: ReleaseMember): boolean {
const tag = lastPublishedTag(family, member)
if (tag === undefined) return true
- const changed = run('git', ['diff', '--name-only', `${tag}..HEAD`, '--', member.directory])
+ const changed = capture('git', ['diff', '--name-only', `${tag}..HEAD`, '--', member.directory])
.split('\n').filter(line => line !== '')
return changed.some(path => reachesPayload(member, path))
}
@@ -176,7 +161,7 @@ function main(): void {
const dryRun = values['dry-run']
if (!dryRun) {
for (const { member, version } of planned) writeVersion(root, member, version)
- run('pnpm', ['install', '--lockfile-only'])
+ capture('pnpm', ['install', '--lockfile-only'])
}
const summary = sharedVersion
@@ -188,8 +173,8 @@ function main(): void {
console.log('release bump: dry run, nothing written')
return
}
- run('git', ['add', 'pnpm-lock.yaml', ...planned.map(entry => join(entry.member.directory, 'package.json'))])
- run('git', ['commit', '-m', `release(${family.id}): ${summary}`])
+ capture('git', ['add', 'pnpm-lock.yaml', ...planned.map(entry => join(entry.member.directory, 'package.json'))])
+ capture('git', ['commit', '-m', `release(${family.id}): ${summary}`])
// The dsh family tags once for its shared version; vendor tags each package.
const tags = [...new Set(planned.map(entry => family.tagFor({ ...entry.member, version: entry.version })))]
console.log('release bump: committed. After this merges to master, tag it:')
diff --git a/scripts/release/pack.ts b/scripts/release/pack.ts
index 1b128817b9..5c50ebca4b 100644
--- a/scripts/release/pack.ts
+++ b/scripts/release/pack.ts
@@ -7,41 +7,16 @@
* ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
*/
-import { spawnSync } from 'node:child_process'
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'
import { join, resolve } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily, tarballName, type ReleaseFamily, type ReleaseMember } from './families.ts'
+import { run } from './process.ts'
+import { PUBLISH_ORDER_FILE, tarballFiles } from './tarball.ts'
/** Where pack output lands when `--out` is omitted. */
const DEFAULT_OUTPUT = 'dist/npm'
-/** Name of the file the publish step reads to learn the upload order. */
-export const PUBLISH_ORDER_FILE = 'publish-order.txt'
-
-/**
- * Run a command, inheriting stdio, and fail the process on a non-zero exit.
- * @param command - executable name.
- * @param args - command arguments.
- */
-function run(command: string, args: readonly string[]): void {
- const result = spawnSync(command, [...args], { stdio: 'inherit' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}`)
-}
-
-/**
- * List a tarball's members.
- * @param tarball - absolute tarball path.
- * @returns Every path inside the archive.
- */
-function tarballFiles(tarball: string): string[] {
- const result = spawnSync('tar', ['-tzf', tarball], { encoding: 'utf8' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) throw new Error(`tar -tzf ${tarball} exited with ${String(result.status)}:\n${result.stderr}`)
- return result.stdout.split('\n').filter(line => line !== '')
-}
-
/**
* Pack one member and check what its tarball carries.
* @param family - the release family being packed.
diff --git a/scripts/release/process.ts b/scripts/release/process.ts
new file mode 100644
index 0000000000..3e8c6943bd
--- /dev/null
+++ b/scripts/release/process.ts
@@ -0,0 +1,65 @@
+/**
+ * Process helpers shared by the release scripts: the release steps drive `git`,
+ * `pnpm`, `npm`, and `tar`, and each needs one of three failure behaviours.
+ */
+
+import { spawnSync } from 'node:child_process'
+
+/** Where and with what environment a release step runs a command. */
+export interface RunOptions {
+ /** Working directory; defaults to the current one. */
+ readonly cwd?: string
+ /** Child environment; defaults to this process's. */
+ readonly env?: NodeJS.ProcessEnv
+}
+
+/** What a command produced, for a caller that decides what a failure means. */
+export interface CommandResult {
+ /** Exit status, or null when a signal ended the process. */
+ readonly status: number | null
+ /** Captured standard output. */
+ readonly stdout: string
+ /** Captured standard error. */
+ readonly stderr: string
+}
+
+/**
+ * Run a command and capture its output without judging the exit status.
+ * @param command - executable name.
+ * @param args - command arguments.
+ * @param options - working directory and environment.
+ * @returns The exit status and captured streams.
+ */
+export function attempt(command: string, args: readonly string[], options: RunOptions = {}): CommandResult {
+ const result = spawnSync(command, [...args], { cwd: options.cwd, env: options.env, encoding: 'utf8' })
+ if (result.error !== undefined) throw result.error
+ return { status: result.status, stdout: result.stdout, stderr: result.stderr }
+}
+
+/**
+ * Run a command, capture its standard output, and fail on a non-zero exit.
+ * @param command - executable name.
+ * @param args - command arguments.
+ * @param options - working directory and environment.
+ * @returns The trimmed standard output.
+ */
+export function capture(command: string, args: readonly string[], options: RunOptions = {}): string {
+ const result = attempt(command, args, options)
+ if (result.status !== 0) {
+ throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}:\n${result.stdout}\n${result.stderr}`)
+ }
+ return result.stdout.trim()
+}
+
+/**
+ * Run a command with inherited streams, so its progress reaches the log, and
+ * fail on a non-zero exit.
+ * @param command - executable name.
+ * @param args - command arguments.
+ * @param options - working directory and environment.
+ */
+export function run(command: string, args: readonly string[], options: RunOptions = {}): void {
+ const result = spawnSync(command, [...args], { cwd: options.cwd, env: options.env, stdio: 'inherit' })
+ if (result.error !== undefined) throw result.error
+ if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}`)
+}
diff --git a/scripts/release/publish.ts b/scripts/release/publish.ts
index 68dae1701a..bd0b2d8552 100644
--- a/scripts/release/publish.ts
+++ b/scripts/release/publish.ts
@@ -12,13 +12,13 @@
* the same artifact safe.
*/
-import { spawnSync } from 'node:child_process'
import { createHash } from 'node:crypto'
import { readFileSync } from 'node:fs'
import { join, resolve } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily } from './families.ts'
-import { PUBLISH_ORDER_FILE } from './pack.ts'
+import { attempt, run } from './process.ts'
+import { packedIdentity, readPublishOrder } from './tarball.ts'
/** npm access level for every package this repository publishes. */
const ACCESS = 'restricted'
@@ -28,22 +28,6 @@ type RegistryState =
| { readonly kind: 'absent' }
| { readonly kind: 'present'; readonly integrity: string }
-/**
- * Read a packed tarball's own manifest.
- * @param tarball - absolute tarball path.
- * @returns The packed `package.json` name and version.
- */
-function packedIdentity(tarball: string): { name: string; version: string } {
- const result = spawnSync('tar', ['-xOzf', tarball, 'package/package.json'], { encoding: 'utf8' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) throw new Error(`cannot read ${tarball}:\n${result.stderr}`)
- const manifest: unknown = JSON.parse(result.stdout)
- if (manifest === null || typeof manifest !== 'object') throw new Error(`${tarball} has no manifest`)
- const { name, version } = manifest as Record
- if (typeof name !== 'string' || typeof version !== 'string') throw new Error(`${tarball} manifest lacks name/version`)
- return { name, version }
-}
-
/**
* The subresource integrity string npm records for a tarball.
* @param tarball - absolute tarball path.
@@ -60,8 +44,7 @@ function integrityOf(tarball: string): string {
* @returns The registry state for that version.
*/
function registryState(name: string, version: string): RegistryState {
- const result = spawnSync('npm', ['view', `${name}@${version}`, 'dist.integrity', '--json'], { encoding: 'utf8' })
- if (result.error !== undefined) throw result.error
+ const result = attempt('npm', ['view', `${name}@${version}`, 'dist.integrity', '--json'])
if (result.status !== 0) {
const output = `${result.stdout}${result.stderr}`
if (output.includes('E404') || output.includes('404 Not Found')) return { kind: 'absent' }
@@ -74,19 +57,6 @@ function registryState(name: string, version: string): RegistryState {
return { kind: 'present', integrity: parsed }
}
-/**
- * Publish one tarball.
- * @param tarball - absolute tarball path.
- * @param version - the version being published; a prerelease never takes `latest`.
- */
-function publish(tarball: string, version: string): void {
- const args = ['publish', tarball, '--access', ACCESS]
- if (version.includes('-')) args.push('--tag', 'next')
- const result = spawnSync('npm', args, { stdio: 'inherit' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) throw new Error(`npm publish ${tarball} exited with ${String(result.status)}`)
-}
-
/** Publish the family named by `--family` from the directory named by `--from`. */
function main(): void {
const { values } = parseArgs({
@@ -99,11 +69,10 @@ function main(): void {
const family = releaseFamily(values.family)
const directory = resolve(process.cwd(), values.from)
- const order = readFileSync(join(directory, PUBLISH_ORDER_FILE), 'utf8').split('\n').filter(line => line !== '')
let published = 0
let skipped = 0
- for (const filename of order) {
+ for (const filename of readPublishOrder(directory)) {
const tarball = join(directory, filename)
const { name, version } = packedIdentity(tarball)
const state = registryState(name, version)
@@ -120,7 +89,9 @@ function main(): void {
skipped += 1
continue
}
- publish(tarball, version)
+ // A prerelease version never takes the latest dist-tag.
+ const tagArgs = version.includes('-') ? ['--tag', 'next'] : []
+ run('npm', ['publish', tarball, '--access', ACCESS, ...tagArgs])
published += 1
}
diff --git a/scripts/release/tarball.ts b/scripts/release/tarball.ts
new file mode 100644
index 0000000000..568c24e877
--- /dev/null
+++ b/scripts/release/tarball.ts
@@ -0,0 +1,53 @@
+/**
+ * Reading packed npm tarballs and the order file that accompanies them.
+ *
+ * The release steps after pack treat a directory of tarballs as the unit of
+ * work, so they read what a tarball declares rather than what the checkout
+ * currently says.
+ */
+
+import { readFileSync } from 'node:fs'
+import { join } from 'node:path'
+import { capture } from './process.ts'
+
+/** Name of the file recording the order in which a packed family uploads. */
+export const PUBLISH_ORDER_FILE = 'publish-order.txt'
+
+/** What a packed tarball calls itself. */
+export interface PackedIdentity {
+ /** Package name from the packed manifest. */
+ readonly name: string
+ /** Package version from the packed manifest. */
+ readonly version: string
+}
+
+/**
+ * List a tarball's members.
+ * @param tarball - absolute tarball path.
+ * @returns Every path inside the archive.
+ */
+export function tarballFiles(tarball: string): string[] {
+ return capture('tar', ['-tzf', tarball]).split('\n').filter(line => line !== '')
+}
+
+/**
+ * Read a packed tarball's own manifest.
+ * @param tarball - absolute tarball path.
+ * @returns The name and version the tarball declares.
+ */
+export function packedIdentity(tarball: string): PackedIdentity {
+ const manifest: unknown = JSON.parse(capture('tar', ['-xOzf', tarball, 'package/package.json']))
+ if (manifest === null || typeof manifest !== 'object') throw new Error(`${tarball} has no manifest`)
+ const { name, version } = manifest as Record
+ if (typeof name !== 'string' || typeof version !== 'string') throw new Error(`${tarball} manifest lacks name/version`)
+ return { name, version }
+}
+
+/**
+ * Read a packed directory's upload order.
+ * @param directory - absolute path of a pack output directory.
+ * @returns Tarball filenames in upload order.
+ */
+export function readPublishOrder(directory: string): string[] {
+ return readFileSync(join(directory, PUBLISH_ORDER_FILE), 'utf8').split('\n').filter(line => line !== '')
+}
diff --git a/scripts/release/verify-packed-install.ts b/scripts/release/verify-packed-install.ts
index d50e876f06..7b970212ab 100644
--- a/scripts/release/verify-packed-install.ts
+++ b/scripts/release/verify-packed-install.ts
@@ -1,23 +1,28 @@
/**
- * Install a packed release family into a throwaway consumer outside the
- * repository and drive its installed executable with plain Node.
+ * Install packed tarballs into a throwaway consumer outside the repository and
+ * drive the installed executable with plain Node.
*
- * Everything the packed tarballs need comes from the tarballs themselves: the
- * consumer declares every member as a `file:` dependency, so the only registry
- * traffic is for external dependencies. What this proves is that `files`
- * selected a complete payload and that the published dependency ranges resolve
- * — a workspace link or a stale `lib/` in the checkout cannot stand in for a
- * missing file here
+ * Every tarball the installed tree needs comes from `--from`, so the only
+ * registry traffic is for external dependencies. That matters beyond hermetic
+ * verification: the harness packages declare the vendored framework as a peer,
+ * and those packages live in another release sequence that this credential-free
+ * job cannot fetch from a private registry — so a dsh verification passes the
+ * vendored family's pack output too, while publishing only its own
* ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ *
+ * What this proves is that `files` selected a complete payload and that the
+ * published dependency ranges resolve. A workspace link or a stale `lib/` in the
+ * checkout cannot stand in for a missing file here.
*/
-import { spawnSync } from 'node:child_process'
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join, resolve } from 'node:path'
import { pathToFileURL } from 'node:url'
import { parseArgs } from 'node:util'
-import { releaseFamily, tarballName, type ReleaseMember } from './families.ts'
+import { releaseFamily } from './families.ts'
+import { capture } from './process.ts'
+import { packedIdentity, readPublishOrder } from './tarball.ts'
/**
* Environment for the installed artifact: no host Node hooks, no host DeepSeek
@@ -38,63 +43,61 @@ function consumerEnvironment(consumerRoot: string): NodeJS.ProcessEnv {
}
/**
- * Run a command in the consumer and fail the process on a non-zero exit.
- * @param command - executable name.
- * @param args - command arguments.
- * @param cwd - working directory.
- * @param env - child environment.
- * @returns The captured stdout, trimmed.
+ * Every packed tarball in the given directories, as `file:` dependency entries.
+ * @param directories - absolute pack output directories.
+ * @returns Package name to tarball file URL, and the version each carries.
*/
-function run(command: string, args: readonly string[], cwd: string, env: NodeJS.ProcessEnv): string {
- const result = spawnSync(command, [...args], { cwd, env, encoding: 'utf8' })
- if (result.error !== undefined) throw result.error
- if (result.status !== 0) {
- throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}:\n${result.stdout}\n${result.stderr}`)
+function packedDependencies(directories: readonly string[]): Map {
+ const dependencies = new Map()
+ for (const directory of directories) {
+ for (const filename of readPublishOrder(directory)) {
+ const tarball = join(directory, filename)
+ const { name, version } = packedIdentity(tarball)
+ dependencies.set(name, { url: pathToFileURL(tarball).href, version })
+ }
}
- return result.stdout.trim()
+ return dependencies
}
-/** Install the family named by `--family` from `--from` and drive its entry. */
+/** Install every tarball under `--from` and drive the `--family` entry. */
function main(): void {
const { values } = parseArgs({
- options: { family: { type: 'string' }, from: { type: 'string' } },
+ options: { family: { type: 'string' }, from: { type: 'string', multiple: true } },
allowPositionals: false,
})
- if (values.family === undefined || values.from === undefined) {
- throw new Error('usage: verify-packed-install.ts --family --from ')
+ if (values.family === undefined || values.from === undefined || values.from.length === 0) {
+ throw new Error('usage: verify-packed-install.ts --family --from [--from ...]')
}
const family = releaseFamily(values.family)
const entry = family.installedEntry
- const root = process.cwd()
- const packed = resolve(root, values.from)
- const members: ReleaseMember[] = family.members(root)
-
if (entry === undefined) {
console.log(`release verify-packed-install: family ${family.id} publishes no executable, nothing to drive`)
return
}
+ const root = process.cwd()
+ const packed = packedDependencies(values.from.map(directory => resolve(root, directory)))
+ const expected = packed.get(entry.packageName)
+ if (expected === undefined) throw new Error(`${entry.packageName} is not among the packed tarballs`)
+
const consumerRoot = mkdtempSync(join(tmpdir(), `dsh-packed-${family.id}-`))
try {
- const dependencies = Object.fromEntries(members.map(member =>
- [member.name, pathToFileURL(join(packed, tarballName(member))).href]))
writeFileSync(join(consumerRoot, 'package.json'), `${JSON.stringify({
name: `dsh-packed-install-${family.id}`,
version: '0.0.0',
private: true,
- dependencies,
+ dependencies: Object.fromEntries([...packed].map(([name, entryPacked]) => [name, entryPacked.url])),
}, null, 2)}\n`)
const environment = consumerEnvironment(consumerRoot)
- console.log(`release verify-packed-install: installing ${String(members.length)} tarball(s) into ${consumerRoot}`)
- run('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false'], consumerRoot, environment)
+ console.log(`release verify-packed-install: installing ${String(packed.size)} tarball(s) into ${consumerRoot}`)
+ capture('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false'], { cwd: consumerRoot, env: environment })
const bin = join(consumerRoot, 'node_modules', ...entry.packageName.split('/'), entry.binPath)
- const version = run(process.execPath, [bin, '--version'], consumerRoot, environment)
- const expected = members.find(member => member.name === entry.packageName)?.version
- if (version !== expected) {
- throw new Error(`installed ${entry.packageName} --version reported ${JSON.stringify(version)}, expected ${String(expected)}`)
+ const version = capture(process.execPath, [bin, '--version'], { cwd: consumerRoot, env: environment })
+ if (version !== expected.version) {
+ throw new Error(`installed ${entry.packageName} --version reported ${JSON.stringify(version)}, expected ${expected.version}`)
}
console.log(`release verify-packed-install: installed ${entry.packageName} reports ${version}`)
} finally {
From bcc4890038eaa13db84b0ce23ec00ffa6f2ba6ba Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:01:40 +0800
Subject: [PATCH 12/15] fix(release): follow the workspace protocol in the
invariant fixture and knip config
The package-invariant spec built its fixture with the range the rule no longer
accepts. knip stopped needing the tar ignore entry once the tarball helpers
became the one place that spawns it.
---
knip.json | 1 -
scripts/package-invariants.spec.ts | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/knip.json b/knip.json
index 44f45da1ad..2f755dbb5f 100644
--- a/knip.json
+++ b/knip.json
@@ -9,7 +9,6 @@
"musl-gcc",
"python3",
"sandbox-exec",
- "tar",
"taskkill",
"where.exe"
],
diff --git a/scripts/package-invariants.spec.ts b/scripts/package-invariants.spec.ts
index 59e56976e6..2763341b9e 100644
--- a/scripts/package-invariants.spec.ts
+++ b/scripts/package-invariants.spec.ts
@@ -49,7 +49,7 @@ function fixture(options: {
},
files: ['lib/index.js', 'lib/invariant.js'],
peerDependencies: options.invariantDependency === false ? {} : {
- '@deepseek-ai/dsh-invariants': '^0.0.1',
+ '@deepseek-ai/dsh-invariants': 'workspace:^',
},
devDependencies: options.invariantDependency === false ? {} : {
'@deepseek-ai/dsh-invariants': 'workspace:^',
From d9dcf5a48481b807050cd5b51b87aa8c3c1f6e22 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:26:36 +0800
Subject: [PATCH 13/15] fix(release): close the review findings on the release
sequences
The root manifest carries the dsh family version. bump writes it with the
members, because the workspace constraint requires them to match, and that
constraint now accepts a prerelease segment: without both, release:dsh 0.0.2
left the root behind and 0.0.1-rc.1 could satisfy neither check.
The Landlock workflow no longer passes --access public, which overrode the
restricted publishConfig this repository just adopted for those packages.
Vendored change detection reads build inputs when a package publishes build
output, and vendor/cordis publishes the src its export map already pointed at:
its lib/ is untracked, so a real source edit read as 'nothing changed' and the
next publish would fail on a version whose bytes moved. The next version also
takes the last published version as its baseline, so a re-sync that restores a
lower upstream version cannot recompute a version already on the registry, and
bump confirms the registry carries what the newest tag names.
Tag prefixes are constructed rather than recovered from a full tag, which a
hyphenated version defeated. Pack runs group per ref so concurrent pull requests
stop displacing each other, the publish job carries the global group, and the
unused id-token permission is gone.
Every release script sits behind an entry guard, which is what lets the pure
judgements carry tests: tag naming, publish order and cycle reporting, version
arithmetic, payload policy, and the change judgement.
The Agent Note moves to implemented and states what shipped: one probe command,
the registry confirmation that now exists, and byte reproducibility recorded as
assumed rather than measured.
---
...2026-08-10-npm-release-sequences.i18n.yaml | 6 +
.../2026-08-10-npm-release-sequences.md | 160 +++++++++++
.../2026-08-10-npm-release-sequences.zh.md | 160 +++++++++++
...2026-08-10-npm-release-sequences.i18n.yaml | 6 -
.../2026-08-10-npm-release-sequences.md | 185 -------------
.../2026-08-10-npm-release-sequences.zh.md | 188 -------------
.github/workflows/landlock-run-release.yml | 4 +-
.github/workflows/release-vendor.yml | 8 +-
.github/workflows/release.yml | 9 +-
apps/cli/package.json | 8 +-
packages/bundle/base/package.json | 4 +-
pnpm-lock.yaml | 12 +-
scripts/check-workspace-constraints.ts | 6 +-
scripts/release/bump.ts | 255 +++++++++++++-----
scripts/release/families.spec.ts | 146 ++++++++++
scripts/release/families.ts | 31 ++-
scripts/release/pack.ts | 6 +-
scripts/release/process.ts | 17 ++
scripts/release/publish.ts | 6 +-
scripts/release/verify-packed-install.ts | 6 +-
scripts/release/verify.ts | 5 +-
vendor/README.md | 1 +
vendor/cordis/package.json | 3 +-
23 files changed, 747 insertions(+), 485 deletions(-)
create mode 100644 .agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
create mode 100644 .agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
create mode 100644 .agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
delete mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
delete mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
delete mode 100644 .agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
create mode 100644 scripts/release/families.spec.ts
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
new file mode 100644
index 0000000000..4246b4c62a
--- /dev/null
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
@@ -0,0 +1,6 @@
+# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
+# side as of the last confirmed-consistent state. Both languages carry equal authority;
+# after editing either side, bring the other along and re-record with:
+# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
+2026-08-10-npm-release-sequences.md: 23c5f26c7be2b87d1ef2edffdd3f79a87cf1f9a1
+2026-08-10-npm-release-sequences.zh.md: 77b772460d0bf6b66ae6924c7bab1dfe0860b401
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
new file mode 100644
index 0000000000..23c5f26c7b
--- /dev/null
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
@@ -0,0 +1,160 @@
+# Agent Note: Private npm publication as three independent sequences
+
+Status: implemented
+
+English | [中文](2026-08-10-npm-release-sequences.zh.md)
+
+## Problem
+
+This repository held three unrelated groups of publishable packages and no channel that sent any of them to a registry.
+
+`packages/*/*` and `apps/*` form the runtime surface of `@deepseek-ai/dsh`; `vendor/*` holds nine rescoped Cordis framework packages, each carrying its upstream version; `native/landlock-run/packages/*` holds Linux platform packages with their own workflow. The three differ in version baseline, change rate, and build requirements: dsh moves with the product, vendor moves only when upstream is re-synced or a local modification changes, and native needs a musl toolchain and one build per architecture. Forcing them through one pipeline means every product release republishes the framework and the native binaries.
+
+Two hard blockers sat in the way. All 217 workspace manifests set `private: true`, which npm refuses to publish. The subtler one was 933 hand-written `peerDependencies: "^0.0.1"` entries between sibling dsh packages: `pnpm pack` substitutes the `workspace:` protocol but leaves semver ranges alone, and `^0.0.1` means `>=0.0.1 <0.0.2` — it excludes `0.0.2`, and semver excludes prereleases from a range without a prerelease of its own, so it excluded `0.0.1-rc.1` too. Those entries never failed only because the version never left `0.0.1`.
+
+`scripts/publish-npm-baseline.ts` is a local publication script: it packs and publishes in one process, needs a human to authenticate and retry on their own machine, and excludes vendor from its release set. It cannot be the basis for CI publication, though its tarball payload validation and installed-artifact probes are verified parts.
+
+## Decision
+
+### Three independent sequences
+
+`packages/`, `vendor/`, and `native/` each have one bump sequence and one publication, sharing no version, no trigger, and no waiting. Releasing dsh does not republish vendor; releasing vendor does not republish native.
+
+| Sequence | Members | Version baseline | Tag | Workflow |
+|---|---|---|---|---|
+| dsh | `packages/*/*` + `apps/*` (`@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend`) | one version for the family and the workspace root, `0.0.x` | `dsh-v` | `release.yml` |
+| vendored framework | the nine `vendor/*` packages | each package on its own version line | `vendor--v` (one per package) | `release-vendor.yml` |
+| native | `native/landlock-run/packages/*` | its own `0.0.x` | `landlock-run-v` | `landlock-run-release.yml` |
+
+All three publish privately to the `@deepseek-ai` scope on npmjs.com. `publishConfig.access` in each manifest is `restricted` and no workflow passes `--access`, because a command-line flag overrides the manifest.
+
+### Versions land in the repository from a local command; CI only checks and uploads
+
+Each sequence has one bump-and-commit command: it derives the target version, writes it into the relevant manifests, runs `pnpm install --lockfile-only`, and commits the manifests with the lockfile. The published version is therefore readable from the repository. A human creates the tag after the commit merges to master; CI never writes to the repository and needs no write permission.
+
+`release:dsh` accepts `major`, `minor`, `patch`, or an explicit version, and writes one version across the family **and the workspace root** — the workspace constraint requires every member's version to equal the root's, so the root carries the family version, and the root check accepts a prerelease segment. A prerelease such as `0.0.1-rc.1` drives pack, the installed-artifact probe, and one real private publication before numbered versions follow. The dist-tag decision is the one `landlock-run-release.yml` already made: a version with a prerelease segment publishes under `--tag next`, anything else takes `latest`.
+
+### vendor: publish what changed, and let tags be the ledger
+
+The vendored packages are decoupled from upstream by their scope but keep their own version lines. The published version is the higher of the manifest version and the last published version, with the patch incremented — which also drops an upstream prerelease segment. The first published versions:
+
+| Package | Upstream version | First published version |
+|---|---|---|
+| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
+| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
+| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
+| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
+| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
+| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
+| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
+| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
+| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
+
+Taking the last published version as the baseline is what survives a re-sync: upstream restoring `4.0.0-rc.8` after this repository published `4.0.1` would otherwise compute `4.0.1` again and collide.
+
+Only changed packages publish, and the change judgement adds no state file: **each package has its own tag, and that tag records the commit it last published from**. For each package, bump reads the newest `vendor--v*` tag and diffs the package directory against it. A path counts when the manifest's `files` selects it, when npm publishes it regardless (`package.json`, `README*`, `LICENSE*`), or — for a package whose `files` selects `lib/` — when it is a build input (`src/**`, `tsconfig*.json`, a build config). That last rule exists because a built payload is not tracked by git: without it, a real source change reads as "nothing changed" and the next publication fails on a version whose bytes moved.
+
+A tag is a commit pointer, not proof of publication. Bump asks the registry whether the version its newest tag names exists and fails for a human to resolve when it does not, because a tag pushed for a publication that then failed would otherwise read as "already published" and skip the package indefinitely. Querying a private package needs credentials, so an unauthenticated machine reports the gap instead of failing.
+
+`vendor/cordis` publishes `src` as well. Its export map declares `"./src/*"`, so a tarball without those files points consumers at absent paths, and `files` selecting only build output left the change judgement with no tracked path to match.
+
+### Publication runs only on GitHub, and the registry decides what goes out
+
+Publication runs only from GitHub Actions; there is no local publication path. Publish reads no tag and no manifest of "what this release includes". For each packed tarball it compares the version against the registry, in three states:
+
+| State | Action |
+|---|---|
+| the registry does not have that version | publish |
+| the registry has it, and the tarball's sha512 equals the recorded `dist.integrity` | skip: this is a re-run over one artifact |
+| the registry has it, and the integrity differs | fail, reporting content changed without a version bump |
+
+The third state catches code that changed without a version bump. The first two provide idempotence — re-running publish over one artifact republishes nothing and needs no manual selection of packages. The same rule resolves the tension between one vendor release carrying several tags and a workflow that can only run from one ref: the workflow never infers which packages to publish from the tag it ran from.
+
+### Workspace-internal references use the `workspace:` protocol
+
+Every reference to a workspace member uses `workspace:^`, so `pnpm pack` substitutes a range matching the target version: sibling `peerDependencies` follow the family version, and a reference to a vendored package follows that package's own line. The Landlock platform packages keep `workspace:*`, which publishes the exact version, because a platform package and its entry must agree exactly.
+
+`scripts/check-workspace-constraints.ts` requires the protocol, so a new package cannot reintroduce a hand-written range; the invariant-companion rule requires `workspace:^` for `@deepseek-ai/dsh-invariants` for the same reason.
+
+### Release family objects
+
+The entity in this domain is a **release family**: a set of packages sharing one version baseline and tag naming that publishes as a unit. Adding a family means adding a subclass and a workflow lane, not changing the core.
+
+| Object | Responsibility |
+|---|---|
+| `ReleaseFamily` | a family's identity: member discovery, version baseline, tag prefix, packed-payload rule, installed entry |
+| `ReleaseMember` | one publishable package: directory, name, version, manifest |
+| `publishOrder` | topological order over runtime dependencies, ties broken by package name; a cycle is reported rather than resolved arbitrarily |
+| `pack` | packs a whole family into one directory and records the upload order |
+| `verify` | the family's version baseline, and — when publishing — that the run comes from that family's tag and its members are publishable |
+| `verify-packed-install` | installs the tarballs of one or more pack directories into a throwaway consumer and drives the installed executable |
+| `publish` | the three registry states above |
+| `process` / `tarball` | the one home for spawning commands and for reading a packed tarball, including the entry guard that keeps every script importable |
+
+The dsh family applies the repository's publication payload policy, which rejects sources and declaration maps. The vendored family keeps upstream's payload, because those manifests export `./src/*` and dropping `src` would publish an export map pointing at absent files.
+
+### Workflow shape: pack everything at once, then publish as one set
+
+The `pack` job walks the whole release set once, packing each member into one directory, writes the upload order, and uploads that directory as one artifact; the `publish` job downloads that artifact and publishes each entry in order. The release set is one unit — half the packages can never reach the registry while the other half is still building.
+
+`pack` carries no credentials and runs on every pull request and master push, so a pull request proves the release set still packs. `publish` is a manual dispatch, sits behind the `npm-publish` environment for human approval, and neither builds nor rebuilds — it uploads the bytes pack produced. Pack runs are grouped per ref so concurrent pull requests do not displace each other; the publish job carries the global group, because dist-tags are shared registry state.
+
+A dsh verification installs the vendored family's pack output too. The harness packages declare the vendored framework as a peer, those packages live in another sequence, and the credential-free job cannot fetch them from a private registry — so `release.yml` packs the vendored family for verification while publishing only its own set.
+
+### Repository changes this carried
+
+| Item | Content |
+|---|---|
+| release-set manifests | `private: true` removed; `publishConfig.access: restricted` and `repository` with each package's `directory` added |
+| release-set boundary | every member of `packages/*/*`, `apps/*`, and `vendor/*` |
+| dependency protocol | workspace-internal references are `workspace:^`, with `check-workspace-constraints.ts` and the invariant-companion rule requiring it |
+| root `AGENTS.md` | the convention that vendored packages are `private: true` no longer holds |
+| `vendor/README.md` | records `src` joining `cordis`'s `files` as a local modification |
+| the three native packages | `publishConfig.access: restricted`, and their workflow no longer passes `--access` |
+
+### Relationship to the earlier proposal
+
+This Agent Note replaces the version scheme and the release-set boundary in [artifact-first npm baseline publication](../../proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md): its `--` prerelease versions and `dev-` dist-tag are not adopted, and vendor is not excluded from the release set. What both agree on stands: pack and publish are separate, publish consumes only verified tarballs, and the payload and installed-artifact probes are release gates.
+
+## Alternatives considered
+
+**A `--` version.** Planned for continuous dev publication. It conflicts with keeping the published version in the repository: the version embeds a commit SHA, and writing the version back produces a new commit, so the SHA can only name the parent commit that was published and the link needs a convention to explain it. With numbered versions, a prerelease such as `0.0.1-rc.1` already covers "verify first, then release".
+
+**A `vendor/published.json` ledger recording each package's published version and commit.** This preceded the tag design. It adds a state file that must not drift from the registry. A per-package tag gives the same commit pointer, and the tag has to exist anyway, so it introduces no second copy of the state.
+
+**Event-level tags (`vendor-r1`, `vendor-r2`).** Prepared for one release event carrying several package versions. Once the registry decides what publishes, the workflow no longer infers the set from the tag, so per-package tags suffice — and each one names its own package's real version.
+
+**Putting the nine vendored packages on one `4.0.x` line.** It removes change detection, but cosmokit would jump from `1.8.1` to `4.0.1` and lose its upstream lineage; the upstream ranges inside the nine (`^1.8.1` and friends) would stop matching immediately, forcing a rewrite of the vendored manifests.
+
+**Incrementing every vendored package on every vendor release, with no change detection.** The least machinery, at the cost of new version numbers for packages whose content is byte-identical to the previous release. Tags reduce change detection to reading one tag and running one diff, which is not worth trading for inflated version numbers.
+
+**Deciding "already published" from the version alone, without comparing content.** The reference flow queries no registry: publish uploads each tarball and npm rejects a duplicate version. Skipping on the version alone misses code that changed without a bump, which is the only failure that quietly leaves stale bytes on the registry. The cost is a registry query and a dependency on reproducible builds.
+
+**Verifying only the packed install, with no local registry.** The reference flow unpacks tarballs into a tree and drives it with plain Node, which bypasses version-range resolution. Running a local registry in CI to cover that layer was rejected: artifact correctness is covered by existing tests, the publication path is exercised by the master rehearsal, and a pull request only needs to prove the release set packs. Installing from `file:` specifiers still exercises range resolution for every internal dependency.
+
+**Selecting a subset by entry closure.** Crawling `dependencies` from `@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend` yields 156 packages, 61 fewer than the whole set. But this repository's plugins are mounted by name from `cordis.yml` rather than imported: `vendor/cordis-plugin-group` and `vendor/cordis-plugin-logger-console` fall outside the dependency closure while being required at runtime. Selecting by code dependency fails as "the consumer installs it and it will not start", and it would need a standing proof that no mounted package was missed. Under a private scope the extra packages are invisible outside the organization. `python/`, the root `examples/`, `docs/`, and `website/` are not members.
+
+**Extending `scripts/publish-npm-baseline.ts`.** It is a local publication script that packs and publishes in one process, the opposite of separating credential-free packing from protected publication. Its verified parts — payload validation and installed-artifact probes — are reused so `pnpm run duplication` does not report clones.
+
+**One workflow with a `family` input.** Two version models in one file forks the concurrency group, the tag prefix, and the rehearsal triggers into conditional expressions. One file per family is both shorter and easier to read.
+
+**Rewriting dependency ranges at publication time.** Compared with the protocol, the rewrite runs only in CI, a local `pnpm install` cannot show whether it is correct, and it repeats on every release.
+
+**Running bump in CI and pushing the version back.** It needs repository write permission for the workflow, and a version commit on the release branch races human commits. Bump and commit stay local; CI checks and uploads.
+
+## Consequences
+
+The release scripts are importable modules behind a guarded entry point, and their judgements carry unit tests: tag naming, publish order and cycle reporting, version-baseline arithmetic, the payload change judgement, and each family's payload policy. Two defects the first draft carried — a publish command that ran the pack command on import, and a change judgement blind to `vendor/cordis` source edits — are exactly what a test at that seam catches.
+
+A pull request runs the full pack for both sequences without credentials and installs the packed dsh tarballs into a throwaway consumer, where plain Node drives `dsh --version`. That probe is deliberately one command: it proves `files` selected a complete payload and that the published ranges resolve, and says nothing about interactive behavior.
+
+What this costs:
+
+- **Tags can drift from the registry.** A tag pushed for a publication that then failed is caught by bump's registry check, but only where credentials exist; an unauthenticated machine reports the gap and continues.
+- **The change judgement depends on visible tags.** A shallow clone, or a checkout without tags, degrades the vendored judgement to "publish everything for the first time". `fetch-depth: 0` is a precondition, not an optimization.
+- **The protocol rewrite touched 1504 dependency declarations.** It does not change local resolution — pnpm already resolves from the workspace — but it changes the ranges that go out.
+- **Private packages need credentials to install.** Every consumer — CI, sandbox e2e, outside users — needs scope credentials, including for the Landlock packages, which have never been published and so cut off no existing anonymous path.
+- **`repository` names a different organization than the one running the workflows.** Token-based publication is unaffected; npm provenance (OIDC) requires the two to agree, so adopting it means either repointing `repository` or publishing from the organization it names.
+- **Byte reproducibility is assumed, not measured.** The skip-on-identical-integrity state rests on packing the same commit twice producing the same bytes. Nothing measures that yet: if the build embeds absolute paths or timestamps, a re-run reports a false failure. Measure it before the first publication a re-run might follow, and fall back to comparing per-file content hashes if it does not hold.
+- **Re-running publish over an older artifact can move `latest` backwards.** Publication is decided per version, so an older set republished after a newer one takes the stable dist-tag again. The rehearsals run from a prerelease version, which never takes `latest`.
+- **The first publication is one large step.** Nine vendored packages and the whole dsh set publish at once, so any payload defect surfaces in a single release, which is why a prerelease version drives the complete path first.
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
new file mode 100644
index 0000000000..77b772460d
--- /dev/null
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
@@ -0,0 +1,160 @@
+# Agent Note: 三条独立序列的私有 NPM 发布
+
+Status: implemented
+
+[English](2026-08-10-npm-release-sequences.md) | 中文
+
+## 问题
+
+这个仓库有三组互不相干的可发布包,却没有任何发布通道把它们送上 registry。
+
+`packages/*/*` 与 `apps/*` 组成 `@deepseek-ai/dsh` 的运行面;`vendor/*` 是九个 rescope 过的 Cordis 框架包,各自带着上游的版本号;`native/landlock-run/packages/*` 是 Linux 平台包,有自己的 workflow。三组的版本基线、变更节奏和构建要求都不同:dsh 随产品迭代,vendor 只在同步上游或改动本地修改时才动,native 需要 musl 工具链和逐架构构建。把它们塞进一条发布流水线,等于每次产品发版都要重发框架和原生二进制。
+
+挡路的还有两处硬门。全部 217 个 workspace manifest 都是 `private: true`,`npm publish` 直接拒绝。更隐蔽的是 933 条 dsh 兄弟包之间硬写的 `peerDependencies: "^0.0.1"`:`pnpm pack` 只替换 `workspace:` 协议,不动语义范围,而 `^0.0.1` 等于 `>=0.0.1 <0.0.2`——发 `0.0.2` 落不进去,发 `0.0.1-rc.1` 也落不进去(semver 规定不带预发布段的范围排除预发布版本)。这些条目至今没出事,只因为版本一直停在 `0.0.1`。
+
+`scripts/publish-npm-baseline.ts` 是本机发布脚本:它把 pack 与 publish 放进同一个进程,需要人工在本机完成认证与重试,且把 vendor 排除在发布集之外。它不能作为 CI 发布的基础,但其中的 tarball payload 校验与已安装产物探针是验证过的零件。
+
+## 决策
+
+### 三条独立序列
+
+`packages/`、`vendor/`、`native/` 各自一条 bump 序列、各自一次发布,不共享版本号、不共享触发、不互相等待。发 dsh 不重发 vendor,发 vendor 不重发 native。
+
+| 序列 | 成员 | 版本基线 | tag | workflow |
+|---|---|---|---|---|
+| dsh | `packages/*/*` + `apps/*`(`@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend`) | 全族与 workspace 根共用一个 `0.0.x` | `dsh-v<版本>` | `release.yml` |
+| vendored framework | `vendor/*` 九个包 | 每包各自一条版本线 | `vendor-<包名>-v<版本>`(每包一个) | `release-vendor.yml` |
+| native | `native/landlock-run/packages/*` | 自己的 `0.0.x` | `landlock-run-v<版本>` | `landlock-run-release.yml` |
+
+三组一律发到 npmjs.com 的 `@deepseek-ai` scope 下的私有包。每个 manifest 的 `publishConfig.access` 都是 `restricted`,且没有任何 workflow 传 `--access`——命令行选项会覆盖 manifest。
+
+### 版本由本地命令写进仓库,CI 只核对与上传
+
+每条序列有一条 bump-and-commit 命令:算出目标版本,写进相关 manifest,跑 `pnpm install --lockfile-only`,再把 manifest 连 lockfile 一起 commit。发布版本因此在仓库里查得到。tag 由人工在 commit 合入 master 后打;CI 不写仓库,也不需要写权限。
+
+`release:dsh` 接受 `major`、`minor`、`patch` 或显式版本号,把同一个版本写进全族**以及 workspace 根**——workspace 约束要求每个成员的版本等于根版本,所以根承载族版本,而根的检查接受预发布段。像 `0.0.1-rc.1` 这样的预发布号先把 pack、已安装产物探针和一次真实私有发布跑通,数字版本随后。dist-tag 沿用 `landlock-run-release.yml` 已有的判定:版本带预发布段就 `--tag next`,否则进 `latest`。
+
+### vendor:谁改了谁发版,tag 就是账本
+
+vendor 九包加了 scope 之后与上游脱钩,但保留各自的版本线。发布版本取「manifest 版本」与「上次发布版本」中较高的那个,再递增 patch——这一步同时去掉上游的预发布段。首发版本:
+
+| 包 | 上游版本 | 首发版本 |
+|---|---|---|
+| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
+| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
+| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
+| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
+| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
+| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
+| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
+| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
+| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
+
+以「上次发布版本」为基线才扛得住重同步:本仓发过 `4.0.1` 之后上游把版本恢复成 `4.0.0-rc.8`,只看 manifest 会再算出 `4.0.1` 并撞上已发版本。
+
+只发改动过的包,而变更判据不引入新的状态文件:**每包一个 tag,tag 就是「上次发布到哪个 commit」的记录**。bump 对每个包取最新的 `vendor-<包名>-v*` tag,拿包目录与它做 diff。一条路径算命中的条件是:manifest 的 `files` 选中它,或 npm 无论如何都会发布它(`package.json`、`README*`、`LICENSE*`),或者——当该包的 `files` 选中 `lib/` 时——它是构建输入(`src/**`、`tsconfig*.json`、构建配置)。最后那条规则的存在理由是构建产物不在 git 里:没有它,真实的源码改动会读成「没变化」,而下一次发布会在一个字节已变的版本上失败。
+
+tag 只是 commit 指针,不是发布成功的证明。bump 会向 registry 核对「最新 tag 指向的版本是否真的存在」,不存在就明确失败交人处理——否则一个为失败发布而推的 tag 会被读成「已发布」,从此永远跳过该包。查询私有包需要凭据,因此未鉴权的机器只报告这道核对被跳过,不失败。
+
+`vendor/cordis` 现在也发布 `src`。它的 exports 声明了 `"./src/*"`,tarball 里没有这些文件就等于把消费方指向不存在的路径;而 `files` 只选构建产物,也让变更判据没有任何受 git 跟踪的路径可匹配。
+
+### 发布只在 GitHub 执行,由 registry 状态决定发什么
+
+发布只从 GitHub Actions 执行,没有本机发布路径。publish 不读 tag、不读任何「本次发布包含什么」的清单,而是对每个打包好的 tarball 拿版本与 registry 比对,分三态:
+
+| 状态 | 处置 |
+|---|---|
+| registry 上没有该版本 | 发布 |
+| 已有该版本,且 tarball 的 sha512 等于记录的 `dist.integrity` | 跳过:这是同一批产物的重跑 |
+| 已有该版本,但 integrity 不同 | 失败退出,报「内容已变但版本未 bump」 |
+
+第三态拦住「改了代码却没 bump 版本」。前两态给出幂等——同一个 artifact 重跑 publish 不会重复发布,也不需要人工挑拣包。同一条规则还解决了「一次 vendor 发布携带多个 tag,而 workflow 只能从一个 ref 触发」的矛盾:workflow 从不从触发它的 tag 去推断该发哪些包。
+
+### workspace 内部引用走 `workspace:` 协议
+
+所有指向 workspace 成员的引用都用 `workspace:^`,由 `pnpm pack` 替换成匹配目标版本的范围:兄弟包的 `peerDependencies` 跟随族版本,指向 vendored 包的引用跟随那个包自己的版本线。Landlock 平台包保留 `workspace:*`(发布成精确版本),因为平台包与它的入口必须版本完全一致。
+
+`scripts/check-workspace-constraints.ts` 要求这个协议,所以新包无法再引入硬写的范围;同理,invariant companion 规则要求 `@deepseek-ai/dsh-invariants` 用 `workspace:^`。
+
+### 发布族对象
+
+这个领域里的实体是**发布族**:一组共享版本基线与 tag 命名、可整体发布的包。新增一族等于加一个子类和一条 workflow lane,不改核心。
+
+| 对象 | 职责 |
+|---|---|
+| `ReleaseFamily` | 一族的身份:成员发现、版本基线、tag 前缀、打包 payload 规则、已安装入口 |
+| `ReleaseMember` | 一个可发布包:目录、包名、版本、manifest |
+| `publishOrder` | 按运行时依赖的拓扑序,同层按包名排;遇到环是报错而不是随意定序 |
+| `pack` | 把整族打进一个目录并记录上传顺序 |
+| `verify` | 族的版本基线;发布时还要求本次运行来自该族的 tag、且成员可发布 |
+| `verify-packed-install` | 把一个或多个 pack 目录的 tarball 装进一次性 consumer,并驱动已安装的可执行入口 |
+| `publish` | 上面那三态 |
+| `process` / `tarball` | 启动命令、读取打包 tarball 的唯一正家,其中的入口守卫让每个脚本都可被 import |
+
+dsh 族套用仓库的发布 payload 策略(拒绝源码与声明映射)。vendored 族保留上游 payload,因为那些 manifest 导出 `./src/*`,去掉 `src` 会发出一个导出映射指向不存在文件的包。
+
+### workflow 形状:一次性 pack 全部,再统一 publish
+
+`pack` job 一趟遍历整个发布集,把每个成员打进同一个目录,写出上传顺序,整个目录作为一份 artifact 上传;`publish` job 下载那一份 artifact,按顺序逐个发布。发布集是一个整体——绝不会出现一半的包已经上了 registry、另一半还在构建。
+
+`pack` 无凭据,在每个 pull request 和每次 master push 上跑,所以一个 pull request 就能证明发布集仍能完整打出来。`publish` 是手动 dispatch,挂在 `npm-publish` environment 后面等人工审批,且既不构建也不重建——它上传的就是 pack 产出的字节。pack 的 run 按 ref 分组,并发的 pull request 不会互相顶掉;全局分组落在 publish job 上,因为 dist-tag 是共享的 registry 状态。
+
+dsh 的验证会一并安装 vendored 族的 pack 产物。harness 的包把 vendored 框架声明成 peer,而那些包属于另一条序列,无凭据的 job 无法从私有 registry 取到——所以 `release.yml` 为验证而打包 vendored 族,发布的仍只有自己那一份。
+
+### 本次带出的仓库改动
+
+| 项 | 内容 |
+|---|---|
+| 发布集 manifest | 去掉 `private: true`;补 `publishConfig.access: restricted` 与带各自 `directory` 的 `repository` |
+| 发布集边界 | `packages/*/*`、`apps/*`、`vendor/*` 的全部成员 |
+| 依赖协议 | workspace 内部引用为 `workspace:^`,由 `check-workspace-constraints.ts` 与 invariant companion 规则强制 |
+| 根 `AGENTS.md` | 「vendored 包是 `private: true`」这条约定不再成立 |
+| `vendor/README.md` | 记录「`src` 加入 `cordis` 的 `files`」这条本地修改 |
+| native 三包 | `publishConfig.access: restricted`,且其 workflow 不再传 `--access` |
+
+### 与先前提案的关系
+
+本 Note 取代 [以产物为先的 NPM 基线发布](../../proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md) 中的版本方案与发布集边界:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。
+
+## 曾考虑的替代方案
+
+**`-<时间戳>-<短 SHA>` 版本号。** 曾计划用于持续 dev 发布。它与「把发布版本留在仓库里」冲突:版本内嵌 commit SHA,而把版本写回会产生新的 commit,于是 SHA 只能指向被发布的父 commit,这条链要靠约定解释。改用数字版本后,`0.0.1-rc.1` 这类预发布号已经覆盖「先验证再正式发」。
+
+**用 `vendor/published.json` 账本记录每包的已发版本与 commit。** 这是 tag 方案之前的设计。它新增一份必须与 registry 不漂移的状态文件;per-package tag 提供同样的 commit 指针,而 tag 本来就要打,不引入第二处状态。
+
+**事件级 tag(`vendor-r1`、`vendor-r2`)。** 为「一次发布事件携带多个包版本」准备。既然由 registry 决定发什么,workflow 就不再从 tag 推断集合,per-package tag 够用,而且每个 tag 携带的是它自己那个包的真实版本。
+
+**把九个 vendored 包统一到一条 `4.0.x` 版本线。** 省掉变更检测,但 cosmokit 会从 `1.8.1` 跳到 `4.0.1`、丢失上游血缘;九包内部的上游范围(`^1.8.1` 之类)会立刻失配,必须改写 vendored manifest。
+
+**每次 vendor 发布把九包全部 patch+1,不做变更检测。** 机制最少,代价是内容与上一版逐字节相同的包也拿到新版本号。tag 把变更检测的成本压到「读一个 tag、跑一次 diff」,不值得为省这点让版本号虚涨。
+
+**只按版本号判断「是否已发布」,不比对内容。** 参照流程根本不查 registry:publish 逐个上传,重复版本由 npm 拒绝。只按版本号跳过会漏掉「改了代码没 bump」,而这是唯一会安静地把旧字节留在 registry 上的错误。代价是引入一次 registry 查询和对构建可复现性的依赖。
+
+**只做打包后安装验证,不起本地 registry。** 参照流程是把 tarball 解包成一棵树、用普通 Node 驱动,这绕过了版本范围解析。曾提议在 CI 里起本地 registry 补这一层,被否:产物正确性已由既有测试覆盖,发布路径由 master 的排练覆盖,而 pull request 只需证明发布集能打出来。用 `file:` 说明符安装依然会对每个内部依赖走一遍范围解析。
+
+**按入口闭包挑一部分包发。** 从 `@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend` 沿 `dependencies` 爬得到 156 个包,比全量少 61 个。但本仓的插件是 `cordis.yml` 按名字挂载的、不是被 import 的:`vendor/cordis-plugin-group` 与 `vendor/cordis-plugin-logger-console` 落在依赖闭包之外,却是运行时必需。照代码依赖挑的失败形态是「消费方装完起不来」,而且要额外持续证明「没漏任何挂载项」。私有 scope 下多出来的包对组织外不可见。`python/`、根 `examples/`、`docs/` 与 `website/` 不是成员。
+
+**在 `scripts/publish-npm-baseline.ts` 上扩展。** 它是本机发布脚本,把 pack 与 publish 放在同一进程,与「无凭据 pack、受保护 publish」的分离相反。它验证过的零件——payload 校验与已安装产物探针——被搬运复用,以免 `pnpm run duplication` 判重复。
+
+**一个 workflow 用 `family` 输入选择序列。** 两套版本模型塞进一个文件,会让 concurrency 组、tag 前缀、排练触发条件全部分叉成条件表达式。一族一个文件更短也更好读。
+
+**在发布期改写依赖范围。** 与协议相比,改写逻辑只在 CI 执行过,本机 `pnpm install` 看不出它是否正确,而且每次发布都要重来一遍。
+
+**在 CI 里执行 bump 并把版本推回仓库。** 需要给 workflow 仓库写权限,且发布分支上的版本 commit 会与人的 commit 竞争。bump 与 commit 留在本地,CI 只核对与上传。
+
+## 后果
+
+发布脚本是带入口守卫的可 import 模块,其判断都有单测覆盖:tag 命名、发布顺序与环报告、版本基线运算、payload 变更判据,以及各族的 payload 策略。第一版带过的两个缺陷——publish 命令在 import 时执行了 pack 命令、变更判据对 `vendor/cordis` 的源码改动失明——正是这类测试在对应接缝上能抓住的。
+
+一个 pull request 会为两条序列跑完整的 pack(无凭据),并把打包好的 dsh tarball 装进一次性 consumer,用普通 Node 驱动 `dsh --version`。这个探针刻意只有一条命令:它证明 `files` 选出了完整 payload、发布出去的范围可解析,不涉及任何交互行为。
+
+代价:
+
+- **tag 可能与 registry 漂移。** 为失败发布而推的 tag 由 bump 的 registry 核对拦下,但只在有凭据的地方;未鉴权的机器只报告这道核对被跳过。
+- **变更判据依赖 tag 可见。** shallow clone 或未拉 tag 会把 vendored 族的判据退化成「全部首发」。`fetch-depth: 0` 是前提,不是优化。
+- **协议改写触及 1504 处依赖声明。** 它不改变本机解析(pnpm 本来就从 workspace 解析),但改变了发布出去的范围写法。
+- **私有包需要凭据才能安装。** 任何消费方——CI、沙箱 e2e、外部使用者——都要持有 scope 凭据,Landlock 三包也在其中;它们从未发布过,所以没有切断既有的匿名安装路径。
+- **`repository` 指向的组织与运行 workflow 的组织不同。** 用 token 发布不受影响;npm provenance(OIDC)要求二者一致,届时要么把 `repository` 改指过去,要么从它指向的组织发布。
+- **字节可复现性是假定的,没有实测。** 「integrity 相同则跳过」这一态建立在「同一 commit 两次 pack 得到相同字节」之上。目前没有任何东西测量过它:若构建嵌入了绝对路径或时间,重跑会误报失败。在第一次可能被重跑的发布之前实测,若不成立就退到比对 tarball 内逐文件内容哈希。
+- **用较旧的 artifact 重跑 publish 会把 `latest` 拉回旧版。** 发布是按版本决定的,所以在较新版本之后重发较旧的一批,会让稳定 dist-tag 再次指向旧版。排练用的是预发布版本,它永远不占 `latest`。
+- **首发是一次大步。** 九个 vendored 包与整个 dsh 集一次发出,任何 payload 缺陷都会集中在同一次发布里暴露——这正是先用预发布版本把完整链路走一遍的理由。
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
deleted file mode 100644
index 76798fc636..0000000000
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.i18n.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
-# side as of the last confirmed-consistent state. Both languages carry equal authority;
-# after editing either side, bring the other along and re-record with:
-# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
-2026-08-10-npm-release-sequences.md: bfe4ccaeddee3713445a3ffb77d575e4af207ae2
-2026-08-10-npm-release-sequences.zh.md: 3df42748429ac62e8131bfe22e4ebaafb4943b32
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
deleted file mode 100644
index bfe4ccaedd..0000000000
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# Agent Note: Private npm publication as three independent sequences
-
-Status: proposed
-
-English | [中文](2026-08-10-npm-release-sequences.zh.md)
-
-## Problem
-
-This repository holds three unrelated groups of publishable packages and no channel that sends any of them to a registry.
-
-`packages/*/*` and `apps/*` form the runtime surface of `@deepseek-ai/dsh`; `vendor/*` holds nine rescoped Cordis framework packages, each carrying its upstream version; `native/landlock-run/packages/*` holds Linux platform packages that already have `landlock-run-release.yml`. The three differ in version baseline, change rate, and build requirements: dsh moves with the product, vendor moves only when upstream is re-synced or a local modification changes, and native needs a musl toolchain and one build per architecture. Forcing them through one pipeline means every product release republishes the framework and the native binaries.
-
-Two hard blockers sit in the current state. All 217 workspace manifests set `private: true`, which npm refuses to publish. The subtler one is 933 hard-written `peerDependencies: "^0.0.1"` entries between sibling dsh packages: `pnpm pack` substitutes the `workspace:` protocol but leaves semver ranges alone, and `^0.0.1` means `>=0.0.1 <0.0.2` — it excludes `0.0.2`, and semver excludes prereleases from a range without a prerelease of its own, so it excludes `0.0.1-rc.1` too. Those 933 entries have never failed only because the version has never left `0.0.1`.
-
-The existing `scripts/publish-npm-baseline.ts` is a local publication script: it packs and publishes in one process, needs a human to authenticate and retry on their own machine, and excludes vendor from its release set. It cannot be the basis for CI publication, but its tarball payload validation and installed-artifact probes are verified parts.
-
-## Proposal
-
-### Three independent sequences
-
-`packages/`, `vendor/`, and `native/` each get one bump sequence and one publication, sharing no version, no trigger, and no waiting. Releasing dsh does not republish vendor; releasing vendor does not republish native.
-
-| Sequence | Members | Version baseline | Tag | Workflow |
-|---|---|---|---|---|
-| dsh | `packages/*/*` + `apps/*` (`@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend`) | one version for the whole family, `0.0.x` | `dsh-v` | `release.yml` (new) |
-| vendored framework | the nine `vendor/*` packages | each package on its own version line | `vendor--v` (one per package) | `release-vendor.yml` (new) |
-| native | `native/landlock-run/packages/*` | its own `0.0.x` | `landlock-run-v` | `landlock-run-release.yml` (unchanged) |
-
-All three publish privately to the `@deepseek-ai` scope on npmjs.com (`npm publish --access restricted`).
-
-### Versions land in the repository from a local command; CI only checks and uploads
-
-Each sequence has one `bump and commit` command: derive the target version, write it into the relevant manifests, run `pnpm install --lockfile-only`, self-check immediately, then `git add` the manifests and the lockfile and commit. The published version is therefore readable from the repository, and "which version went out" is never a question. A human creates the tag after the commit merges to master; CI never writes to the repository and needs no write permission.
-
-The dsh sequence shares one version across the family and accepts `major | minor | patch | x.y.z`. A prerelease version such as `0.0.1-rc.1` drives pack, the installed-artifact probes, and one real private publication end to end first; numbered versions like `0.0.1` and `0.0.2` follow once that passes. The dist-tag decision is the one this repository already makes in `landlock-run-release.yml`: a version with a prerelease segment publishes under `--tag next`, anything else takes `latest`.
-
-### vendor: publish what changed, and let tags be the ledger
-
-The vendored packages are decoupled from upstream by their scope but keep their own version lines. The published version is the upstream version with its prerelease segment dropped and its patch incremented:
-
-| Package | Upstream version | First published version |
-|---|---|---|
-| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
-| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
-| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
-| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
-| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
-| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
-| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
-| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
-| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
-
-Only changed packages publish, and the change judgement adds no state file: **each package has its own tag, and that tag records the commit it last published from**. For each package, bump reads the newest `vendor--v*` tag and runs `git diff ..HEAD -- vendor/`; a difference means patch+1, no difference means skip, and a missing tag means the first publication from the table above. The diff considers only paths that reach the tarball (the `files` rules in `scripts/publication-payload.ts`), so editing a comment inside a vendored package does not trigger a release.
-
-A tag is a commit pointer, not proof of publication — a tag created for a publication that then failed must be recognizable. So bump also asks the registry whether the version that tag names exists, and fails for a human to resolve when it does not, rather than guessing. Querying a private package needs authentication; the check is skipped on a machine that is not logged in and enforced in CI.
-
-The dependency ranges *inside* the nine vendored packages need no rewrite: `^1.8.1` admits `1.8.2` and `^1.0.0-rc.5` admits `1.0.1`, so patch+1 always lands inside the range.
-
-### Publication runs only on GitHub, and the registry decides what goes out
-
-Publication runs only from GitHub Actions; there is no local publication path. That makes the registry check a mandatory CI step instead of something with a bypass for an unauthenticated machine.
-
-Publish reads no tag and no manifest of "what this release includes". For each member it compares the manifest version against the registry, in three states:
-
-| State | Action |
-|---|---|
-| the registry does not have that version | publish |
-| the registry has it, and the tarball's sha512 equals the recorded `dist.integrity` | skip: this is a re-run over one artifact |
-| the registry has it, and the integrity differs | fail, reporting content changed without a version bump |
-
-The third state is the point of the rule: it catches code that changed without a version bump. The first two provide idempotence — re-running publish over one artifact republishes nothing and needs no manual selection of packages.
-
-The same rule resolves the tension between one vendor release carrying several tags and a workflow that can only run from one ref: the workflow never infers which packages to publish from the tag it ran from. The dsh sequence behaves identically with one version: the difference is either the whole set or nothing.
-
-The third state depends on a reproducible build — packing the same commit twice must produce the same bytes. That must be measured, not assumed: if `pnpm run build` embeds absolute paths or timestamps, integrity drifts while content is unchanged and the third state reports a false failure. Before this lands, pack the same commit twice in CI and compare integrity; if it is not reproducible, compare per-file content hashes inside the tarball instead and exclude the fields that drift.
-
-### Rewrite workspace-internal references to `workspace:^`, once
-
-Every reference to a workspace member becomes `workspace:^`, so `pnpm pack` substitutes a range that matches the target version:
-
-| Surface | Count | Effect |
-|---|---|---|
-| sibling dsh `peerDependencies` | 933 | `0.0.2` and `0.0.1-rc.1` both get a matching range |
-| dep / peer / devDep pointing at vendor | 105 + 221 + 218 | no dsh-side rewrite after a vendor patch+1, and no range that goes stale as vendor increments |
-
-`scripts/check-workspace-constraints.ts` currently asserts that the vendor peer and dev ranges are equal; both become `workspace:^`, so the assertion still holds but its wording changes with it.
-
-This is what makes "no dependency rewriting at publication time" possible: publication does one thing, which is packing bytes.
-
-### Release family objects
-
-The entity in this domain is a **release family**: a set of packages sharing one version baseline and tag naming that publishes as a unit. Adding a family means adding a family description and one workflow lane, not changing the core.
-
-| Object | Responsibility |
-|---|---|
-| `ReleaseFamily` | a family's identity: member discovery, version policy, tag naming, publish target. A new release family lands here |
-| `ReleaseMember` | one publishable package: directory, manifest, family, position in publish order |
-| `VersionPolicy` | where the version comes from. `SharedSemver` (dsh: one version for the family) and `PerPackageChanged` (vendor: change judged by tag, prerelease dropped, patch incremented) |
-| `ReleaseSet` | a family's members in topological order over `dependencies`, ties broken by package name for determinism |
-| `PackedBundle` | the tarballs plus `publish-order.txt` and its metadata: the only handoff between pack and publish |
-| `PublishTarget` | registry, access, dist-tag, credential source. The dist-tag derives from the version's shape |
-| `VersionInvariant` | the family's versions agree; publication runs from the family's tag; the tag version equals the package version; the target version is absent from the registry |
-| `PayloadInvariant` | tarball content validation, reusing `scripts/publication-payload.ts` |
-| `InstalledProbe` | a throwaway consumer outside the repository installs from the tarballs and drives the installed entry with plain Node: `dsh --version`, `dsh --dump-default-config`, and one TUI startup to ready and exit. Moved over from `scripts/publish-npm-baseline.ts` |
-
-### Workflow shape: pack everything at once, then publish as one set
-
-The shape comes from the reference flow (`release.yml` and `scripts/pack-release.mjs` in node-addon-require-builtin): the `pack` job walks the whole release set once, running `pnpm --dir pack --pack-destination ` per member, writes `publish-order.txt`, and uploads that directory as **one** artifact; the `publish` job downloads that artifact and runs `npm publish` per entry in `publish-order.txt`. The release set is one unit — half the packages can never reach the registry while the other half is still building.
-
-The `pack` job carries no credentials: install, verify, build, pack, installed-artifact verification, upload-artifact. The `publish` job sits behind the `npm-publish` environment for human approval, runs `setup-node` and `download-artifact` only, and **neither checks out nor builds** — it uploads the bytes pack produced. Checkout uses `fetch-depth: 0`, because the vendor change judgement reads history and tags.
-
-The environment is the only brake in the flow: pack has no credentials and can be rehearsed freely, and only publish stops for approval. GitHub needs an `NPM_TOKEN` secret (an automation token with publish rights on the scope) and an `npm-publish` environment (required reviewers, allowed tags limited to `dsh-v*`, `vendor-*`, and `landlock-run-v*`).
-
-### Pull requests run as far as pack
-
-The reference flow only has `workflow_dispatch`, so it verifies nothing on a pull request. Here `pull_request` runs the full pack: install, verify, build, pack per member, upload the tarball artifact. What it proves is that this release set still packs completely; it uses no credentials, touches no registry, and runs for pull requests from forks. The artifacts' own correctness is covered by existing tests and is not repeated at this layer.
-
-The publication path is exercised from master: `push: master` runs the same pack rehearsal as a post-merge regression, and `workflow_dispatch` with `publish: true` performs a real publication from a tag.
-
-### Repository changes
-
-| Item | Content |
-|---|---|
-| release-set manifests | drop `private: true`; add `publishConfig.access: restricted` and `repository` (`git+https://github.com/deepseek-ai/deepseek-harness.git` plus each package's `directory`) |
-| release-set boundary | every member of `packages/*/*`, `apps/*`, and `vendor/*`; no smaller selection |
-| dependency protocol | workspace-internal references become `workspace:^`, with `check-workspace-constraints.ts` updated |
-| root `AGENTS.md` | it states that vendored packages are rescoped and `private: true`; vendor now publishes, so that convention changes |
-| `vendor/README.md` | its manifest table records the upstream version, kept distinct from the version we publish |
-| the three native packages | `publishConfig.access` moves from `public` to `restricted`; they have never been published, so no anonymous install path exists to preserve |
-
-### Relationship to the existing proposal
-
-This Agent Note replaces the version scheme and the release-set boundary in [artifact-first npm baseline publication](2026-08-04-artifact-first-npm-baseline-publication.md): its `--` prerelease versions and `dev-` dist-tag are not adopted, and vendor is no longer excluded from the release set. What both agree on stays: pack and publish are separate, publish consumes only verified tarballs, and the payload and installed-artifact probes are release gates.
-
-## Alternatives considered
-
-**A `--` version.** Planned for continuous dev publication. It conflicts with keeping the published version in the repository: the version embeds a commit SHA, and writing the version back produces a new commit, so the SHA can only name the parent commit that was published and the link needs a convention to explain it. With numbered versions, a prerelease such as `0.0.1-rc.1` already covers "verify first, then release".
-
-**A `vendor/published.json` ledger recording each package's published version and commit.** This preceded the tag design. It adds a state file that must not drift from the registry. A per-package tag gives the same commit pointer, and the tag has to exist anyway, so it introduces no second copy of the state.
-
-**Event-level tags (`vendor-r1`, `vendor-r2`).** Prepared for one release event carrying several package versions. Once the registry decides what publishes, the workflow no longer infers the set from the tag, so per-package tags suffice — and each one names its own package's real version.
-
-**Putting the nine vendored packages on one `4.0.x` line.** It removes change detection, but cosmokit would jump from `1.8.1` to `4.0.1` and lose its upstream lineage; the upstream ranges inside the nine (`^1.8.1` and friends) would stop matching immediately, forcing a rewrite of the vendored manifests.
-
-**Incrementing every vendored package on every vendor release, with no change detection.** The least machinery, at the cost of new version numbers for packages whose content is byte-identical to the previous release. Tags reduce change detection to reading one tag and running one diff, which is not worth trading for inflated version numbers.
-
-**Deciding "already published" from the version alone, without comparing content.** The reference flow queries no registry at all: publish uploads each tarball and npm rejects a duplicate version. Skipping on the version alone misses code that changed without a bump, which is the only failure that quietly leaves stale bytes on the registry. The cost is a registry query and a dependency on reproducible builds.
-
-**Verifying only the packed install, with no local registry.** This is what the reference flow does: unpack the tarballs into a tree and drive it with plain Node. It bypasses version-range resolution, so in principle it cannot prove that 200-odd interdependent packages install from a registry. Running a local registry in CI to cover that layer was proposed and rejected: artifact correctness is already covered by existing tests, the publication path is exercised by the master rehearsal, and a pull request only needs to prove the release set packs.
-
-**Selecting a subset by entry closure.** Crawling `dependencies` from `@deepseek-ai/dsh` and `@deepseek-ai/dsh-frontend` yields 156 packages, 61 fewer than the whole set. But this repository's plugins are mounted by name from `cordis.yml` rather than imported: `vendor/cordis-plugin-group` and `vendor/cordis-plugin-logger-console` fall outside the dependency closure while being required at runtime. Selecting by code dependency fails as "the consumer installs it and it will not start", and it would need a standing proof that no mounted package was missed. The release set is therefore all of `packages/*/*`, `apps/*`, and `vendor/*`; under a private scope the extra packages are invisible outside the organization. `python/`, the root `examples/`, `docs/`, and `website/` are not members.
-
-**Extending `scripts/publish-npm-baseline.ts`.** It is a local publication script that packs and publishes in one process, the opposite of separating credential-free packing from protected publication. Its verified parts — payload validation and installed-artifact probes — are reused so `pnpm run duplication` does not report clones.
-
-**One workflow with a `family` input.** Two version models in one file forks the concurrency group, the tag prefix, and the rehearsal triggers into conditional expressions. One file per family is both shorter and easier to read.
-
-**Rewriting dependency ranges at publication time.** Compared with rewriting them to `workspace:^` once, the rewrite runs only in CI, a local `pnpm install` cannot show whether it is correct, and it repeats on every release.
-
-**Running bump in CI and pushing the version back.** It needs repository write permission for the workflow, and a version commit on the release branch races human commits. The reference flow leaves bump and commit to local commands and lets CI check and upload.
-
-## Acceptance criteria
-
-1. The three sequences release independently: releasing dsh modifies no vendor or native manifest, and the converse holds.
-2. `pnpm release:dsh ` performs bump and commit in one command, and the resulting commit carries the family's manifests and the lockfile and self-checks immediately.
-3. `pnpm release:vendor` increments the patch only for packages whose tarball content changed since their `vendor--v*` tag, and leaves the manifests of unchanged packages alone.
-4. `pull_request` runs the full pack and produces the tarball artifact, with no credentials and no access to a real registry, including for pull requests from forks.
-5. `push: master` runs the same pack rehearsal; a real publication can only come from `workflow_dispatch` with `publish: true` from that family's tag.
-6. Re-running publish over one artifact republishes no existing version, and when a version exists whose tarball integrity differs, publish fails and names the package.
-7. A throwaway consumer outside the repository installs `@deepseek-ai/dsh@0.0.1-rc.1` and drives `--version`, `--dump-default-config`, and one TUI startup with plain Node.
-8. Every workspace-internal reference is `workspace:^`, the packed tarballs carry no `workspace:` remnant, and no range points at a version that does not exist.
-9. No release-set member sets `private: true`, and each one sets `publishConfig.access: restricted`.
-
-## Risks
-
-**Tags drifting from the registry.** A tag created for a publication that then failed makes the next bump treat the package as published. Bump asks the registry whether the version the tag names exists and fails when it does not; on a machine that is not logged in to the private registry that check is skipped, and only the same check in CI catches it.
-
-**The change judgement depends on visible tags.** A shallow clone, or a checkout without tags, breaks the vendor judgement and degrades it to "publish everything for the first time". `fetch-depth: 0` is a precondition of the judgement, not an optimization.
-
-**`workspace:^` touches a large surface.** It rewrites 1477 dependency declarations at once. It does not change local resolution — pnpm already resolves from the workspace — but it changes the ranges that go out, and the workspace constraint gate changes with it.
-
-**The visibility cost of private packages.** After `--access restricted`, every consumer — CI, sandbox e2e, and outside users — needs scope credentials to install. The three native packages move to `restricted` as well; they have never been published, so no existing anonymous install path is cut off.
-
-**The `repository` field names a different organization than the one running the workflow.** The release set points consumers at `github.com/deepseek-ai/deepseek-harness`, which is not where these workflows run. Token-based publication is unaffected; npm provenance (OIDC) requires the two to agree, so adopting it means either repointing `repository` or publishing from the organization it names.
-
-**The first publication is one large step.** Nine vendored packages and the whole dsh set publish at once, so any payload defect surfaces in a single release. Driving the complete path with `0.0.1-rc.1` first is the only mitigation, which is why numbered versions wait for that to pass.
diff --git a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
deleted file mode 100644
index 3df4274842..0000000000
--- a/.agents/notes/proposed/process/2026-08-10-npm-release-sequences.zh.md
+++ /dev/null
@@ -1,188 +0,0 @@
-# Agent Note: 三条独立序列的私有 NPM 发布
-
-Status: proposed
-
-[English](2026-08-10-npm-release-sequences.md) | 中文
-
-## 问题
-
-这个仓库有三组互不相干的可发布包,但没有任何发布通道把它们送上 registry。
-
-`packages/*/*` 与 `apps/*` 组成 `@deepseek-ai/dsh` 的运行时闭包;`vendor/*` 是九个 rescope 过的 Cordis 框架包,各自带着上游的版本号;`native/landlock-run/packages/*` 是 Linux 平台包,已有自己的 `landlock-run-release.yml`。三组的版本基线、变更节奏和构建要求都不同:dsh 随产品迭代,vendor 只在同步上游或改动本地修改时才动,native 需要 musl 工具链和逐架构构建。把它们塞进一条发布流水线,等于每次产品发版都要重发框架和原生二进制。
-
-当前状态还有两处硬门。全部 217 个 workspace manifest 都是 `private: true`,直接 `npm publish` 发不出去。更隐蔽的是 933 条 dsh 兄弟包之间硬写的 `peerDependencies: "^0.0.1"`:`pnpm pack` 只替换 `workspace:` 协议,不动语义范围,而 `^0.0.1` 等于 `>=0.0.1 <0.0.2`——发 `0.0.2` 落不进去,发 `0.0.1-rc.1` 也落不进去(semver 规定不带预发布段的范围排除预发布版本)。这 933 条至今没出事,只因为版本一直停在 `0.0.1`。
-
-本仓已有的 `scripts/publish-npm-baseline.ts` 是本机发布脚本:它把 pack 与 publish 放进同一个进程,需要人工在本机完成认证与重试,且把 vendor 排除在发布集之外。它不能作为 CI 发布的基础,但其中的 tarball payload 校验与已安装产物探针是验证过的零件。
-
-## 提案
-
-### 三条独立序列
-
-`packages/`、`vendor/`、`native/` 各自一条 bump 序列、各自一次发布,不共享版本号、不共享触发、不互相等待。发 dsh 不重发 vendor,发 vendor 不重发 native。
-
-| 序列 | 成员 | 版本基线 | tag | workflow |
-|---|---|---|---|---|
-| dsh | `packages/*/*` + `apps/*`(`@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend`) | 全族一个 `0.0.x` | `dsh-v<版本>` | `release.yml`(新增) |
-| vendored framework | `vendor/*` 九个包 | 每包各自的上游版本线 | `vendor-<包名>-v<版本>`(每包一个) | `release-vendor.yml`(新增) |
-| native | `native/landlock-run/packages/*` | 自己的 `0.0.x` | `landlock-run-v<版本>` | `landlock-run-release.yml`(现状不动) |
-
-三组一律发到 npmjs.com 的 `@deepseek-ai` scope 下的**私有包**(`npm publish --access restricted`)。native 三个包现在写的是 `access: public`,要改成 `restricted`。
-
-### 版本由本地命令写进仓库,CI 只核对与上传
-
-每条序列有一条 `bump and commit` 命令:算出目标版本 → 写进相关 manifest → `pnpm install --lockfile-only` → 立刻自检 → `git add` manifest 与 lockfile → commit。发布版本因此在仓库里查得到,不存在「发出去的是哪个版本说不清楚」。tag 由人工在合入 master 后打,CI 不写仓库、不需要写权限。
-
-dsh 序列全族共用一个版本,接受 `major | minor | patch | x.y.z` 三种入参与显式版本号。先用 `0.0.1-rc.1` 这类预发布号把 pack、仓外安装探针、真实私有发布跑通一遍,验证通过后再发 `0.0.1`、`0.0.2` 这样的数字版本。dist-tag 沿用本仓 `landlock-run-release.yml` 已有的判定:版本带预发布段就 `--tag next`,否则进 `latest`。
-
-### vendor:谁改了谁发版,tag 就是账本
-
-vendor 九包加了 scope 之后与上游脱钩,但保留各自的版本线。发布版本 = 去掉预发布段后 patch+1,首发目标:
-
-| 包 | 上游版本 | 首发版本 |
-|---|---|---|
-| `@deepseek-ai/cordis` | 4.0.0-rc.7 | 4.0.1 |
-| `@deepseek-ai/cordis-plugin-loader` | 1.0.0-rc.5 | 1.0.1 |
-| `@deepseek-ai/cosmokit` | 1.8.1 | 1.8.2 |
-| `@deepseek-ai/schemastery` | 3.18.0 | 3.18.1 |
-| `@deepseek-ai/cordis-plugin-hmr` | 1.0.15 | 1.0.16 |
-| `@deepseek-ai/cordis-plugin-include` | 1.0.4 | 1.0.5 |
-| `@deepseek-ai/cordis-plugin-timer` | 1.1.2 | 1.1.3 |
-| `@deepseek-ai/cordis-plugin-group` | 1.0.0 | 1.0.1 |
-| `@deepseek-ai/cordis-plugin-logger-console` | 1.0.0 | 1.0.1 |
-
-只发改动过的包。变更判据不引入新的状态文件:**每包一个 tag,tag 就是「上次发布到哪个 commit」的记录**。bump 对每个包取最新的 `vendor-<包名>-v*` tag,`git diff <该 tag>..HEAD -- vendor/<目录>` 有差异就 patch+1,没差异就跳过;查不到 tag 就按上表首发。差异只看会进 tarball 的路径(复用 `scripts/publication-payload.ts` 的 `files` 规则),改动 vendor 内的注释不触发发版。
-
-tag 只是 commit 指针,不是「已发布」的证明——打了 tag 而 publish 失败的情况必须能识别。所以 bump 还要向 registry 核对「tag 所指版本确实存在」,不一致时明确失败交人处理,不让脚本猜。私有包查询需要鉴权,本机未登录时跳过这条核对,CI 里强制执行。
-
-vendor 九包**内部**的依赖范围不用改:`^1.8.1` 容纳 `1.8.2`、`^1.0.0-rc.5` 容纳 `1.0.1`,patch+1 永远落在范围内。
-
-### publish 只在 GitHub 执行,用 registry 状态决定发什么
-
-发布只从 GitHub Actions 执行,没有本机发布路径。这让「向 registry 核对」成为 CI 里的强制步骤,不需要为本机未鉴权的情况留旁路。
-
-publish 不读 tag、不读任何清单,对发布集里每个包比较 manifest 版本与 registry 上的已发布状态,按三态处置:
-
-| 状态 | 处置 |
-|---|---|
-| registry 上没有该版本 | 发布 |
-| 已有该版本,且 tarball 的 sha512 与 registry 记录的 `dist.integrity` 相同 | 跳过,属于同一批产物的重跑 |
-| 已有该版本,但 integrity 不同 | 失败退出,报「内容已变但版本未 bump」 |
-
-第三态是这条规则的目的:它拦住「改了代码却没 bump 版本」。前两态给出的是幂等——同一个 artifact 重跑 publish 不会重复发布,也不需要人工挑拣包。
-
-这条规则同时解决了一次发布事件产生多个 vendor tag、而 workflow 只能从一个 ref 触发的矛盾:workflow 不需要从 tag 推断本次该发哪些包。dsh 序列同构处理,它只有一个版本,差集要么全发要么全跳。
-
-第三态依赖同输入构建可复现(同一 commit 两次 pack 得到相同字节)。这一点必须实测确认,不能假定:`pnpm run build` 的产物若嵌入绝对路径或时间,integrity 就会在内容未变时漂移,第三态会误报。落地前先在 CI 上对同一 commit 连跑两次 pack 比对 integrity;若不可复现,则把比较下沉到 tarball 内的逐文件内容哈希,并明确排除导致漂移的字段。
-
-
-### 一次性把 workspace 内部引用改成 `workspace:^`
-
-仓库里所有指向 workspace 成员的引用统一成 `workspace:^`,由 `pnpm pack` 在发布时替换成匹配目标版本的范围。
-
-| 面 | 数量 | 效果 |
-|---|---|---|
-| dsh 兄弟包 `peerDependencies` | 933 | 发 `0.0.2` 或 `0.0.1-rc.1` 都自动得到匹配的范围 |
-| 指向 vendor 的 dep / peer / devDep | 105 + 221 + 218 | vendor patch+1 后不需要改写 dsh 侧引用,范围也不会随 vendor 递增而过期 |
-
-`scripts/check-workspace-constraints.ts` 现在断言 vendor peer 与 dev 的范围相等,改后两边都是 `workspace:^`,断言仍成立但语义要随之更新。
-
-这条是「发布期不做任何依赖改写」的前提:发布期只做一件事——pack 出字节。
-
-### 发布族对象
-
-领域里的实体是**发布族**:一组共享版本基线与 tag 前缀、可整体发布的包。新增一族等于新增一份族描述加一条 workflow lane,不改核心。
-
-| 对象 | 职责 |
-|---|---|
-| `ReleaseFamily` | 一族的身份:成员发现规则、版本策略、tag 命名、publish 目标。新增发布族在此落地 |
-| `ReleaseMember` | 一个可发布包:目录、manifest、族归属、发布顺序位次 |
-| `VersionPolicy` | 版本从哪来。`SharedSemver`(dsh:全族一个版本)与 `PerPackageChanged`(vendor:按 tag 判变更、去预发布段后 patch+1) |
-| `ReleaseSet` | 一族成员的拓扑序,按 `dependencies` 排、同层按包名排,保证确定性 |
-| `PackedBundle` | tarball 集合 + `publish-order.txt` + 元数据清单,是 pack 与 publish 之间唯一的交接物 |
-| `PublishTarget` | registry、access、dist-tag、凭据来源。dist-tag 由版本形态派生 |
-| `VersionInvariant` | 族内版本自洽;publish 必须从对应 tag 跑;tag 版本等于包版本;待发版本不得已存在于 registry |
-| `PayloadInvariant` | tarball 内容校验,复用 `scripts/publication-payload.ts` |
-| `InstalledProbe` | 仓外临时 consumer 从 tarball 安装后,用普通 Node 驱动已安装入口:`dsh --version`、`dsh --dump-default-config`、起一次 TUI 到就绪后退出。实现从 `scripts/publish-npm-baseline.ts` 搬运复用 |
-
-### workflow 形状:一次性 pack 全部,再统一 publish
-
-照参照流程(node-addon-require-builtin 的 `release.yml` 与 `scripts/pack-release.mjs`)的形状:`pack` job 一趟遍历整个发布集,逐包 `pnpm --dir <目录> pack --pack-destination <同一个目录>`,写出 `publish-order.txt`,整个目录作为**一份** artifact 上传;`publish` job 下载那一份 artifact,按 `publish-order.txt` 逐个 `npm publish`。发布集是一个整体,不存在「一半的包发出去了、另一半还在构建」。
-
-`pack` job 无凭据:install → verify → build → pack → 打包后安装验证 → upload-artifact。`publish` job 挂 `environment: npm-publish` 人工审批,只 `setup-node` 加 `download-artifact`,**不 checkout、不 build**,上传的就是 pack 出来的同一份字节。checkout 用 `fetch-depth: 0`,vendor 的变更判据需要历史与 tag。
-
-`environment` 是整条流程唯一的刹车:pack 无凭据、可随意排练;只有 publish 会停在审批上。GitHub 侧需要 `NPM_TOKEN` secret(对该 scope 有发布权限的 automation token)与 `npm-publish` environment(required reviewers,允许的 tag 限制为 `dsh-v*`、`vendor-*`、`landlock-run-v*`)。
-
-### PR 阶段跑到 pack 为止
-
-参照流程只有 `workflow_dispatch`,PR 上什么都验证不了。本仓在 `pull_request` 上跑完整的 pack:install → verify → build → 逐包 pack → 上传 tarball artifact。它证明的是「这个发布集现在能完整打出来」,无凭据、不碰任何 registry,fork 发来的 PR 也能跑。产物本身的正确性由既有测试覆盖,不在 PR 这一层重复。
-
-发布路径的测试走 master:`push: master` 跑同一套 pack 排练作为合入后回归,`workflow_dispatch` 带 `publish: true` 从 tag 走真实发布。
-
-
-
-### 仓库改造项
-
-| 项 | 内容 |
-|---|---|
-| 发布集 manifest | 去掉 `private: true`,补 `publishConfig.access: restricted` 与 `repository`(`git+https://github.com/deepseek-ai/deepseek-harness.git` + 各自 `directory`) |
-| 发布集边界 | `packages/*/*` + `apps/*` + `vendor/*` 全部成员,不另挑子集 |
-| 依赖协议 | workspace 内部引用统一 `workspace:^`,并更新 `check-workspace-constraints.ts` |
-| 根 `AGENTS.md` | 现在写着 vendored 包是 rescope 过且 `private: true`,vendor 要发布,这条约定要改 |
-| `vendor/README.md` | manifest 表补记上游版本,与我们发布的版本区分开 |
-| native 三包 | `publishConfig.access` 从 `public` 改 `restricted`;它们尚未发布过,所以没有匿名安装路径要保 |
-
-### 与既有提案的关系
-
-本 Note 取代 [以产物为先的 NPM 基线发布](2026-08-04-artifact-first-npm-baseline-publication.md) 中的版本方案与发布集边界两部分:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不再排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。
-
-## 考虑过的替代方案
-
-**`-<时间戳>-<短 SHA>` 版本号。** 曾计划用它做持续 dev 发布。它与「版本必须落进代码库」冲突:版本内嵌 commit SHA,而把版本写回 manifest 会产生新的 commit,SHA 只能指向被发布的父 commit,链条要靠约定解释。改用数字版本递增后,`0.0.1-rc.1` 这类预发布号已经足够覆盖「先验证再正式发」的需求。
-
-**用 `vendor/published.json` 账本记录每包的已发版本与 commit。** 这是 tag 方案之前的设计,需要新增一份状态文件并保证它与 registry 不漂移。per-package tag 提供同样的 commit 指针,且 tag 本来就要打,不引入第二处状态。
-
-**事件级 tag(`vendor-r1`、`vendor-r2`)。** 为「一次发布事件多个包版本」准备的。改用 registry 差集决定发布集之后,workflow 不再需要从 tag 推断本次发布哪些包,per-package tag 就够用,而且每个 tag 携带的是它自己那个包的真实版本。
-
-**vendor 九包统一到 `4.0.x` 一条线。** 省掉变更检测,但 cosmokit 会从 `1.8.1` 跳到 `4.0.1`,上游血缘全部丢失;且九包内部的上游依赖范围(`^1.8.1` 之类)会立刻失配,必须改写 vendored manifest。
-
-**vendor 每次全部 patch+1,不做变更检测。** 最省事,代价是没有改动的包也拿到新版本号、内容与上一版逐字节相同。tag 方案让变更检测的成本降到「取一个 tag 加一次 diff」,不值得为省这点而让版本号虚涨。
-
-**只按版本号判断是否已发布,不比对内容。** 参照流程根本不查 registry,publish 直接逐个上传,重复版本由 npm 报错拦下。只按版本号跳过则会漏掉「改了代码没 bump」这一类,而这是唯一会安静地把旧字节留在 registry 上的错误。代价是引入对 registry 的查询与对构建可复现性的依赖。
-
-**只做打包后安装验证,不起本地 registry。** 参照流程就是这样:解包 tarball 组树、普通 Node 驱动。它绕过版本范围解析,理论上验证不了「200 多个互相依赖的包能不能从 registry 装起来」。曾提议在 CI 里起本地 registry 补这一层,被否:产物验证已由既有测试覆盖,发布路径的验证放在 master workflow 的排练里,PR 只需证明发布集能完整打出来。
-
-**以 `scripts/publish-npm-baseline.ts` 为基础扩展。** 它是本机发布脚本,把 pack 与 publish 放在同一进程,与「无凭据 pack、受保护 publish」的分离相反。它验证过的零件(payload 校验、已安装产物探针)搬运复用,避免 `pnpm run duplication` 判重复。
-
-**按入口闭包挑一部分包发。** 从 `@deepseek-ai/dsh` 与 `@deepseek-ai/dsh-frontend` 沿 `dependencies` 爬得到 156 个包,比全量少 61 个。但本仓的插件是 cordis.yml 按名字挂载的,不是被 import 的:`vendor/cordis-plugin-group` 与 `vendor/cordis-plugin-logger-console` 就落在依赖闭包之外,而它们是运行时必需。照代码依赖挑,漏掉的表现是消费方装完起不来,且要额外证明「没漏任何挂载项」。发布集因此取 `packages/*/*` + `apps/*` + `vendor/*` 全部;私有 scope 下多几个包不对外可见。`python/`、根 `examples/`、`docs/` 与 `website/` 不是发布集成员。
-
-**一个 workflow 用 `family` 输入选择序列。** 两套版本模型塞进一个文件会让 concurrency group、tag 前缀、排练触发条件全部分叉成条件表达式。一族一个文件更短也更好读。
-
-**在发布期改写依赖范围。** 与一次性改成 `workspace:^` 相比,改写逻辑只在 CI 执行过,本机 `pnpm install` 看不见它是否正确,且每次发布都要重跑一遍。
-
-**CI 里执行 bump 并把版本推回仓库。** 需要给 workflow 仓库写权限,且发布分支上的版本提交会与人的提交竞争。参照流程把 bump 与 commit 留在本地命令,CI 只核对与上传。
-
-## 验收标准
-
-1. 三条序列各自可独立发布:发 dsh 不改动 vendor 与 native 的任何 manifest,反之亦然。
-2. `pnpm release:dsh <版本>` 一条命令完成 bump 与 commit,产出的 commit 含全族 manifest 与 lockfile,且立刻自检通过。
-3. `pnpm release:vendor` 只对「自其 `vendor-<包名>-v*` tag 以来 tarball 内容有变化」的包 patch+1,无变化的包 manifest 不被改动。
-4. `pull_request` 上跑完整 pack 并产出 tarball artifact,无凭据、不访问真实 registry,fork 的 PR 也能跑。
-5. `push: master` 跑同一套 pack 排练;真实发布只能由 `workflow_dispatch` 带 `publish: true` 从对应 tag 触发。
-6. publish 重跑同一 artifact 不重复发布已存在的版本;当某个版本已存在而 tarball integrity 不同时,publish 失败并指明是哪个包。
-7. 仓外临时 consumer 安装 `@deepseek-ai/dsh@0.0.1-rc.1` 后,用普通 Node 能跑通 `--version`、`--dump-default-config` 与一次 TUI 启动。
-8. 所有 workspace 内部引用为 `workspace:^`,且 pack 出的 tarball 里没有任何 `workspace:` 残留、没有指向不存在版本的范围。
-9. 发布集内没有 `private: true`,每个成员都有 `publishConfig.access: restricted`。
-
-## 风险
-
-**tag 与 registry 漂移。** 打了 tag 但 publish 失败,会让下一次 bump 误判该包已发布。缓解手段是 bump 向 registry 核对 tag 所指版本,不一致就失败退出;但本机未登录私有 registry 时这条核对被跳过,此时误判只能由 CI 的同一条核对拦下。
-
-**变更判据依赖 tag 可见。** shallow clone 或未拉取 tag 会让 vendor 的判据失效并退化成「全部首发」。`fetch-depth: 0` 是这条判据的前提,不是优化。
-
-**`workspace:^` 改动面大。** 一次触及 1477 处依赖声明。它不改变本机解析行为(pnpm 本来就从 workspace 解析),但会改变发布出去的范围写法,且要同步更新 workspace 约束门。
-
-**私有包的可见性代价。** `--access restricted` 之后,任何消费方(含 CI、沙箱 e2e、外部使用者)都必须持有 scope 凭据才能安装。native 三包一并转 `restricted`;它们尚未发布过,因此没有既有的匿名安装路径被切断。
-
-**`repository` 指向的组织与运行 workflow 的组织不一致。** 发布集让消费方指向 `github.com/deepseek-ai/deepseek-harness`,而这些 workflow 并不跑在那里。用 token 发布不受影响;一旦改用 npm provenance(OIDC),npm 会要求二者一致,届时要么把 `repository` 改指过去,要么从它指向的组织发布。
-
-**首发一次性放大。** vendor 首发九包、dsh 首发全闭包,任何 payload 缺陷都会在同一次发布里暴露。用 `0.0.1-rc.1` 先跑一遍完整链路是唯一的缓解手段,正式版本号留给验证通过之后。
diff --git a/.github/workflows/landlock-run-release.yml b/.github/workflows/landlock-run-release.yml
index 7d78e98bc6..8448af1ad1 100644
--- a/.github/workflows/landlock-run-release.yml
+++ b/.github/workflows/landlock-run-release.yml
@@ -172,5 +172,7 @@ jobs:
tag_args=()
case "$version" in *-*) tag_args=(--tag next);; esac
while IFS= read -r tarball; do
- npm publish "dist/npm/${tarball}" --access public "${tag_args[@]}"
+ # No --access: publishConfig.access in each manifest decides, and a
+ # command-line flag would override it.
+ npm publish "dist/npm/${tarball}" "${tag_args[@]}"
done < dist/npm/publish-order.txt
diff --git a/.github/workflows/release-vendor.yml b/.github/workflows/release-vendor.yml
index dc778f3d21..c8af47251e 100644
--- a/.github/workflows/release-vendor.yml
+++ b/.github/workflows/release-vendor.yml
@@ -23,7 +23,9 @@ permissions:
contents: read
concurrency:
- group: ${{ github.workflow }}
+ # Pack runs per ref so concurrent pull requests never displace each
+ # other; the publish job below serializes the shared dist-tag state.
+ group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
@@ -96,9 +98,11 @@ jobs:
needs: pack
runs-on: ubuntu-24.04
environment: npm-publish
+ concurrency:
+ group: Release-publish
+ cancel-in-progress: false
permissions:
contents: read
- id-token: write
steps:
# Checkout and install carry the release scripts only; no build step.
- uses: actions/checkout@v6
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 6c7a7489f3..7659b3b5a3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -23,8 +23,9 @@ permissions:
contents: read
concurrency:
- # dist-tags are shared registry state; never race two release runs.
- group: ${{ github.workflow }}
+ # Pack runs per ref so concurrent pull requests never displace each
+ # other; the publish job below serializes the shared dist-tag state.
+ group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
@@ -103,9 +104,11 @@ jobs:
# Required reviewers and the allowed tags live on the environment; this is
# the only step in the sequence that can write to the registry.
environment: npm-publish
+ concurrency:
+ group: Release-publish
+ cancel-in-progress: false
permissions:
contents: read
- id-token: write
steps:
# Checkout and install carry the release scripts only. There is no build
# step: publication uploads the bytes the pack job produced.
diff --git a/apps/cli/package.json b/apps/cli/package.json
index 71f64a0f41..b8f0887ac6 100644
--- a/apps/cli/package.json
+++ b/apps/cli/package.json
@@ -20,10 +20,10 @@
],
"license": "BSD-3-Clause",
"dependencies": {
- "@deepseek-ai/cordis-plugin-hmr": "workspace:*",
- "@deepseek-ai/cordis-plugin-include": "workspace:*",
- "@deepseek-ai/cordis-plugin-loader": "workspace:*",
- "@deepseek-ai/cordis-plugin-timer": "workspace:*",
+ "@deepseek-ai/cordis-plugin-hmr": "workspace:^",
+ "@deepseek-ai/cordis-plugin-include": "workspace:^",
+ "@deepseek-ai/cordis-plugin-loader": "workspace:^",
+ "@deepseek-ai/cordis-plugin-timer": "workspace:^",
"@deepseek-ai/dsh-agent-tool-mode": "workspace:^",
"@deepseek-ai/dsh-app-boot": "workspace:^",
"@deepseek-ai/dsh-base": "workspace:^",
diff --git a/packages/bundle/base/package.json b/packages/bundle/base/package.json
index dc54c75012..9c5fc2a5a8 100644
--- a/packages/bundle/base/package.json
+++ b/packages/bundle/base/package.json
@@ -41,8 +41,8 @@
}
},
"dependencies": {
- "@deepseek-ai/cordis-plugin-hmr": "workspace:*",
- "@deepseek-ai/cordis-plugin-timer": "workspace:*",
+ "@deepseek-ai/cordis-plugin-hmr": "workspace:^",
+ "@deepseek-ai/cordis-plugin-timer": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-default-model": "workspace:^",
"@deepseek-ai/dsh-agent-loop": "workspace:^",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 16602cc946..646244da69 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -130,16 +130,16 @@ importers:
specifier: workspace:^
version: link:../../vendor/cordis
'@deepseek-ai/cordis-plugin-hmr':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../vendor/hmr
'@deepseek-ai/cordis-plugin-include':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../vendor/include
'@deepseek-ai/cordis-plugin-loader':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../vendor/loader
'@deepseek-ai/cordis-plugin-timer':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../vendor/timer
'@deepseek-ai/dsh-agent-tool-mode':
specifier: workspace:^
@@ -1205,10 +1205,10 @@ importers:
packages/bundle/base:
dependencies:
'@deepseek-ai/cordis-plugin-hmr':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../../vendor/hmr
'@deepseek-ai/cordis-plugin-timer':
- specifier: workspace:*
+ specifier: workspace:^
version: link:../../../vendor/timer
'@deepseek-ai/dsh-agent':
specifier: workspace:^
diff --git a/scripts/check-workspace-constraints.ts b/scripts/check-workspace-constraints.ts
index 30afce1e9f..cfc10fda49 100644
--- a/scripts/check-workspace-constraints.ts
+++ b/scripts/check-workspace-constraints.ts
@@ -378,8 +378,10 @@ function checkHierarchyShape(): string[] {
}
function checkRepositoryVersion(): string[] {
- if (repositoryVersion && /^\d+\.\d+\.\d+$/.test(repositoryVersion)) return []
- return ['package.json: version must be stable X.Y.Z']
+ // The root carries the dsh release family's version, so a prerelease such as
+ // 0.0.1-rc.1 is a valid state between `release:dsh` and its publication.
+ if (repositoryVersion && /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(repositoryVersion)) return []
+ return ['package.json: version must be X.Y.Z with an optional prerelease segment']
}
/** Dependency sections whose ranges reach a published tarball or a local install. */
diff --git a/scripts/release/bump.ts b/scripts/release/bump.ts
index 9755fd00c4..0f50ea6a9c 100644
--- a/scripts/release/bump.ts
+++ b/scripts/release/bump.ts
@@ -1,13 +1,13 @@
/**
* Bump one release family's version and commit it, so the published version is
* readable from the repository rather than derived inside CI
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*
- * The dsh family shares one version: `major`, `minor`, `patch`, or an explicit
- * `x.y.z` (including a prerelease such as `0.0.1-rc.1`). The vendored family
- * has one version line per package and publishes only what changed since that
- * package's own `vendor--v*` tag, which is the record of the commit it
- * last published from.
+ * The dsh family shares one version across its members and the workspace root:
+ * `major`, `minor`, `patch`, or an explicit `x.y.z` (including a prerelease such
+ * as `0.0.1-rc.1`). The vendored family has one version line per package and
+ * publishes only what changed since that package's own `vendor--v*`
+ * tag, which is the record of the commit it last published from.
*
* The version lands in the manifests, the lockfile follows, and a human creates
* the tag after the commit merges. CI never writes to the repository.
@@ -17,14 +17,39 @@ import { readFileSync, writeFileSync } from 'node:fs'
import { join, matchesGlob } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily, type ReleaseFamily, type ReleaseMember } from './families.ts'
-import { capture } from './process.ts'
+import { attempt, capture, isEntry } from './process.ts'
/** Files npm publishes whether or not `files` lists them. */
const ALWAYS_PUBLISHED = ['package.json', 'README*', 'LICENSE*', 'LICENCE*'] as const
+/**
+ * Inputs that decide what a built payload contains. A package whose `files`
+ * selects `lib/` publishes build output that git does not track, so a change to
+ * the sources or the build configuration changes the tarball while no published
+ * path appears in the diff.
+ */
+const BUILD_INPUTS = ['src/**', 'tsconfig*.json', 'tsdown.config.*', 'build.config.*'] as const
+
/** Release types the dsh family accepts besides an explicit version. */
const RELEASE_TYPES = ['major', 'minor', 'patch'] as const
+/** The workspace root manifest, which carries the dsh family's version. */
+const ROOT_MANIFEST = 'package.json'
+
+/** One manifest the bump rewrites, and the tag its new version will carry. */
+interface PlannedVersion {
+ /** Repository-relative manifest path. */
+ readonly manifestPath: string
+ /** Label for the log line. */
+ readonly label: string
+ /** The version the manifest currently carries. */
+ readonly from: string
+ /** The version to write. */
+ readonly to: string
+ /** The tag this version publishes from, or undefined for the workspace root. */
+ readonly tag: string | undefined
+}
+
/**
* Split a version into its release numbers, discarding any prerelease segment.
* @param version - the current version.
@@ -36,6 +61,18 @@ function releaseNumbers(version: string): [number, number, number] {
return [Number(match[1]), Number(match[2]), Number(match[3])]
}
+/**
+ * Order two versions by their release numbers alone.
+ * @param left - one version.
+ * @param right - the other version.
+ * @returns Negative when `left` is lower, positive when higher, zero when equal.
+ */
+function compareReleaseNumbers(left: string, right: string): number {
+ const [leftMajor, leftMinor, leftPatch] = releaseNumbers(left)
+ const [rightMajor, rightMinor, rightPatch] = releaseNumbers(right)
+ return leftMajor - rightMajor || leftMinor - rightMinor || leftPatch - rightPatch
+}
+
/**
* The next dsh version.
* @param current - the family's current shared version.
@@ -56,13 +93,19 @@ function nextSharedVersion(current: string, request: string): string {
}
/**
- * The version a vendored package publishes next: its release numbers with the
- * patch incremented, which also drops an upstream prerelease segment.
- * @param current - the package's current version.
+ * The version a vendored package publishes next: the higher of its manifest
+ * version and its last published version, with the patch incremented.
+ *
+ * The manifest alone is not the baseline. A vendor re-sync restores upstream's
+ * version, which is lower than what this repository already published, and
+ * incrementing that would name a version the registry already carries.
+ * @param current - the package's manifest version.
+ * @param published - the version its newest tag names, when it has one.
* @returns The target version.
*/
-function nextVendorVersion(current: string): string {
- const [major, minor, patch] = releaseNumbers(current)
+export function nextVendorVersion(current: string, published: string | undefined): string {
+ const baseline = published !== undefined && compareReleaseNumbers(published, current) > 0 ? published : current
+ const [major, minor, patch] = releaseNumbers(baseline)
return `${String(major)}.${String(minor)}.${String(patch + 1)}`
}
@@ -70,57 +113,147 @@ function nextVendorVersion(current: string): string {
* Whether a repository-relative path reaches the member's published payload.
* @param member - the member the path belongs to.
* @param path - repository-relative path.
- * @returns True when `files` (or npm's always-published set) selects it.
+ * @returns True when `files`, npm's always-published set, or a build input selects it.
*/
-function reachesPayload(member: ReleaseMember, path: string): boolean {
+export function reachesPayload(member: ReleaseMember, path: string): boolean {
const relative = path.slice(member.directory.length + 1)
const files = member.manifest.files
- const patterns = [
- ...ALWAYS_PUBLISHED,
- ...Array.isArray(files) ? files.filter((entry): entry is string => typeof entry === 'string') : [],
- ]
+ const selected = Array.isArray(files) ? files.filter((entry): entry is string => typeof entry === 'string') : []
+ const built = selected.some(pattern => pattern.startsWith('lib'))
+ const patterns = [...ALWAYS_PUBLISHED, ...selected, ...built ? BUILD_INPUTS : []]
return patterns.some(pattern =>
matchesGlob(relative, pattern) || matchesGlob(relative, `${pattern}/**`) || relative === pattern)
}
/**
- * The newest tag a member published from, or undefined when it never published.
+ * The newest version a member published, read from its tags.
* @param family - the member's family.
* @param member - the member.
- * @returns The tag name.
+ * @returns The version, or undefined when the member never published.
*/
-function lastPublishedTag(family: ReleaseFamily, member: ReleaseMember): string | undefined {
- const prefix = family.tagFor(member).replace(/-v[^-]*$/, '-v')
- const tags = capture('git', ['tag', '--list', `${prefix}*`, '--sort=-v:refname']).split('\n').filter(line => line !== '')
- return tags[0]
-}
-
-/**
- * Whether a member's published payload changed since it last published.
- * @param family - the member's family.
- * @param member - the member.
- * @returns True when the member needs a new version.
- */
-function changedSincePublication(family: ReleaseFamily, member: ReleaseMember): boolean {
- const tag = lastPublishedTag(family, member)
- if (tag === undefined) return true
- const changed = capture('git', ['diff', '--name-only', `${tag}..HEAD`, '--', member.directory])
+function lastPublishedVersion(family: ReleaseFamily, member: ReleaseMember): string | undefined {
+ const prefix = family.tagPrefixFor(member)
+ const [newest] = capture('git', ['tag', '--list', `${prefix}*`, '--sort=-v:refname'])
.split('\n').filter(line => line !== '')
- return changed.some(path => reachesPayload(member, path))
+ return newest === undefined ? undefined : newest.slice(prefix.length)
}
/**
- * Write a version into a member's manifest, preserving formatting and key order.
- * @param root - repository root.
- * @param member - the member to rewrite.
- * @param version - the target version.
+ * Confirm the registry carries the version a tag names.
+ *
+ * A tag is a commit pointer, not proof of publication: a tag pushed for a
+ * publication that then failed would otherwise read as "already published" and
+ * skip the package indefinitely. Querying a private package needs credentials,
+ * so an unauthenticated machine reports the gap instead of failing.
+ * @param name - package name.
+ * @param version - the version the tag names.
*/
-function writeVersion(root: string, member: ReleaseMember, version: string): void {
- const path = join(root, member.directory, 'package.json')
+function confirmPublished(name: string, version: string): void {
+ const result = attempt('npm', ['view', `${name}@${version}`, 'version'])
+ if (result.status === 0) return
+ const output = `${result.stdout}${result.stderr}`
+ if (output.includes('ENEEDAUTH') || output.includes('E401') || output.includes('E403')) {
+ console.log(`release bump: cannot reach the registry for ${name}@${version}; skipping the tag check`)
+ return
+ }
+ if (output.includes('E404') || output.includes('404 Not Found')) {
+ throw new Error(
+ `${name}@${version} is tagged but absent from the registry.`
+ + '\nThe tag was pushed for a publication that did not complete: re-run that publish, or delete the tag.',
+ )
+ }
+ throw new Error(`npm view ${name}@${version} failed:\n${output}`)
+}
+
+/**
+ * Write a version into a manifest, preserving formatting and key order.
+ * @param root - repository root.
+ * @param manifestPath - repository-relative manifest path.
+ * @param from - the version the manifest currently carries.
+ * @param to - the target version.
+ */
+function writeVersion(root: string, manifestPath: string, from: string, to: string): void {
+ const path = join(root, manifestPath)
const text = readFileSync(path, 'utf8')
- const line = `"version": "${member.version}"`
- if (!text.includes(line)) throw new Error(`${member.directory}: cannot locate ${line}`)
- writeFileSync(path, text.replace(line, `"version": "${version}"`))
+ const line = `"version": "${from}"`
+ if (!text.includes(line)) throw new Error(`${manifestPath}: cannot locate ${line}`)
+ writeFileSync(path, text.replace(line, `"version": "${to}"`))
+}
+
+/**
+ * Read the workspace root version.
+ * @param root - repository root.
+ * @returns The root manifest version.
+ */
+function rootVersion(root: string): string {
+ const manifest: unknown = JSON.parse(readFileSync(join(root, ROOT_MANIFEST), 'utf8'))
+ const version = (manifest as Record).version
+ if (typeof version !== 'string') throw new Error('package.json must declare a string version')
+ return version
+}
+
+/**
+ * Plan the dsh family's rewrite: one version for every member and the root.
+ * @param family - the dsh family.
+ * @param root - repository root.
+ * @param members - the family's members.
+ * @param request - `major`, `minor`, `patch`, or an explicit version.
+ * @returns The manifests to rewrite and the shared target version.
+ */
+function planShared(
+ family: ReleaseFamily,
+ root: string,
+ members: readonly ReleaseMember[],
+ request: string,
+): { planned: PlannedVersion[]; version: string } {
+ const [first] = members
+ if (first === undefined) throw new Error(`release family ${family.id} has no members`)
+ const version = nextSharedVersion(first.version, request)
+ // The workspace root carries the family version too: the workspace constraint
+ // requires every member's version to equal the root's.
+ const planned: PlannedVersion[] = [
+ { manifestPath: ROOT_MANIFEST, label: ROOT_MANIFEST, from: rootVersion(root), to: version, tag: undefined },
+ ]
+ for (const member of members) {
+ planned.push({
+ manifestPath: join(member.directory, 'package.json'),
+ label: member.directory,
+ from: member.version,
+ to: version,
+ tag: family.tagFor({ ...member, version }),
+ })
+ }
+ return { planned, version }
+}
+
+/**
+ * Plan the vendored family's rewrite: every package whose payload changed since
+ * it last published.
+ * @param family - the vendored family.
+ * @param members - the family's members.
+ * @returns The manifests to rewrite.
+ */
+function planPerPackage(family: ReleaseFamily, members: readonly ReleaseMember[]): PlannedVersion[] {
+ const planned: PlannedVersion[] = []
+ for (const member of members) {
+ const published = lastPublishedVersion(family, member)
+ if (published !== undefined) {
+ confirmPublished(member.name, published)
+ const since = `${family.tagPrefixFor(member)}${published}`
+ const changed = capture('git', ['diff', '--name-only', `${since}..HEAD`, '--', member.directory])
+ .split('\n').filter(line => line !== '')
+ if (!changed.some(path => reachesPayload(member, path))) continue
+ }
+ const to = nextVendorVersion(member.version, published)
+ planned.push({
+ manifestPath: join(member.directory, 'package.json'),
+ label: member.directory,
+ from: member.version,
+ to,
+ tag: family.tagFor({ ...member, version: to }),
+ })
+ }
+ return planned
}
/** Bump the family named by `--family` and commit; `--dry-run` only reports the plan. */
@@ -136,21 +269,17 @@ function main(): void {
const members = family.members(root)
family.verifyVersions(members)
- const planned: { member: ReleaseMember; version: string }[] = []
+ let planned: PlannedVersion[]
let sharedVersion: string | undefined
if (family.id === 'dsh') {
const request = positionals[0]
if (request === undefined) throw new Error('usage: release:dsh ')
- const [first] = members
- if (first === undefined) throw new Error(`release family ${family.id} has no members`)
- sharedVersion = nextSharedVersion(first.version, request)
- for (const member of members) planned.push({ member, version: sharedVersion })
+ const shared = planShared(family, root, members, request)
+ planned = shared.planned
+ sharedVersion = shared.version
} else {
if (positionals.length > 0) throw new Error('release:vendor takes no version: each package increments its own patch')
- for (const member of members) {
- if (!changedSincePublication(family, member)) continue
- planned.push({ member, version: nextVendorVersion(member.version) })
- }
+ planned = planPerPackage(family, members)
}
if (planned.length === 0) {
@@ -160,25 +289,25 @@ function main(): void {
const dryRun = values['dry-run']
if (!dryRun) {
- for (const { member, version } of planned) writeVersion(root, member, version)
+ for (const entry of planned) writeVersion(root, entry.manifestPath, entry.from, entry.to)
capture('pnpm', ['install', '--lockfile-only'])
}
const summary = sharedVersion
- ?? planned.map(entry => `${entry.member.name.replace('@deepseek-ai/', '')} ${entry.version}`).join(', ')
+ ?? planned.map(entry => `${entry.label.replace('vendor/', '')} ${entry.to}`).join(', ')
console.log(`release bump: family ${family.id} -> ${summary}`)
- for (const { member, version } of planned) console.log(` ${member.directory}: ${member.version} -> ${version}`)
+ for (const entry of planned) console.log(` ${entry.label}: ${entry.from} -> ${entry.to}`)
if (dryRun) {
console.log('release bump: dry run, nothing written')
return
}
- capture('git', ['add', 'pnpm-lock.yaml', ...planned.map(entry => join(entry.member.directory, 'package.json'))])
+ capture('git', ['add', 'pnpm-lock.yaml', ...planned.map(entry => entry.manifestPath)])
capture('git', ['commit', '-m', `release(${family.id}): ${summary}`])
- // The dsh family tags once for its shared version; vendor tags each package.
- const tags = [...new Set(planned.map(entry => family.tagFor({ ...entry.member, version: entry.version })))]
console.log('release bump: committed. After this merges to master, tag it:')
- for (const tag of tags) console.log(` git tag ${tag} && git push origin ${tag}`)
+ for (const tag of [...new Set(planned.map(entry => entry.tag).filter(tag => tag !== undefined))]) {
+ console.log(` git tag ${tag} && git push origin ${tag}`)
+ }
}
-main()
+if (isEntry(import.meta.url)) main()
diff --git a/scripts/release/families.spec.ts b/scripts/release/families.spec.ts
new file mode 100644
index 0000000000..34faf36ddc
--- /dev/null
+++ b/scripts/release/families.spec.ts
@@ -0,0 +1,146 @@
+/** Release family discovery, publish order, tag naming, and the bump judgements. */
+
+import { describe, expect, it } from 'vitest'
+import { releaseFamily, type ReleaseMember } from './families.ts'
+import { nextVendorVersion, reachesPayload } from './bump.ts'
+
+/**
+ * A release member standing in for a manifest on disk.
+ * @param directory - repository-relative package directory.
+ * @param name - package name.
+ * @param manifest - manifest fields the subject reads.
+ * @returns The member.
+ */
+function member(directory: string, name: string, manifest: Record = {}): ReleaseMember {
+ return { directory, name, version: '0.0.1', manifest }
+}
+
+describe('release families', () => {
+ it('names one tag for the whole dsh family and one per vendored package', () => {
+ const dsh = releaseFamily('dsh')
+ const vendor = releaseFamily('vendor')
+ const cli = member('apps/cli', '@deepseek-ai/dsh')
+ const cordis = { ...member('vendor/cordis', '@deepseek-ai/cordis'), version: '4.0.1' }
+
+ expect(dsh.tagFor(cli)).toBe('dsh-v0.0.1')
+ expect(vendor.tagFor(cordis)).toBe('vendor-cordis-v4.0.1')
+ // The prefix is constructed, not recovered from a tag: a version with a
+ // hyphen would defeat any suffix-stripping.
+ expect(vendor.tagPrefixFor({ ...cordis, version: '4.0.0-rc.7' })).toBe('vendor-cordis-v')
+ expect(vendor.tagFor({ ...cordis, version: '4.0.0-rc.7' })).toBe('vendor-cordis-v4.0.0-rc.7')
+ })
+
+ it('rejects a family whose members disagree on the shared version', () => {
+ const dsh = releaseFamily('dsh')
+ const members = [member('apps/cli', '@deepseek-ai/dsh'), { ...member('apps/web', '@deepseek-ai/dsh-frontend'), version: '0.0.2' }]
+
+ expect(() => dsh.verifyVersions(members)).toThrow(/must share one version/)
+ expect(() => dsh.verifyVersions([members[0]!])).not.toThrow()
+ })
+
+ it('accepts independent vendored versions and rejects an unpublishable one', () => {
+ const vendor = releaseFamily('vendor')
+ const members = [
+ { ...member('vendor/cordis', '@deepseek-ai/cordis'), version: '4.0.1' },
+ { ...member('vendor/cosmokit', '@deepseek-ai/cosmokit'), version: '1.8.2' },
+ ]
+
+ expect(() => vendor.verifyVersions(members)).not.toThrow()
+ expect(() => vendor.verifyVersions([{ ...members[0]!, version: 'latest' }])).toThrow(/unpublishable version/)
+ })
+
+ it('publishes a dependency before its consumer, and orders ties by name', () => {
+ const dsh = releaseFamily('dsh')
+ const members = [
+ member('packages/a/consumer', '@deepseek-ai/dsh-consumer', { dependencies: { '@deepseek-ai/dsh-library': 'workspace:^' } }),
+ member('packages/a/library', '@deepseek-ai/dsh-library'),
+ member('packages/a/zebra', '@deepseek-ai/dsh-zebra'),
+ ]
+
+ expect(dsh.publishOrder(members).map(entry => entry.name)).toEqual([
+ '@deepseek-ai/dsh-library',
+ '@deepseek-ai/dsh-consumer',
+ '@deepseek-ai/dsh-zebra',
+ ])
+ })
+
+ it('reports a runtime dependency cycle instead of emitting an arbitrary order', () => {
+ const dsh = releaseFamily('dsh')
+ const members = [
+ member('packages/a/left', '@deepseek-ai/dsh-left', { dependencies: { '@deepseek-ai/dsh-right': 'workspace:^' } }),
+ member('packages/a/right', '@deepseek-ai/dsh-right', { dependencies: { '@deepseek-ai/dsh-left': 'workspace:^' } }),
+ ]
+
+ expect(() => dsh.publishOrder(members)).toThrow(/dependency cycle/)
+ })
+
+ it('applies the harness payload policy to dsh and keeps upstream payloads for vendored packages', () => {
+ const dsh = releaseFamily('dsh')
+ const vendor = releaseFamily('vendor')
+ const harness = member('packages/a/library', '@deepseek-ai/dsh-library')
+ const vendored = member('vendor/cordis', '@deepseek-ai/cordis')
+
+ expect(() => dsh.validatePayload(harness, ['package/lib/index.js', 'package/src/index.ts']))
+ .toThrow(/publishes source file/)
+ expect(() => vendor.validatePayload(vendored, ['package/lib/index.js', 'package/src/index.ts'])).not.toThrow()
+ expect(() => vendor.validatePayload(vendored, [])).toThrow(/empty tarball/)
+ })
+
+ it('drives the installed entry only for the family that publishes one', () => {
+ expect(releaseFamily('dsh').installedEntry).toEqual({ packageName: '@deepseek-ai/dsh', binPath: 'lib/bin.js' })
+ expect(releaseFamily('vendor').installedEntry).toBeUndefined()
+ })
+
+ it('rejects an unknown family identifier', () => {
+ expect(() => releaseFamily('native')).toThrow(/unknown release family/)
+ })
+})
+
+describe('vendored version baseline', () => {
+ it('drops an upstream prerelease segment and increments the patch', () => {
+ expect(nextVendorVersion('4.0.0-rc.7', undefined)).toBe('4.0.1')
+ expect(nextVendorVersion('1.0.0-rc.5', undefined)).toBe('1.0.1')
+ expect(nextVendorVersion('1.8.1', undefined)).toBe('1.8.2')
+ })
+
+ it('increments from the last published version when a re-sync restored a lower one', () => {
+ // Upstream moved rc.7 -> rc.8 after this repository published 4.0.1;
+ // incrementing the manifest alone would name 4.0.1 a second time.
+ expect(nextVendorVersion('4.0.0-rc.8', '4.0.1')).toBe('4.0.2')
+ expect(nextVendorVersion('4.1.0', '4.0.1')).toBe('4.1.1')
+ })
+})
+
+describe('payload change judgement', () => {
+ const sourceShipping = member('vendor/cosmokit', '@deepseek-ai/cosmokit', {
+ files: ['lib/index.js', 'lib/types/**/*.d.ts', 'src'],
+ })
+ const buildOutputOnly = member('vendor/cordis', '@deepseek-ai/cordis', {
+ files: ['lib/index.js', 'lib/types/**/*.d.ts', 'bin.js'],
+ })
+
+ it('counts the manifest and the files npm always publishes', () => {
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/package.json')).toBe(true)
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/README.md')).toBe(true)
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/src/index.ts')).toBe(true)
+ })
+
+ it('counts build inputs for a package whose payload is build output', () => {
+ // cordis publishes lib/ only, and lib/ is not tracked: without this, a real
+ // source change reads as "nothing changed" and the next publish fails on a
+ // version whose bytes moved.
+ expect(reachesPayload(buildOutputOnly, 'vendor/cordis/src/context.ts')).toBe(true)
+ expect(reachesPayload(buildOutputOnly, 'vendor/cordis/tsconfig.json')).toBe(true)
+ })
+
+ it('ignores paths no tarball carries', () => {
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/tests/unit.spec.ts')).toBe(false)
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/CHANGELOG.md')).toBe(false)
+ // The README pattern is deliberately loose: over-reporting a change costs one
+ // unnecessary patch bump, while under-reporting fails the next publish on a
+ // version whose bytes moved.
+ expect(reachesPayload(sourceShipping, 'vendor/cosmokit/README.i18n.yaml')).toBe(true)
+ expect(reachesPayload(member('packages/a/library', '@deepseek-ai/dsh-library', { files: ['lib/index.js'] }),
+ 'packages/a/library/tests/library.spec.ts')).toBe(false)
+ })
+})
diff --git a/scripts/release/families.ts b/scripts/release/families.ts
index 78f5de1951..e4c5fda5be 100644
--- a/scripts/release/families.ts
+++ b/scripts/release/families.ts
@@ -3,7 +3,7 @@
* (`packages/` + `apps/`, `vendor/`, and `native/`) and the two this module
* owns: `dsh` and `vendor`. Each family carries its own version baseline, tag
* naming, and publish set, so releasing one never republishes another
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*
* The family dimension lives here only. A new sequence adds a subclass and a
* `releaseFamilies()` entry; nothing else in the release scripts branches on it.
@@ -162,12 +162,22 @@ export abstract class ReleaseFamily {
*/
abstract verifyVersions(members: readonly ReleaseMember[]): void
+ /**
+ * The tag prefix a member's versions are tagged under. Every tag for that
+ * member starts with it, which is how the last published version is found.
+ * @param member - the member being published.
+ * @returns The prefix, ending in `-v`.
+ */
+ abstract tagPrefixFor(member: ReleaseMember): string
+
/**
* The tag a member publishes from.
* @param member - the member being published.
* @returns The full tag name, without `refs/tags/`.
*/
- abstract tagFor(member: ReleaseMember): string
+ tagFor(member: ReleaseMember): string {
+ return `${this.tagPrefixFor(member)}${member.version}`
+ }
/**
* Check what a member's packed tarball carries.
@@ -202,12 +212,11 @@ class DshFamily extends ReleaseFamily {
}
/**
- * The single family tag.
- * @param member - any family member; all carry the same version.
- * @returns `dsh-v`.
+ * The single family prefix: every member shares one version, so one tag names it.
+ * @returns `dsh-v`.
*/
- tagFor(member: ReleaseMember): string {
- return `${this.tagPrefix}${member.version}`
+ tagPrefixFor(): string {
+ return this.tagPrefix
}
/**
@@ -243,12 +252,12 @@ class VendorFamily extends ReleaseFamily {
}
/**
- * The member's own tag, because one vendor release can carry several versions.
+ * A prefix per member, because one vendor release can carry several versions.
* @param member - the member being published.
- * @returns `vendor--v`.
+ * @returns `vendor--v`.
*/
- tagFor(member: ReleaseMember): string {
- return `${this.tagPrefix}${member.name.replace('@deepseek-ai/', '')}-v${member.version}`
+ tagPrefixFor(member: ReleaseMember): string {
+ return `${this.tagPrefix}${member.name.replace('@deepseek-ai/', '')}-v`
}
/**
diff --git a/scripts/release/pack.ts b/scripts/release/pack.ts
index 5c50ebca4b..47a33a26ac 100644
--- a/scripts/release/pack.ts
+++ b/scripts/release/pack.ts
@@ -4,14 +4,14 @@
*
* The pack step is the release boundary: it runs without credentials, produces
* every tarball from one commit, and hands the publish step exactly those bytes
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*/
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'
import { join, resolve } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily, tarballName, type ReleaseFamily, type ReleaseMember } from './families.ts'
-import { run } from './process.ts'
+import { isEntry, run } from './process.ts'
import { PUBLISH_ORDER_FILE, tarballFiles } from './tarball.ts'
/** Where pack output lands when `--out` is omitted. */
@@ -58,4 +58,4 @@ function main(): void {
console.log(`release pack: family ${family.id}, ${String(order.length)} tarball(s) in ${values.out ?? DEFAULT_OUTPUT}`)
}
-main()
+if (isEntry(import.meta.url)) main()
diff --git a/scripts/release/process.ts b/scripts/release/process.ts
index 3e8c6943bd..746f24ac36 100644
--- a/scripts/release/process.ts
+++ b/scripts/release/process.ts
@@ -4,6 +4,8 @@
*/
import { spawnSync } from 'node:child_process'
+import { realpathSync } from 'node:fs'
+import { fileURLToPath } from 'node:url'
/** Where and with what environment a release step runs a command. */
export interface RunOptions {
@@ -63,3 +65,18 @@ export function run(command: string, args: readonly string[], options: RunOption
if (result.error !== undefined) throw result.error
if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} exited with ${String(result.status)}`)
}
+
+/**
+ * Whether this module is the process entry point.
+ *
+ * The release scripts are both commands and modules: a test imports their pure
+ * logic, and importing a module runs its body, so an unguarded `main()` would
+ * run the wrong command with the wrong arguments.
+ * @param moduleUrl - the caller's `import.meta.url`.
+ * @returns True when Node started this module.
+ */
+export function isEntry(moduleUrl: string): boolean {
+ const invoked = process.argv[1]
+ if (invoked === undefined) return false
+ return realpathSync(invoked) === realpathSync(fileURLToPath(moduleUrl))
+}
diff --git a/scripts/release/publish.ts b/scripts/release/publish.ts
index bd0b2d8552..b180ce1aba 100644
--- a/scripts/release/publish.ts
+++ b/scripts/release/publish.ts
@@ -6,7 +6,7 @@
* version whose published tarball has the same integrity is skipped, and a
* version whose published tarball differs fails the run — that last case means
* the content changed without a version bump
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*
* Skipping on identical integrity is what makes re-running the publish step over
* the same artifact safe.
@@ -17,7 +17,7 @@ import { readFileSync } from 'node:fs'
import { join, resolve } from 'node:path'
import { parseArgs } from 'node:util'
import { releaseFamily } from './families.ts'
-import { attempt, run } from './process.ts'
+import { attempt, isEntry, run } from './process.ts'
import { packedIdentity, readPublishOrder } from './tarball.ts'
/** npm access level for every package this repository publishes. */
@@ -98,4 +98,4 @@ function main(): void {
console.log(`release publish: family ${family.id}, ${String(published)} published, ${String(skipped)} already present`)
}
-main()
+if (isEntry(import.meta.url)) main()
diff --git a/scripts/release/verify-packed-install.ts b/scripts/release/verify-packed-install.ts
index 7b970212ab..10fb824147 100644
--- a/scripts/release/verify-packed-install.ts
+++ b/scripts/release/verify-packed-install.ts
@@ -8,7 +8,7 @@
* and those packages live in another release sequence that this credential-free
* job cannot fetch from a private registry — so a dsh verification passes the
* vendored family's pack output too, while publishing only its own
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*
* What this proves is that `files` selected a complete payload and that the
* published dependency ranges resolve. A workspace link or a stale `lib/` in the
@@ -21,7 +21,7 @@ import { join, resolve } from 'node:path'
import { pathToFileURL } from 'node:url'
import { parseArgs } from 'node:util'
import { releaseFamily } from './families.ts'
-import { capture } from './process.ts'
+import { capture, isEntry } from './process.ts'
import { packedIdentity, readPublishOrder } from './tarball.ts'
/**
@@ -105,4 +105,4 @@ function main(): void {
}
}
-main()
+if (isEntry(import.meta.url)) main()
diff --git a/scripts/release/verify.ts b/scripts/release/verify.ts
index 98988de18d..1bd74c84d6 100644
--- a/scripts/release/verify.ts
+++ b/scripts/release/verify.ts
@@ -4,10 +4,11 @@
*
* Publication happens only from GitHub Actions, so the tag and publishability
* checks are gates on the workflow, not advisory local warnings
- * ([rationale](../../.agents/notes/proposed/process/2026-08-10-npm-release-sequences.md)).
+ * ([rationale](../../.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md)).
*/
import { parseArgs } from 'node:util'
+import { isEntry } from './process.ts'
import { releaseFamily, type ReleaseFamily, type ReleaseMember } from './families.ts'
/**
@@ -66,4 +67,4 @@ function main(): void {
console.log(`release verify: family ${family.id}, ${String(members.length)} member(s), ${summary}${publishing ? ', publish gates passed' : ''}`)
}
-main()
+if (isEntry(import.meta.url)) main()
diff --git a/vendor/README.md b/vendor/README.md
index e83f9b4140..0d889e87fd 100644
--- a/vendor/README.md
+++ b/vendor/README.md
@@ -47,6 +47,7 @@ Keep this log exhaustive — every divergence from upstream must be listed.
15. **Lazy Loader config resolution across `cordis/src/{events,fiber}.ts`, `loader/src/{index,config/entry}.ts`, `include/src/index.ts`, and `hmr/src/index.ts`**: ports [cordiverse/cordis#41](https://github.com/cordiverse/cordis/pull/41), retaining raw fiber config and resolving it through `internal/config` only after declared injections are active. Provider replacement re-resolves the raw expression, pending updates retain it, and HMR transfers it. Resolution applies only to the entry root, so child plugins mounted by a row keep caller-owned config identity. Include adds a static entry-config resolver so its own options interpolate while nested row `!!js` nodes remain deferred. Deferred failures retain the owning row diagnostic, and tree teardown does not persist failure-driven self-disposal. Covered by `packages/boot/app-boot/tests/{app-boot,user-patches}.spec.ts`, `packages/boot/cmdline/tests/cmdline.spec.ts`, `apps/cli/tests/web-agent-presets.e2e.ts`, and the built custom-profile cases in `apps/cli/tests/built-bin.e2e.ts`.
16. **In-memory Loader entry activation in `loader/src/config/entry.ts`**: an invocation can activate a row shipped with `disabled: true` without mutating its serialized options. The override belongs to the mounted entry object, survives Include config reapplication, respects disabled ancestors, and disappears with the entry. Covered by `packages/boot/cmdline/tests/cmdline.spec.ts` and `apps/web/tests/hmr-live.e2e.ts`.
17. **`@deepseek-ai` rescope**: every vendored manifest `name`, every internal dependency entry among the vendored set, and every module specifier that reaches them use the scoped names in the manifest table's `npm name` column. Directory names, version numbers, and dependency ranges are unchanged, and no upstream runtime identifier is renamed — `Symbol.for('schemastery')` and Schemastery's `vendor:` metadata field keep their upstream values. Re-apply with `pnpm run rescope-vendor --apply` after a sync; the table's two name columns are the mapping, restated for consumers in [docs/rescope.md](../docs/rescope.md).
+18. **`cordis/package.json` publishes `src`**: added `src` to the `files` list, joining the other eight vendored packages. Cordis declares `"./src/*": "./src/*"` in its exports, so a tarball without `src` publishes an export map pointing at absent files; the release change judgement also reads `files` to decide whether a diff reaches the payload, and a package whose only published paths are build output has no tracked path to match.
## Sync procedure
diff --git a/vendor/cordis/package.json b/vendor/cordis/package.json
index 576ea209a7..ef4df3eb1d 100644
--- a/vendor/cordis/package.json
+++ b/vendor/cordis/package.json
@@ -27,7 +27,8 @@
"lib/index.js",
"lib/types/**/*.d.ts",
"lib/types/**/*.d.ts.map",
- "bin.js"
+ "bin.js",
+ "src"
],
"author": "Shigma ",
"license": "MIT",
From 21db3220d681628581a91ca23ea0fe595f73d482 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:39:01 +0800
Subject: [PATCH 14/15] fix(release): omit optional dependencies from the
packed install
The Landlock platform packages sit behind optionalDependencies, and npm fails
the install on their 404 rather than skipping them: they belong to the native
sequence, whose pack needs a musl toolchain and one build per architecture, so
this job cannot produce them and holds no credentials to fetch them. A consumer
that cannot install them must still start, which is what optional means here.
The release spec also gains block bodies where the lint rule rejects returning a
void expression from an arrow shorthand.
---
.../2026-08-10-npm-release-sequences.i18n.yaml | 4 ++--
.../2026-08-10-npm-release-sequences.md | 2 ++
.../2026-08-10-npm-release-sequences.zh.md | 2 ++
scripts/release/families.spec.ts | 18 +++++++++---------
scripts/release/verify-packed-install.ts | 7 ++++++-
5 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
index 4246b4c62a..632b8b3d0d 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
-2026-08-10-npm-release-sequences.md: 23c5f26c7be2b87d1ef2edffdd3f79a87cf1f9a1
-2026-08-10-npm-release-sequences.zh.md: 77b772460d0bf6b66ae6924c7bab1dfe0860b401
+2026-08-10-npm-release-sequences.md: 7efe5c9a1c3aa30d4c0a52aa5983b61a01f514cd
+2026-08-10-npm-release-sequences.zh.md: cca853bae3f0b19dbf50aca0f2cf32aa573293ef
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
index 23c5f26c7b..7efe5c9a1c 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
@@ -101,6 +101,8 @@ The `pack` job walks the whole release set once, packing each member into one di
A dsh verification installs the vendored family's pack output too. The harness packages declare the vendored framework as a peer, those packages live in another sequence, and the credential-free job cannot fetch them from a private registry — so `release.yml` packs the vendored family for verification while publishing only its own set.
+The verification omits optional dependencies. The Landlock platform packages behind them belong to the native sequence, whose pack needs a musl toolchain and one build per architecture, so a job on one runner cannot produce them; a consumer that cannot install them must still start, which is what optional means here.
+
### Repository changes this carried
| Item | Content |
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
index 77b772460d..cca853bae3 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
@@ -101,6 +101,8 @@ dsh 族套用仓库的发布 payload 策略(拒绝源码与声明映射)。v
dsh 的验证会一并安装 vendored 族的 pack 产物。harness 的包把 vendored 框架声明成 peer,而那些包属于另一条序列,无凭据的 job 无法从私有 registry 取到——所以 `release.yml` 为验证而打包 vendored 族,发布的仍只有自己那一份。
+验证会略去可选依赖。它们背后的 Landlock 平台包属于 native 序列,那条序列的 pack 需要 musl 工具链且每个架构各构建一次,单台 runner 产不出来;而装不到它们的消费方也必须能起——这正是「可选」在这里的含义。
+
### 本次带出的仓库改动
| 项 | 内容 |
diff --git a/scripts/release/families.spec.ts b/scripts/release/families.spec.ts
index 34faf36ddc..054fd900ac 100644
--- a/scripts/release/families.spec.ts
+++ b/scripts/release/families.spec.ts
@@ -34,8 +34,8 @@ describe('release families', () => {
const dsh = releaseFamily('dsh')
const members = [member('apps/cli', '@deepseek-ai/dsh'), { ...member('apps/web', '@deepseek-ai/dsh-frontend'), version: '0.0.2' }]
- expect(() => dsh.verifyVersions(members)).toThrow(/must share one version/)
- expect(() => dsh.verifyVersions([members[0]!])).not.toThrow()
+ expect(() => { dsh.verifyVersions(members) }).toThrow(/must share one version/)
+ expect(() => { dsh.verifyVersions([members[0]!]) }).not.toThrow()
})
it('accepts independent vendored versions and rejects an unpublishable one', () => {
@@ -45,8 +45,8 @@ describe('release families', () => {
{ ...member('vendor/cosmokit', '@deepseek-ai/cosmokit'), version: '1.8.2' },
]
- expect(() => vendor.verifyVersions(members)).not.toThrow()
- expect(() => vendor.verifyVersions([{ ...members[0]!, version: 'latest' }])).toThrow(/unpublishable version/)
+ expect(() => { vendor.verifyVersions(members) }).not.toThrow()
+ expect(() => { vendor.verifyVersions([{ ...members[0]!, version: 'latest' }]) }).toThrow(/unpublishable version/)
})
it('publishes a dependency before its consumer, and orders ties by name', () => {
@@ -71,7 +71,7 @@ describe('release families', () => {
member('packages/a/right', '@deepseek-ai/dsh-right', { dependencies: { '@deepseek-ai/dsh-left': 'workspace:^' } }),
]
- expect(() => dsh.publishOrder(members)).toThrow(/dependency cycle/)
+ expect(() => { dsh.publishOrder(members) }).toThrow(/dependency cycle/)
})
it('applies the harness payload policy to dsh and keeps upstream payloads for vendored packages', () => {
@@ -80,10 +80,10 @@ describe('release families', () => {
const harness = member('packages/a/library', '@deepseek-ai/dsh-library')
const vendored = member('vendor/cordis', '@deepseek-ai/cordis')
- expect(() => dsh.validatePayload(harness, ['package/lib/index.js', 'package/src/index.ts']))
+ expect(() => { dsh.validatePayload(harness, ['package/lib/index.js', 'package/src/index.ts']) })
.toThrow(/publishes source file/)
- expect(() => vendor.validatePayload(vendored, ['package/lib/index.js', 'package/src/index.ts'])).not.toThrow()
- expect(() => vendor.validatePayload(vendored, [])).toThrow(/empty tarball/)
+ expect(() => { vendor.validatePayload(vendored, ['package/lib/index.js', 'package/src/index.ts']) }).not.toThrow()
+ expect(() => { vendor.validatePayload(vendored, []) }).toThrow(/empty tarball/)
})
it('drives the installed entry only for the family that publishes one', () => {
@@ -92,7 +92,7 @@ describe('release families', () => {
})
it('rejects an unknown family identifier', () => {
- expect(() => releaseFamily('native')).toThrow(/unknown release family/)
+ expect(() => { releaseFamily('native') }).toThrow(/unknown release family/)
})
})
diff --git a/scripts/release/verify-packed-install.ts b/scripts/release/verify-packed-install.ts
index 10fb824147..f4e5c4b07f 100644
--- a/scripts/release/verify-packed-install.ts
+++ b/scripts/release/verify-packed-install.ts
@@ -92,7 +92,12 @@ function main(): void {
const environment = consumerEnvironment(consumerRoot)
console.log(`release verify-packed-install: installing ${String(packed.size)} tarball(s) into ${consumerRoot}`)
- capture('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false'], { cwd: consumerRoot, env: environment })
+ // Optional dependencies are omitted: the platform packages behind them
+ // belong to the native release sequence, this job holds no credentials for
+ // the private scope, and a consumer that cannot install them must still
+ // start — which is what optional means here.
+ capture('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false', '--omit=optional'],
+ { cwd: consumerRoot, env: environment })
const bin = join(consumerRoot, 'node_modules', ...entry.packageName.split('/'), entry.binPath)
const version = capture(process.execPath, [bin, '--version'], { cwd: consumerRoot, env: environment })
From ae75aca77608533760dbe88c190b1f198b556825 Mon Sep 17 00:00:00 2001
From: imccyu <276526105+imccyu@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:48:56 +0800
Subject: [PATCH 15/15] fix(release): supply the Landlock entry tarball to the
packed install
dsh-sandbox-local declares @deepseek-ai/node-addon-landlock-run in
dependencies, not optionalDependencies, so omitting optional dependencies left
npm resolving it from a registry that does not carry it. The dsh pack job now
packs that entry for verification; its own platform packages stay out, being
optional and needing a musl toolchain per architecture.
The verification reads each directory by its contents rather than a pack order
file, because a directory packed only to satisfy a cross-sequence dependency has
no release order to describe.
---
...2026-08-10-npm-release-sequences.i18n.yaml | 4 ++--
.../2026-08-10-npm-release-sequences.md | 2 +-
.../2026-08-10-npm-release-sequences.zh.md | 2 +-
.github/workflows/release.yml | 10 +++++++-
scripts/release/verify-packed-install.ts | 23 ++++++++++++-------
5 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
index 632b8b3d0d..61728f400d 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
-2026-08-10-npm-release-sequences.md: 7efe5c9a1c3aa30d4c0a52aa5983b61a01f514cd
-2026-08-10-npm-release-sequences.zh.md: cca853bae3f0b19dbf50aca0f2cf32aa573293ef
+2026-08-10-npm-release-sequences.md: d51054b90aa0acd82d252cdb6e97dc1f3c0e51b5
+2026-08-10-npm-release-sequences.zh.md: 8c2b7b048af407a79f62c5842f0bd04790a61c9a
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
index 7efe5c9a1c..d51054b90a 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md
@@ -101,7 +101,7 @@ The `pack` job walks the whole release set once, packing each member into one di
A dsh verification installs the vendored family's pack output too. The harness packages declare the vendored framework as a peer, those packages live in another sequence, and the credential-free job cannot fetch them from a private registry — so `release.yml` packs the vendored family for verification while publishing only its own set.
-The verification omits optional dependencies. The Landlock platform packages behind them belong to the native sequence, whose pack needs a musl toolchain and one build per architecture, so a job on one runner cannot produce them; a consumer that cannot install them must still start, which is what optional means here.
+The verification also packs the Landlock entry, which `dsh-sandbox-local` declares as a plain dependency, and omits optional dependencies. The platform packages behind those optional entries need a musl toolchain and one build per architecture, so a job on one runner cannot produce them; a consumer that cannot install them must still start, which is what optional means here. The verification therefore reads a directory by its contents rather than a pack order, because a directory can hold tarballs packed only to satisfy a cross-sequence dependency.
### Repository changes this carried
diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
index cca853bae3..8c2b7b048a 100644
--- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
+++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md
@@ -101,7 +101,7 @@ dsh 族套用仓库的发布 payload 策略(拒绝源码与声明映射)。v
dsh 的验证会一并安装 vendored 族的 pack 产物。harness 的包把 vendored 框架声明成 peer,而那些包属于另一条序列,无凭据的 job 无法从私有 registry 取到——所以 `release.yml` 为验证而打包 vendored 族,发布的仍只有自己那一份。
-验证会略去可选依赖。它们背后的 Landlock 平台包属于 native 序列,那条序列的 pack 需要 musl 工具链且每个架构各构建一次,单台 runner 产不出来;而装不到它们的消费方也必须能起——这正是「可选」在这里的含义。
+验证还会打一份 Landlock entry 的 tarball——`dsh-sandbox-local` 把它声明为普通 `dependencies`——同时略去可选依赖。那些可选项背后的平台包需要 musl 工具链且每个架构各构建一次,单台 runner 产不出来;而装不到它们的消费方也必须能起,这正是「可选」在这里的含义。因此验证按目录内容读取 tarball,而不是读发布顺序:一个目录可能只装着为满足跨序列依赖而打出来的包,任何发布顺序都不描述它。
### 本次带出的仓库改动
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7659b3b5a3..cab178a3d2 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -86,8 +86,16 @@ jobs:
- name: Pack the vendored framework for verification
run: pnpm run release:pack --family vendor --out dist/npm-vendor
+ # dsh-sandbox-local declares the Landlock entry as a runtime dependency, so
+ # the verification needs its tarball. Its platform packages stay out: they
+ # are optional, and building them needs a musl toolchain per architecture.
+ - name: Pack the Landlock entry for verification
+ run: |
+ pnpm --dir native/landlock-run run build:ts
+ pnpm --dir native/landlock-run/packages/entry pack --pack-destination "$PWD/dist/npm-landlock"
+
- name: Verify packed install
- run: pnpm run release:verify-packed-install --family dsh --from dist/npm --from dist/npm-vendor
+ run: pnpm run release:verify-packed-install --family dsh --from dist/npm --from dist/npm-vendor --from dist/npm-landlock
- uses: actions/upload-artifact@v4
with:
diff --git a/scripts/release/verify-packed-install.ts b/scripts/release/verify-packed-install.ts
index f4e5c4b07f..29ec7b851e 100644
--- a/scripts/release/verify-packed-install.ts
+++ b/scripts/release/verify-packed-install.ts
@@ -15,14 +15,14 @@
* checkout cannot stand in for a missing file here.
*/
-import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'
+import { mkdtempSync, readdirSync, rmSync, writeFileSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join, resolve } from 'node:path'
import { pathToFileURL } from 'node:url'
import { parseArgs } from 'node:util'
import { releaseFamily } from './families.ts'
import { capture, isEntry } from './process.ts'
-import { packedIdentity, readPublishOrder } from './tarball.ts'
+import { packedIdentity } from './tarball.ts'
/**
* Environment for the installed artifact: no host Node hooks, no host DeepSeek
@@ -44,13 +44,19 @@ function consumerEnvironment(consumerRoot: string): NodeJS.ProcessEnv {
/**
* Every packed tarball in the given directories, as `file:` dependency entries.
- * @param directories - absolute pack output directories.
+ *
+ * The directories are read by their contents rather than a pack order file: a
+ * directory here can hold tarballs packed only to satisfy a cross-sequence
+ * dependency, which no release order describes.
+ * @param directories - absolute directories holding packed tarballs.
* @returns Package name to tarball file URL, and the version each carries.
*/
function packedDependencies(directories: readonly string[]): Map {
const dependencies = new Map()
for (const directory of directories) {
- for (const filename of readPublishOrder(directory)) {
+ const tarballs = readdirSync(directory).filter(name => name.endsWith('.tgz')).sort()
+ if (tarballs.length === 0) throw new Error(`${directory} holds no packed tarball`)
+ for (const filename of tarballs) {
const tarball = join(directory, filename)
const { name, version } = packedIdentity(tarball)
dependencies.set(name, { url: pathToFileURL(tarball).href, version })
@@ -92,10 +98,11 @@ function main(): void {
const environment = consumerEnvironment(consumerRoot)
console.log(`release verify-packed-install: installing ${String(packed.size)} tarball(s) into ${consumerRoot}`)
- // Optional dependencies are omitted: the platform packages behind them
- // belong to the native release sequence, this job holds no credentials for
- // the private scope, and a consumer that cannot install them must still
- // start — which is what optional means here.
+ // Optional dependencies are omitted: the Landlock platform packages behind
+ // them need a musl toolchain and one build per architecture, and a consumer
+ // that cannot install them must still start — which is what optional means
+ // here. Their entry package is a plain dependency of dsh-sandbox-local, so
+ // its tarball is supplied through --from.
capture('npm', ['install', '--no-audit', '--no-fund', '--package-lock=false', '--omit=optional'],
{ cwd: consumerRoot, env: environment })