failproofai 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/.next/standalone/.claude/settings.json +316 -0
  2. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +62 -0
  3. package/.next/standalone/.failproofai/policies-config.json +39 -0
  4. package/.next/standalone/.next/BUILD_ID +1 -1
  5. package/.next/standalone/.next/build-manifest.json +5 -5
  6. package/.next/standalone/.next/prerender-manifest.json +3 -3
  7. package/.next/standalone/.next/required-server-files.json +3 -1
  8. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  9. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  14. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  15. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  16. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  17. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  18. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  20. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
  25. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
  26. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  27. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  30. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  31. package/.next/standalone/.next/server/app/index.html +1 -1
  32. package/.next/standalone/.next/server/app/index.rsc +16 -16
  33. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  34. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
  35. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  36. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
  37. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  39. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  40. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  44. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  47. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  56. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  57. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +3 -0
  60. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kjo7d_._.js +1 -1
  61. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_05pz9._._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__12kr5~_._.js → [root-of-the-server]__03kiqd5._.js} +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qo8503._.js → [root-of-the-server]__0bo8s~-._.js} +2 -2
  67. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +9 -9
  71. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  73. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  74. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  75. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  76. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a_7sdg.js +2 -2
  77. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ef3uwk.js +2 -2
  78. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j79~gv.js +2 -2
  79. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pbja1x.js +2 -2
  80. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0r6o0i2.js +2 -2
  81. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11y81~_.js +2 -2
  82. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_12or2kf.js +2 -2
  83. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js +1 -1
  84. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  85. package/.next/standalone/.next/server/pages/404.html +2 -2
  86. package/.next/standalone/.next/server/pages/500.html +1 -1
  87. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  89. package/.next/standalone/.next/static/chunks/{0x-625~1vx1lu.js → 02t9.s735hqyq.js} +1 -1
  90. package/.next/standalone/.next/static/chunks/{0ov60i6md~37t.js → 03oepxbqx6o8~.js} +2 -2
  91. package/.next/standalone/.next/static/chunks/{031pa5~qfzt~_.js → 09e7drilkf1sn.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/{0y~0creqvl5wx.js → 0cwft44dh9bww.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/{06og.7e9nkpjh.js → 0e2uz2g026ckb.js} +1 -1
  94. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +1 -0
  95. package/.next/standalone/.next/static/chunks/{15wf7x-e.8ia3.js → 0h5kbvg~.xf.v.js} +1 -1
  96. package/.next/standalone/.next/static/chunks/{0_4y_t03jn2nq.js → 0od..umlku4bb.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/{0cvffh-pbsv5u.js → 0xbwzy4dl87-0.js} +1 -1
  98. package/.next/standalone/.next/static/chunks/{0c_ljlxa._4lc.js → 18cl6wups7ouq.js} +2 -2
  99. package/.next/standalone/.next/static/chunks/{turbopack-0uc5y~g6h.n7-.js → turbopack-0r26pc8h0y_-e.js} +1 -1
  100. package/.next/standalone/CHANGELOG.md +103 -0
  101. package/.next/standalone/CLAUDE.md +28 -0
  102. package/.next/standalone/Dockerfile.docs +12 -0
  103. package/.next/standalone/README.md +95 -49
  104. package/.next/standalone/app/components/session-hooks-panel.tsx +14 -1
  105. package/.next/standalone/app/policies/hooks-client.tsx +14 -1
  106. package/.next/standalone/bin/failproofai.mjs +5 -0
  107. package/.next/standalone/bun.lock +76 -63
  108. package/.next/standalone/components/navbar.tsx +5 -0
  109. package/.next/standalone/dist/cli.mjs +539 -90
  110. package/.next/standalone/dist/index.js +2 -2
  111. package/.next/standalone/docs/ar/architecture.mdx +333 -0
  112. package/.next/standalone/docs/ar/built-in-policies.mdx +566 -0
  113. package/.next/standalone/docs/ar/cli/dashboard.mdx +28 -0
  114. package/.next/standalone/docs/ar/cli/environment-variables.mdx +34 -0
  115. package/.next/standalone/docs/ar/cli/hook.mdx +31 -0
  116. package/.next/standalone/docs/ar/cli/install-policies.mdx +49 -0
  117. package/.next/standalone/docs/ar/cli/list-policies.mdx +31 -0
  118. package/.next/standalone/docs/ar/cli/remove-policies.mdx +45 -0
  119. package/.next/standalone/docs/ar/cli/version.mdx +13 -0
  120. package/.next/standalone/docs/ar/configuration.mdx +223 -0
  121. package/.next/standalone/docs/ar/custom-policies.mdx +359 -0
  122. package/.next/standalone/docs/ar/dashboard.mdx +142 -0
  123. package/.next/standalone/docs/ar/examples.mdx +254 -0
  124. package/.next/standalone/docs/ar/for-agents.mdx +39 -0
  125. package/.next/standalone/docs/ar/getting-started.mdx +134 -0
  126. package/.next/standalone/docs/ar/introduction.mdx +58 -0
  127. package/.next/standalone/docs/ar/package-aliases.mdx +82 -0
  128. package/.next/standalone/docs/ar/testing.mdx +261 -0
  129. package/.next/standalone/docs/{architecture.md → architecture.mdx} +40 -23
  130. package/.next/standalone/docs/{built-in-policies.md → built-in-policies.mdx} +151 -13
  131. package/.next/standalone/docs/cli/dashboard.mdx +28 -0
  132. package/.next/standalone/docs/cli/environment-variables.mdx +34 -0
  133. package/.next/standalone/docs/cli/hook.mdx +30 -0
  134. package/.next/standalone/docs/cli/install-policies.mdx +48 -0
  135. package/.next/standalone/docs/cli/list-policies.mdx +31 -0
  136. package/.next/standalone/docs/cli/remove-policies.mdx +44 -0
  137. package/.next/standalone/docs/cli/version.mdx +12 -0
  138. package/.next/standalone/docs/{configuration.md → configuration.mdx} +62 -16
  139. package/.next/standalone/docs/custom-policies.mdx +357 -0
  140. package/.next/standalone/docs/{dashboard.md → dashboard.mdx} +26 -29
  141. package/.next/standalone/docs/de/architecture.mdx +332 -0
  142. package/.next/standalone/docs/de/built-in-policies.mdx +564 -0
  143. package/.next/standalone/docs/de/cli/dashboard.mdx +28 -0
  144. package/.next/standalone/docs/de/cli/environment-variables.mdx +34 -0
  145. package/.next/standalone/docs/de/cli/hook.mdx +30 -0
  146. package/.next/standalone/docs/de/cli/install-policies.mdx +48 -0
  147. package/.next/standalone/docs/de/cli/list-policies.mdx +31 -0
  148. package/.next/standalone/docs/de/cli/remove-policies.mdx +44 -0
  149. package/.next/standalone/docs/de/cli/version.mdx +12 -0
  150. package/.next/standalone/docs/de/configuration.mdx +222 -0
  151. package/.next/standalone/docs/de/custom-policies.mdx +357 -0
  152. package/.next/standalone/docs/de/dashboard.mdx +142 -0
  153. package/.next/standalone/docs/de/examples.mdx +253 -0
  154. package/.next/standalone/docs/de/for-agents.mdx +38 -0
  155. package/.next/standalone/docs/de/getting-started.mdx +134 -0
  156. package/.next/standalone/docs/de/introduction.mdx +57 -0
  157. package/.next/standalone/docs/de/package-aliases.mdx +82 -0
  158. package/.next/standalone/docs/de/testing.mdx +260 -0
  159. package/.next/standalone/docs/docs.json +938 -24
  160. package/.next/standalone/docs/es/architecture.mdx +332 -0
  161. package/.next/standalone/docs/es/built-in-policies.mdx +564 -0
  162. package/.next/standalone/docs/es/cli/dashboard.mdx +28 -0
  163. package/.next/standalone/docs/es/cli/environment-variables.mdx +34 -0
  164. package/.next/standalone/docs/es/cli/hook.mdx +30 -0
  165. package/.next/standalone/docs/es/cli/install-policies.mdx +48 -0
  166. package/.next/standalone/docs/es/cli/list-policies.mdx +31 -0
  167. package/.next/standalone/docs/es/cli/remove-policies.mdx +44 -0
  168. package/.next/standalone/docs/es/cli/version.mdx +12 -0
  169. package/.next/standalone/docs/es/configuration.mdx +222 -0
  170. package/.next/standalone/docs/es/custom-policies.mdx +357 -0
  171. package/.next/standalone/docs/es/dashboard.mdx +142 -0
  172. package/.next/standalone/docs/es/examples.mdx +253 -0
  173. package/.next/standalone/docs/es/for-agents.mdx +38 -0
  174. package/.next/standalone/docs/es/getting-started.mdx +134 -0
  175. package/.next/standalone/docs/es/introduction.mdx +57 -0
  176. package/.next/standalone/docs/es/package-aliases.mdx +82 -0
  177. package/.next/standalone/docs/es/testing.mdx +260 -0
  178. package/.next/standalone/docs/examples.mdx +253 -0
  179. package/.next/standalone/docs/for-agents.mdx +38 -0
  180. package/.next/standalone/docs/fr/architecture.mdx +332 -0
  181. package/.next/standalone/docs/fr/built-in-policies.mdx +564 -0
  182. package/.next/standalone/docs/fr/cli/dashboard.mdx +28 -0
  183. package/.next/standalone/docs/fr/cli/environment-variables.mdx +34 -0
  184. package/.next/standalone/docs/fr/cli/hook.mdx +30 -0
  185. package/.next/standalone/docs/fr/cli/install-policies.mdx +48 -0
  186. package/.next/standalone/docs/fr/cli/list-policies.mdx +31 -0
  187. package/.next/standalone/docs/fr/cli/remove-policies.mdx +44 -0
  188. package/.next/standalone/docs/fr/cli/version.mdx +12 -0
  189. package/.next/standalone/docs/fr/configuration.mdx +222 -0
  190. package/.next/standalone/docs/fr/custom-policies.mdx +357 -0
  191. package/.next/standalone/docs/fr/dashboard.mdx +142 -0
  192. package/.next/standalone/docs/fr/examples.mdx +253 -0
  193. package/.next/standalone/docs/fr/for-agents.mdx +38 -0
  194. package/.next/standalone/docs/fr/getting-started.mdx +134 -0
  195. package/.next/standalone/docs/fr/introduction.mdx +57 -0
  196. package/.next/standalone/docs/fr/package-aliases.mdx +82 -0
  197. package/.next/standalone/docs/fr/testing.mdx +260 -0
  198. package/.next/standalone/docs/getting-started.mdx +134 -0
  199. package/.next/standalone/docs/he/architecture.mdx +333 -0
  200. package/.next/standalone/docs/he/built-in-policies.mdx +564 -0
  201. package/.next/standalone/docs/he/cli/dashboard.mdx +28 -0
  202. package/.next/standalone/docs/he/cli/environment-variables.mdx +34 -0
  203. package/.next/standalone/docs/he/cli/hook.mdx +30 -0
  204. package/.next/standalone/docs/he/cli/install-policies.mdx +48 -0
  205. package/.next/standalone/docs/he/cli/list-policies.mdx +32 -0
  206. package/.next/standalone/docs/he/cli/remove-policies.mdx +44 -0
  207. package/.next/standalone/docs/he/cli/version.mdx +12 -0
  208. package/.next/standalone/docs/he/configuration.mdx +222 -0
  209. package/.next/standalone/docs/he/custom-policies.mdx +357 -0
  210. package/.next/standalone/docs/he/dashboard.mdx +142 -0
  211. package/.next/standalone/docs/he/examples.mdx +253 -0
  212. package/.next/standalone/docs/he/for-agents.mdx +38 -0
  213. package/.next/standalone/docs/he/getting-started.mdx +135 -0
  214. package/.next/standalone/docs/he/introduction.mdx +57 -0
  215. package/.next/standalone/docs/he/package-aliases.mdx +82 -0
  216. package/.next/standalone/docs/he/testing.mdx +260 -0
  217. package/.next/standalone/docs/hi/architecture.mdx +334 -0
  218. package/.next/standalone/docs/hi/built-in-policies.mdx +564 -0
  219. package/.next/standalone/docs/hi/cli/dashboard.mdx +28 -0
  220. package/.next/standalone/docs/hi/cli/environment-variables.mdx +34 -0
  221. package/.next/standalone/docs/hi/cli/hook.mdx +30 -0
  222. package/.next/standalone/docs/hi/cli/install-policies.mdx +48 -0
  223. package/.next/standalone/docs/hi/cli/list-policies.mdx +31 -0
  224. package/.next/standalone/docs/hi/cli/remove-policies.mdx +44 -0
  225. package/.next/standalone/docs/hi/cli/version.mdx +12 -0
  226. package/.next/standalone/docs/hi/configuration.mdx +222 -0
  227. package/.next/standalone/docs/hi/custom-policies.mdx +357 -0
  228. package/.next/standalone/docs/hi/dashboard.mdx +142 -0
  229. package/.next/standalone/docs/hi/examples.mdx +255 -0
  230. package/.next/standalone/docs/hi/for-agents.mdx +38 -0
  231. package/.next/standalone/docs/hi/getting-started.mdx +134 -0
  232. package/.next/standalone/docs/hi/introduction.mdx +57 -0
  233. package/.next/standalone/docs/hi/package-aliases.mdx +82 -0
  234. package/.next/standalone/docs/hi/testing.mdx +260 -0
  235. package/.next/standalone/docs/i18n/README.ar.md +312 -0
  236. package/.next/standalone/docs/i18n/README.de.md +307 -0
  237. package/.next/standalone/docs/i18n/README.es.md +307 -0
  238. package/.next/standalone/docs/i18n/README.fr.md +307 -0
  239. package/.next/standalone/docs/i18n/README.he.md +312 -0
  240. package/.next/standalone/docs/i18n/README.hi.md +307 -0
  241. package/.next/standalone/docs/i18n/README.it.md +307 -0
  242. package/.next/standalone/docs/i18n/README.ja.md +307 -0
  243. package/.next/standalone/docs/i18n/README.ko.md +307 -0
  244. package/.next/standalone/docs/i18n/README.pt-br.md +307 -0
  245. package/.next/standalone/docs/i18n/README.ru.md +308 -0
  246. package/.next/standalone/docs/i18n/README.tr.md +308 -0
  247. package/.next/standalone/docs/i18n/README.vi.md +308 -0
  248. package/.next/standalone/docs/i18n/README.zh.md +307 -0
  249. package/.next/standalone/docs/introduction.mdx +57 -0
  250. package/.next/standalone/docs/it/architecture.mdx +333 -0
  251. package/.next/standalone/docs/it/built-in-policies.mdx +564 -0
  252. package/.next/standalone/docs/it/cli/dashboard.mdx +28 -0
  253. package/.next/standalone/docs/it/cli/environment-variables.mdx +34 -0
  254. package/.next/standalone/docs/it/cli/hook.mdx +30 -0
  255. package/.next/standalone/docs/it/cli/install-policies.mdx +48 -0
  256. package/.next/standalone/docs/it/cli/list-policies.mdx +31 -0
  257. package/.next/standalone/docs/it/cli/remove-policies.mdx +44 -0
  258. package/.next/standalone/docs/it/cli/version.mdx +12 -0
  259. package/.next/standalone/docs/it/configuration.mdx +223 -0
  260. package/.next/standalone/docs/it/custom-policies.mdx +358 -0
  261. package/.next/standalone/docs/it/dashboard.mdx +142 -0
  262. package/.next/standalone/docs/it/examples.mdx +253 -0
  263. package/.next/standalone/docs/it/for-agents.mdx +38 -0
  264. package/.next/standalone/docs/it/getting-started.mdx +134 -0
  265. package/.next/standalone/docs/it/introduction.mdx +57 -0
  266. package/.next/standalone/docs/it/package-aliases.mdx +82 -0
  267. package/.next/standalone/docs/it/testing.mdx +260 -0
  268. package/.next/standalone/docs/ja/architecture.mdx +332 -0
  269. package/.next/standalone/docs/ja/built-in-policies.mdx +562 -0
  270. package/.next/standalone/docs/ja/cli/dashboard.mdx +28 -0
  271. package/.next/standalone/docs/ja/cli/environment-variables.mdx +34 -0
  272. package/.next/standalone/docs/ja/cli/hook.mdx +30 -0
  273. package/.next/standalone/docs/ja/cli/install-policies.mdx +48 -0
  274. package/.next/standalone/docs/ja/cli/list-policies.mdx +31 -0
  275. package/.next/standalone/docs/ja/cli/remove-policies.mdx +44 -0
  276. package/.next/standalone/docs/ja/cli/version.mdx +12 -0
  277. package/.next/standalone/docs/ja/configuration.mdx +222 -0
  278. package/.next/standalone/docs/ja/custom-policies.mdx +357 -0
  279. package/.next/standalone/docs/ja/dashboard.mdx +142 -0
  280. package/.next/standalone/docs/ja/examples.mdx +253 -0
  281. package/.next/standalone/docs/ja/for-agents.mdx +38 -0
  282. package/.next/standalone/docs/ja/getting-started.mdx +134 -0
  283. package/.next/standalone/docs/ja/introduction.mdx +57 -0
  284. package/.next/standalone/docs/ja/package-aliases.mdx +82 -0
  285. package/.next/standalone/docs/ja/testing.mdx +260 -0
  286. package/.next/standalone/docs/ko/architecture.mdx +332 -0
  287. package/.next/standalone/docs/ko/built-in-policies.mdx +562 -0
  288. package/.next/standalone/docs/ko/cli/dashboard.mdx +28 -0
  289. package/.next/standalone/docs/ko/cli/environment-variables.mdx +34 -0
  290. package/.next/standalone/docs/ko/cli/hook.mdx +30 -0
  291. package/.next/standalone/docs/ko/cli/install-policies.mdx +48 -0
  292. package/.next/standalone/docs/ko/cli/list-policies.mdx +31 -0
  293. package/.next/standalone/docs/ko/cli/remove-policies.mdx +44 -0
  294. package/.next/standalone/docs/ko/cli/version.mdx +12 -0
  295. package/.next/standalone/docs/ko/configuration.mdx +222 -0
  296. package/.next/standalone/docs/ko/custom-policies.mdx +357 -0
  297. package/.next/standalone/docs/ko/dashboard.mdx +142 -0
  298. package/.next/standalone/docs/ko/examples.mdx +253 -0
  299. package/.next/standalone/docs/ko/for-agents.mdx +38 -0
  300. package/.next/standalone/docs/ko/getting-started.mdx +134 -0
  301. package/.next/standalone/docs/ko/introduction.mdx +57 -0
  302. package/.next/standalone/docs/ko/package-aliases.mdx +82 -0
  303. package/.next/standalone/docs/ko/testing.mdx +260 -0
  304. package/.next/standalone/docs/logo/dark.svg +21 -0
  305. package/.next/standalone/docs/logo/light.svg +21 -0
  306. package/.next/standalone/docs/{package-aliases.md → package-aliases.mdx} +5 -5
  307. package/.next/standalone/docs/pt-br/architecture.mdx +332 -0
  308. package/.next/standalone/docs/pt-br/built-in-policies.mdx +564 -0
  309. package/.next/standalone/docs/pt-br/cli/dashboard.mdx +28 -0
  310. package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +34 -0
  311. package/.next/standalone/docs/pt-br/cli/hook.mdx +30 -0
  312. package/.next/standalone/docs/pt-br/cli/install-policies.mdx +48 -0
  313. package/.next/standalone/docs/pt-br/cli/list-policies.mdx +31 -0
  314. package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +44 -0
  315. package/.next/standalone/docs/pt-br/cli/version.mdx +12 -0
  316. package/.next/standalone/docs/pt-br/configuration.mdx +222 -0
  317. package/.next/standalone/docs/pt-br/custom-policies.mdx +357 -0
  318. package/.next/standalone/docs/pt-br/dashboard.mdx +142 -0
  319. package/.next/standalone/docs/pt-br/examples.mdx +253 -0
  320. package/.next/standalone/docs/pt-br/for-agents.mdx +38 -0
  321. package/.next/standalone/docs/pt-br/getting-started.mdx +134 -0
  322. package/.next/standalone/docs/pt-br/introduction.mdx +57 -0
  323. package/.next/standalone/docs/pt-br/package-aliases.mdx +82 -0
  324. package/.next/standalone/docs/pt-br/testing.mdx +260 -0
  325. package/.next/standalone/docs/ru/architecture.mdx +334 -0
  326. package/.next/standalone/docs/ru/built-in-policies.mdx +562 -0
  327. package/.next/standalone/docs/ru/cli/dashboard.mdx +28 -0
  328. package/.next/standalone/docs/ru/cli/environment-variables.mdx +34 -0
  329. package/.next/standalone/docs/ru/cli/hook.mdx +30 -0
  330. package/.next/standalone/docs/ru/cli/install-policies.mdx +48 -0
  331. package/.next/standalone/docs/ru/cli/list-policies.mdx +32 -0
  332. package/.next/standalone/docs/ru/cli/remove-policies.mdx +44 -0
  333. package/.next/standalone/docs/ru/cli/version.mdx +12 -0
  334. package/.next/standalone/docs/ru/configuration.mdx +223 -0
  335. package/.next/standalone/docs/ru/custom-policies.mdx +357 -0
  336. package/.next/standalone/docs/ru/dashboard.mdx +142 -0
  337. package/.next/standalone/docs/ru/examples.mdx +254 -0
  338. package/.next/standalone/docs/ru/for-agents.mdx +38 -0
  339. package/.next/standalone/docs/ru/getting-started.mdx +134 -0
  340. package/.next/standalone/docs/ru/introduction.mdx +57 -0
  341. package/.next/standalone/docs/ru/package-aliases.mdx +82 -0
  342. package/.next/standalone/docs/ru/testing.mdx +260 -0
  343. package/.next/standalone/docs/{testing.md → testing.mdx} +11 -11
  344. package/.next/standalone/docs/tr/architecture.mdx +333 -0
  345. package/.next/standalone/docs/tr/built-in-policies.mdx +562 -0
  346. package/.next/standalone/docs/tr/cli/dashboard.mdx +28 -0
  347. package/.next/standalone/docs/tr/cli/environment-variables.mdx +34 -0
  348. package/.next/standalone/docs/tr/cli/hook.mdx +30 -0
  349. package/.next/standalone/docs/tr/cli/install-policies.mdx +48 -0
  350. package/.next/standalone/docs/tr/cli/list-policies.mdx +31 -0
  351. package/.next/standalone/docs/tr/cli/remove-policies.mdx +45 -0
  352. package/.next/standalone/docs/tr/cli/version.mdx +12 -0
  353. package/.next/standalone/docs/tr/configuration.mdx +223 -0
  354. package/.next/standalone/docs/tr/custom-policies.mdx +357 -0
  355. package/.next/standalone/docs/tr/dashboard.mdx +142 -0
  356. package/.next/standalone/docs/tr/examples.mdx +253 -0
  357. package/.next/standalone/docs/tr/for-agents.mdx +38 -0
  358. package/.next/standalone/docs/tr/getting-started.mdx +134 -0
  359. package/.next/standalone/docs/tr/introduction.mdx +57 -0
  360. package/.next/standalone/docs/tr/package-aliases.mdx +82 -0
  361. package/.next/standalone/docs/tr/testing.mdx +260 -0
  362. package/.next/standalone/docs/vi/architecture.mdx +333 -0
  363. package/.next/standalone/docs/vi/built-in-policies.mdx +564 -0
  364. package/.next/standalone/docs/vi/cli/dashboard.mdx +28 -0
  365. package/.next/standalone/docs/vi/cli/environment-variables.mdx +34 -0
  366. package/.next/standalone/docs/vi/cli/hook.mdx +30 -0
  367. package/.next/standalone/docs/vi/cli/install-policies.mdx +48 -0
  368. package/.next/standalone/docs/vi/cli/list-policies.mdx +31 -0
  369. package/.next/standalone/docs/vi/cli/remove-policies.mdx +44 -0
  370. package/.next/standalone/docs/vi/cli/version.mdx +13 -0
  371. package/.next/standalone/docs/vi/configuration.mdx +222 -0
  372. package/.next/standalone/docs/vi/custom-policies.mdx +357 -0
  373. package/.next/standalone/docs/vi/dashboard.mdx +142 -0
  374. package/.next/standalone/docs/vi/examples.mdx +253 -0
  375. package/.next/standalone/docs/vi/for-agents.mdx +38 -0
  376. package/.next/standalone/docs/vi/getting-started.mdx +134 -0
  377. package/.next/standalone/docs/vi/introduction.mdx +57 -0
  378. package/.next/standalone/docs/vi/package-aliases.mdx +82 -0
  379. package/.next/standalone/docs/vi/testing.mdx +260 -0
  380. package/.next/standalone/docs/zh/architecture.mdx +332 -0
  381. package/.next/standalone/docs/zh/built-in-policies.mdx +562 -0
  382. package/.next/standalone/docs/zh/cli/dashboard.mdx +28 -0
  383. package/.next/standalone/docs/zh/cli/environment-variables.mdx +34 -0
  384. package/.next/standalone/docs/zh/cli/hook.mdx +30 -0
  385. package/.next/standalone/docs/zh/cli/install-policies.mdx +48 -0
  386. package/.next/standalone/docs/zh/cli/list-policies.mdx +31 -0
  387. package/.next/standalone/docs/zh/cli/remove-policies.mdx +44 -0
  388. package/.next/standalone/docs/zh/cli/version.mdx +12 -0
  389. package/.next/standalone/docs/zh/configuration.mdx +222 -0
  390. package/.next/standalone/docs/zh/custom-policies.mdx +357 -0
  391. package/.next/standalone/docs/zh/dashboard.mdx +142 -0
  392. package/.next/standalone/docs/zh/examples.mdx +253 -0
  393. package/.next/standalone/docs/zh/for-agents.mdx +38 -0
  394. package/.next/standalone/docs/zh/getting-started.mdx +134 -0
  395. package/.next/standalone/docs/zh/introduction.mdx +57 -0
  396. package/.next/standalone/docs/zh/package-aliases.mdx +82 -0
  397. package/.next/standalone/docs/zh/testing.mdx +260 -0
  398. package/.next/standalone/examples/convention-policies/security-policies.mjs +40 -0
  399. package/.next/standalone/examples/convention-policies/workflow-policies.mjs +41 -0
  400. package/.next/standalone/next.config.ts +5 -3
  401. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  402. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  403. package/.next/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +2 -2
  404. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +1 -1
  405. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +1 -1
  406. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  407. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  408. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  409. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +7 -2
  410. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  411. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  412. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  413. package/.next/standalone/node_modules/next/dist/server/render.js +20 -19
  414. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  415. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  416. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  417. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  418. package/.next/standalone/node_modules/next/package.json +15 -15
  419. package/.next/standalone/node_modules/react/cjs/react.development.js +1 -1
  420. package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
  421. package/.next/standalone/node_modules/react/package.json +1 -1
  422. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  423. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  424. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
  425. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
  426. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
  427. package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  428. package/.next/standalone/node_modules/react-dom/package.json +2 -2
  429. package/.next/standalone/package.json +13 -10
  430. package/.next/standalone/scripts/translate-docs/cache.ts +62 -0
  431. package/.next/standalone/scripts/translate-docs/cli.ts +357 -0
  432. package/.next/standalone/scripts/translate-docs/config.ts +248 -0
  433. package/.next/standalone/scripts/translate-docs/mdx-translator.ts +153 -0
  434. package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +107 -0
  435. package/.next/standalone/scripts/translate-docs/readme-translator.ts +154 -0
  436. package/.next/standalone/scripts/translate-docs/translator.ts +68 -0
  437. package/.next/standalone/scripts/translate-docs/types.ts +43 -0
  438. package/.next/standalone/server.js +1 -1
  439. package/.next/standalone/skills-lock.json +10 -0
  440. package/.next/standalone/src/hooks/builtin-policies.ts +405 -25
  441. package/.next/standalone/src/hooks/custom-hooks-loader.ts +165 -21
  442. package/.next/standalone/src/hooks/handler.ts +33 -6
  443. package/.next/standalone/src/hooks/hook-activity-store.ts +6 -1
  444. package/.next/standalone/src/hooks/hooks-config.ts +47 -2
  445. package/.next/standalone/src/hooks/llm-client.ts +2 -2
  446. package/.next/standalone/src/hooks/loader-utils.ts +4 -4
  447. package/.next/standalone/src/hooks/manager.ts +67 -16
  448. package/.next/standalone/src/hooks/policy-evaluator.ts +58 -19
  449. package/.next/standalone/src/hooks/policy-helpers.ts +2 -2
  450. package/.next/standalone/vitest.config.e2e.mts +3 -0
  451. package/.next/standalone/vitest.config.mts +3 -0
  452. package/README.md +95 -49
  453. package/bin/failproofai.mjs +5 -0
  454. package/dist/cli.mjs +539 -90
  455. package/dist/index.js +2 -2
  456. package/package.json +13 -10
  457. package/scripts/translate-docs/cache.ts +62 -0
  458. package/scripts/translate-docs/cli.ts +357 -0
  459. package/scripts/translate-docs/config.ts +248 -0
  460. package/scripts/translate-docs/mdx-translator.ts +153 -0
  461. package/scripts/translate-docs/mintlify-nav.ts +107 -0
  462. package/scripts/translate-docs/readme-translator.ts +154 -0
  463. package/scripts/translate-docs/translator.ts +68 -0
  464. package/scripts/translate-docs/types.ts +43 -0
  465. package/src/hooks/builtin-policies.ts +405 -25
  466. package/src/hooks/custom-hooks-loader.ts +165 -21
  467. package/src/hooks/handler.ts +33 -6
  468. package/src/hooks/hook-activity-store.ts +6 -1
  469. package/src/hooks/hooks-config.ts +47 -2
  470. package/src/hooks/llm-client.ts +2 -2
  471. package/src/hooks/loader-utils.ts +4 -4
  472. package/src/hooks/manager.ts +67 -16
  473. package/src/hooks/policy-evaluator.ts +58 -19
  474. package/src/hooks/policy-helpers.ts +2 -2
  475. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02nt~6d._.js +0 -3
  476. package/.next/standalone/.next/static/chunks/15jpradyu_531.css +0 -1
  477. package/.next/standalone/docs/cli-reference.md +0 -175
  478. package/.next/standalone/docs/custom-hooks.md +0 -261
  479. package/.next/standalone/docs/getting-started.md +0 -128
  480. package/.next/standalone/docs/introduction.md +0 -47
  481. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → En9eEShUkUjgeYbY9v6Gy}/_buildManifest.js +0 -0
  482. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → En9eEShUkUjgeYbY9v6Gy}/_clientMiddlewareManifest.js +0 -0
  483. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → En9eEShUkUjgeYbY9v6Gy}/_ssgManifest.js +0 -0
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: Elenca policies
3
+ description: "Visualizza quali policy sono abilitate, i loro parametri e le policy personalizzate"
4
+ ---
5
+
6
+ ```bash
7
+ failproofai policies
8
+ ```
9
+
10
+ Mostra tutte le policy con il loro stato, i parametri configurati e le policy personalizzate.
11
+
12
+ ## Output di esempio
13
+
14
+ ```text
15
+ Failproof AI Hook Policies (user)
16
+
17
+ Status Name Description
18
+ ────── ──────────────────────────────────────────────────────────────
19
+ ✓ block-sudo Block sudo commands
20
+ allowPatterns: ["sudo systemctl status"]
21
+ ✓ block-rm-rf Block recursive deletions
22
+ ✗ block-curl-pipe-sh Block curl|bash patterns
23
+ ✓ sanitize-api-keys Redact API keys from output
24
+ additionalPatterns: [{ regex: "MY_TOKEN_...", label: "..." }]
25
+
26
+ ── Custom Policies (/home/alice/myproject/my-policies.js) ──────────────
27
+ ✓ require-jira-ticket Block commits without ticket
28
+ ✓ approval-gate Approval gate for destructive ops
29
+ ```
30
+
31
+ Le chiavi sconosciute in `policyParams` vengono segnalate qui in modo che tu possa rilevare gli errori di battitura in anticipo.
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: Disinstallare le policies
3
+ description: "Rimuovere le voci hook dalle impostazioni di Claude Code"
4
+ ---
5
+
6
+ ```bash
7
+ failproofai policies --uninstall [policy-names...] [options]
8
+ ```
9
+
10
+ Rimuove le voci hook di failproofai dal file `settings.json` di Claude Code.
11
+
12
+ Alias: `failproofai p -u`
13
+
14
+ ## Opzioni
15
+
16
+ | Flag | Descrizione |
17
+ |------|-------------|
18
+ | `--scope user` | Rimuove dalle impostazioni globali (predefinito) |
19
+ | `--scope project` | Rimuove dalle impostazioni del progetto |
20
+ | `--scope local` | Rimuove dalle impostazioni locali |
21
+ | `--scope all` | Rimuove da tutti gli ambiti contemporaneamente |
22
+ | `--custom` / `-c` | Cancella il percorso `customPoliciesPath` dalla configurazione |
23
+ | `--beta` | Rimuove solo le policy beta dalla configurazione |
24
+
25
+ ## Comportamento
26
+
27
+ - **Nessun nome di policy** - rimuove tutte le voci hook di failproofai dal file di impostazioni
28
+ - **Nomi specifici** - disabilita quelle policy ma mantiene gli hook installati
29
+
30
+ ## Esempi
31
+
32
+ ```bash
33
+ # Rimuove tutti gli hook globalmente
34
+ failproofai policies --uninstall
35
+
36
+ # Disabilita una policy specifica (mantiene gli hook installati)
37
+ failproofai policies --uninstall block-sudo
38
+
39
+ # Rimuove gli hook da ogni ambito
40
+ failproofai policies --uninstall --scope all
41
+
42
+ # Cancella il percorso delle policy personalizzate
43
+ failproofai policies --uninstall --custom
44
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Controlla versione
3
+ description: "Stampa la versione installata di failproofai"
4
+ ---
5
+
6
+ ```bash
7
+ failproofai --version
8
+ # or
9
+ failproofai -v
10
+ ```
11
+
12
+ Stampa il numero della versione installata.
@@ -0,0 +1,223 @@
1
+ ---
2
+ ---
3
+ title: Configurazione
4
+ description: "Formato del file di configurazione, sistema a tre scope e regole di merge"
5
+ icon: gear
6
+ ---
7
+
8
+ failproofai utilizza file di configurazione JSON per controllare quali policy sono attive, come si comportano e da dove vengono caricate le policy personalizzate. La configurazione è progettata per essere facilmente condivisibile con il tuo team - committila nel tuo repository e ogni sviluppatore avrà la stessa rete di sicurezza per gli agenti.
9
+
10
+ ---
11
+
12
+ ## Scope di configurazione
13
+
14
+ Esistono tre scope di configurazione, valutati in ordine di priorità:
15
+
16
+ | Scope | Percorso del file | Scopo |
17
+ |-------|------------------|-------|
18
+ | **project** | `.failproofai/policies-config.json` | Impostazioni per-repository, committate nel controllo di versione |
19
+ | **local** | `.failproofai/policies-config.local.json` | Override personali per-repository, gitignored |
20
+ | **global** | `~/.failproofai/policies-config.json` | Impostazioni predefinite a livello di utente su tutti i progetti |
21
+
22
+ Quando failproofai riceve un evento hook, carica e unisce tutti e tre i file che esistono per la directory di lavoro corrente.
23
+
24
+ ### Regole di merge
25
+
26
+ **`enabledPolicies`** - l'unione di tutti e tre gli scope. Una policy abilitata a qualsiasi livello è attiva.
27
+
28
+ ```text
29
+ project: ["block-sudo"]
30
+ local: ["block-rm-rf"]
31
+ global: ["block-sudo", "sanitize-api-keys"]
32
+
33
+ resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← unione deduplicated
34
+ ```
35
+
36
+ **`policyParams`** - il primo scope che definisce i parametri per una determinata policy vince completamente. Non c'è alcun deep merging dei valori all'interno dei parametri di una policy.
37
+
38
+ ```text
39
+ project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
40
+ global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
41
+
42
+ resolved: { allowPatterns: ["sudo apt-get update"] } ← project vince, global ignorato
43
+ ```
44
+
45
+ ```text
46
+ project: (no block-sudo entry)
47
+ local: (no block-sudo entry)
48
+ global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
49
+
50
+ resolved: { allowPatterns: ["sudo systemctl status"] } ← ricade a global
51
+ ```
52
+
53
+ **`customPoliciesPath`** - il primo scope che lo definisce vince.
54
+
55
+ **`llm`** - il primo scope che lo definisce vince.
56
+
57
+ ---
58
+
59
+ ## Formato del file di configurazione
60
+
61
+ ```json
62
+ {
63
+ "enabledPolicies": [
64
+ "block-sudo",
65
+ "block-rm-rf",
66
+ "block-push-master",
67
+ "sanitize-api-keys",
68
+ "sanitize-jwt",
69
+ "block-env-files",
70
+ "block-read-outside-cwd"
71
+ ],
72
+ "policyParams": {
73
+ "block-sudo": {
74
+ "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
75
+ },
76
+ "block-push-master": {
77
+ "protectedBranches": ["main", "release", "prod"]
78
+ },
79
+ "block-rm-rf": {
80
+ "allowPaths": ["/tmp"]
81
+ },
82
+ "block-read-outside-cwd": {
83
+ "allowPaths": ["/shared/data", "/opt/company"]
84
+ },
85
+ "sanitize-api-keys": {
86
+ "additionalPatterns": [
87
+ { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo API key" }
88
+ ]
89
+ },
90
+ "warn-large-file-write": {
91
+ "thresholdKb": 512
92
+ }
93
+ },
94
+ "customPoliciesPath": "/home/alice/myproject/my-policies.js"
95
+ }
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Riferimento dei campi
101
+
102
+ ### `enabledPolicies`
103
+
104
+ Type: `string[]`
105
+
106
+ Elenco dei nomi delle policy da abilitare. I nomi devono corrispondere esattamente agli identificatori delle policy mostrati da `failproofai policies`. Vedi [Built-in Policies](/it/built-in-policies) per l'elenco completo.
107
+
108
+ Le policy non in `enabledPolicies` sono inattive, anche se hanno voci in `policyParams`.
109
+
110
+ ### `policyParams`
111
+
112
+ Type: `Record<string, Record<string, unknown>>`
113
+
114
+ Override dei parametri per-policy. La chiave esterna è il nome della policy; le chiavi interne sono specifiche della policy. Ogni policy documenta i suoi parametri disponibili in [Built-in Policies](/it/built-in-policies).
115
+
116
+ Se una policy ha parametri ma non li specifichi, vengono utilizzati i valori predefiniti integrati della policy. Gli utenti che non configurano affatto `policyParams` ottengono un comportamento identico alle versioni precedenti.
117
+
118
+ Le chiavi sconosciute all'interno del blocco parametri di una policy vengono silenziosamente ignorate al momento dell'attivazione dell'hook ma segnalate come avvisi quando esegui `failproofai policies`.
119
+
120
+ #### `hint` (cross-cutting)
121
+
122
+ Type: `string` (optional)
123
+
124
+ Un messaggio aggiunto al motivo quando una policy restituisce `deny` o `instruct`. Usalo per dare a Claude una guida praticabile senza modificare la policy stessa.
125
+
126
+ Funziona con qualsiasi tipo di policy — integrata, personalizzata (`custom/`), convenzione di progetto (`.failproofai-project/`), o convenzione utente (`.failproofai-user/`).
127
+
128
+ ```json
129
+ {
130
+ "policyParams": {
131
+ "block-force-push": {
132
+ "hint": "Try creating a fresh branch instead."
133
+ },
134
+ "block-sudo": {
135
+ "allowPatterns": ["sudo apt-get"],
136
+ "hint": "Use apt-get directly without sudo."
137
+ },
138
+ "custom/my-policy": {
139
+ "hint": "Ask the user for approval first."
140
+ }
141
+ }
142
+ }
143
+ ```
144
+
145
+ Quando `block-force-push` nega, Claude vede: *"Force-pushing is blocked. Try creating a fresh branch instead."*
146
+
147
+ I valori non stringa e le stringhe vuote vengono silenziosamente ignorate. Se `hint` non è impostato, il comportamento non cambia (retrocompatibile).
148
+
149
+ ### `customPoliciesPath`
150
+
151
+ Type: `string` (absolute path)
152
+
153
+ Percorso a un file JavaScript contenente policy hook personalizzate. Viene impostato automaticamente da `failproofai policies --install --custom <path>` (il percorso viene risolto a assoluto prima di essere archiviato).
154
+
155
+ Il file viene caricato nuovo su ogni evento hook - non c'è caching. Vedi [Custom Policies](/it/custom-policies) per i dettagli di authoring.
156
+
157
+ ### Policy basate su convenzione (v0.0.2-beta.7+)
158
+
159
+ Oltre al `customPoliciesPath` esplicito, failproofai scopre e carica automaticamente i file di policy dalle directory `.failproofai/policies/`:
160
+
161
+ | Livello | Directory | Scope |
162
+ |---------|-----------|-------|
163
+ | Project | `.failproofai/policies/` | Condiviso con il team via controllo di versione |
164
+ | User | `~/.failproofai/policies/` | Personale, si applica a tutti i progetti |
165
+
166
+ **File matching:** Solo i file corrispondenti a `*policies.{js,mjs,ts}` vengono caricati (ad es. `security-policies.mjs`, `workflow-policies.js`). Gli altri file nella directory vengono ignorati.
167
+
168
+ **Nessuna configurazione necessaria:** Le policy di convenzione non richiedono voci in `policies-config.json`. Basta eliminare i file nella directory e verranno raccolti al prossimo evento hook.
169
+
170
+ **Union loading:** Entrambe le directory di convenzione di progetto e utente vengono scansionate. Tutti i file corrispondenti da entrambi i livelli vengono caricati (a differenza di `customPoliciesPath` che utilizza first-scope-wins).
171
+
172
+ Vedi [Custom Policies](/it/custom-policies) per ulteriori dettagli ed esempi.
173
+
174
+ ### `llm`
175
+
176
+ Type: `object` (optional)
177
+
178
+ Configurazione del client LLM per le policy che effettuano chiamate AI. Non richiesto per la maggior parte delle configurazioni.
179
+
180
+ ```json
181
+ {
182
+ "llm": {
183
+ "model": "claude-sonnet-4-6",
184
+ "apiKey": "sk-ant-..."
185
+ }
186
+ }
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Gestione della configurazione da CLI
192
+
193
+ I comandi `policies --install` e `policies --uninstall` scrivono nel `settings.json` di Claude Code (i punti di ingresso dell'hook), mentre `policies-config.json` è il file che gestisci direttamente. I due sono separati:
194
+
195
+ - **`settings.json`** - dice a Claude Code di chiamare `failproofai --hook <event>` su ogni tool use
196
+ - **`policies-config.json`** - dice a failproofai quali policy valutare e con quali parametri
197
+
198
+ Puoi modificare `policies-config.json` direttamente in qualsiasi momento; le modifiche hanno effetto immediatamente al prossimo evento hook senza necessità di riavvio.
199
+
200
+ ---
201
+
202
+ ## Esempio: config a livello di progetto con impostazioni predefinite del team
203
+
204
+ Committa `.failproofai/policies-config.json` nel tuo repo:
205
+
206
+ ```json
207
+ {
208
+ "enabledPolicies": [
209
+ "block-sudo",
210
+ "block-rm-rf",
211
+ "block-push-master",
212
+ "sanitize-api-keys",
213
+ "block-env-files"
214
+ ],
215
+ "policyParams": {
216
+ "block-push-master": {
217
+ "protectedBranches": ["main", "release", "hotfix"]
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ Ogni sviluppatore può quindi creare `.failproofai/policies-config.local.json` (gitignored) per override personali senza influenzare i compagni di squadra.
@@ -0,0 +1,358 @@
1
+ ---
2
+ ---
3
+ title: Criteri Personalizzati
4
+ description: "Scrivi i tuoi criteri in JavaScript - applica convenzioni, previeni deviazioni, rilevai guasti, integra con sistemi esterni"
5
+ icon: code
6
+ ---
7
+
8
+ I criteri personalizzati ti permettono di scrivere regole per qualsiasi comportamento dell'agente: applica convenzioni di progetto, previeni deviazioni, blocca operazioni distruttive, rileva agenti bloccati, o integra con Slack, flussi di approvazione e altro. Usano lo stesso sistema di eventi hook e le decisioni `allow`, `deny`, `instruct` dei criteri integrati.
9
+
10
+ ---
11
+
12
+ ## Esempio rapido
13
+
14
+ ```js
15
+ // my-policies.js
16
+ import { customPolicies, allow, deny, instruct } from "failproofai";
17
+
18
+ customPolicies.add({
19
+ name: "no-production-writes",
20
+ description: "Block writes to paths containing 'production'",
21
+ match: { events: ["PreToolUse"] },
22
+ fn: async (ctx) => {
23
+ if (ctx.toolName !== "Write" && ctx.toolName !== "Edit") return allow();
24
+ const path = ctx.toolInput?.file_path ?? "";
25
+ if (path.includes("production")) {
26
+ return deny("Writes to production paths are blocked");
27
+ }
28
+ return allow();
29
+ },
30
+ });
31
+ ```
32
+
33
+ Installalo:
34
+
35
+ ```bash
36
+ failproofai policies --install --custom ./my-policies.js
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Due modi per caricare criteri personalizzati
42
+
43
+ ### Opzione 1: Basata su convenzione (consigliato, v0.0.2-beta.7+)
44
+
45
+ Inserisci i file `*policies.{js,mjs,ts}` in `.failproofai/policies/` e vengono caricati automaticamente — nessun flag o modifica di configurazione necessaria. Funziona come i git hook: inserisci un file e funziona.
46
+
47
+ ```
48
+ # Livello di progetto — incluso in git, condiviso con il team
49
+ .failproofai/policies/security-policies.mjs
50
+ .failproofai/policies/workflow-policies.mjs
51
+
52
+ # Livello utente — personale, si applica a tutti i progetti
53
+ ~/.failproofai/policies/my-policies.mjs
54
+ ```
55
+
56
+ **Come funziona:**
57
+ - Entrambe le directory di progetto e utente vengono scansionate (unione — non primo ambito vince)
58
+ - I file vengono caricati alfabeticamente all'interno di ogni directory. Aggiungi il prefisso `01-`, `02-` per controllare l'ordine
59
+ - Solo i file che corrispondono a `*policies.{js,mjs,ts}` vengono caricati; gli altri file vengono ignorati
60
+ - Ogni file viene caricato indipendentemente (fail-open per file)
61
+ - Funziona insieme ai criteri espliciti `--custom` e integrati
62
+
63
+ <Tip>
64
+ I criteri di convenzione sono il modo più semplice per condividere criteri tra un team. Includi `.failproofai/policies/` in git e ogni membro del team li otterrà automaticamente.
65
+ </Tip>
66
+
67
+ ### Opzione 2: Percorso file esplicito
68
+
69
+ ```bash
70
+ # Installa con un file di criteri personalizzati
71
+ failproofai policies --install --custom ./my-policies.js
72
+
73
+ # Sostituisci il percorso del file di criteri
74
+ failproofai policies --install --custom ./new-policies.js
75
+
76
+ # Rimuovi il percorso dei criteri personalizzati dalla configurazione
77
+ failproofai policies --uninstall --custom
78
+ ```
79
+
80
+ Il percorso assoluto risolto viene memorizzato in `policies-config.json` come `customPoliciesPath`. Il file viene caricato di nuovo ad ogni evento hook - non c'è caching tra gli eventi.
81
+
82
+ ### Usare entrambi insieme
83
+
84
+ I criteri di convenzione e il file esplicito `--custom` possono coesistere. Ordine di caricamento:
85
+
86
+ 1. File `customPoliciesPath` esplicito (se configurato)
87
+ 2. File di convenzione di progetto (`{cwd}/.failproofai/policies/`, alfabetici)
88
+ 3. File di convenzione utente (`~/.failproofai/policies/`, alfabetici)
89
+
90
+ ---
91
+
92
+ ## API
93
+
94
+ ### Importazione
95
+
96
+ ```js
97
+ import { customPolicies, allow, deny, instruct } from "failproofai";
98
+ ```
99
+
100
+ ### `customPolicies.add(hook)`
101
+
102
+ Registra un criterio. Chiama questo tutte le volte che necessario per più criteri nello stesso file.
103
+
104
+ ```ts
105
+ customPolicies.add({
106
+ name: string; // obbligatorio - identificatore univoco
107
+ description?: string; // mostrato nell'output di `failproofai policies`
108
+ match?: { events?: HookEventType[] }; // filtra per tipo di evento; ometti per corrispondere a tutti
109
+ fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
110
+ });
111
+ ```
112
+
113
+ ### Helper di decisione
114
+
115
+ | Funzione | Effetto | Usa quando |
116
+ |----------|--------|----------|
117
+ | `allow()` | Consenti l'operazione silenziosamente | L'azione è sicura, nessun messaggio necessario |
118
+ | `deny(message)` | Blocca l'operazione | L'agente non dovrebbe compiere questa azione |
119
+ | `instruct(message)` | Aggiungi contesto senza bloccare | Dai all'agente contesto aggiuntivo per rimanere in traccia |
120
+
121
+ `deny(message)` - il messaggio viene visualizzato a Claude con prefisso `"Blocked by failproofai:"`. Un singolo `deny` fa corto circuito di tutta la valutazione ulteriore.
122
+
123
+ `instruct(message)` - il messaggio viene aggiunto al contesto di Claude per la chiamata dello strumento corrente. Tutti i messaggi `instruct` vengono accumulati e consegnati insieme.
124
+
125
+ <Tip>
126
+ Puoi aggiungere guidance extra a qualsiasi messaggio `deny` o `instruct` aggiungendo un campo `hint` in `policyParams` — nessuna modifica di codice necessaria. Questo funziona per i criteri personalizzati (`custom/`), di convenzione di progetto (`.failproofai-project/`), e di convenzione utente (`.failproofai-user/`) anche. Vedi [Configurazione → hint](/it/configuration#hint-cross-cutting) per i dettagli.
127
+ </Tip>
128
+
129
+ ### Messaggi di allow informativi (beta)
130
+
131
+ <Note>
132
+ `allow(message)` è una funzione beta disponibile da v0.0.2-beta.3. L'API potrebbe cambiare nelle versioni future. Le versioni precedenti supportano solo `allow()` senza argomenti.
133
+ </Note>
134
+
135
+ `allow(message)` consente l'operazione **e** invia un messaggio informativo indietro a Claude. Il messaggio viene consegnato come `additionalContext` nella risposta stdout del gestore dell'evento hook — lo stesso meccanismo usato da `instruct`, ma semanticamente diverso: è un aggiornamento di stato, non un avviso.
136
+
137
+ | Funzione | Effetto | Usa quando |
138
+ |----------|--------|----------|
139
+ | `allow(message)` | Consenti e invia contesto a Claude | Conferma che un controllo è passato, o spiega perché un controllo è stato saltato |
140
+
141
+ Casi d'uso:
142
+ - **Conferme di stato:** `allow("All CI checks passed.")` — dice a Claude che tutto è verde
143
+ - **Spiegazioni fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — dice a Claude perché un controllo è stato saltato così ha il contesto completo
144
+ - **Più messaggi si accumulano:** se più criteri ciascuno restituisce `allow(message)`, tutti i messaggi sono uniti con newline e consegnati insieme
145
+
146
+ ```js
147
+ customPolicies.add({
148
+ name: "confirm-branch-status",
149
+ match: { events: ["Stop"] },
150
+ fn: async (ctx) => {
151
+ const cwd = ctx.session?.cwd;
152
+ if (!cwd) return allow("No working directory, skipping branch check.");
153
+
154
+ // ... check branch status ...
155
+ if (allPushed) {
156
+ return allow("Branch is up to date with remote.");
157
+ }
158
+ return deny("Unpushed changes detected.");
159
+ },
160
+ });
161
+ ```
162
+
163
+ ### Campi `PolicyContext`
164
+
165
+ | Campo | Tipo | Descrizione |
166
+ |-------|------|-------------|
167
+ | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
168
+ | `toolName` | `string \| undefined` | Lo strumento che viene chiamato (es. `"Bash"`, `"Write"`, `"Read"`) |
169
+ | `toolInput` | `Record<string, unknown> \| undefined` | I parametri di input dello strumento |
170
+ | `payload` | `Record<string, unknown>` | Payload di evento grezzo completo da Claude Code |
171
+ | `session` | `SessionMetadata \| undefined` | Contesto di sessione (vedi sotto) |
172
+
173
+ ### Campi `SessionMetadata`
174
+
175
+ | Campo | Tipo | Descrizione |
176
+ |-------|------|-------------|
177
+ | `sessionId` | `string` | Identificatore di sessione Claude Code |
178
+ | `cwd` | `string` | Directory di lavoro della sessione Claude Code |
179
+ | `transcriptPath` | `string` | Percorso al file transcript JSONL della sessione |
180
+
181
+ ### Tipi di evento
182
+
183
+ | Evento | Quando si attiva | Contenuti `toolInput` |
184
+ |-------|--------------|----------------------|
185
+ | `PreToolUse` | Prima che Claude esegua uno strumento | L'input dello strumento (es. `{ command: "..." }` per Bash) |
186
+ | `PostToolUse` | Dopo che uno strumento si completa | L'input dello strumento + `tool_result` (l'output) |
187
+ | `Notification` | Quando Claude invia una notifica | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - i hook devono sempre restituire `allow()`, non possono bloccare le notifiche |
188
+ | `Stop` | Quando la sessione Claude termina | Vuoto |
189
+
190
+ ---
191
+
192
+ ## Ordine di valutazione
193
+
194
+ I criteri vengono valutati in questo ordine:
195
+
196
+ 1. Criteri integrati (in ordine di definizione)
197
+ 2. Criteri personalizzati espliciti da `customPoliciesPath` (in ordine `.add()`)
198
+ 3. Criteri di convenzione da `.failproofai/policies/` di progetto (file alfabetici, ordine `.add()` interno)
199
+ 4. Criteri di convenzione da `~/.failproofai/policies/` utente (file alfabetici, ordine `.add()` interno)
200
+
201
+ <Note>
202
+ Il primo `deny` fa corto circuito di tutti i criteri successivi. Tutti i messaggi `instruct` vengono accumulati e consegnati insieme.
203
+ </Note>
204
+
205
+ ---
206
+
207
+ ## Importazioni transitive
208
+
209
+ I file di criteri personalizzati possono importare moduli locali usando percorsi relativi:
210
+
211
+ ```js
212
+ // my-policies.js
213
+ import { isBlockedPath } from "./utils.js";
214
+ import { checkApproval } from "./approval-client.js";
215
+
216
+ customPolicies.add({
217
+ name: "approval-gate",
218
+ fn: async (ctx) => {
219
+ if (ctx.toolName !== "Bash") return allow();
220
+ const approved = await checkApproval(ctx.toolInput?.command, ctx.session?.sessionId);
221
+ return approved ? allow() : deny("Approval required for this command");
222
+ },
223
+ });
224
+ ```
225
+
226
+ Tutte le importazioni relative raggiungibili dal file di entry vengono risolte. Questo viene implementato riscrivendo le importazioni `from "failproofai"` al percorso dist effettivo e creando file `.mjs` temporanei per assicurare la compatibilità ESM.
227
+
228
+ ---
229
+
230
+ ## Filtraggio del tipo di evento
231
+
232
+ Usa `match.events` per limitare quando un criterio si attiva:
233
+
234
+ ```js
235
+ customPolicies.add({
236
+ name: "require-summary-on-stop",
237
+ match: { events: ["Stop"] },
238
+ fn: async (ctx) => {
239
+ // Si attiva solo quando la sessione termina
240
+ // ctx.session.transcriptPath contiene il log di sessione completo
241
+ return allow();
242
+ },
243
+ });
244
+ ```
245
+
246
+ Ometti `match` interamente per attivarsi su ogni tipo di evento.
247
+
248
+ ---
249
+
250
+ ## Gestione degli errori e modalità di errore
251
+
252
+ I criteri personalizzati sono **fail-open**: gli errori non bloccano mai i criteri integrati o causano crash del gestore dell'hook.
253
+
254
+ | Errore | Comportamento |
255
+ |---------|----------|
256
+ | `customPoliciesPath` non impostato | Nessun criterio personalizzato esplicito viene eseguito; i criteri di convenzione e integrati continuano normalmente |
257
+ | File non trovato | Avviso registrato su `~/.failproofai/hook.log`; i criteri integrati continuano |
258
+ | Errore di sintassi/importazione (esplicito) | Errore registrato su `~/.failproofai/hook.log`; criteri personalizzati espliciti saltati |
259
+ | Errore di sintassi/importazione (convenzione) | Errore registrato; quel file saltato, altri file di convenzione ancora caricati |
260
+ | `fn` lancia al runtime | Errore registrato; quel hook trattato come `allow`; altri hook continuano |
261
+ | `fn` impiega più di 10s | Timeout registrato; trattato come `allow` |
262
+ | Directory di convenzione mancante | Nessun criterio di convenzione viene eseguito; nessun errore |
263
+
264
+ <Tip>
265
+ Per eseguire il debug degli errori di criteri personalizzati, guarda il file di log:
266
+
267
+ ```bash
268
+ tail -f ~/.failproofai/hook.log
269
+ ```
270
+ </Tip>
271
+
272
+ ---
273
+
274
+ ## Esempio completo: più criteri
275
+
276
+ ```js
277
+ // my-policies.js
278
+ import { customPolicies, allow, deny, instruct } from "failproofai";
279
+
280
+ // Evita che l'agente scriva nella directory secrets/
281
+ customPolicies.add({
282
+ name: "block-secrets-dir",
283
+ description: "Prevent agent from writing to secrets/ directory",
284
+ match: { events: ["PreToolUse"] },
285
+ fn: async (ctx) => {
286
+ if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
287
+ const path = ctx.toolInput?.file_path ?? "";
288
+ if (path.includes("secrets/")) return deny("Writing to secrets/ is not permitted");
289
+ return allow();
290
+ },
291
+ });
292
+
293
+ // Tieni l'agente in traccia: verifica i test prima di committare
294
+ customPolicies.add({
295
+ name: "remind-test-before-commit",
296
+ description: "Keep the agent on track: verify tests pass before committing",
297
+ match: { events: ["PreToolUse"] },
298
+ fn: async (ctx) => {
299
+ if (ctx.toolName !== "Bash") return allow();
300
+ const cmd = ctx.toolInput?.command ?? "";
301
+ if (/git\s+commit/.test(cmd)) {
302
+ return instruct("Verify all tests pass before committing. Run `bun test` if you haven't already.");
303
+ }
304
+ return allow();
305
+ },
306
+ });
307
+
308
+ // Previeni modifiche non pianificate alle dipendenze durante il freeze
309
+ customPolicies.add({
310
+ name: "dependency-freeze",
311
+ description: "Prevent unplanned dependency changes during freeze period",
312
+ match: { events: ["PreToolUse"] },
313
+ fn: async (ctx) => {
314
+ if (ctx.toolName !== "Bash") return allow();
315
+ const cmd = ctx.toolInput?.command ?? "";
316
+ const isInstall = /^(npm install|yarn add|bun add|pnpm add)\s+\S/.test(cmd);
317
+ if (isInstall && process.env.DEPENDENCY_FREEZE === "1") {
318
+ return deny("Package installs are frozen. Unset DEPENDENCY_FREEZE to allow.");
319
+ }
320
+ return allow();
321
+ },
322
+ });
323
+
324
+ export { customPolicies };
325
+ ```
326
+
327
+ ---
328
+
329
+ ## Esempi
330
+
331
+ La directory `examples/` contiene file di criteri pronti all'uso:
332
+
333
+ | File | Contenuti |
334
+ |------|----------|
335
+ | `examples/policies-basic.js` | Cinque criteri iniziali che coprono modalità di errore comuni dell'agente |
336
+ | `examples/policies-advanced/index.js` | Schemi avanzati: importazioni transitive, chiamate asincrone, scrubbing di output, e hook di fine sessione |
337
+ | `examples/convention-policies/security-policies.mjs` | Criteri di sicurezza basati su convenzione (blocca scritture .env, previeni riscrittura della cronologia git) |
338
+ | `examples/convention-policies/workflow-policies.mjs` | Criteri di flusso di lavoro basati su convenzione (promemoria di test, file di scrittura di audit) |
339
+
340
+ ### Uso di esempi di file espliciti
341
+
342
+ ```bash
343
+ failproofai policies --install --custom ./examples/policies-basic.js
344
+ ```
345
+
346
+ ### Uso di esempi basati su convenzione
347
+
348
+ ```bash
349
+ # Copia a livello di progetto
350
+ mkdir -p .failproofai/policies
351
+ cp examples/convention-policies/*.mjs .failproofai/policies/
352
+
353
+ # Oppure copia a livello di utente
354
+ mkdir -p ~/.failproofai/policies
355
+ cp examples/convention-policies/*.mjs ~/.failproofai/policies/
356
+ ```
357
+
358
+ Nessun comando di installazione necessario — i file vengono prelevati automaticamente al prossimo evento hook.