dsh-workbuddy-connect 0.7.5 → 0.7.6

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 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.5, 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.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,7 @@ 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.0-rc.2 | 0.7.5 (npm latest) |
26
+ | 0.2.0-rc.2 | 0.7.6 (npm latest) |
27
27
  | 0.2.0-rc.1 | 0.7.0 |
28
28
  | 0.1.5 – 0.1.7 | 0.6.5 |
29
29
 
@@ -31,8 +31,8 @@ Core-to-plugin quick reference (full table in "Compatibility and release history
31
31
  <summary>Manual install (command line, Web / TUI only)</summary>
32
32
 
33
33
  ```sh
34
- # Web (pin per your actual core — example: 0.2.0-rc.2 -> 0.7.5; or install from source via github:corrinehu/dsh-workbuddy-connect)
35
- dsh plugin --profile web add dsh-workbuddy-connect@0.7.5
34
+ # Web (pin per your actual core — example: 0.2.0-rc.2 -> 0.7.6; or install from source via github:corrinehu/dsh-workbuddy-connect)
35
+ dsh plugin --profile web add dsh-workbuddy-connect@0.7.6
36
36
  dsh web
37
37
 
38
38
  # TUI (example for a 0.1.x core; that profile needs pnpm 11, e.g. npx pnpm@11)
@@ -126,7 +126,7 @@ The plugin version must match the DSH core — a mismatched combination fails to
126
126
 
127
127
  | DSH core | Recommended plugin | Notes |
128
128
  |---|---|---|
129
- | `0.2.0-rc.2` | `0.7.5` (npm latest) | Current line; fixes disappearing composer controls and WSL helper environment forwarding. Avoid 0.7.2 with its registry regression. |
129
+ | `0.2.0-rc.2` | `0.7.6` (npm latest) | Current line; fixes enterprise catalog gaps and international chat requests blocked by the upstream channel check. Avoid 0.7.2 with its registry regression. |
130
130
  | `0.2.0-rc.1` | `0.7.0` | 0.7.1 drops rc.1 support; stay on this version. |
131
131
  | `0.1.5` – `0.1.7` | `0.6.5` | Final release for the old cores; 0.7.0 targets 0.2.0 only. |
132
132
  | `0.1.2-rc.1` | `0.3.1` | Older line, historical maintenance only. |
@@ -134,6 +134,7 @@ The plugin version must match the DSH core — a mismatched combination fails to
134
134
 
135
135
  Release history (full records at [releases](https://github.com/corrinehu/dsh-workbuddy-connect/releases)):
136
136
 
137
+ - **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)).
137
138
  - **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.
138
139
  - **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.
139
140
  - **0.7.3**: fixes Windows registry auto-discovery failing on non-default install paths ([#105](https://github.com/corrinehu/dsh-workbuddy-connect/issues/105)).
@@ -142,7 +143,7 @@ Release history (full records at [releases](https://github.com/corrinehu/dsh-wor
142
143
  - **0.7.0**: adapts to DSH 0.2.0's settings-service rework and drops 0.1.x support.
143
144
  - **0.6.5**: final release of the 0.1.x line.
144
145
 
145
- Pinned-version install example: `dsh plugin --profile web add dsh-workbuddy-connect@0.7.5`.
146
+ Pinned-version install example: `dsh plugin --profile web add dsh-workbuddy-connect@0.7.6`.
146
147
 
147
148
  **Do not upgrade the profile-level `@earendil-works/pi-ai` to 1.x**: this plugin and the `0.2.0-rc.2` generation of the DSH core both require `^0.87.1` (bundled by the plugin since 0.7.2), and third-party plugin managers' "updatable" prompts do not check peer constraints — do not act on them ([#86](https://github.com/corrinehu/dsh-workbuddy-connect/issues/86)); likewise, do not blindly remove a leftover `overrides: {'@earendil-works/pi-ai': '0.87.1'}` until you have confirmed nothing else depends on it.
148
149
 
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.5、rc.1→0.7.0、0.1.5–0.1.7→0.6.5),优先走本机受支持的非插件市场渠道;部分 Desktop 发行版(尤其官方 Electron 版)的 profile 由 App 管理,各发行版规则未必相同,先确认我所用的发行版,再探查其合规的安装方式,但不得绕过其校验;
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 管理,各发行版规则未必相同,先确认我所用的发行版,再探查其合规的安装方式,但不得绕过其校验;
17
17
  任何本地文件或配置改动,先征得我同意并做好备份;
18
18
  装完后验证模型选择器里出现 WorkBuddy 分组,并陪我完成一次简短对话;
19
19
  若 Desktop 安装仍因 generation 校验失败(如 @types/retry 误报),请如实报告、参照上游 dataelement/dsh-desktop#688,并建议我改用独立的 Web / TUI,不要修改依赖包或绕过校验。
@@ -23,7 +23,7 @@
23
23
 
24
24
  | DSH 内核 | 推荐插件版 |
25
25
  |---|---|
26
- | 0.2.0-rc.2 | 0.7.5(npm latest) |
26
+ | 0.2.0-rc.2 | 0.7.6(npm latest) |
27
27
  | 0.2.0-rc.1 | 0.7.0 |
28
28
  | 0.1.5 – 0.1.7 | 0.6.5 |
29
29
 
@@ -31,8 +31,8 @@
31
31
  <summary>手动安装(命令行,仅 Web / TUI)</summary>
32
32
 
33
33
  ```sh
34
- # Web(按实际内核固定版本,示例为 0.2.0-rc.2 → 0.7.5;也可用 github:corrinehu/dsh-workbuddy-connect 从源码安装)
35
- dsh plugin --profile web add dsh-workbuddy-connect@0.7.5
34
+ # Web(按实际内核固定版本,示例为 0.2.0-rc.2 → 0.7.6;也可用 github:corrinehu/dsh-workbuddy-connect 从源码安装)
35
+ dsh plugin --profile web add dsh-workbuddy-connect@0.7.6
36
36
  dsh web
37
37
 
38
38
  # TUI(示例为 0.1.x 内核;该 profile 需用 pnpm 11 安装,如 npx pnpm@11)
@@ -127,7 +127,7 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
127
127
 
128
128
  | DSH 内核 | 推荐插件版 | 注意事项 |
129
129
  |---|---|---|
130
- | `0.2.0-rc.2` | `0.7.5`(npm latest) | 当前最新线;修复输入框组件消失与 WSL helper 环境转发,勿停留在有注册表回归的 0.7.2。 |
130
+ | `0.2.0-rc.2` | `0.7.6`(npm latest) | 当前最新线;修复企业账号模型目录缺项与国际版对话被渠道校验拦截,勿停留在有注册表回归的 0.7.2。 |
131
131
  | `0.2.0-rc.1` | `0.7.0` | 0.7.1 起不再支持 rc.1,请停留本版。 |
132
132
  | `0.1.5` – `0.1.7` | `0.6.5` | 旧内核最终版;0.7.0 起仅面向 0.2.0。 |
133
133
  | `0.1.2-rc.1` | `0.3.1` | 更早旧线,仅历史维护。 |
@@ -135,6 +135,8 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
135
135
 
136
136
  历次更新(完整记录见 [releases](https://github.com/corrinehu/dsh-workbuddy-connect/releases)):
137
137
 
138
+ - **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
+ - **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))。
138
140
  - **0.7.4**:Windows 诊断与稳定性改进:注册表子进程输出超限准确分类、跨平台测试假设修正([#62](https://github.com/corrinehu/dsh-workbuddy-connect/issues/62)),安装说明重排。
139
141
  - **0.7.3**:修复 Windows 非默认安装路径下注册表自动发现失败([#105](https://github.com/corrinehu/dsh-workbuddy-connect/issues/105))。
140
142
  - **0.7.2**:pi-ai 改为插件自带依赖,并修复推理字段请求被拒([#92](https://github.com/corrinehu/dsh-workbuddy-connect/issues/92));该版存在 Windows 注册表回归,请使用 0.7.4 或更新的正式版本。
@@ -142,7 +144,7 @@ dsh plugin --profile web exec dsh-workbuddy-connect doctor --provider workbuddy-
142
144
  - **0.7.0**:适配 DSH 0.2.0 的设置服务改造,不再支持 0.1.x。
143
145
  - **0.6.5**:0.1.x 线最终版本。
144
146
 
145
- 固定版本安装示例:`dsh plugin --profile web add dsh-workbuddy-connect@0.7.5`。
147
+ 固定版本安装示例:`dsh plugin --profile web add dsh-workbuddy-connect@0.7.6`。
146
148
 
147
149
  **不要把 profile 级的 `@earendil-works/pi-ai` 升到 1.x**:本插件与 `0.2.0-rc.2` 这一代内核都要求 `^0.87.1`(0.7.2 起由插件自带),第三方插件管理器的「可更新」提示不校验 peer 约束、不能照做([#86](https://github.com/corrinehu/dsh-workbuddy-connect/issues/86));为此历史遗留的 `overrides: {'@earendil-works/pi-ai': '0.87.1'}` 在确认其他插件不依赖前也不要盲目移除。
148
150
 
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-CvtbpuQi.js";
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-vU86u9aU.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.5";
2775
+ const WORKBUDDY_CONNECT_VERSION = "0.7.6";
2776
2776
  //#endregion
2777
2777
  //#region src/client/WorkBuddyConfigPage.tsx
2778
2778
  /**
@@ -3,7 +3,7 @@ import { homedir, release } from "node:os";
3
3
  import { basename, dirname, join } from "node:path";
4
4
  import { withFileLock, writeFileAtomic } from "@deepseek-ai/dsh-atomic-write";
5
5
  import { resolveDshHome } from "@deepseek-ai/dsh-home-paths";
6
- import { createDecipheriv, createHash, randomBytes } from "node:crypto";
6
+ import { createDecipheriv, createHash, randomBytes, randomUUID } from "node:crypto";
7
7
  import { execFile, execFileSync } from "node:child_process";
8
8
  import { accessSync, constants, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
9
9
  //#region src/app-version.ts
@@ -709,11 +709,39 @@ function commonHeaders(credential) {
709
709
  };
710
710
  }
711
711
  /**
712
+ * The conversation-channel trio the chat endpoints require.
713
+ *
714
+ * Since 2026-10-16 `www.workbuddy.ai` answers any `/v2/chat/completions`
715
+ * request that omits all three `X-Conversation-*` headers with `400` /
716
+ * `code 11128` / `msg: "conversation id missing"`, whose `displayMsg.zh` is
717
+ * 「请求被拦截,请重新发送」 (issue #139). The official desktop client sends
718
+ * the trio on chat and speech alike — read out of `resources/app.asar`, where
719
+ * the names are `X-Conversation-ID`, `X-Conversation-Request-ID` and
720
+ * `X-Conversation-Message-ID`.
721
+ *
722
+ * A fresh UUID per request is enough, and is what the wire measurement
723
+ * supports: the upstream keeps no history keyed by the id (two calls sharing
724
+ * one id, the second carrying only `system` + `user`, still answered "I don't
725
+ * know"), so the trio marks the channel rather than carrying conversation
726
+ * state. Fresh ids also keep concurrent sub-agents off one shared
727
+ * conversation. The CN gateway was measured accepting the same trio (200 with
728
+ * and without), so both regions carry it and the two paths cannot drift.
729
+ */
730
+ function conversationHeaders() {
731
+ return {
732
+ "X-Conversation-ID": randomUUID(),
733
+ "X-Conversation-Request-ID": randomUUID(),
734
+ "X-Conversation-Message-ID": randomUUID()
735
+ };
736
+ }
737
+ /**
712
738
  * Chat request headers, including the X-No-* conventions the official CLI uses.
713
739
  *
714
740
  * `userAgent` and `clientVersion` carry the same resolved desktop identity for
715
741
  * chat and probe requests. Refresh shares `commonHeaders` but never this
716
- * override, so the two paths cannot drift into each other.
742
+ * override, so the two paths cannot drift into each other. The
743
+ * `X-Conversation-*` trio rides along too — see {@link conversationHeaders} —
744
+ * because the international gateway rejects a chat that omits it.
717
745
  */
718
746
  function chatHeaders(credential, userAgent, clientVersion) {
719
747
  return {
@@ -726,7 +754,8 @@ function chatHeaders(credential, userAgent, clientVersion) {
726
754
  "X-IDE-Type": "WorkBuddy",
727
755
  "X-IDE-Name": "WorkBuddy",
728
756
  "X-IDE-Version": clientVersion,
729
- "X-Product": "SaaS"
757
+ "X-Product": "SaaS",
758
+ ...conversationHeaders()
730
759
  };
731
760
  }
732
761
  /** Refresh-endpoint headers; X-Refresh-Token appears here and nowhere else. */
@@ -755,6 +784,28 @@ function billingHeaders(credential) {
755
784
  return headers;
756
785
  }
757
786
  /**
787
+ * Account-identity headers for the CN catalog requests (`/v3/config` and the
788
+ * console badge read). The gateway also splits `/v3/config` by account
789
+ * identity: an enterprise account without this pair is silently answered with
790
+ * the personal roster (issue #123 — 18 vs 19 models, FlashX missing), and the
791
+ * pair is all-or-nothing there: `X-Enterprise-Id` alone is rejected outright
792
+ * while `X-User-Id` alone selects nothing. So the block is emitted only when
793
+ * both parts exist, and personal accounts keep the bare headers their roster
794
+ * was already correct under. `X-Tenant-Id`/`X-Domain` ride along in the
795
+ * spelling `billingHeaders` already proved the gateway accepts.
796
+ */
797
+ function identityHeaders(credential) {
798
+ if (credential.uid === "") return {};
799
+ if (credential.enterpriseId === void 0 || credential.enterpriseId === "") return {};
800
+ const headers = {
801
+ "X-User-Id": credential.uid,
802
+ "X-Enterprise-Id": credential.enterpriseId,
803
+ "X-Tenant-Id": credential.enterpriseId
804
+ };
805
+ if (credential.domain !== "") headers["X-Domain"] = credential.domain;
806
+ return headers;
807
+ }
808
+ /**
758
809
  * Normalize an OpenAI chat-completions body for the WorkBuddy upstream:
759
810
  * force `stream: true` (the upstream rejects non-streaming), flatten
760
811
  * `tool_choice` (the upstream's field is a string; object forms return 400),
@@ -1036,6 +1087,13 @@ var WorkBuddyUpstreamClient = class {
1036
1087
  * advertises is exactly the one its own requests can use. The international
1037
1088
  * variant has no CLI identity, so it keeps the App-shaped UA.
1038
1089
  *
1090
+ * The same split has an account-identity axis (issue #123): an enterprise
1091
+ * account must also present `X-User-Id` + `X-Enterprise-Id`, or the gateway
1092
+ * answers with the personal roster. CN sends that pair via
1093
+ * {@link identityHeaders} whenever the credential carries both halves; the
1094
+ * international gateway's split was never measured against account headers,
1095
+ * so it keeps its documented shape.
1096
+ *
1039
1097
  * Membership is the `cli` roster intersected with the usable rows (see
1040
1098
  * {@link parseModelCatalog}); the promo badges the product document does
1041
1099
  * not carry are merged in from a best-effort console read — see
@@ -1057,7 +1115,7 @@ var WorkBuddyUpstreamClient = class {
1057
1115
  ...international ? {
1058
1116
  "X-Requested-With": "XMLHttpRequest",
1059
1117
  "X-Product": "SaaS"
1060
- } : {},
1118
+ } : identityHeaders(credential),
1061
1119
  "User-Agent": appVersion === void 0 ? CLIENT_UA : appUserAgent(appVersion.version)
1062
1120
  },
1063
1121
  signal: signal === void 0 ? AbortSignal.timeout(JSON_TIMEOUT_MS) : AbortSignal.any([signal, AbortSignal.timeout(JSON_TIMEOUT_MS)])
@@ -1094,6 +1152,7 @@ var WorkBuddyUpstreamClient = class {
1094
1152
  Accept: "application/json",
1095
1153
  Origin: originReferer(credential),
1096
1154
  Referer: `${originReferer(credential)}/`,
1155
+ ...identityHeaders(credential),
1097
1156
  "User-Agent": CLIENT_UA
1098
1157
  },
1099
1158
  signal: signal === void 0 ? AbortSignal.timeout(JSON_TIMEOUT_MS) : AbortSignal.any([signal, AbortSignal.timeout(JSON_TIMEOUT_MS)])
@@ -4118,7 +4177,7 @@ var WorkBuddyCatalog = class {
4118
4177
  };
4119
4178
  //#endregion
4120
4179
  //#region src/version.ts
4121
- const WORKBUDDY_CONNECT_VERSION = "0.7.5";
4180
+ const WORKBUDDY_CONNECT_VERSION = "0.7.6";
4122
4181
  //#endregion
4123
4182
  //#region src/host-heartbeat.ts
4124
4183
  /**
package/lib/index.d.ts CHANGED
@@ -508,6 +508,13 @@ declare class WorkBuddyUpstreamClient {
508
508
  * advertises is exactly the one its own requests can use. The international
509
509
  * variant has no CLI identity, so it keeps the App-shaped UA.
510
510
  *
511
+ * The same split has an account-identity axis (issue #123): an enterprise
512
+ * account must also present `X-User-Id` + `X-Enterprise-Id`, or the gateway
513
+ * answers with the personal roster. CN sends that pair via
514
+ * {@link identityHeaders} whenever the credential carries both halves; the
515
+ * international gateway's split was never measured against account headers,
516
+ * so it keeps its documented shape.
517
+ *
511
518
  * Membership is the `cli` roster intersected with the usable rows (see
512
519
  * {@link parseModelCatalog}); the promo badges the product document does
513
520
  * not carry are merged in from a best-effort console read — see
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-CvtbpuQi.js";
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-vU86u9aU.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";
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",
5
+ "version": "0.7.6",
6
6
  "author": "corrinehu",
7
7
  "keywords": [
8
8
  "dsh-plugin",