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 +7 -6
- package/README.md +8 -6
- package/lib/bin.js +1 -1
- package/lib/client.js +1 -1
- package/lib/{host-heartbeat-CvtbpuQi.js → host-heartbeat-vU86u9aU.js} +64 -5
- package/lib/index.d.ts +7 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
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.
|
|
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.
|
|
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.
|
|
35
|
-
dsh plugin --profile web add dsh-workbuddy-connect@0.7.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
35
|
-
dsh plugin --profile web add dsh-workbuddy-connect@0.7.
|
|
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.
|
|
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.
|
|
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-
|
|
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.
|
|
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.
|
|
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-
|
|
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
|
+
"version": "0.7.6",
|
|
6
6
|
"author": "corrinehu",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"dsh-plugin",
|