dsh-mcp-connector 0.2.30 → 0.2.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/docs/PLUGIN-UPDATE.md +2 -0
- package/lib/client.js +60 -3
- package/package.json +1 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.32] - 2026-08-31
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 更新包已经写入 DSH profile、但当前 Host 仍运行旧插件进程时,标题区现在显示“已安装,重启后生效”,并按可信 Update Provider 的能力提供重启操作或宿主重启提示;不再重复展示同一版本的 CLI 安装命令。
|
|
12
|
+
|
|
13
|
+
### Verification
|
|
14
|
+
|
|
15
|
+
- 156 项自动测试、Node 20/22/24 与 Windows Node 24 CI、npm 发布包白名单/敏感内容扫描全部通过。
|
|
16
|
+
|
|
17
|
+
## [0.2.31] - 2026-08-31
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- 客户端 Store 优先使用 DSH `v0.1.2-alpha.1` 的静态 `@deepseek-ai/dsh-client-store` 基座,并保留 `v0.1.1` 的 `@deepseek-ai/dsh-client-runtime/client` 回退;不再把已移除的 Runtime 包错误声明为动态 external,避免 Desktop 主界面装载失败。
|
|
22
|
+
|
|
23
|
+
### Verification
|
|
24
|
+
|
|
25
|
+
- 154 项自动测试、Node 20/22/24 与 Windows Node 24 CI、npm 发布包白名单/敏感内容扫描全部通过。
|
|
26
|
+
- CI 原包在官方 DSH `v0.1.2-alpha.1` 精确源码构建中完成主界面加载验收;Issue #26 报告者随后在 Windows Desktop Alpha.1 实机确认可正常运行。
|
|
27
|
+
|
|
7
28
|
## [0.2.30] - 2026-08-30
|
|
8
29
|
|
|
9
30
|
### Added
|
|
@@ -473,7 +494,8 @@
|
|
|
473
494
|
- 外部 URL 与导入 Header 执行安全校验。
|
|
474
495
|
- iframe 消息校验同源和消息来源。
|
|
475
496
|
|
|
476
|
-
[Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.
|
|
497
|
+
[Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.31...HEAD
|
|
498
|
+
[0.2.31]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.30...v0.2.31
|
|
477
499
|
[0.2.30]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.29...v0.2.30
|
|
478
500
|
[0.2.29]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.28...v0.2.29
|
|
479
501
|
[0.2.28]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.27...v0.2.28
|
package/README.en.md
CHANGED
|
@@ -61,7 +61,7 @@ If the plugin helps you connect an MCP server faster, consider [starring the rep
|
|
|
61
61
|
- Explicit, non-destructive migration from the two earlier Qichacha OAuth plugins, plus active-plugin conflict detection that blocks duplicate server management and credential overwrites.
|
|
62
62
|
|
|
63
63
|
<!-- catalog-stats:start -->
|
|
64
|
-
As of 2026-08-
|
|
64
|
+
As of 2026-08-30, the public Registry publishes 82 connector descriptors. After merging and deduplicating them with the 4 bundled Qichacha cards, the Marketplace exposes 86 cards across 9 business categories. Recommendations remain limited to the four Qichacha cards, PKULaw, and Wind, for 6 featured cards in total. The Registry evolves independently; the badge shown after a client refresh and the live badges above are the authoritative current counts.
|
|
65
65
|
<!-- catalog-stats:end -->
|
|
66
66
|
|
|
67
67
|
## Interface and demo
|
|
@@ -150,7 +150,7 @@ npm run dev:ui
|
|
|
150
150
|
|
|
151
151
|
Every Registry merge regenerates `catalog-stats.json`; an hourly workflow in this repository synchronizes the Chinese and English product copy plus a local stats snapshot. The static npm README updates with package releases, while the live badges above read the Registry directly and therefore stay current without another npm release.
|
|
152
152
|
|
|
153
|
-
The current public version is [`dsh-mcp-connector@0.2.
|
|
153
|
+
The current public version is [`dsh-mcp-connector@0.2.32`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.32](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.32).
|
|
154
154
|
|
|
155
155
|
See [CHANGELOG.md](CHANGELOG.md) for version history and [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md) for the Desktop release checklist.
|
|
156
156
|
|
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ dsh plugin --profile web add dsh-mcp-connector
|
|
|
63
63
|
- 对话工具:`mcp_connector_catalog`、`connect`、`configure`、`import_json`、`install_from_url`、`status`、`health_check`、`set_enabled`、`disconnect`、`refresh_catalog`、`publish`、`tools_list`。
|
|
64
64
|
|
|
65
65
|
<!-- catalog-stats:start -->
|
|
66
|
-
截至 2026-08-
|
|
66
|
+
截至 2026-08-30,公共 Registry 已发布 82 条连接器描述;与随包的 4 张企查查卡片合并去重后,市场页可浏览 86 张卡片,覆盖企业数据、金融投资、法律合规、开发工具、办公协作、调研分析、设计创意、效率工具、其他 9 类。推荐位严格保留 4 张企查查卡片、北大法宝和 Wind,共 6 张;其他连接器按业务分类展示。Registry 可独立持续更新,实际数量以客户端刷新后的市场页签徽标和上方实时统计徽标为准。
|
|
67
67
|
<!-- catalog-stats:end -->
|
|
68
68
|
|
|
69
69
|
## 界面与演示
|
|
@@ -145,7 +145,7 @@ npm run dev:ui
|
|
|
145
145
|
|
|
146
146
|
公共 Registry 每次合并后会生成 `catalog-stats.json`;本仓库的定时工作流每小时同步中英文介绍和统计快照。npm 页面中的静态正文随版本发布更新,上方动态统计徽标则直接读取 Registry,可在不发布新 npm 版本时保持实时数量一致。
|
|
147
147
|
|
|
148
|
-
当前公开版本为 [`dsh-mcp-connector@0.2.
|
|
148
|
+
当前公开版本为 [`dsh-mcp-connector@0.2.32`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.32](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.32)。
|
|
149
149
|
|
|
150
150
|
版本能力与变更记录见 [CHANGELOG.md](CHANGELOG.md)。
|
|
151
151
|
Desktop 发版回归见 [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md)。
|
package/docs/PLUGIN-UPDATE.md
CHANGED
|
@@ -25,6 +25,8 @@ DSH Market 适配器从 `GET /dsh-market/api/v1/capabilities` 开始,要求 `s
|
|
|
25
25
|
5. 完整性校验通过后,按 Provider 返回的激活结论展示“刷新生效”或重启提示。Web 且 Provider 明确允许进程重启时才展示“立即重启”;Desktop 等由外壳管理生命周期的宿主只提示用户重启,不自行杀进程。
|
|
26
26
|
6. Provider 保留恢复点时展示“回滚”。回滚仍由 Provider 执行,MCP连接器不直接修改 profile、lockfile 或 `node_modules`。
|
|
27
27
|
|
|
28
|
+
Provider 读取的是 profile 中已经落盘的插件版本,标题版本来自当前运行中的插件进程。若 Provider 报告磁盘版本高于运行版本且已无后续更新,页面会显示“已安装,重启后生效”,并按 Provider 能力展示“立即重启”或宿主重启提示;此时不再重复给出同一版本的安装命令。
|
|
29
|
+
|
|
28
30
|
失败结果使用稳定代码区分正在运行的 Agent、其他安装任务占用、发布安全等待、镜像同步、版本未变化、超时和权限拒绝,以及 `DOWNGRADE_DETECTED`、`RESOLVED_VERSION_MISMATCH`、`INVALID_UPDATE_RESULT` 三类完整性故障。`RELEASE_TOO_FRESH` 明确显示为约 24 小时的发布安全等待期,并提供“立即更新(跳过等待)”;真正的镜像同步故障保留独立提示,不再混用同一文案。
|
|
29
31
|
|
|
30
32
|
当 DSH Desktop 或其他宿主没有兼容 Update Provider 时,标题区直接展示绑定 npm 精确版本的 CLI 命令,例如 `dsh plugin --profile web add --config.minimumReleaseAge=0 dsh-mcp-connector@<目标版本>`,并提供复制按钮与 npm 页面入口。运行时会把 `<目标版本>` 替换为 npm 已发布的确切版本;命令中的单次覆盖只用于用户主动跳过本次发布安全等待。Connector 仍不自行执行包管理器命令。
|
package/lib/client.js
CHANGED
|
@@ -7,8 +7,20 @@ window.__ModuleLoader__.load({
|
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
let react = require("react");
|
|
9
9
|
let react_dom = require("react-dom");
|
|
10
|
-
let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
|
|
11
10
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
11
|
+
let defineStore;
|
|
12
|
+
try {
|
|
13
|
+
({ defineStore } = require("@deepseek-ai/dsh-client-store"));
|
|
14
|
+
} catch (storeError) {
|
|
15
|
+
try {
|
|
16
|
+
({ defineStore } = require("@deepseek-ai/dsh-client-runtime/client"));
|
|
17
|
+
} catch (runtimeError) {
|
|
18
|
+
throw new AggregateError(
|
|
19
|
+
[storeError, runtimeError],
|
|
20
|
+
"mcp-connector: DSH client store is unavailable"
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
12
24
|
|
|
13
25
|
/** 客户端所需服务:槽位、工作区、会话及对话输入机。 */
|
|
14
26
|
const inject = [
|
|
@@ -448,6 +460,20 @@ window.__ModuleLoader__.load({
|
|
|
448
460
|
return 0;
|
|
449
461
|
}
|
|
450
462
|
|
|
463
|
+
/**
|
|
464
|
+
* Provider 读取 profile 磁盘版本,versionStatus 来自当前运行中的插件进程。
|
|
465
|
+
* 当磁盘版本更高且 Provider 已无后续更新时,说明安装已经完成、只差重启激活。
|
|
466
|
+
*/
|
|
467
|
+
function pendingActivationVersion(versionStatus, providerUpdateCheck) {
|
|
468
|
+
if (providerUpdateCheck?.updateAvailable !== false) return null;
|
|
469
|
+
const running = parseClientVersion(versionStatus?.installedVersion);
|
|
470
|
+
const installed = parseClientVersion(providerUpdateCheck?.installedVersion);
|
|
471
|
+
if (running === null || installed === null) return null;
|
|
472
|
+
return compareClientVersions(installed.normalized, running.normalized) > 0
|
|
473
|
+
? installed.normalized
|
|
474
|
+
: null;
|
|
475
|
+
}
|
|
476
|
+
|
|
451
477
|
/** Independently verify a provider's terminal success before asking the user to restart. */
|
|
452
478
|
function completedUpdateIntegrityFailure(operation, expectedVersion) {
|
|
453
479
|
if (operation?.state !== "succeeded") return null;
|
|
@@ -516,7 +542,7 @@ window.__ModuleLoader__.load({
|
|
|
516
542
|
|
|
517
543
|
/** 创建弹框 store(使用 DSH defineStore,与社区插件市场一致)。 */
|
|
518
544
|
function createMarketViewStore() {
|
|
519
|
-
return
|
|
545
|
+
return defineStore({
|
|
520
546
|
init: () => ({ open: false, detailOpen: false }),
|
|
521
547
|
actions: {
|
|
522
548
|
open: (draft) => { draft.open = true; },
|
|
@@ -797,7 +823,11 @@ window.__ModuleLoader__.load({
|
|
|
797
823
|
});
|
|
798
824
|
};
|
|
799
825
|
const renderUpdateControls = () => {
|
|
800
|
-
|
|
826
|
+
const activationPendingVersion = updateProviderState === "ready"
|
|
827
|
+
? pendingActivationVersion(versionStatus, providerUpdateCheck)
|
|
828
|
+
: null;
|
|
829
|
+
if (!versionStatus?.updateAvailable && activationPendingVersion === null
|
|
830
|
+
&& updateOperation === null && updateError === null) return null;
|
|
801
831
|
if (updateRunning) {
|
|
802
832
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
803
833
|
className: "mcpConnectorUpdateControls",
|
|
@@ -931,6 +961,33 @@ window.__ModuleLoader__.load({
|
|
|
931
961
|
children: `一键更新到 v${providerUpdateCheck.latestVersion}`
|
|
932
962
|
});
|
|
933
963
|
}
|
|
964
|
+
if (activationPendingVersion !== null) {
|
|
965
|
+
const canRestart = updateProviderSelection?.capabilities?.restart?.supported === true;
|
|
966
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
967
|
+
className: "mcpConnectorUpdateControls",
|
|
968
|
+
children: [
|
|
969
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
970
|
+
className: "mcpConnectorUpdateStatus",
|
|
971
|
+
children: `v${activationPendingVersion} 已安装,重启后生效`
|
|
972
|
+
}),
|
|
973
|
+
canRestart
|
|
974
|
+
? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
975
|
+
type: "button",
|
|
976
|
+
className: "mcpConnectorUpdateButton",
|
|
977
|
+
disabled: restarting,
|
|
978
|
+
onClick: restartHost,
|
|
979
|
+
children: restarting ? "正在重启…" : "立即重启"
|
|
980
|
+
})
|
|
981
|
+
: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
982
|
+
className: "mcpConnectorUpdateStatus",
|
|
983
|
+
title: `重启由 ${updateProviderSelection?.capabilities?.restart?.managedBy ?? "宿主"} 管理`,
|
|
984
|
+
children: updateProviderSelection?.capabilities?.runtime === "desktop"
|
|
985
|
+
? "请重启 DSH Desktop"
|
|
986
|
+
: "请重启 DSH"
|
|
987
|
+
})
|
|
988
|
+
]
|
|
989
|
+
});
|
|
990
|
+
}
|
|
934
991
|
const command = manualUpgradeCommand(versionStatus?.latestVersion);
|
|
935
992
|
if (command !== null) {
|
|
936
993
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mcp-connector",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.32",
|
|
4
4
|
"description": "Connect and manage MCP servers in DeepSeek Harness — a universal MCP connector and marketplace with OAuth 2.0 PKCE, API keys, stdio/HTTP, mcpServers JSON import, tools, and prompts. Maintained by Qichacha/QCC.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -124,7 +124,6 @@
|
|
|
124
124
|
},
|
|
125
125
|
"client": {
|
|
126
126
|
"inject": [
|
|
127
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
128
127
|
"@deepseek-ai/dsh-client-ui-layout",
|
|
129
128
|
"@deepseek-ai/dsh-client-ui-conversation"
|
|
130
129
|
],
|
|
@@ -132,7 +131,6 @@
|
|
|
132
131
|
}
|
|
133
132
|
},
|
|
134
133
|
"peerDependencies": {
|
|
135
|
-
"@deepseek-ai/dsh-client-runtime": "*",
|
|
136
134
|
"@deepseek-ai/dsh-client-ui-conversation": "*",
|
|
137
135
|
"@deepseek-ai/dsh-client-ui-layout": "*",
|
|
138
136
|
"@deepseek-ai/dsh-mcp-client": "^0.1.1-rc.2",
|