dsh-auto-review 0.12.10 → 0.12.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 +13 -0
- package/README-es.md +20 -1
- package/README-hi.md +20 -1
- package/README-pt.md +20 -1
- package/README-zh.md +20 -1
- package/README.md +20 -1
- package/lib/index.js +2 -0
- package/lib/types/audit.d.ts.map +1 -1
- package/lib/types/audit.js +13 -0
- package/lib/types/audit.js.map +1 -1
- package/package.json +55 -54
- package/src/audit.ts +12 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ All notable changes to `dsh-auto-review` are documented here. The repo is pre-re
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.12.12] - 2026-10-05
|
|
8
|
+
|
|
9
|
+
Adds the versioned five-language **interoperability declaration** to the READMEs: the plugin records, against DSH `0.2.0-rc.2`, every injection point it owns and why none of them collide with another plugin — no tool-name, service-key, slot, HTTP-route, patch-layer or global-mutation overlap, and, for each ordering-sensitive event it listens on, that the listener delegates through `next()` so a shared waterfall chain is never short-circuited. Verified by `dsh-plugin-doctor` K10-K14 (checkset `R0-R8+K1-K14+D0-D3,D9+CC1-CC5/3`). Documentation only; no behaviour change.
|
|
10
|
+
|
|
11
|
+
## [0.12.11] - 2026-10-04
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Host pins move to `0.2.1-alpha.1`; re-verified against that host line. Every `@deepseek-ai/dsh-*` dev/test dependency now pins `0.2.1-alpha.1`, the `dshWorkshop.compatibility.dshVersions` timeline appends `0.2.1-alpha.1`, and the compatibility baseline in every README records the `dsh-v0.2.1-alpha.1` host. The declared host ranges (`engines.dsh` and the `peerDependencies` union) gain the `|| >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0` clauses: the previous upper bound was `<0.2.0`, which under semver rejects every 0.2.x host, so the probe host itself was not installable. Nothing was narrowed — the `0.1.x` clauses are unchanged, in place and in order.
|
|
17
|
+
|
|
18
|
+
## [0.12.10] - 2026-09-25
|
|
19
|
+
|
|
7
20
|
### Changed
|
|
8
21
|
|
|
9
22
|
- Host pins move to `0.1.7-rc.2`; re-verified against that host line. Every `@deepseek-ai/dsh-*` dev/test dependency now pins `0.1.7-rc.2`, the `dshWorkshop.compatibility.dshVersions` timeline appends `0.1.7-rc.2`, and the compatibility baseline in every README records the `dsh-v0.1.7-rc.2` host. The declared host ranges (`engines.dsh` and the `peerDependencies` union) are deliberately **unchanged** — they already admit `0.1.7-rc.2`, and a range is what the manifest accepts, not what has been tested.
|
package/README-es.md
CHANGED
|
@@ -37,7 +37,7 @@ Este plugin forma parte de la [familia de plugins DSH](https://github.com/PerryL
|
|
|
37
37
|
|
|
38
38
|
| Superficie | Estado |
|
|
39
39
|
|---|---|
|
|
40
|
-
| Harness | DeepSeek Harness `dsh-v0.1
|
|
40
|
+
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1` (verificado el 2026-09-25). Soporte npm de doble línea: pins de desarrollo y dependencias de runtime `0.1.7-rc.2`, peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0` — el código del plugin detecta las líneas de host publicadas (detección de características) y cada línea ejecuta la cadena completa de gates; las dependencias de runtime siguen la línea del host para que una instalación en un perfil nunca sombree el árbol del host. `pnpm-workspace.yaml` fija todo el grafo `@deepseek-ai/dsh-*` a esa línea, porque `autoInstallPeers` si no rellena los peers `^0.1.1-rc.2` del subgrafo congelado `dsh-agent-spine-demo` con previews que carecen de las exportaciones que importan los paquetes 0.1.7. En la línea alpha.2 los fixtures de eval fijan `deepseek-flash` (el id eliminado `deepseek-v4-flash` ya no aparece en `eval/`). |
|
|
41
41
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
42
42
|
| Plataformas | Todas (answerer de host; panel web opcional mediante la capacidad de proyección de sesión) |
|
|
43
43
|
| Modelo | Cualquiera (el revisor hereda la ruta del agente de sesión; `reviewerModel` la reemplaza) |
|
|
@@ -391,6 +391,25 @@ Todos los plugins de PerryLink pueden explorarse en el mercado integrado de DSH
|
|
|
391
391
|
[Apache License 2.0](LICENSE) © 2026 dsh-auto-review contributors
|
|
392
392
|
|
|
393
393
|
|
|
394
|
+
## Interoperabilidad con otros plugins de DSH
|
|
395
|
+
|
|
396
|
+
Verificado contra **DSH `0.2.0-rc.2`** (el runtime para el que se publica este README) y el conjunto de plugins con más estrellas sondeado el 2026-10-05.
|
|
397
|
+
|
|
398
|
+
Este plugin **no interfiere** con otros plugins, incluidos los de más estrellas:
|
|
399
|
+
|
|
400
|
+
- **Sin colisión de nombres de herramienta.** Todas las herramientas llevan espacio de nombres; ninguna ocupa un nombre desnudo ya perteneciente a una herramienta incluida u otro plugin.
|
|
401
|
+
- **Sin colisión de clave de servicio.** Solo provee `autoReviewRuntime`; esa clave no es una costura incluida ni la provee ningún plugin de más estrellas.
|
|
402
|
+
- **Sin colisión de slot.** No registra ninguna clave de slot de cliente, así que no disputa un asiento `shadows-shipped-ui`.
|
|
403
|
+
- **Sin colisión de ruta HTTP.** No registra ningún prefijo `webServer`.
|
|
404
|
+
- **Sin colisión en la capa de patch.** El patch del bundle solo hace `insert` de su propia fila; nunca sobrescribe el `config` de una fila incluida.
|
|
405
|
+
- **Sin mutación global.** No parchea prototipos, ni reescribe `process.env`, ni reemplaza el dispatcher global de fetch.
|
|
406
|
+
|
|
407
|
+
**Los listeners de eventos compartidos no interfieren por construcción.** Observa los eventos sensibles al orden `agent/pre-step`, `approval/request`, `tools/post-execute` con `ctx.on()` — el registro de difusión de Cordis, donde cada listener se ejecuta y ninguno puede dejar sin turno a otro. **Todos los listeners aquí delegan por `next()`**, así que la cadena nunca se cortocircuita:
|
|
408
|
+
- `agent/pre-step` — also used by `dsh-routing-suite` (7000★, 7 listeners), `modlens` (4122★), `dsh-purge` (3317★), `dsh-agent-teams` (1923★), `dsh-context` (1849★).
|
|
409
|
+
- `tools/post-execute` — also used by `cc-safety-net` (1576★).
|
|
410
|
+
|
|
411
|
+
Evidencia estática: `dsh-plugin-doctor` K10–K13 dan `pass` en todas las comprobaciones de este repositorio.
|
|
412
|
+
|
|
394
413
|
## PerryLink DSH Plugin Family
|
|
395
414
|
|
|
396
415
|
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
package/README-hi.md
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
| सतह | स्थिति |
|
|
39
39
|
|---|---|
|
|
40
|
-
| Harness | DeepSeek Harness `dsh-v0.1
|
|
40
|
+
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1` (2026-09-25 को सत्यापित)। दोहरी-लाइन npm समर्थन: dev पिन और रनटाइम निर्भरताएँ `0.1.7-rc.2`, peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0` — प्लगइन कोड प्रकाशित होस्ट लाइनों को फ़ीचर-डिटेक्ट करता है और हर लाइन पूरी गेट श्रृंखला चलाती है; रनटाइम निर्भरताएँ होस्ट लाइन का पालन करती हैं ताकि प्रोफ़ाइल इंस्टॉल होस्ट के अपने ट्री को शैडो न करें। `pnpm-workspace.yaml` पूरे `@deepseek-ai/dsh-*` ग्राफ़ को उस लाइन पर पिन करता है, क्योंकि अन्यथा `autoInstallPeers` फ़्रोज़न `dsh-agent-spine-demo` सबग्राफ़ के `^0.1.1-rc.2` peers को ऐसे प्रीव्यू से भर देता है जिनमें 0.1.7 पैकेज जिन निर्यातों को import करते हैं वे नहीं हैं। alpha.2 लाइन पर eval फ़िक्स्चर `deepseek-flash` पिन करते हैं (हटाया गया `deepseek-v4-flash` अब `eval/` में नहीं है)। |
|
|
41
41
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
42
42
|
| प्लेटफ़ॉर्म | सभी (होस्ट answerer; सत्र-प्रोजेक्शन क्षमता के ज़रिए वैकल्पिक वेब समीक्षा पैनल) |
|
|
43
43
|
| मॉडल | कोई भी (समीक्षक सत्र एजेंट का मार्ग विरासत में लेता है; `reviewerModel` उसे बदल देता है) |
|
|
@@ -240,6 +240,25 @@ suite:
|
|
|
240
240
|
dsh-eval eval/cases --model deepseek-flash --timeout-ms 240000 --out .eval-reports
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
+
## अन्य DSH प्लगइनों के साथ अंतर-संचालनीयता
|
|
244
|
+
|
|
245
|
+
**DSH `0.2.0-rc.2`** (वह रनटाइम जिसके लिए यह README प्रकाशित है) और 2026-10-05 को सर्वे किए गए उच्च-स्टार प्लगइन सेट के विरुद्ध सत्यापित।
|
|
246
|
+
|
|
247
|
+
यह प्लगइन अन्य प्लगइनों में **हस्तक्षेप नहीं करता**, उन उच्च-स्टार प्लगइनों सहित जो व्यापक रूप से इंस्टॉल हैं:
|
|
248
|
+
|
|
249
|
+
- **कोई टूल-नाम टकराव नहीं।** सभी टूल नेमस्पेस युक्त हैं; कोई भी ऐसा नंगा नाम नहीं लेता जो पहले से किसी अंतर्निहित टूल या अन्य प्लगइन का हो।
|
|
250
|
+
- **कोई सर्विस-की टकराव नहीं।** यह केवल `autoReviewRuntime` प्रदान करता है; यह key न अंतर्निहित सीम है और न किसी सर्वे किए गए उच्च-स्टार प्लगइन द्वारा प्रदान की जाती है।
|
|
251
|
+
- **कोई स्लॉट टकराव नहीं।** यह कोई क्लाइंट slot key पंजीकृत नहीं करता, इसलिए `shadows-shipped-ui` सीट के लिए प्रतिस्पर्धा नहीं करता।
|
|
252
|
+
- **कोई HTTP रूट टकराव नहीं।** यह कोई `webServer` प्रीफ़िक्स पंजीकृत नहीं करता।
|
|
253
|
+
- **कोई patch-लेयर टकराव नहीं।** बंडल patch केवल अपनी पंक्ति `insert` करता है; कभी किसी अंतर्निहित पंक्ति का `config` ओवरराइड नहीं करता।
|
|
254
|
+
- **कोई वैश्विक परिवर्तन नहीं।** यह प्रोटोटाइप नहीं बदलता, `process.env` नहीं लिखता, और वैश्विक fetch dispatcher प्रतिस्थापित नहीं करता।
|
|
255
|
+
|
|
256
|
+
**साझा ईवेंट लिसनर रचना से ही अहस्तक्षेपी हैं।** यह क्रम-संवेदनशील ईवेंट `agent/pre-step`, `approval/request`, `tools/post-execute` को `ctx.on()` से देखता है — Cordis का **ब्रॉडकास्ट** पंजीकरण, जहाँ हर लिसनर चलता है और कोई किसी दूसरे को वंचित नहीं कर सकता। **यहाँ प्रत्येक लिसनर `next()` से डेलिगेट करता है**, इसलिए श्रृंखला कभी शॉर्ट-सर्किट नहीं होती:
|
|
257
|
+
- `agent/pre-step` — also used by `dsh-routing-suite` (7000★, 7 listeners), `modlens` (4122★), `dsh-purge` (3317★), `dsh-agent-teams` (1923★), `dsh-context` (1849★).
|
|
258
|
+
- `tools/post-execute` — also used by `cc-safety-net` (1576★).
|
|
259
|
+
|
|
260
|
+
स्थैतिक प्रमाण: इस रिपॉज़िटरी पर `dsh-plugin-doctor` के K10–K13 सभी `pass` हैं।
|
|
261
|
+
|
|
243
262
|
## PerryLink DSH Plugin Family
|
|
244
263
|
|
|
245
264
|
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
package/README-pt.md
CHANGED
|
@@ -37,7 +37,7 @@ Este plugin faz parte da [família de plugins DSH](https://github.com/PerryLink)
|
|
|
37
37
|
|
|
38
38
|
| Superfície | Status |
|
|
39
39
|
|---|---|
|
|
40
|
-
| Harness | DeepSeek Harness `dsh-v0.1
|
|
40
|
+
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1` (verificado em 2026-09-25). Suporte npm de linha dupla: pins de desenvolvimento e dependências de runtime `0.1.7-rc.2`, peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0` — o código do plugin detecta as linhas de host publicadas (detecção de recursos) e cada linha executa a cadeia completa de gates; as dependências de runtime seguem a linha do host para que uma instalação em um perfil nunca sombreie a árvore do host. `pnpm-workspace.yaml` fixa todo o grafo `@deepseek-ai/dsh-*` nessa linha, porque `autoInstallPeers` caso contrário preenche os peers `^0.1.1-rc.2` do subgrafo congelado `dsh-agent-spine-demo` com previews que não têm as exportações que os pacotes 0.1.7 importam. Na linha alpha.2 os fixtures de eval fixam `deepseek-flash` (o id removido `deepseek-v4-flash` não aparece mais em `eval/`). |
|
|
41
41
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
42
42
|
| Plataformas | Todas (answerer de host; painel web opcional via capacidade de projeção de sessão) |
|
|
43
43
|
| Modelo | Qualquer (o revisor herda a rota do agente da sessão; `reviewerModel` sobrescreve) |
|
|
@@ -387,6 +387,25 @@ Layout do repositório: `src/index.ts` (contrato do plugin) · `src/config.ts` (
|
|
|
387
387
|
[Apache License 2.0](LICENSE) © 2026 dsh-auto-review contributors
|
|
388
388
|
|
|
389
389
|
|
|
390
|
+
## Interoperabilidade com outros plugins do DSH
|
|
391
|
+
|
|
392
|
+
Verificado contra **DSH `0.2.0-rc.2`** (o runtime para o qual este README é publicado) e o conjunto de plugins com mais estrelas pesquisado em 2026-10-05.
|
|
393
|
+
|
|
394
|
+
Este plugin **não interfere** em outros plugins, incluindo os de mais estrelas:
|
|
395
|
+
|
|
396
|
+
- **Sem colisão de nome de ferramenta.** Todas as ferramentas têm namespace; nenhuma ocupa um nome puro já pertencente a uma ferramenta embutida ou a outro plugin.
|
|
397
|
+
- **Sem colisão de chave de serviço.** Fornece apenas `autoReviewRuntime`; essa chave não é uma costura embutida nem é fornecida por nenhum plugin de mais estrelas.
|
|
398
|
+
- **Sem colisão de slot.** Não registra nenhuma chave de slot de cliente, então não disputa um assento `shadows-shipped-ui`.
|
|
399
|
+
- **Sem colisão de rota HTTP.** Não registra nenhum prefixo `webServer`.
|
|
400
|
+
- **Sem colisão na camada de patch.** O patch do bundle apenas faz `insert` da própria linha; nunca sobrescreve o `config` de uma linha embutida.
|
|
401
|
+
- **Sem mutação global.** Não altera protótipos, não reescreve `process.env` nem substitui o dispatcher global de fetch.
|
|
402
|
+
|
|
403
|
+
**Listeners de eventos compartilhados não interferem por construção.** Observa os eventos sensíveis à ordem `agent/pre-step`, `approval/request`, `tools/post-execute` com `ctx.on()` — o registro de difusão do Cordis, onde cada listener executa e nenhum pode privar outro do turno. **Todos os listeners aqui delegam via `next()`**, então a cadeia nunca é curto-circuitada:
|
|
404
|
+
- `agent/pre-step` — also used by `dsh-routing-suite` (7000★, 7 listeners), `modlens` (4122★), `dsh-purge` (3317★), `dsh-agent-teams` (1923★), `dsh-context` (1849★).
|
|
405
|
+
- `tools/post-execute` — also used by `cc-safety-net` (1576★).
|
|
406
|
+
|
|
407
|
+
Evidência estática: `dsh-plugin-doctor` K10–K13 retornam `pass` em todas as verificações deste repositório.
|
|
408
|
+
|
|
390
409
|
## PerryLink DSH Plugin Family
|
|
391
410
|
|
|
392
411
|
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
package/README-zh.md
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
| 方面 | 状态 |
|
|
39
39
|
|---|---|
|
|
40
|
-
| Harness | DeepSeek Harness `dsh-v0.1
|
|
40
|
+
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1`(2026-09-24 已核验)。双线 npm 支持:dev 钉号与运行时依赖均为 `0.1.7-rc.2`、peer 范围 `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0` —— 插件代码兼容各已发布宿主线(特性探测),各线均跑完整门禁链;运行时依赖钉号随宿主线,避免 profile 安装遮蔽宿主自带树。`pnpm-workspace.yaml` 把整张 `@deepseek-ai/dsh-*` 图钉到该线:否则 `autoInstallPeers` 会用缺少 0.1.7 包所需导出的预览版填补已冻结的 `dsh-agent-spine-demo` 子图的 `^0.1.1-rc.2` peer。alpha.2 线上 eval 夹具钉 `deepseek-flash`(已移除的 `deepseek-v4-flash` 不再出现在 `eval/`)。 |
|
|
41
41
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
42
42
|
| 平台 | 全部(宿主 answerer;可选 Web 审查面板,依赖会话投影能力) |
|
|
43
43
|
| 模型 | 任意(审查器默认继承会话代理的路由;`reviewerModel` 可覆盖) |
|
|
@@ -382,6 +382,25 @@ pnpm pack # 发布产物
|
|
|
382
382
|
- [@weipeng1999](https://github.com/weipeng1999) —— 提出审查器独立的 provider/model 路由([#11](https://github.com/PerryLink/dsh-auto-review/issues/11)、[讨论 #12](https://github.com/PerryLink/dsh-auto-review/discussions/12)),已落地为 `reviewerProvider` / `reviewerModel`。
|
|
383
383
|
- [@alexchenzl](https://github.com/alexchenzl) —— 将本插件收录进 DSH 插件目录([#10](https://github.com/PerryLink/dsh-auto-review/issues/10))。
|
|
384
384
|
|
|
385
|
+
## 与其他 DSH 插件的互操作
|
|
386
|
+
|
|
387
|
+
已对照 **DSH `0.2.0-rc.2`**(本 README 面向的运行时)与 2026-10-05 实测的高星插件集验证。
|
|
388
|
+
|
|
389
|
+
本插件**不干扰**其他插件,包括广泛安装的高星插件:
|
|
390
|
+
|
|
391
|
+
- **无工具名冲突。** 所有工具都带命名空间,不占用任何已被内置工具或其他插件持有的裸名。
|
|
392
|
+
- **无服务键冲突。** 只提供 `autoReviewRuntime`;该键既不是内置 seam,也没有被任何已调研的高星插件提供。
|
|
393
|
+
- **无 slot 冲突。** 不注册客户端 slot key,因此不参与 `shadows-shipped-ui` 座位争抢。
|
|
394
|
+
- **无 HTTP 路由冲突。** 不注册任何 `webServer` 前缀。
|
|
395
|
+
- **无 patch 层冲突。** 组合包 patch 只 `insert` 自己那一行,从不覆写内置行的 `config`。
|
|
396
|
+
- **无全局改写。** 不改原型、不改写 `process.env`、不替换全局 fetch dispatcher。
|
|
397
|
+
|
|
398
|
+
**共享事件监听器在构造上就不互相干扰。** 它用 `ctx.on()` 监听顺序敏感事件 `agent/pre-step`, `approval/request`, `tools/post-execute` —— Cordis 的**广播**语义:每个监听器都会运行,任何一个都无法饿死其他监听器。**此处每个监听器都通过 `next()` 委托**,因此链条绝不会被短路;改写作用在 `next()` 产出的值上,而不是用它顶替返回:
|
|
399
|
+
- `agent/pre-step` — also used by `dsh-routing-suite` (7000★, 7 listeners), `modlens` (4122★), `dsh-purge` (3317★), `dsh-agent-teams` (1923★), `dsh-context` (1849★).
|
|
400
|
+
- `tools/post-execute` — also used by `cc-safety-net` (1576★).
|
|
401
|
+
|
|
402
|
+
静态证据:`dsh-plugin-doctor` 的 K10–K13 在本仓全部为 `pass`。
|
|
403
|
+
|
|
385
404
|
## PerryLink DSH Plugin Family
|
|
386
405
|
|
|
387
406
|
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
|
|
40
40
|
| Surface | Status |
|
|
41
41
|
|---|---|
|
|
42
|
-
| Harness | DeepSeek Harness `dsh-v0.1
|
|
42
|
+
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1` (verified 2026-09-25). Dual-line npm support: dev pins and runtime deps `0.1.7-rc.2`, peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0` — the plugin code feature-detects the published host lines and each line runs the full gate chain; the runtime dependency pins follow the host line so a profile install never shadows the host's own tree. `pnpm-workspace.yaml` pins the whole `@deepseek-ai/dsh-*` graph to that line, because `autoInstallPeers` otherwise fills the frozen `dsh-agent-spine-demo` subgraph's `^0.1.1-rc.2` peers with previews that lack the exports the 0.1.7 packages import. On the alpha.2 line the eval fixtures pin `deepseek-flash` (the removed `deepseek-v4-flash` id is gone from `eval/`). |
|
|
43
43
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
44
44
|
| Platforms | All (host answerer; optional Web review panel via the session-projection capability) |
|
|
45
45
|
| Model | Any (the reviewer inherits the session agent's route; `reviewerModel` overrides) |
|
|
@@ -375,6 +375,25 @@ pnpm pack # the published tarball
|
|
|
375
375
|
|
|
376
376
|
Repository layout: `src/index.ts` (plugin contract) · `src/config.ts` (Schemastery schema + resolution) · `src/runtime.ts` (answerer, command, deny-reason injection) · `src/review.ts` (reviewer orchestration, prompt, sanitization) · `src/events.ts` (session-event vocabulary + folds) · `src/audit.ts` (host `ignorable`-marker capability detection) · `src/projection.ts` + `src/projection-types.ts` (the `autoReview` session projection) · `src/invariant.ts` (invariant companion) · `src/eval/` (the dsh-eval engine) · `eval/` (shipped evaluation composition) · `bin/dsh-eval.mjs` (CLI launcher) · `src/client/` (browser half) · `test/` · `fixtures/`.
|
|
377
377
|
|
|
378
|
+
## Interoperability with other DSH plugins
|
|
379
|
+
|
|
380
|
+
Verified against **DSH `0.2.0-rc.2`** (the runtime this README ships for) and the high-star plugin set surveyed on 2026-10-05.
|
|
381
|
+
|
|
382
|
+
This plugin **does not interfere** with other plugins, including the widely installed high-star ones:
|
|
383
|
+
|
|
384
|
+
- **No tool-name collision.** Every tool is namespaced; no bare name owned by a shipped tool or another plugin is registered.
|
|
385
|
+
- **No service-key collision.** It provides `autoReviewRuntime`; that key is not a built-in seam and is not provided by any surveyed high-star plugin.
|
|
386
|
+
- **No slot collision.** It registers no client slot key, so it cannot contend for a `shadows-shipped-ui` seat.
|
|
387
|
+
- **No HTTP route collision.** It registers no `webServer` prefix.
|
|
388
|
+
- **No patch-layer collision.** The bundle patch only `insert`s its own row; it never overrides a built-in row's `config`.
|
|
389
|
+
- **No global mutation.** It does not patch prototypes, rewrite `process.env`, or replace the global fetch dispatcher.
|
|
390
|
+
|
|
391
|
+
**Shared event listeners are non-interfering by construction.** It observes the ordering-sensitive events `agent/pre-step`, `approval/request`, `tools/post-execute` with `ctx.on()` — Cordis's broadcast registration, where every listener runs and none can starve another. **Every listener here delegates through `next()`**, so the chain is never short-circuited, and a mutation is applied to the value `next()` produced rather than returned in its place:
|
|
392
|
+
- `agent/pre-step` — also used by `dsh-routing-suite` (7000★, 7 listeners), `modlens` (4122★), `dsh-purge` (3317★), `dsh-agent-teams` (1923★), `dsh-context` (1849★).
|
|
393
|
+
- `tools/post-execute` — also used by `cc-safety-net` (1576★).
|
|
394
|
+
|
|
395
|
+
Static evidence: `dsh-plugin-doctor` K10–K13 report `pass` for every check on this repository.
|
|
396
|
+
|
|
378
397
|
## Topics
|
|
379
398
|
|
|
380
399
|
`deepseek-harness`, `dsh`, `dsh-plugin`, `cordis`, `approval`, `auto-review`, `second-model`, `ai-safety`, `sandbox`, `subagent`
|
package/lib/index.js
CHANGED
|
@@ -81,6 +81,8 @@ function isUnmarkedHostVersion(version) {
|
|
|
81
81
|
}
|
|
82
82
|
const line = /^0\.1\.(\d+)(?:-.*)?$/.exec(v);
|
|
83
83
|
if (line !== null) return Number(line[1]) >= 2;
|
|
84
|
+
const rc02 = /^0\.2\.(\d+)-/.exec(v);
|
|
85
|
+
if (rc02 !== null) return Number(rc02[1]) >= 0;
|
|
84
86
|
return false;
|
|
85
87
|
}
|
|
86
88
|
/**
|
package/lib/types/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,sGAAsG;AACtG,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;AAElE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,sGAAsG;AACtG,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;AAElE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsC9D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAOlD"}
|
package/lib/types/audit.js
CHANGED
|
@@ -91,6 +91,19 @@ export function isUnmarkedHostVersion(version) {
|
|
|
91
91
|
// fail-closed is the safe direction.
|
|
92
92
|
if (line !== null)
|
|
93
93
|
return Number(line[1]) >= 2;
|
|
94
|
+
// The 0.2 corridor is non-stamping too, verified 2026-10-04 against the
|
|
95
|
+
// published `0.2.1-alpha.1` `dsh-session`: `append(type, data, ...opts)`
|
|
96
|
+
// reads only `sourceEventSeqs`/`surfaceOp` out of the options bag and builds
|
|
97
|
+
// the envelope as `{ type, seq, time, data }` plus that surface metadata, so
|
|
98
|
+
// `{ ignorable: true }` is dropped and the event lands unmarked. Without this
|
|
99
|
+
// clause the line falls through to the "possibly marker-aware" path, whose
|
|
100
|
+
// append probe writes one unmarked event into the log BEFORE discovering the
|
|
101
|
+
// host cannot stamp — the exact pollution this guard exists to prevent.
|
|
102
|
+
// Only PRERELEASES are classified here: a stable `0.2.x` may yet add the
|
|
103
|
+
// append option, and that must fail open into the probe instead.
|
|
104
|
+
const rc02 = /^0\.2\.(\d+)-/.exec(v);
|
|
105
|
+
if (rc02 !== null)
|
|
106
|
+
return Number(rc02[1]) >= 0;
|
|
94
107
|
return false;
|
|
95
108
|
}
|
|
96
109
|
/**
|
package/lib/types/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAK3C;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAK,MAAkC,CAAC,SAAS,KAAK,IAAI,CAAA;AAChH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,wEAAwE;QACxE,yEAAyE;QACzE,kEAAkE;QAClE,iEAAiE;QACjE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,8DAA8D;QAC9D,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,yEAAyE;IACzE,wEAAwE;IACxE,qCAAqC;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,uCAAuC,CAA0B,CAAA;QAC5G,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAK3C;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAK,MAAkC,CAAC,SAAS,KAAK,IAAI,CAAA;AAChH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,wEAAwE;QACxE,yEAAyE;QACzE,kEAAkE;QAClE,iEAAiE;QACjE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,8DAA8D;QAC9D,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,yEAAyE;IACzE,wEAAwE;IACxE,qCAAqC;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9C,wEAAwE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,uCAAuC,CAA0B,CAAA;QAC5G,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-auto-review",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.12",
|
|
4
4
|
"description": "Second-model AI auto-review for DeepSeek Harness approval requests: a read-only reviewer subagent decides allow/deny on the approval answerer chain, with fail-closed fallback and full session-log audit.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": {
|
|
@@ -111,7 +111,8 @@
|
|
|
111
111
|
"0.1.5-rc.2",
|
|
112
112
|
"0.1.7-alpha.2",
|
|
113
113
|
"0.1.7-rc.1",
|
|
114
|
-
"0.1.7-rc.2"
|
|
114
|
+
"0.1.7-rc.2",
|
|
115
|
+
"0.2.1-alpha.1"
|
|
115
116
|
]
|
|
116
117
|
},
|
|
117
118
|
"capability": {
|
|
@@ -141,25 +142,25 @@
|
|
|
141
142
|
],
|
|
142
143
|
"engines": {
|
|
143
144
|
"node": "^22.19.0 || >=24.0.0",
|
|
144
|
-
"dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0"
|
|
145
|
+
"dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0"
|
|
145
146
|
},
|
|
146
147
|
"peerDependencies": {
|
|
147
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
148
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
149
|
-
"@deepseek-ai/dsh-brand": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
150
|
-
"@deepseek-ai/dsh-client-connection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
151
|
-
"@deepseek-ai/dsh-client-locale": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
152
|
-
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
153
|
-
"@deepseek-ai/dsh-client-ui-slots": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
154
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
155
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
156
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
157
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
158
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
159
|
-
"@deepseek-ai/dsh-subagent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
160
|
-
"@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 || >=0.1.7-0 <0.2.0",
|
|
161
|
-
"@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0",
|
|
162
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
148
|
+
"@deepseek-ai/cordis": "^4.0.5-alpha.1",
|
|
149
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
150
|
+
"@deepseek-ai/dsh-brand": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
151
|
+
"@deepseek-ai/dsh-client-connection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
152
|
+
"@deepseek-ai/dsh-client-locale": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
153
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
154
|
+
"@deepseek-ai/dsh-client-ui-slots": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
155
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
156
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
157
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
158
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
159
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
160
|
+
"@deepseek-ai/dsh-subagent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
161
|
+
"@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 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
162
|
+
"@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
|
|
163
|
+
"@deepseek-ai/schemastery": "^3.18.5-alpha.1"
|
|
163
164
|
},
|
|
164
165
|
"peerDependenciesMeta": {
|
|
165
166
|
"@deepseek-ai/dsh-client-connection": {
|
|
@@ -176,48 +177,48 @@
|
|
|
176
177
|
}
|
|
177
178
|
},
|
|
178
179
|
"dependencies": {
|
|
179
|
-
"@deepseek-ai/dsh-app-boot": "0.1
|
|
180
|
-
"@deepseek-ai/dsh-credentials-local": "0.1
|
|
181
|
-
"@deepseek-ai/dsh-fs-observation-policy": "0.1
|
|
182
|
-
"@deepseek-ai/dsh-fs-sandbox": "0.1
|
|
183
|
-
"@deepseek-ai/dsh-home-paths": "0.1
|
|
184
|
-
"@deepseek-ai/dsh-llm-deepseek": "0.1
|
|
185
|
-
"@deepseek-ai/dsh-sandbox-local": "0.1
|
|
186
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.1
|
|
187
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1
|
|
188
|
-
"@deepseek-ai/dsh-subagent-fork-in-process": "0.1
|
|
189
|
-
"@deepseek-ai/dsh-subagent-spawn-in-process": "0.1
|
|
190
|
-
"@deepseek-ai/dsh-subprocess-local": "0.1
|
|
191
|
-
"@deepseek-ai/dsh-tool-fs": "0.1
|
|
192
|
-
"@deepseek-ai/dsh-tool-fs-search": "0.1
|
|
180
|
+
"@deepseek-ai/dsh-app-boot": "0.2.1-alpha.1",
|
|
181
|
+
"@deepseek-ai/dsh-credentials-local": "0.2.1-alpha.1",
|
|
182
|
+
"@deepseek-ai/dsh-fs-observation-policy": "0.2.1-alpha.1",
|
|
183
|
+
"@deepseek-ai/dsh-fs-sandbox": "0.2.1-alpha.1",
|
|
184
|
+
"@deepseek-ai/dsh-home-paths": "0.2.1-alpha.1",
|
|
185
|
+
"@deepseek-ai/dsh-llm-deepseek": "0.2.1-alpha.1",
|
|
186
|
+
"@deepseek-ai/dsh-sandbox-local": "0.2.1-alpha.1",
|
|
187
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.1",
|
|
188
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.1",
|
|
189
|
+
"@deepseek-ai/dsh-subagent-fork-in-process": "0.2.1-alpha.1",
|
|
190
|
+
"@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-alpha.1",
|
|
191
|
+
"@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.1",
|
|
192
|
+
"@deepseek-ai/dsh-tool-fs": "0.2.1-alpha.1",
|
|
193
|
+
"@deepseek-ai/dsh-tool-fs-search": "0.2.1-alpha.1",
|
|
193
194
|
"tsdown": "^0.23.0",
|
|
194
195
|
"typescript": "^7.0.2",
|
|
195
196
|
"yaml": "^2.8.2",
|
|
196
197
|
"zod": "^4.4.3"
|
|
197
198
|
},
|
|
198
199
|
"devDependencies": {
|
|
199
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
200
|
-
"@deepseek-ai/cordis-plugin-group": "^1.0.
|
|
201
|
-
"@deepseek-ai/cordis-plugin-include": "^1.0.
|
|
202
|
-
"@deepseek-ai/cordis-plugin-loader": "^1.0.
|
|
203
|
-
"@deepseek-ai/dsh-agent": "0.1
|
|
200
|
+
"@deepseek-ai/cordis": "^4.0.5-alpha.1",
|
|
201
|
+
"@deepseek-ai/cordis-plugin-group": "^1.0.5-alpha.1",
|
|
202
|
+
"@deepseek-ai/cordis-plugin-include": "^1.0.10-alpha.1",
|
|
203
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.6-alpha.1",
|
|
204
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
|
|
204
205
|
"@deepseek-ai/dsh-agent-spine-demo": "0.1.1-rc.2",
|
|
205
|
-
"@deepseek-ai/dsh-api-remotes": "0.1
|
|
206
|
-
"@deepseek-ai/dsh-brand": "0.1
|
|
207
|
-
"@deepseek-ai/dsh-client-connection": "0.1
|
|
208
|
-
"@deepseek-ai/dsh-client-locale": "0.1
|
|
209
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1
|
|
210
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1
|
|
211
|
-
"@deepseek-ai/dsh-commands": "0.1
|
|
212
|
-
"@deepseek-ai/dsh-invariants": "0.
|
|
213
|
-
"@deepseek-ai/dsh-llm": "0.1
|
|
214
|
-
"@deepseek-ai/dsh-session": "0.1
|
|
215
|
-
"@deepseek-ai/dsh-session-format-catalog": "0.1
|
|
216
|
-
"@deepseek-ai/dsh-session-projection": "0.1
|
|
217
|
-
"@deepseek-ai/dsh-subagent": "0.1
|
|
218
|
-
"@deepseek-ai/dsh-tools": "0.1
|
|
219
|
-
"@deepseek-ai/dsh-user-approval": "0.1
|
|
220
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
206
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.1",
|
|
207
|
+
"@deepseek-ai/dsh-brand": "0.2.1-alpha.1",
|
|
208
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-alpha.1",
|
|
209
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-alpha.1",
|
|
210
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.1",
|
|
211
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.1",
|
|
212
|
+
"@deepseek-ai/dsh-commands": "0.2.1-alpha.1",
|
|
213
|
+
"@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
|
|
214
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.1",
|
|
215
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.1",
|
|
216
|
+
"@deepseek-ai/dsh-session-format-catalog": "0.2.1-alpha.1",
|
|
217
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.1",
|
|
218
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.1",
|
|
219
|
+
"@deepseek-ai/dsh-tools": "0.2.1-alpha.1",
|
|
220
|
+
"@deepseek-ai/dsh-user-approval": "0.2.1-alpha.1",
|
|
221
|
+
"@deepseek-ai/schemastery": "^3.18.5-alpha.1",
|
|
221
222
|
"@types/node": "^26.2.0",
|
|
222
223
|
"@types/react": "19.3.0",
|
|
223
224
|
"@vitest/coverage-v8": "5.0.0",
|
package/src/audit.ts
CHANGED
|
@@ -96,6 +96,18 @@ export function isUnmarkedHostVersion(version: string): boolean {
|
|
|
96
96
|
// stable `0.1.x` cannot be distinguished from its prereleases here, and
|
|
97
97
|
// fail-closed is the safe direction.
|
|
98
98
|
if (line !== null) return Number(line[1]) >= 2
|
|
99
|
+
// The 0.2 corridor is non-stamping too, verified 2026-10-04 against the
|
|
100
|
+
// published `0.2.1-alpha.1` `dsh-session`: `append(type, data, ...opts)`
|
|
101
|
+
// reads only `sourceEventSeqs`/`surfaceOp` out of the options bag and builds
|
|
102
|
+
// the envelope as `{ type, seq, time, data }` plus that surface metadata, so
|
|
103
|
+
// `{ ignorable: true }` is dropped and the event lands unmarked. Without this
|
|
104
|
+
// clause the line falls through to the "possibly marker-aware" path, whose
|
|
105
|
+
// append probe writes one unmarked event into the log BEFORE discovering the
|
|
106
|
+
// host cannot stamp — the exact pollution this guard exists to prevent.
|
|
107
|
+
// Only PRERELEASES are classified here: a stable `0.2.x` may yet add the
|
|
108
|
+
// append option, and that must fail open into the probe instead.
|
|
109
|
+
const rc02 = /^0\.2\.(\d+)-/.exec(v)
|
|
110
|
+
if (rc02 !== null) return Number(rc02[1]) >= 0
|
|
99
111
|
return false
|
|
100
112
|
}
|
|
101
113
|
|