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 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.30...HEAD
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-27, the public Registry publishes 79 connector descriptors. After merging and deduplicating them with the 4 bundled Qichacha cards, the Marketplace exposes 83 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.
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.30`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.30](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.30).
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-27,公共 Registry 已发布 79 条连接器描述;与随包的 4 张企查查卡片合并去重后,市场页可浏览 83 张卡片,覆盖企业数据、金融投资、法律合规、开发工具、办公协作、调研分析、设计创意、效率工具、其他 9 类。推荐位严格保留 4 张企查查卡片、北大法宝和 Wind,共 6 张;其他连接器按业务分类展示。Registry 可独立持续更新,实际数量以客户端刷新后的市场页签徽标和上方实时统计徽标为准。
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.30`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.30](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.30)。
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)。
@@ -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 (0, _deepseek_ai_dsh_client_runtime_client.defineStore)({
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
- if (!versionStatus?.updateAvailable && updateOperation === null && updateError === null) return null;
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.30",
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",