@noob-stupid/dsh-plugin-console 0.3.64 → 0.3.65

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.md CHANGED
@@ -4,31 +4,54 @@
4
4
 
5
5
  <img width="1170" height="609" alt="image" src="https://github.com/user-attachments/assets/b802d606-14ba-4151-9956-ff642ed12b0a" />
6
6
 
7
- # DSH Plugin Hub (dsh-plugin-hub)
7
+ # DSH Plugin Gating Hub (dsh-plugin-gating-hub)
8
+
9
+ *Renamed from `dsh-plugin-hub` — old URLs redirect.*
8
10
 
9
11
  [![](https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)](https://github.com/deepseek-ai/deepseek-harness)
10
12
  [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
11
- [![GitHub stars](https://img.shields.io/github/stars/Noob-stupid/dsh-plugin-hub?style=flat-square&logo=github)](https://github.com/Noob-stupid/dsh-plugin-hub/stargazers)
12
- [![License](https://img.shields.io/github/license/Noob-stupid/dsh-plugin-hub?style=flat-square)](LICENSE)
13
- [![Last commit](https://img.shields.io/github/last-commit/Noob-stupid/dsh-plugin-hub?style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-hub/commits/main)
14
- [![Registry CI](https://img.shields.io/github/actions/workflow/status/Noob-stupid/dsh-plugin-hub/registry.yml?label=registry%20CI&style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-hub/actions/workflows/registry.yml)
13
+ [![GitHub stars](https://img.shields.io/github/stars/Noob-stupid/dsh-plugin-gating-hub?style=flat-square&logo=github)](https://github.com/Noob-stupid/dsh-plugin-gating-hub/stargazers)
14
+ [![License](https://img.shields.io/github/license/Noob-stupid/dsh-plugin-gating-hub?style=flat-square)](LICENSE)
15
+ [![Last commit](https://img.shields.io/github/last-commit/Noob-stupid/dsh-plugin-gating-hub?style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-gating-hub/commits/main)
16
+ [![Registry CI](https://img.shields.io/github/actions/workflow/status/Noob-stupid/dsh-plugin-gating-hub/registry.yml?label=registry%20CI&style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-gating-hub/actions/workflows/registry.yml)
15
17
  [![topic: dsh-plugin](https://img.shields.io/badge/topic-dsh_plugin-4D6BFE?style=flat-square)](https://github.com/topics/dsh-plugin)
16
18
  [![npm version](https://img.shields.io/npm/v/@noob-stupid/dsh-plugin-console?style=flat-square)](https://www.npmjs.com/package/@noob-stupid/dsh-plugin-console)
17
19
  [![npm downloads](https://img.shields.io/npm/dm/@noob-stupid/dsh-plugin-console?style=flat-square)](https://www.npmjs.com/package/@noob-stupid/dsh-plugin-console)
18
- [![GitHub Release](https://img.shields.io/github/v/release/Noob-stupid/dsh-plugin-hub?style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-hub/releases)[![dsh.so security](https://www.dsh.so/badge/dsh-plugin-hub.svg)](https://www.dsh.so/artifact/dsh-plugin-hub)
20
+ [![GitHub Release](https://img.shields.io/github/v/release/Noob-stupid/dsh-plugin-gating-hub?style=flat-square)](https://github.com/Noob-stupid/dsh-plugin-gating-hub/releases)[![dsh.so security](https://www.dsh.so/badge/dsh-plugin-hub.svg)](https://www.dsh.so/artifact/dsh-plugin-hub)
19
21
  [![dsh.so install](https://www.dsh.so/badge/install/dsh-plugin-hub.svg)](https://www.dsh.so/artifact/dsh-plugin-hub)
20
22
 
21
- > Manage all your DeepSeek Harness plugins in one panel: one-click enable/disable,
22
- > a 500+ plugin & skill marketplace with one-click install, and one-click framework
23
- > upgrade with auto-rollback.
24
-
25
- ## Why DSH Plugin Hub
26
-
27
- - 🧩 **Plugin & skill hub** — auto-collected index of `dsh-plugin` repos (500+ by
28
- stars) plus a Skills tab; browse, search, one-click install, **zero GitHub API
29
- calls** (served via CDN).
30
- - 🚀 **One-click framework upgrade** — backup → online install (service stays up) →
31
- verify → **auto-rollback on failure**. Tested end-to-end.
23
+ > **Framework upgrade safety & plugin version gating for DeepSeek Harness (DSH)**: one-click
24
+ > framework upgrade with **auto-rollback on failure** → **one-click rollback to the previous
25
+ > version** after an upgrade → plugins the new framework cannot load are **auto-disabled** →
26
+ > the **plugin upgrade gate** refuses a version the host can't take.
27
+ > A **built-in multi-source plugin market & index** (500+ plugins / 300+ skills, zero GitHub
28
+ > API calls) rides on top as the **discovery layer** — and **every source is swappable**: install
29
+ > source (incl. a private intranet registry), search source (URL template + headers), index source
30
+ > (self-hosted intranet index), Git source (incl. a local `file://` bare repo), so plugins can be
31
+ > installed on an **intranet-only or fully offline** machine.
32
+
33
+ ## Why DSH Plugin Gating Hub
34
+
35
+ - 🛡️ **Framework upgrade safety, end-to-end** — one-click upgrade: config backup + full-tree
36
+ checkpoint (rollback point) → online install (service stays up, page never disconnects) →
37
+ version verification → auto-restart. A failed install **auto-rolls the whole tree back**,
38
+ version check catches fake success, 15-min hard timeout + stall detection — the framework is
39
+ never left broken. → [details](docs/upgrade-safety-adapt-gate.md)
40
+ - ↩️ **One-click rollback to the previous version** — after an upgrade the framework card keeps
41
+ a 「roll back to previous」 button: stop service → restore full tree → relaunch → health check,
42
+ state visible throughout.
43
+ - 🚫 **Incompatible plugins auto-disabled** — the **adapt gate** force-disables plugins the new
44
+ framework cannot load (enable locked; the server rejects `/toggle` with 409 — unbypassable);
45
+ 「Check update → Update & adapt」auto-verifies and unlocks them.
46
+ - 🔒 **Plugin upgrade gating** — a version/declaration gate (`dsh.engines.framework` /
47
+ `engines.dsh` + `@deepseek-ai/*` ranges, built-in zero-dependency semver engine) decides
48
+ whether a plugin version may run on this host, so an upgrade can't silently take plugins out.
49
+ - 🧩 **Built-in discovery layer** — multi-source plugin market (GitHub / Gitee / custom sources)
50
+ plus the static index of `dsh-plugin` repos (500+ by stars) and a Skills tab (up to 300);
51
+ browse, search, one-click install, **zero GitHub API calls** (served via CDN).
52
+ **Every source is swappable** — private intranet npm registry, custom search source (URL template +
53
+ headers), self-hosted index source, Git source (incl. local `file://` bare repo) — so an
54
+ **intranet-only / offline** machine can still browse and install.
32
55
  - 🤖 **AI Empower** — give the console a package name or GitHub repo, the local AI
33
56
  reads its docs and drafts a safe, confirmable deployment plan (install / config /
34
57
  start / health-check); server components get an automatic control card.
@@ -313,4 +336,4 @@ The layered-refactor preview lives in its **own repository**: [**`Noob-stupid/ds
313
336
  - **What it is**: the monolithic `lib/index.js` (8547 lines) split into layers — `lib/index.js` **141 lines** + `lib/server/**` **38 modules**; **feature-equivalent to `0.3.57`**, maintainability only;
314
337
  - **Verified**: 19 test suites green · 8 architecture-guard assertions · **route inventory identical** (`status` + response fields) against the stable build;
315
338
  - **Not yet exercised**: real framework upgrade / rollback, restart guardian, component start/stop, real AI run, Gitee OAuth (~10–25% long-tail risk, subjective);
316
- - **For everyday use** stick to npm `@noob-stupid/dsh-plugin-console@0.3.64`, or `main` of this repo.
339
+ - **For everyday use** stick to npm `@noob-stupid/dsh-plugin-console@0.3.65`, or `main` of this repo.
package/README.zh.md CHANGED
@@ -4,16 +4,34 @@
4
4
 
5
5
  <img width="1170" height="609" alt="image" src="https://github.com/user-attachments/assets/b802d606-14ba-4151-9956-ff642ed12b0a" />
6
6
 
7
- # DSH 插件中心(dsh-plugin-hub)
8
-
9
- > 一站式管理你的 DeepSeek Harness 插件:一键启用/停用、500+ 插件与技能市场一键安装、
10
- > 框架一键升级(失败自动回滚)。
11
-
12
- ## 为什么是 DSH 插件中心
13
-
14
- - 🧩 **插件 + 技能双市场** — 自动收录 `dsh-plugin` 仓库(按 star **500+**)外加技能 tab;
15
- 浏览、搜索、一键安装,**零 GitHub API 调用**(CDN 分发,秒开零限流)。
16
- - 🚀 **框架一键升级** — 备份 → 在线安装(服务不中断)→ 校验 → **失败自动回滚**,端到端实测。
7
+ # DSH 插件门控中心(dsh-plugin-gating-hub)
8
+
9
+ *原名 `dsh-plugin-hub`,已改名;旧链接 301 跳转有效。*
10
+
11
+ > **DSH 框架升级安全与插件升级门控**:一键框架升级(**失败自动回滚**)→ 升级后**一键回滚到
12
+ > 上一版** → 新框架带不动的插件**自动禁用** → **插件升级门控**按版本/声明拒绝装不上的插件版本。
13
+ > **内置多源插件市场与自定义索引**(500+ 插件 / 300+ 技能,零 GitHub API 调用)作为**发现层**——
14
+ > 而且**每一条源都能换成你自己的**:安装源(含内网私有 registry)、搜索源(URL 模板 + 请求头)、
15
+ > 索引源(内网自建索引)、Git 源(含 `file://` 本地裸仓库),**纯内网 / 断网也能装插件**。
16
+
17
+ ## 为什么是 DSH 插件门控中心
18
+
19
+ - 🛡️ **一键框架升级,失败自动回滚** — 备份配置 + 升级前全树 checkpoint(回滚点)→ 在线安装
20
+ (服务不中断、页面不断开)→ 版本校验 → 自动重启生效;安装失败**自动全树回滚**,
21
+ 版本校验防假成功,15 分钟硬超时 + 卡死检测——框架绝不处于损坏状态。
22
+ → [详见](docs/upgrade-safety-adapt-gate.zh.md)
23
+ - ↩️ **升级后一键回滚到上一版** — 升级成功后框架卡片保留「回滚到上一版」:停服 → 全树恢复 →
24
+ 自动拉起 → 健康检测,全程状态可见。
25
+ - 🚫 **旧插件不适配自动禁用** — 适配门把新框架加载不了的插件**强制禁用**(启用按钮锁定,
26
+ 服务端 `/toggle` 直接 409、无法绕过);「检测更新 → 更新并适配」自动校验后解锁。
27
+ - 🔒 **插件升级门控** — 按 `dsh.engines.framework` / `engines.dsh` 声明与 `@deepseek-ai/*`
28
+ 依赖范围(内置零依赖 semver 判定器)判定插件版本能否在本宿主运行,
29
+ 避免框架升级把插件悄悄带下线。
30
+ - 🧩 **内置发现层:多源插件市场** — GitHub / Gitee / 自定义源,外加静态索引(按 star 收录
31
+ `dsh-plugin` 仓库 **500+**)与技能 tab(最多 300);浏览、搜索、一键安装,
32
+ **零 GitHub API 调用**(CDN 分发,秒开零限流)。
33
+ **每条源都能换成你自己的** —— 内网私有 npm registry、自定义搜索源(URL 模板 + 请求头)、
34
+ 内网自建索引源、Git 源(含 `file://` 本地裸仓库),**纯内网 / 断网环境照样浏览与安装**。
17
35
  - 🤖 **AI 赋能** — 输入 npm 包名或 GitHub 仓库,本地 AI 读文档生成**部署计划**
18
36
  (安装/写配置/启动服务/健康检查),你确认后安全执行;服务器组件自动生成控制卡片。
19
37
  → [详见](docs/ai-empower.zh.md)
@@ -282,5 +300,5 @@ MIT
282
300
  - **已验证**:19 套测试全绿 · 8 条架构守卫断言 · 与稳定版逐条对打**路由清单一致**(`status` + 响应字段);
283
301
  - **已实测**(2026-09-20 真装真卸演练):普通插件 / bundle 插件 / 无 npm 仓库 / 套装 / 技能 / 聚合仓库子包 / 仓库落地 / 服务器组件启停;
284
302
  - **尚未实测**:真框架升级 / 真回滚、重启守护链路、AI 真跑、Gitee OAuth 回调(长尾风险主观估计 **10%~25%**);
285
- - **日常使用请继续用**:npm `@noob-stupid/dsh-plugin-console@0.3.64`,或本仓库 `main`。
303
+ - **日常使用请继续用**:npm `@noob-stupid/dsh-plugin-console@0.3.65`,或本仓库 `main`。
286
304
  - 请多反馈问题
package/lib/index.js CHANGED
@@ -942,11 +942,11 @@ export const DEFAULT_SOURCES = {
942
942
  // (另一位用户实测报「市场索引加载失败:网络不可达(2 个索引源全部失败):GitHub 请求超时」)。
943
943
  // jsDelivr 官方多入口互为主备:cdn(主)/ gcore / fastly;再加 ghproxy 与 raw 直连兜底。
944
944
  indexSources: [
945
- { id: 'jsdelivr', name: 'jsDelivr CDN', url: 'https://cdn.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: true },
946
- { id: 'jsdelivr-gcore', name: 'jsDelivr (gcore)', url: 'https://gcore.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: false },
947
- { id: 'jsdelivr-fastly', name: 'jsDelivr (fastly)', url: 'https://fastly.jsdelivr.net/gh/Noob-stupid/dsh-plugin-hub@main/marketplace/index.json', primary: false },
948
- { id: 'ghproxy', name: 'ghproxy 镜像', url: 'https://ghproxy.net/https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-hub/main/marketplace/index.json', primary: false },
949
- { id: 'raw', name: 'GitHub raw 直连', url: 'https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-hub/main/marketplace/index.json', primary: false },
945
+ { id: 'jsdelivr', name: 'jsDelivr CDN', url: 'https://cdn.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: true },
946
+ { id: 'jsdelivr-gcore', name: 'jsDelivr (gcore)', url: 'https://gcore.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: false },
947
+ { id: 'jsdelivr-fastly', name: 'jsDelivr (fastly)', url: 'https://fastly.jsdelivr.net/gh/Noob-stupid/dsh-plugin-gating-hub@main/marketplace/index.json', primary: false },
948
+ { id: 'ghproxy', name: 'ghproxy 镜像', url: 'https://ghproxy.net/https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-gating-hub/main/marketplace/index.json', primary: false },
949
+ { id: 'raw', name: 'GitHub raw 直连', url: 'https://raw.githubusercontent.com/Noob-stupid/dsh-plugin-gating-hub/main/marketplace/index.json', primary: false },
950
950
  ],
951
951
  // Git 克隆源({owner}/{repo} 占位符;按主→备依次尝试)。
952
952
  // 可替换为 Gitee / GitLab / 自建 Gitea / 任意镜像代理,实现「换一个网站下载仓库内容」。
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@noob-stupid/dsh-plugin-console",
3
- "version": "0.3.64",
4
- "description": "DeepSeek Harness (DSH) 插件管理面板:一键启用/停用插件 + 多源插件市场/自定义索引 + 插件详情与一键安装 + 一键框架升级失败自动回滚 + 插件升级门控 | DSH plugin manager & marketplace: one-click framework upgrade with auto-rollback, version gating, suites & skills.",
3
+ "version": "0.3.65",
4
+ "description": "DSH 框架升级安全与插件升级门控:一键升级、失败自动回滚、升级后回滚上版、旧插件不适配自动禁用;内置多源插件市场为发现层,插件源全部可自定义,可指向公司内网私有源 / 私有索引 / 本地 Git 仓库,纯内网离线可用 | Framework upgrade safety & plugin version gating for DSH, with a customizable multi-source plugin market: point every source at internal mirrors or a local file:// repo for intranet-only, offline installs.",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/Noob-stupid/dsh-plugin-gating-hub"
@@ -25,9 +25,12 @@
25
25
  "framework-upgrade",
26
26
  "rollback",
27
27
  "auto-rollback",
28
+ "upgrade-safety",
29
+ "gating",
28
30
  "插件市场",
29
31
  "框架升级",
30
- "自动回滚"
32
+ "自动回滚",
33
+ "插件升级门控"
31
34
  ],
32
35
  "dsh": {
33
36
  "bundle": {