From 3bfa05de06432daccb5459abcc60ef7bba81b6f8 Mon Sep 17 00:00:00 2001 From: iceout Date: Tue, 22 Sep 2026 13:23:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(dsh):=20=E5=AE=BF=E4=B8=BB=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=20peer=20=E6=A0=87=E4=B8=BA=20optional=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=20pnpm=20=E8=87=AA=E5=8A=A8=E8=A3=85?= =?UTF-8?q?=E9=85=8D=E6=97=A0=E8=A7=A3=20range?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pnpm 默认 auto-install-peers=true,会为本插件 peerDependencies 里所有非可选 peer 汇总求一个版本。6 个 @deepseek-ai/* 宿主框架 peer(cordis、dsh-agent、 dsh-invariants、dsh-session、dsh-system-prompt、schemastery)因此被强制装配, 它们的嵌套 peer(dsh-llm、dsh-scope、dsh-settings、dsh-typert-protocol 等)在 npm 上只有 -rc.N / -alpha.N 预发布版本,latest dist-tag 又陈旧停在 0.0.1-rc.1,求解退化成不含预发布的范围,必然零命中: [ERR_PNPM_NO_MATCHING_VERSION] No matching version found for @deepseek-ai/dsh-llm@>=0.1.1 <0.2.0-0 包名随求解顺序在 dsh-llm / dsh-scope / dsh-settings / dsh-typert-protocol 之间变化。 复现(pnpm 11.7.0): - 只装 dsh-working-activity@0.4.0; - 或装依赖它的 @deepseek-harness-tui/dsh-tui:独立 pnpm install -g,以及 pnpm 9 下的 dsh profile 安装(pnpm 9 不读 profile 的 pnpm-workspace.yaml, 那里的 autoInstallPeers: false 不生效)。 宿主框架包由 dsh 提供、不该由插件装配,这与 scripts/verify-manifest-deps.mjs 的既有意图一致;dsh-TUI 侧已把它的 29 个 peer 全部标为 optional (ccch1mneyyy/dsh-TUI#549)。改后与 npm 行为对齐:peer 只在存在时校验,缺失时 不再自动装配。 验证: - pnpm install --lockfile-only 装 @deepseek-harness-tui/dsh-tui@0.10.2: 改动前 ERR_PNPM_NO_MATCHING_VERSION;改动后 Done in 4.1s - node scripts/verify-manifest-deps.mjs / verify-lockfiles.mjs 通过 - pnpm install --frozen-lockfile 通过(pnpm-lock.yaml 无需变更) - pnpm test:7 文件 91 测试全过(含 integration.spec.ts 的 Vite optional-peer-dep 路径) - pnpm test:alpha2 通过(fixture 的 --frozen-lockfile --strict-peer-dependencies 未漂移) - package-lock.json 由 npm 重生成以同步 peerDependenciesMeta;同时修正了它 version 字段落后 package.json 一版的既有漂移(0.3.3 → 0.4.0) 关联:ccch1mneyyy/dsh-TUI#815 --- .../working-activity/package-lock.json | 22 +++++++++++++++++-- .../activity/working-activity/package.json | 18 +++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/packages/activity/working-activity/package-lock.json b/packages/activity/working-activity/package-lock.json index 08ae4f7..1bdfd28 100644 --- a/packages/activity/working-activity/package-lock.json +++ b/packages/activity/working-activity/package-lock.json @@ -1,12 +1,12 @@ { "name": "dsh-working-activity", - "version": "0.3.3", + "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dsh-working-activity", - "version": "0.3.3", + "version": "0.4.0", "license": "BSD-3-Clause", "devDependencies": { "@deepseek-ai/cordis": "^4.0.1", @@ -46,6 +46,12 @@ "react": "^18.2.0" }, "peerDependenciesMeta": { + "@deepseek-ai/cordis": { + "optional": true + }, + "@deepseek-ai/dsh-agent": { + "optional": true + }, "@deepseek-ai/dsh-client-runtime": { "optional": true }, @@ -55,6 +61,18 @@ "@deepseek-ai/dsh-client-ui-slots": { "optional": true }, + "@deepseek-ai/dsh-invariants": { + "optional": true + }, + "@deepseek-ai/dsh-session": { + "optional": true + }, + "@deepseek-ai/dsh-system-prompt": { + "optional": true + }, + "@deepseek-ai/schemastery": { + "optional": true + }, "react": { "optional": true } diff --git a/packages/activity/working-activity/package.json b/packages/activity/working-activity/package.json index 59c1924..17f372b 100644 --- a/packages/activity/working-activity/package.json +++ b/packages/activity/working-activity/package.json @@ -112,6 +112,12 @@ "vitest": "^3.2.4" }, "peerDependenciesMeta": { + "@deepseek-ai/cordis": { + "optional": true + }, + "@deepseek-ai/dsh-agent": { + "optional": true + }, "@deepseek-ai/dsh-client-runtime": { "optional": true }, @@ -121,6 +127,18 @@ "@deepseek-ai/dsh-client-ui-slots": { "optional": true }, + "@deepseek-ai/dsh-invariants": { + "optional": true + }, + "@deepseek-ai/dsh-session": { + "optional": true + }, + "@deepseek-ai/dsh-system-prompt": { + "optional": true + }, + "@deepseek-ai/schemastery": { + "optional": true + }, "react": { "optional": true }