dsh-connect-trae 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0 (2026-09-10)
4
+
5
+ ### Changes
6
+
7
+ - 对齐 DSH 内核 `0.1.2-rc.1` → `0.1.5-rc.2`(桌面 `dsh-plugin-desktop` 2.0.9 所捆绑通道;`0.1.5-rc.1` 为 npm `latest`,`rc.2` 在 `next`):
8
+ - `ResolvedPiAiProviderProfile` 在 0.1.5 新增**必填**字段 `modelErrors`:`PiAiAdapter` 现在按模型查此表,命中即以 `INVALID_CONFIG` 拒绝请求;`piProvider` 同时由必填改为可选。本插件是手工构造 profile(不走内核目录解析,故该表不会被子系统填充),补 `modelErrors: new Map()` 表达「所服务的模型全部可用」这一事实。不补则本插件在 0.1.5 宿主上**无法通过类型检查**(`TS2741`)。
9
+ - devDependencies 升级至 `@deepseek-ai/dsh-*@0.1.5-rc.2`,`@earendil-works/pi-ai` 由 `0.84.2` 升至 `^0.85.1`:`dsh-llm-pi-ai@0.1.5-rc.2` 要求 `pi-ai@^0.85.1`,版本不一致会在 `node_modules` 里留下两份互不兼容的 `pi-ai`,导致 `Provider<Api>` 结构不匹配的编译错误。
10
+ - `peerDependencies` 的 `@deepseek-ai/dsh-*` 由 `>=0.1.2-0` 抬到 `>=0.1.5-0`(`modelErrors` 为编译期硬依赖,0.1.2 宿主无法满足),`@earendil-works/pi-ai` 抬到 `>=0.85.1`。仍按范围声明、不锁死补丁版本,与内核 `next` 通道继续前进保持一致。
11
+ - 经核实本次不受文档列出的其余破坏项影响:未使用 `dsh-session` / `dsh-session-persistence` / `dsh-persona` / `dsh-system-prompt` / `dsh-message-feedback` / `dsh-subagent`;未读取 `DSH_SESSION_JSONL`、未调用已移除的 `locate()` / `readRaw()`;`AttachmentStore` 仅作类型引用,`IconChevronDownOutline14` 与客户端 `dsh.client.inject` 六个包在 0.1.5 均仍存在。会话格式 v3 与 persona 段改名对本插件不适用。
12
+
13
+ ### Fixes
14
+
15
+ - 修复内置回退模型表被实时线路映射过滤、导致真实安装上模型几乎全部消失的问题:`FALLBACK_TRAE_MODELS` 是本插件自带的静态兜底表,其中每个 id 都**从未**由 Trae Remote 目录公布,因此永远不会出现在 `callableKeys` 里。此前 `configuredModels` / `derive` 把这张表也交给 `dropDeadModels` 过滤,只要实时目录只返回一部分模型(账号权限、版本或网络给出的子集),过滤就会把「这次没被提到的」回退模型一并删掉——本机实测在无凭据环境下只剩 `glm-5.2` / `kimi-k2.6` 两个模型可用。现在回退表不再参与线路过滤,并以 `wireResolved` 标志取代「`callableKeys` 非空」作为「线路目录已解析」的判据,避免空目录被误读为「没有模型可用」。新增回归测试覆盖该路径;该缺陷在本仓库 1.3.0 上本来就会失败(与内核升级无关),修复后 `pnpm run test` 首次达到 157/157 全绿(此前 154/156)。
16
+
3
17
  ## 1.3.0 (2026-09-08)
4
18
 
5
19
  ### Changes
package/lib/index.js CHANGED
@@ -262,6 +262,7 @@ function createTraeAdapter(options) {
262
262
  streamIdleTimeoutMs: TRAE_STREAM_IDLE_TIMEOUT_MS,
263
263
  retryPolicy: resolveRetryPolicy(void 0, "dsh-connect-trae retryPolicy"),
264
264
  configuredMaxTokens: /* @__PURE__ */ new Map(),
265
+ modelErrors: /* @__PURE__ */ new Map(),
265
266
  ...REQUEST_IMAGE_BUDGETS,
266
267
  piProvider: provider
267
268
  };
@@ -2783,17 +2784,19 @@ function apply(ctx, config) {
2783
2784
  const enabledSet = (value) => new Set(value.enabledModelIds ?? []);
2784
2785
  const imageSet = (value) => new Set(value.imageModelIds ?? []);
2785
2786
  const callableKeys = /* @__PURE__ */ new Set();
2787
+ let wireResolved = false;
2786
2788
  const dropDeadModels = (rows) => {
2787
- if (callableKeys.size === 0) return rows;
2789
+ if (!wireResolved) return rows;
2788
2790
  return rows.filter((model) => callableKeys.has(model.id.trim().toLowerCase()) || callableKeys.has(model.name.trim().toLowerCase()));
2789
2791
  };
2792
+ const fallbackModels = (value) => applyImageSelection(FALLBACK_TRAE_MODELS, imageSet(value));
2790
2793
  const derive = (value, raw) => {
2791
2794
  const selectedImages = imageSet(value);
2792
2795
  const derived = deriveCatalog(applyImageSelection(sanitizeCatalog(dropDeadModels(raw)), selectedImages), enabledSet(value), value.contextBudgets ?? {});
2793
- return derived.length > 0 ? derived : applyImageSelection(dropDeadModels(FALLBACK_TRAE_MODELS), selectedImages);
2796
+ return derived.length > 0 ? derived : fallbackModels(value);
2794
2797
  };
2795
- const configuredModels = (value) => value.lastCatalog?.length ? derive(value, value.lastCatalog) : value.models?.length ? derive(value, value.models) : applyImageSelection(dropDeadModels(FALLBACK_TRAE_MODELS), imageSet(value));
2796
- const displayModels = (value) => value.lastCatalog?.length ? dropDeadModels(sanitizeCatalog(value.lastCatalog)) : value.models?.length ? dropDeadModels(sanitizeCatalog(value.models)) : dropDeadModels(FALLBACK_TRAE_MODELS);
2798
+ const configuredModels = (value) => value.lastCatalog?.length ? derive(value, value.lastCatalog) : value.models?.length ? derive(value, value.models) : fallbackModels(value);
2799
+ const displayModels = (value) => value.lastCatalog?.length ? dropDeadModels(sanitizeCatalog(value.lastCatalog)) : value.models?.length ? dropDeadModels(sanitizeCatalog(value.models)) : FALLBACK_TRAE_MODELS;
2797
2800
  const store = new TraeCredentialStore({
2798
2801
  ...config.authFile === void 0 ? {} : { storagePath: config.authFile },
2799
2802
  edition: config.edition ?? "auto",
@@ -2869,6 +2872,7 @@ function apply(ctx, config) {
2869
2872
  callableKeys.add(model.id.trim().toLowerCase());
2870
2873
  callableKeys.add(model.name.trim().toLowerCase());
2871
2874
  }
2875
+ wireResolved = merged.length > 0;
2872
2876
  wireById.clear();
2873
2877
  wireByName.clear();
2874
2878
  for (const model of merged) if (model.wireConfigName !== void 0) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dsh-connect-trae",
3
3
  "displayName": "DSH Connect Trae",
4
4
  "description": "Connect locally signed-in Trae models to DeepSeek Harness, plus a read-only usage/credits summary.",
5
- "version": "1.3.0",
5
+ "version": "1.4.0",
6
6
  "author": "dingminhua",
7
7
  "copyright": "Copyright (c) 2026 LaoDing",
8
8
  "license": "MIT",
@@ -73,35 +73,35 @@
73
73
  },
74
74
  "peerDependencies": {
75
75
  "@deepseek-ai/cordis": "^4.0.1-rc.1",
76
- "@deepseek-ai/dsh-atomic-write": ">=0.1.2-0 <0.2.0-0",
77
- "@deepseek-ai/dsh-attachment": ">=0.1.2-0 <0.2.0-0",
78
- "@deepseek-ai/dsh-home-paths": ">=0.1.2-0 <0.2.0-0",
79
- "@deepseek-ai/dsh-host-webserver": ">=0.1.2-0 <0.2.0-0",
80
- "@deepseek-ai/dsh-llm": ">=0.1.2-0 <0.2.0-0",
81
- "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.2-0 <0.2.0-0",
82
- "@deepseek-ai/dsh-settings": ">=0.1.2-0 <0.2.0-0",
83
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.2-0 <0.2.0-0",
76
+ "@deepseek-ai/dsh-atomic-write": ">=0.1.5-0 <0.2.0-0",
77
+ "@deepseek-ai/dsh-attachment": ">=0.1.5-0 <0.2.0-0",
78
+ "@deepseek-ai/dsh-home-paths": ">=0.1.5-0 <0.2.0-0",
79
+ "@deepseek-ai/dsh-host-webserver": ">=0.1.5-0 <0.2.0-0",
80
+ "@deepseek-ai/dsh-llm": ">=0.1.5-0 <0.2.0-0",
81
+ "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.5-0 <0.2.0-0",
82
+ "@deepseek-ai/dsh-settings": ">=0.1.5-0 <0.2.0-0",
83
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.5-0 <0.2.0-0",
84
84
  "@deepseek-ai/schemastery": "^3.18.1-rc.1",
85
- "@earendil-works/pi-ai": ">=0.82.1",
85
+ "@earendil-works/pi-ai": ">=0.85.1",
86
86
  "react": "^18.2.0"
87
87
  },
88
88
  "devDependencies": {
89
89
  "@deepseek-ai/cordis": "^4.0.2",
90
- "@deepseek-ai/dsh-atomic-write": "^0.1.2-rc.1",
91
- "@deepseek-ai/dsh-attachment": "^0.1.2-rc.1",
92
- "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
93
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
94
- "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
95
- "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.2-rc.1",
96
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1",
97
- "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
98
- "@deepseek-ai/dsh-home-paths": "^0.1.2-rc.1",
99
- "@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1",
100
- "@deepseek-ai/dsh-llm": "^0.1.2-rc.1",
101
- "@deepseek-ai/dsh-llm-pi-ai": "^0.1.2-rc.1",
102
- "@deepseek-ai/dsh-settings": "^0.1.2-rc.1",
90
+ "@deepseek-ai/dsh-atomic-write": "0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
92
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
93
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
94
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
95
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.5-rc.2",
96
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.2",
97
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2",
98
+ "@deepseek-ai/dsh-home-paths": "0.1.5-rc.2",
99
+ "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2",
100
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
101
+ "@deepseek-ai/dsh-llm-pi-ai": "0.1.5-rc.2",
102
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
103
103
  "@deepseek-ai/schemastery": "3.18.2",
104
- "@earendil-works/pi-ai": "0.84.2",
104
+ "@earendil-works/pi-ai": "^0.85.1",
105
105
  "@types/node": "^22.20.0",
106
106
  "@types/react": "~18.3.31",
107
107
  "react": "^18.3.1",