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: アーキテクチャ
3
- description: "フックハンドラー、設定の読み込み、ポリシー評価が内部でどのように機能するか"
3
+ description: "フックハンドラー、設定の読み込み、ポリシー評価の内部動作について"
4
4
  icon: sitemap
5
5
  ---
6
6
 
7
- このドキュメントでは、failproofai の内部動作を説明します。フックシステムがエージェントのツール呼び出しをどのようにインターセプトするか、設定がどのように読み込まれてマージされるか、ポリシーがどのように評価されるか、そしてダッシュボードがエージェントの活動をどのように監視するかについて解説します。
7
+ このドキュメントでは、failproofai の内部動作を説明します。フックシステムがエージェントのツール呼び出しをどのようにインターセプトするか、設定がどのように読み込まれてマージされるか、ポリシーがどのように評価されるか、そしてダッシュボードがエージェントのアクティビティをどのように監視するかについて解説します。
8
8
 
9
9
  ---
10
10
 
11
11
  ## 概要
12
12
 
13
- failproofai には2つの独立したサブシステムがあります。
13
+ failproofai には独立した2つのサブシステムがあります。
14
14
 
15
- 1. **フックハンドラー** - Claude Code がエージェントのすべてのツール呼び出し時に起動する高速な CLI サブプロセス。ポリシーを評価し、決定を返します。
16
- 2. **エージェントモニター(ダッシュボード)** - エージェントセッションの監視とポリシー管理を行う Next.js ウェブアプリケーション。
15
+ 1. **フックハンドラー** - Claude Code がエージェントのツール呼び出しのたびに起動する高速な CLI サブプロセスです。ポリシーを評価して判断結果を返します。
16
+ 2. **エージェントモニター(ダッシュボード)** - エージェントセッションの監視とポリシー管理のための Next.js ウェブアプリケーションです。
17
17
 
18
- どちらのサブシステムも `~/.failproofai/` およびプロジェクトの `.failproofai/` ディレクトリにある設定ファイルを共有しますが、それぞれ独立したプロセスとして動作し、ファイルシステムを通じてのみ通信します。
18
+ 両サブシステムは `~/.failproofai/` とプロジェクトの `.failproofai/` ディレクトリにある設定ファイルを共有しますが、別々のプロセスとして動作し、ファイルシステムを通じてのみ通信します。
19
19
 
20
20
  ---
21
21
 
@@ -23,7 +23,7 @@ failproofai には2つの独立したサブシステムがあります。
23
23
 
24
24
  ### Claude Code との統合
25
25
 
26
- `failproofai policies --install` を実行すると、以下のようなエントリが `~/.claude/settings.json` に書き込まれます。
26
+ `failproofai policies --install` を実行すると、`~/.claude/settings.json` に次のようなエントリが書き込まれます。
27
27
 
28
28
  ```json
29
29
  {
@@ -44,9 +44,9 @@ failproofai には2つの独立したサブシステムがあります。
44
44
  }
45
45
  ```
46
46
 
47
- Claude Code は各ツール呼び出しの前に `failproofai --hook PreToolUse` をサブプロセスとして起動し、stdin に JSON ペイロードを渡します。
47
+ Claude Code はその後、各ツール呼び出しの前に `failproofai --hook PreToolUse` をサブプロセスとして起動し、stdin に JSON ペイロードを渡します。
48
48
 
49
- ### ペイロードの形式
49
+ ### ペイロード形式
50
50
 
51
51
  ```json
52
52
  {
@@ -62,11 +62,11 @@ Claude Code は各ツール呼び出しの前に `failproofai --hook PreToolUse`
62
62
 
63
63
  `PostToolUse` イベントの場合、ペイロードにはツールの出力を含む `tool_result` も含まれます。
64
64
 
65
- ハンドラーは stdin の上限を 1 MB に制限しています。これを超えるペイロードは破棄され、すべてのポリシーは暗黙的に allow となります。
65
+ ハンドラーは stdin に対して 1 MB の上限を適用します。これを超えるペイロードは破棄され、すべてのポリシーは暗黙的に allow となります。
66
66
 
67
- ### レスポンスの形式
67
+ ### レスポンス形式
68
68
 
69
- **Deny(PreToolUse):**
69
+ **Deny(PreToolUse):**
70
70
  ```json
71
71
  {
72
72
  "hookSpecificOutput": {
@@ -76,7 +76,7 @@ Claude Code は各ツール呼び出しの前に `failproofai --hook PreToolUse`
76
76
  }
77
77
  ```
78
78
 
79
- **Deny(PostToolUse):**
79
+ **Deny(PostToolUse):**
80
80
  ```json
81
81
  {
82
82
  "hookSpecificOutput": {
@@ -85,7 +85,7 @@ Claude Code は各ツール呼び出しの前に `failproofai --hook PreToolUse`
85
85
  }
86
86
  ```
87
87
 
88
- **Instruct(Stop 以外のすべてのイベント):**
88
+ **Instruct(Stop 以外の任意のイベント):**
89
89
  ```json
90
90
  {
91
91
  "hookSpecificOutput": {
@@ -94,52 +94,52 @@ Claude Code は各ツール呼び出しの前に `failproofai --hook PreToolUse`
94
94
  }
95
95
  ```
96
96
 
97
- **Stop イベントの instruct:**
98
- - 終了コード: `2`
97
+ **Stop イベントの instruct:**
98
+ - 終了コード:`2`
99
99
  - 理由は stdout ではなく stderr に書き込まれます
100
100
 
101
- **Allow:**
102
- - 終了コード: `0`
101
+ **Allow:**
102
+ - 終了コード:`0`
103
103
  - stdout は空
104
104
 
105
- **メッセージ付き Allow:**
105
+ **メッセージ付き Allow:**
106
106
 
107
- `allow(message)` を使用することで、操作が許可されている場合でもポリシーが Claude に情報コンテキストを返せるようになりました。フックハンドラーは以下の JSON を **stdout** に書き込みます(設定ファイルではありません。上記の deny や instruct のレスポンスと同様に、Claude Code へのハンドラープロセスのレスポンスです)。
107
+ `allow(message)` を使うと、操作が許可されている場合でも、ポリシーが Claude に情報コンテキストを返せます。フックハンドラーは以下の JSON を **stdout** に書き込みます(設定ファイルではなく、上記の deny や instruct レスポンスと同様に、ハンドラープロセスから Claude Code へのレスポンスです)。
108
108
 
109
109
  ```json
110
- // フックハンドラープロセスによって stdout に書き込まれます
110
+ // フックハンドラープロセスが stdout に書き込む内容
111
111
  {
112
112
  "hookSpecificOutput": {
113
113
  "additionalContext": "All CI checks passed on branch 'feat/my-feature'."
114
114
  }
115
115
  }
116
116
  ```
117
- - 終了コード: `0`(操作は許可されます)
118
- - 複数のポリシーがメッセージ付きで `allow` を返した場合、それらのメッセージは改行で結合されて単一の `additionalContext` 文字列になります
119
- - どのポリシーもメッセージを提供しない場合、stdout は空(従来と同じ)
117
+ - 終了コード:`0`(操作は許可されます)
118
+ - 複数のポリシーがメッセージ付きの `allow` を返した場合、各メッセージは改行で結合されて1つの `additionalContext` 文字列になります
119
+ - どのポリシーもメッセージを提供しない場合、stdout は空になります(従来と同じ動作)
120
120
 
121
121
  ### 処理パイプライン
122
122
 
123
- `src/hooks/handler.ts` が完全なパイプラインを実装しています。
123
+ `src/hooks/handler.ts` がパイプライン全体を実装しています。
124
124
 
125
125
  ```text
126
126
  stdin JSON
127
127
  → ペイロードのパース(最大 1 MB)
128
- → セッションメタデータの抽出(session_idcwdtool_nametool_input など)
129
- → readMergedHooksConfig(cwd) ← プロジェクト + ローカル + グローバル設定をマージ
130
- 解決済みパラメーターで有効なビルトインポリシーを登録
131
- → customPoliciesPath からカスタムポリシーを読み込み(設定されている場合)
128
+ → セッションメタデータの抽出(session_id, cwd, tool_name, tool_input など)
129
+ → readMergedHooksConfig(cwd) ← プロジェクト・ローカル・グローバル設定をマージ
130
+ 有効な組み込みポリシーを解決済みパラメーターで登録
131
+ → customPoliciesPath からカスタムポリシーを読み込む(設定されている場合)
132
132
  → カスタムポリシーをポリシーレジストリに登録
133
- すべてのポリシーを評価(ビルトインが先、次にカスタム)
134
- → 最初の deny で短絡
135
- → instruct の決定を蓄積
136
- → allow メッセージを蓄積
137
- → JSON 決定を stdout に書き込み
138
- → イベントを ~/.failproofai/hook-activity.jsonl に永続化
133
+ すべてのポリシーを評価(組み込みが先、次にカスタム)
134
+ → 最初の deny で短絡評価
135
+ → instruct の判断は蓄積
136
+ → allow のメッセージは蓄積
137
+ → JSON 判断結果を stdout に書き込む
138
+ → イベントを ~/.failproofai/hook-activity.jsonl に保存
139
139
  → 終了
140
140
  ```
141
141
 
142
- プロセス全体は、LLM 呼び出しなしで典型的なペイロードに対して 100ms 未満で実行されます。
142
+ プロセス全体は、LLM 呼び出しなしの典型的なペイロードで 100ms 以内に完了します。
143
143
 
144
144
  ---
145
145
 
@@ -153,13 +153,13 @@ stdin JSON
153
153
  [3] ~/.failproofai/policies-config.json ← グローバル(最低優先度)
154
154
  ```
155
155
 
156
- マージロジック:
157
- - `enabledPolicies` - 3つのファイル全体で重複排除された和集合
158
- - `policyParams` - ポリシーごとのキー。最初に定義されたファイルが完全に優先
159
- - `customPoliciesPath` - 最初に定義されたファイルが優先
160
- - `llm` - 最初に定義されたファイルが優先
156
+ マージロジック:
157
+ - `enabledPolicies` - 3つのファイルすべての重複排除された和集合
158
+ - `policyParams` - ポリシーごとのキーで、最初に定義したファイルの値が全体として優先されます
159
+ - `customPoliciesPath` - 最初に定義したファイルの値が優先されます
160
+ - `llm` - 最初に定義したファイルの値が優先されます
161
161
 
162
- ウェブダッシュボードはプロジェクトの cwd で起動されないため、読み取りと書き込みには `readHooksConfig()`(グローバルのみ)を使用します。
162
+ ウェブダッシュボードは、プロジェクトの cwd を使って起動されるわけではないため、読み書きに `readHooksConfig()`(グローバルのみ)を使用します。
163
163
 
164
164
  ---
165
165
 
@@ -167,26 +167,26 @@ stdin JSON
167
167
 
168
168
  `src/hooks/policy-evaluator.ts` がポリシーを順番に実行します。
169
169
 
170
- 各ポリシーについて:
170
+ 各ポリシーに対して:
171
171
 
172
172
  1. ポリシーの `params` スキーマを検索します(存在する場合)。
173
- 2. マージされた設定から `policyParams[policy.name]` を読み取ります。
174
- 3. スキーマのデフォルト値にユーザー提供の値をマージして `ctx.params` を生成します。
175
- 4. 解決されたコンテキストと共に `policy.fn(ctx)` を呼び出します。
176
- 5. 結果が `deny` の場合、即座に停止してその決定を返します。
177
- 6. 結果が `instruct` の場合、メッセージを蓄積して続行します。
173
+ 2. マージされた設定から `policyParams[policy.name]` を読み込みます。
174
+ 3. スキーマのデフォルト値にユーザー指定の値をマージして `ctx.params` を生成します。
175
+ 4. 解決されたコンテキストで `policy.fn(ctx)` を呼び出します。
176
+ 5. 結果が `deny` の場合、直ちに処理を停止してその判断を返します。
177
+ 6. 結果が `instruct` の場合、メッセージを蓄積して次のポリシーに進みます。
178
178
  7. 結果が `allow` の場合、次のポリシーに進みます。
179
179
 
180
- すべてのポリシーの実行後:
181
- - `deny` が返された場合、deny レスポンスを出力します。
182
- - `instruct` の結果が収集された場合、すべてのメッセージを結合した単一の instruct レスポンスを出力します。
183
- - それ以外の場合、allow レスポンスを出力します(stdout 空、終了コード 0)。
180
+ すべてのポリシーの実行後:
181
+ - `deny` が返されていた場合、deny レスポンスを発行します。
182
+ - `instruct` の返却が収集されていた場合、すべてのメッセージを結合した単一の instruct レスポンスを発行します。
183
+ - それ以外の場合、allow レスポンスを発行します(stdout は空、終了コード 0)。
184
184
 
185
185
  ---
186
186
 
187
- ## ビルトインポリシー
187
+ ## 組み込みポリシー
188
188
 
189
- `src/hooks/builtin-policies.ts` `BuiltinPolicyDefinition` オブジェクトとして26個のビルトインポリシーをすべて定義しています。
189
+ `src/hooks/builtin-policies.ts` が全26件の組み込みポリシーを `BuiltinPolicyDefinition` オブジェクトとして定義しています。
190
190
 
191
191
  ```typescript
192
192
  interface BuiltinPolicyDefinition {
@@ -204,15 +204,15 @@ interface BuiltinPolicyDefinition {
204
204
  }
205
205
  ```
206
206
 
207
- `params` を受け付けるポリシーは、各パラメーターの型とデフォルト値を含む `PolicyParamsSchema` を宣言します。ポリシーエバリュエーターは `fn` を呼び出す前に解決済みの値を `ctx.params` に注入します。デフォルト値は常に最初に適用されるため、ポリシー関数は null チェックなしで `ctx.params` を読み取ります。
207
+ `params` を受け付けるポリシーは、各パラメーターの型とデフォルト値を持つ `PolicyParamsSchema` を宣言します。ポリシー評価器は `fn` を呼び出す前に解決済みの値を `ctx.params` に注入します。デフォルト値は常に先に適用されるため、ポリシー関数は null チェックなしで `ctx.params` を読み込めます。
208
208
 
209
- ポリシー内のパターンマッチングは生の文字列マッチングではなく、パース済みのコマンドトークン(argv)を使用します。これにより、シェル演算子の挿入によるバイパスを防ぎます(例: `sudo systemctl status *` のパターンに `; rm -rf /` を追加してもバイパスできません)。
209
+ ポリシー内部のパターンマッチングは、生の文字列マッチングではなく、パース済みのコマンドトークン(argv)を使用します。これにより、シェル演算子インジェクションによるバイパスを防ぎます(例えば、`sudo systemctl status *` に対するパターンは、コマンドに `; rm -rf /` を追加してもバイパスできません)。
210
210
 
211
211
  ---
212
212
 
213
213
  ## カスタムポリシー
214
214
 
215
- `src/hooks/custom-hooks-registry.ts` が `globalThis` バックのレジストリを実装しています。
215
+ `src/hooks/custom-hooks-registry.ts` が `globalThis` ベースのレジストリを実装しています。
216
216
 
217
217
  ```typescript
218
218
  const REGISTRY_KEY = "__failproofai_custom_hooks__";
@@ -227,17 +227,17 @@ export function clearCustomHooks(): void { ... } // テストで使用
227
227
 
228
228
  `src/hooks/custom-hooks-loader.ts` がユーザーのポリシーファイルを読み込みます。
229
229
 
230
- 1. 設定から `customPoliciesPath` を読み取り、存在しない場合はスキップします。
231
- 2. 絶対パスに解決し、ファイルの存在を確認します。
232
- 3. `customPolicies` が同じ `globalThis` レジストリに解決されるよう、すべての `from "failproofai"` インポートを実際の dist パスに書き換えます。
233
- 4. ESM 互換性を確保するため、推移的なローカルインポートを再帰的に書き換えます。
230
+ 1. 設定から `customPoliciesPath` を読み込み、存在しない場合はスキップします。
231
+ 2. 絶対パスに解決してファイルの存在を確認します。
232
+ 3. `from "failproofai"` のすべてのインポートを実際の dist パスに書き換え、`customPolicies` が同じ `globalThis` レジストリを参照するようにします。
233
+ 4. ESM 互換性を確保するために、推移的なローカルインポートを再帰的に書き換えます。
234
234
  5. 一時的な `.mjs` ファイルを書き込み、エントリファイルを `import()` します。
235
- 6. `getCustomHooks()` を呼び出して登録済みフックを取得します。
235
+ 6. `getCustomHooks()` を呼び出して登録済みのフックを取得します。
236
236
  7. `finally` ブロックですべての一時ファイルを削除します。
237
237
 
238
- エラー(ファイルが見つからない、構文エラー、インポートの失敗など)が発生した場合、エラーは `~/.failproofai/hook.log` に記録され、ローダーは空の配列を返します。ビルトインポリシーには影響しません。
238
+ エラー(ファイルが見つからない、構文エラー、インポートの失敗など)が発生した場合、エラーは `~/.failproofai/hook.log` に記録され、ローダーは空の配列を返します。組み込みポリシーへの影響はありません。
239
239
 
240
- カスタムポリシーはすべてのビルトインポリシーの後に評価されます。カスタムポリシーの `deny` はそれ以降のカスタムポリシーの実行を短絡させますが(その時点ではすべてのビルトインはすでに実行済みです)。
240
+ カスタムポリシーはすべての組み込みポリシーの後に評価されます。カスタムポリシーの `deny` は、それ以降のカスタムポリシーの短絡評価を引き起こしますが(ただし、その時点ですべての組み込みポリシーは実行済みです)。
241
241
 
242
242
  ---
243
243
 
@@ -258,44 +258,44 @@ export function clearCustomHooks(): void { ... } // テストで使用
258
258
  }
259
259
  ```
260
260
 
261
- allow 以外の決定を下したポリシー1件につき1行。allow の決定はログに記録されません(ファイルサイズを小さく保つため)。
261
+ allow 以外の判断を行ったポリシーごとに1行が記録されます。allow の判断はファイルサイズを小さく保つために記録されません。
262
262
 
263
263
  ---
264
264
 
265
265
  ## ダッシュボードのアーキテクチャ
266
266
 
267
- ダッシュボードは、React Server Components Server Actions を使用した App Router 採用の **Next.js 16** アプリケーションです。
267
+ ダッシュボードは、App Router と React Server Components および Server Actions を使用した **Next.js 16** アプリケーションです。
268
268
 
269
269
  ```text
270
270
  app/
271
271
  layout.tsx ← ルートレイアウト(テーマ、テレメトリー、ナビゲーション)
272
- projects/page.tsx ← サーバーコンポーネント: すべての Claude プロジェクトを一覧表示
273
- project/[name]/page.tsx ← サーバーコンポーネント: プロジェクト内のセッションを一覧表示
272
+ projects/page.tsx ← サーバーコンポーネント:すべての Claude プロジェクトを一覧表示
273
+ project/[name]/page.tsx ← サーバーコンポーネント:プロジェクト内のセッションを一覧表示
274
274
  project/[name]/session/
275
- [sessionId]/page.tsx ← サーバーコンポーネント: セッションビューアーを表示
276
- policies/page.tsx ← クライアントコンポーネント: ポリシー管理 + アクティビティログ
275
+ [sessionId]/page.tsx ← サーバーコンポーネント:セッションビューアーを表示
276
+ policies/page.tsx ← クライアントコンポーネント:ポリシー管理 + アクティビティログ
277
277
  actions/
278
- get-hooks-config.ts ← 設定とポリシーリストの読み取り
279
- update-hooks-config.ts ← ポリシーのオン/オフ切り替え
278
+ get-hooks-config.ts ← 設定とポリシーリストの読み込み
279
+ update-hooks-config.ts ← ポリシーの有効・無効の切り替え
280
280
  update-policy-params.ts ← ポリシーパラメーターの更新
281
- get-hook-activity.ts ← アクティビティログのページング/検索
282
- install-hooks-web.ts ← ブラウザからのフックのインストール/削除
281
+ get-hook-activity.ts ← アクティビティログのページネーション・検索
282
+ install-hooks-web.ts ← ブラウザからのフックのインストール・削除
283
283
  api/
284
284
  download/[project]/[session]/route.ts ← セッションを ZIP/JSONL としてエクスポート
285
285
  ```
286
286
 
287
- **データフロー:**
287
+ **データフロー:**
288
288
 
289
- - ページコンポーネントは `lib/projects.ts` と `lib/log-entries.ts` を呼び出し、ファイルシステムからプロジェクト/セッションデータを直接読み取ります(読み取りに API レイヤーは不要)。
290
- - ポリシーページはすべての変更操作(切り替え、パラメーター更新、インストール/削除)に Server Actions を使用します。
291
- - セッションビューアーは Claude の JSONL トランスクリプト形式をパースし、メッセージとツール呼び出しのタイムラインをレンダリングします。
289
+ - ページコンポーネントは `lib/projects.ts` と `lib/log-entries.ts` を呼び出し、ファイルシステムから直接プロジェクト・セッションデータを読み込みます(読み取りに API レイヤーは不要)。
290
+ - Policies ページはすべての変更操作(切り替え、パラメーター更新、インストール・削除)に Server Actions を使用します。
291
+ - セッションビューアーは Claude の JSONL トランスクリプト形式をパースし、メッセージとツール呼び出しのタイムラインを表示します。
292
292
 
293
- **主要な設計上の決定事項:**
293
+ **主要な設計上の決定事項:**
294
294
 
295
295
  - データベースなし - すべての永続状態はプレーンファイル(`~/.failproofai/`、`~/.claude/projects/`)に保存されます。
296
- - 変更操作には Server Actions を使用 - CRUD 操作に REST API は不要。
297
- - 読み取りページには React Server Components を使用 - 初期ロードが高速で、データフェッチのクライアントバンドルが不要。
298
- - クライアントコンポーネントはインタラクティブ性が必要な場合のみ使用(ポリシーの切り替え、アクティビティ検索、ログビューアー)。
296
+ - 変更操作には Server Actions を使用 - CRUD 操作に REST API は不要です。
297
+ - 読み取りページには React Server Components を使用 - 初期表示が高速で、データ取得のクライアントバンドルが不要です。
298
+ - クライアントコンポーネントはインタラクティブ性が必要な箇所のみ使用(ポリシーの切り替え、アクティビティ検索、ログビューアー)。
299
299
 
300
300
  ---
301
301
 
@@ -304,29 +304,29 @@ app/
304
304
  ```text
305
305
  failproofai/
306
306
  ├── bin/
307
- │ └── failproofai.mjs # CLI ルーター(フック / ダッシュボード / インストール など)
307
+ │ └── failproofai.mjs # CLI ルーター(hook / dashboard / install など)
308
308
  ├── src/hooks/
309
309
  │ ├── handler.ts # フックイベントパイプライン
310
- │ ├── builtin-policies.ts # 26のポリシー定義
310
+ │ ├── builtin-policies.ts # 26件のポリシー定義
311
311
  │ ├── policy-evaluator.ts # ポリシー実行エンジン
312
312
  │ ├── policy-registry.ts # ポリシーの登録と検索
313
313
  │ ├── policy-types.ts # TypeScript インターフェース
314
- │ ├── hooks-config.ts # マルチスコープ設定読み込み
315
- │ ├── custom-hooks-registry.ts # globalThis バックのフックレジストリ
314
+ │ ├── hooks-config.ts # マルチスコープ設定の読み込み
315
+ │ ├── custom-hooks-registry.ts # globalThis ベースのフックレジストリ
316
316
  │ ├── custom-hooks-loader.ts # ユーザー JS フック用の ESM ローダー
317
- │ ├── manager.ts # インストール / 削除 / 一覧操作
317
+ │ ├── manager.ts # インストール・削除・一覧操作
318
318
  │ ├── install-prompt.ts # インタラクティブなポリシー選択プロンプト
319
- │ ├── hook-logger.ts # hook.log へのロギング
320
- │ ├── hook-activity-store.ts # hook-activity.jsonl へのアクティビティの永続化
321
- │ └── llm-client.ts # LLM API クライアント(AI 搭載ポリシー用)
319
+ │ ├── hook-logger.ts # hook.log へのログ記録
320
+ │ ├── hook-activity-store.ts # hook-activity.jsonl へのアクティビティ保存
321
+ │ └── llm-client.ts # LLM API クライアント(AI 駆動ポリシー用)
322
322
  ├── app/ # Next.js ダッシュボード(ページ + サーバーアクション)
323
323
  ├── lib/ # 共有ユーティリティ
324
324
  │ ├── projects.ts # ファイルシステムから Claude プロジェクトを列挙
325
- │ ├── log-entries.ts # Claude トランスクリプトの JSONL 形式をパース
325
+ │ ├── log-entries.ts # Claude トランスクリプト JSONL 形式のパース
326
326
  │ ├── paths.ts # システムパスの解決
327
327
  │ └── ...
328
328
  ├── components/ # 共有 React UI コンポーネント
329
329
  ├── contexts/ # React コンテキストプロバイダー(テーマ、自動更新、テレメトリー)
330
- ├── examples/ # カスタムフックファイルの例
331
- └── __tests__/ # ユニットテストと E2E テスト
330
+ ├── examples/ # カスタムフックのサンプルファイル
331
+ └── __tests__/ # ユニットテストおよび E2E テスト
332
332
  ```
@@ -4,54 +4,54 @@ description: "設定ファイルのフォーマット、3スコープシステ
4
4
  icon: gear
5
5
  ---
6
6
 
7
- failproofai JSON 設定ファイルを使用して、どのポリシーが有効か、その動作方法、カスタムポリシーの読み込み元を管理します。設定はチームで共有しやすい設計になっています。リポジトリにコミットすれば、すべての開発者が同じエージェントセーフティネットを利用できます。
7
+ failproofaiはJSON設定ファイルを使用して、有効なポリシー、その動作、カスタムポリシーの読み込み元を管理します。設定はチームと簡単に共有できるよう設計されています。リポジトリにコミットするだけで、すべての開発者が同じエージェントセーフティネットを利用できます。
8
8
 
9
9
  ---
10
10
 
11
11
  ## 設定スコープ
12
12
 
13
- 設定スコープは優先順位の高い順に 3 つあります。
13
+ 優先順位順に評価される3つの設定スコープがあります:
14
14
 
15
15
  | スコープ | ファイルパス | 用途 |
16
16
  |-------|-----------|---------|
17
- | **project** | `.failproofai/policies-config.json` | リポジトリ単位の設定、バージョン管理にコミット |
18
- | **local** | `.failproofai/policies-config.local.json` | 個人用のリポジトリ単位オーバーライド、gitignore 対象 |
19
- | **global** | `~/.failproofai/policies-config.json` | 全プロジェクト共通のユーザーレベルデフォルト |
17
+ | **project** | `.failproofai/policies-config.json` | リポジトリごとの設定。バージョン管理にコミット |
18
+ | **local** | `.failproofai/policies-config.local.json` | 個人用のリポジトリごとの上書き設定。gitignore対象 |
19
+ | **global** | `~/.failproofai/policies-config.json` | すべてのプロジェクトに適用されるユーザーレベルのデフォルト |
20
20
 
21
- failproofai がフックイベントを受け取ると、現在の作業ディレクトリに存在する 3 つのファイルをすべて読み込んでマージします。
21
+ failproofaiがフックイベントを受け取ると、カレントワーキングディレクトリに存在する3つのファイルをすべて読み込んでマージします。
22
22
 
23
23
  ### マージルール
24
24
 
25
- **`enabledPolicies`** - 3 つのスコープすべての和集合。いずれかのレベルで有効化されたポリシーはアクティブになります。
25
+ **`enabledPolicies`** 3つのスコープすべての和集合となります。いずれかのレベルで有効化されたポリシーはアクティブになります。
26
26
 
27
27
  ```text
28
28
  project: ["block-sudo"]
29
29
  local: ["block-rm-rf"]
30
30
  global: ["block-sudo", "sanitize-api-keys"]
31
31
 
32
- resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← 重複排除済みの和集合
32
+ resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← 重複排除された和集合
33
33
  ```
34
34
 
35
- **`policyParams`** - 特定のポリシーのパラメーターを最初に定義したスコープが全体として優先されます。ポリシーのパラメーター内での深いマージは行われません。
35
+ **`policyParams`** 特定のポリシーのパラメータを最初に定義したスコープが完全に優先されます。ポリシーのパラメータ内の値は深くマージされません。
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 が優先、global は無視
41
+ resolved: { allowPatterns: ["sudo apt-get update"] } ← projectが優先。globalは無視される
42
42
  ```
43
43
 
44
44
  ```text
45
- project: (block-sudo エントリなし)
46
- local: (block-sudo エントリなし)
45
+ project: (block-sudoエントリなし)
46
+ local: (block-sudoエントリなし)
47
47
  global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
48
48
 
49
- resolved: { allowPatterns: ["sudo systemctl status"] } ← global にフォールスルー
49
+ resolved: { allowPatterns: ["sudo systemctl status"] } ← globalにフォールスルー
50
50
  ```
51
51
 
52
- **`customPoliciesPath`** - 最初に定義したスコープが優先されます。
52
+ **`customPoliciesPath`** 最初に定義したスコープが優先されます。
53
53
 
54
- **`llm`** - 最初に定義したスコープが優先されます。
54
+ **`llm`** 最初に定義したスコープが優先されます。
55
55
 
56
56
  ---
57
57
 
@@ -100,29 +100,29 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← global にフォー
100
100
 
101
101
  ### `enabledPolicies`
102
102
 
103
- 型: `string[]`
103
+ 型:`string[]`
104
104
 
105
- 有効化するポリシー名の一覧。名前は `failproofai policies` で表示されるポリシー識別子と完全に一致する必要があります。全一覧は [Built-in Policies](/ja/built-in-policies) を参照してください。
105
+ 有効にするポリシー名の一覧です。名前は `failproofai policies` が表示するポリシー識別子と完全に一致する必要があります。完全なリストは[組み込みポリシー](/ja/built-in-policies)を参照してください。
106
106
 
107
107
  `enabledPolicies` に含まれていないポリシーは、`policyParams` にエントリがあっても非アクティブになります。
108
108
 
109
109
  ### `policyParams`
110
110
 
111
- 型: `Record<string, Record<string, unknown>>`
111
+ 型:`Record<string, Record<string, unknown>>`
112
112
 
113
- ポリシーごとのパラメーターオーバーライド。外側のキーがポリシー名、内側のキーはポリシー固有の設定です。各ポリシーで利用可能なパラメーターは [Built-in Policies](/ja/built-in-policies) に記載されています。
113
+ ポリシーごとのパラメータ上書き設定です。外側のキーはポリシー名、内側のキーはポリシー固有のものです。各ポリシーの利用可能なパラメータは[組み込みポリシー](/ja/built-in-policies)に記載されています。
114
114
 
115
- ポリシーにパラメーターがあっても指定しない場合は、ポリシーの組み込みデフォルト値が使用されます。`policyParams` をまったく設定していないユーザーは、以前のバージョンと同じ動作になります。
115
+ ポリシーにパラメータが存在しても指定しない場合、ポリシーの組み込みデフォルト値が使用されます。`policyParams` をまったく設定しないユーザーは、以前のバージョンと同一の動作になります。
116
116
 
117
- ポリシーのパラメーターブロック内の未知のキーは、フック発火時には無視されますが、`failproofai policies` 実行時に警告として表示されます。
117
+ ポリシーのパラメータブロック内の未知のキーは、フック実行時には無視されますが、`failproofai policies` を実行したときに警告として表示されます。
118
118
 
119
- #### `hint`(共通設定)
119
+ #### `hint`(横断的設定)
120
120
 
121
- 型: `string`(省略可能)
121
+ 型:`string`(任意)
122
122
 
123
- ポリシーが `deny` または `instruct` を返した際に、理由メッセージに追加されるテキスト。ポリシー自体を変更せずに Claude への具体的なガイダンスを提供するために使用します。
123
+ ポリシーが `deny` または `instruct` を返したときに理由に追記されるメッセージです。ポリシー自体を変更せずに、Claudeへの具体的なガイダンスを提供するために使用します。
124
124
 
125
- 組み込みポリシー、カスタムポリシー(`custom/`)、プロジェクト規約(`.failproofai-project/`)、ユーザー規約(`.failproofai-user/`)など、すべてのポリシータイプで利用できます。
125
+ 組み込み、カスタム(`custom/`)、プロジェクト規約(`.failproofai-project/`)、ユーザー規約(`.failproofai-user/`)を問わず、あらゆるポリシータイプで利用できます。
126
126
 
127
127
  ```json
128
128
  {
@@ -141,40 +141,40 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← global にフォー
141
141
  }
142
142
  ```
143
143
 
144
- `block-force-push` が deny した場合、Claude には次のように表示されます: *"Force-pushing is blocked. Try creating a fresh branch instead."*
144
+ `block-force-push` が拒否した場合、Claudeには「Force-pushing is blocked. Try creating a fresh branch instead.」と表示されます。
145
145
 
146
- 文字列以外の値および空文字列は無視されます。`hint` が設定されていない場合は動作に変化はありません(後方互換性あり)。
146
+ 文字列以外の値や空文字列は無視されます。`hint` が設定されていない場合、動作は変わりません(後方互換性があります)。
147
147
 
148
148
  ### `customPoliciesPath`
149
149
 
150
- 型: `string`(絶対パス)
150
+ 型:`string`(絶対パス)
151
151
 
152
- カスタムフックポリシーを含む JavaScript ファイルへのパス。`failproofai policies --install --custom <path>` によって自動的に設定されます(パスは保存前に絶対パスに解決されます)。
152
+ カスタムフックポリシーを含むJavaScriptファイルへのパスです。`failproofai policies --install --custom <path>` を実行すると自動的に設定されます(パスは保存前に絶対パスに解決されます)。
153
153
 
154
- このファイルはフックイベントのたびに新たに読み込まれます。キャッシュは使用されません。作成方法の詳細は [Custom Policies](/ja/custom-policies) を参照してください。
154
+ ファイルはフックイベントのたびに新しく読み込まれます。キャッシュはありません。作成方法の詳細は[カスタムポリシー](/ja/custom-policies)を参照してください。
155
155
 
156
156
  ### 規約ベースのポリシー
157
157
 
158
- 明示的な `customPoliciesPath` に加えて、failproofai は `.failproofai/policies/` ディレクトリからポリシーファイルを自動的に検出して読み込みます。
158
+ `customPoliciesPath` の明示的な指定に加えて、failproofaiは `.failproofai/policies/` ディレクトリからポリシーファイルを自動的に検出して読み込みます:
159
159
 
160
160
  | レベル | ディレクトリ | スコープ |
161
161
  |-------|-----------|-------|
162
- | プロジェクト | `.failproofai/policies/` | バージョン管理でチームと共有 |
163
- | ユーザー | `~/.failproofai/policies/` | 個人用、全プロジェクトに適用 |
162
+ | プロジェクト | `.failproofai/policies/` | バージョン管理を通じてチームと共有 |
163
+ | ユーザー | `~/.failproofai/policies/` | 個人用。すべてのプロジェクトに適用 |
164
164
 
165
- **ファイルのマッチング:** `*policies.{js,mjs,ts}` にマッチするファイルのみ読み込まれます(例: `security-policies.mjs`、`workflow-policies.js`)。ディレクトリ内のその他のファイルは無視されます。
165
+ **ファイルのマッチング:** `*policies.{js,mjs,ts}` にマッチするファイルのみ読み込まれます(例:`security-policies.mjs`、`workflow-policies.js`)。ディレクトリ内のその他のファイルは無視されます。
166
166
 
167
- **設定不要:** 規約ポリシーは `policies-config.json` へのエントリが不要です。ディレクトリにファイルを配置するだけで、次のフックイベント時に自動的に読み込まれます。
167
+ **設定不要:** 規約ポリシーは `policies-config.json` へのエントリが不要です。ディレクトリにファイルを置くだけで、次のフックイベント時に自動的に読み込まれます。
168
168
 
169
- **全量読み込み:** プロジェクトとユーザーの両方の規約ディレクトリがスキャンされます。両レベルのマッチするファイルがすべて読み込まれます(最初のスコープ優先となる `customPoliciesPath` とは異なります)。
169
+ **ユニオン読み込み:** プロジェクトとユーザーの両方の規約ディレクトリがスキャンされます。両レベルのすべてのマッチするファイルが読み込まれます(最初のスコープ優先となる `customPoliciesPath` とは異なります)。
170
170
 
171
- 詳細と例については [Custom Policies](/ja/custom-policies) を参照してください。
171
+ 詳細と例については[カスタムポリシー](/ja/custom-policies)を参照してください。
172
172
 
173
173
  ### `llm`
174
174
 
175
- 型: `object`(省略可能)
175
+ 型:`object`(任意)
176
176
 
177
- AI 呼び出しを行うポリシー向けの LLM クライアント設定。ほとんどの環境では不要です。
177
+ AIコールを行うポリシー向けのLLMクライアント設定です。ほとんどのセットアップでは不要です。
178
178
 
179
179
  ```json
180
180
  {
@@ -187,20 +187,20 @@ AI 呼び出しを行うポリシー向けの LLM クライアント設定。ほ
187
187
 
188
188
  ---
189
189
 
190
- ## CLI からの設定管理
190
+ ## CLIからの設定管理
191
191
 
192
- `policies --install` および `policies --uninstall` コマンドは Claude Code の `settings.json`(フックエントリポイント)に書き込みます。一方、`policies-config.json` は直接管理するファイルです。この 2 つは別物です。
192
+ `policies --install` および `policies --uninstall` コマンドは Claude Code の `settings.json`(フックエントリポイント)に書き込みます。一方、`policies-config.json` は直接管理するファイルです。この2つは別々のものです:
193
193
 
194
- - **`settings.json`** - ツール使用のたびに `failproofai --hook <event>` を呼び出すよう Claude Code に指示する
195
- - **`policies-config.json`** - どのポリシーをどのパラメーターで評価するかを failproofai に指示する
194
+ - **`settings.json`** ツール使用のたびに Claude Code が `failproofai --hook <event>` を呼び出すよう指示する
195
+ - **`policies-config.json`** どのポリシーをどのパラメータで評価するかを failproofai に指示する
196
196
 
197
- `policies-config.json` はいつでも直接編集できます。変更は再起動不要で、次のフックイベント時に即座に反映されます。
197
+ `policies-config.json` はいつでも直接編集できます。変更は次のフックイベント時に即座に反映され、再起動は不要です。
198
198
 
199
199
  ---
200
200
 
201
- ## 例: チームデフォルトを含むプロジェクトレベル設定
201
+ ## 例:チームデフォルトを含むプロジェクトレベルの設定
202
202
 
203
- `.failproofai/policies-config.json` をリポジトリにコミットします。
203
+ `.failproofai/policies-config.json` をリポジトリにコミットします:
204
204
 
205
205
  ```json
206
206
  {
@@ -219,4 +219,4 @@ AI 呼び出しを行うポリシー向けの LLM クライアント設定。ほ
219
219
  }
220
220
  ```
221
221
 
222
- 各開発者はチームメンバーに影響を与えることなく、個人用のオーバーライドとして `.failproofai/policies-config.local.json`(gitignore 対象)を作成できます。
222
+ 各開発者は `.failproofai/policies-config.local.json`(gitignore対象)を作成して、チームメンバーに影響を与えることなく個人用の上書き設定を行えます。