dsh-permission-rules 0.6.9 → 0.6.10

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
@@ -1,3 +1,21 @@
1
+ ## v0.6.10 - 2026-09-04
2
+
3
+ ### Fixed
4
+
5
+ - `isUnmarkedHostVersion` now classifies the `0.1.2-rc` line as non-stamping: `0.1.2-rc.1` ships the alpha.5 surface (the third `Session.append` parameter is `SurfaceIntent` for surface event types only, so no rc build in the `0.1.2` minor stamps the marker). Previously `0.1.2-rc.1` fell through both regexes and was probed as marker-aware, so the first decision appended an unmarked event that pollutes the session log before the probe degrades audit.
6
+ - `isUnmarkedHostVersion` now also classifies the `0.1.3-alpha` line as non-stamping (it keeps the same surface-only append signature, verified against the `dsh-v0.1.3-alpha.1` tag) and every rc build in minor 2 and later (defensive; over-refusal is harmless because `allowUnmarkedAudit` opts back in).
7
+ - `scripts/repair-session-logs.mjs` syncs its `KNOWN_SESSION_EVENT_TYPES` copy with the harness catalog (adds `model/selection`, `session-log-deepseek/delivery-accepted`, `subagent/model-selection-policy`, `team/member`, `team/message/delivered`, `team/message/queued`, `team/task`) so `scan` stops misreporting those rows as foreign.
8
+
9
+ ### Changed
10
+
11
+ - Dev pins move from the published dsh `0.1.2-alpha.5` line to `0.1.2-rc.1` (17 `@deepseek-ai/dsh-*` packages); `dshWorkshop.compatibility.dshVersions` and the compat workflow's CLI/base/headless installs now target `0.1.2-rc.1`.
12
+ - Repack the vendored `dsh-auto-review` sibling tarball at `0.10.3` and repoint the `file:` devDependency.
13
+ - `scripts/repair-session-logs.mjs` discovers v2 log generations (`session.v2.jsonl[.zstd]`, written by the `0.1.3-alpha` line) and carries the `assistant/attempt` type alongside `assistant/chunk` (the harness v2 catalog swapped the two). Its docs now state that v1 logs must be `strip`ped before a v2 host opens them: the v1→v2 migration refuses unknown v1 events even when marked `ignorable: true`, while v2 logs accept `repair`-stamped rows.
14
+
15
+ ### Docs
16
+
17
+ - Five-language READMEs: the harness compatibility row states `0.1.2-rc.1` and the audit-marker limitation covers the `0.1.2-rc` and `0.1.3-alpha` lines (plus the v1-strip-before-v2-migration guidance); AGENTS.md facts updated (pinned rc.1 dev peers, 0.10.3 tarball, 0.1.3-alpha pre-check, v2 repair semantics).
18
+
1
19
  ## v0.6.9 - 2026-09-03
2
20
 
3
21
  ### Changed
package/README.es.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  | Surface | Status |
27
27
  |---|---|
28
- | Harness | DeepSeek Harness `0.1.2-alpha.5` (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. |
28
+ | Harness | DeepSeek Harness `0.1.2-rc.1` (adaptado el 2026-09-04): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia y la línea `0.1.2-rc` se preverifica como no marcada. |
29
29
  | Node | `^22.19.0 || >=24.0.0` |
30
30
  | Platforms | Todas (host + cliente web de settings) |
31
31
  | Model | Cualquiera (las razones deny/ask se muestran a través de los resultados de herramienta) |
@@ -169,7 +169,7 @@ Todos los parámetros son campos Schemastery `Config` (modificables desde cordis
169
169
 
170
170
  ## Known limitations
171
171
 
172
- - **Marcador de auditoría en hosts previos al marcador o que rechazan eventos.** `permissionRules/decision` se anexa con `ignorable: true`; los hosts cuyo `Session.append` es anterior al marcador (las líneas `0.1.0-rc.1`–`rc.7` y `0.1.1-rc.1`–`rc.7`) lo descartan silenciosamente, y la línea `0.1.2-alpha` rechaza eventos de plugin al leerlos incluso marcados — el runtime detecta ambos antes del primer append y desactiva la auditoría de registro con una advertencia única. Pon `allowUnmarkedAudit: true` para reactivar; repara registros ya escritos con `scripts/repair-session-logs.mjs` (su modo `strip` elimina filas de auditoría donde el marcador no ayuda).
172
+ - **Marcador de auditoría en hosts previos al marcador o que rechazan eventos.** `permissionRules/decision` se anexa con `ignorable: true`; los hosts cuyo `Session.append` es anterior al marcador (las líneas `0.1.0-rc.1`–`rc.7` y `0.1.1-rc.1`–`rc.7`) lo descartan silenciosamente, la línea `0.1.2-rc` trae la superficie alpha.5 (ninguna opción de append escribe el marcador), la línea `0.1.2-alpha` rechaza eventos de plugin al leerlos incluso marcados, y la línea `0.1.3-alpha` mantiene la misma firma de append surface-only — el runtime detecta todas antes del primer append y desactiva la auditoría de registro con una advertencia única. La migración de registro v1→v2 de la línea `0.1.3-alpha` también rechaza eventos v1 desconocidos incluso marcados, así que aplica `strip` a las filas de auditoría v1 antes de que un host 0.1.3 abra el registro. Pon `allowUnmarkedAudit: true` para reactivar; repara registros ya escritos con `scripts/repair-session-logs.mjs` (su modo `strip` elimina filas de auditoría donde el marcador no ayuda).
173
173
  - **Los candidatos de ruta son heurísticos.** Solo las claves de argumento documentadas alimentan el emparejamiento de rutas, y el emparejamiento relativo al workspace es insensible a mayúsculas ASCII solo con `caseInsensitivePaths` activado.
174
174
  - **Los globs son un subconjunto conservador.** Sin expansión de llaves — escribe dos patrones, o usa modo regex.
175
175
  - **La guardia de backtracking de regex es estructural, no exhaustiva.** Prefiere el modo glob para archivos no confiables.
@@ -262,3 +262,7 @@ Este proyecto es uno de los [33 complementos de DeepSeek Harness](https://github
262
262
  ## License
263
263
 
264
264
  [Apache License 2.0](LICENSE) © 2026 dsh-permission-rules contributors
265
+
266
+ ### Instalar desde el mercado de DSH Desktop
267
+
268
+ Todos los plugins de PerryLink pueden explorarse en el mercado integrado de DSH Desktop: **Market → Sources → add source → pegar** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ seleccionarlo**. La instalación sigue pasando por la verificación de identidad npm del mercado y tu confirmación.
package/README.hi.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  | Surface | Status |
27
27
  |---|---|
28
- | Harness | DeepSeek Harness `0.1.2-alpha.5` (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। |
28
+ | Harness | DeepSeek Harness `0.1.2-rc.1` (2026-09-04 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है और `0.1.2-rc` पंक्ति की पहले append से पहले ही अनमार्क्ड के रूप में पूर्व-जाँच होती है। |
29
29
  | Node | `^22.19.0 || >=24.0.0` |
30
30
  | Platforms | सभी (host + वेब settings क्लाइंट) |
31
31
  | Model | कोई भी (deny/ask कारण टूल परिणामों के माध्यम से दिखते हैं) |
@@ -169,7 +169,7 @@ dsh --profile web --dump-config | grep -A4 'id: permission-rules'
169
169
 
170
170
  ## Known limitations
171
171
 
172
- - **पूर्व-मार्कर hosts और घटना-अस्वीकार hosts पर ऑडिट मार्कर।** `permissionRules/decision` `ignorable: true` से जोड़ा जाता है; जिन hosts का `Session.append` मार्कर से पहले का है (`0.1.0-rc.1`–`rc.7` और `0.1.1-rc.1`–`rc.7` पंक्तियाँ) वे इसे चुपचाप छोड़ देते हैं, और `0.1.2-alpha` पंक्ति पढ़ने पर चिह्नित प्लगइन घटनाओं को भी अस्वीकारती है — runtime पहले append से पहले दोनों का पता लगाकर एक बार की चेतावनी से सत्र-लॉग ऑडिट अक्षम कर देता है। पुनः सक्षम के लिए `allowUnmarkedAudit: true`; पहले से लिखे लॉग `scripts/repair-session-logs.mjs` से मरम्मत करें (जहाँ मार्कर मदद नहीं करता वहाँ इसका `strip` मोड ऑडिट पंक्तियाँ हटाता है)।
172
+ - **पूर्व-मार्कर hosts और घटना-अस्वीकार hosts पर ऑडिट मार्कर।** `permissionRules/decision` `ignorable: true` से जोड़ा जाता है; जिन hosts का `Session.append` मार्कर से पहले का है (`0.1.0-rc.1`–`rc.7` और `0.1.1-rc.1`–`rc.7` पंक्तियाँ) वे इसे चुपचाप छोड़ देते हैं, `0.1.2-rc` पंक्ति alpha.5 सतह लाती है (append का कोई विकल्प मार्कर नहीं लिखता), `0.1.2-alpha` पंक्ति पढ़ने पर चिह्नित प्लगइन घटनाओं को भी अस्वीकारती है, और `0.1.3-alpha` पंक्ति वही surface-only append हस्ताक्षर रखती है — runtime पहले append से पहले इन सबका पता लगाकर एक बार की चेतावनी से सत्र-लॉग ऑडिट अक्षम कर देता है। `0.1.3-alpha` पंक्ति का v1→v2 लॉग प्रवासन चिह्नित अज्ञात v1 घटनाओं को भी अस्वीकारता है, इसलिए 0.1.3 host के लॉग खोलने से पहले v1 ऑडिट पंक्तियों को `strip` करें। पुनः सक्षम के लिए `allowUnmarkedAudit: true`; पहले से लिखे लॉग `scripts/repair-session-logs.mjs` से मरम्मत करें (जहाँ मार्कर मदद नहीं करता वहाँ इसका `strip` मोड ऑडिट पंक्तियाँ हटाता है)।
173
173
  - **पथ उम्मीदवार अनुमानी हैं।** केवल दस्तावेज़ित तर्क कुंजियाँ पथ मिलान को खिलाती हैं, और कार्यक्षेत्र-सापेक्ष मिलान केवल `caseInsensitivePaths` चालू होने पर ASCII-केस-असंवेदी है।
174
174
  - **globs एक रूढ़िवादी उपसमुच्चय हैं।** कोई ब्रेस विस्तार नहीं — दो पैटर्न लिखें, या regex मोड उपयोग करें।
175
175
  - **regex बैकट्रैकिंग गार्ड संरचनात्मक है, संपूर्ण नहीं।** अविश्वसनीय फ़ाइलों के लिए glob मोड पसंद करें।
@@ -262,3 +262,7 @@ node scripts/check-readme-sync.mjs # five-language README sync gate (also in C
262
262
  ## License
263
263
 
264
264
  [Apache License 2.0](LICENSE) © 2026 dsh-permission-rules contributors
265
+
266
+ ### DSH Desktop मार्केट से इंस्टॉल करें
267
+
268
+ सभी PerryLink प्लगइन DSH Desktop के बिल्ट-इन मार्केट में देखे जा सकते हैं: **Market → Sources → add source → पेस्ट करें** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ चुनें**। इंस्टॉलेशन मार्केट के npm-identity सत्यापन और आपकी पुष्टि से ही होता है।
package/README.md CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  | Surface | Status |
28
28
  |---|---|
29
- | Harness | DeepSeek Harness `0.1.2-alpha.5` (adapted 2026-09-02): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. |
29
+ | Harness | DeepSeek Harness `0.1.2-rc.1` (adapted 2026-09-04): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged and the `0.1.2-rc` line is pre-checked as unmarked. The `0.1.3-alpha` line (checkout pre-verified 2026-09-04) keeps the same surface-only append signature and is pre-checked as unmarked too; its v1→v2 log migration refuses unknown v1 events even when marked, so strip v1 audit rows before a 0.1.3 host opens the log. |
30
30
  | Node | `^22.19.0 || >=24.0.0` |
31
31
  | Platforms | All (host + web settings client) |
32
32
  | Model | Any (deny/ask reasons surface through tool results) |
@@ -170,7 +170,7 @@ All tunables are Schemastery `Config` fields (changeable from cordis.yml). An id
170
170
 
171
171
  ## Known limitations
172
172
 
173
- - **Audit marker on pre-marker and refusing hosts.** `permissionRules/decision` is appended with `ignorable: true`; hosts whose `Session.append` predates the marker (the `0.1.0-rc.1`–`rc.7` and `0.1.1-rc.1`–`rc.7` lines) silently drop it, and the `0.1.2-alpha` line refuses plugin events on read even when marked — the runtime detects both before the first append and disables session-log audit with a one-time warning. Set `allowUnmarkedAudit: true` to opt back in; repair already-written logs with `scripts/repair-session-logs.mjs` (its `strip` mode removes audit rows where the marker cannot help).
173
+ - **Audit marker on pre-marker and refusing hosts.** `permissionRules/decision` is appended with `ignorable: true`; hosts whose `Session.append` predates the marker (the `0.1.0-rc.1`–`rc.7` and `0.1.1-rc.1`–`rc.7` lines) silently drop it, the `0.1.2-rc` line ships the alpha.5 surface (no append option writes the marker), the `0.1.2-alpha` line refuses plugin events on read even when marked, and the `0.1.3-alpha` line keeps the same surface-only append signature — the runtime detects all of these before the first append and disables session-log audit with a one-time warning. The `0.1.3-alpha` line's v1→v2 log migration also refuses unknown v1 events even when marked, so `strip` v1 audit rows before a 0.1.3 host opens the log. Set `allowUnmarkedAudit: true` to opt back in; repair already-written logs with `scripts/repair-session-logs.mjs` (its `strip` mode removes audit rows where the marker cannot help).
174
174
  - **Path candidates are heuristic.** Only the documented argument keys feed path matching, and workspace-relative matching is ASCII-case-insensitive only when `caseInsensitivePaths` is on.
175
175
  - **Globs are a conservative subset.** No brace expansion — write two patterns, or use regex mode.
176
176
  - **The regex backtracking guard is structural, not exhaustive.** Prefer glob mode for untrusted files.
@@ -260,6 +260,10 @@ This project is one of the [33 DeepSeek Harness plugins](https://github.com/Perr
260
260
  | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
261
261
  | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
262
262
 
263
+ ### Install from the DSH Desktop Market
264
+
265
+ All PerryLink plugins are browsable in the built-in DSH Desktop Market: **Market → Sources → add source → paste** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ select it**. Installation still goes through the Market's npm-identity verification and your confirmation.
266
+
263
267
  ## License
264
268
 
265
269
  [Apache License 2.0](LICENSE) © 2026 dsh-permission-rules contributors
package/README.pt.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  | Surface | Status |
27
27
  |---|---|
28
- | Harness | DeepSeek Harness `0.1.2-alpha.5` (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda. |
28
+ | Harness | DeepSeek Harness `0.1.2-rc.1` (adaptado em 2026-09-04): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda e a linha `0.1.2-rc` é pré-verificada como não marcada. |
29
29
  | Node | `^22.19.0 || >=24.0.0` |
30
30
  | Platforms | Todas (host + cliente web de settings) |
31
31
  | Model | Qualquer (razões deny/ask aparecem pelos resultados de ferramenta) |
@@ -169,7 +169,7 @@ Todos os parâmetros são campos Schemastery `Config` (alteráveis pelo cordis.y
169
169
 
170
170
  ## Known limitations
171
171
 
172
- - **Marcador de auditoria em hosts anteriores ao marcador ou que rejeitam eventos.** `permissionRules/decision` é anexado com `ignorable: true`; hosts cujo `Session.append` é anterior ao marcador (as linhas `0.1.0-rc.1`–`rc.7` e `0.1.1-rc.1`–`rc.7`) o descartam silenciosamente, e a linha `0.1.2-alpha` rejeita eventos de plugin na leitura mesmo marcados — o runtime detecta ambos antes do primeiro append e desativa a auditoria de log com um aviso único. Ponha `allowUnmarkedAudit: true` para reativar; repare logs já escritos com `scripts/repair-session-logs.mjs` (seu modo `strip` remove linhas de auditoria onde o marcador não ajuda).
172
+ - **Marcador de auditoria em hosts anteriores ao marcador ou que rejeitam eventos.** `permissionRules/decision` é anexado com `ignorable: true`; hosts cujo `Session.append` é anterior ao marcador (as linhas `0.1.0-rc.1`–`rc.7` e `0.1.1-rc.1`–`rc.7`) o descartam silenciosamente, a linha `0.1.2-rc` traz a superfície alpha.5 (nenhuma opção de append escreve o marcador), a linha `0.1.2-alpha` rejeita eventos de plugin na leitura mesmo marcados, e a linha `0.1.3-alpha` mantém a mesma assinatura de append surface-only — o runtime detecta todas antes do primeiro append e desativa a auditoria de log com um aviso único. A migração de log v1→v2 da linha `0.1.3-alpha` também rejeita eventos v1 desconhecidos mesmo marcados, então aplique `strip` às linhas de auditoria v1 antes de um host 0.1.3 abrir o log. Ponha `allowUnmarkedAudit: true` para reativar; repare logs já escritos com `scripts/repair-session-logs.mjs` (seu modo `strip` remove linhas de auditoria onde o marcador não ajuda).
173
173
  - **Candidatos de caminho são heurísticos.** Somente as chaves de argumento documentadas alimentam a correspondência de caminho, e a correspondência relativa ao workspace é insensível a maiúsculas ASCII apenas com `caseInsensitivePaths` ativado.
174
174
  - **Globs são um subconjunto conservador.** Sem expansão de chaves — escreva dois padrões, ou use o modo regex.
175
175
  - **A guarda de backtracking de regex é estrutural, não exaustiva.** Prefira o modo glob para arquivos não confiáveis.
@@ -262,3 +262,7 @@ Este projeto é um dos [33 plugins de DeepSeek Harness](https://github.com/Perry
262
262
  ## License
263
263
 
264
264
  [Apache License 2.0](LICENSE) © 2026 dsh-permission-rules contributors
265
+
266
+ ### Instalar a partir do mercado do DSH Desktop
267
+
268
+ Todos os plugins PerryLink podem ser explorados no mercado integrado do DSH Desktop: **Market → Sources → add source → colar** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ selecionar**. A instalação continua passando pela verificação de identidade npm do mercado e pela sua confirmação.
package/README.zh.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  | Surface | Status |
27
27
  |---|---|
28
- | Harness | DeepSeek Harness `0.1.2-alpha.5`(2026-09-02 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。 |
28
+ | Harness | DeepSeek Harness `0.1.2-rc.1`(2026-09-04 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变,`0.1.2-rc` 线在首次追加前即被预检为未盖章。 |
29
29
  | Node | `^22.19.0 || >=24.0.0` |
30
30
  | Platforms | 全部(host + Web 设置客户端) |
31
31
  | Model | 任意(deny/ask 原因经工具结果呈现) |
@@ -169,7 +169,7 @@ dsh --profile web --dump-config | grep -A4 'id: permission-rules'
169
169
 
170
170
  ## Known limitations
171
171
 
172
- - **前标记宿主与拒绝型宿主上的审计标记。** `permissionRules/decision` 以 `ignorable: true` 追加;`Session.append` 早于该标记的宿主(`0.1.0-rc.1`–`rc.7` 与 `0.1.1-rc.1`–`rc.7` 线)静默丢弃它,而 `0.1.2-alpha` 线在读取时连已标记的插件事件也拒绝——运行时在首次追加前检测两者并以一次性警告禁用会话日志审计。设 `allowUnmarkedAudit: true` 重新启用;用 `scripts/repair-session-logs.mjs` 修复已写日志(标记无济于事的宿主用其 `strip` 模式移除审计行)。
172
+ - **前标记宿主与拒绝型宿主上的审计标记。** `permissionRules/decision` 以 `ignorable: true` 追加;`Session.append` 早于该标记的宿主(`0.1.0-rc.1`–`rc.7` 与 `0.1.1-rc.1`–`rc.7` 线)静默丢弃它,`0.1.2-rc` 线沿用 alpha.5 表面(append 无任何选项能写该标记),`0.1.2-alpha` 线在读取时连已标记的插件事件也拒绝,`0.1.3-alpha` 线同样沿用 surface-only 追加签名——运行时在首次追加前检测这些线并以一次性警告禁用会话日志审计。`0.1.3-alpha` 线的 v1→v2 日志迁移连已标记的未知 v1 事件也拒绝,故在 0.1.3 宿主打开日志前需先 `strip` 掉 v1 审计行。设 `allowUnmarkedAudit: true` 重新启用;用 `scripts/repair-session-logs.mjs` 修复已写日志(标记无济于事的宿主用其 `strip` 模式移除审计行)。
173
173
  - **路径候选是启发式的。** 只有文档化的参数键参与路径匹配,且工作区相对匹配仅在 `caseInsensitivePaths` 开启时忽略 ASCII 大小写。
174
174
  - **glob 是保守子集。** 无花括号展开——写两个模式,或用正则模式。
175
175
  - **正则回溯守卫是结构性的、非穷尽的。** 对不可信文件优先用 glob 模式。
@@ -262,3 +262,7 @@ node scripts/check-readme-sync.mjs # five-language README sync gate (also in C
262
262
  ## License
263
263
 
264
264
  [Apache License 2.0](LICENSE) © 2026 dsh-permission-rules contributors
265
+
266
+ ### 从 DSH Desktop 市场安装
267
+
268
+ 所有 PerryLink 插件均可在 DSH Desktop 内置市场中浏览:**市场 → 来源 → 添加来源 → 粘贴** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ 选中**。安装仍需通过市场的 npm 身份校验与你的确认。
package/lib/index.js CHANGED
@@ -3712,6 +3712,14 @@ async function apply(ctx, config) {
3712
3712
  * later stamp the marker. The `0.1.1-rc` line regressed the same way
3713
3713
  * (verified on `0.1.1-rc.2` — the stamping fix exists only on harness
3714
3714
  * master), so `0.1.1-rc.1`–`0.1.1-rc.7` are treated as unmarked too.
3715
+ * - The `0.1.2-rc` line ships the alpha.5 surface: the third
3716
+ * `Session.append` parameter is `SurfaceIntent` for surface event types
3717
+ * only, so no rc build in the `0.1.2` minor stamps the marker either
3718
+ * (verified against the `dsh-v0.1.2-rc.1` tag). The whole rc line is
3719
+ * treated as unmarked.
3720
+ * - The `0.1.3-alpha` line keeps that surface-only append signature
3721
+ * (verified against the `dsh-v0.1.3-alpha.1` tag), so its builds stamp
3722
+ * the marker no more than rc.1 does and the line is treated as unmarked.
3715
3723
  * - The `0.1.2-alpha` line refuses to interpret logs containing plugin
3716
3724
  * event types even when the envelope carries `ignorable: true` (verified
3717
3725
  * on `0.1.2-alpha-1`, reported by @rgw87 in issue #15), so audit events
@@ -3719,19 +3727,25 @@ async function apply(ctx, config) {
3719
3727
  * whole alpha line is treated as unsafe; over-refusal is harmless because
3720
3728
  * `allowUnmarkedAudit: true` opts back in, and
3721
3729
  * `scripts/repair-session-logs.mjs strip` removes already-written audit
3722
- * rows for hosts where the marker cannot help. On 0.1.2-alpha.2 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. Extend the bound if a
3723
- * future alpha/rc line regresses. Non-matching (later rc, stable, or
3724
- * unresolvable) versions are treated as possibly-marker-aware and
3725
- * verified by the append probe.
3730
+ * rows for hosts where the marker cannot help. On `0.1.2-alpha.2` the
3731
+ * envelope field is restored for stored-log read compatibility only — its
3732
+ * `Session.append` still cannot stamp the marker, so the gate behavior is
3733
+ * unchanged.
3734
+ * - Every rc build in minor 2 and later is treated as unmarked too
3735
+ * (defensive: a future `0.1.3-rc` line would ship at least the same
3736
+ * surface, and over-refusal is harmless for the reasons above).
3737
+ * Non-matching (later stable or unresolvable) versions are treated as
3738
+ * possibly-marker-aware and verified by the append probe.
3726
3739
  * @param version - the installed peer version string.
3727
3740
  * @returns true for the known-unsafe rc.1–rc.7 lines of `0.1.0` and
3728
- * `0.1.1`, and the `0.1.2-alpha` line.
3741
+ * `0.1.1`, every rc build in minor 2 and later, and the `0.1.2-alpha`
3742
+ * and `0.1.3-alpha` lines.
3729
3743
  */
3730
3744
  function isUnmarkedHostVersion(version) {
3731
3745
  const v = version.trim();
3732
- const rc = /^0\.1\.[01]-rc\.(\d+)$/.exec(v);
3733
- if (rc !== null) return Number(rc[1]) <= 7;
3734
- return /^0\.1\.2-alpha[.-]\d+$/.test(v);
3746
+ const rc = /^0\.1\.([0-9]+)-rc\.(\d+)$/.exec(v);
3747
+ if (rc !== null) return Number(rc[1]) >= 2 || Number(rc[2]) <= 7;
3748
+ return /^0\.1\.[23]-alpha[.-]\d+$/.test(v);
3735
3749
  }
3736
3750
  /**
3737
3751
  * Identity candidates for the `agents` match dimension, derived from the
@@ -427,6 +427,14 @@ export declare function apply(ctx: Context, config: Config): Promise<void>;
427
427
  * later stamp the marker. The `0.1.1-rc` line regressed the same way
428
428
  * (verified on `0.1.1-rc.2` — the stamping fix exists only on harness
429
429
  * master), so `0.1.1-rc.1`–`0.1.1-rc.7` are treated as unmarked too.
430
+ * - The `0.1.2-rc` line ships the alpha.5 surface: the third
431
+ * `Session.append` parameter is `SurfaceIntent` for surface event types
432
+ * only, so no rc build in the `0.1.2` minor stamps the marker either
433
+ * (verified against the `dsh-v0.1.2-rc.1` tag). The whole rc line is
434
+ * treated as unmarked.
435
+ * - The `0.1.3-alpha` line keeps that surface-only append signature
436
+ * (verified against the `dsh-v0.1.3-alpha.1` tag), so its builds stamp
437
+ * the marker no more than rc.1 does and the line is treated as unmarked.
430
438
  * - The `0.1.2-alpha` line refuses to interpret logs containing plugin
431
439
  * event types even when the envelope carries `ignorable: true` (verified
432
440
  * on `0.1.2-alpha-1`, reported by @rgw87 in issue #15), so audit events
@@ -434,13 +442,19 @@ export declare function apply(ctx: Context, config: Config): Promise<void>;
434
442
  * whole alpha line is treated as unsafe; over-refusal is harmless because
435
443
  * `allowUnmarkedAudit: true` opts back in, and
436
444
  * `scripts/repair-session-logs.mjs strip` removes already-written audit
437
- * rows for hosts where the marker cannot help. On 0.1.2-alpha.2 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. Extend the bound if a
438
- * future alpha/rc line regresses. Non-matching (later rc, stable, or
439
- * unresolvable) versions are treated as possibly-marker-aware and
440
- * verified by the append probe.
445
+ * rows for hosts where the marker cannot help. On `0.1.2-alpha.2` the
446
+ * envelope field is restored for stored-log read compatibility only — its
447
+ * `Session.append` still cannot stamp the marker, so the gate behavior is
448
+ * unchanged.
449
+ * - Every rc build in minor 2 and later is treated as unmarked too
450
+ * (defensive: a future `0.1.3-rc` line would ship at least the same
451
+ * surface, and over-refusal is harmless for the reasons above).
452
+ * Non-matching (later stable or unresolvable) versions are treated as
453
+ * possibly-marker-aware and verified by the append probe.
441
454
  * @param version - the installed peer version string.
442
455
  * @returns true for the known-unsafe rc.1–rc.7 lines of `0.1.0` and
443
- * `0.1.1`, and the `0.1.2-alpha` line.
456
+ * `0.1.1`, every rc build in minor 2 and later, and the `0.1.2-alpha`
457
+ * and `0.1.3-alpha` lines.
444
458
  */
445
459
  export declare function isUnmarkedHostVersion(version: string): boolean;
446
460
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-permission-rules",
3
- "version": "0.6.9",
3
+ "version": "0.6.10",
4
4
  "description": "Declarative Claude Code-style permission rules plus a Codex-style process-level network policy for DeepSeek Harness: ordered allow/deny/ask rules with tool-name, argument (glob/regex), workspace-path, and network-target (domain/ip/port/scheme) matching on the tools/pre-execute waterfall, a built-in local HTTP/CONNECT proxy governing shell subprocess traffic, three network modes mapped onto the official sandbox presets, full session-log audit, HMR rule reload, and a settings page with a rule editor, block counters, and recent interception lists.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -77,7 +77,7 @@
77
77
  ],
78
78
  "compatibility": {
79
79
  "dshVersions": [
80
- "0.1.2-alpha.5"
80
+ "0.1.2-rc.1"
81
81
  ]
82
82
  },
83
83
  "capability": {
@@ -155,31 +155,31 @@
155
155
  "yaml": "^2.8.0",
156
156
  "zod": "^4.4.3"
157
157
  },
158
- "devDependencies": {"@deepseek-ai/dsh-attachment": "0.1.2-alpha.5",
158
+ "devDependencies": {"@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
159
159
  "@deepseek-ai/cordis": "^4.0.2",
160
160
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
161
161
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
162
- "@deepseek-ai/dsh-agent": "0.1.2-alpha.5",
163
- "@deepseek-ai/dsh-brand": "0.1.2-alpha.5",
164
- "@deepseek-ai/dsh-client-connection": "0.1.2-alpha.5",
165
- "@deepseek-ai/dsh-client-locale": "0.1.2-alpha.5",
166
- "@deepseek-ai/dsh-client-ui-settings": "0.1.2-alpha.5",
167
- "@deepseek-ai/dsh-client-ui-slots": "0.1.2-alpha.5",
168
- "@deepseek-ai/dsh-client-web": "0.1.2-alpha.5",
169
- "@deepseek-ai/dsh-commands": "0.1.2-alpha.5",
170
- "@deepseek-ai/dsh-invariants": "0.1.2-alpha.5",
171
- "@deepseek-ai/dsh-llm": "0.1.2-alpha.5",
172
- "@deepseek-ai/dsh-session": "0.1.2-alpha.5",
173
- "@deepseek-ai/dsh-session-projection": "0.1.2-alpha.5",
174
- "@deepseek-ai/dsh-subagent": "0.1.2-alpha.5",
175
- "@deepseek-ai/dsh-tools": "0.1.2-alpha.5",
176
- "@deepseek-ai/dsh-typert-protocol": "0.1.2-alpha.5",
177
- "@deepseek-ai/dsh-user-approval": "0.1.2-alpha.5",
162
+ "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
163
+ "@deepseek-ai/dsh-brand": "0.1.2-rc.1",
164
+ "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
165
+ "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
166
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
167
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
168
+ "@deepseek-ai/dsh-client-web": "0.1.2-rc.1",
169
+ "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
170
+ "@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
171
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
172
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1",
173
+ "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
174
+ "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
175
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
176
+ "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
177
+ "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
178
178
  "@deepseek-ai/schemastery": "^3.18.2",
179
179
  "@eslint/js": "^10.0.1",
180
180
  "@types/node": "^22.19.0",
181
181
  "@vitest/coverage-v8": "^3.2.0",
182
- "dsh-auto-review": "file:vendor/dsh-auto-review-0.10.2.tgz",
182
+ "dsh-auto-review": "file:vendor/dsh-auto-review-0.10.3.tgz",
183
183
  "eslint": "^10.8.1",
184
184
  "globals": "^17.11.0",
185
185
  "react": "18.3.1",
@@ -12,11 +12,17 @@
12
12
  *
13
13
  * `strip` removes the targeted rows entirely. It exists for harness lines
14
14
  * whose read path refuses out-of-vocabulary event types even when the
15
- * envelope is marked (the `0.1.2-alpha` line, verified on `0.1.2-alpha-1` —
16
- * issue #15): there the marker cannot help, and dropping the log-only audit
17
- * rows is the only repair. The target vocabulary is reconstruction-safe by
18
- * construction (never injected into the model context), so removal does not
19
- * change how the session replays.
15
+ * envelope is marked — the `0.1.2-alpha` line (verified on `0.1.2-alpha-1`,
16
+ * issue #15) refuses them directly, and the `0.1.3-alpha.1` v1→v2 migration
17
+ * gate (`session-format-v1-to-v2/src/migration.ts`) refuses every v1 event
18
+ * type outside the released v0 vocabulary, audit rows included even when
19
+ * stamped, so a v1 log containing audit rows blocks the whole session load
20
+ * on that host: v1 logs must be `strip`ped before a v2 host first opens
21
+ * them, while v2 logs accept marked plugin rows and only need `repair`.
22
+ * There the marker cannot help, and dropping the log-only audit rows is the
23
+ * only repair. The target vocabulary is reconstruction-safe by construction
24
+ * (never injected into the model context), so removal does not change how
25
+ * the session replays.
20
26
  *
21
27
  * It understands both physical encodings of the JSONL backend:
22
28
  * - `session.jsonl.zstd` — a concatenation of checksummed Zstandard frames
@@ -24,6 +30,10 @@
24
30
  * frame is decompressed, filtered, and recompressed independently so
25
31
  * frame boundaries survive.
26
32
  * - `session.jsonl` — plaintext JSONL lines.
33
+ * v2 hosts (the `0.1.3-alpha` line) write `session.v2.jsonl(.zstd)`; both
34
+ * log generations are discovered. On a v2 host, strip v1 logs first — its
35
+ * v1→v2 migration refuses stamped plugin rows too — while v2 logs only
36
+ * need `repair` stamping.
27
37
  *
28
38
  * Usage:
29
39
  * node scripts/repair-session-logs.mjs scan [--home DIR] # report foreign rows, change nothing
@@ -76,6 +86,9 @@ const KNOWN_SESSION_EVENT_TYPES = new Set([
76
86
  'approval/asked',
77
87
  'approval/decided',
78
88
  'approval/policy',
89
+ // The v2 catalog swapped assistant/chunk for assistant/attempt; both stay
90
+ // listed so v1 and v2 logs scan clean (v1∪v2 union).
91
+ 'assistant/attempt',
79
92
  'assistant/chunk',
80
93
  'assistant/message',
81
94
  'command/done',
@@ -90,18 +103,25 @@ const KNOWN_SESSION_EVENT_TYPES = new Set([
90
103
  'hook/result',
91
104
  'llm/retry',
92
105
  'llm/retry-started',
106
+ 'model/selection',
93
107
  'permission/preset',
94
108
  'plan/mode',
95
109
  'request/context',
96
110
  'request/header',
97
111
  'sandbox/mode',
98
112
  'schedule/change',
113
+ 'session-log-deepseek/delivery-accepted',
99
114
  'session/end-seed',
100
115
  'session/title',
101
116
  'session/title-llm-request',
102
117
  'step/end',
103
118
  'step/start',
104
119
  'subagent/descriptor',
120
+ 'subagent/model-selection-policy',
121
+ 'team/member',
122
+ 'team/message/delivered',
123
+ 'team/message/queued',
124
+ 'team/task',
105
125
  'todo/write',
106
126
  'tool-workflow/agent-end',
107
127
  'tool-workflow/agent-start',
@@ -230,7 +250,7 @@ function findLogs(root) {
230
250
  const full = join(dir, entry)
231
251
  const stat = statSync(full)
232
252
  if (stat.isDirectory()) walk(full)
233
- else if (entry === 'session.jsonl' || entry === 'session.jsonl.zstd') found.push(full)
253
+ else if (entry === 'session.jsonl' || entry === 'session.jsonl.zstd' || entry === 'session.v2.jsonl' || entry === 'session.v2.jsonl.zstd') found.push(full)
234
254
  }
235
255
  }
236
256
  walk(root)
@@ -340,7 +360,7 @@ for (const path of logs) {
340
360
  if (foreignSeen.size > 0) {
341
361
  console.log('\nforeign (non-harness) event rows found by type:')
342
362
  for (const [type, count] of [...foreignSeen.entries()].sort()) {
343
- const action = targetTypes.has(type) ? 'targeted for ignorable repair' : 'NOT targeted — investigate before touching'
363
+ const action = targetTypes.has(type) ? 'targeted — repair stamps ignorable; strip removes (v1 logs must be stripped before a v2 host loads them)' : 'NOT targeted — investigate before touching'
344
364
  console.log(` ${type}: ${count} rows (${action})`)
345
365
  }
346
366
  }
package/src/runtime.ts CHANGED
@@ -1307,6 +1307,14 @@ export async function apply(ctx: Context, config: Config): Promise<void> {
1307
1307
  * later stamp the marker. The `0.1.1-rc` line regressed the same way
1308
1308
  * (verified on `0.1.1-rc.2` — the stamping fix exists only on harness
1309
1309
  * master), so `0.1.1-rc.1`–`0.1.1-rc.7` are treated as unmarked too.
1310
+ * - The `0.1.2-rc` line ships the alpha.5 surface: the third
1311
+ * `Session.append` parameter is `SurfaceIntent` for surface event types
1312
+ * only, so no rc build in the `0.1.2` minor stamps the marker either
1313
+ * (verified against the `dsh-v0.1.2-rc.1` tag). The whole rc line is
1314
+ * treated as unmarked.
1315
+ * - The `0.1.3-alpha` line keeps that surface-only append signature
1316
+ * (verified against the `dsh-v0.1.3-alpha.1` tag), so its builds stamp
1317
+ * the marker no more than rc.1 does and the line is treated as unmarked.
1310
1318
  * - The `0.1.2-alpha` line refuses to interpret logs containing plugin
1311
1319
  * event types even when the envelope carries `ignorable: true` (verified
1312
1320
  * on `0.1.2-alpha-1`, reported by @rgw87 in issue #15), so audit events
@@ -1314,19 +1322,25 @@ export async function apply(ctx: Context, config: Config): Promise<void> {
1314
1322
  * whole alpha line is treated as unsafe; over-refusal is harmless because
1315
1323
  * `allowUnmarkedAudit: true` opts back in, and
1316
1324
  * `scripts/repair-session-logs.mjs strip` removes already-written audit
1317
- * rows for hosts where the marker cannot help. On 0.1.2-alpha.2 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. Extend the bound if a
1318
- * future alpha/rc line regresses. Non-matching (later rc, stable, or
1319
- * unresolvable) versions are treated as possibly-marker-aware and
1320
- * verified by the append probe.
1325
+ * rows for hosts where the marker cannot help. On `0.1.2-alpha.2` the
1326
+ * envelope field is restored for stored-log read compatibility only — its
1327
+ * `Session.append` still cannot stamp the marker, so the gate behavior is
1328
+ * unchanged.
1329
+ * - Every rc build in minor 2 and later is treated as unmarked too
1330
+ * (defensive: a future `0.1.3-rc` line would ship at least the same
1331
+ * surface, and over-refusal is harmless for the reasons above).
1332
+ * Non-matching (later stable or unresolvable) versions are treated as
1333
+ * possibly-marker-aware and verified by the append probe.
1321
1334
  * @param version - the installed peer version string.
1322
1335
  * @returns true for the known-unsafe rc.1–rc.7 lines of `0.1.0` and
1323
- * `0.1.1`, and the `0.1.2-alpha` line.
1336
+ * `0.1.1`, every rc build in minor 2 and later, and the `0.1.2-alpha`
1337
+ * and `0.1.3-alpha` lines.
1324
1338
  */
1325
1339
  export function isUnmarkedHostVersion(version: string): boolean {
1326
1340
  const v = version.trim()
1327
- const rc = /^0\.1\.[01]-rc\.(\d+)$/.exec(v)
1328
- if (rc !== null) return Number(rc[1]) <= 7
1329
- return /^0\.1\.2-alpha[.-]\d+$/.test(v)
1341
+ const rc = /^0\.1\.([0-9]+)-rc\.(\d+)$/.exec(v)
1342
+ if (rc !== null) return Number(rc[1]) >= 2 || Number(rc[2]) <= 7
1343
+ return /^0\.1\.[23]-alpha[.-]\d+$/.test(v)
1330
1344
  }
1331
1345
 
1332
1346
  /**