dsh-workbuddy-connect 0.7.6 → 0.7.7
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/README.en.md +7 -4
- package/README.md +7 -4
- package/lib/bin.js +1 -1
- package/lib/client.js +1 -1
- package/lib/{host-heartbeat-vU86u9aU.js → host-heartbeat-FytEpUGO.js} +48 -15
- package/lib/index.js +4 -4
- package/package.json +32 -32
package/README.en.md
CHANGED
|
@@ -13,7 +13,7 @@ Brings the models available in your signed-in WorkBuddy / WorkBuddy AI desktop a
|
|
|
13
13
|
```text
|
|
14
14
|
Please install and verify the DSH (DeepSeek Harness) plugin dsh-workbuddy-connect for me (project: https://github.com/corrinehu/dsh-workbuddy-connect).
|
|
15
15
|
Start by reading the project README and confirming which interface I actually use (Web / Desktop / TUI) and its DSH core version — for the Desktop app, the bundled core, never the standalone CLI's version.
|
|
16
|
-
Then install from the official npm package per the version mapping (0.2.0-rc.2 -> 0.7.6, rc.1 -> 0.7.0, 0.1.5-0.1.7 -> 0.6.5), preferring a locally supported non-market channel; on some Desktop distributions (the official Electron app in particular) the profile is app-managed and rules vary by distribution — check mine first, then explore its compliant install route, but never bypass its validation.
|
|
16
|
+
Then install from the official npm package per the version mapping (0.2.1-rc.1 -> 0.7.7, 0.2.0-rc.2 -> 0.7.6, rc.1 -> 0.7.0, 0.1.5-0.1.7 -> 0.6.5), preferring a locally supported non-market channel; on some Desktop distributions (the official Electron app in particular) the profile is app-managed and rules vary by distribution — check mine first, then explore its compliant install route, but never bypass its validation.
|
|
17
17
|
Ask for my consent and make backups before changing any local files or configuration.
|
|
18
18
|
After installing, verify the WorkBuddy group appears in the model picker and walk me through one short conversation.
|
|
19
19
|
If the Desktop install still fails generation validation (e.g. the @types/retry false positive), report it honestly, reference upstream dataelement/dsh-desktop#688, and suggest switching to the standalone Web / TUI — do not modify dependency packages or bypass the check.
|
|
@@ -23,7 +23,8 @@ Core-to-plugin quick reference (full table in "Compatibility and release history
|
|
|
23
23
|
|
|
24
24
|
| DSH core | Recommended plugin |
|
|
25
25
|
|---|---|
|
|
26
|
-
| 0.2.
|
|
26
|
+
| 0.2.1-rc.1 | 0.7.7 (npm latest) |
|
|
27
|
+
| 0.2.0-rc.2 | 0.7.6 |
|
|
27
28
|
| 0.2.0-rc.1 | 0.7.0 |
|
|
28
29
|
| 0.1.5 – 0.1.7 | 0.6.5 |
|
|
29
30
|
|
|
@@ -126,7 +127,8 @@ The plugin version must match the DSH core — a mismatched combination fails to
|
|
|
126
127
|
|
|
127
128
|
| DSH core | Recommended plugin | Notes |
|
|
128
129
|
|---|---|---|
|
|
129
|
-
| `0.2.
|
|
130
|
+
| `0.2.1-rc.1` | `0.7.7` | Current line; the core moved to `@earendil-works/pi-ai` 1.3.0, so the plugin bundles 1.3.0 too — a leftover 0.87.1 overrides entry must be removed (see the pi-ai note below). |
|
|
131
|
+
| `0.2.0-rc.2` | `0.7.6` | Previous core line; fixes enterprise catalog gaps and international chat requests blocked by the upstream channel check. Avoid 0.7.2 with its registry regression. |
|
|
130
132
|
| `0.2.0-rc.1` | `0.7.0` | 0.7.1 drops rc.1 support; stay on this version. |
|
|
131
133
|
| `0.1.5` – `0.1.7` | `0.6.5` | Final release for the old cores; 0.7.0 targets 0.2.0 only. |
|
|
132
134
|
| `0.1.2-rc.1` | `0.3.1` | Older line, historical maintenance only. |
|
|
@@ -134,6 +136,7 @@ The plugin version must match the DSH core — a mismatched combination fails to
|
|
|
134
136
|
|
|
135
137
|
Release history (full records at [releases](https://github.com/corrinehu/dsh-workbuddy-connect/releases)):
|
|
136
138
|
|
|
139
|
+
- **0.7.7**: adapts to the DSH 0.2.1-rc.1 core: peers narrow to 0.2.1-rc.1 and the plugin-bundled `@earendil-works/pi-ai` moves to 1.3.0 with it (a profile-level leftover 0.87.1 overrides entry must be removed, or the plugin fails to load).
|
|
137
140
|
- **0.7.6**: fixes enterprise accounts missing `glm-5.3-flashx` from the model catalog ([#123](https://github.com/corrinehu/dsh-workbuddy-connect/issues/123)), and fixes international chat requests being blocked by the upstream channel check ([#139](https://github.com/corrinehu/dsh-workbuddy-connect/issues/139) / [#142](https://github.com/corrinehu/dsh-workbuddy-connect/issues/142)).
|
|
138
141
|
- **0.7.5**: restores composer controls after session switching ([#125](https://github.com/corrinehu/dsh-workbuddy-connect/issues/125) / [#132](https://github.com/corrinehu/dsh-workbuddy-connect/issues/132)), fixes WSL helper environment forwarding ([#133](https://github.com/corrinehu/dsh-workbuddy-connect/issues/133)), and adds community projects to both READMEs.
|
|
139
142
|
- **0.7.4**: Windows diagnostics and stability improvements: accurate classification of oversized registry-subprocess output, cross-platform test-assumption fixes ([#62](https://github.com/corrinehu/dsh-workbuddy-connect/issues/62)), and a reworked install section.
|
|
@@ -145,7 +148,7 @@ Release history (full records at [releases](https://github.com/corrinehu/dsh-wor
|
|
|
145
148
|
|
|
146
149
|
Pinned-version install example: `dsh plugin --profile web add dsh-workbuddy-connect@0.7.6`.
|
|
147
150
|
|
|
148
|
-
**
|
|
151
|
+
**pi-ai versions are per core line and must not be mixed**: the 0.2.1-rc.1 core line (plugin 0.7.7+) moved to `@earendil-works/pi-ai` 1.3.0 (bundled by the plugin), so a profile-level leftover `overrides: {'@earendil-works/pi-ai': '0.87.1'}` **must be removed** or the plugin fails to load; the 0.2.0-rc.2 core line (plugin 0.7.6) still requires `^0.87.1` — on that line, **do not** upgrade the profile-level pi-ai to 1.x, and do not act on third-party plugin managers' "updatable" prompts, which do not check peer constraints ([#86](https://github.com/corrinehu/dsh-workbuddy-connect/issues/86)).
|
|
149
152
|
|
|
150
153
|
## Disclaimer
|
|
151
154
|
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
```text
|
|
14
14
|
请帮我安装并验证 DSH(DeepSeek Harness)插件 dsh-workbuddy-connect(项目地址:https://github.com/corrinehu/dsh-workbuddy-connect):
|
|
15
15
|
先阅读项目 README,确认我实际使用的界面(Web / Desktop / TUI)与 DSH 内核版本,桌面版以 App 内置核心为准,不要用独立 CLI 的版本代替;
|
|
16
|
-
再按版本对应关系从 npm 正式包安装(0.2.0-rc.2→0.7.6、rc.1→0.7.0、0.1.5–0.1.7→0.6.5),优先走本机受支持的非插件市场渠道;部分 Desktop 发行版(尤其官方 Electron 版)的 profile 由 App 管理,各发行版规则未必相同,先确认我所用的发行版,再探查其合规的安装方式,但不得绕过其校验;
|
|
16
|
+
再按版本对应关系从 npm 正式包安装(0.2.1-rc.1→0.7.7、0.2.0-rc.2→0.7.6、rc.1→0.7.0、0.1.5–0.1.7→0.6.5),优先走本机受支持的非插件市场渠道;部分 Desktop 发行版(尤其官方 Electron 版)的 profile 由 App 管理,各发行版规则未必相同,先确认我所用的发行版,再探查其合规的安装方式,但不得绕过其校验;
|
|
17
17
|
任何本地文件或配置改动,先征得我同意并做好备份;
|
|
18
18
|
装完后验证模型选择器里出现 WorkBuddy 分组,并陪我完成一次简短对话;
|
|
19
19
|
若 Desktop 安装仍因 generation 校验失败(如 @types/retry 误报),请如实报告、参照上游 dataelement/dsh-desktop#688,并建议我改用独立的 Web / TUI,不要修改依赖包或绕过校验。
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
| DSH 内核 | 推荐插件版 |
|
|
25
25
|
|---|---|
|
|
26
|
-
| 0.2.
|
|
26
|
+
| 0.2.1-rc.1 | 0.7.7(npm latest) |
|
|
27
|
+
| 0.2.0-rc.2 | 0.7.6 |
|
|
27
28
|
| 0.2.0-rc.1 | 0.7.0 |
|
|
28
29
|
| 0.1.5 – 0.1.7 | 0.6.5 |
|
|
29
30
|
|
|
@@ -127,7 +128,8 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
|
|
|
127
128
|
|
|
128
129
|
| DSH 内核 | 推荐插件版 | 注意事项 |
|
|
129
130
|
|---|---|---|
|
|
130
|
-
| `0.2.
|
|
131
|
+
| `0.2.1-rc.1` | `0.7.7` | 当前最新线;内核升级到 `@earendil-works/pi-ai` 1.3.0,插件同步自带 1.3.0,历史遗留的 0.87.1 overrides 必须移除(见下方 pi-ai 说明)。 |
|
|
132
|
+
| `0.2.0-rc.2` | `0.7.6` | 上一代内核线;修复企业账号模型目录缺项与国际版对话被渠道校验拦截,勿停留在有注册表回归的 0.7.2。 |
|
|
131
133
|
| `0.2.0-rc.1` | `0.7.0` | 0.7.1 起不再支持 rc.1,请停留本版。 |
|
|
132
134
|
| `0.1.5` – `0.1.7` | `0.6.5` | 旧内核最终版;0.7.0 起仅面向 0.2.0。 |
|
|
133
135
|
| `0.1.2-rc.1` | `0.3.1` | 更早旧线,仅历史维护。 |
|
|
@@ -135,6 +137,7 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
|
|
|
135
137
|
|
|
136
138
|
历次更新(完整记录见 [releases](https://github.com/corrinehu/dsh-workbuddy-connect/releases)):
|
|
137
139
|
|
|
140
|
+
- **0.7.7**:适配 DSH 0.2.1-rc.1 内核:peer 收窄到 0.2.1-rc.1,插件自带的 `@earendil-works/pi-ai` 随内核升级到 1.3.0(profile 级历史遗留的 0.87.1 overrides 必须移除,否则插件无法加载);修复国际版与国内版推理档位检测停留「检测未完成」——上游把档位拒绝码改拼为 `invalid_parameter_value`([#143](https://github.com/corrinehu/dsh-workbuddy-connect/issues/143) / [#148](https://github.com/corrinehu/dsh-workbuddy-connect/issues/148),PR [#145](https://github.com/corrinehu/dsh-workbuddy-connect/pull/145));修复中文 Windows 控制台下注册表缺键诊断因 GBK 编码被误判(zh-CN 实机验证)。
|
|
138
141
|
- **0.7.6**:修复企业账号模型目录缺少 `glm-5.3-flashx`([#123](https://github.com/corrinehu/dsh-workbuddy-connect/issues/123)),修复国际版对话请求被上游渠道校验拦截([#139](https://github.com/corrinehu/dsh-workbuddy-connect/issues/139) / [#142](https://github.com/corrinehu/dsh-workbuddy-connect/issues/142))。
|
|
139
142
|
- **0.7.5**:修复切换会话后输入框余额与刷新按钮消失([#125](https://github.com/corrinehu/dsh-workbuddy-connect/issues/125) / [#132](https://github.com/corrinehu/dsh-workbuddy-connect/issues/132)),修复 WSL 调用 Windows 凭据解密程序的环境转发([#133](https://github.com/corrinehu/dsh-workbuddy-connect/issues/133)),README 收录社区项目([#130](https://github.com/corrinehu/dsh-workbuddy-connect/issues/130))。
|
|
140
143
|
- **0.7.4**:Windows 诊断与稳定性改进:注册表子进程输出超限准确分类、跨平台测试假设修正([#62](https://github.com/corrinehu/dsh-workbuddy-connect/issues/62)),安装说明重排。
|
|
@@ -146,7 +149,7 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
|
|
|
146
149
|
|
|
147
150
|
固定版本安装示例:`dsh plugin --profile web add dsh-workbuddy-connect@0.7.6`。
|
|
148
151
|
|
|
149
|
-
|
|
152
|
+
**pi-ai 版本按内核线区分,不能混**:0.2.1-rc.1 内核线(插件 0.7.7+)已升级到 `@earendil-works/pi-ai` 1.3.0(由插件自带),profile 级历史遗留的 `overrides: {'@earendil-works/pi-ai': '0.87.1'}` **必须移除**,否则插件会因加载到旧一代 pi-ai 而启动失败;0.2.0-rc.2 内核线(插件 0.7.6)仍要求 `^0.87.1`,在这条线上**不要**把 profile 级的 pi-ai 升到 1.x,第三方插件管理器的「可更新」提示不校验 peer 约束、不能照做([#86](https://github.com/corrinehu/dsh-workbuddy-connect/issues/86))。
|
|
150
153
|
|
|
151
154
|
## 免责声明
|
|
152
155
|
|
package/lib/bin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as WORKBUDDY_VARIANTS, O as WorkBuddyUpstreamClient, Q as resolveAppVersion, S as CN_VARIANT, a as readHostHeartbeat, b as atRestKeyProviderFor, c as WORKBUDDY_CONNECT_VERSION, l as FALLBACK_WORKBUDDY_AI_MODELS, m as WorkBuddyCredentialStore, o as workbuddyHostHeartbeatPath, r as isHeartbeatProcessAlive, u as FALLBACK_WORKBUDDY_MODELS, w as variantFor } from "./host-heartbeat-
|
|
2
|
+
import { C as WORKBUDDY_VARIANTS, O as WorkBuddyUpstreamClient, Q as resolveAppVersion, S as CN_VARIANT, a as readHostHeartbeat, b as atRestKeyProviderFor, c as WORKBUDDY_CONNECT_VERSION, l as FALLBACK_WORKBUDDY_AI_MODELS, m as WorkBuddyCredentialStore, o as workbuddyHostHeartbeatPath, r as isHeartbeatProcessAlive, u as FALLBACK_WORKBUDDY_MODELS, w as variantFor } from "./host-heartbeat-FytEpUGO.js";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
//#region src/bin.ts
|
package/lib/client.js
CHANGED
|
@@ -2772,7 +2772,7 @@ window.__ModuleLoader__.load({
|
|
|
2772
2772
|
};
|
|
2773
2773
|
//#endregion
|
|
2774
2774
|
//#region src/version.ts
|
|
2775
|
-
const WORKBUDDY_CONNECT_VERSION = "0.7.
|
|
2775
|
+
const WORKBUDDY_CONNECT_VERSION = "0.7.7";
|
|
2776
2776
|
//#endregion
|
|
2777
2777
|
//#region src/client/WorkBuddyConfigPage.tsx
|
|
2778
2778
|
/**
|
|
@@ -396,22 +396,37 @@ function randomSentinel() {
|
|
|
396
396
|
* - `model_param_invalid` — the global endpoint, measured 2026-10-01. A
|
|
397
397
|
* non-canonical value is answered `400` / `11133` with this code, which names
|
|
398
398
|
* no field (`extError.param` is empty), instead of one that names the effort.
|
|
399
|
-
*
|
|
400
|
-
*
|
|
401
|
-
*
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
*
|
|
399
|
+
* - `invalid_parameter_value` — both endpoints. Measured on the global
|
|
400
|
+
* endpoint 2026-10-16 (issue #143); observed on the China endpoint the same
|
|
401
|
+
* day (`deepseek-v4-pro`, PR #145 discussion) and reproduced there
|
|
402
|
+
* 2026-10-17 on WorkBuddy CN 5.8.2. The *same* `400` / `11133` envelope as
|
|
403
|
+
* `model_param_invalid`, with `extError.code` respelled and the `msg`
|
|
404
|
+
* unchanged; a non-canonical value is again what triggers it and the
|
|
405
|
+
* baseline still answers 200. Kept alongside the old spellings rather than
|
|
406
|
+
* replacing them: the rename was observed on the gateways, not promised for
|
|
407
|
+
* every model behind them.
|
|
408
408
|
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
409
|
+
* The generic codes name no effort field. They are readable here only
|
|
410
|
+
* because the baseline step has already proved the *same* request without
|
|
411
|
+
* `reasoning_effort` succeeds, leaving the sentinel as the only difference
|
|
412
|
+
* between the two attempts — an isolation that holds per endpoint, which is
|
|
413
|
+
* why both regions read the respelled spelling once each was observed on it.
|
|
414
|
+
* A sibling code in the same `11133` envelope that names another parameter
|
|
415
|
+
* (`integer_below_min_value`, the `max_tokens` floor) and a body carrying no
|
|
416
|
+
* `extError` at all (`11102`, unknown model) are therefore not mistaken for
|
|
417
|
+
* them, and neither is a level-sweep answer.
|
|
418
|
+
*
|
|
419
|
+
* None of these is treated as a permanent protocol promise: anything
|
|
420
|
+
* unrecognized still degrades to `unknown` rather than to a capability
|
|
421
|
+
* conclusion.
|
|
411
422
|
*/
|
|
412
423
|
const INVALID_EFFORT_CODES = {
|
|
413
|
-
cn: /* @__PURE__ */ new Set(["invalid_reasoning_effort"]),
|
|
414
|
-
global: /* @__PURE__ */ new Set([
|
|
424
|
+
cn: /* @__PURE__ */ new Set(["invalid_reasoning_effort", "invalid_parameter_value"]),
|
|
425
|
+
global: /* @__PURE__ */ new Set([
|
|
426
|
+
"invalid_reasoning_effort",
|
|
427
|
+
"model_param_invalid",
|
|
428
|
+
"invalid_parameter_value"
|
|
429
|
+
])
|
|
415
430
|
};
|
|
416
431
|
/** Whether an attempt is an attributable rejection of the effort value. */
|
|
417
432
|
function isEffortRejection(attempt, region) {
|
|
@@ -2410,7 +2425,7 @@ function workBuddyWindowsDiscoveryTools() {
|
|
|
2410
2425
|
if (settled) return;
|
|
2411
2426
|
settled = true;
|
|
2412
2427
|
if (error !== null && error !== void 0) {
|
|
2413
|
-
if (error.killed !== true && (error.code === 1 || error.code === "1") &&
|
|
2428
|
+
if (error.killed !== true && (error.code === 1 || error.code === "1") && windowsRegistryKeyMissingFromBytes(stderr)) {
|
|
2414
2429
|
resolve(Buffer.alloc(0));
|
|
2415
2430
|
return;
|
|
2416
2431
|
}
|
|
@@ -2829,6 +2844,24 @@ function windowsRegistryKeyMissing(stderr) {
|
|
|
2829
2844
|
return /^ERROR:\s*The system was unable to find the specified registry key or value\.?$/iu.test(detail) || /^错误[::]\s*系统找不到指定的注册表项或值[。.]?$/u.test(detail);
|
|
2830
2845
|
}
|
|
2831
2846
|
/**
|
|
2847
|
+
* Reg.exe speaks the console OEM code page, not UTF-8: on a zh-CN install the
|
|
2848
|
+
* missing-key diagnostic arrives as cp936 bytes, which UTF-8 decoding turns
|
|
2849
|
+
* into mojibake no diagnostic regex can match — the query then reads as
|
|
2850
|
+
* "incomplete" on every absent root. Extension of #88's byte-level principle:
|
|
2851
|
+
* the bytes decide, so decode as UTF-8 first and then as GBK. ASCII — every
|
|
2852
|
+
* English diagnostic — is identical under both, so a match is unambiguous and
|
|
2853
|
+
* recognition only ever widens; a genuine failure (access denied, unknown
|
|
2854
|
+
* diagnostics) still stays incomplete in either decode.
|
|
2855
|
+
*/
|
|
2856
|
+
function windowsRegistryKeyMissingFromBytes(stderr) {
|
|
2857
|
+
if (windowsRegistryKeyMissing(stderr.toString("utf8"))) return true;
|
|
2858
|
+
try {
|
|
2859
|
+
return windowsRegistryKeyMissing(new TextDecoder("gbk").decode(stderr));
|
|
2860
|
+
} catch {
|
|
2861
|
+
return false;
|
|
2862
|
+
}
|
|
2863
|
+
}
|
|
2864
|
+
/**
|
|
2832
2865
|
* Parse the value columns emitted by `reg query ... /s`.
|
|
2833
2866
|
*
|
|
2834
2867
|
* Entries are filtered by the product's DisplayName pattern *before* the
|
|
@@ -4177,7 +4210,7 @@ var WorkBuddyCatalog = class {
|
|
|
4177
4210
|
};
|
|
4178
4211
|
//#endregion
|
|
4179
4212
|
//#region src/version.ts
|
|
4180
|
-
const WORKBUDDY_CONNECT_VERSION = "0.7.
|
|
4213
|
+
const WORKBUDDY_CONNECT_VERSION = "0.7.7";
|
|
4181
4214
|
//#endregion
|
|
4182
4215
|
//#region src/host-heartbeat.ts
|
|
4183
4216
|
/**
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as validAppVersion, A as extractDisplayErrorMessage, B as randomSentinel, C as WORKBUDDY_VARIANTS, D as WORKBUDDY_UPDATE_PATH, F as prepareCnChatBody, G as readCliVersion, H as FALLBACK_CN_APP_VERSION, I as prepareInternationalChatBody, J as WORKBUDDY_APP_VERSION_FILENAME, K as resolveChatIdentity, L as regionOf, M as normalizeCredits, N as parseModelCatalog, O as WorkBuddyUpstreamClient, P as prepareChatBody, Q as resolveAppVersion, R as PROBE_EFFORT_CANDIDATES, S as CN_VARIANT, U as chatUserAgent, V as CN_APP_VERSION_FILENAME, W as fallbackChatIdentity, X as installedAppVersion, Y as appUserAgent, Z as readBundleVersion, _ as desktopAuthCandidatesFor, a as readHostHeartbeat, b as atRestKeyProviderFor, c as WORKBUDDY_CONNECT_VERSION, d as WorkBuddyCatalog, f as WORKBUDDY_AUTH_FILENAME, g as defaultDesktopAuthPath, h as defaultDesktopAuthCandidates, i as processStartTimeMs, j as modelWithCurrentPromotion, k as classifyUpstreamError, l as FALLBACK_WORKBUDDY_AI_MODELS, m as WorkBuddyCredentialStore, n as clearHostHeartbeat, o as workbuddyHostHeartbeatPath, p as WORKBUDDY_AUTH_FILE_ENV, q as validCliVersion, r as isHeartbeatProcessAlive, s as writeHostHeartbeat, t as WORKBUDDY_HOST_HEARTBEAT_FILENAME, u as FALLBACK_WORKBUDDY_MODELS, v as parseWorkBuddyAuth, w as variantFor, x as AI_VARIANT, y as workbuddyOwnAuthPath, z as probeModel } from "./host-heartbeat-
|
|
1
|
+
import { $ as validAppVersion, A as extractDisplayErrorMessage, B as randomSentinel, C as WORKBUDDY_VARIANTS, D as WORKBUDDY_UPDATE_PATH, F as prepareCnChatBody, G as readCliVersion, H as FALLBACK_CN_APP_VERSION, I as prepareInternationalChatBody, J as WORKBUDDY_APP_VERSION_FILENAME, K as resolveChatIdentity, L as regionOf, M as normalizeCredits, N as parseModelCatalog, O as WorkBuddyUpstreamClient, P as prepareChatBody, Q as resolveAppVersion, R as PROBE_EFFORT_CANDIDATES, S as CN_VARIANT, U as chatUserAgent, V as CN_APP_VERSION_FILENAME, W as fallbackChatIdentity, X as installedAppVersion, Y as appUserAgent, Z as readBundleVersion, _ as desktopAuthCandidatesFor, a as readHostHeartbeat, b as atRestKeyProviderFor, c as WORKBUDDY_CONNECT_VERSION, d as WorkBuddyCatalog, f as WORKBUDDY_AUTH_FILENAME, g as defaultDesktopAuthPath, h as defaultDesktopAuthCandidates, i as processStartTimeMs, j as modelWithCurrentPromotion, k as classifyUpstreamError, l as FALLBACK_WORKBUDDY_AI_MODELS, m as WorkBuddyCredentialStore, n as clearHostHeartbeat, o as workbuddyHostHeartbeatPath, p as WORKBUDDY_AUTH_FILE_ENV, q as validCliVersion, r as isHeartbeatProcessAlive, s as writeHostHeartbeat, t as WORKBUDDY_HOST_HEARTBEAT_FILENAME, u as FALLBACK_WORKBUDDY_MODELS, v as parseWorkBuddyAuth, w as variantFor, x as AI_VARIANT, y as workbuddyOwnAuthPath, z as probeModel } from "./host-heartbeat-FytEpUGO.js";
|
|
2
2
|
import z from "@deepseek-ai/schemastery";
|
|
3
3
|
import { resolveImageAttachmentAccess, resolveRetryPolicy } from "@deepseek-ai/dsh-llm";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -1159,7 +1159,7 @@ var WorkBuddyProbeService = class {
|
|
|
1159
1159
|
//#region src/pi-ai-guard.ts
|
|
1160
1160
|
/**
|
|
1161
1161
|
* Confirm the pi-ai copy this plugin actually loaded is the generation the DSH
|
|
1162
|
-
* 0.2.
|
|
1162
|
+
* 0.2.1-rc.1 host was built against.
|
|
1163
1163
|
*
|
|
1164
1164
|
* #92's failure mode: a pnpm profile with `nodeLinker: hoisted` and
|
|
1165
1165
|
* `autoInstallPeers: false` installs no peer for us, so a co-installed
|
|
@@ -1178,7 +1178,7 @@ var WorkBuddyProbeService = class {
|
|
|
1178
1178
|
* @module dsh-workbuddy-connect/pi-ai-guard
|
|
1179
1179
|
*/
|
|
1180
1180
|
/** The pi-ai generation this plugin is built and tested against. */
|
|
1181
|
-
const REQUIRED_PI_AI_VERSION = "
|
|
1181
|
+
const REQUIRED_PI_AI_VERSION = "1.3.0";
|
|
1182
1182
|
/**
|
|
1183
1183
|
* Read the version of the pi-ai copy Node resolves for *this* module.
|
|
1184
1184
|
*
|
|
@@ -1225,7 +1225,7 @@ function resolvedPiAiVersion() {
|
|
|
1225
1225
|
*/
|
|
1226
1226
|
function piAiVersionWarning(resolved) {
|
|
1227
1227
|
const version = arguments.length === 0 ? resolvedPiAiVersion() : resolved;
|
|
1228
|
-
if (version === void 0 || version === "
|
|
1228
|
+
if (version === void 0 || version === "1.3.0") return void 0;
|
|
1229
1229
|
return `loaded @earendil-works/pi-ai ${version}, but this plugin is built for ${REQUIRED_PI_AI_VERSION}. The wrong copy is being resolved — check the profile's pi-ai install (a pnpm profile with nodeLinker "hoisted" and autoInstallPeers false can expose another package's older copy). Reinstalling the plugin so it installs its own ${REQUIRED_PI_AI_VERSION} copy resolves it`;
|
|
1230
1230
|
}
|
|
1231
1231
|
//#endregion
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "dsh-workbuddy-connect",
|
|
3
3
|
"displayName": "DSH WorkBuddy Connect",
|
|
4
4
|
"description": "将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness — bring WorkBuddy desktop app models into DeepSeek Harness with zero configuration.",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.7",
|
|
6
6
|
"author": "corrinehu",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"dsh-plugin",
|
|
@@ -67,42 +67,42 @@
|
|
|
67
67
|
}
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@earendil-works/pi-ai": "
|
|
70
|
+
"@earendil-works/pi-ai": "1.3.0"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
74
|
-
"@deepseek-ai/dsh-atomic-write": "0.2.
|
|
75
|
-
"@deepseek-ai/dsh-attachment": "0.2.
|
|
76
|
-
"@deepseek-ai/dsh-home-paths": "0.2.
|
|
77
|
-
"@deepseek-ai/dsh-host-webserver": "0.2.
|
|
78
|
-
"@deepseek-ai/dsh-llm": "0.2.
|
|
79
|
-
"@deepseek-ai/dsh-llm-pi-ai": "0.2.
|
|
80
|
-
"@deepseek-ai/dsh-settings": "0.2.
|
|
81
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
73
|
+
"@deepseek-ai/cordis": "^4.0.5",
|
|
74
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.1-rc.1",
|
|
75
|
+
"@deepseek-ai/dsh-attachment": "0.2.1-rc.1",
|
|
76
|
+
"@deepseek-ai/dsh-home-paths": "0.2.1-rc.1",
|
|
77
|
+
"@deepseek-ai/dsh-host-webserver": "0.2.1-rc.1",
|
|
78
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.1",
|
|
79
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.1-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-settings": "0.2.1-rc.1",
|
|
81
|
+
"@deepseek-ai/schemastery": "^3.18.5",
|
|
82
82
|
"react": "^18.2.0"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
86
|
-
"@deepseek-ai/dsh-atomic-write": "0.2.
|
|
87
|
-
"@deepseek-ai/dsh-attachment": "0.2.
|
|
88
|
-
"@deepseek-ai/dsh-client-locale": "0.2.
|
|
89
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.2.
|
|
90
|
-
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.
|
|
91
|
-
"@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.
|
|
92
|
-
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.
|
|
93
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.2.
|
|
94
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.2.
|
|
95
|
-
"@deepseek-ai/dsh-credentials": "0.2.
|
|
96
|
-
"@deepseek-ai/dsh-authorization": "0.2.
|
|
97
|
-
"@deepseek-ai/dsh-fs": "0.2.
|
|
98
|
-
"@deepseek-ai/dsh-launch-environment": "0.2.
|
|
99
|
-
"@deepseek-ai/dsh-home-paths": "0.2.
|
|
100
|
-
"@deepseek-ai/dsh-host-webserver": "0.2.
|
|
101
|
-
"@deepseek-ai/dsh-llm": "0.2.
|
|
102
|
-
"@deepseek-ai/dsh-llm-pi-ai": "0.2.
|
|
103
|
-
"@deepseek-ai/dsh-settings": "0.2.
|
|
104
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
105
|
-
"@earendil-works/pi-ai": "
|
|
85
|
+
"@deepseek-ai/cordis": "^4.0.5",
|
|
86
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.1-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-attachment": "0.2.1-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.1-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.1-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-credentials": "0.2.1-rc.1",
|
|
96
|
+
"@deepseek-ai/dsh-authorization": "0.2.1-rc.1",
|
|
97
|
+
"@deepseek-ai/dsh-fs": "0.2.1-rc.1",
|
|
98
|
+
"@deepseek-ai/dsh-launch-environment": "0.2.1-rc.1",
|
|
99
|
+
"@deepseek-ai/dsh-home-paths": "0.2.1-rc.1",
|
|
100
|
+
"@deepseek-ai/dsh-host-webserver": "0.2.1-rc.1",
|
|
101
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.1-rc.1",
|
|
103
|
+
"@deepseek-ai/dsh-settings": "0.2.1-rc.1",
|
|
104
|
+
"@deepseek-ai/schemastery": "^3.18.5",
|
|
105
|
+
"@earendil-works/pi-ai": "1.3.0",
|
|
106
106
|
"@types/node": "^22.20.0",
|
|
107
107
|
"@types/react": "~18.3.1",
|
|
108
108
|
"@types/react-test-renderer": "^18.3.1",
|