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,10 +1,10 @@
1
1
  ---
2
2
  title: カスタムポリシー
3
- description: "JavaScriptで独自のポリシーを記述する — 規約の強制、ドリフトの防止、失敗の検出、外部システムとの連携"
3
+ description: "JavaScriptで独自のポリシーを記述する — 規約の適用、ドリフトの防止、障害の検出、外部システムとの連携"
4
4
  icon: code
5
5
  ---
6
6
 
7
- カスタムポリシーを使えば、あらゆるエージェントの動作に対してルールを定義できます。プロジェクト規約の強制、ドリフトの防止、破壊的な操作のゲート制御、スタックしたエージェントの検出、Slackや承認ワークフローとの連携などが実現できます。組み込みポリシーと同じフックイベントシステムおよび `allow`、`deny`、`instruct` の判定を使用します。
7
+ カスタムポリシーを使用すると、あらゆるエージェントの動作に対してルールを記述できます。プロジェクトの規約を適用する、ドリフトを防止する、破壊的な操作をゲートする、スタックしたエージェントを検出する、あるいはSlackや承認ワークフローと連携するといったことが可能です。組み込みポリシーと同じフックイベントシステムおよび`allow`、`deny`、`instruct`の判定を使用します。
8
8
 
9
9
  ---
10
10
 
@@ -37,14 +37,14 @@ failproofai policies --install --custom ./my-policies.js
37
37
 
38
38
  ---
39
39
 
40
- ## カスタムポリシーの読み込み方法(2通り)
40
+ ## カスタムポリシーの読み込み方法
41
41
 
42
- ### 方法1: 規約ベース(推奨)
42
+ ### オプション1: 規約ベース(推奨)
43
43
 
44
- `*policies.{js,mjs,ts}` ファイルを `.failproofai/policies/` に置くだけで自動的に読み込まれます。フラグや設定変更は不要です。gitフックと同じ仕組みです。ファイルを置けばそのまま動きます。
44
+ `*policies.{js,mjs,ts}` ファイルを `.failproofai/policies/` に配置するだけで、フラグや設定変更なしに自動的に読み込まれます。Gitフックと同じ仕組みです。ファイルを置けば、そのまま動作します。
45
45
 
46
46
  ```
47
- # プロジェクトレベル — gitにコミットしてチームと共有
47
+ # プロジェクトレベル — gitにコミットされ、チームで共有
48
48
  .failproofai/policies/security-policies.mjs
49
49
  .failproofai/policies/workflow-policies.mjs
50
50
 
@@ -52,31 +52,31 @@ failproofai policies --install --custom ./my-policies.js
52
52
  ~/.failproofai/policies/my-policies.mjs
53
53
  ```
54
54
 
55
- **動作の仕組み:**
56
- - プロジェクトディレクトリとユーザーディレクトリの両方がスキャンされます(どちらか一方ではなく、両方が適用されます)
57
- - 各ディレクトリ内ではファイルがアルファベット順に読み込まれます。順序を制御するには `01-`、`02-` などのプレフィックスを付けてください
58
- - `*policies.{js,mjs,ts}` に一致するファイルのみ読み込まれ、それ以外のファイルは無視されます
55
+ **仕組み:**
56
+ - プロジェクトディレクトリとユーザーディレクトリの両方がスキャンされます(ユニオン — 先着スコープ優先ではありません)
57
+ - ファイルは各ディレクトリ内でアルファベット順に読み込まれます。順序を制御するには `01-`、`02-` などのプレフィックスを付けてください
58
+ - `*policies.{js,mjs,ts}` にマッチするファイルのみ読み込まれ、それ以外は無視されます
59
59
  - 各ファイルは独立して読み込まれます(ファイル単位でフェイルオープン)
60
- - 明示的な `--custom` や組み込みポリシーと共存できます
60
+ - 明示的な `--custom` および組み込みポリシーと共存できます
61
61
 
62
62
  <Tip>
63
- 規約ポリシーはチーム全体でポリシーを共有する最も簡単な方法です。`.failproofai/policies/` をgitにコミットすれば、すべてのチームメンバーが自動的に適用されます。
63
+ 規約ポリシーは、チーム全体でポリシーを共有する最も簡単な方法です。`.failproofai/policies/` をgitにコミットすれば、チームメンバー全員が自動的に取得できます。
64
64
  </Tip>
65
65
 
66
- ### 方法2: 明示的なファイルパス
66
+ ### オプション2: 明示的なファイルパス
67
67
 
68
68
  ```bash
69
69
  # カスタムポリシーファイルを指定してインストール
70
70
  failproofai policies --install --custom ./my-policies.js
71
71
 
72
- # ポリシーファイルのパスを変更
72
+ # ポリシーファイルパスを置き換える
73
73
  failproofai policies --install --custom ./new-policies.js
74
74
 
75
- # 設定からカスタムポリシーのパスを削除
75
+ # カスタムポリシーのパスを設定から削除
76
76
  failproofai policies --uninstall --custom
77
77
  ```
78
78
 
79
- 解決された絶対パスは `policies-config.json` の `customPoliciesPath` に保存されます。ファイルはフックイベントごとに新たに読み込まれます。イベント間でのキャッシュはありません。
79
+ 解決された絶対パスは `policies-config.json` の `customPoliciesPath` に保存されます。ファイルはフックイベントのたびに新たに読み込まれます — イベント間でキャッシュは行われません。
80
80
 
81
81
  ### 両方を併用する
82
82
 
@@ -98,13 +98,13 @@ import { customPolicies, allow, deny, instruct } from "failproofai";
98
98
 
99
99
  ### `customPolicies.add(hook)`
100
100
 
101
- ポリシーを登録します。同一ファイル内で複数のポリシーを登録するために何度でも呼び出せます。
101
+ ポリシーを登録します。同じファイル内に複数のポリシーを定義する場合は、必要な回数だけ呼び出してください。
102
102
 
103
103
  ```ts
104
104
  customPolicies.add({
105
105
  name: string; // 必須 - 一意の識別子
106
106
  description?: string; // `failproofai policies` の出力に表示される
107
- match?: { events?: HookEventType[] }; // イベントタイプでフィルタリング。省略するとすべてにマッチ
107
+ match?: { events?: HookEventType[] }; // イベントタイプでフィルタリング。省略すると全てにマッチ
108
108
  fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
109
109
  });
110
110
  ```
@@ -113,31 +113,30 @@ customPolicies.add({
113
113
 
114
114
  | 関数 | 効果 | 使用場面 |
115
115
  |----------|--------|----------|
116
- | `allow()` | 操作を静かに許可する | アクションが安全でメッセージが不要な場合 |
116
+ | `allow()` | 操作を静かに許可する | アクションが安全で、メッセージが不要な場合 |
117
117
  | `deny(message)` | 操作をブロックする | エージェントがこのアクションを取るべきでない場合 |
118
- | `instruct(message)` | ブロックせずにコンテキストを追加する | エージェントに追加のコンテキストを与えて軌道を維持する場合 |
118
+ | `instruct(message)` | ブロックせずにコンテキストを追加する | エージェントが正しい方向を維持するための追加コンテキストを提供する場合 |
119
119
 
120
- `deny(message)` — メッセージは `"Blocked by failproofai:"` というプレフィックス付きでClaudeに表示されます。一つの `deny` が発生すると、以降の評価はすべてスキップされます。
120
+ `deny(message)` — メッセージは `"Blocked by failproofai:"` というプレフィックスを付けてClaudeに表示されます。単一の `deny` が発生すると、以降の全ての評価がショートサーキットされます。
121
121
 
122
- `instruct(message)` — メッセージは現在のツール呼び出しに対するClaudeのコンテキストに追記されます。すべての `instruct` メッセージは蓄積されてまとめて配信されます。
122
+ `instruct(message)` — メッセージは現在のツールコールのClaudeのコンテキストに追加されます。全ての `instruct` メッセージは蓄積され、まとめて配信されます。
123
123
 
124
124
  <Tip>
125
- `policyParams` `hint` フィールドを追加することで、`deny` `instruct` のメッセージに追加のガイダンスを付け加えられます。コードの変更は不要です。これはカスタム(`custom/`)、プロジェクト規約(`.failproofai-project/`)、ユーザー規約(`.failproofai-user/`)ポリシーでも機能します。詳細は [設定 → hint](/ja/configuration#hint-cross-cutting) を参照してください。
125
+ `deny` または `instruct` メッセージに追加のガイダンスを付け加えるには、`policyParams` `hint` フィールドを使用します — コードの変更は不要です。これはカスタム(`custom/`)、プロジェクト規約(`.failproofai-project/`)、ユーザー規約(`.failproofai-user/`)ポリシーでも機能します。詳細は[設定 → hint](/ja/configuration#hint-cross-cutting)を参照してください。
126
126
  </Tip>
127
127
 
128
128
  ### 情報提供用のallowメッセージ
129
129
 
130
-
131
- `allow(message)` は操作を許可し**つつ**、情報提供のメッセージをClaudeに送信します。メッセージはフックハンドラーのstdoutレスポンスの `additionalContext` として配信されます。これは `instruct` と同じ仕組みですが、意味的に異なります。警告ではなくステータスの更新として扱われます。
130
+ `allow(message)` は操作を許可し**つつ**、情報提供メッセージをClaudeに返します。メッセージはフックハンドラーのstdoutレスポンスの `additionalContext` として配信されます — `instruct` と同じ仕組みですが、意味的には異なります: これは警告ではなく、状態の更新です。
132
131
 
133
132
  | 関数 | 効果 | 使用場面 |
134
133
  |----------|--------|----------|
135
- | `allow(message)` | 許可してClaudeにコンテキストを送信する | チェックが通ったことを確認する、またはチェックがスキップされた理由を説明する場合 |
134
+ | `allow(message)` | 許可してClaudeにコンテキストを送信する | チェックが通過したことを確認する、またはチェックがスキップされた理由を説明する |
136
135
 
137
136
  ユースケース:
138
- - **ステータス確認:** `allow("All CI checks passed.")` — すべて正常であることをClaudeに伝える
137
+ - **状態確認:** `allow("All CI checks passed.")` — Claudeに全てが正常であることを伝える
139
138
  - **フェイルオープンの説明:** `allow("GitHub CLI not installed, skipping CI check.")` — チェックがスキップされた理由をClaudeに伝え、完全なコンテキストを提供する
140
- - **複数メッセージの蓄積:** 複数のポリシーがそれぞれ `allow(message)` を返した場合、すべてのメッセージが改行で結合されてまとめて配信されます
139
+ - **複数のメッセージの蓄積:** 複数のポリシーがそれぞれ `allow(message)` を返した場合、全てのメッセージが改行で結合されてまとめて配信される
141
140
 
142
141
  ```js
143
142
  customPolicies.add({
@@ -147,7 +146,7 @@ customPolicies.add({
147
146
  const cwd = ctx.session?.cwd;
148
147
  if (!cwd) return allow("No working directory, skipping branch check.");
149
148
 
150
- // ... ブランチのステータスを確認 ...
149
+ // ... ブランチの状態を確認 ...
151
150
  if (allPushed) {
152
151
  return allow("Branch is up to date with remote.");
153
152
  }
@@ -163,15 +162,15 @@ customPolicies.add({
163
162
  | `eventType` | `string` | `"PreToolUse"`、`"PostToolUse"`、`"Notification"`、`"Stop"` |
164
163
  | `toolName` | `string \| undefined` | 呼び出されるツール(例: `"Bash"`、`"Write"`、`"Read"`) |
165
164
  | `toolInput` | `Record<string, unknown> \| undefined` | ツールの入力パラメータ |
166
- | `payload` | `Record<string, unknown>` | Claude Code からの生のイベントペイロード全体 |
167
- | `session` | `SessionMetadata \| undefined` | セッションコンテキスト(以下を参照) |
165
+ | `payload` | `Record<string, unknown>` | Claude Codeからの完全な生イベントペイロード |
166
+ | `session` | `SessionMetadata \| undefined` | セッションコンテキスト(下記参照) |
168
167
 
169
168
  ### `SessionMetadata` フィールド
170
169
 
171
170
  | フィールド | 型 | 説明 |
172
171
  |-------|------|-------------|
173
- | `sessionId` | `string` | Claude Code セッション識別子 |
174
- | `cwd` | `string` | Claude Code セッションの作業ディレクトリ |
172
+ | `sessionId` | `string` | Claude Codeセッションの識別子 |
173
+ | `cwd` | `string` | Claude Codeセッションの作業ディレクトリ |
175
174
  | `transcriptPath` | `string` | セッションのJSONLトランスクリプトファイルへのパス |
176
175
 
177
176
  ### イベントタイプ
@@ -179,8 +178,8 @@ customPolicies.add({
179
178
  | イベント | 発火タイミング | `toolInput` の内容 |
180
179
  |-------|--------------|----------------------|
181
180
  | `PreToolUse` | Claudeがツールを実行する前 | ツールの入力(例: Bashの場合 `{ command: "..." }`) |
182
- | `PostToolUse` | ツールの完了後 | ツールの入力 + `tool_result`(出力) |
183
- | `Notification` | Claudeが通知を送信するとき | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - フックは常に `allow()` を返す必要があります。通知をブロックすることはできません |
181
+ | `PostToolUse` | ツールが完了した後 | ツールの入力 + `tool_result`(出力) |
182
+ | `Notification` | Claudeが通知を送信するとき | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - フックは常に `allow()` を返す必要があり、通知をブロックすることはできません |
184
183
  | `Stop` | Claudeセッションが終了するとき | 空 |
185
184
 
186
185
  ---
@@ -190,19 +189,19 @@ customPolicies.add({
190
189
  ポリシーは以下の順序で評価されます:
191
190
 
192
191
  1. 組み込みポリシー(定義順)
193
- 2. `customPoliciesPath` から読み込まれた明示的なカスタムポリシー(`.add()` の呼び出し順)
194
- 3. プロジェクトの `.failproofai/policies/` からの規約ポリシー(ファイルはアルファベット順、ファイル内は `.add()` の呼び出し順)
195
- 4. ユーザーの `~/.failproofai/policies/` からの規約ポリシー(ファイルはアルファベット順、ファイル内は `.add()` の呼び出し順)
192
+ 2. `customPoliciesPath` からの明示的なカスタムポリシー(`.add()` の順序)
193
+ 3. プロジェクトの `.failproofai/policies/` からの規約ポリシー(ファイルはアルファベット順、ファイル内は `.add()` の順序)
194
+ 4. ユーザーの `~/.failproofai/policies/` からの規約ポリシー(ファイルはアルファベット順、ファイル内は `.add()` の順序)
196
195
 
197
196
  <Note>
198
- 最初の `deny` が発生すると、以降のすべてのポリシーはスキップされます。すべての `instruct` メッセージは蓄積されてまとめて配信されます。
197
+ 最初の `deny` が全ての後続ポリシーをショートサーキットします。全ての `instruct` メッセージは蓄積され、まとめて配信されます。
199
198
  </Note>
200
199
 
201
200
  ---
202
201
 
203
202
  ## 推移的インポート
204
203
 
205
- カスタムポリシーファイルは相対パスを使ってローカルモジュールをインポートできます:
204
+ カスタムポリシーファイルは相対パスを使用してローカルモジュールをインポートできます:
206
205
 
207
206
  ```js
208
207
  // my-policies.js
@@ -219,42 +218,42 @@ customPolicies.add({
219
218
  });
220
219
  ```
221
220
 
222
- エントリファイルから到達可能なすべての相対インポートが解決されます。これは `from "failproofai"` のインポートを実際のdistパスに書き換え、ESM互換性を確保するために一時的な `.mjs` ファイルを作成することで実装されています。
221
+ エントリファイルから到達可能な全ての相対インポートが解決されます。これは `from "failproofai"` インポートを実際のdistパスに書き換え、ESMの互換性を確保するために一時的な `.mjs` ファイルを作成することで実装されています。
223
222
 
224
223
  ---
225
224
 
226
225
  ## イベントタイプのフィルタリング
227
226
 
228
- `match.events` を使ってポリシーが発火するタイミングを制限できます:
227
+ `match.events` を使用して、ポリシーが発火するタイミングを制限します:
229
228
 
230
229
  ```js
231
230
  customPolicies.add({
232
231
  name: "require-summary-on-stop",
233
232
  match: { events: ["Stop"] },
234
233
  fn: async (ctx) => {
235
- // セッション終了時にのみ発火する
234
+ // セッション終了時のみ発火
236
235
  // ctx.session.transcriptPath にセッションの完全なログが含まれる
237
236
  return allow();
238
237
  },
239
238
  });
240
239
  ```
241
240
 
242
- `match` を完全に省略すると、すべてのイベントタイプで発火します。
241
+ `match` を完全に省略すると、全てのイベントタイプで発火します。
243
242
 
244
243
  ---
245
244
 
246
- ## エラーハンドリングと失敗モード
245
+ ## エラー処理と障害モード
247
246
 
248
- カスタムポリシーは**フェイルオープン**です。エラーが発生しても組み込みポリシーをブロックしたり、フックハンドラーをクラッシュさせたりすることはありません。
247
+ カスタムポリシーは**フェイルオープン**です: エラーが発生しても組み込みポリシーをブロックしたり、フックハンドラーをクラッシュさせたりすることはありません。
249
248
 
250
- | 失敗 | 動作 |
249
+ | 障害 | 動作 |
251
250
  |---------|----------|
252
- | `customPoliciesPath` が未設定 | 明示的なカスタムポリシーは実行されない。規約ポリシーと組み込みポリシーは通常通り継続 |
253
- | ファイルが見つからない | `~/.failproofai/hook.log` に警告を記録。組み込みポリシーは継続 |
254
- | 構文/インポートエラー(明示的) | `~/.failproofai/hook.log` にエラーを記録。明示的なカスタムポリシーをスキップ |
255
- | 構文/インポートエラー(規約) | エラーを記録。そのファイルをスキップし、他の規約ファイルは引き続き読み込まれる |
256
- | `fn` が実行時に例外をスロー | エラーを記録。そのフックは `allow` として扱われる。他のフックは継続 |
257
- | `fn` が10秒以上かかる | タイムアウトを記録。`allow` として扱われる |
251
+ | `customPoliciesPath` が未設定 | 明示的なカスタムポリシーは実行されない。規約ポリシーと組み込みポリシーは正常に継続 |
252
+ | ファイルが見つからない | `~/.failproofai/hook.log` に警告をログ記録。組み込みポリシーは継続 |
253
+ | 構文/インポートエラー(明示的) | `~/.failproofai/hook.log` にエラーをログ記録。明示的なカスタムポリシーはスキップ |
254
+ | 構文/インポートエラー(規約) | エラーをログ記録。該当ファイルはスキップ。他の規約ファイルは引き続き読み込まれる |
255
+ | `fn` が実行時に例外をスロー | エラーをログ記録。該当フックは `allow` として扱われる。他のフックは継続 |
256
+ | `fn` が10秒以上かかる | タイムアウトをログ記録。`allow` として扱われる |
258
257
  | 規約ディレクトリが存在しない | 規約ポリシーは実行されない。エラーなし |
259
258
 
260
259
  <Tip>
@@ -267,13 +266,13 @@ tail -f ~/.failproofai/hook.log
267
266
 
268
267
  ---
269
268
 
270
- ## 完全な例: 複数ポリシー
269
+ ## 完全な例: 複数のポリシー
271
270
 
272
271
  ```js
273
272
  // my-policies.js
274
273
  import { customPolicies, allow, deny, instruct } from "failproofai";
275
274
 
276
- // エージェントがsecretsディレクトリへ書き込むのを防ぐ
275
+ // エージェントがsecretsディレクトリに書き込むことを防止
277
276
  customPolicies.add({
278
277
  name: "block-secrets-dir",
279
278
  description: "Prevent agent from writing to secrets/ directory",
@@ -286,7 +285,7 @@ customPolicies.add({
286
285
  },
287
286
  });
288
287
 
289
- // エージェントの軌道維持: コミット前にテストを検証する
288
+ // エージェントを正しい方向に維持: コミット前にテストを確認
290
289
  customPolicies.add({
291
290
  name: "remind-test-before-commit",
292
291
  description: "Keep the agent on track: verify tests pass before committing",
@@ -301,7 +300,7 @@ customPolicies.add({
301
300
  },
302
301
  });
303
302
 
304
- // フリーズ期間中の計画外の依存関係変更を防ぐ
303
+ // フリーズ期間中の予定外の依存関係変更を防止
305
304
  customPolicies.add({
306
305
  name: "dependency-freeze",
307
306
  description: "Prevent unplanned dependency changes during freeze period",
@@ -324,22 +323,22 @@ export { customPolicies };
324
323
 
325
324
  ## サンプル
326
325
 
327
- `examples/` ディレクトリにはすぐに使えるポリシーファイルが含まれています:
326
+ `examples/` ディレクトリには、すぐに実行できるポリシーファイルが含まれています:
328
327
 
329
328
  | ファイル | 内容 |
330
329
  |------|----------|
331
- | `examples/policies-basic.js` | エージェントのよくある失敗モードをカバーする5つのスターターポリシー |
330
+ | `examples/policies-basic.js` | 一般的なエージェントの障害モードをカバーする5つのスターターポリシー |
332
331
  | `examples/policies-advanced/index.js` | 高度なパターン: 推移的インポート、非同期呼び出し、出力のスクラビング、セッション終了フック |
333
- | `examples/convention-policies/security-policies.mjs` | 規約ベースのセキュリティポリシー(.envへの書き込みをブロック、gitの履歴書き換えを防止) |
332
+ | `examples/convention-policies/security-policies.mjs` | 規約ベースのセキュリティポリシー(.envファイルへの書き込みのブロック、gitの履歴書き換えの防止) |
334
333
  | `examples/convention-policies/workflow-policies.mjs` | 規約ベースのワークフローポリシー(テストのリマインダー、ファイル書き込みの監査) |
335
334
 
336
- ### 明示的なファイルのサンプルを使用する
335
+ ### 明示的なファイルサンプルの使用
337
336
 
338
337
  ```bash
339
338
  failproofai policies --install --custom ./examples/policies-basic.js
340
339
  ```
341
340
 
342
- ### 規約ベースのサンプルを使用する
341
+ ### 規約ベースのサンプルの使用
343
342
 
344
343
  ```bash
345
344
  # プロジェクトレベルにコピー
@@ -351,4 +350,4 @@ mkdir -p ~/.failproofai/policies
351
350
  cp examples/convention-policies/*.mjs ~/.failproofai/policies/
352
351
  ```
353
352
 
354
- インストールコマンドは不要です。次のフックイベント時に自動的にファイルが読み込まれます。
353
+ インストールコマンドは不要です — 次のフックイベント時に自動的にファイルが読み込まれます。