@nanmicoder/dsh-skills-hub 0.0.3 → 0.0.4

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/CONTRIBUTING.md CHANGED
@@ -15,15 +15,15 @@ Commit regenerated `lib/` with source changes because Git installations consume
15
15
  For CLI users and local development, install a specific published version:
16
16
 
17
17
  ```sh
18
- dsh plugin --profile desktop add @nanmicoder/dsh-skills-hub@0.0.3
18
+ dsh plugin --profile desktop add @nanmicoder/dsh-skills-hub@0.0.4
19
19
  ```
20
20
 
21
- Replace `desktop` with the target profile. To test a local source build:
21
+ The `desktop` command requires the CLI bundled with the desktop installation. With the npm-installed CLI, replace `desktop` with a supported profile such as `web`. To test a local source build:
22
22
 
23
23
  ```sh
24
24
  pnpm install --frozen-lockfile
25
25
  pnpm pack --pack-destination artifacts
26
- dsh plugin --profile desktop add ./artifacts/nanmicoder-dsh-skills-hub-0.0.3.tgz
26
+ dsh plugin --profile desktop add ./artifacts/nanmicoder-dsh-skills-hub-0.0.4.tgz
27
27
  ```
28
28
 
29
29
  Fully quit and reopen the target Harness instance after a CLI install. Advanced configuration is documented in [CONFIGURATION.md](./docs/CONFIGURATION.md).
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  搜索 ClawHub 和 SkillHub 中的技能,阅读使用说明,再安装到 Harness。市场安装的技能和本机已有技能,都可以在「已安装技能」中查看和管理。
21
21
 
22
- 当前版本:**0.0.3**。首页改为 398 个精选技能、13 个分类,详情页重新设计,并能说明技能安装后会做什么。[更新说明](./release-notes/v0.0.3.md)
22
+ 当前版本:**0.0.4**,适配 **DeepSeek Harness 0.2.1-rc.1**,更新宿主依赖与请求鉴权接口,保留精选清单、预览和技能管理功能。[更新说明](./release-notes/v0.0.4.md)
23
23
 
24
24
  <p align="center">
25
25
  <img src="./assets/readme/marketplace.png" width="100%" alt="Skills Hub 技能市场:分类、搜索、筛选和精选技能卡片。">
@@ -28,34 +28,36 @@
28
28
  | 功能 | 说明 |
29
29
  | --- | --- |
30
30
  | **精选清单** | 398 个 ClawHub 与 SkillHub 热门技能,按 13 个分类整理,随插件发布,打开即看。 |
31
- | **实时搜索** | 输入关键词即搜索两个市场的全部技能,同名技能按作者区分。 |
31
+ | **实时搜索** | 先搜索精选清单,再点击「在全部市场中搜索」查询两个市场;ClawHub 详情与安装按作者定位。 |
32
32
  | **安装前预览** | 阅读说明和文件,查看上游安全扫描,以及技能会执行的命令、读取的密钥和访问的网络。 |
33
33
  | **管理已安装技能** | 搜索本机技能,查看来源与安装位置,确认后卸载。 |
34
34
  | **本地缓存** | 缓存已浏览的分页、详情和文件预览,重启后继续使用。 |
35
35
 
36
36
  ## 快速开始
37
37
 
38
- 适用于 **DeepSeek Harness 0.2.0-rc.2**。[兼容版本](./docs/COMPATIBILITY.md)
38
+ 适用于 **DeepSeek Harness 0.2.1-rc.1**。[兼容版本](./docs/COMPATIBILITY.md)
39
39
 
40
40
  打开 **DeepSeek Harness 桌面端 → 插件 → 添加插件**,粘贴以下任意一种内容:
41
41
 
42
- **GitHub 仓库地址(推荐)**
42
+ **npm 包名(推荐,固定版本)**
43
43
 
44
44
  ```text
45
- https://github.com/NanmiCoder/dsh-skills-hub
45
+ @nanmicoder/dsh-skills-hub@0.0.4
46
46
  ```
47
47
 
48
- **或 npm 包名**
48
+ **或 GitHub 仓库地址**
49
49
 
50
50
  ```text
51
- @nanmicoder/dsh-skills-hub@0.0.3
51
+ https://github.com/NanmiCoder/dsh-skills-hub
52
52
  ```
53
53
 
54
- 点击 **安装 → 立即启用**,然后从侧栏进入 **技能市场**。
54
+ 点击 **安装 → 立即启用**,然后从侧栏进入 **技能市场**。更新后若宿主提示重启,请完全退出再重新打开。
55
+
56
+ 仍使用 **Harness 0.2.0-rc.2** 时,请安装 `@nanmicoder/dsh-skills-hub@0.0.3`;0.0.4 仅声明支持 0.2.1-rc.1,不包含尚未验证的后续宿主版本。
55
57
 
56
58
  ## 使用
57
59
 
58
- 1. **查找**:按分类浏览精选清单,或输入关键词搜索全部技能。
60
+ 1. **查找**:按分类浏览或搜索精选清单,需要更多结果时点击「在全部市场中搜索」。
59
61
  2. **预览**:打开技能,查看说明和文件内容。
60
62
  3. **安装与管理**:确认安装后,到「已安装技能」中查看或卸载。
61
63
 
@@ -67,4 +69,13 @@ https://github.com/NanmiCoder/dsh-skills-hub
67
69
 
68
70
  卸载前会显示具体位置,供你确认。若只想移除 Skills Hub 插件,在桌面端 **插件** 页面打开 **@nanmicoder/dsh-skills-hub**,点击 **卸载**;已安装的技能会保留。
69
71
 
72
+ ## 致谢与版权
73
+
74
+ Skills Hub 的技能全部来自 [ClawHub](https://clawhub.ai) 和 [SkillHub](https://skillhub.cn)。感谢这两个平台的维护者,以及在上面发布技能的每一位作者。本插件只是让你在 Harness 里更方便地找到并安装这些技能。
75
+
76
+ - **技能版权归原作者所有**,以每个技能自己声明的许可证为准。本仓库的 MIT 许可证只适用于 Skills Hub 插件自身的代码,不适用于任何技能。
77
+ - **安装时从上游实时下载**。本仓库不托管、不转售任何技能内容。随插件发布的精选清单只包含名称、简介、分类和下载数等索引信息,用于展示,并附带指向原始页面的链接。
78
+ - **ClawHub、SkillHub 及其标识归各自所有者所有**。Skills Hub 是独立的社区项目,与 ClawHub、SkillHub 及 DeepSeek 均无隶属或背书关系。
79
+ - 如果你是技能作者或平台方,希望调整或移除展示的信息,请[提交 issue](https://github.com/NanmiCoder/dsh-skills-hub/issues),我们会尽快处理。
80
+
70
81
  [反馈问题](https://github.com/NanmiCoder/dsh-skills-hub/issues) · [高级配置](./docs/CONFIGURATION.md) · [参与开发](./CONTRIBUTING.md) · [MIT 许可证](./LICENSE)
package/README_EN.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  Search ClawHub and SkillHub, read a skill’s instructions, and install it into Harness. Manage marketplace installations and existing local skills together in **Installed**.
21
21
 
22
- Current version: **0.0.3**. The home page now opens on 398 curated skills in 13 categories, with a redesigned detail page that explains what a skill will do once installed. [Release notes](./release-notes/v0.0.3.md)
22
+ Current version: **0.0.4**, targeting **DeepSeek Harness 0.2.1-rc.1**. This release updates host dependencies and request authentication types while retaining the curated catalogue, previews and skill management. [Release notes](./release-notes/v0.0.4.md)
23
23
 
24
24
  <p align="center">
25
25
  <img src="./assets/readme/marketplace.png" width="100%" alt="Skills Hub marketplace with categories, search, filters and curated skill cards.">
@@ -28,34 +28,36 @@ Current version: **0.0.3**. The home page now opens on 398 curated skills in 13
28
28
  | Feature | What it does |
29
29
  | --- | --- |
30
30
  | **Curated catalogue** | 398 popular ClawHub and SkillHub skills in 13 categories, shipped with the plugin and shown instantly. |
31
- | **Live search** | Type a keyword to search every skill on both marketplaces; same-name skills are told apart by author. |
31
+ | **Live search** | Search the curated catalogue first, then choose the all-market search action; ClawHub details and installations are pinned to the author. |
32
32
  | **Preview before installing** | Read instructions and files, check upstream scans, and see the commands, secrets and network hosts a skill uses. |
33
33
  | **Manage installed skills** | Search local skills, inspect their source and installation path, and confirm removal. |
34
34
  | **Local cache** | Reuse browsed pages, details and file previews across desktop restarts. |
35
35
 
36
36
  ## Quick start
37
37
 
38
- Supports **DeepSeek Harness 0.2.0-rc.2**. [Compatible versions](./docs/COMPATIBILITY.md)
38
+ Supports **DeepSeek Harness 0.2.1-rc.1**. [Compatible versions](./docs/COMPATIBILITY.md)
39
39
 
40
40
  Open **DeepSeek Harness desktop → Plugins → Add plugin** and paste either of the following:
41
41
 
42
- **GitHub repository URL (recommended)**
42
+ **npm package name (recommended, pinned version)**
43
43
 
44
44
  ```text
45
- https://github.com/NanmiCoder/dsh-skills-hub
45
+ @nanmicoder/dsh-skills-hub@0.0.4
46
46
  ```
47
47
 
48
- **Or the npm package name**
48
+ **Or the GitHub repository URL**
49
49
 
50
50
  ```text
51
- @nanmicoder/dsh-skills-hub@0.0.3
51
+ https://github.com/NanmiCoder/dsh-skills-hub
52
52
  ```
53
53
 
54
- Click **Install → Enable now**, then open **Skills Hub** from the sidebar.
54
+ Click **Install → Enable now**, then open **Skills Hub** from the sidebar. If the host requests a restart after updating, fully quit and reopen it.
55
+
56
+ For **Harness 0.2.0-rc.2**, use `@nanmicoder/dsh-skills-hub@0.0.3`. Version 0.0.4 declares support only for 0.2.1-rc.1; later untested host versions are not included.
55
57
 
56
58
  ## Use
57
59
 
58
- 1. **Find**: browse the curated catalogue by category, or enter a keyword to search every skill.
60
+ 1. **Find**: browse or search the curated catalogue, then choose the all-market search action for more results.
59
61
  2. **Preview**: open a skill to read its instructions and inspect its files.
60
62
  3. **Install and manage**: confirm installation, then find or remove it in **Installed**.
61
63
 
@@ -67,4 +69,13 @@ Use **Installed** to view and remove marketplace installations and existing loca
67
69
 
68
70
  The removal dialog shows the exact location for you to confirm. To remove Skills Hub itself, open **@nanmicoder/dsh-skills-hub** on the desktop **Plugins** page and click **Uninstall**. Your installed skills will remain.
69
71
 
72
+ ## Acknowledgements and copyright
73
+
74
+ Every skill in Skills Hub comes from [ClawHub](https://clawhub.ai) or [SkillHub](https://skillhub.cn). Thanks to the people who run both platforms and to every author who publishes there. This plugin only makes their skills easier to find and install from Harness.
75
+
76
+ - **Skills belong to their authors** and are governed by each skill's own license. This repository's MIT license covers the Skills Hub plugin code only, not any skill.
77
+ - **Skills are downloaded from upstream at install time.** This repository does not host or resell skill content. The curated list shipped with the plugin contains only index information (name, summary, category, download counts) for display, with links back to the original pages.
78
+ - **ClawHub, SkillHub and their marks belong to their respective owners.** Skills Hub is an independent community project, not affiliated with or endorsed by ClawHub, SkillHub or DeepSeek.
79
+ - Authors or platform operators who want displayed information changed or removed can [open an issue](https://github.com/NanmiCoder/dsh-skills-hub/issues), and we'll handle it promptly.
80
+
70
81
  [Report an issue](https://github.com/NanmiCoder/dsh-skills-hub/issues) · [Advanced configuration](./docs/CONFIGURATION.md) · [Contribute](./CONTRIBUTING.md) · [MIT license](./LICENSE)
package/README_ZH.md CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  中文文档已成为仓库默认首页,请查看 [README.md](./README.md)。
4
4
 
5
- 当前版本:**0.0.3**。[更新说明](./release-notes/v0.0.3.md)
5
+ 当前版本:**0.0.4**。[更新说明](./release-notes/v0.0.4.md)
6
6
 
7
7
  [English documentation](./README_EN.md)
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "pluginVersion": "0.0.3",
4
- "recommendedHost": "0.2.0-rc.2",
5
- "hostTag": "dsh-v0.2.0-rc.2",
6
- "hostCommit": "639ed015397290b3745d163aafe02ffee4aa3f84",
7
- "desktopReleaseLine": "0.2.0",
3
+ "pluginVersion": "0.0.4",
4
+ "recommendedHost": "0.2.1-rc.1",
5
+ "hostTag": "dsh-v0.2.1-rc.1",
6
+ "hostCommit": "1600d8a1e140dcde43a1a0941940a0480712c011",
7
+ "desktopReleaseLine": "0.2.1",
8
8
  "previewTag": "next",
9
- "supportedHosts": ["0.2.0-rc.2"]
9
+ "supportedHosts": ["0.2.1-rc.1"]
10
10
  }
@@ -1,6 +1,6 @@
1
1
  # Harness compatibility
2
2
 
3
- The build and peer dependency baseline is **`0.2.0-rc.2`** for every `@deepseek-ai/dsh-*` package. The source reference is tag `dsh-v0.2.0-rc.2`, commit `639ed015397290b3745d163aafe02ffee4aa3f84` in `deepseek-ai/deepseek-harness`. These are the precise package coordinates behind the requested desktop 0.2.0 release line; an untagged future `0.2.0` package is not silently covered.
3
+ The build and peer dependency baseline is **`0.2.1-rc.1`** for every `@deepseek-ai/dsh-*` package. The source reference is tag `dsh-v0.2.1-rc.1`, commit `1600d8a1e140dcde43a1a0941940a0480712c011` in `deepseek-ai/deepseek-harness`. These are the precise package coordinates behind the requested desktop 0.2.1 release line; an untagged future `0.2.1` package is not silently covered.
4
4
 
5
5
  The referenced packages were confirmed on npm. A clean install resolves one cohort, with `autoInstallPeers: false`; missing host peers used by development packages are explicitly provided at the same version. No local workspace overrides or private filesystem paths are needed.
6
6
 
@@ -20,6 +20,24 @@ Use the exact source tag or installed desktop cohort, a temporary `DSH_HOME`, an
20
20
 
21
21
  `pnpm pack:check` covers static typing, source and manifest contracts, regression tests, clean build, release metadata and tarball import closure. It does not by itself certify a running desktop session or upstream network availability. Future host cohorts must repeat this acceptance before widening peer ranges.
22
22
 
23
+ ## 0.0.4 / Harness 0.2.1-rc.1 acceptance — 2026-10-17
24
+
25
+ Target: [official release `dsh-v0.2.1-rc.1`](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.1-rc.1), commit `1600d8a1e140dcde43a1a0941940a0480712c011`. The supplied source checkout was clean at that tag and was used only as reference. Plugin validation used the working changes on base commit `990840138d22d681f46e54fd2e876f0d6acd8398`; it was not a published release commit.
26
+
27
+ All Harness development packages and peers now target the exact new cohort. Cordis and Schemastery development versions are 4.0.5 and 3.18.5. The upstream source no longer contains `dsh-invariants`, and npm has no 0.2.1-rc.1 release of that retired package; the unused development dependency was removed. The slot registrations, module factory and user skill roots remain compatible. The HTTP trust predicate now imports the actual host type instead of casting its numeric status to a boolean contract.
28
+
29
+ The unchanged baseline passed 96 tests on the old cohort. After migration, `pnpm install --frozen-lockfile` and `pnpm pack:check` passed, including 97 tests, typechecking, regenerated `lib/`, metadata and tarball closure checks. The new integration test uses real Cordis, WebServer and HostConnectionService instances (only cookie verification is a fixture), verifies 401/403/200 responses, route disposal and reactivation. The lockfile contains no old Harness cohort or local source override.
30
+
31
+ Runtime acceptance used the published npm `@deepseek-ai/dsh@0.2.1-rc.1`, with all 293 installed Harness packages pinned to that cohort, on macOS arm64 / Node 26.7.0. The plugin tarball was installed through `dsh plugin --profile web add <tarball>`, then booted through `dsh web --no-open --port 0`, using disposable `DSH_HOME` and `DSH_AGENTS_HOME`. Ego Lite drove the real host browser UI:
32
+
33
+ - The sidebar entry mounted the curated home with 398 skills and 13 categories.
34
+ - Searching for weather returned the curated results; opening Weather showed a loading skeleton, live ClawHub detail, rendered Markdown and its two-file inventory.
35
+ - Confirmed installation wrote the two files and the `steipete` owner sidecar to the isolated skills root. The Installed page showed the actual local copy. Confirmed removal from its detail returned the inventory to zero and deleted the directory.
36
+ - A disposable Markdown skill under the isolated shared agents root appeared after refresh. Its detail rendered a GFM table; confirmed local removal deleted that directory too.
37
+ - Light mode and a 1000px-wide dark host window rendered without horizontal viewport overflow.
38
+
39
+ Screenshots and runtime logs are local-only under ignored `artifacts/`. This verifies the published host's shared Web surface and plugin protocol. Native Electron packaging, Windows/Linux runtime acceptance, and model-driven skill invocation were not exercised. No package publication, tag push or active user-profile modification was performed. Historical records below describe older plugin revisions, not an additional supported peer range for 0.0.4.
40
+
23
41
  ## 0.0.1 acceptance record — 2026-09-30
24
42
 
25
43
  Validation used the published npm `@deepseek-ai/dsh@0.2.0-rc.2` runtime with every Harness dependency overridden to the same cohort, on macOS arm64 / Node 26.7.0. The plugin was installed from its npm tarball into a disposable Web profile, with isolated `DSH_HOME` and `DSH_AGENTS_HOME`. The complete published host started without startup warnings. The earlier source-checkout trial lacked unrelated built host packages and is not the compatibility evidence.
package/docs/CONTRACT.md CHANGED
@@ -1,10 +1,10 @@
1
- # Skills Hub 0.0.3 implementation contract
1
+ # Skills Hub 0.0.4 implementation contract
2
2
 
3
3
  This document describes the shipped code, not a migration plan. The TypeScript models in `src/market/types.ts`, `src/skills/installed.ts` and `src/client/api.ts` define the detailed wire shapes. Update this document with API changes.
4
4
 
5
5
  ## 1. Package and host
6
6
 
7
- The package is `@nanmicoder/dsh-skills-hub`, version `0.0.3`. Its supported host package cohort is exactly `0.2.0-rc.2`; the desktop release line is 0.2.0. The exact upstream tag and commit are recorded in `compatibility.json` and [COMPATIBILITY.md](COMPATIBILITY.md).
7
+ The package is `@nanmicoder/dsh-skills-hub`, version `0.0.4`. Its supported host package cohort is exactly `0.2.1-rc.1`; the desktop release line is 0.2.1. The exact upstream tag and commit are recorded in `compatibility.json` and [COMPATIBILITY.md](COMPATIBILITY.md).
8
8
 
9
9
  `cordis.patch.yml` inserts one row (`id: skills-hub`) named after the scoped package. `lib/index.js` is the host entry. `lib/client.js` is the browser factory registered with `window.__ModuleLoader__.load` under that same package name. The plugin adds a global sidebar panel and does not replace built-in components or require an agent session.
10
10
 
@@ -73,7 +73,7 @@ Current market limits are 5 MiB per file, 20 MiB total and 200 files per install
73
73
 
74
74
  ### 5.1 Transport and validation
75
75
 
76
- One host prefix route serves the endpoints below. Responses are JSON with `Cache-Control: no-store`. Failures use `{ "error": { "code": "…", "message": "…" } }` and an appropriate non-2xx status. Methods, route depth, IDs, enum filters, body sizes and paths are validated. The connection gate can reject requests with 401/403.
76
+ One host prefix route serves the endpoints below. Responses are JSON with `Cache-Control: no-store`. Failures use `{ "error": { "code": "…", "message": "…" } }` and an appropriate non-2xx status. Methods, route depth, IDs, enum filters, body sizes and paths are validated. The connection gate uses the host `HostConnectionService.requestRejection(request)` type directly: `undefined` admits the request, 401 rejects missing authentication and 403 rejects an untrusted authority/origin. The service is still resolved for each request.
77
77
 
78
78
  The browser surfaces transport failures as `NETWORK_ERROR`; invalid successful JSON becomes `MARKET_UPSTREAM_BAD_RESPONSE`. Aborted superseded reads are control flow and must not appear as user-visible errors.
79
79
 
package/docs/RELEASE.md CHANGED
@@ -1,6 +1,6 @@
1
- # Release 0.0.3
1
+ # Release 0.0.4
2
2
 
3
- Package: `@nanmicoder/dsh-skills-hub`. Repository: `NanmiCoder/dsh-skills-hub`. Tag: `v0.0.3`. npm channel: `latest`. This plugin release is independent of the host's `0.2.0-rc.2` version and retains that exact compatibility cohort.
3
+ Package: `@nanmicoder/dsh-skills-hub`. Repository: `NanmiCoder/dsh-skills-hub`. Tag: `v0.0.4`. npm channel: `latest`. This plugin release is independent of the host's `0.2.1-rc.1` version and retains that exact compatibility cohort.
4
4
 
5
5
  ## Before publication
6
6
 
@@ -11,7 +11,7 @@ Package: `@nanmicoder/dsh-skills-hub`. Repository: `NanmiCoder/dsh-skills-hub`.
11
11
 
12
12
  ## GitHub Actions publication
13
13
 
14
- Publication runs online in `.github/workflows/release.yml`, matching the AgentTeams release model. Push `v0.0.3` to trigger it, or dispatch the workflow with an explicit version. Both Node 22.19 and 24 must pass validation. The Node 24 job uploads the built tarball and SHA-256 checksum; the publication job verifies and publishes that exact artifact using npm 11.19.0. It does not rebuild during publication. A GitHub Release is published only after npm succeeds.
14
+ Publish after the compatibility PR is merged into `main`. Revalidate the merged commit, then create and push `v0.0.4` from that commit to run `.github/workflows/release.yml`. Creating the PR alone does not publish. A manual workflow dispatch with version `0.0.4` also publishes npm, but the GitHub Release job runs only for a tag push; prefer the tag flow for the complete release. Both Node 22.19 and 24 must pass validation. The Node 24 job uploads the built tarball and SHA-256 checksum; the publication job verifies and publishes that exact artifact using npm 11.19.0. It does not rebuild during publication. A GitHub Release is published only after npm succeeds.
15
15
 
16
16
  Configure npm Trusted Publishing for GitHub owner `NanmiCoder`, repository `dsh-skills-hub`, workflow `release.yml`, environment `npm`, allowing direct publication. OIDC uses `id-token: write`; routine releases need no local npm login and no stored npm token. The existing AgentTeams trust binding is package-specific and does not authorize this new package.
17
17
 
@@ -21,4 +21,4 @@ Before tagging, commit all source and generated artifacts, confirm the version a
21
21
 
22
22
  ## After publication / recovery
23
23
 
24
- Install `@nanmicoder/dsh-skills-hub@0.0.3` into an isolated profile and repeat the smoke flow. Compare the downloaded package and expected version before announcing availability. If a release is faulty, publish a new fixed version or deprecate the faulty version with a clear message; do not rewrite published Git tags or assume deleting a GitHub Release retracts npm. Preserve user skills when removing or replacing the plugin.
24
+ Install `@nanmicoder/dsh-skills-hub@0.0.4` into an isolated profile and repeat the smoke flow. Compare the downloaded package and expected version before announcing availability. If a release is faulty, publish a new fixed version or deprecate the faulty version with a clear message; do not rewrite published Git tags or assume deleting a GitHub Release retracts npm. Preserve user skills when removing or replacing the plugin.
@@ -16,6 +16,7 @@
16
16
  * otherwise be reachable by a cross-site request or a DNS-rebound page.
17
17
  */
18
18
  import type { IncomingMessage, ServerResponse } from 'node:http';
19
+ import type { HostConnectionService } from '@deepseek-ai/dsh-client-connection';
19
20
  /** Path prefix of the whole Skills Hub API. */
20
21
  export declare const ROUTE_PREFIX = "/api/skills-hub";
21
22
  /** Structural Web server contract (mirrors `WebServer.register`). */
@@ -33,18 +34,8 @@ export interface SkillsHubRoutesDeps {
33
34
  /** Initial local inventory scan, required before annotating persisted data. */
34
35
  ready?: () => Promise<void>;
35
36
  }
36
- /**
37
- * Browser-trust gate, structurally equal to the frozen contract's predicate.
38
- *
39
- * The real `HostConnectionService.requestRejection` returns `401 | 403 |
40
- * undefined` rather than a boolean (see
41
- * `@deepseek-ai/dsh-client-connection/lib/types/rpc.d.ts`), so this plugin
42
- * accepts both shapes: see {@link evaluateGate} for why the numeric form is
43
- * worth preserving.
44
- */
45
- export interface SkillsHubRequestGate {
46
- requestRejection(req: IncomingMessage, res: ServerResponse): boolean;
47
- }
37
+ /** Use the host's actual trust predicate; this import is erased from the runtime. */
38
+ export type SkillsHubRequestGate = Pick<HostConnectionService, 'requestRejection'>;
48
39
  /**
49
40
  * Resolves the gate for one request.
50
41
  *
package/lib/web-routes.js CHANGED
@@ -117,19 +117,9 @@ function sendFailure(res, error) {
117
117
  const failure = toHttpFailure(error);
118
118
  sendJson(res, failure.status, errorPayload(failure.code, failure.message), failure.allow === undefined ? undefined : { allow: failure.allow });
119
119
  }
120
- /**
121
- * Run the browser-trust gate and return the rejection status, if any.
122
- *
123
- * The frozen gate type says `boolean`, the real service answers `401 | 403 |
124
- * undefined`; both are accepted so the envelope can report the true status when
125
- * the plugin is wired to the real Connection service, while a plain predicate
126
- * still works.
127
- */
128
- function evaluateGate(gate, req, res) {
129
- const outcome = gate.requestRejection(req, res);
130
- if (outcome === undefined || outcome === false || outcome === null)
131
- return undefined;
132
- return typeof outcome === 'number' ? outcome : 403;
120
+ /** Preserve the host's authentication (401) and origin (403) rejections. */
121
+ function evaluateGate(gate, req) {
122
+ return gate.requestRejection(req);
133
123
  }
134
124
  /**
135
125
  * Read a bounded JSON object body.
@@ -386,7 +376,7 @@ async function handle(req, res, gate, deps) {
386
376
  // leaving the whole marketplace readable and installable from any web page.
387
377
  const resolvedGate = gate();
388
378
  if (resolvedGate !== undefined) {
389
- const rejection = evaluateGate(resolvedGate, req, res);
379
+ const rejection = evaluateGate(resolvedGate, req);
390
380
  if (rejection !== undefined) {
391
381
  sendJson(res, rejection, errorPayload(rejection === 401 ? 'UNAUTHORIZED' : 'FORBIDDEN', rejection === 401 ? 'unauthorized' : 'forbidden'));
392
382
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanmicoder/dsh-skills-hub",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Skills Hub for DeepSeek Harness: browse, preview, install and remove third-party skills from ClawHub and SkillHub inside the DSH Web GUI.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -62,14 +62,14 @@
62
62
  "pack:check": "pnpm check && node scripts/pack-check.mjs"
63
63
  },
64
64
  "peerDependencies": {
65
- "@deepseek-ai/cordis": "^4.0.2",
66
- "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
67
- "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
68
- "@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2",
69
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
70
- "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
71
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
72
- "@deepseek-ai/schemastery": "^3.18.2",
65
+ "@deepseek-ai/cordis": "~4.0.5",
66
+ "@deepseek-ai/dsh-client-connection": "0.2.1-rc.1",
67
+ "@deepseek-ai/dsh-client-locale": "0.2.1-rc.1",
68
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.1",
69
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.1",
70
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.1",
71
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.1",
72
+ "@deepseek-ai/schemastery": "~3.18.5",
73
73
  "react": "^18.2.0"
74
74
  },
75
75
  "peerDependenciesMeta": {
@@ -102,24 +102,23 @@
102
102
  }
103
103
  },
104
104
  "devDependencies": {
105
- "@deepseek-ai/cordis": "4.0.4",
106
- "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
107
- "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
108
- "@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
109
- "@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2",
110
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
111
- "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
112
- "@deepseek-ai/dsh-fs": "0.2.0-rc.2",
113
- "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
114
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
115
- "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
116
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
117
- "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
118
- "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
119
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
120
- "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
121
- "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2",
122
- "@deepseek-ai/schemastery": "3.18.4",
105
+ "@deepseek-ai/cordis": "4.0.5",
106
+ "@deepseek-ai/dsh-client-connection": "0.2.1-rc.1",
107
+ "@deepseek-ai/dsh-client-locale": "0.2.1-rc.1",
108
+ "@deepseek-ai/dsh-client-store": "0.2.1-rc.1",
109
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.1",
110
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.1",
111
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.1",
112
+ "@deepseek-ai/dsh-fs": "0.2.1-rc.1",
113
+ "@deepseek-ai/dsh-home-paths": "0.2.1-rc.1",
114
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.1",
115
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.1",
116
+ "@deepseek-ai/dsh-sandbox": "0.2.1-rc.1",
117
+ "@deepseek-ai/dsh-scope": "0.2.1-rc.1",
118
+ "@deepseek-ai/dsh-session": "0.2.1-rc.1",
119
+ "@deepseek-ai/dsh-skill": "0.2.1-rc.1",
120
+ "@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.1",
121
+ "@deepseek-ai/schemastery": "3.18.5",
123
122
  "@types/node": "^24.13.3",
124
123
  "@types/react": "~18.3.1",
125
124
  "@types/react-dom": "^18.3.7",
@@ -0,0 +1,11 @@
1
+ # Skills Hub 0.0.4
2
+
3
+ `@nanmicoder/dsh-skills-hub` for DeepSeek Harness **0.2.1-rc.1**.
4
+
5
+ - Move the exact Harness dependency and peer cohort to `0.2.1-rc.1`, with Cordis 4.0.5 and Schemastery 3.18.5. Remove the retired `dsh-invariants` development dependency.
6
+ - Type the HTTP trust gate against the host connection service, preserving authentication (401) and origin (403) rejection statuses without an unchecked boolean adapter.
7
+ - Retain the existing sidebar, curated catalogue, Markdown previews, persistent cache and skill installation/removal flows.
8
+
9
+ This release targets the exact candidate host version; it does not claim compatibility with an unreleased stable 0.2.1. See [COMPATIBILITY.md](../docs/COMPATIBILITY.md) for validation evidence and limitations.
10
+
11
+ After publication, install `@nanmicoder/dsh-skills-hub@0.0.4` from the host plugin manager. Release preparation does not publish the package.