dsh-connect-workbuddy 1.2.0 → 1.3.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,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.0 (2026-09-10)
4
+
5
+ ### Breaking Changes
6
+
7
+ - **跟进上游 DSH 内核 0.1.2-rc.1 → 0.1.5-rc.1**:本机 DSH Desktop 2.0.9 捆绑的内核已跃迁到 `0.1.5-rc.1`(npm `latest`),而插件此前按 `0.1.2-rc.1` 编译。依赖链与代码已对齐新内核线:
8
+
9
+ - **`ResolvedPiAiProviderProfile.modelErrors` 变为必填**:`dsh-llm-pi-ai` 的 provider profile 在 0.1.5-rc.1 新增必填字段 `modelErrors`,`PiAiAdapter.modelOf` 会在每次请求时读取,并对其中列出的任何 model id 抛出 `INVALID_CONFIG`。本插件的目录来自上游实时读取,因此填**空 Map**——即「无已知失败模型」,绝不预先否定目录后续提供的模型。这是本次跃迁中本插件唯一的一处源码编译失败。
10
+ - **`@deepseek-ai/dsh-client-runtime` 已停止发布**:该包停在 `0.1.1-rc.2`,在 0.1.5 线上既未发布也不在桌面捆绑集内(其槽位/会话服务迁至 `dsh-client-ui-renderer/client`)。此前客户端入口从它取 `ClientContext` 类型、并在 `dsh.client.inject` 中声明它。现改为:运行期注入以真实提供 `slots` 服务的 5 个包为准(移出 `dsh-client-runtime`),类型侧用具名 `WorkBuddyClientContext`(cordis `Context` + `slots`/`locale`/`settingsScope` 三个座位),使客户端入口在两条主机线上都能编译。
11
+ - `@earendil-works/pi-ai`:`0.85.0` → `0.85.1`。
12
+
13
+ ### Fixes
14
+
15
+ - **升级后 provider 注册不再静默失效**:`modelErrors` 缺失在 0.1.5-rc.1 上是**编译期**硬失败(本次已由 `pnpm run check` 捕获并修复);回归测试进一步把「运行时该 map 必须为空」钉死,避免日后有人在其中塞入模型 id 而悄悄禁用整条路由。
16
+ - **客户端 half 不再依赖已消失的包**:`dsh-client-runtime` 在 0.1.5 主机上无法解析,客户端插件此前把它列为注入目标;现已移除,构建产物 `lib/client.js` 对它零引用。
17
+
18
+ ### Dependencies
19
+
20
+ - 全部 `@deepseek-ai/dsh-*`:`0.1.2-rc.1` → `0.1.5-rc.2`(`0.1.5-rc.1` 为 npm `latest`,`rc.2` 已在 `next` 通道;本仓库按线跟进并锁在 lockfile)
21
+ - `@deepseek-ai/dsh-client-runtime`:保留 `0.1.1-rc.2`,**仅作旧主机线的类型来源**,不参与 0.1.5 运行时
22
+ - 新增 `@deepseek-ai/dsh-client-ui-renderer`:0.1.5 线上 `slots` 服务的真实提供方
23
+ - 依赖声明统一改为**范围**而非写死补丁版本(含 `pnpm-workspace.yaml` 的 `overrides`),升级时只需改一处版本串
24
+
25
+ ### Docs
26
+
27
+ - 记录本轮内核跃迁的对照依据与影响判定:本插件**不受** F1(会话持久化改为句柄化接缝)与 F3(`PERSONA_SECTION` 改名)影响——全仓无会话日志直读、无 persona 段 key 注入;受影响面集中在 F4(导出面变化)与 A4(声明依赖须落在捆绑子集内)。
28
+
3
29
  ## 1.2.0 (2026-09-09)
4
30
 
5
31
  ### Features
package/lib/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { C as defaultDesktopAuthCandidates, O as workbuddyOwnAuthPath, a as readHostHeartbeat, b as WORKBUDDY_AUTH_FILE_ENV, c as WORKBUDDY_CONNECT_VERSION, g as FALLBACK_WORKBUDDY_MODELS, l as WorkBuddyUpstreamClient, o as workbuddyHostHeartbeatPath, r as isHeartbeatProcessAlive, w as defaultDesktopAuthDirs, x as WorkBuddyCredentialStore } from "./host-heartbeat-BKokeDPN.js";
2
+ import { C as defaultDesktopAuthCandidates, O as workbuddyOwnAuthPath, a as readHostHeartbeat, b as WORKBUDDY_AUTH_FILE_ENV, c as WORKBUDDY_CONNECT_VERSION, g as FALLBACK_WORKBUDDY_MODELS, l as WorkBuddyUpstreamClient, o as workbuddyHostHeartbeatPath, r as isHeartbeatProcessAlive, w as defaultDesktopAuthDirs, x as WorkBuddyCredentialStore } from "./host-heartbeat-UlZjd09_.js";
3
3
  import { realpathSync } from "node:fs";
4
4
  import { fileURLToPath } from "node:url";
5
5
  //#region src/bin.ts
@@ -996,7 +996,7 @@ var WorkBuddyUpstreamClient = class {
996
996
  //#endregion
997
997
  //#region src/version.ts
998
998
  /** The npm package version this build was produced from. */
999
- const WORKBUDDY_CONNECT_VERSION = "1.2.0";
999
+ const WORKBUDDY_CONNECT_VERSION = "1.3.0";
1000
1000
  //#endregion
1001
1001
  //#region src/host-heartbeat.ts
1002
1002
  /**
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as defaultDesktopAuthCandidates, D as workbuddyAccountId, E as parseWorkBuddyAuth, O as workbuddyOwnAuthPath, S as authFileName, T as defaultDesktopAuthPath, _ as WorkBuddyCatalog, a as readHostHeartbeat, b as WORKBUDDY_AUTH_FILE_ENV, c as WORKBUDDY_CONNECT_VERSION, d as parseCreditMultiplier, f as parseReasoning, g as FALLBACK_WORKBUDDY_MODELS, h as regionOf, i as processStartTimeMs, l as WorkBuddyUpstreamClient, m as prepareChatBody, n as clearHostHeartbeat, o as workbuddyHostHeartbeatPath, p as parseUpstreamModel, r as isHeartbeatProcessAlive, s as writeHostHeartbeat, t as WORKBUDDY_HOST_HEARTBEAT_FILENAME, u as classifyUpstreamError, v as deriveCatalog, w as defaultDesktopAuthDirs, x as WorkBuddyCredentialStore, y as WORKBUDDY_AUTH_FILENAME } from "./host-heartbeat-BKokeDPN.js";
1
+ import { C as defaultDesktopAuthCandidates, D as workbuddyAccountId, E as parseWorkBuddyAuth, O as workbuddyOwnAuthPath, S as authFileName, T as defaultDesktopAuthPath, _ as WorkBuddyCatalog, a as readHostHeartbeat, b as WORKBUDDY_AUTH_FILE_ENV, c as WORKBUDDY_CONNECT_VERSION, d as parseCreditMultiplier, f as parseReasoning, g as FALLBACK_WORKBUDDY_MODELS, h as regionOf, i as processStartTimeMs, l as WorkBuddyUpstreamClient, m as prepareChatBody, n as clearHostHeartbeat, o as workbuddyHostHeartbeatPath, p as parseUpstreamModel, r as isHeartbeatProcessAlive, s as writeHostHeartbeat, t as WORKBUDDY_HOST_HEARTBEAT_FILENAME, u as classifyUpstreamError, v as deriveCatalog, w as defaultDesktopAuthDirs, x as WorkBuddyCredentialStore, y as WORKBUDDY_AUTH_FILENAME } from "./host-heartbeat-UlZjd09_.js";
2
2
  import z from "@deepseek-ai/schemastery";
3
3
  import { randomBytes, timingSafeEqual } from "node:crypto";
4
4
  import { createProvider } from "@earendil-works/pi-ai";
@@ -156,6 +156,7 @@ function createWorkBuddyAdapter(options) {
156
156
  streamIdleTimeoutMs: WORKBUDDY_STREAM_IDLE_TIMEOUT_MS,
157
157
  retryPolicy: resolveRetryPolicy(void 0, "dsh-connect-workbuddy retryPolicy"),
158
158
  configuredMaxTokens: /* @__PURE__ */ new Map(),
159
+ modelErrors: /* @__PURE__ */ new Map(),
159
160
  ...REQUEST_IMAGE_BUDGETS,
160
161
  piProvider: provider
161
162
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dsh-connect-workbuddy",
3
3
  "displayName": "DSH Connect WorkBuddy",
4
4
  "description": "Connect locally signed-in WorkBuddy models to DeepSeek Harness with a read-only credits overview and model management.",
5
- "version": "1.2.0",
5
+ "version": "1.3.0",
6
6
  "author": "dingminhua",
7
7
  "copyright": "Copyright (c) 2026 LaoDing",
8
8
  "license": "MIT",
@@ -56,7 +56,6 @@
56
56
  },
57
57
  "client": {
58
58
  "inject": [
59
- "@deepseek-ai/dsh-client-runtime",
60
59
  "@deepseek-ai/dsh-client-ui-settings",
61
60
  "@deepseek-ai/dsh-client-ui-slots",
62
61
  "@deepseek-ai/dsh-client-ui-settings-plugins",
@@ -76,39 +75,41 @@
76
75
  },
77
76
  "peerDependencies": {
78
77
  "@deepseek-ai/cordis": ">=4.0.1-rc.1 <5.0.0 || >=4.0.2 <5.0.0",
79
- "@deepseek-ai/dsh-atomic-write": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
80
- "@deepseek-ai/dsh-attachment": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
81
- "@deepseek-ai/dsh-home-paths": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
82
- "@deepseek-ai/dsh-host-webserver": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
83
- "@deepseek-ai/dsh-llm": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
84
- "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
85
- "@deepseek-ai/dsh-settings": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
86
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.0-rc.1 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
87
- "@deepseek-ai/dsh-client-ui-settings": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
78
+ "@deepseek-ai/dsh-atomic-write": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
79
+ "@deepseek-ai/dsh-attachment": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
80
+ "@deepseek-ai/dsh-home-paths": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
81
+ "@deepseek-ai/dsh-host-webserver": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
82
+ "@deepseek-ai/dsh-llm": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
83
+ "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
84
+ "@deepseek-ai/dsh-settings": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
85
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
86
+ "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
87
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
88
88
  "@deepseek-ai/schemastery": ">=3.18.1-rc.1 <4.0.0 || >=3.18.2 <4.0.0",
89
- "@earendil-works/pi-ai": ">=0.82.1 <0.85.0 || >=0.85.0 <0.86.0",
89
+ "@earendil-works/pi-ai": ">=0.85.0 <0.86.0",
90
90
  "react": "^18.2.0"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@deepseek-ai/cordis": ">=4.0.1 <5.0.0 || >=4.0.2 <5.0.0",
94
- "@deepseek-ai/dsh-atomic-write": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
95
- "@deepseek-ai/dsh-attachment": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
96
- "@deepseek-ai/dsh-client-locale": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
97
- "@deepseek-ai/dsh-client-runtime": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
98
- "@deepseek-ai/dsh-client-ui-settings": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
99
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
100
- "@deepseek-ai/dsh-client-ui-settings-plugins": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
101
- "@deepseek-ai/dsh-client-ui-slots": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
102
- "@deepseek-ai/dsh-home-paths": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
103
- "@deepseek-ai/dsh-host-webserver": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
104
- "@deepseek-ai/dsh-llm": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
105
- "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
106
- "@deepseek-ai/dsh-settings": ">=0.1.1-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
94
+ "@deepseek-ai/dsh-atomic-write": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
95
+ "@deepseek-ai/dsh-attachment": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
96
+ "@deepseek-ai/dsh-home-paths": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
97
+ "@deepseek-ai/dsh-host-webserver": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
98
+ "@deepseek-ai/dsh-llm": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
99
+ "@deepseek-ai/dsh-llm-pi-ai": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
100
+ "@deepseek-ai/dsh-settings": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
101
+ "@deepseek-ai/dsh-client-locale": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
102
+ "@deepseek-ai/dsh-client-runtime": ">=0.1.1-rc.1 <0.2.0",
103
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
104
+ "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
105
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
106
+ "@deepseek-ai/dsh-client-ui-settings-plugins": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
107
+ "@deepseek-ai/dsh-client-ui-slots": ">=0.1.5-rc.1 <0.2.0 || >=0.1.2-rc.1 <0.2.0",
107
108
  "@deepseek-ai/schemastery": ">=3.18.1 <4.0.0 || >=3.18.2 <4.0.0",
108
- "@earendil-works/pi-ai": ">=0.82.1 <0.85.0 || >=0.85.0 <0.86.0",
109
+ "@earendil-works/pi-ai": ">=0.85.0 <0.86.0",
110
+ "react": "^18.3.1",
109
111
  "@types/node": "^22.20.0",
110
112
  "@types/react": "~18.3.31",
111
- "react": "^18.3.1",
112
113
  "tsdown": "^0.22.2",
113
114
  "typescript": "^5.9.3",
114
115
  "vitest": "^4.1.8"