dsh-doublecheck 0.9.11 → 0.9.13
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 +20 -0
- package/README-es.md +14 -3
- package/README-hi.md +14 -3
- package/README-pt.md +14 -3
- package/README-zh.md +14 -3
- package/README.md +13 -3
- package/lib/guard/index.js +7 -2
- package/lib/session-events.d.ts +2 -0
- package/lib/session-events.js +7 -1
- package/package.json +17 -11
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to dsh-doublecheck are recorded here, newest first.
|
|
4
4
|
|
|
5
|
+
## [0.9.13] - 2026-09-19
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `pnpm run check:lockfile` (`scripts/check-lockfile-drift.mjs`) fails fast when `package.json` and `pnpm-lock.yaml` disagree; the probe is read-only and the documented checks chain runs it alongside the other gates.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- The release workflow now publishes through **npm trusted publishing** (OIDC) instead of the long-lived `NPM_TOKEN` secret: `setup-node` no longer sets `registry-url` (its empty `_authToken` line made the registry answer 404 on PUT), npm is upgraded to >= 11.5.1 before publishing, and the "NPM_TOKEN is not set -> skip" guard is gone so a missing publisher cannot turn a release into a silent no-op.
|
|
14
|
+
## [0.9.12] - 2026-09-18
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **A `gate` configuration change now really takes effect after a reload.** The `doublecheck` session projection was registered without holding the disposer the projection registry returns, so a config hot-reload left the previous closure live: turning the delivery gate (or any detection knob) off and on again kept judging with the stale definitions — a silent false-safety window, and a hard throw the moment the projection state version moved. The registration is now owned by an effect, exactly like the invariant companion, and a regression test proves both halves: dispose releases the old registration, and a remount folds with the new detection.
|
|
19
|
+
- A session that exposes neither `snapshotEvents()` nor a legacy `events` array now fails loud instead of folding an empty log. The silent empty read turned every discipline fold into a wrong "nothing happened" conclusion (no spec required, no red test on record) rather than an error.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Declare `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh` range (`>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0`); every `@deepseek-ai/dsh-*` peer already carried the third clause. Declarative only — no reader changes behavior.
|
|
24
|
+
|
|
5
25
|
## [0.9.11] - 2026-09-12
|
|
6
26
|
|
|
7
27
|
### Changed
|
package/README-es.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Los requisitos se interrogan antes de la primera edición; la entrega se demuestra, nunca se afirma.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Superficie | Estado |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verificado el 2026-09-18 (doble typecheck + suite completa en verde); el rango de peers admite `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` y `0.1.6-alpha.2`, así que no se pierde ninguna línea soportada. |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Todas (host puro; sin código nativo, sin solicitudes de red directas propias) |
|
|
32
33
|
| Modelo | Cualquiera (el guard nunca llama a un modelo; las fases de crítico y revisor se ejecutan como subagentes del harness) |
|
|
@@ -257,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
257
258
|
|
|
258
259
|
## PerryLink DSH Plugin Family
|
|
259
260
|
|
|
260
|
-
Este proyecto es uno de los [
|
|
261
|
+
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:
|
|
261
262
|
|
|
262
263
|
| Plugin | One-liner |
|
|
263
264
|
|---|---|
|
|
@@ -287,6 +288,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
287
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
288
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
|
|
289
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
290
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
291
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
292
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
|
|
@@ -296,7 +298,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
296
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
297
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
|
|
298
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
299
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
|
|
302
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
+
| **[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 | |
|
|
310
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
300
311
|
|
|
301
312
|
### Instalar desde el mercado de DSH Desktop
|
|
302
313
|
|
package/README-hi.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*पहली एडिट से पहले आवश्यकताओं की पड़ताल होती है; डिलीवरी साबित की जाती है, दावा नहीं किया जाता।*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| सतह | स्थिति |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`। 2026-09-18 को सत्यापित (दोहरा typecheck + पूरी टेस्ट सूट हरी); peer रेंज `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` और `0.1.6-alpha.2` को स्वीकार करती है, इसलिए कोई समर्थित लाइन नहीं छूटती। |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| प्लेटफ़ॉर्म | सभी (शुद्ध host; कोई नेटिव कोड नहीं, स्वयं का कोई सीधा नेटवर्क अनुरोध नहीं) |
|
|
32
33
|
| मॉडल | कोई भी (guard स्वयं कभी मॉडल नहीं बुलाता; critic और reviewer चरण harness subagent के रूप में चलते हैं) |
|
|
@@ -257,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
257
258
|
|
|
258
259
|
## PerryLink DSH Plugin Family
|
|
259
260
|
|
|
260
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [
|
|
261
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
261
262
|
|
|
262
263
|
| Plugin | One-liner |
|
|
263
264
|
|---|---|
|
|
@@ -287,6 +288,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
287
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
288
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
|
|
289
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
290
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
291
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
292
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | टिकाऊ क्रम के साथ वेब साइडबार में सत्र पिन करें | |
|
|
@@ -296,7 +298,16 @@ pnpm run pack:check # build + pack the tarball
|
|
|
296
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
297
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
|
|
298
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
299
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
|
|
302
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
+
| **[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 | |
|
|
310
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
300
311
|
|
|
301
312
|
### DSH Desktop मार्केट से इंस्टॉल करें
|
|
302
313
|
|
package/README-pt.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Os requisitos são interrogados antes da primeira edição; a entrega é comprovada, nunca afirmada.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Superfície | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verificado em 2026-09-18 (typecheck duplo + suíte completa verde); o intervalo de peers admite `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` e `0.1.6-alpha.2`, então nenhuma linha suportada é perdida. |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Todas (host puro; sem código nativo, sem requisições de rede diretas próprias) |
|
|
32
33
|
| Modelo | Qualquer (o guard nunca chama um modelo; as fases de crítico e revisor rodam como subagentes do harness) |
|
|
@@ -257,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
257
258
|
|
|
258
259
|
## PerryLink DSH Plugin Family
|
|
259
260
|
|
|
260
|
-
Este projeto é um dos [
|
|
261
|
+
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:
|
|
261
262
|
|
|
262
263
|
| Plugin | One-liner |
|
|
263
264
|
|---|---|
|
|
@@ -287,6 +288,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
287
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
288
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
289
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
290
292
|
| **[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 | |
|
|
291
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
292
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
|
|
@@ -296,7 +298,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
296
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
297
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
298
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
299
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
302
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
+
| **[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 | |
|
|
310
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
300
311
|
|
|
301
312
|
### Instalar a partir do mercado do DSH Desktop
|
|
302
313
|
|
package/README-zh.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*需求在第一次改动之前就被拷问清楚;交付是被证明的,而不是被口头宣称的。*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| 方面 | 状态 |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`。已于 2026-09-18 核验(双 typecheck 尺子 + 全量测试绿);peer 区间接纳 `0.1.2-rc.1`、`0.1.5-alpha.1`、`0.1.5-rc.2` 与 `0.1.6-alpha.2`,不丢任何已支持宿主线。 |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| 平台 | 全部(纯宿主;无原生代码,自身无直接网络请求) |
|
|
32
33
|
| 模型 | 任意(守卫本身从不调用模型;评审与批评阶段作为宿主 subagent 运行) |
|
|
@@ -257,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
257
258
|
|
|
258
259
|
## PerryLink DSH Plugin Family
|
|
259
260
|
|
|
260
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [
|
|
261
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
261
262
|
|
|
262
263
|
| Plugin | One-liner |
|
|
263
264
|
|---|---|
|
|
@@ -287,6 +288,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
287
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
288
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
289
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
290
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
291
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
292
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
@@ -296,7 +298,16 @@ pnpm run pack:check # build + pack the tarball
|
|
|
296
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
297
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
298
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
299
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
302
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
+
| **[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 | |
|
|
310
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
300
311
|
|
|
301
312
|
### 从 DSH Desktop 市场安装
|
|
302
313
|
|
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
| Surface | Status |
|
|
29
29
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verified 2026-09-18 (dual typecheck rulers + full test suite green); the peer range admits `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` and `0.1.6-alpha.2`, so no supported host line is dropped. |
|
|
31
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
32
|
| Platforms | All (pure host; no native code, no direct network requests of its own) |
|
|
33
33
|
| Model | Any (the guard itself never calls a model; the critic and reviewer phases run as harness subagents) |
|
|
@@ -258,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
258
258
|
|
|
259
259
|
## PerryLink DSH Plugin Family
|
|
260
260
|
|
|
261
|
-
This project is one of the [
|
|
261
|
+
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:
|
|
262
262
|
|
|
263
263
|
| Plugin | One-liner |
|
|
264
264
|
|---|---|
|
|
@@ -288,6 +288,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
288
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
289
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with top-bar toggle (framework edition) |
|
|
290
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
291
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
292
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
293
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
@@ -297,7 +298,16 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
297
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
298
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
299
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
300
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
|
|
302
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
+
| **[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 | |
|
|
310
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
301
311
|
|
|
302
312
|
### Install from the DSH Desktop Market
|
|
303
313
|
|
package/lib/guard/index.js
CHANGED
|
@@ -545,7 +545,12 @@ export function apply(ctx, config) {
|
|
|
545
545
|
const registry = projectionCtx.get('sessionProjections');
|
|
546
546
|
if (registry === undefined)
|
|
547
547
|
return;
|
|
548
|
-
registry
|
|
548
|
+
// The registry returns the disposer that unregisters this projection; it
|
|
549
|
+
// MUST be owned by an effect. Registering without holding it left the old
|
|
550
|
+
// closure live after a config hot-reload: turning `gate` (or any detection
|
|
551
|
+
// knob) off and on again kept judging with the stale definitions — a
|
|
552
|
+
// silent false-safety window, and a hard throw once the state version moved.
|
|
553
|
+
projectionCtx.effect(() => registry.register({
|
|
549
554
|
key: 'doublecheck',
|
|
550
555
|
stateSchema: doublecheckStateSchema,
|
|
551
556
|
init: emptyDoublecheckState,
|
|
@@ -555,7 +560,7 @@ export function apply(ctx, config) {
|
|
|
555
560
|
view: viewDoublecheck,
|
|
556
561
|
},
|
|
557
562
|
stateVersion: 2,
|
|
558
|
-
});
|
|
563
|
+
}), 'dsh-doublecheck: projection');
|
|
559
564
|
});
|
|
560
565
|
// The invariant companion, registered from the main plugin so its checks
|
|
561
566
|
// see the live detection knobs. Activates only when an invariant registry
|
package/lib/session-events.d.ts
CHANGED
|
@@ -14,5 +14,7 @@ export type SessionEventsSource = Session | {
|
|
|
14
14
|
* The current event snapshot of one session, whichever harness line owns it.
|
|
15
15
|
* @param session - the host Session (or a fixture-shaped session in tests).
|
|
16
16
|
* @returns a frozen full log snapshot on alpha.5+, the `.events` array earlier.
|
|
17
|
+
* @throws when the object exposes neither read face: an empty log would turn
|
|
18
|
+
* every fold into a wrong "nothing happened" conclusion instead of an error.
|
|
17
19
|
*/
|
|
18
20
|
export declare function sessionEvents(session: SessionEventsSource | null | undefined): readonly SessionEvent[];
|
package/lib/session-events.js
CHANGED
|
@@ -9,11 +9,17 @@
|
|
|
9
9
|
* The current event snapshot of one session, whichever harness line owns it.
|
|
10
10
|
* @param session - the host Session (or a fixture-shaped session in tests).
|
|
11
11
|
* @returns a frozen full log snapshot on alpha.5+, the `.events` array earlier.
|
|
12
|
+
* @throws when the object exposes neither read face: an empty log would turn
|
|
13
|
+
* every fold into a wrong "nothing happened" conclusion instead of an error.
|
|
12
14
|
*/
|
|
13
15
|
export function sessionEvents(session) {
|
|
14
16
|
if (session === null || session === undefined)
|
|
15
17
|
return [];
|
|
16
18
|
if (typeof session.snapshotEvents === 'function')
|
|
17
19
|
return session.snapshotEvents();
|
|
18
|
-
|
|
20
|
+
const legacy = session.events;
|
|
21
|
+
if (legacy !== undefined)
|
|
22
|
+
return legacy;
|
|
23
|
+
throw new Error('dsh-doublecheck: the session exposes neither snapshotEvents() nor an events array — '
|
|
24
|
+
+ 'the discipline folds cannot read the log (pass a real Session, not a partial shape)');
|
|
19
25
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-doublecheck",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.13",
|
|
4
4
|
"description": "Delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery, and gate the handoff with a deliverable/rework decision.",
|
|
5
5
|
"packageManager": "pnpm@11.7.0",
|
|
6
6
|
"repository": {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"test": "vitest run",
|
|
64
64
|
"test:coverage": "vitest run --coverage",
|
|
65
65
|
"verify:skills": "node scripts/verify-skills.mjs",
|
|
66
|
+
"check:lockfile": "node scripts/check-lockfile-drift.mjs",
|
|
66
67
|
"check:readmes": "node scripts/check-readme-sync.mjs",
|
|
67
68
|
"verify:self-contained": "node scripts/verify-self-contained.mjs",
|
|
68
69
|
"verify:artifacts": "node scripts/verify-artifacts.mjs",
|
|
@@ -82,9 +83,11 @@
|
|
|
82
83
|
"author": "PerryLink",
|
|
83
84
|
"license": "Apache-2.0",
|
|
84
85
|
"engines": {
|
|
85
|
-
"node": "^22.19.0 || >=24.0.0"
|
|
86
|
+
"node": "^22.19.0 || >=24.0.0",
|
|
87
|
+
"dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0"
|
|
86
88
|
},
|
|
87
89
|
"dsh": {
|
|
90
|
+
"manifestVersion": 1,
|
|
88
91
|
"bundle": {
|
|
89
92
|
"patch": "./cordis.patch.yml"
|
|
90
93
|
}
|
|
@@ -111,7 +114,10 @@
|
|
|
111
114
|
"filesystem:write"
|
|
112
115
|
],
|
|
113
116
|
"compatibility": {
|
|
114
|
-
"dshVersions": [
|
|
117
|
+
"dshVersions": [
|
|
118
|
+
"0.1.2-rc.1",
|
|
119
|
+
"0.1.5-rc.2"
|
|
120
|
+
]
|
|
115
121
|
},
|
|
116
122
|
"capability": {
|
|
117
123
|
"id": "doublecheck",
|
|
@@ -128,14 +134,14 @@
|
|
|
128
134
|
},
|
|
129
135
|
"peerDependencies": {
|
|
130
136
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
131
|
-
"@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
132
|
-
"@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
133
|
-
"@deepseek-ai/dsh-invariants": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
134
|
-
"@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
135
|
-
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
136
|
-
"@deepseek-ai/dsh-session-projection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
137
|
-
"@deepseek-ai/dsh-skill": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
138
|
-
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
137
|
+
"@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
138
|
+
"@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",
|
|
139
|
+
"@deepseek-ai/dsh-invariants": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
140
|
+
"@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",
|
|
141
|
+
"@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",
|
|
142
|
+
"@deepseek-ai/dsh-session-projection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
143
|
+
"@deepseek-ai/dsh-skill": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
144
|
+
"@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",
|
|
139
145
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
140
146
|
},
|
|
141
147
|
"dependencies": {
|