failproofai 0.0.5 → 0.0.6-beta.1

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 (179) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +112 -0
  2. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
  3. package/.next/standalone/.next/BUILD_ID +1 -1
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/required-server-files.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  8. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  15. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  17. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  19. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  23. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  25. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/index.html +1 -1
  31. package/.next/standalone/.next/server/app/index.rsc +15 -15
  32. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  34. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  35. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  36. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  37. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  38. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  39. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  42. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  43. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  46. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  55. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  56. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a~g15g._.js → [root-of-the-server]__0rh.18_._.js} +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +6 -6
  67. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qn95h3._.js → [root-of-the-server]__0~kmh8w._.js} +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  73. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  74. package/.next/standalone/.next/server/pages/404.html +2 -2
  75. package/.next/standalone/.next/server/pages/500.html +1 -1
  76. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  78. package/.next/standalone/.next/static/chunks/{0sme4lkv.tgn-.js → 01b~z8f1ws0rk.js} +1 -1
  79. package/.next/standalone/.next/static/chunks/{0lgbwkfqmnsmc.js → 03rz6ykw-a2xi.js} +1 -1
  80. package/.next/standalone/.next/static/chunks/{17manv47o-~wp.js → 08t08igdql9yt.js} +1 -1
  81. package/.next/standalone/.next/static/chunks/09_k80d~cq2wg.js +4 -0
  82. package/.next/standalone/.next/static/chunks/{0ksdlt_1hucdm.js → 0bvhsa6zva2o..js} +1 -1
  83. package/.next/standalone/.next/static/chunks/{09ikntpt2-o9b.js → 0gbf4cphy8ksq.js} +1 -1
  84. package/.next/standalone/.next/static/chunks/{0yumumfzx_f27.js → 0v.yd0kg_ld3r.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/{13juklu.vksks.js → 0wlyoif4_kj_t.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{09e7drilkf1sn.js → 12simlrcfk3g2.js} +1 -1
  87. package/.next/standalone/.next/static/chunks/{0em7tspi4kylh.js → 12~yi9oj8av8p.js} +2 -2
  88. package/.next/standalone/.next/static/chunks/{turbopack-0r26pc8h0y_-e.js → turbopack-0o7k.hakttp4k.js} +1 -1
  89. package/.next/standalone/CHANGELOG.md +13 -0
  90. package/.next/standalone/README.md +2 -2
  91. package/.next/standalone/bun.lock +43 -85
  92. package/.next/standalone/dist/cli.mjs +107 -3
  93. package/.next/standalone/docs/ar/architecture.mdx +65 -64
  94. package/.next/standalone/docs/ar/configuration.mdx +42 -42
  95. package/.next/standalone/docs/ar/custom-policies.mdx +62 -64
  96. package/.next/standalone/docs/built-in-policies.mdx +37 -0
  97. package/.next/standalone/docs/custom-policies.mdx +1 -1
  98. package/.next/standalone/docs/de/architecture.mdx +92 -92
  99. package/.next/standalone/docs/de/configuration.mdx +34 -34
  100. package/.next/standalone/docs/de/custom-policies.mdx +49 -50
  101. package/.next/standalone/docs/es/architecture.mdx +72 -72
  102. package/.next/standalone/docs/es/configuration.mdx +25 -25
  103. package/.next/standalone/docs/es/custom-policies.mdx +48 -49
  104. package/.next/standalone/docs/examples.mdx +54 -0
  105. package/.next/standalone/docs/fr/architecture.mdx +53 -53
  106. package/.next/standalone/docs/fr/configuration.mdx +25 -25
  107. package/.next/standalone/docs/fr/custom-policies.mdx +42 -43
  108. package/.next/standalone/docs/getting-started.mdx +52 -0
  109. package/.next/standalone/docs/he/architecture.mdx +66 -66
  110. package/.next/standalone/docs/he/configuration.mdx +53 -52
  111. package/.next/standalone/docs/he/custom-policies.mdx +72 -73
  112. package/.next/standalone/docs/hi/architecture.mdx +106 -106
  113. package/.next/standalone/docs/hi/configuration.mdx +39 -39
  114. package/.next/standalone/docs/hi/custom-policies.mdx +75 -76
  115. package/.next/standalone/docs/i18n/README.ar.md +66 -66
  116. package/.next/standalone/docs/i18n/README.de.md +38 -38
  117. package/.next/standalone/docs/i18n/README.es.md +38 -38
  118. package/.next/standalone/docs/i18n/README.fr.md +42 -42
  119. package/.next/standalone/docs/i18n/README.he.md +67 -67
  120. package/.next/standalone/docs/i18n/README.hi.md +70 -70
  121. package/.next/standalone/docs/i18n/README.it.md +62 -62
  122. package/.next/standalone/docs/i18n/README.ja.md +54 -54
  123. package/.next/standalone/docs/i18n/README.ko.md +58 -58
  124. package/.next/standalone/docs/i18n/README.pt-br.md +43 -43
  125. package/.next/standalone/docs/i18n/README.ru.md +69 -69
  126. package/.next/standalone/docs/i18n/README.tr.md +76 -76
  127. package/.next/standalone/docs/i18n/README.vi.md +70 -70
  128. package/.next/standalone/docs/i18n/README.zh.md +52 -52
  129. package/.next/standalone/docs/it/architecture.mdx +54 -53
  130. package/.next/standalone/docs/it/configuration.mdx +44 -45
  131. package/.next/standalone/docs/it/custom-policies.mdx +76 -78
  132. package/.next/standalone/docs/ja/architecture.mdx +93 -93
  133. package/.next/standalone/docs/ja/configuration.mdx +47 -47
  134. package/.next/standalone/docs/ja/custom-policies.mdx +62 -63
  135. package/.next/standalone/docs/ko/architecture.mdx +66 -66
  136. package/.next/standalone/docs/ko/configuration.mdx +35 -35
  137. package/.next/standalone/docs/ko/custom-policies.mdx +71 -72
  138. package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
  139. package/.next/standalone/docs/pt-br/configuration.mdx +35 -35
  140. package/.next/standalone/docs/pt-br/custom-policies.mdx +60 -61
  141. package/.next/standalone/docs/ru/architecture.mdx +59 -60
  142. package/.next/standalone/docs/ru/configuration.mdx +52 -53
  143. package/.next/standalone/docs/ru/custom-policies.mdx +68 -69
  144. package/.next/standalone/docs/tr/architecture.mdx +124 -124
  145. package/.next/standalone/docs/tr/configuration.mdx +45 -46
  146. package/.next/standalone/docs/tr/custom-policies.mdx +75 -75
  147. package/.next/standalone/docs/vi/architecture.mdx +65 -64
  148. package/.next/standalone/docs/vi/configuration.mdx +41 -41
  149. package/.next/standalone/docs/vi/custom-policies.mdx +68 -69
  150. package/.next/standalone/docs/zh/architecture.mdx +67 -67
  151. package/.next/standalone/docs/zh/configuration.mdx +34 -34
  152. package/.next/standalone/docs/zh/custom-policies.mdx +53 -54
  153. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  154. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  155. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  156. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  157. package/.next/standalone/node_modules/next/dist/server/config-schema.js +10 -2
  158. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  159. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  160. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  161. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  162. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  163. package/.next/standalone/node_modules/next/dist/server/render.js +27 -20
  164. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  165. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  166. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  167. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  168. package/.next/standalone/node_modules/next/package.json +15 -15
  169. package/.next/standalone/package.json +2 -2
  170. package/.next/standalone/server.js +1 -1
  171. package/.next/standalone/src/hooks/builtin-policies.ts +131 -0
  172. package/README.md +2 -2
  173. package/dist/cli.mjs +107 -3
  174. package/package.json +2 -2
  175. package/src/hooks/builtin-policies.ts +131 -0
  176. package/.next/standalone/.next/static/chunks/0_yayar~bpphd.js +0 -4
  177. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_buildManifest.js +0 -0
  178. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_clientMiddlewareManifest.js +0 -0
  179. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_ssgManifest.js +0 -0
@@ -1,21 +1,21 @@
1
1
  ---
2
2
  title: Architektur
3
- description: "Wie der Hook-Handler, das Laden der Konfiguration und die Policy-Auswertung intern funktionieren"
3
+ description: "Wie der Hook-Handler, das Laden der Konfiguration und die Richtlinienauswertung intern funktionieren"
4
4
  icon: sitemap
5
5
  ---
6
6
 
7
- Dieses Dokument erklärt, wie failproofai intern funktioniert: wie das Hook-System Agent-Tool-Aufrufe abfängt, wie die Konfiguration geladen und zusammengeführt wird, wie Policies ausgewertet werden und wie das Dashboard die Agentenaktivität überwacht.
7
+ Dieses Dokument erläutert, wie failproofai intern funktioniert: wie das Hook-System Agent-Tool-Aufrufe abfängt, wie die Konfiguration geladen und zusammengeführt wird, wie Richtlinien ausgewertet werden und wie das Dashboard die Agentenaktivität überwacht.
8
8
 
9
9
  ---
10
10
 
11
11
  ## Überblick
12
12
 
13
- failproofai besteht aus zwei unabhängigen Subsystemen:
13
+ failproofai besteht aus zwei unabhängigen Teilsystemen:
14
14
 
15
- 1. **Hook-Handler** – Ein schneller CLI-Subprocess, den Claude Code bei jedem Agent-Tool-Aufruf aufruft. Wertet Policies aus und gibt eine Entscheidung zurück.
16
- 2. **Agent Monitor (Dashboard)** – Eine Next.js-Webanwendung zur Überwachung von Agentensitzungen und zur Verwaltung von Policies.
15
+ 1. **Hook-Handler** – Ein schneller CLI-Subprozess, den Claude Code bei jedem Agent-Tool-Aufruf startet. Er wertet Richtlinien aus und gibt eine Entscheidung zurück.
16
+ 2. **Agent Monitor (Dashboard)** – Eine Next.js-Webanwendung zur Überwachung von Agentensitzungen und Verwaltung von Richtlinien.
17
17
 
18
- Beide Subsysteme teilen sich Konfigurationsdateien in `~/.failproofai/` und im `.failproofai/`-Verzeichnis des Projekts, laufen jedoch als separate Prozesse und kommunizieren ausschließlich über das Dateisystem.
18
+ Beide Teilsysteme teilen sich Konfigurationsdateien in `~/.failproofai/` und im `.failproofai/`-Verzeichnis des Projekts, laufen aber als separate Prozesse und kommunizieren ausschließlich über das Dateisystem.
19
19
 
20
20
  ---
21
21
 
@@ -23,7 +23,7 @@ Beide Subsysteme teilen sich Konfigurationsdateien in `~/.failproofai/` und im `
23
23
 
24
24
  ### Integration mit Claude Code
25
25
 
26
- Wenn Sie `failproofai policies --install` ausführen, schreibt es folgende Einträge in `~/.claude/settings.json`:
26
+ Wenn Sie `failproofai policies --install` ausführen, werden Einträge wie diese in `~/.claude/settings.json` geschrieben:
27
27
 
28
28
  ```json
29
29
  {
@@ -44,7 +44,7 @@ Wenn Sie `failproofai policies --install` ausführen, schreibt es folgende Eintr
44
44
  }
45
45
  ```
46
46
 
47
- Claude Code ruft daraufhin `failproofai --hook PreToolUse` als Subprocess vor jedem Tool-Aufruf auf und übergibt dabei einen JSON-Payload über stdin.
47
+ Claude Code startet dann `failproofai --hook PreToolUse` als Subprozess vor jedem Tool-Aufruf und übergibt dabei ein JSON-Payload über stdin.
48
48
 
49
49
  ### Payload-Format
50
50
 
@@ -60,13 +60,13 @@ Claude Code ruft daraufhin `failproofai --hook PreToolUse` als Subprocess vor je
60
60
  }
61
61
  ```
62
62
 
63
- Bei `PostToolUse`-Events enthält der Payload zusätzlich `tool_result` mit der Ausgabe des Tools.
63
+ Bei `PostToolUse`-Ereignissen enthält das Payload zusätzlich `tool_result` mit der Ausgabe des Tools.
64
64
 
65
- Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit überschreiten, werden verworfen und alle Policies erlauben implizit.
65
+ Der Handler erzwingt ein stdin-Limit von 1 MB. Payloads, die dieses Limit überschreiten, werden verworfen und alle Richtlinien erlauben implizit.
66
66
 
67
67
  ### Antwortformat
68
68
 
69
- **Deny (PreToolUse):**
69
+ **Ablehnen (PreToolUse):**
70
70
  ```json
71
71
  {
72
72
  "hookSpecificOutput": {
@@ -76,7 +76,7 @@ Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit übe
76
76
  }
77
77
  ```
78
78
 
79
- **Deny (PostToolUse):**
79
+ **Ablehnen (PostToolUse):**
80
80
  ```json
81
81
  {
82
82
  "hookSpecificOutput": {
@@ -85,7 +85,7 @@ Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit übe
85
85
  }
86
86
  ```
87
87
 
88
- **Instruct (alle Events außer Stop):**
88
+ **Anweisung (beliebiges Ereignis außer Stop):**
89
89
  ```json
90
90
  {
91
91
  "hookSpecificOutput": {
@@ -94,17 +94,17 @@ Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit übe
94
94
  }
95
95
  ```
96
96
 
97
- **Stop-Event instruct:**
97
+ **Stop-Ereignis mit Anweisung:**
98
98
  - Exit-Code: `2`
99
- - Grund wird nach stderr geschrieben (nicht stdout)
99
+ - Begründung wird in stderr geschrieben (nicht stdout)
100
100
 
101
- **Allow:**
101
+ **Erlauben:**
102
102
  - Exit-Code: `0`
103
103
  - Leerer stdout
104
104
 
105
- **Allow mit Nachricht:**
105
+ **Erlauben mit Nachricht:**
106
106
 
107
- `allow(message)` ermöglicht einer Policy, informativen Kontext an Claude zurückzusenden, auch wenn die Operation erlaubt wird. Der Hook-Handler schreibt folgendes JSON nach **stdout** (keine Konfigurationsdatei – dies ist die Antwort des Handlers an Claude Code, genau wie deny- und instruct-Antworten oben):
107
+ `allow(message)` erlaubt es einer Richtlinie, informationellen Kontext an Claude zurückzusenden, auch wenn die Operation erlaubt ist. Der Hook-Handler schreibt folgenden JSON-Inhalt in **stdout** (nicht in eine Konfigurationsdatei – dies ist die Antwort des Handlers an Claude Code, genau wie Ablehnen- und Anweisungsantworten oben):
108
108
 
109
109
  ```json
110
110
  // Written to stdout by the hook handler process
@@ -115,8 +115,8 @@ Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit übe
115
115
  }
116
116
  ```
117
117
  - Exit-Code: `0` (Operation ist erlaubt)
118
- - Wenn mehrere Policies `allow` mit einer Nachricht zurückgeben, werden ihre Nachrichten mit Zeilenumbrüchen zu einem einzigen `additionalContext`-String verbunden
119
- - Wenn keine Policy eine Nachricht liefert, ist stdout leer (wie zuvor)
118
+ - Wenn mehrere Richtlinien `allow` mit einer Nachricht zurückgeben, werden ihre Nachrichten mit Zeilenumbrüchen zu einem einzelnen `additionalContext`-String zusammengefügt
119
+ - Wenn keine Richtlinie eine Nachricht liefert, ist stdout leer (wie zuvor)
120
120
 
121
121
  ### Verarbeitungspipeline
122
122
 
@@ -124,28 +124,28 @@ Der Handler setzt ein Limit von 1 MB für stdin. Payloads, die dieses Limit übe
124
124
 
125
125
  ```text
126
126
  stdin JSON
127
- parse payload (max 1 MB)
128
- extract session metadata (session_id, cwd, tool_name, tool_input, etc.)
129
- → readMergedHooksConfig(cwd) ← merges project + local + global config
130
- register enabled builtin policies with resolved params
131
- load custom policies from customPoliciesPath (if set)
132
- register custom policies into policy registry
133
- evaluate all policies (builtins first, then custom)
134
- first deny short-circuits
135
- → instruct decisions accumulate
136
- → allow messages accumulate
137
- write JSON decision to stdout
138
- persist event to ~/.failproofai/hook-activity.jsonl
139
- exit
127
+ Payload parsen (max. 1 MB)
128
+ Sitzungsmetadaten extrahieren (session_id, cwd, tool_name, tool_input, etc.)
129
+ → readMergedHooksConfig(cwd) ← führt Projekt-, lokale und globale Konfiguration zusammen
130
+ aktivierte eingebaute Richtlinien mit aufgelösten Parametern registrieren
131
+ benutzerdefinierte Richtlinien aus customPoliciesPath laden (falls gesetzt)
132
+ benutzerdefinierte Richtlinien in die Policy-Registry registrieren
133
+ alle Richtlinien auswerten (zuerst eingebaute, dann benutzerdefinierte)
134
+ erstes deny unterbricht sofort die Auswertung
135
+ → instruct-Entscheidungen werden gesammelt
136
+ → allow-Nachrichten werden gesammelt
137
+ → JSON-Entscheidung in stdout schreiben
138
+ Ereignis in ~/.failproofai/hook-activity.jsonl speichern
139
+ beenden
140
140
  ```
141
141
 
142
142
  Der gesamte Prozess läuft bei typischen Payloads ohne LLM-Aufrufe in unter 100 ms ab.
143
143
 
144
144
  ---
145
145
 
146
- ## Konfiguration laden
146
+ ## Konfigurationsladen
147
147
 
148
- `src/hooks/hooks-config.ts` implementiert das dreistufige Laden der Konfiguration.
148
+ `src/hooks/hooks-config.ts` implementiert das Laden der Konfiguration mit drei Geltungsbereichen.
149
149
 
150
150
  ```text
151
151
  [1] {cwd}/.failproofai/policies-config.json ← Projekt (höchste Priorität)
@@ -154,39 +154,39 @@ Der gesamte Prozess läuft bei typischen Payloads ohne LLM-Aufrufe in unter 100
154
154
  ```
155
155
 
156
156
  Zusammenführungslogik:
157
- - `enabledPolicies` – deduplizierte Vereinigung aller drei Dateien
158
- - `policyParams` – pro Policy-Schlüssel gewinnt die erste Datei, die ihn definiert, vollständig
159
- - `customPoliciesPath` – die erste Datei, die ihn definiert, gewinnt
160
- - `llm` – die erste Datei, die ihn definiert, gewinnt
157
+ - `enabledPolicies` – deduplizierte Vereinigung aus allen drei Dateien
158
+ - `policyParams` – pro Richtlinienschlüssel gewinnt die erste Datei, die ihn definiert, vollständig
159
+ - `customPoliciesPath` – die erste Datei, die diesen Wert definiert, gewinnt
160
+ - `llm` – die erste Datei, die diesen Wert definiert, gewinnt
161
161
 
162
- Das Web-Dashboard verwendet `readHooksConfig()` (nur global) zum Lesen und Schreiben, da es nicht mit einem Projekt-cwd aufgerufen wird.
162
+ Das Web-Dashboard verwendet `readHooksConfig()` (nur global) zum Lesen und Schreiben, da es ohne Projekt-cwd aufgerufen wird.
163
163
 
164
164
  ---
165
165
 
166
- ## Policy-Auswertung
166
+ ## Richtlinienauswertung
167
167
 
168
- `src/hooks/policy-evaluator.ts` führt Policies der Reihe nach aus.
168
+ `src/hooks/policy-evaluator.ts` führt Richtlinien der Reihe nach aus.
169
169
 
170
- Für jede Policy:
170
+ Für jede Richtlinie:
171
171
 
172
- 1. Das `params`-Schema der Policy nachschlagen (sofern vorhanden).
172
+ 1. Das `params`-Schema der Richtlinie nachschlagen (falls vorhanden).
173
173
  2. `policyParams[policy.name]` aus der zusammengeführten Konfiguration lesen.
174
- 3. Benutzerdefinierte Werte über Schema-Standardwerte zusammenführen, um `ctx.params` zu erzeugen.
174
+ 3. Vom Benutzer angegebene Werte über Schema-Standardwerte legen, um `ctx.params` zu erzeugen.
175
175
  4. `policy.fn(ctx)` mit dem aufgelösten Kontext aufrufen.
176
- 5. Ist das Ergebnis `deny`, sofort stoppen und diese Entscheidung zurückgeben.
177
- 6. Ist das Ergebnis `instruct`, die Nachricht sammeln und fortfahren.
178
- 7. Ist das Ergebnis `allow`, mit der nächsten Policy fortfahren.
176
+ 5. Wenn das Ergebnis `deny` ist, sofort abbrechen und diese Entscheidung zurückgeben.
177
+ 6. Wenn das Ergebnis `instruct` ist, die Nachricht sammeln und fortfahren.
178
+ 7. Wenn das Ergebnis `allow` ist, mit der nächsten Richtlinie fortfahren.
179
179
 
180
- Nach Ausführung aller Policies:
181
- - Wenn ein `deny` zurückgegeben wurde, die Deny-Antwort ausgeben.
182
- - Wenn `instruct`-Rückgaben gesammelt wurden, eine einzelne instruct-Antwort mit allen verbundenen Nachrichten ausgeben.
183
- - Andernfalls eine Allow-Antwort ausgeben (leerer stdout, Exit 0).
180
+ Nach dem Durchlauf aller Richtlinien:
181
+ - Falls ein `deny` zurückgegeben wurde, die Ablehnungsantwort ausgeben.
182
+ - Falls `instruct`-Rückgaben gesammelt wurden, eine einzelne instruct-Antwort mit allen zusammengefügten Nachrichten ausgeben.
183
+ - Andernfalls eine allow-Antwort ausgeben (leerer stdout, Exit 0).
184
184
 
185
185
  ---
186
186
 
187
- ## Eingebaute Policies
187
+ ## Eingebaute Richtlinien
188
188
 
189
- `src/hooks/builtin-policies.ts` definiert alle 26 eingebauten Policies als `BuiltinPolicyDefinition`-Objekte:
189
+ `src/hooks/builtin-policies.ts` definiert alle 26 eingebauten Richtlinien als `BuiltinPolicyDefinition`-Objekte:
190
190
 
191
191
  ```typescript
192
192
  interface BuiltinPolicyDefinition {
@@ -204,15 +204,15 @@ interface BuiltinPolicyDefinition {
204
204
  }
205
205
  ```
206
206
 
207
- Policies, die `params` akzeptieren, deklarieren ein `PolicyParamsSchema` mit Typen und Standardwerten für jeden Parameter. Der Policy-Evaluator injiziert aufgelöste Werte in `ctx.params`, bevor `fn` aufgerufen wird. Policy-Funktionen lesen `ctx.params` ohne Null-Prüfung, da Standardwerte immer zuerst angewendet werden.
207
+ Richtlinien, die `params` akzeptieren, deklarieren ein `PolicyParamsSchema` mit Typen und Standardwerten für jeden Parameter. Der Richtlinienauswerter injiziert aufgelöste Werte in `ctx.params`, bevor `fn` aufgerufen wird. Richtlinienfunktionen lesen `ctx.params` ohne Null-Prüfung, da Standardwerte immer zuerst angewendet werden.
208
208
 
209
- Pattern-Matching innerhalb von Policies verwendet geparste Befehlstoken (argv) statt einfachen String-Vergleichen. Dies verhindert Umgehungsversuche durch Shell-Operator-Injection (z. B. kann ein Muster für `sudo systemctl status *` nicht durch Anhängen von `; rm -rf /` an den Befehl umgangen werden).
209
+ Das Muster-Matching in Richtlinien verwendet geparste Befehls-Token (argv), keine rohe Zeichenkettenübereinstimmung. Dies verhindert Umgehungsversuche durch Shell-Operator-Injection (z. B. kann ein Muster für `sudo systemctl status *` nicht durch Anhängen von `; rm -rf /` an den Befehl umgangen werden).
210
210
 
211
211
  ---
212
212
 
213
- ## Benutzerdefinierte Policies
213
+ ## Benutzerdefinierte Richtlinien
214
214
 
215
- `src/hooks/custom-hooks-registry.ts` implementiert eine `globalThis`-basierte Registry:
215
+ `src/hooks/custom-hooks-registry.ts` implementiert eine auf `globalThis` basierende Registry:
216
216
 
217
217
  ```typescript
218
218
  const REGISTRY_KEY = "__failproofai_custom_hooks__";
@@ -225,25 +225,25 @@ export function getCustomHooks(): CustomHook[] { ... }
225
225
  export function clearCustomHooks(): void { ... } // used in tests
226
226
  ```
227
227
 
228
- `src/hooks/custom-hooks-loader.ts` lädt die Policy-Datei des Benutzers:
228
+ `src/hooks/custom-hooks-loader.ts` lädt die Richtliniendatei des Benutzers:
229
229
 
230
230
  1. `customPoliciesPath` aus der Konfiguration lesen; überspringen, falls nicht vorhanden.
231
- 2. Zu absolutem Pfad auflösen; prüfen, ob die Datei existiert.
232
- 3. Alle `from "failproofai"`-Imports zum tatsächlichen dist-Pfad umschreiben, damit `customPolicies` zur selben `globalThis`-Registry aufgelöst wird.
233
- 4. Transitive lokale Imports rekursiv umschreiben, um ESM-Kompatibilität sicherzustellen.
231
+ 2. Zum absoluten Pfad auflösen; prüfen, ob die Datei existiert.
232
+ 3. Alle `from "failproofai"`-Importe in den tatsächlichen dist-Pfad umschreiben, damit `customPolicies` zur gleichen `globalThis`-Registry aufgelöst wird.
233
+ 4. Transitive lokale Importe rekursiv umschreiben, um ESM-Kompatibilität sicherzustellen.
234
234
  5. Temporäre `.mjs`-Dateien schreiben und die Einstiegsdatei per `import()` laden.
235
235
  6. `getCustomHooks()` aufrufen, um registrierte Hooks abzurufen.
236
236
  7. Alle temporären Dateien in einem `finally`-Block bereinigen.
237
237
 
238
- Bei jedem Fehler (Datei nicht gefunden, Syntaxfehler, Import-Fehler) wird der Fehler in `~/.failproofai/hook.log` protokolliert und der Loader gibt ein leeres Array zurück. Eingebaute Policies sind davon nicht betroffen.
238
+ Bei jedem Fehler (Datei nicht gefunden, Syntaxfehler, Import-Fehler) wird der Fehler in `~/.failproofai/hook.log` protokolliert und der Loader gibt ein leeres Array zurück. Eingebaute Richtlinien sind davon nicht betroffen.
239
239
 
240
- Benutzerdefinierte Policies werden nach allen eingebauten Policies ausgewertet. Ein `deny` einer benutzerdefinierten Policy unterbricht dennoch weitere benutzerdefinierte Policies (alle eingebauten Policies sind zu diesem Zeitpunkt jedoch bereits ausgeführt worden).
240
+ Benutzerdefinierte Richtlinien werden nach allen eingebauten Richtlinien ausgewertet. Ein `deny` einer benutzerdefinierten Richtlinie unterbricht weiterhin die Auswertung weiterer benutzerdefinierter Richtlinien (aber alle eingebauten wurden zu diesem Zeitpunkt bereits ausgeführt).
241
241
 
242
242
  ---
243
243
 
244
244
  ## Aktivitätsprotokollierung
245
245
 
246
- Nach jedem Hook-Event hängt der Handler eine JSONL-Zeile an `~/.failproofai/hook-activity.jsonl` an:
246
+ Nach jedem Hook-Ereignis fügt der Handler eine JSONL-Zeile an `~/.failproofai/hook-activity.jsonl` an:
247
247
 
248
248
  ```json
249
249
  {
@@ -258,7 +258,7 @@ Nach jedem Hook-Event hängt der Handler eine JSONL-Zeile an `~/.failproofai/hoo
258
258
  }
259
259
  ```
260
260
 
261
- Eine Zeile pro Policy, die eine Nicht-Allow-Entscheidung getroffen hat. Allow-Entscheidungen werden nicht protokolliert (um die Dateigröße gering zu halten).
261
+ Eine Zeile pro Richtlinie, die eine Nicht-allow-Entscheidung getroffen hat. Allow-Entscheidungen werden nicht protokolliert (um die Dateigröße gering zu halten).
262
262
 
263
263
  ---
264
264
 
@@ -272,13 +272,13 @@ app/
272
272
  projects/page.tsx ← Server-Komponente: alle Claude-Projekte auflisten
273
273
  project/[name]/page.tsx ← Server-Komponente: Sitzungen in einem Projekt auflisten
274
274
  project/[name]/session/
275
- [sessionId]/page.tsx ← Server-Komponente: Sitzungsansicht rendern
276
- policies/page.tsx ← Client-Komponente: Policy-Verwaltung + Aktivitätslog
275
+ [sessionId]/page.tsx ← Server-Komponente: Sitzungs-Viewer rendern
276
+ policies/page.tsx ← Client-Komponente: Richtlinienverwaltung + Aktivitätsprotokoll
277
277
  actions/
278
- get-hooks-config.ts ← Konfiguration + Policy-Liste lesen
279
- update-hooks-config.ts ← Policy ein-/ausschalten
280
- update-policy-params.ts ← Policy-Parameter aktualisieren
281
- get-hook-activity.ts ← Aktivitätslog paginieren/durchsuchen
278
+ get-hooks-config.ts ← Konfiguration + Richtlinienliste lesen
279
+ update-hooks-config.ts ← Richtlinie aktivieren/deaktivieren
280
+ update-policy-params.ts ← Richtlinienparameter aktualisieren
281
+ get-hook-activity.ts ← Aktivitätsprotokoll paginieren/durchsuchen
282
282
  install-hooks-web.ts ← Hooks über den Browser installieren/entfernen
283
283
  api/
284
284
  download/[project]/[session]/route.ts ← Sitzung als ZIP/JSONL exportieren
@@ -286,16 +286,16 @@ app/
286
286
 
287
287
  **Datenfluss:**
288
288
 
289
- - Seitenkomponenten rufen `lib/projects.ts` und `lib/log-entries.ts` auf, um Projekt-/Sitzungsdaten direkt aus dem Dateisystem zu lesen (keine API-Schicht für Lesevorgänge).
290
- - Die Policies-Seite verwendet Server Actions für alle Mutationen (Umschalten, Parameter-Aktualisierung, Installieren/Entfernen).
291
- - Der Sitzungs-Viewer parst das JSONL-Transkriptformat von Claude und rendert einen Zeitstrahl von Nachrichten und Tool-Aufrufen.
289
+ - Seitenkomponenten rufen `lib/projects.ts` und `lib/log-entries.ts` auf, um Projekt- und Sitzungsdaten direkt aus dem Dateisystem zu lesen (keine API-Schicht für Lesevorgänge).
290
+ - Die Policies-Seite verwendet Server Actions für alle Mutationen (Umschalten, Parameteraktualisierung, Installieren/Entfernen).
291
+ - Der Sitzungs-Viewer parst das JSONL-Transkriptformat von Claude und rendert eine Zeitachse mit Nachrichten und Tool-Aufrufen.
292
292
 
293
293
  **Wesentliche Designentscheidungen:**
294
294
 
295
295
  - Keine Datenbank – der gesamte persistente Zustand liegt in einfachen Dateien (`~/.failproofai/`, `~/.claude/projects/`).
296
- - Server Actions für Mutationen – kein REST-API für CRUD-Operationen erforderlich.
297
- - React Server Components für Lese-Seiten – schnelleres initiales Laden, kein Client-Bundle für Datenabruf.
298
- - Client-Komponenten nur dort, wo Interaktivität benötigt wird (Policy-Umschalter, Aktivitätssuche, Log-Viewer).
296
+ - Server Actions für Mutationen – keine REST-API für CRUD-Operationen erforderlich.
297
+ - React Server Components für Leseseiten – schnelleres initiales Laden, kein Client-Bundle für das Datenabrufen.
298
+ - Client-Komponenten nur dort, wo Interaktivität benötigt wird (Richtlinien-Schalter, Aktivitätssuche, Log-Viewer).
299
299
 
300
300
  ---
301
301
 
@@ -304,29 +304,29 @@ app/
304
304
  ```text
305
305
  failproofai/
306
306
  ├── bin/
307
- │ └── failproofai.mjs # CLI-Router (hook / dashboard / install / etc.)
307
+ │ └── failproofai.mjs # CLI-Router (Hook / Dashboard / Install / etc.)
308
308
  ├── src/hooks/
309
- │ ├── handler.ts # Hook-Event-Pipeline
310
- │ ├── builtin-policies.ts # 26 Policy-Definitionen
311
- │ ├── policy-evaluator.ts # Policy-Ausführungs-Engine
312
- │ ├── policy-registry.ts # Policy-Registrierung und -Nachschlagen
309
+ │ ├── handler.ts # Hook-Ereignis-Pipeline
310
+ │ ├── builtin-policies.ts # 26 Richtliniendefinitionen
311
+ │ ├── policy-evaluator.ts # Richtlinienausführungs-Engine
312
+ │ ├── policy-registry.ts # Richtlinienregistrierung und -suche
313
313
  │ ├── policy-types.ts # TypeScript-Interfaces
314
- │ ├── hooks-config.ts # Mehrstufiges Laden der Konfiguration
314
+ │ ├── hooks-config.ts # Konfigurationsladen mit mehreren Geltungsbereichen
315
315
  │ ├── custom-hooks-registry.ts # globalThis-basierte Hook-Registry
316
316
  │ ├── custom-hooks-loader.ts # ESM-Loader für benutzerdefinierte JS-Hooks
317
- │ ├── manager.ts # Installations-/Entfernen-/Auflistungsoperationen
318
- │ ├── install-prompt.ts # Interaktive Policy-Auswahlabfrage
319
- │ ├── hook-logger.ts # Protokollierung nach hook.log
320
- │ ├── hook-activity-store.ts # Aktivität nach hook-activity.jsonl persistieren
321
- │ └── llm-client.ts # LLM-API-Client (für KI-gestützte Policies)
317
+ │ ├── manager.ts # Install-, Entfernen- und Listen-Operationen
318
+ │ ├── install-prompt.ts # Interaktive Richtlinienauswahl-Eingabeaufforderung
319
+ │ ├── hook-logger.ts # Protokollierung in hook.log
320
+ │ ├── hook-activity-store.ts # Aktivitäten in hook-activity.jsonl speichern
321
+ │ └── llm-client.ts # LLM-API-Client (für KI-gestützte Richtlinien)
322
322
  ├── app/ # Next.js-Dashboard (Seiten + Server Actions)
323
- ├── lib/ # Gemeinsame Hilfsfunktionen
323
+ ├── lib/ # Gemeinsam genutzte Hilfsfunktionen
324
324
  │ ├── projects.ts # Claude-Projekte aus dem Dateisystem aufzählen
325
325
  │ ├── log-entries.ts # Claude-Transkript-JSONL-Format parsen
326
326
  │ ├── paths.ts # Systempfade auflösen
327
327
  │ └── ...
328
- ├── components/ # Gemeinsame React-UI-Komponenten
329
- ├── contexts/ # React-Context-Provider (Theme, Auto-Refresh, Telemetrie)
328
+ ├── components/ # Gemeinsam genutzte React-UI-Komponenten
329
+ ├── contexts/ # React-Kontext-Provider (Theme, Auto-Refresh, Telemetrie)
330
330
  ├── examples/ # Beispieldateien für benutzerdefinierte Hooks
331
331
  └── __tests__/ # Unit- und E2E-Tests
332
332
  ```
@@ -1,28 +1,28 @@
1
1
  ---
2
2
  title: Konfiguration
3
- description: "Konfigurationsdateiformat, Drei-Scope-System und Zusammenführungsregeln"
3
+ description: "Konfigurationsdateiformat, Drei-Ebenen-System und Zusammenführungsregeln"
4
4
  icon: gear
5
5
  ---
6
6
 
7
- failproofai verwendet JSON-Konfigurationsdateien, um festzulegen, welche Richtlinien aktiv sind, wie sie sich verhalten und woher benutzerdefinierte Richtlinien geladen werden. Die Konfiguration ist so gestaltet, dass sie einfach mit dem Team geteilt werden kann committen Sie sie in Ihr Repository und jeder Entwickler erhält dasselbe Sicherheitsnetz für Agenten.
7
+ failproofai verwendet JSON-Konfigurationsdateien, um festzulegen, welche Richtlinien aktiv sind, wie sie sich verhalten und woher benutzerdefinierte Richtlinien geladen werden. Die Konfiguration ist darauf ausgelegt, einfach mit dem Team geteilt zu werden – checke sie in dein Repository ein, und jeder Entwickler profitiert vom gleichen Sicherheitsnetz für den Agenten.
8
8
 
9
9
  ---
10
10
 
11
- ## Konfigurationsscopes
11
+ ## Konfigurationsebenen
12
12
 
13
- Es gibt drei Konfigurationsscopes, die in Prioritätsreihenfolge ausgewertet werden:
13
+ Es gibt drei Konfigurationsebenen, die in Prioritätsreihenfolge ausgewertet werden:
14
14
 
15
- | Scope | Dateipfad | Zweck |
15
+ | Ebene | Dateipfad | Zweck |
16
16
  |-------|-----------|-------|
17
- | **project** | `.failproofai/policies-config.json` | Repository-spezifische Einstellungen, in die Versionsverwaltung eingecheckt |
18
- | **local** | `.failproofai/policies-config.local.json` | Persönliche repository-spezifische Überschreibungen, per .gitignore ausgeschlossen |
17
+ | **project** | `.failproofai/policies-config.json` | Repo-spezifische Einstellungen, in die Versionskontrolle eingecheckt |
18
+ | **local** | `.failproofai/policies-config.local.json` | Persönliche Repo-spezifische Überschreibungen, via gitignore ausgeschlossen |
19
19
  | **global** | `~/.failproofai/policies-config.json` | Benutzerweite Standardeinstellungen für alle Projekte |
20
20
 
21
- Wenn failproofai ein Hook-Ereignis empfängt, lädt und zusammenführt es alle drei Dateien, die für das aktuelle Arbeitsverzeichnis vorhanden sind.
21
+ Wenn failproofai ein Hook-Ereignis empfängt, lädt und fügt es alle drei Dateien zusammen, die für das aktuelle Arbeitsverzeichnis vorhanden sind.
22
22
 
23
23
  ### Zusammenführungsregeln
24
24
 
25
- **`enabledPolicies`** – die Vereinigung aller drei Scopes. Eine Richtlinie, die auf irgendeiner Ebene aktiviert ist, ist aktiv.
25
+ **`enabledPolicies`** – die Vereinigung aller drei Ebenen. Eine Richtlinie, die auf einer beliebigen Ebene aktiviert ist, ist aktiv.
26
26
 
27
27
  ```text
28
28
  project: ["block-sudo"]
@@ -32,13 +32,13 @@ global: ["block-sudo", "sanitize-api-keys"]
32
32
  resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← deduplizierte Vereinigung
33
33
  ```
34
34
 
35
- **`policyParams`** – der erste Scope, der Parameter für eine bestimmte Richtlinie definiert, gewinnt vollständig. Es findet kein tiefes Zusammenführen von Werten innerhalb der Parameter einer Richtlinie statt.
35
+ **`policyParams`** – die erste Ebene, die Parameter für eine bestimmte Richtlinie definiert, gewinnt vollständig. Es findet kein tiefes Zusammenführen von Werten innerhalb der Parameter einer Richtlinie statt.
36
36
 
37
37
  ```text
38
38
  project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
39
39
  global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
40
40
 
41
- resolved: { allowPatterns: ["sudo apt-get update"] } ← project gewinnt, global ignoriert
41
+ resolved: { allowPatterns: ["sudo apt-get update"] } ← project gewinnt, global wird ignoriert
42
42
  ```
43
43
 
44
44
  ```text
@@ -49,9 +49,9 @@ global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
49
49
  resolved: { allowPatterns: ["sudo systemctl status"] } ← fällt auf global zurück
50
50
  ```
51
51
 
52
- **`customPoliciesPath`** – der erste Scope, der diesen Wert definiert, gewinnt.
52
+ **`customPoliciesPath`** – die erste Ebene, die diesen Wert definiert, gewinnt.
53
53
 
54
- **`llm`** – der erste Scope, der diesen Wert definiert, gewinnt.
54
+ **`llm`** – die erste Ebene, die diesen Wert definiert, gewinnt.
55
55
 
56
56
  ---
57
57
 
@@ -102,25 +102,25 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← fällt auf global zu
102
102
 
103
103
  Typ: `string[]`
104
104
 
105
- Liste der zu aktivierenden Richtliniennamen. Die Namen müssen exakt mit den Richtlinienbezeichnern übereinstimmen, die von `failproofai policies` angezeigt werden. Die vollständige Liste finden Sie unter [Integrierte Richtlinien](/de/built-in-policies).
105
+ Liste der zu aktivierenden Richtliniennamen. Die Namen müssen exakt mit den Richtlinienbezeichnern übereinstimmen, die von `failproofai policies` angezeigt werden. Eine vollständige Liste findest du unter [Integrierte Richtlinien](/de/built-in-policies).
106
106
 
107
- Richtlinien, die nicht in `enabledPolicies` aufgeführt sind, sind inaktiv, auch wenn sie Einträge in `policyParams` haben.
107
+ Richtlinien, die nicht in `enabledPolicies` aufgeführt sind, sind inaktiv auch wenn sie Einträge in `policyParams` haben.
108
108
 
109
109
  ### `policyParams`
110
110
 
111
111
  Typ: `Record<string, Record<string, unknown>>`
112
112
 
113
- Richtlinienspezifische Parameterüberschreibungen. Der äußere Schlüssel ist der Richtlinienname; die inneren Schlüssel sind richtlinienspezifisch. Jede Richtlinie dokumentiert ihre verfügbaren Parameter unter [Integrierte Richtlinien](/de/built-in-policies).
113
+ Richtlinienspezifische Parameterüberschreibungen. Der äußere Schlüssel ist der Richtlinienname, die inneren Schlüssel sind richtlinienspezifisch. Jede Richtlinie dokumentiert ihre verfügbaren Parameter unter [Integrierte Richtlinien](/de/built-in-policies).
114
114
 
115
- Wenn eine Richtlinie Parameter hat, Sie diese aber nicht angeben, werden die integrierten Standardwerte der Richtlinie verwendet. Benutzer, die `policyParams` gar nicht konfigurieren, erhalten dasselbe Verhalten wie in früheren Versionen.
115
+ Wenn eine Richtlinie Parameter hat, du diese aber nicht angibst, werden die integrierten Standardwerte der Richtlinie verwendet. Benutzer, die `policyParams` gar nicht konfigurieren, erhalten identisches Verhalten wie in früheren Versionen.
116
116
 
117
- Unbekannte Schlüssel innerhalb des Parameterblocks einer Richtlinie werden zum Zeitpunkt der Hook-Auslösung stillschweigend ignoriert, aber als Warnungen markiert, wenn Sie `failproofai policies` ausführen.
117
+ Unbekannte Schlüssel innerhalb des Parameterblocks einer Richtlinie werden zum Zeitpunkt der Hook-Ausführung still ignoriert, aber als Warnungen ausgegeben, wenn du `failproofai policies` ausführst.
118
118
 
119
119
  #### `hint` (übergreifend)
120
120
 
121
121
  Typ: `string` (optional)
122
122
 
123
- Eine Nachricht, die an die Begründung angehängt wird, wenn eine Richtlinie `deny` oder `instruct` zurückgibt. Verwenden Sie diesen Wert, um Claude handlungsrelevante Hinweise zu geben, ohne die Richtlinie selbst zu ändern.
123
+ Eine Nachricht, die dem Grund hinzugefügt wird, wenn eine Richtlinie `deny` oder `instruct` zurückgibt. Verwende sie, um Claude handlungsorientierte Hinweise zu geben, ohne die Richtlinie selbst zu ändern.
124
124
 
125
125
  Funktioniert mit jedem Richtlinientyp – integriert, benutzerdefiniert (`custom/`), Projektkonvention (`.failproofai-project/`) oder Benutzerkonvention (`.failproofai-user/`).
126
126
 
@@ -141,9 +141,9 @@ Funktioniert mit jedem Richtlinientyp – integriert, benutzerdefiniert (`custom
141
141
  }
142
142
  ```
143
143
 
144
- Wenn `block-force-push` verweigert, sieht Claude: *„Force-Pushing ist blockiert. Versuche stattdessen, einen neuen Branch zu erstellen."*
144
+ Wenn `block-force-push` ablehnt, sieht Claude: *„Force-Pushing ist blockiert. Try creating a fresh branch instead."*
145
145
 
146
- Nicht-String-Werte und leere Zeichenketten werden stillschweigend ignoriert. Wenn `hint` nicht gesetzt ist, bleibt das Verhalten unverändert (abwärtskompatibel).
146
+ Nicht-String-Werte und leere Zeichenfolgen werden still ignoriert. Wenn `hint` nicht gesetzt ist, bleibt das Verhalten unverändert (abwärtskompatibel).
147
147
 
148
148
  ### `customPoliciesPath`
149
149
 
@@ -151,24 +151,24 @@ Typ: `string` (absoluter Pfad)
151
151
 
152
152
  Pfad zu einer JavaScript-Datei mit benutzerdefinierten Hook-Richtlinien. Dieser Wert wird automatisch durch `failproofai policies --install --custom <path>` gesetzt (der Pfad wird vor der Speicherung in einen absoluten Pfad aufgelöst).
153
153
 
154
- Die Datei wird bei jedem Hook-Ereignis neu geladen – es gibt kein Caching. Informationen zur Erstellung finden Sie unter [Benutzerdefinierte Richtlinien](/de/custom-policies).
154
+ Die Datei wird bei jedem Hook-Ereignis neu geladen – es gibt kein Caching. Einzelheiten zur Erstellung findest du unter [Benutzerdefinierte Richtlinien](/de/custom-policies).
155
155
 
156
156
  ### Konventionsbasierte Richtlinien
157
157
 
158
158
  Zusätzlich zum expliziten `customPoliciesPath` erkennt und lädt failproofai automatisch Richtliniendateien aus `.failproofai/policies/`-Verzeichnissen:
159
159
 
160
- | Ebene | Verzeichnis | Scope |
161
- |-------|-------------|-------|
162
- | Projekt | `.failproofai/policies/` | Wird mit dem Team über die Versionsverwaltung geteilt |
160
+ | Ebene | Verzeichnis | Geltungsbereich |
161
+ |-------|-------------|-----------------|
162
+ | Projekt | `.failproofai/policies/` | Gemeinsam mit dem Team über die Versionskontrolle |
163
163
  | Benutzer | `~/.failproofai/policies/` | Persönlich, gilt für alle Projekte |
164
164
 
165
165
  **Dateiabgleich:** Es werden nur Dateien geladen, die dem Muster `*policies.{js,mjs,ts}` entsprechen (z. B. `security-policies.mjs`, `workflow-policies.js`). Andere Dateien im Verzeichnis werden ignoriert.
166
166
 
167
- **Keine Konfiguration erforderlich:** Konventionsrichtlinien benötigen keine Einträge in `policies-config.json`. Legen Sie die Dateien einfach im Verzeichnis ab und sie werden beim nächsten Hook-Ereignis aufgenommen.
167
+ **Keine Konfiguration nötig:** Konventionsrichtlinien benötigen keine Einträge in `policies-config.json`. Lege die Dateien einfach im Verzeichnis ab, und sie werden beim nächsten Hook-Ereignis aufgegriffen.
168
168
 
169
- **Vereinigtes Laden:** Sowohl das Projekt- als auch das Benutzerkonventionsverzeichnis werden durchsucht. Alle passenden Dateien aus beiden Ebenen werden geladen (im Gegensatz zu `customPoliciesPath`, das das Prinzip „erster Scope gewinnt" verwendet).
169
+ **Vereinigtes Laden:** Sowohl das Projekt- als auch das Benutzerkonventionsverzeichnis werden durchsucht. Alle übereinstimmenden Dateien aus beiden Ebenen werden geladen (im Gegensatz zu `customPoliciesPath`, das nach dem Prinzip „erste Ebene gewinnt" vorgeht).
170
170
 
171
- Weitere Details und Beispiele finden Sie unter [Benutzerdefinierte Richtlinien](/de/custom-policies).
171
+ Weitere Details und Beispiele findest du unter [Benutzerdefinierte Richtlinien](/de/custom-policies).
172
172
 
173
173
  ### `llm`
174
174
 
@@ -189,18 +189,18 @@ LLM-Client-Konfiguration für Richtlinien, die KI-Aufrufe durchführen. Für die
189
189
 
190
190
  ## Konfiguration über die CLI verwalten
191
191
 
192
- Die Befehle `policies --install` und `policies --uninstall` schreiben in Claude Codes `settings.json` (die Hook-Einstiegspunkte), während `policies-config.json` die Datei ist, die Sie direkt verwalten. Beide sind voneinander getrennt:
192
+ Die Befehle `policies --install` und `policies --uninstall` schreiben in Claude Codes `settings.json` (die Hook-Einstiegspunkte), während `policies-config.json` die Datei ist, die du direkt verwaltest. Beide sind voneinander getrennt:
193
193
 
194
- - **`settings.json`** – weist Claude Code an, bei jeder Toolnutzung `failproofai --hook <event>` aufzurufen
195
- - **`policies-config.json`** – teilt failproofai mit, welche Richtlinien mit welchen Parametern ausgewertet werden sollen
194
+ - **`settings.json`** – weist Claude Code an, bei jeder Tool-Nutzung `failproofai --hook <event>` aufzurufen
195
+ - **`policies-config.json`** – weist failproofai an, welche Richtlinien mit welchen Parametern ausgewertet werden sollen
196
196
 
197
- Sie können `policies-config.json` jederzeit direkt bearbeiten; Änderungen treten sofort beim nächsten Hook-Ereignis in Kraft, ohne dass ein Neustart erforderlich ist.
197
+ Du kannst `policies-config.json` jederzeit direkt bearbeiten; Änderungen treten beim nächsten Hook-Ereignis sofort in Kraft kein Neustart erforderlich.
198
198
 
199
199
  ---
200
200
 
201
201
  ## Beispiel: Konfiguration auf Projektebene mit Team-Standardwerten
202
202
 
203
- Committen Sie `.failproofai/policies-config.json` in Ihr Repository:
203
+ Checke `.failproofai/policies-config.json` in dein Repository ein:
204
204
 
205
205
  ```json
206
206
  {
@@ -219,4 +219,4 @@ Committen Sie `.failproofai/policies-config.json` in Ihr Repository:
219
219
  }
220
220
  ```
221
221
 
222
- Jeder Entwickler kann dann `.failproofai/policies-config.local.json` (per .gitignore ausgeschlossen) für persönliche Überschreibungen erstellen, ohne die Teamkollegen zu beeinflussen.
222
+ Jeder Entwickler kann dann `.failproofai/policies-config.local.json` (via gitignore ausgeschlossen) für persönliche Überschreibungen erstellen, ohne die Teammitglieder zu beeinflussen.