dsh-perm-gate 5.0.4 → 5.1.0

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.
Files changed (50) hide show
  1. package/CHANGELOG.ja.md +0 -2
  2. package/CHANGELOG.ko.md +0 -2
  3. package/CHANGELOG.md +4 -2
  4. package/INSTALL.ja.md +0 -15
  5. package/INSTALL.ko.md +0 -15
  6. package/INSTALL.md +0 -15
  7. package/INSTALL.zh.md +0 -15
  8. package/README.ja.md +6 -18
  9. package/README.ko.md +6 -18
  10. package/README.md +40 -19
  11. package/README.zh.md +34 -18
  12. package/assets/appcontainer-launcher.cs +703 -0
  13. package/dsh.plugin.json +2 -2
  14. package/lib/appcontainer/compile.d.ts +17 -0
  15. package/lib/appcontainer/compile.js +74 -0
  16. package/lib/appcontainer/exempt.d.ts +18 -0
  17. package/lib/appcontainer/exempt.js +71 -0
  18. package/lib/appcontainer/index.d.ts +85 -0
  19. package/lib/appcontainer/index.js +286 -0
  20. package/lib/appcontainer/probe.d.ts +44 -0
  21. package/lib/appcontainer/probe.js +66 -0
  22. package/lib/appcontainer/sid.d.ts +23 -0
  23. package/lib/appcontainer/sid.js +33 -0
  24. package/lib/appcontainer/wrap.d.ts +22 -0
  25. package/lib/appcontainer/wrap.js +40 -0
  26. package/lib/cli.js +0 -0
  27. package/lib/client.js +1425 -1108
  28. package/lib/client.js.map +1 -1
  29. package/lib/config.d.ts +41 -1
  30. package/lib/config.js +6 -0
  31. package/lib/index.d.ts +1 -1
  32. package/lib/index.js +53 -0
  33. package/lib/runtime.d.ts +22 -0
  34. package/lib/runtime.js +24 -0
  35. package/locale/de.json +1 -0
  36. package/locale/en.json +1 -0
  37. package/locale/es.json +1 -0
  38. package/locale/fr.json +1 -0
  39. package/locale/it.json +1 -0
  40. package/locale/ja.json +1 -0
  41. package/locale/ko.json +1 -0
  42. package/locale/ru.json +1 -0
  43. package/locale/zh.json +1 -0
  44. package/package.json +28 -28
  45. package/scripts/patch-permission-glyph.mjs +0 -0
  46. package/README.de.md +0 -487
  47. package/README.es.md +0 -489
  48. package/README.fr.md +0 -498
  49. package/README.it.md +0 -490
  50. package/README.ru.md +0 -478
package/CHANGELOG.ja.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # 変更履歴
2
2
 
3
- 言語: [English](./CHANGELOG.md) · [日本語](./CHANGELOG.ja.md) · [한국어](./CHANGELOG.ko.md) · [Français](./CHANGELOG.fr.md) · [Deutsch](./CHANGELOG.de.md) · [Italiano](./CHANGELOG.it.md) · [Русский](./CHANGELOG.ru.md) · [Español](./CHANGELOG.es.md)
4
-
5
3
  このプロジェクトの重要な変更はすべてこのファイルに記録されます。
6
4
 
7
5
  形式は [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) に従い、
package/CHANGELOG.ko.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # 변경 로그
2
2
 
3
- 언어: [English](./CHANGELOG.md) · [日本語](./CHANGELOG.ja.md) · [한국어](./CHANGELOG.ko.md) · [Français](./CHANGELOG.fr.md) · [Deutsch](./CHANGELOG.de.md) · [Italiano](./CHANGELOG.it.md) · [Русский](./CHANGELOG.ru.md) · [Español](./CHANGELOG.es.md)
4
-
5
3
  이 프로젝트의 중요한 변경 사항은 모두 이 파일에 기록됩니다.
6
4
 
7
5
  형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)을 따르며,
package/CHANGELOG.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Changelog
2
2
 
3
- Languages: [English](./CHANGELOG.md) · [日本語](./CHANGELOG.ja.md) · [한국어](./CHANGELOG.ko.md) · [Français](./CHANGELOG.fr.md) · [Deutsch](./CHANGELOG.de.md) · [Italiano](./CHANGELOG.it.md) · [Русский](./CHANGELOG.ru.md) · [Español](./CHANGELOG.es.md)
4
-
5
3
  All notable changes to this project will be documented in this file.
4
+ ## 统一 15-rc 枚举线:三宿主子包 peer 全量枚举(client-locale/client-ui-renderer/client-ui-settings),内容=保留场验证的 4.3.0-beta.2 同树,版本越过 compat 线 5.0.4。 — 2026-10-05
5
+
6
+ undefined
7
+
6
8
 
7
9
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
10
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
package/INSTALL.ja.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  `dsh-perm-gate` バージョン **2.4.1**。判定チェーン、ルールファイル形式、自动审查
31
16
  ティアについては [日本語 README](./README.ja.md) を参照してください。
package/INSTALL.ko.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  `dsh-perm-gate` 버전 **2.4.1**. 결정 체인, 규칙 파일 형식, 自动审查 티어는
31
16
  [한국어 README](./README.ko.md)를 참고하세요.
package/INSTALL.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  `dsh-perm-gate` version **2.4.1**. Continue with the [README](./README.md) for the
31
16
  decision chain, the rules file format and the 自动审查 tier.
package/INSTALL.zh.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  `dsh-perm-gate` 版本 **2.4.1**。裁决链、规则文件格式与自动审查档位请见
31
16
  [中文 README](./README.zh.md)。
package/README.ja.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  > **互換性に関する注記:** v2.0.0 は `ja` / `ko` 辞書を同梱しますが、公式 DSH の
31
16
  > `LocaleRuntime` が公開するのは `zh` / `en` のみです(`LOCALE_IDS = ["zh", "en"]`)。
@@ -77,6 +62,11 @@ DeepSeek Harness 向けの、単一・自己完結・決定論優先・fail-clos
77
62
  fail-closed を徹底します:P0 の判定は、grant・ルール・分類器・人間のいずれにも
78
63
  上書きされません。
79
64
 
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.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 の 15 rc)
67
+ - **ランタイム検証済み:** `0.2.0-rc.2`(証跡は `.compat-results/`)
68
+ <!-- host-compat:end -->
69
+
80
70
  ## 背景
81
71
 
82
72
  DSH の安全まわりのエコシステムでは、この役割が `dsh-permission-rules` /
@@ -119,9 +109,7 @@ dsh plugin --profile web add dsh-perm-gate
119
109
 
120
110
  インストール・アップグレード・移行・トラブルシューティングの詳細は
121
111
  [日本語インストールガイド](./INSTALL.ja.md)([English](./INSTALL.md) /
122
- [中文](./INSTALL.zh.md) / [한국어](./INSTALL.ko.md) / [Français](./INSTALL.fr.md) /
123
- [Deutsch](./INSTALL.de.md) / [Italiano](./INSTALL.it.md) / [Русский](./INSTALL.ru.md) /
124
- [Español](./INSTALL.es.md))にあります。
112
+ [中文](./INSTALL.zh.md) / [한국어](./INSTALL.ko.md))にあります。
125
113
 
126
114
  ## 設定
127
115
 
package/README.ko.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  > **호환성 안내:** v2.0.0은 `ja` / `ko` 사전을 포함하지만, 공식 DSH의 `LocaleRuntime`은
31
16
  > `zh` / `en`만 노출합니다(`LOCALE_IDS = ["zh", "en"]`). 기본 DSH에서 `ja` / `ko`를
@@ -75,6 +60,11 @@ DeepSeek Harness용 단일·자족적·결정론 우선·fail-closed 권한 게
75
60
  엄격하게 fail-closed입니다: P0 판정은 grant·규칙·분류기·사람 누구에게도
76
61
  덮어써지지 않습니다.
77
62
 
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.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 라인의 15개 rc)
65
+ - **런타임 검증됨:** `0.2.0-rc.2` (증적은 `.compat-results/`)
66
+ <!-- host-compat:end -->
67
+
78
68
  ## 배경
79
69
 
80
70
  DSH 안전 생태계에서는 이 역할이 `dsh-permission-rules` / `dsh-auto-mode` /
@@ -116,9 +106,7 @@ dsh plugin --profile web add dsh-perm-gate
116
106
 
117
107
  설치·업그레이드·이전·문제 해결의 전체 절차는
118
108
  [한국어 설치 안내](./INSTALL.ko.md)([English](./INSTALL.md) /
119
- [中文](./INSTALL.zh.md) / [日本語](./INSTALL.ja.md) / [Français](./INSTALL.fr.md) /
120
- [Deutsch](./INSTALL.de.md) / [Italiano](./INSTALL.it.md) / [Русский](./INSTALL.ru.md) /
121
- [Español](./INSTALL.es.md))에 있습니다.
109
+ [中文](./INSTALL.zh.md) / [日本語](./INSTALL.ja.md))에 있습니다.
122
110
 
123
111
  ## 설정
124
112
 
package/README.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  > **Compatibility note:** v2.0.0 ships `ja` / `ko` dictionaries, but official DSH exposes
31
16
  > only `zh` / `en` through `LocaleRuntime` (`LOCALE_IDS = ["zh", "en"]`). On stock DSH,
@@ -42,7 +27,6 @@
42
27
  > | --- | --- | --- | --- |
43
28
  > | 0.1.0-rc.7 ~ 0.1.1-rc.x | `legacy` | `1.x` | `@legacy` |
44
29
  > | 0.1.2-alpha.1+ (incl. 0.1.5-rc.2) | `main` | `2.x` | `@latest` / `@dsh-0.1.2` (`@2.x` is a range) |
45
- > | 0.2.0-rc.1 (0.2.0 line) | `compat/0.2.0` | `5.x` | `@dsh-0.2.0` |
46
30
  >
47
31
  > The series number tracks the **DSH line** (`1.x` = DSH ≤ 0.1.1, `2.x` = DSH 0.1.2+),
48
32
  > and the majors fence each other: a `^1.x` install never resolves a `2.x` release and
@@ -74,6 +58,11 @@ A single, self-sufficient, deterministic-first, fail-closed permission gate for
74
58
 
75
59
  Strictly fail-closed: a P0 decision is never overridden by a grant, a rule, the classifier, or a human.
76
60
 
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` (15 rc releases across lines 0.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0)
63
+ - **Runtime-verified:** `0.2.0-rc.2` — evidence in `.compat-results/`
64
+ <!-- host-compat:end -->
65
+
77
66
  ## Why
78
67
 
79
68
  The DSH safety ecosystem splits this across several plugins (`dsh-permission-rules`,
@@ -130,12 +119,44 @@ dsh plugin --profile web add dsh-perm-gate
130
119
 
131
120
  Full install, upgrade, migration and troubleshooting steps live in the
132
121
  [Installation guide](./INSTALL.md) — also available in
133
- [中文](./INSTALL.zh.md) / [日本語](./INSTALL.ja.md) / [한국어](./INSTALL.ko.md) /
134
- [Français](./INSTALL.fr.md) / [Deutsch](./INSTALL.de.md) / [Italiano](./INSTALL.it.md) /
135
- [Русский](./INSTALL.ru.md) / [Español](./INSTALL.es.md).
122
+ [中文](./INSTALL.zh.md) / [日本語](./INSTALL.ja.md) / [한국어](./INSTALL.ko.md).
136
123
 
137
124
  ## Configuration
138
125
 
126
+ ### AppContainer sandbox (Windows; beta)
127
+
128
+ `dsh-perm-gate` can run gate-allowed shell commands inside a **Windows AppContainer** instead of
129
+ handing them back unconfined. The container token is created with **zero network capabilities**, so
130
+ non-loopback egress is blocked by Windows Firewall (WFP) itself — not by an advisory environment
131
+ variable. The container SID is OS-derived from the fixed name `dsh-perm-gate.ac`, so the one-time
132
+ `CheckNetIsolation LoopbackExempt` (which lets the container reach `127.0.0.1`) is a per-machine
133
+ step, not a per-session one. Egress is therefore possible **only** through the network proxy:
134
+
135
+ - `sandboxEnabled` (default `false`) — master switch. When on, every **auto-allowed** shell call is
136
+ rewritten into the launcher invocation; a human-approved call is out of scope (the user approved
137
+ it consciously). If the launcher cannot be built or the OS rejects the container launch, the call
138
+ is **denied** (fail-closed) with reason `sandbox: …` — never run unconfined.
139
+ - `sandboxMode` — `workspace-write` (default; workspace gets Modify + private temp FullControl,
140
+ system dirs stay readable through the stock ALL APPLICATION PACKAGES ACEs) or `read-only`.
141
+ - `sandboxProxy` — **the proxy parameter**: empty (default) follows the builtin filtered proxy's
142
+ actual `127.0.0.1:<port>` when `networkEnabled`; an explicit URL must be loopback-bound (the
143
+ container cannot reach anything else) and destination filtering is that proxy's job.
144
+ - `sandboxLoopback` — `exempt` (default; attempt the one-time exemption, warn with the exact
145
+ elevated command if denied) or `off`.
146
+
147
+ The launcher is a small C# program shipped as source (`assets/appcontainer-launcher.cs`) and
148
+ compiled on first use by the .NET Framework compiler every Windows carries (`csc.exe`); the plugin
149
+ itself keeps zero native dependencies. Verify a machine end-to-end with:
150
+
151
+ ```
152
+ node scripts/smoke-appcontainer.mjs
153
+ ```
154
+
155
+ Known boundary: on Windows 11 25H2+ builds where the classic AppContainer creation APIs have been
156
+ removed (verified on 26200) and the mxc replacement is not yet exposed (26600+), the launcher fails
157
+ closed at the kernel step; the sandbox then denies sandboxed calls with a clear reason instead of
158
+ running them unconfined. On Windows 10 / 11 ≤ 24H2 the documented classic path applies.
159
+
139
160
  Add the plugin to `cordis.yml`:
140
161
 
141
162
  ```yaml
package/README.zh.md CHANGED
@@ -4,28 +4,13 @@
4
4
  - [中文 README](./README.zh.md)
5
5
  - [日本語 README](./README.ja.md)
6
6
  - [한국어 README](./README.ko.md)
7
- - [Français README](./README.fr.md)
8
- - [Deutsch README](./README.de.md)
9
- - [Italiano README](./README.it.md)
10
- - [Русский README](./README.ru.md)
11
- - [Español README](./README.es.md)
12
7
  - [Installation guide](./INSTALL.md)
13
8
  - [中文安装指南](./INSTALL.zh.md)
14
9
  - [日本語インストールガイド](./INSTALL.ja.md)
15
10
  - [한국어 설치 안내](./INSTALL.ko.md)
16
- - [Guide d'installation](./INSTALL.fr.md)
17
- - [Installationsanleitung](./INSTALL.de.md)
18
- - [Guida all'installazione](./INSTALL.it.md)
19
- - [Руководство по установке](./INSTALL.ru.md)
20
- - [Guía de instalación](./INSTALL.es.md)
21
11
  - [Changelog](./CHANGELOG.md)
22
12
  - [日本語 changelog](./CHANGELOG.ja.md)
23
13
  - [한국어 changelog](./CHANGELOG.ko.md)
24
- - [Français changelog](./CHANGELOG.fr.md)
25
- - [Deutsch changelog](./CHANGELOG.de.md)
26
- - [Italiano changelog](./CHANGELOG.it.md)
27
- - [Русский changelog](./CHANGELOG.ru.md)
28
- - [Español changelog](./CHANGELOG.es.md)
29
14
 
30
15
  > **兼容性说明:** v2.0.0 自带 `ja` / `ko` 字典,但官方 DSH 的 `LocaleRuntime`
31
16
  > 只暴露 `zh` / `en`(`LOCALE_IDS = ["zh", "en"]`)。在原版 DSH 上选择 `ja` / `ko`
@@ -70,6 +55,11 @@
70
55
 
71
56
  严格 fail-closed:P0 永不因 grant / 规则 / 分类器 / 人工而放行。
72
57
 
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.1.0 / 0.1.1 / 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 六条线共 15 个 rc)
60
+ - **运行时已验证:** `0.2.0-rc.2`(证据见 `.compat-results/`)
61
+ <!-- host-compat:end -->
62
+
73
63
  ## 特性
74
64
 
75
65
  - **命令白/黑名单** — 基于 **argv 分解**匹配(非裸字符串),递归下钻 `sh -c`/`bash -c`、识别管道、重定向目标、递归/强制(`rm -rf`)。
@@ -89,12 +79,38 @@ dsh plugin --profile web add dsh-perm-gate
89
79
  ```
90
80
 
91
81
  完整的安装、升级、迁移与排查步骤见[中文安装指南](./INSTALL.zh.md)(另有
92
- [English](./INSTALL.md) / [日本語](./INSTALL.ja.md) / [한국어](./INSTALL.ko.md) /
93
- [Français](./INSTALL.fr.md) / [Deutsch](./INSTALL.de.md) / [Italiano](./INSTALL.it.md) /
94
- [Русский](./INSTALL.ru.md) / [Español](./INSTALL.es.md))。
82
+ [English](./INSTALL.md) / [日本語](./INSTALL.ja.md) / [한국어](./INSTALL.ko.md))。
95
83
 
96
84
  ## 配置
97
85
 
86
+ ### AppContainer 沙盒(Windows;beta)
87
+
88
+ `dsh-perm-gate` 可以把门控放行的 shell 命令放进 **Windows AppContainer** 里执行,而不是裸交还
89
+ 宿主。容器 token **不带任何网络能力**,非回环出网被 Windows 防火墙(WFP)直接封死——不是环境
90
+ 变量那种可绕过的软约束。容器 SID 由 OS 从固定名 `dsh-perm-gate.ac` 派生,因此
91
+ `CheckNetIsolation LoopbackExempt`(放行容器访问 `127.0.0.1`)是**每台机器一次**的步骤,不是每次
92
+ 会话都要做出网因此**只能**走网络代理:
93
+
94
+ - `sandboxEnabled`(默认 `false`)——总开关。开启后每条**自动放行**的 shell 调用会被重写成启动器
95
+ 调用;人工批准的调用不在沙盒范围(用户已明确知情)。启动器无法编译、或 OS 拒绝容器启动时,
96
+ 该调用被**拒绝**(fail-closed),理由带 `sandbox: …` 前缀——绝不退回裸执行。
97
+ - `sandboxMode`——`workspace-write`(默认:工作区 Modify + 私有 temp FullControl,系统目录靠
98
+ ALL APPLICATION PACKAGES 默认 ACE 保持可读)或 `read-only`。
99
+ - `sandboxProxy`——**代理参数**:空(默认)跟随内置过滤代理实际绑定的 `127.0.0.1:<port>`(需
100
+ `networkEnabled`);显式 URL 必须绑定回环(容器只可达回环),出网对象的过滤由该代理完成。
101
+ - `sandboxLoopback`——`exempt`(默认:尝试一次性豁免,被拒时给出精确提权命令)或 `off`。
102
+
103
+ 启动器是一小段 C# 源码(`assets/appcontainer-launcher.cs`),首次使用时由 Windows 全系自带的
104
+ .NET Framework 编译器(`csc.exe`)按需编译;插件本体保持零原生依赖。真机端到端验证:
105
+
106
+ ```
107
+ node scripts/smoke-appcontainer.mjs
108
+ ```
109
+
110
+ 已知边界:在经典 AppContainer 创建 API 已被移除的 Windows 11 25H2+ 新构建上(26200 实测),
111
+ mxc 替代尚未暴露(26600+),启动器在内核步 fail-closed;此时沙盒调用一律明确拒绝,不裸跑。
112
+ Windows 10 / 11 ≤ 24H2 走文档化的经典路径。
113
+
98
114
  `cordis.yml`:
99
115
 
100
116
  ```yaml