dsh-perm-gate 5.3.1 → 5.3.3
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 +8 -0
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/cordis.patch.yml +7 -7
- package/dsh.plugin.json +2 -2
- package/lib/client.js +4 -4
- package/lib/client.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
5.3.3: host enumeration addendum for DSH 0.2.1-rc.3 (declaration-only bump; contract plane zero diff).
|
|
4
|
+
|
|
5
|
+
## 5.3.2 (2026-10-18)
|
|
6
|
+
|
|
7
|
+
- 说明澄清:明确申明本插件的**执行前守卫**——在工具调用运行前拦截破坏性 Git 与文件系统命令,以及对 SSH 密钥、.env 等机密文件的访问(P0 硬拒绝 + 确定性机械审查器,无审查模型在场时仍生效);投稿描述同步申持该能力并建议使用带模型审查的模式
|
|
8
|
+
- 档位命名/描述澄清:裸名「自动审查」标明为「自动审查(dsh沙箱中)」以区别于高权限(无沙箱)档;机械过滤标明为**危险/不确定才人工确认**(仍接回沙箱组,作用域内安全操作由 trustAutoAllow 静默放行、不弹确认)、机械直通标明为**检查通过直接放行**(cordis.patch.yml 预设名/描述 + 设置卡 askHint/passHint 中英同步)
|
|
9
|
+
- hosts: 追加 0.2.1-rc.2 声明面枚举(34/34 @deepseek-ai/* 宿主 peer 逐包 npm 实测 rc.2 在版;本插件不触 ctx.web provider 与 conversation.input.model.label 槽,代码零改动,纯元数据发版;农场 rc.2 格挂账待命)
|
|
10
|
+
|
|
3
11
|
All notable changes to this project will be documented in this file.
|
|
4
12
|
|
|
5
13
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
package/README.ja.md
CHANGED
|
@@ -63,7 +63,7 @@ fail-closed を徹底します:P0 の判定は、grant・ルール・分類器
|
|
|
63
63
|
上書きされません。
|
|
64
64
|
|
|
65
65
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
66
|
-
- **対応する DSH ホスト:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1`(0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 の
|
|
66
|
+
- **対応する DSH ホスト:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3`(0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 の 18 rc)
|
|
67
67
|
- **ランタイム検証済み:** `0.2.0-rc.2`(証跡は `.compat-results/`)
|
|
68
68
|
<!-- host-compat:end -->
|
|
69
69
|
|
package/README.ko.md
CHANGED
|
@@ -61,7 +61,7 @@ DeepSeek Harness용 단일·자족적·결정론 우선·fail-closed 권한 게
|
|
|
61
61
|
덮어써지지 않습니다.
|
|
62
62
|
|
|
63
63
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
64
|
-
- **지원하는 DSH 호스트:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` (0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 라인의
|
|
64
|
+
- **지원하는 DSH 호스트:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3` (0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 라인의 18개 rc)
|
|
65
65
|
- **런타임 검증됨:** `0.2.0-rc.2` (증적은 `.compat-results/`)
|
|
66
66
|
<!-- host-compat:end -->
|
|
67
67
|
|
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ A single, self-sufficient, deterministic-first, fail-closed permission gate for
|
|
|
59
59
|
Strictly fail-closed: a P0 decision is never overridden by a grant, a rule, the classifier, or a human.
|
|
60
60
|
|
|
61
61
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
62
|
-
- **Supported DSH hosts:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` (
|
|
62
|
+
- **Supported DSH hosts:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3` (18 rc releases across lines 0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1)
|
|
63
63
|
- **Runtime-verified:** `0.2.0-rc.2` — evidence in `.compat-results/`
|
|
64
64
|
<!-- host-compat:end -->
|
|
65
65
|
|
package/README.zh.md
CHANGED
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
严格 fail-closed:P0 永不因 grant / 规则 / 分类器 / 人工而放行。
|
|
57
57
|
|
|
58
58
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
59
|
-
- **支持的 DSH 宿主:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1`(覆盖 0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 七条线共
|
|
59
|
+
- **支持的 DSH 宿主:** `0.1.0-rc.2` `0.1.0-rc.3` `0.1.0-rc.6` `0.1.0-rc.7` `0.1.0-rc.8` `0.1.1-rc.1` `0.1.1-rc.2` `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3`(覆盖 0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 七条线共 18 个 rc)
|
|
60
60
|
- **运行时已验证:** `0.2.0-rc.2`(证据见 `.compat-results/`)
|
|
61
61
|
<!-- host-compat:end -->
|
|
62
62
|
|
package/cordis.patch.yml
CHANGED
|
@@ -70,23 +70,23 @@
|
|
|
70
70
|
permissive:
|
|
71
71
|
sandbox: workspace-write
|
|
72
72
|
approval: ask
|
|
73
|
-
name:
|
|
74
|
-
description: 独立审批档 ——
|
|
73
|
+
name: 自动审查(dsh沙箱中)
|
|
74
|
+
description: 独立审批档 —— 执行前守卫在工具调用运行前拦截破坏性 Git 与文件系统命令,以及对 SSH 密钥、.env 等机密文件的访问;作用域内安全操作自动放行,危险/未知越界转人工确认(审批强度可在「设置 → 插件 → 自动审查」调整)。保留内置文件沙箱(dsh 沙箱中)。
|
|
75
75
|
permissive-full:
|
|
76
76
|
sandbox: danger-full-access
|
|
77
77
|
approval: ask
|
|
78
78
|
name: 自动审查(高权限)
|
|
79
|
-
description: 只由本插件的审批门过滤 ——
|
|
79
|
+
description: 只由本插件的审批门过滤 —— 执行前守卫仍拦截破坏性 Git 与文件系统命令、SSH 密钥/.env 等机密访问,但文件修改与子进程网络访问不再受沙箱限制,审批逐次生效,没有系统沙箱兜底。
|
|
80
80
|
permissive-snet:
|
|
81
81
|
sandbox: workspace-write
|
|
82
82
|
approval: ask
|
|
83
|
-
name:
|
|
84
|
-
description:
|
|
83
|
+
name: 自动审查·机械过滤(危险/不确定才人工确认)
|
|
84
|
+
description: 不调用审查模型,仍接回沙箱组 —— 作用域内的安全操作照由 trustAutoAllow 自动静默放行(不弹确认);只有运行前的危险(破坏性 Git 与文件系统命令、SSH 密钥/.env 等机密访问)与读不懂/未知残局才列出疑点交人工确认后才执行。即“危险与不确定才 ask,安全直通”。适用于无审查 LLM 可用、或不习惯模型替你拿主意的场景(不常用)。
|
|
85
85
|
permissive-mech:
|
|
86
86
|
sandbox: danger-full-access
|
|
87
87
|
approval: ask
|
|
88
|
-
name:
|
|
89
|
-
description: 无人确认 ——
|
|
88
|
+
name: 自动审查·机械直通(检查通过即直接放行)
|
|
89
|
+
description: 无人确认 —— 确定性机械审查器替代人工:运行前命中不可逆 / 不可沉淀 / 读不懂的载荷(含破坏性 Git 与文件系统命令、SSH 密钥/.env 等机密访问)即拦截并把理由回喂主模型,检查后无问题的其余照常直接放行执行(= 检查通过直接放行,不问人)。不调用审查模型,零 token。
|
|
90
90
|
permissive-yolo:
|
|
91
91
|
sandbox: danger-full-access
|
|
92
92
|
approval: ask
|
package/dsh.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-perm-gate",
|
|
3
3
|
"name": "dsh-perm-gate",
|
|
4
|
-
"version": "5.3.
|
|
4
|
+
"version": "5.3.3",
|
|
5
5
|
"description": {
|
|
6
6
|
"en": "Deterministic-first, fail-closed permission gate for DeepSeek Harness 0.1.2+: a P0 hard-deny -> P1 precise session grant -> P2 static allow/deny rule chain -> P3 optional LLM classifier -> P4 ask pipeline over the tools/pre-execute waterfall, with a standalone CLI dry-run evaluator and an auditable decision log. It only vetoes with deny/ask and always delegates otherwise, and unknown or malformed rules fail loud instead of silently standing the gate down.",
|
|
7
7
|
"zh": "面向 DeepSeek Harness 0.1.2+ 的确定性优先、失败即拒的权限闸门:在 tools/pre-execute 瀑布上串起 P0 硬拒绝 → P1 精确会话授权 → P2 静态 allow/deny 规则链 → P3 可选 LLM 语义分类 → P4 ask,并附带独立 CLI 干跑评估器与可审计的决策日志。只以 deny/ask 否决、其余一律放行,规则未知或非法时直接报错,绝不静默失效。"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"engines": {
|
|
16
|
-
"dsh": "0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1"
|
|
16
|
+
"dsh": "0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3"
|
|
17
17
|
},
|
|
18
18
|
"components": {
|
|
19
19
|
"host": "lib/index.js",
|
package/lib/client.js
CHANGED
|
@@ -33,8 +33,8 @@ window.__ModuleLoader__.load({
|
|
|
33
33
|
"card.unattendedHint": "三颗开关,每颗只管它旁边标着的那一档:关掉即实现不存在,那一档退回普通人工流,不会偷偷变成别的档。",
|
|
34
34
|
"card.mode.ask": "保留人工",
|
|
35
35
|
"card.mode.pass": "机械直通",
|
|
36
|
-
"card.askHint": "
|
|
37
|
-
"card.passHint": "
|
|
36
|
+
"card.askHint": "(危险/不确定才人工确认)仍接回沙箱组:作用域内的安全操作照由 trustAutoAllow 自动静默放行、不弹确认;确定性机械审查器只对运行前的危险(破坏性 Git 与文件系统命令、SSH 密钥/.env 等机密访问)与未知残局列出疑点、交人工确认,一次审查模型都不叫——不触发确认的安全操作照常执行。适用于无审查 LLM 可用、或不值当花 token 的运行。",
|
|
37
|
+
"card.passHint": "(检查通过直接放行、不问人)只跑确定性机械审查器:运行前命中不可逆 / 不可沉淀 / 读不懂的载荷(含破坏性 Git 与文件系统命令、SSH 密钥/.env 等机密访问)就拦截并把理由回喂主模型,检查后无问题的其余照常直接执行。零模型调用——相当于 approval: never 的有审查版,也是 yolo 拿掉 LLM 后的劣化形态。",
|
|
38
38
|
"card.tierScopeHint": "只有落在门禁作用域(%scope)里的预设才会走到这一步;预设不在作用域内时整个门禁停用,任何开关都不会接管它的确认。",
|
|
39
39
|
"card.yolo": "YOLO — 永不人工确认:危险才拦,其余放行",
|
|
40
40
|
"card.yoloHint": "命中不可逆 / 不可沉淀 / 读不懂的载荷,或模型报硬风险时拦截,并把理由以「工具审核意见」回喂主模型;其余照常执行。没有可用模型时只靠确定性规则网拦截。",
|
|
@@ -219,8 +219,8 @@ window.__ModuleLoader__.load({
|
|
|
219
219
|
"card.unattendedHint": "Three switches, each governing only the tier named beside it: switching an implementation off returns that tier to the ordinary human flow — it never quietly becomes a different tier.",
|
|
220
220
|
"card.mode.ask": "Keep human",
|
|
221
221
|
"card.mode.pass": "Mechanical pass-through",
|
|
222
|
-
"card.askHint": "
|
|
223
|
-
"card.passHint": "Runs the deterministic mechanical judge only: an irreversible, unlearnable or unreadable call is blocked and the reason fed back to the main model, everything
|
|
222
|
+
"card.askHint": "(Manual confirmation only for danger / uncertainty) Still on the sandbox group: safe operations inside the scope are auto-allowed silently by trustAutoAllow with no popup; the deterministic mechanical screen lists its doubts and asks a person only for pre-execution danger (destructive Git and filesystem commands, access to SSH keys / .env credentials) and unreadable or unknown residuals, calling no grader at all — anything that does not trigger a confirmation runs as normal. The shape for runs with no reviewer LLM connected, or where the tokens are not worth spending.",
|
|
223
|
+
"card.passHint": "(Auto-allow once the check passes, no human prompt) Runs the deterministic mechanical judge only: before execution an irreversible, unlearnable or unreadable call (including destructive Git and filesystem commands and access to SSH keys / .env credentials) is blocked and the reason fed back to the main model, everything that passes runs directly. No model call — the reviewed form of approval: never, and YOLO with the model taken away.",
|
|
224
224
|
"card.tierScopeHint": "Only presets inside the gate's scope (%scope) reach this step; outside it the whole gate stands down, so no switch takes over its confirmations.",
|
|
225
225
|
"card.yolo": "YOLO — never ask a human: block the dangerous, run the rest",
|
|
226
226
|
"card.yoloHint": "Blocks an irreversible / unlearnable / unreadable payload, or a hard-risk verdict from the model, and feeds the reason back to the main LLM as a 工具审核意见 message; everything else executes. With no reviewer available only the deterministic nets catch anything.",
|