dsh-workbuddy-connect 0.7.0 → 0.7.1
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 +4 -2
- package/README.md +4 -2
- package/lib/bin.js +1 -1
- package/lib/client.js +1 -1
- package/lib/{host-heartbeat-d_lBAk8t.js → host-heartbeat-L93zSVB5.js} +36 -12
- package/lib/index.d.ts +12 -1
- package/lib/index.js +3 -1
- package/package.json +9 -9
package/README.en.md
CHANGED
|
@@ -60,7 +60,8 @@ Prerequisite: the WorkBuddy desktop app is installed and signed in. The plugin r
|
|
|
60
60
|
|
|
61
61
|
| Plugin | Required DSH core | Desktop app |
|
|
62
62
|
|---|---|---|
|
|
63
|
-
| **0.7.
|
|
63
|
+
| **0.7.1 (current stable)** | **supports `0.2.0-rc.2` only** (`0.2.0-rc.1` users should stay on `0.7.0`), and narrows the `@earendil-works/pi-ai` peer from `^0.85.1 \|\| ^0.87.1` to **`^0.87.1`**: pnpm profiles upgraded in place from `0.6.x` no longer keep a stale `pi-ai@0.85.1` that still satisfies the range and re-creates the two-generation mixing of [#69](https://github.com/corrinehu/dsh-workbuddy-connect/issues/69) ([#74](https://github.com/corrinehu/dsh-workbuddy-connect/issues/74)). **The in-place upgrade from `0.6.5` is verified**: after editing `package.json` and running `pnpm install`, the plugin resolves `pi-ai@0.87.1` with no overrides; the old dual-arm behavior of `0.7.0` admitting `0.85.1` was reproduced as the control. | desktop builds bundling the `0.2.0-rc.2` core (preview / nightly) |
|
|
64
|
+
| **0.7.0 (the 0.2.0-era debut)** | **supports `0.2.0-rc.1` / `0.2.0-rc.2` only** (`0.1.5` / `0.1.6` / `0.1.7` are no longer covered — those users should stay on `0.6.5`), verified on a real `0.2.0-rc.2` host (web: loading, both CN and international catalogs, encrypted credentials, status routes all fine). This is the release that adapts to DSH `0.2.0`'s settings-service rework — `0.2.0` replaced the service with a Config-derived form facade that no longer installs sections, so earlier releases lose their settings there. **`0.7.1` drops `rc.1`** | desktop builds bundling the `0.2.0` core (preview / nightly) |
|
|
64
65
|
| **0.6.0 (dual-UI adaptive)** | `0.1.5-rc.1` / `rc.2` / `rc.3`; the `0.1.6-alpha` line (incl. `alpha.1` / `alpha.2`) and `0.1.6` stable; verified against `0.1.7-alpha.1` (`0.1.7` stable is inside the range too). **Subsequent `0.1.x` prereleases (e.g. `0.1.8-alpha.x`) DO fall inside the `^0.1.7-alpha.1` arm** — the host's compatibility check resolves peer ranges with includePrerelease semantics (our earlier "not covered" claim was wrong; corrected here); prereleases crossing into `0.2.0` are the ones that need an explicit peer-range extension | `2.0.7`+ works today; desktop builds bundling `0.1.6+` will work too |
|
|
65
66
|
| **0.6.5 (final release of the `0.1.x` line)** | adds `0.2.0-rc.1` on top of the `0.6.0` surface (`0.1.5` / `0.1.6` / `0.1.7` / `0.2.0-rc.1`), verified on a real `0.2.0-rc.1` host (web: loading, catalogs, encrypted credentials, chat & image round-trips all fine). Releases up to and including `0.6.4` do not carry that range and are skipped wholesale by DSH `0.2.0-rc.1` (see [#63](https://github.com/corrinehu/dsh-workbuddy-connect/issues/63)) | desktop builds bundling `0.1.x` cores (incl. the released `2.0.7`+ line); `0.2.0-rc.1` works too (verified on web; desktop not yet verified) |
|
|
66
67
|
| **0.3.2 – 0.5.4** (international support since `0.5.0`) | the `0.1.5-rc.1` line only (no `0.1.6+`; see [#41](https://github.com/corrinehu/dsh-workbuddy-connect/issues/41)) | `2.0.7`+ (bundled core `0.1.5-rc.1`) |
|
|
@@ -95,7 +96,8 @@ Prerequisite: the WorkBuddy desktop app is installed and signed in. The plugin r
|
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
- From `0.6.0` on, the Models settings page no longer shows the non-editable WorkBuddy / WorkBuddy AI cards (consistent across both core generations); the model picker, `/model`, and chat calls are unaffected.
|
|
98
|
-
- On DSH `0.2.0-rc.
|
|
99
|
+
- On DSH `0.2.0-rc.2`, just install the latest: `dsh plugin --profile web add dsh-workbuddy-connect`; on `0.2.0-rc.1`, stay on `0.7.0`: `dsh plugin --profile web add dsh-workbuddy-connect@0.7.0`
|
|
100
|
+
- pnpm profiles upgraded in place from `0.6.x` (with a manually installed `pi-ai@0.85.1`): on `0.7.1+` the peer range no longer admits `0.85.1`, so `pnpm install` moves the plugin onto the host's `0.87.1`; the temporary `overrides: {'@earendil-works/pi-ai': 0.87.1}` from [#74](https://github.com/corrinehu/dsh-workbuddy-connect/issues/74) can be removed
|
|
99
101
|
- Still on DSH `0.1.5` / `0.1.6` / `0.1.7`? Stay on `0.6.5`: `dsh plugin --profile web add dsh-workbuddy-connect@0.6.5`
|
|
100
102
|
- Still on DSH `0.1.2-rc.1`? Stay on `0.3.1`: `dsh plugin --profile web add dsh-workbuddy-connect@0.3.1`
|
|
101
103
|
- Still on DSH `0.1.1-rc.2`? Stay on the older release: `dsh plugin --profile web add dsh-workbuddy-connect@0.2.6`
|
package/README.md
CHANGED
|
@@ -70,7 +70,8 @@ WorkBuddy 中模型的推理档位信息目前分散在上游接口与客户端
|
|
|
70
70
|
|
|
71
71
|
| 插件版本 | 要求的 DSH 核心 | 桌面 App |
|
|
72
72
|
|---|---|---|
|
|
73
|
-
| **0.7.
|
|
73
|
+
| **0.7.1(当前稳定版)** | **仅支持 `0.2.0-rc.2`**(`0.2.0-rc.1` 用户请停留在 `0.7.0`),并把 `@earendil-works/pi-ai` peer 从 `^0.85.1 \|\| ^0.87.1` 收窄为 **`^0.87.1`**:从 `0.6.x` 原地升级的 pnpm profile 不再因旧 `pi-ai@0.85.1` 仍在范围内而被保留、复现 [#69](https://github.com/corrinehu/dsh-workbuddy-connect/issues/69) 的两代混用([#74](https://github.com/corrinehu/dsh-workbuddy-connect/issues/74))。**从 `0.6.5` 原地升级已实测**:编辑 `package.json` 后 `pnpm install`,插件即解析到 `pi-ai@0.87.1`,无需任何 override;同时在 `0.7.0` 上复现了双臂范围放行 `0.85.1` 的原行为作为对照。 | 内置 `0.2.0-rc.2` 内核的桌面版(预览 / nightly) |
|
|
74
|
+
| **0.7.0(0.2.0 世代首发)** | **仅支持 `0.2.0-rc.1` / `0.2.0-rc.2`**(`0.1.5` / `0.1.6` / `0.1.7` 不再支持,用户请停留在 `0.6.5`),已在 `0.2.0-rc.2` 真机实测(web 端:加载、国内版与国际版目录、加密凭据、状态路由正常)。这是适配 DSH `0.2.0` 设置服务改造的版本——`0.2.0` 把设置服务换成了 Config 表单门面,移除了旧的 `installSection` 接口,早期版本在上面会丢失设置项。**`0.7.1` 起不再支持 `rc.1`** | 内置 `0.2.0` 内核的桌面版(预览 / nightly) |
|
|
74
75
|
| **0.6.0(双界面自适应)** | `0.1.5-rc.1` / `rc.2` / `rc.3`;`0.1.6-alpha` 系列(含 `alpha.1` / `alpha.2`)与 `0.1.6` 正式版;已实测 `0.1.7-alpha.1`(`0.1.7` 正式版同样在范围内)。**后续 `0.1.x` prerelease(如 `0.1.8-alpha.x`)同样落在 `^0.1.7-alpha.1` 区间内**——宿主兼容判定按 includePrerelease 语义解析 peer range(早先「不自动覆盖」的说法有误,已更正);跨入 `0.2.0` 的 prerelease 才需要插件显式扩展 peer range | `2.0.7`+ 可直接使用;搭载 `0.1.6+` 核心的桌面版发布后同样适用 |
|
|
75
76
|
| **0.6.5(`0.1.x` 线最终版)** | 在 `0.6.0` 的支持面上追加 `0.2.0-rc.1`(`0.1.5` / `0.1.6` / `0.1.7` / `0.2.0-rc.1`),已在 `0.2.0-rc.1` 真机实测(web 端:加载、目录、加密凭据、对话与图片往返正常)。已发布的 `0.6.4` 及更早版本不含该区间,在 DSH `0.2.0-rc.1` 上会被宿主整体跳过(见 [#63](https://github.com/corrinehu/dsh-workbuddy-connect/issues/63)) | 内置 `0.1.x` 内核的桌面版(含 `2.0.7` 起的已发布正式版);`0.2.0-rc.1` 亦可(web 已实测,桌面版待实测) |
|
|
76
77
|
| **0.3.2 – 0.5.4**(国际版支持自 `0.5.0`) | `0.1.5-rc.1` 系列(不支持 `0.1.6+`,见 [#41](https://github.com/corrinehu/dsh-workbuddy-connect/issues/41)) | `2.0.7`+(内置核心已跟进 `0.1.5-rc.1`) |
|
|
@@ -104,7 +105,8 @@ WorkBuddy 中模型的推理档位信息目前分散在上游接口与客户端
|
|
|
104
105
|
```
|
|
105
106
|
|
|
106
107
|
- 自 `0.6.0` 起,Models 设置页不再显示 WorkBuddy / WorkBuddy AI 的不可编辑卡片(两代核心行为一致);模型选择器、`/model` 与对话调用不受影响。
|
|
107
|
-
- DSH `0.2.0-rc.
|
|
108
|
+
- DSH `0.2.0-rc.2` 的用户,安装最新版即可:`dsh plugin --profile web add dsh-workbuddy-connect`;还在 `0.2.0-rc.1` 的用户请停留在 `0.7.0`:`dsh plugin --profile web add dsh-workbuddy-connect@0.7.0`
|
|
109
|
+
- 从 `0.6.x` 原地升级的 pnpm profile(曾手动装过 `pi-ai@0.85.1`):升级到 `0.7.1+` 后 peer 范围不再接受 `0.85.1`,`pnpm install` 会把插件解析到宿主同代的 `0.87.1`;此前按 [#74](https://github.com/corrinehu/dsh-workbuddy-connect/issues/74) 临时加过的 `overrides: {'@earendil-works/pi-ai': 0.87.1}` 可以删掉了
|
|
108
110
|
- 还在用 DSH `0.1.5` / `0.1.6` / `0.1.7` 的用户,请停留在 `0.6.5`:`dsh plugin --profile web add dsh-workbuddy-connect@0.6.5`
|
|
109
111
|
- 还在用 DSH `0.1.2-rc.1` 的用户,请停留在 `0.3.1`:`dsh plugin --profile web add dsh-workbuddy-connect@0.3.1`
|
|
110
112
|
- 还在用 DSH `0.1.1-rc.2` 的用户,请停留在 `0.2.6`:`dsh plugin --profile web add dsh-workbuddy-connect@0.2.6`
|
package/lib/bin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as WORKBUDDY_VARIANTS, O as WorkBuddyUpstreamClient, S as CN_VARIANT, Z as resolveAppVersion, 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, S as CN_VARIANT, Z as resolveAppVersion, 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-L93zSVB5.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
|
@@ -2561,7 +2561,7 @@ window.__ModuleLoader__.load({
|
|
|
2561
2561
|
};
|
|
2562
2562
|
//#endregion
|
|
2563
2563
|
//#region src/version.ts
|
|
2564
|
-
const WORKBUDDY_CONNECT_VERSION = "0.7.
|
|
2564
|
+
const WORKBUDDY_CONNECT_VERSION = "0.7.1";
|
|
2565
2565
|
//#endregion
|
|
2566
2566
|
//#region src/client/WorkBuddyConfigPage.tsx
|
|
2567
2567
|
/**
|
|
@@ -387,15 +387,36 @@ function randomSentinel() {
|
|
|
387
387
|
return `probe_sentinel_${randomBytes(12).toString("hex")}`;
|
|
388
388
|
}
|
|
389
389
|
/**
|
|
390
|
-
* The upstream's "this effort value is not supported"
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
394
|
-
|
|
395
|
-
|
|
390
|
+
* The upstream's "this effort value is not supported" codes, per region, as
|
|
391
|
+
* measured on each live endpoint. The sets are kept separate so a code only
|
|
392
|
+
* ever widens detection for the endpoint it was measured on.
|
|
393
|
+
*
|
|
394
|
+
* - `invalid_reasoning_effort` — the China endpoint, measured 2026-09-11
|
|
395
|
+
* (plan §4.2). Also kept for `global` as a fallback spelling.
|
|
396
|
+
* - `model_param_invalid` — the global endpoint, measured 2026-10-01. A
|
|
397
|
+
* non-canonical value is answered `400` / `11133` with this code, which names
|
|
398
|
+
* no field (`extError.param` is empty), instead of one that names the effort.
|
|
399
|
+
* It is generic enough to be readable here only because the baseline step has
|
|
400
|
+
* already proved the *same* request without `reasoning_effort` succeeds,
|
|
401
|
+
* leaving the sentinel as the only difference between the two attempts. A
|
|
402
|
+
* sibling code in the same `11133` envelope that names another parameter
|
|
403
|
+
* (`integer_below_min_value`, the `max_tokens` floor) and a body carrying no
|
|
404
|
+
* `extError` at all (`11102`, unknown model) are therefore not mistaken for
|
|
405
|
+
* it, and neither is a level-sweep answer. It is *not* added to `cn`: that
|
|
406
|
+
* endpoint was measured answering the specific code, and reading a generic
|
|
407
|
+
* code there would widen attribution beyond what was observed.
|
|
408
|
+
*
|
|
409
|
+
* Neither is treated as a permanent protocol promise: anything unrecognized
|
|
410
|
+
* still degrades to `unknown` rather than to a capability conclusion.
|
|
411
|
+
*/
|
|
412
|
+
const INVALID_EFFORT_CODES = {
|
|
413
|
+
cn: /* @__PURE__ */ new Set(["invalid_reasoning_effort"]),
|
|
414
|
+
global: /* @__PURE__ */ new Set(["invalid_reasoning_effort", "model_param_invalid"])
|
|
415
|
+
};
|
|
396
416
|
/** Whether an attempt is an attributable rejection of the effort value. */
|
|
397
|
-
function isEffortRejection(attempt) {
|
|
398
|
-
|
|
417
|
+
function isEffortRejection(attempt, region) {
|
|
418
|
+
const codes = INVALID_EFFORT_CODES[region];
|
|
419
|
+
return attempt.status === 400 && attempt.errorCode !== void 0 && codes.has(attempt.errorCode);
|
|
399
420
|
}
|
|
400
421
|
/** Whether an attempt shows the upstream accepted the request and streamed. */
|
|
401
422
|
function isAcceptance(attempt) {
|
|
@@ -411,12 +432,15 @@ function unknownReason(stage, attempt) {
|
|
|
411
432
|
* Probe one model.
|
|
412
433
|
*
|
|
413
434
|
* `options.candidates` exists so tests can shorten the sweep; production always
|
|
414
|
-
* uses {@link PROBE_EFFORT_CANDIDATES}.
|
|
435
|
+
* uses {@link PROBE_EFFORT_CANDIDATES}. `options.region` selects which
|
|
436
|
+
* endpoint's rejection vocabulary is read; it defaults to `cn`, which is also
|
|
437
|
+
* the production default for the China app.
|
|
415
438
|
*/
|
|
416
439
|
async function probeModel(options) {
|
|
417
440
|
const sentinel = options.sentinel ?? randomSentinel;
|
|
418
441
|
const candidates = options.candidates ?? PROBE_EFFORT_CANDIDATES;
|
|
419
442
|
const timeoutMs = options.timeoutMs ?? 3e4;
|
|
443
|
+
const region = options.region ?? "cn";
|
|
420
444
|
let requests = 0;
|
|
421
445
|
const attempt = async (effort) => {
|
|
422
446
|
requests += 1;
|
|
@@ -447,7 +471,7 @@ async function probeModel(options) {
|
|
|
447
471
|
efforts: [],
|
|
448
472
|
requests
|
|
449
473
|
};
|
|
450
|
-
if (!isEffortRejection(sentinelAttempt)) return {
|
|
474
|
+
if (!isEffortRejection(sentinelAttempt, region)) return {
|
|
451
475
|
validation: "unknown",
|
|
452
476
|
efforts: [],
|
|
453
477
|
requests,
|
|
@@ -460,7 +484,7 @@ async function probeModel(options) {
|
|
|
460
484
|
accepted.push(effort);
|
|
461
485
|
continue;
|
|
462
486
|
}
|
|
463
|
-
if (isEffortRejection(levelAttempt)) continue;
|
|
487
|
+
if (isEffortRejection(levelAttempt, region)) continue;
|
|
464
488
|
return {
|
|
465
489
|
validation: "unknown",
|
|
466
490
|
efforts: [],
|
|
@@ -3611,7 +3635,7 @@ var WorkBuddyCatalog = class {
|
|
|
3611
3635
|
};
|
|
3612
3636
|
//#endregion
|
|
3613
3637
|
//#region src/version.ts
|
|
3614
|
-
const WORKBUDDY_CONNECT_VERSION = "0.7.
|
|
3638
|
+
const WORKBUDDY_CONNECT_VERSION = "0.7.1";
|
|
3615
3639
|
//#endregion
|
|
3616
3640
|
//#region src/host-heartbeat.ts
|
|
3617
3641
|
/**
|
package/lib/index.d.ts
CHANGED
|
@@ -229,17 +229,22 @@ type ProbeOutcome = {
|
|
|
229
229
|
requests: number;
|
|
230
230
|
reason: string;
|
|
231
231
|
};
|
|
232
|
+
/** Which endpoint's rejection vocabulary a probe interprets. */
|
|
233
|
+
type ProbeRegion = 'cn' | 'global';
|
|
232
234
|
/**
|
|
233
235
|
* Probe one model.
|
|
234
236
|
*
|
|
235
237
|
* `options.candidates` exists so tests can shorten the sweep; production always
|
|
236
|
-
* uses {@link PROBE_EFFORT_CANDIDATES}.
|
|
238
|
+
* uses {@link PROBE_EFFORT_CANDIDATES}. `options.region` selects which
|
|
239
|
+
* endpoint's rejection vocabulary is read; it defaults to `cn`, which is also
|
|
240
|
+
* the production default for the China app.
|
|
237
241
|
*/
|
|
238
242
|
declare function probeModel(options: {
|
|
239
243
|
send: ProbeSender;
|
|
240
244
|
sentinel?: SentinelFactory;
|
|
241
245
|
candidates?: readonly WorkBuddyEffort[];
|
|
242
246
|
timeoutMs?: number;
|
|
247
|
+
region?: ProbeRegion;
|
|
243
248
|
}): Promise<ProbeOutcome>;
|
|
244
249
|
//#endregion
|
|
245
250
|
//#region src/upstream.d.ts
|
|
@@ -1463,6 +1468,12 @@ interface WorkBuddyProbeServiceOptions {
|
|
|
1463
1468
|
*/
|
|
1464
1469
|
account: () => string | undefined;
|
|
1465
1470
|
sentinel?: SentinelFactory;
|
|
1471
|
+
/**
|
|
1472
|
+
* Which endpoint's rejection vocabulary sweeps read. The two apps talk to
|
|
1473
|
+
* different upstreams that answer a bad effort with different codes, so each
|
|
1474
|
+
* runtime passes its own region instead of sharing one widening set.
|
|
1475
|
+
*/
|
|
1476
|
+
region: ProbeRegion;
|
|
1466
1477
|
/** Injectable for tests; defaults to the live upstream sender. */
|
|
1467
1478
|
send?: (modelId: string) => ProbeSender;
|
|
1468
1479
|
}
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as extractDisplayErrorMessage, B as CN_APP_VERSION_FILENAME, C as WORKBUDDY_VARIANTS, D as WORKBUDDY_UPDATE_PATH, F as prepareInternationalChatBody, G as resolveChatIdentity, H as chatUserAgent, I as regionOf, J as appUserAgent, K as validCliVersion, L as PROBE_EFFORT_CANDIDATES, M as normalizeCredits, N as parseModelCatalog, O as WorkBuddyUpstreamClient, P as prepareChatBody, Q as validAppVersion, R as probeModel, S as CN_VARIANT, U as fallbackChatIdentity, V as FALLBACK_CN_APP_VERSION, W as readCliVersion, X as readBundleVersion, Y as installedAppVersion, Z as resolveAppVersion, _ 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 WORKBUDDY_APP_VERSION_FILENAME, 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 randomSentinel } from "./host-heartbeat-
|
|
1
|
+
import { A as extractDisplayErrorMessage, B as CN_APP_VERSION_FILENAME, C as WORKBUDDY_VARIANTS, D as WORKBUDDY_UPDATE_PATH, F as prepareInternationalChatBody, G as resolveChatIdentity, H as chatUserAgent, I as regionOf, J as appUserAgent, K as validCliVersion, L as PROBE_EFFORT_CANDIDATES, M as normalizeCredits, N as parseModelCatalog, O as WorkBuddyUpstreamClient, P as prepareChatBody, Q as validAppVersion, R as probeModel, S as CN_VARIANT, U as fallbackChatIdentity, V as FALLBACK_CN_APP_VERSION, W as readCliVersion, X as readBundleVersion, Y as installedAppVersion, Z as resolveAppVersion, _ 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 WORKBUDDY_APP_VERSION_FILENAME, 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 randomSentinel } from "./host-heartbeat-L93zSVB5.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";
|
|
@@ -1111,6 +1111,7 @@ var WorkBuddyProbeService = class {
|
|
|
1111
1111
|
try {
|
|
1112
1112
|
const outcome = await probeModel({
|
|
1113
1113
|
send,
|
|
1114
|
+
region: this.options.region,
|
|
1114
1115
|
...this.options.sentinel === void 0 ? {} : { sentinel: this.options.sentinel }
|
|
1115
1116
|
});
|
|
1116
1117
|
if (this.options.account() !== account) return {
|
|
@@ -1940,6 +1941,7 @@ function createVariantRuntime(config, variant, current, identityOf, accountOf, k
|
|
|
1940
1941
|
catalog,
|
|
1941
1942
|
credentials: store,
|
|
1942
1943
|
client,
|
|
1944
|
+
region: variant.id === CN_VARIANT.id ? "cn" : "global",
|
|
1943
1945
|
consent: () => current().probeConsent === true,
|
|
1944
1946
|
account: () => identityOf(variant.id)
|
|
1945
1947
|
}),
|
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.1",
|
|
6
6
|
"author": "corrinehu",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"dsh-plugin",
|
|
@@ -68,15 +68,15 @@
|
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
70
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
71
|
-
"@deepseek-ai/dsh-atomic-write": "0.2.0-rc.
|
|
72
|
-
"@deepseek-ai/dsh-attachment": "0.2.0-rc.
|
|
73
|
-
"@deepseek-ai/dsh-home-paths": "0.2.0-rc.
|
|
74
|
-
"@deepseek-ai/dsh-host-webserver": "0.2.0-rc.
|
|
75
|
-
"@deepseek-ai/dsh-llm": "0.2.0-rc.
|
|
76
|
-
"@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.
|
|
77
|
-
"@deepseek-ai/dsh-settings": "0.2.0-rc.
|
|
71
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2",
|
|
72
|
+
"@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
|
|
73
|
+
"@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
|
|
74
|
+
"@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
|
|
75
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.2",
|
|
76
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
|
|
77
|
+
"@deepseek-ai/dsh-settings": "0.2.0-rc.2",
|
|
78
78
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
79
|
-
"@earendil-works/pi-ai": "^0.
|
|
79
|
+
"@earendil-works/pi-ai": "^0.87.1",
|
|
80
80
|
"react": "^18.2.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|