dsh-library 0.2.10 → 0.2.12

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
@@ -5,7 +5,25 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.2.12] - 2026-09-18
9
+
10
+ ### Fixed
11
+
12
+ - The mount no longer loses its registrations when the fiber is disposed inside the dependency-resolution await: the storage-domain effect closes the handle with the fiber, and the tool/command registrations are skipped instead of throwing `INACTIVE_EFFECT` halfway through `apply`.
13
+
14
+ - The audit gate now decides whether this host can carry `library/inject` / `library/purge` from an **observed** probe instead of an append implementation's source text. At mount the plugin appends one audit event on a throwaway session and reads the returned record back; a host that stamps `ignorable === true` gets the marked appends, and every other host (including the `0.1.6-alpha.2` line, whose third append parameter is a `SurfaceIntent` that exists only for surface-eligible types) gets no append **plus one visible warning** instead of a silent skip. The three branch semantics are unchanged; the probe fails closed to "unsupported" on any error, and the test contract injects the verdict explicitly.
15
+
16
+ ### Changed
17
+
18
+ - Declare `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh` (G-3).
19
+ - The CI workflow already runs both rulers (published peers + the alpha.2 checkout face with a freshness assertion); no change was needed there.
20
+
21
+ ## [0.2.11] - 2026-09-12
22
+
23
+ ### Changed
24
+
25
+ - Rename the four translated READMEs to `README-<lang>.md`. npm selects the package-page readme as the first markdown file matching its `{README,README.*}` glob (`@npmcli/package-json`, publish path), and that glob order puts `README.<lang>.md` ahead of `README.md` — so npm was serving the Simplified-Chinese file for this package too (measured on 15/15 sampled packages of the family). The new names sit outside the glob, so the English source is served again. No content changed apart from the language-switcher link each translation holds to its siblings, and the repo readme gate still passes. Takes effect with the next release; an already-published version cannot gain a corrected readme retroactively.
26
+ - Pin the `@deepseek-ai/dsh-*` dev/test dependencies to the published `0.1.5-rc.2` line and record `0.1.5-rc.2` in `dshWorkshop.compatibility.dshVersions`; the monthly Compat workflow now runs against `0.1.5-rc.2`. The peer range `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` is unchanged, so no supported host line is dropped.
9
27
 
10
28
  ## [0.2.10] - 2026-09-10
11
29
 
@@ -8,6 +8,7 @@
8
8
  *Importa, recupera, verifica — búsqueda híbrida con citas que tu agente puede comprobar.*
9
9
 
10
10
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-library)
11
12
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
13
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-library.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
13
14
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
@@ -16,7 +17,7 @@
16
17
  [![npm version](https://img.shields.io/npm/v/dsh-library)](https://www.npmjs.com/package/dsh-library)
17
18
  [![npm downloads](https://img.shields.io/npm/dm/dsh-library)](https://www.npmjs.com/package/dsh-library)
18
19
 
19
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
20
+ [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
20
21
 
21
22
  </div>
22
23
 
@@ -26,7 +27,7 @@
26
27
 
27
28
  | Superficie | Estado |
28
29
  |---|---|
29
- | Harness | DeepSeek Harness `dsh-v0.1.5-rc.1` (compatibilidad declarada para `0.1.5-rc.1`). Verificado el 2026-09-10 contra el checkout master de dsh-v0.1.5-rc.1 (cadena de puertas completa + smoke de instalación de profile). |
30
+ | Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (verificado el 2026-09-18: doble typecheck + 89 pruebas + puertas self-contained/artifacts; rango de peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0`). Único paquete de la familia con un smoke real de host alpha.2 (2026-09-11). |
30
31
  | Node | `^22.19.0 \|\| >=24.0.0` |
31
32
  | Almacenamiento | Cualquier backend de storage-domain (JSON o SQLite); el índice vive en el dominio de almacenamiento del host |
32
33
  | Modelos | Ninguno requerido — el embedder integrado es hash determinista (cero descargas) |
@@ -143,7 +144,7 @@ Todos los ajustes son campos `Config` de Schemastery (modificables desde cordis.
143
144
  ```sh
144
145
  pnpm install # node ^22.19 || >=24
145
146
  pnpm run typecheck # tsc: src + tests contra el checkout local del harness
146
- pnpm run typecheck:ci # tsc contra los tipos publicados 0.1.5-rc.1 (sin paths)
147
+ pnpm run typecheck:ci # tsc contra los tipos publicados 0.1.5-rc.2 (sin paths)
147
148
  pnpm test # vitest: puertos de calidad, vocabulario núcleo, ensamblaje con pila real
148
149
  pnpm run build # bundle tsdown + declaraciones tsc (lib/)
149
150
  pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
@@ -161,7 +162,7 @@ pnpm pack # el tarball publicado
161
162
 
162
163
  ## PerryLink DSH Plugin Family
163
164
 
164
- Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, probablemente los demás también:
165
+ Este proyecto es uno de los [40 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, probablemente los demás también:
165
166
 
166
167
  | Plugin | One-liner |
167
168
  |---|---|
@@ -190,6 +191,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
190
191
  | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
191
192
  | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
192
193
  | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
194
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
193
195
  | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Puente multicanal de aprobación/preguntas: WeChat/Telegram/Feishu, consola de sesión |
194
196
  | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
195
197
  | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
@@ -200,7 +202,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
200
202
  | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
201
203
  | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
202
204
  | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
203
- | **[dsh-wechat](https://github.com/PerryLink/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
205
+ | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
206
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
207
+ | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
208
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
209
+ | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
210
+ | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
211
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
212
+ | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
213
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
214
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
204
215
 
205
216
  ## License
206
217
 
@@ -8,6 +8,7 @@
8
8
  *आयात करें, पुनर्प्राप्त करें, सत्यापित करें — उद्धरण-युक्त हाइब्रिड खोज जिसे आपका एजेंट जाँच सकता है।*
9
9
 
10
10
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-library)
11
12
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
13
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-library.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
13
14
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
@@ -16,7 +17,7 @@
16
17
  [![npm version](https://img.shields.io/npm/v/dsh-library)](https://www.npmjs.com/package/dsh-library)
17
18
  [![npm downloads](https://img.shields.io/npm/dm/dsh-library)](https://www.npmjs.com/package/dsh-library)
18
19
 
19
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
20
+ [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
20
21
 
21
22
  </div>
22
23
 
@@ -26,7 +27,7 @@
26
27
 
27
28
  | सतह | स्थिति |
28
29
  |---|---|
29
- | Harness | DeepSeek Harness `dsh-v0.1.5-rc.1` (`0.1.5-rc.1` के लिए घोषित संगतता)। 2026-09-10 को dsh-v0.1.5-rc.1 master checkout के विरुद्ध सत्यापित (पूर्ण गेट श्रृंखला + profile इंस्टॉल smoke)। |
30
+ | Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (2026-09-18 को सत्यापित: दोहरा typecheck + 89 टेस्ट + self-contained/artifacts गेट; peer रेंज `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0`)। परिवार का एकमात्र पैकेज जिसका वास्तविक alpha.2 होस्ट स्मोक चला है (2026-09-11)। |
30
31
  | Node | `^22.19.0 \|\| >=24.0.0` |
31
32
  | भंडारण | कोई भी storage-domain बैकएंड (JSON या SQLite); सूचकांक होस्ट के भंडारण डोमेन में रहता है |
32
33
  | मॉडल | किसी की आवश्यकता नहीं — अंतर्निहित एम्बेडर नियतात्मक हैश है (शून्य डाउनलोड) |
@@ -143,7 +144,7 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-library'
143
144
  ```sh
144
145
  pnpm install # node ^22.19 || >=24
145
146
  pnpm run typecheck # tsc: src + tests स्थानीय हार्नेस चेकआउट के विरुद्ध
146
- pnpm run typecheck:ci # tsc प्रकाशित 0.1.5-rc.1 प्रकारों के विरुद्ध (बिना paths)
147
+ pnpm run typecheck:ci # tsc प्रकाशित 0.1.5-rc.2 प्रकारों के विरुद्ध (बिना paths)
147
148
  pnpm test # vitest: गुणवत्ता पोर्ट, मूल शब्दावली, वास्तविक-स्टैक संयोजन
148
149
  pnpm run build # tsdown बंडल + tsc घोषणाएँ (lib/)
149
150
  pnpm run verify:self-contained # निर्भरता स्पेक registry से हल होती हैं
@@ -161,7 +162,7 @@ pnpm pack # प्रकाशित tarball
161
162
 
162
163
  ## PerryLink DSH Plugin Family
163
164
 
164
- यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [37 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
165
+ यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
165
166
 
166
167
  | Plugin | One-liner |
167
168
  |---|---|
@@ -190,6 +191,7 @@ pnpm pack # प्रकाशित tarball
190
191
  | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
191
192
  | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
192
193
  | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
194
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
193
195
  | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | मल्टी-चैनल अनुमोदन/प्रश्न ब्रिज: WeChat/Telegram/Feishu, सत्र कंसोल |
194
196
  | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
195
197
  | **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
@@ -200,7 +202,16 @@ pnpm pack # प्रकाशित tarball
200
202
  | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
201
203
  | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
202
204
  | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
203
- | **[dsh-wechat](https://github.com/PerryLink/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
205
+ | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
206
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
207
+ | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
208
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
209
+ | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
210
+ | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
211
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
212
+ | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
213
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
214
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
204
215
 
205
216
  ## License
206
217
 
@@ -8,6 +8,7 @@
8
8
  *Importe, recupere, verifique — busca híbrida com citações que seu agente pode conferir.*
9
9
 
10
10
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-library)
11
12
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
13
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-library.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
13
14
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
@@ -16,7 +17,7 @@
16
17
  [![npm version](https://img.shields.io/npm/v/dsh-library)](https://www.npmjs.com/package/dsh-library)
17
18
  [![npm downloads](https://img.shields.io/npm/dm/dsh-library)](https://www.npmjs.com/package/dsh-library)
18
19
 
19
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
20
+ [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
20
21
 
21
22
  </div>
22
23
 
@@ -26,7 +27,7 @@
26
27
 
27
28
  | Superfície | Status |
28
29
  |---|---|
29
- | Harness | DeepSeek Harness `dsh-v0.1.5-rc.1` (compatibilidade declarada para `0.1.5-rc.1`). Verificado em 2026-09-10 contra o checkout master do dsh-v0.1.5-rc.1 (cadeia de portas completa + smoke de instalação de profile). |
30
+ | Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (verificado em 2026-09-18: typecheck duplo + 89 testes + portas self-contained/artifacts; intervalo de peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0`). Único pacote da família com smoke real de host alpha.2 (2026-09-11). |
30
31
  | Node | `^22.19.0 \|\| >=24.0.0` |
31
32
  | Armazenamento | Qualquer backend de storage-domain (JSON ou SQLite); o índice vive no domínio de armazenamento do host |
32
33
  | Modelos | Nenhum necessário — o embedder integrado é hash determinístico (zero downloads) |
@@ -143,7 +144,7 @@ Todos os ajustes são campos `Config` do Schemastery (alteráveis pelo cordis.ym
143
144
  ```sh
144
145
  pnpm install # node ^22.19 || >=24
145
146
  pnpm run typecheck # tsc: src + tests contra o checkout local do harness
146
- pnpm run typecheck:ci # tsc contra os tipos publicados 0.1.5-rc.1 (sem paths)
147
+ pnpm run typecheck:ci # tsc contra os tipos publicados 0.1.5-rc.2 (sem paths)
147
148
  pnpm test # vitest: portas de qualidade, vocabulário núcleo, montagem com pilha real
148
149
  pnpm run build # bundle tsdown + declarações tsc (lib/)
149
150
  pnpm run verify:self-contained # especificações de dependências resolvem pelo registry
@@ -161,7 +162,7 @@ pnpm pack # o tarball publicado
161
162
 
162
163
  ## PerryLink DSH Plugin Family
163
164
 
164
- Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
165
+ Este projeto é um dos [40 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
165
166
 
166
167
  | Plugin | One-liner |
167
168
  |---|---|
@@ -190,6 +191,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
190
191
  | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
191
192
  | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
192
193
  | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
194
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
193
195
  | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Ponte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão |
194
196
  | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo | |
195
197
  | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
@@ -200,7 +202,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
200
202
  | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
201
203
  | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
202
204
  | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
203
- | **[dsh-wechat](https://github.com/PerryLink/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
205
+ | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
206
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
207
+ | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
208
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
209
+ | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
210
+ | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
211
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
212
+ | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
213
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
214
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
204
215
 
205
216
  ## License
206
217
 
@@ -8,6 +8,7 @@
8
8
  *导入、检索、核验 —— 带引用标记的混合检索,agent 可以自证引用。*
9
9
 
10
10
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-library)
11
12
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
13
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-library.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
13
14
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
@@ -16,7 +17,7 @@
16
17
  [![npm version](https://img.shields.io/npm/v/dsh-library)](https://www.npmjs.com/package/dsh-library)
17
18
  [![npm downloads](https://img.shields.io/npm/dm/dsh-library)](https://www.npmjs.com/package/dsh-library)
18
19
 
19
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
20
+ [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
20
21
 
21
22
  </div>
22
23
 
@@ -26,7 +27,7 @@
26
27
 
27
28
  | 方面 | 状态 |
28
29
  |---|---|
29
- | Harness | DeepSeek Harness `dsh-v0.1.5-rc.1`(声明兼容 `0.1.5-rc.1`)。2026-09-10 已对照 dsh-v0.1.5-rc.1 master checkout 核验(完整门禁链 + profile 安装冒烟)。 |
30
+ | Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`(2026-09-18 核验:双 typecheck 尺子 + 89 项测试 + self-contained/artifacts 门;peer 三段式 `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0`)。全族唯一已实跑 alpha.2 宿主冒烟的仓(2026-09-11)。 |
30
31
  | Node | `^22.19.0 \|\| >=24.0.0` |
31
32
  | 存储 | 任意 storage-domain 后端(JSON 或 SQLite);索引存放在宿主的存储域中 |
32
33
  | 模型 | 无需任何模型 —— 内置嵌入为确定性哈希(零下载) |
@@ -143,7 +144,7 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-library'
143
144
  ```sh
144
145
  pnpm install # node ^22.19 || >=24
145
146
  pnpm run typecheck # tsc:src + tests 对照本地 harness checkout
146
- pnpm run typecheck:ci # tsc:对照已发布的 0.1.5-rc.1 类型(无 paths)
147
+ pnpm run typecheck:ci # tsc:对照已发布的 0.1.5-rc.2 类型(无 paths)
147
148
  pnpm test # vitest:八移植回归、核心词汇、真实栈装配
148
149
  pnpm run build # tsdown bundle + tsc 声明(lib/)
149
150
  pnpm run verify:self-contained # 依赖声明全部来自 registry
@@ -161,7 +162,7 @@ pnpm pack # 发布用 tarball
161
162
 
162
163
  ## PerryLink DSH Plugin Family
163
164
 
164
- 这是 [PerryLink](https://github.com/PerryLink) 维护的 [37 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
165
+ 这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
165
166
 
166
167
  | Plugin | One-liner |
167
168
  |---|---|
@@ -190,6 +191,7 @@ pnpm pack # 发布用 tarball
190
191
  | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
191
192
  | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
192
193
  | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
194
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
193
195
  | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
194
196
  | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
195
197
  | **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
@@ -200,7 +202,16 @@ pnpm pack # 发布用 tarball
200
202
  | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
201
203
  | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
202
204
  | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
203
- | **[dsh-wechat](https://github.com/PerryLink/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
205
+ | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
206
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
207
+ | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
208
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
209
+ | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
210
+ | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
211
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
212
+ | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
213
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
214
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
204
215
 
205
216
  ## License
206
217
 
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  [![npm version](https://img.shields.io/npm/v/dsh-library)](https://www.npmjs.com/package/dsh-library)
18
18
  [![npm downloads](https://img.shields.io/npm/dm/dsh-library)](https://www.npmjs.com/package/dsh-library)
19
19
 
20
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
20
+ [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
21
21
 
22
22
  </div>
23
23
 
@@ -27,7 +27,7 @@
27
27
 
28
28
  | Surface | Status |
29
29
  |---|---|
30
- | Harness | DeepSeek Harness `dsh-v0.1.5-rc.1` (compat declared for `0.1.5-rc.1`). Verified 2026-09-10 against the dsh-v0.1.5-rc.1 master checkout (full gate chain + profile install smoke). |
30
+ | Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (verified 2026-09-18: dual typecheck rulers + 89 tests + self-contained/artifacts gates; peer range `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0`). Home of the family's only exercised alpha.2 host smoke (2026-09-11). |
31
31
  | Node | `^22.19.0 \|\| >=24.0.0` |
32
32
  | Storage | Any storage-domain backend (JSON or SQLite); the index lives in the host's storage domain |
33
33
  | Models | None required — the built-in embedder is deterministic hashing (zero downloads) |
@@ -144,7 +144,7 @@ All tunables are Schemastery `Config` fields (changeable from cordis.yml). An id
144
144
  ```sh
145
145
  pnpm install # node ^22.19 || >=24
146
146
  pnpm run typecheck # tsc: src + tests against the local harness checkout
147
- pnpm run typecheck:ci # tsc against the published 0.1.5-rc.1 types (no paths)
147
+ pnpm run typecheck:ci # tsc against the published 0.1.5-rc.2 types (no paths)
148
148
  pnpm test # vitest: quality ports, core vocabulary, real-stack assembly
149
149
  pnpm run build # tsdown bundle + tsc declarations (lib/)
150
150
  pnpm run verify:self-contained # dependency specs resolve from the registry
@@ -162,7 +162,7 @@ pnpm pack # the published tarball
162
162
 
163
163
  ## PerryLink DSH Plugin Family
164
164
 
165
- This project is one of the [37 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
165
+ This project is one of the [40 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
166
166
 
167
167
  | Plugin | One-liner |
168
168
  |---|---|
@@ -191,6 +191,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
191
191
  | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
192
192
  | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with top-bar toggle (framework edition) |
193
193
  | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
194
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
194
195
  | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console |
195
196
  | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
196
197
  | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
@@ -201,7 +202,16 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
201
202
  | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
202
203
  | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
203
204
  | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
204
- | **[dsh-wechat](https://github.com/PerryLink/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
205
+ | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
206
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
207
+ | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
208
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
209
+ | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
210
+ | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
211
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
212
+ | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
213
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
214
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
205
215
 
206
216
  ### Install from the DSH Desktop Market
207
217
 
package/lib/index.js CHANGED
@@ -1,9 +1,10 @@
1
+ import { Context } from "@deepseek-ai/cordis";
2
+ import SessionStore, { KNOWN_SESSION_EVENT_TYPES, SessionId } from "@deepseek-ai/dsh-session";
1
3
  import { defineDomain } from "@deepseek-ai/dsh-storage-domain";
2
4
  import { MessageId } from "@deepseek-ai/dsh-llm";
3
5
  import { defineTool } from "@deepseek-ai/dsh-tools";
4
6
  import z from "@deepseek-ai/schemastery";
5
7
  import { createHash, randomUUID } from "node:crypto";
6
- import { KNOWN_SESSION_EVENT_TYPES } from "@deepseek-ai/dsh-session";
7
8
  //#region node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/core.js
8
9
  var _a$1;
9
10
  function $constructor(name, initializer, params) {
@@ -5410,13 +5411,19 @@ function verifyPurge(remaining, removedContent, options = {}) {
5410
5411
  * exist outside them: the inject id linking the injected marker text back to
5411
5412
  * the search that produced it, and each purge-verification verdict.
5412
5413
  *
5413
- * The gate appends only when the host can carry the events safely:
5414
+ * The gate appends only when the host can carry the events safely, and the
5415
+ * host's capability is OBSERVED at mount time rather than inferred from an
5416
+ * append implementation's source text:
5414
5417
  * - hosts whose known-type set covers the vocabulary append plainly;
5415
- * - hosts with an `ignorable` append option (pre-0.1.2 master builds) append
5416
- * with the marker, so builds that do not know the type skip it on restore;
5417
- * - envelope-less hosts (0.1.0-rc.6/rc.8, 0.1.1-rc.2, and 0.1.2-alpha.3,
5418
- * which fails closed on unknown types at read) get no append — the tool
5419
- * results remain the reconstructable audit trail. On 0.1.2-alpha.3 the envelope field is restored for stored-log read compatibility only - its Session.append still cannot stamp the marker, so the gate behavior is unchanged.
5418
+ * - hosts observed to stamp the `ignorable` envelope (see
5419
+ * {@link probeMarkerSupport}) append with the marker, so builds that do not
5420
+ * know the type skip the event on restore;
5421
+ * - every other host envelope-less builds such as 0.1.0-rc.6/rc.8,
5422
+ * 0.1.1-rc.2 and the 0.1.2-alpha line, which fails closed on unknown types at
5423
+ * read, and the 0.1.6-alpha.2 line, whose third append parameter is a
5424
+ * `SurfaceIntent` that exists only for surface-eligible types — gets no
5425
+ * append, with one visible warning instead of a silent skip; the tool
5426
+ * results remain the reconstructable audit trail.
5420
5427
  *
5421
5428
  * @module dsh-library/events
5422
5429
  */
@@ -5425,22 +5432,79 @@ const INJECT_EVENT = "library/inject";
5425
5432
  /** The purge audit event type. */
5426
5433
  const PURGE_EVENT = "library/purge";
5427
5434
  /**
5428
- * Append one dsh-library audit event when the host can carry it safely; skip
5429
- * silently otherwise (the `tool/call` + `tool/result` events remain the
5430
- * model-visible log, so nothing model-visible is lost). See the module doc
5431
- * for the three host classes.
5435
+ * The host capability, decided by {@link probeMarkerSupport} at mount time and
5436
+ * cached for the process (the append surface cannot change within one). Tests
5437
+ * adopt a verdict explicitly through {@link adoptMarkerSupport}.
5438
+ */
5439
+ let markerSupport = "unknown";
5440
+ /** Whether the one-time skip notice has been emitted. */
5441
+ let warnedUnmarkedHost = false;
5442
+ /** Adopt the probed verdict (called once by `apply`; tests inject it directly). */
5443
+ function adoptMarkerSupport(verdict) {
5444
+ markerSupport = verdict;
5445
+ warnedUnmarkedHost = false;
5446
+ }
5447
+ /**
5448
+ * Observe whether this host stamps the `ignorable` envelope, by appending one
5449
+ * audit event on a scratch session and reading the returned record back. The
5450
+ * judgement is observed rather than inferred from an append implementation's
5451
+ * source text (a source-text probe cannot see through a wrapper, a minifier or
5452
+ * a future options bag), and it is safe: the scratch session is discarded, so
5453
+ * an unmarked write there harms nothing.
5454
+ *
5455
+ * Folded context: `Session.append` optionally returns the appended record; a
5456
+ * host that honours `{ ignorable: true }` returns it with `ignorable === true`,
5457
+ * one that drops the options bag returns a record without the field, and a
5458
+ * host that rejects the type outright throws — all three map to a verdict, and
5459
+ * anything ambiguous or throwing fails closed to `'unsupported'`.
5460
+ * @param createSession - builds the throwaway session to probe with.
5461
+ * @returns the observed capability.
5462
+ */
5463
+ async function probeMarkerSupport(createSession) {
5464
+ try {
5465
+ const session = createSession();
5466
+ return isMarkedRecord(session.append.call(session, "library/inject", {
5467
+ injectId: "probe",
5468
+ library: "probe",
5469
+ query: "probe",
5470
+ chunks: [],
5471
+ chars: 0
5472
+ }, { ignorable: true })) ? "supported" : "unsupported";
5473
+ } catch {
5474
+ return "unsupported";
5475
+ }
5476
+ }
5477
+ /** Whether a returned append record carries the stamped marker. */
5478
+ function isMarkedRecord(record) {
5479
+ return typeof record === "object" && record !== null && record.ignorable === true;
5480
+ }
5481
+ /**
5482
+ * Append one dsh-library audit event when the host can carry it safely, and
5483
+ * report what happened instead of skipping silently (the `tool/call` +
5484
+ * `tool/result` events remain the model-visible log either way). The full rule
5485
+ * set lives in the module doc; in short: known-vocabulary hosts append
5486
+ * plainly, hosts observed to stamp the `ignorable` envelope append with the
5487
+ * marker, and every other host gets no append plus one visible warning.
5432
5488
  * @param session - the calling session.
5433
5489
  * @param type - the audit event type.
5434
5490
  * @param data - the audit payload.
5491
+ * @returns which branch ran.
5435
5492
  */
5436
5493
  function appendAuditEvent(session, type, data) {
5437
5494
  if (KNOWN_SESSION_EVENT_TYPES.has(type)) {
5438
5495
  if (type === "library/inject") session.append(type, data);
5439
5496
  else session.append(type, data);
5440
- return;
5497
+ return "appended";
5498
+ }
5499
+ if (markerSupport === "supported") {
5500
+ session.append.call(session, type, data, { ignorable: true });
5501
+ return "appended-marked";
5502
+ }
5503
+ if (!warnedUnmarkedHost) {
5504
+ warnedUnmarkedHost = true;
5505
+ console.warn("dsh-library: this host does not admit dsh-library audit events (its append surface cannot stamp the ignorable envelope and its vocabulary does not cover the type), so library/inject and library/purge are not written; the tool/call + tool/result events remain the audit trail");
5441
5506
  }
5442
- const append = session.append;
5443
- if (Function.prototype.toString.call(append).includes("ignorable")) append.call(session, type, data, { ignorable: true });
5507
+ return "skipped-unmarked-host";
5444
5508
  }
5445
5509
  //#endregion
5446
5510
  //#region src/quality/few-shot.ts
@@ -5499,6 +5563,21 @@ function formatFewShotPrompt(query, selected) {
5499
5563
  }
5500
5564
  //#endregion
5501
5565
  //#region src/index.ts
5566
+ /**
5567
+ * `dsh-library` — the local-first knowledge base for DeepSeek Harness:
5568
+ * import md/txt documents into a storage-domain index, retrieve with a
5569
+ * hybrid semantic+keyword pipeline (diversity re-rank, relevance filter,
5570
+ * lost-in-the-middle avoidance), verify citations against retrieved chunks,
5571
+ * and diagnose chunk/retrieval quality. Everything model-visible carries a
5572
+ * source marker. The `library/inject` and `library/purge` audit events are
5573
+ * appended through the adaptive host gate (see `events.ts`); where the host
5574
+ * cannot carry them, the logged `tool/call` + `tool/result` events remain the
5575
+ * reconstructable trail. Document paths and embeddings never reach the log.
5576
+ *
5577
+ * Function plugin — no default export (the Loader unwraps
5578
+ * `exports.default ?? exports`).
5579
+ * @module dsh-library
5580
+ */
5502
5581
  const name = "dsh-library";
5503
5582
  /** Hard services: the durable index lives in the storage domain; tools and the command register here. */
5504
5583
  const inject = [
@@ -5840,7 +5919,21 @@ async function apply(ctx, config = {}) {
5840
5919
  const resolved = resolveConfig(config);
5841
5920
  const domain = await ctx.storageDomain.open(libraryDomainSpec);
5842
5921
  ctx.effect(() => () => domain.close(), "dsh-library: storage domain");
5843
- const store = new LibraryStore(domain, resolved, await storeDepsOf(ctx, resolved));
5922
+ const deps = await storeDepsOf(ctx, resolved);
5923
+ if (ctx.fiber.uid === null) return;
5924
+ try {
5925
+ const probeContext = new Context();
5926
+ const probeFiber = await probeContext.plugin(SessionStore);
5927
+ try {
5928
+ const probeSession = probeContext.sessions.create(SessionId("dsh-library-marker-probe"));
5929
+ adoptMarkerSupport(await probeMarkerSupport(() => probeSession));
5930
+ } finally {
5931
+ await probeFiber.dispose();
5932
+ }
5933
+ } catch {
5934
+ adoptMarkerSupport("unsupported");
5935
+ }
5936
+ const store = new LibraryStore(domain, resolved, deps);
5844
5937
  const services = {
5845
5938
  ctx,
5846
5939
  config: resolved,
@@ -6,13 +6,19 @@
6
6
  * exist outside them: the inject id linking the injected marker text back to
7
7
  * the search that produced it, and each purge-verification verdict.
8
8
  *
9
- * The gate appends only when the host can carry the events safely:
9
+ * The gate appends only when the host can carry the events safely, and the
10
+ * host's capability is OBSERVED at mount time rather than inferred from an
11
+ * append implementation's source text:
10
12
  * - hosts whose known-type set covers the vocabulary append plainly;
11
- * - hosts with an `ignorable` append option (pre-0.1.2 master builds) append
12
- * with the marker, so builds that do not know the type skip it on restore;
13
- * - envelope-less hosts (0.1.0-rc.6/rc.8, 0.1.1-rc.2, and 0.1.2-alpha.3,
14
- * which fails closed on unknown types at read) get no append — the tool
15
- * results remain the reconstructable audit trail. On 0.1.2-alpha.3 the envelope field is restored for stored-log read compatibility only - its Session.append still cannot stamp the marker, so the gate behavior is unchanged.
13
+ * - hosts observed to stamp the `ignorable` envelope (see
14
+ * {@link probeMarkerSupport}) append with the marker, so builds that do not
15
+ * know the type skip the event on restore;
16
+ * - every other host envelope-less builds such as 0.1.0-rc.6/rc.8,
17
+ * 0.1.1-rc.2 and the 0.1.2-alpha line, which fails closed on unknown types at
18
+ * read, and the 0.1.6-alpha.2 line, whose third append parameter is a
19
+ * `SurfaceIntent` that exists only for surface-eligible types — gets no
20
+ * append, with one visible warning instead of a silent skip; the tool
21
+ * results remain the reconstructable audit trail.
16
22
  *
17
23
  * @module dsh-library/events
18
24
  */
@@ -55,14 +61,40 @@ export interface LibraryPurgeEvent {
55
61
  export declare const INJECT_EVENT: "library/inject";
56
62
  /** The purge audit event type. */
57
63
  export declare const PURGE_EVENT: "library/purge";
64
+ /** The observed marker capability of the mounted host. */
65
+ export type MarkerSupport = 'unknown' | 'supported' | 'unsupported';
66
+ /** The outcome of one audit append attempt. */
67
+ export type AuditAppendOutcome = 'appended' | 'appended-marked' | 'skipped-unmarked-host';
68
+ /** Adopt the probed verdict (called once by `apply`; tests inject it directly). */
69
+ export declare function adoptMarkerSupport(verdict: MarkerSupport): void;
58
70
  /**
59
- * Append one dsh-library audit event when the host can carry it safely; skip
60
- * silently otherwise (the `tool/call` + `tool/result` events remain the
61
- * model-visible log, so nothing model-visible is lost). See the module doc
62
- * for the three host classes.
71
+ * Observe whether this host stamps the `ignorable` envelope, by appending one
72
+ * audit event on a scratch session and reading the returned record back. The
73
+ * judgement is observed rather than inferred from an append implementation's
74
+ * source text (a source-text probe cannot see through a wrapper, a minifier or
75
+ * a future options bag), and it is safe: the scratch session is discarded, so
76
+ * an unmarked write there harms nothing.
77
+ *
78
+ * Folded context: `Session.append` optionally returns the appended record; a
79
+ * host that honours `{ ignorable: true }` returns it with `ignorable === true`,
80
+ * one that drops the options bag returns a record without the field, and a
81
+ * host that rejects the type outright throws — all three map to a verdict, and
82
+ * anything ambiguous or throwing fails closed to `'unsupported'`.
83
+ * @param createSession - builds the throwaway session to probe with.
84
+ * @returns the observed capability.
85
+ */
86
+ export declare function probeMarkerSupport(createSession: () => Session): Promise<MarkerSupport>;
87
+ /**
88
+ * Append one dsh-library audit event when the host can carry it safely, and
89
+ * report what happened instead of skipping silently (the `tool/call` +
90
+ * `tool/result` events remain the model-visible log either way). The full rule
91
+ * set lives in the module doc; in short: known-vocabulary hosts append
92
+ * plainly, hosts observed to stamp the `ignorable` envelope append with the
93
+ * marker, and every other host gets no append plus one visible warning.
63
94
  * @param session - the calling session.
64
95
  * @param type - the audit event type.
65
96
  * @param data - the audit payload.
97
+ * @returns which branch ran.
66
98
  */
67
- export declare function appendAuditEvent(session: Session, type: typeof INJECT_EVENT | typeof PURGE_EVENT, data: LibraryInjectEvent | LibraryPurgeEvent): void;
99
+ export declare function appendAuditEvent(session: Session, type: typeof INJECT_EVENT | typeof PURGE_EVENT, data: LibraryInjectEvent | LibraryPurgeEvent): AuditAppendOutcome;
68
100
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElF,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,eAAe;QACvB,4FAA4F;QAC5F,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,uDAAuD;QACvD,eAAe,EAAE,iBAAiB,CAAA;KACnC;CACF;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,sCAAsC;AACtC,eAAO,MAAM,YAAY,EAAG,gBAAyB,CAAA;AAErD,kCAAkC;AAClC,eAAO,MAAM,WAAW,EAAG,eAAwB,CAAA;AAKnD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,YAAY,GAAG,OAAO,WAAW,EAC9C,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAC3C,IAAI,CAUN"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElF,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,eAAe;QACvB,4FAA4F;QAC5F,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,uDAAuD;QACvD,eAAe,EAAE,iBAAiB,CAAA;KACnC;CACF;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,sCAAsC;AACtC,eAAO,MAAM,YAAY,EAAG,gBAAyB,CAAA;AAErD,kCAAkC;AAClC,eAAO,MAAM,WAAW,EAAG,eAAwB,CAAA;AAEnD,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;AAEnE,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,iBAAiB,GAAG,uBAAuB,CAAA;AAYzF,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAG/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAe7F;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,YAAY,GAAG,OAAO,WAAW,EAC9C,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAC3C,kBAAkB,CAkBpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-library",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "description": "Local document knowledge base for DeepSeek Harness: library_add/remove/list, hybrid semantic+keyword library_search with diversity re-ranking, relevance filtering and lost-in-the-middle avoidance, citation-aware injection, library_cite_check and library_diagnose —SQLite-backed index via the storage domain, local embedding, zero model downloads",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,13 +29,14 @@
29
29
  "THIRD_PARTY_NOTICES.md",
30
30
  "SECURITY.md",
31
31
  "README.md",
32
- "README.zh.md",
33
- "README.es.md",
34
- "README.pt.md",
35
- "README.hi.md",
32
+ "README-zh.md",
33
+ "README-es.md",
34
+ "README-pt.md",
35
+ "README-hi.md",
36
36
  "LICENSE"
37
37
  ],
38
38
  "dsh": {
39
+ "manifestVersion": 1,
39
40
  "bundle": {
40
41
  "patch": "./cordis.patch.yml"
41
42
  }
@@ -66,7 +67,10 @@
66
67
  "native-code:none"
67
68
  ],
68
69
  "compatibility": {
69
- "dshVersions": ["0.1.2-rc.1","0.1.5-rc.1"]
70
+ "dshVersions": [
71
+ "0.1.2-rc.1",
72
+ "0.1.5-rc.2"
73
+ ]
70
74
  },
71
75
  "capability": {
72
76
  "id": "local-knowledge-library",
@@ -96,20 +100,21 @@
96
100
  "document-library"
97
101
  ],
98
102
  "engines": {
99
- "node": "^22.19.0 || >=24.0.0"
103
+ "node": "^22.19.0 || >=24.0.0",
104
+ "dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0"
100
105
  },
101
106
  "packageManager": "pnpm@11.7.0",
102
107
  "peerDependencies": {
103
108
  "@deepseek-ai/cordis": "^4.0.2",
104
- "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
105
- "@deepseek-ai/dsh-fs": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
106
- "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
107
- "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
108
- "@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
109
- "@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
110
- "@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
111
- "@deepseek-ai/dsh-subprocess": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
112
- "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
109
+ "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
110
+ "@deepseek-ai/dsh-fs": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
111
+ "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
112
+ "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
113
+ "@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
114
+ "@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
115
+ "@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
116
+ "@deepseek-ai/dsh-subprocess": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
117
+ "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
113
118
  "@deepseek-ai/schemastery": "^3.18.2"
114
119
  },
115
120
  "dependencies": {
@@ -118,22 +123,22 @@
118
123
  "zod": "^4.4.3"
119
124
  },
120
125
  "devDependencies": {
121
- "@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
126
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
122
127
  "@deepseek-ai/cordis": "^4.0.2",
123
128
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
124
129
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
125
- "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
126
- "@deepseek-ai/dsh-commands": "0.1.5-rc.1",
127
- "@deepseek-ai/dsh-fs": "0.1.5-rc.1",
128
- "@deepseek-ai/dsh-fs-local": "0.1.5-rc.1",
129
- "@deepseek-ai/dsh-llm": "0.1.5-rc.1",
130
- "@deepseek-ai/dsh-session": "0.1.5-rc.1",
131
- "@deepseek-ai/dsh-storage": "0.1.5-rc.1",
132
- "@deepseek-ai/dsh-storage-domain": "0.1.5-rc.1",
133
- "@deepseek-ai/dsh-storage-json": "0.1.5-rc.1",
134
- "@deepseek-ai/dsh-subprocess": "0.1.5-rc.1",
135
- "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.1",
136
- "@deepseek-ai/dsh-tools": "0.1.5-rc.1",
130
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
131
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
132
+ "@deepseek-ai/dsh-fs": "0.1.5-rc.2",
133
+ "@deepseek-ai/dsh-fs-local": "0.1.5-rc.2",
134
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
135
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
136
+ "@deepseek-ai/dsh-storage": "0.1.5-rc.2",
137
+ "@deepseek-ai/dsh-storage-domain": "0.1.5-rc.2",
138
+ "@deepseek-ai/dsh-storage-json": "0.1.5-rc.2",
139
+ "@deepseek-ai/dsh-subprocess": "0.1.5-rc.2",
140
+ "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
141
+ "@deepseek-ai/dsh-tools": "0.1.5-rc.2",
137
142
  "@deepseek-ai/schemastery": "^3.18.2",
138
143
  "@types/node": "^22.19.0",
139
144
  "@vitest/coverage-v8": "3.2.0",