failproofai 0.0.2 → 0.0.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) 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]__092s1ta._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  67. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qo8503._.js → [root-of-the-server]__0jqus-j._.js} +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +9 -9
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__12kr5~_._.js → [root-of-the-server]__131id~1._.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/{0y~0creqvl5wx.js → 045lpk_isd5np.js} +1 -1
  90. package/.next/standalone/.next/static/chunks/{0cvffh-pbsv5u.js → 065qrrpfkts8s.js} +1 -1
  91. package/.next/standalone/.next/static/chunks/{031pa5~qfzt~_.js → 09e7drilkf1sn.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +1 -0
  93. package/.next/standalone/.next/static/chunks/{15wf7x-e.8ia3.js → 0je_~y72wv~~2.js} +1 -1
  94. package/.next/standalone/.next/static/chunks/{0x-625~1vx1lu.js → 0rqcttnl9u32c.js} +1 -1
  95. package/.next/standalone/.next/static/chunks/{0ov60i6md~37t.js → 0v2-.v07.zb9u.js} +2 -2
  96. package/.next/standalone/.next/static/chunks/{06og.7e9nkpjh.js → 0yye9-w._6rz~.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/{0_4y_t03jn2nq.js → 15proylk5ye2k.js} +1 -1
  98. package/.next/standalone/.next/static/chunks/174boqk9e~20i.js +6 -0
  99. package/.next/standalone/.next/static/chunks/{turbopack-0uc5y~g6h.n7-.js → turbopack-0r26pc8h0y_-e.js} +1 -1
  100. package/.next/standalone/CHANGELOG.md +108 -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 +535 -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 +537 -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 +48 -0
  117. package/.next/standalone/docs/ar/cli/list-policies.mdx +31 -0
  118. package/.next/standalone/docs/ar/cli/remove-policies.mdx +43 -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} +126 -15
  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 +47 -0
  135. package/.next/standalone/docs/cli/list-policies.mdx +31 -0
  136. package/.next/standalone/docs/cli/remove-policies.mdx +43 -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 +537 -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 +47 -0
  147. package/.next/standalone/docs/de/cli/list-policies.mdx +31 -0
  148. package/.next/standalone/docs/de/cli/remove-policies.mdx +43 -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 +943 -24
  160. package/.next/standalone/docs/es/architecture.mdx +332 -0
  161. package/.next/standalone/docs/es/built-in-policies.mdx +537 -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 +47 -0
  166. package/.next/standalone/docs/es/cli/list-policies.mdx +31 -0
  167. package/.next/standalone/docs/es/cli/remove-policies.mdx +43 -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 +537 -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 +47 -0
  186. package/.next/standalone/docs/fr/cli/list-policies.mdx +31 -0
  187. package/.next/standalone/docs/fr/cli/remove-policies.mdx +43 -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 +535 -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 +47 -0
  205. package/.next/standalone/docs/he/cli/list-policies.mdx +32 -0
  206. package/.next/standalone/docs/he/cli/remove-policies.mdx +43 -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 +535 -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 +47 -0
  223. package/.next/standalone/docs/hi/cli/list-policies.mdx +31 -0
  224. package/.next/standalone/docs/hi/cli/remove-policies.mdx +43 -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 +537 -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 +47 -0
  256. package/.next/standalone/docs/it/cli/list-policies.mdx +31 -0
  257. package/.next/standalone/docs/it/cli/remove-policies.mdx +43 -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 +535 -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 +47 -0
  274. package/.next/standalone/docs/ja/cli/list-policies.mdx +31 -0
  275. package/.next/standalone/docs/ja/cli/remove-policies.mdx +43 -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 +535 -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 +47 -0
  292. package/.next/standalone/docs/ko/cli/list-policies.mdx +31 -0
  293. package/.next/standalone/docs/ko/cli/remove-policies.mdx +43 -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 +537 -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 +47 -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 +43 -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 +537 -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 +43 -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 +537 -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 +47 -0
  350. package/.next/standalone/docs/tr/cli/list-policies.mdx +31 -0
  351. package/.next/standalone/docs/tr/cli/remove-policies.mdx +44 -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 +537 -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 +47 -0
  368. package/.next/standalone/docs/vi/cli/list-policies.mdx +31 -0
  369. package/.next/standalone/docs/vi/cli/remove-policies.mdx +43 -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 +535 -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 +47 -0
  386. package/.next/standalone/docs/zh/cli/list-policies.mdx +31 -0
  387. package/.next/standalone/docs/zh/cli/remove-policies.mdx +43 -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 +401 -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 +535 -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 +401 -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/0c_ljlxa._4lc.js +0 -6
  477. package/.next/standalone/.next/static/chunks/15jpradyu_531.css +0 -1
  478. package/.next/standalone/docs/cli-reference.md +0 -175
  479. package/.next/standalone/docs/custom-hooks.md +0 -261
  480. package/.next/standalone/docs/getting-started.md +0 -128
  481. package/.next/standalone/docs/introduction.md +0 -47
  482. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → WRbDp8A_ORPof197CezOZ}/_buildManifest.js +0 -0
  483. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → WRbDp8A_ORPof197CezOZ}/_clientMiddlewareManifest.js +0 -0
  484. /package/.next/standalone/.next/static/{WS-OQSqL1Lp1w_obXfjvl → WRbDp8A_ORPof197CezOZ}/_ssgManifest.js +0 -0
@@ -0,0 +1,32 @@
1
+ ---
2
+ ---
3
+ title: רשימת מדיניויות
4
+ description: "ראה אילו מדיניויות מופעלות, הפרמטרים שלהן ומדיניויות מותאמות אישית"
5
+ ---
6
+
7
+ ```bash
8
+ failproofai policies
9
+ ```
10
+
11
+ מציג את כל המדיניויות עם המצב שלהן, הפרמטרים המוגדרים, והמדיניויות המותאמות אישית.
12
+
13
+ ## דוגמה לפלט
14
+
15
+ ```text
16
+ Failproof AI Hook Policies (user)
17
+
18
+ Status Name Description
19
+ ────── ──────────────────────────────────────────────────────────────
20
+ ✓ block-sudo Block sudo commands
21
+ allowPatterns: ["sudo systemctl status"]
22
+ ✓ block-rm-rf Block recursive deletions
23
+ ✗ block-curl-pipe-sh Block curl|bash patterns
24
+ ✓ sanitize-api-keys Redact API keys from output
25
+ additionalPatterns: [{ regex: "MY_TOKEN_...", label: "..." }]
26
+
27
+ ── Custom Policies (/home/alice/myproject/my-policies.js) ──────────────
28
+ ✓ require-jira-ticket Block commits without ticket
29
+ ✓ approval-gate Approval gate for destructive ops
30
+ ```
31
+
32
+ מפתחות לא מוכרים ב-`policyParams` מסומנים כאן כדי שתוכל לתפוס שגיאות הקלדה בשלב מוקדם.
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: הסרת מדיניויות
3
+ description: "הסר רשומות hook מהגדרות Claude Code"
4
+ ---
5
+
6
+ ```bash
7
+ failproofai policies --uninstall [policy-names...] [options]
8
+ ```
9
+
10
+ מסיר רשומות failproofai hook מ-`settings.json` של Claude Code.
11
+
12
+ כינויים: `failproofai p -u`
13
+
14
+ ## אפשרויות
15
+
16
+ | דגל | תיאור |
17
+ |------|-------------|
18
+ | `--scope user` | הסר מהגדרות גלובליות (ברירת מחדל) |
19
+ | `--scope project` | הסר מהגדרות הפרויקט |
20
+ | `--scope local` | הסר מהגדרות מקומיות |
21
+ | `--scope all` | הסר מכל ההיקפים בבת אחת |
22
+ | `--custom` / `-c` | נקה את ה-`customPoliciesPath` מהתצורה |
23
+
24
+ ## התנהגות
25
+
26
+ - **ללא שמות מדיניויות** - מסיר את כל רשומות failproofai hook מקובץ ההגדרות
27
+ - **שמות ספציפיים** - משבית מדיניויות אלו אך שומרת hooks מותקנים
28
+
29
+ ## דוגמאות
30
+
31
+ ```bash
32
+ # הסר את כל ה-hooks באופן גלובלי
33
+ failproofai policies --uninstall
34
+
35
+ # השבת מדיניות ספציפית (שומרת hooks מותקנים)
36
+ failproofai policies --uninstall block-sudo
37
+
38
+ # הסר hooks מכל היקף
39
+ failproofai policies --uninstall --scope all
40
+
41
+ # נקה את נתיב המדיניויות המותאמות
42
+ failproofai policies --uninstall --custom
43
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: בדיקת גרסה
3
+ description: "הדפסת גרסת failproofai המותקנת"
4
+ ---
5
+
6
+ ```bash
7
+ failproofai --version
8
+ # or
9
+ failproofai -v
10
+ ```
11
+
12
+ הדפס את מספר הגרסה המותקנת.
@@ -0,0 +1,222 @@
1
+ ---
2
+ title: תצורה
3
+ description: "פורמט קובץ תצורה, מערכת תחומי תצורה תלת-שכבתית וכללי מיזוג"
4
+ icon: gear
5
+ ---
6
+
7
+ failproofai משתמש בקובצי תצורה JSON כדי לשלוט אילו מדיניויות פעילות, כיצד הן מתנהגות ומאיפה נטענות מדיניויות מותאמות אישית. התצורה מעוצבת להיות קלה לשיתוף עם הצוות שלך - התחייב אותה ללאגר שלך וכל מפתח יקבל את אותה רשת הבטיחות של הסוכן.
8
+
9
+ ---
10
+
11
+ ## תחומי תצורה
12
+
13
+ קיימים שלושה תחומי תצורה, מוערכים לפי סדר עדיפויות:
14
+
15
+ | תחום | נתיב קובץ | מטרה |
16
+ |-------|-----------|---------|
17
+ | **פרויקט** | `.failproofai/policies-config.json` | הגדרות לפי מאגר, מחויבות לבקרת גרסה |
18
+ | **מקומי** | `.failproofai/policies-config.local.json` | עדכונים אישיים למאגר, מוחרגים מ-gitignore |
19
+ | **גלובלי** | `~/.failproofai/policies-config.json` | ברירות מחדל ברמת משתמש בכל הפרויקטים |
20
+
21
+ כאשר failproofai מקבל אירוע hook, הוא טוען ומיזג את כל שלושת הקובצים הקיימים עבור ספריית העבודה הנוכחית.
22
+
23
+ ### כללי מיזוג
24
+
25
+ **`enabledPolicies`** - איחוד של כל שלושת התחומים. מדיניות המופעלת בכל רמה פעילה.
26
+
27
+ ```text
28
+ project: ["block-sudo"]
29
+ local: ["block-rm-rf"]
30
+ global: ["block-sudo", "sanitize-api-keys"]
31
+
32
+ resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← איחוד ללא כפילויות
33
+ ```
34
+
35
+ **`policyParams`** - התחום הראשון המגדיר פרמטרים עבור מדיניות מסוימת מנצח לחלוטין. אין מיזוג עמוק של ערכים בתוך פרמטרים של מדיניות.
36
+
37
+ ```text
38
+ project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
39
+ global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
40
+
41
+ resolved: { allowPatterns: ["sudo apt-get update"] } ← הפרויקט מנצח, גלובלי מתעלם
42
+ ```
43
+
44
+ ```text
45
+ project: (no block-sudo entry)
46
+ local: (no block-sudo entry)
47
+ global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
48
+
49
+ resolved: { allowPatterns: ["sudo systemctl status"] } ← נופל דרך לגלובלי
50
+ ```
51
+
52
+ **`customPoliciesPath`** - התחום הראשון המגדיר אותו מנצח.
53
+
54
+ **`llm`** - התחום הראשון המגדיר אותו מנצח.
55
+
56
+ ---
57
+
58
+ ## פורמט קובץ התצורה
59
+
60
+ ```json
61
+ {
62
+ "enabledPolicies": [
63
+ "block-sudo",
64
+ "block-rm-rf",
65
+ "block-push-master",
66
+ "sanitize-api-keys",
67
+ "sanitize-jwt",
68
+ "block-env-files",
69
+ "block-read-outside-cwd"
70
+ ],
71
+ "policyParams": {
72
+ "block-sudo": {
73
+ "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
74
+ },
75
+ "block-push-master": {
76
+ "protectedBranches": ["main", "release", "prod"]
77
+ },
78
+ "block-rm-rf": {
79
+ "allowPaths": ["/tmp"]
80
+ },
81
+ "block-read-outside-cwd": {
82
+ "allowPaths": ["/shared/data", "/opt/company"]
83
+ },
84
+ "sanitize-api-keys": {
85
+ "additionalPatterns": [
86
+ { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo API key" }
87
+ ]
88
+ },
89
+ "warn-large-file-write": {
90
+ "thresholdKb": 512
91
+ }
92
+ },
93
+ "customPoliciesPath": "/home/alice/myproject/my-policies.js"
94
+ }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## ייחוס שדות
100
+
101
+ ### `enabledPolicies`
102
+
103
+ סוג: `string[]`
104
+
105
+ רשימת שמות מדיניויות להפעלה. שמות חייבים להתאים בדיוק לזהויות המדיניויות המוצגות על ידי `failproofai policies`. ראה [Built-in Policies](/he/built-in-policies) לרשימה המלאה.
106
+
107
+ מדיניויות שאינן ב-`enabledPolicies` אינן פעילות, גם אם יש להן רשומות ב-`policyParams`.
108
+
109
+ ### `policyParams`
110
+
111
+ סוג: `Record<string, Record<string, unknown>>`
112
+
113
+ עדכוני פרמטרים לפי מדיניות. המפתח החיצוני הוא שם המדיניות; המפתחות הפנימיים הם ספציפיים למדיניות. כל מדיניות מתעדת את הפרמטרים הזמינים שלה ב-[Built-in Policies](/he/built-in-policies).
114
+
115
+ אם למדיניות יש פרמטרים אך אתה לא מציין אותם, משתמשים בברירות המחדל המובנות של המדיניות. משתמשים שלא מגדירים את `policyParams` בכלל מקבלים התנהגות זהה לגרסאות קודמות.
116
+
117
+ מפתחות לא ידועים בתוך בלוק הפרמטרים של מדיניות מתעלמים בשתיקה בזמן hook, אך מסומנים כאזהרות כאשר אתה מריץ `failproofai policies`.
118
+
119
+ #### `hint` (חוצה תחומים)
120
+
121
+ סוג: `string` (אופציונלי)
122
+
123
+ הודעה המצורפת לסיבה כאשר מדיניות חוזרת `deny` או `instruct`. השתמש בה כדי לתן Claude הנחיה פעולה ללא שינוי המדיניות עצמה.
124
+
125
+ עובד עם כל סוג מדיניות — מובנה, מותאמת אישית (`custom/`), קונוונציה של פרויקט (`.failproofai-project/`), או קונוונציה של משתמש (`.failproofai-user/`).
126
+
127
+ ```json
128
+ {
129
+ "policyParams": {
130
+ "block-force-push": {
131
+ "hint": "Try creating a fresh branch instead."
132
+ },
133
+ "block-sudo": {
134
+ "allowPatterns": ["sudo apt-get"],
135
+ "hint": "Use apt-get directly without sudo."
136
+ },
137
+ "custom/my-policy": {
138
+ "hint": "Ask the user for approval first."
139
+ }
140
+ }
141
+ }
142
+ ```
143
+
144
+ כאשר `block-force-push` דוחה, Claude רואה: *"Force-pushing is blocked. Try creating a fresh branch instead."*
145
+
146
+ ערכים שאינם מחרוזות ומחרוזות ריקות מתעלמים בשתיקה. אם `hint` לא מוגדר, ההתנהגות ללא שינוי (תאימות אחורית).
147
+
148
+ ### `customPoliciesPath`
149
+
150
+ סוג: `string` (נתיב מוחלט)
151
+
152
+ נתיב לקובץ JavaScript המכיל מדיניויות hook מותאמות אישית. זה מוגדר אוטומטית על ידי `failproofai policies --install --custom <path>` (הנתיב נפתר לערך מוחלט לפני האחסון).
153
+
154
+ הקובץ נטען מחדש בכל אירוע hook - אין קשמן. ראה [Custom Policies](/he/custom-policies) לפרטי יצירה.
155
+
156
+ ### מדיניויות המבוססות על קונוונציה (v0.0.2-beta.7+)
157
+
158
+ בנוסף ל-`customPoliciesPath` המפורש, failproofai גילוי ותקבל מחדש קובצי מדיניויות מספריות `.failproofai/policies/`:
159
+
160
+ | רמה | ספרייה | תחום |
161
+ |-------|-----------|-------|
162
+ | פרויקט | `.failproofai/policies/` | משותף עם צוות דרך בקרת גרסה |
163
+ | משתמש | `~/.failproofai/policies/` | אישי, חל על כל הפרויקטים |
164
+
165
+ **התאמת קובצים:** רק קובצים התואמים `*policies.{js,mjs,ts}` נטענים (למשל `security-policies.mjs`, `workflow-policies.js`). קובצים אחרים בספרייה מתעלמים.
166
+
167
+ **אין צורך בתצורה:** מדיניויות קונוונציה אינן דורשות רשומות ב-`policies-config.json`. פשוט זרוק קובצים לספרייה והם ייבחרו באירוע ה-hook הבא.
168
+
169
+ **טעינת איחוד:** שתי ספריות קונוונציה של פרויקט ומשתמש סרוקות. כל הקובצים התואמים משתי הרמות נטענות (בניגוד ל-`customPoliciesPath` המשתמש בתחום-ראשון-מנצח).
170
+
171
+ ראה [Custom Policies](/he/custom-policies) לפרטים נוספים ודוגמאות.
172
+
173
+ ### `llm`
174
+
175
+ סוג: `object` (אופציונלי)
176
+
177
+ תצורת לקוח LLM עבור מדיניויות המבצעות קריאות AI. לא נדרש עבור רוב ההתקנות.
178
+
179
+ ```json
180
+ {
181
+ "llm": {
182
+ "model": "claude-sonnet-4-6",
183
+ "apiKey": "sk-ant-..."
184
+ }
185
+ }
186
+ ```
187
+
188
+ ---
189
+
190
+ ## ניהול תצורה מה-CLI
191
+
192
+ הפקודות `policies --install` ו-`policies --uninstall` כותבות ל-`settings.json` של Claude Code (נקודות כניסה ה-hook), בעוד `policies-config.json` הוא הקובץ שאתה מנהל ישירות. שניים נפרדים:
193
+
194
+ - **`settings.json`** - אומר ל-Claude Code להתקשר ל-`failproofai --hook <event>` בכל שימוש בכלי
195
+ - **`policies-config.json`** - אומר ל-failproofai אילו מדיניויות להעריך ועם אילו פרמטרים
196
+
197
+ אתה יכול לערוך את `policies-config.json` ישירות בכל זמן; שינויים יקבלו תוקף מיידי באירוע ה-hook הבא ללא צורך בהפעלה מחדש.
198
+
199
+ ---
200
+
201
+ ## דוגמה: תצורת רמת פרויקט עם ברירות מחדל של צוות
202
+
203
+ התחייב `.failproofai/policies-config.json` ללאגר שלך:
204
+
205
+ ```json
206
+ {
207
+ "enabledPolicies": [
208
+ "block-sudo",
209
+ "block-rm-rf",
210
+ "block-push-master",
211
+ "sanitize-api-keys",
212
+ "block-env-files"
213
+ ],
214
+ "policyParams": {
215
+ "block-push-master": {
216
+ "protectedBranches": ["main", "release", "hotfix"]
217
+ }
218
+ }
219
+ }
220
+ ```
221
+
222
+ כל מפתח יכול אז ליצור `.failproofai/policies-config.local.json` (מוחרג מ-gitignore) לעדכונים אישיים ללא השפעה על חברי צוות.
@@ -0,0 +1,357 @@
1
+ ---
2
+ title: מדיניויות מותאמות
3
+ description: "כתוב את הכללים שלך ב-JavaScript - אכוף קונבנציות, עצור drift, גלה כשלים, התחבר למערכות חיצוניות"
4
+ icon: code
5
+ ---
6
+
7
+ מדיניויות מותאמות מאפשרות לך לכתוב כללים לכל התנהגות agent: אכוף קונבנציות פרויקט, עצור drift, שער פעולות הורסות, גלה agents תקועות, או התחבר ל-Slack, תהליכי אישור, ועוד. הם משתמשים באותה מערכת hook event ובהחלטות `allow`, `deny`, `instruct` כמו מדיניויות מובנות.
8
+
9
+ ---
10
+
11
+ ## דוגמה מהירה
12
+
13
+ ```js
14
+ // my-policies.js
15
+ import { customPolicies, allow, deny, instruct } from "failproofai";
16
+
17
+ customPolicies.add({
18
+ name: "no-production-writes",
19
+ description: "Block writes to paths containing 'production'",
20
+ match: { events: ["PreToolUse"] },
21
+ fn: async (ctx) => {
22
+ if (ctx.toolName !== "Write" && ctx.toolName !== "Edit") return allow();
23
+ const path = ctx.toolInput?.file_path ?? "";
24
+ if (path.includes("production")) {
25
+ return deny("Writes to production paths are blocked");
26
+ }
27
+ return allow();
28
+ },
29
+ });
30
+ ```
31
+
32
+ התקן אותה:
33
+
34
+ ```bash
35
+ failproofai policies --install --custom ./my-policies.js
36
+ ```
37
+
38
+ ---
39
+
40
+ ## שתי דרכים לטעון מדיניויות מותאמות
41
+
42
+ ### אפשרות 1: מבוססת קונבנציה (מומלצת, v0.0.2-beta.7+)
43
+
44
+ שים קבצים `*policies.{js,mjs,ts}` בתיקייה `.failproofai/policies/` והם יוטענו באופן אוטומטי — ללא דגלים או שינויי קונפיגורציה. זה עובד כמו git hooks: שים קובץ, זה פשוט עובד.
45
+
46
+ ```
47
+ # Project level — committed to git, shared with the team
48
+ .failproofai/policies/security-policies.mjs
49
+ .failproofai/policies/workflow-policies.mjs
50
+
51
+ # User level — personal, applies to all projects
52
+ ~/.failproofai/policies/my-policies.mjs
53
+ ```
54
+
55
+ **איך זה עובד:**
56
+ - שתי התיקיות של פרויקט ומשתמש סורקות (union — לא first-scope-wins)
57
+ - קבצים נטענים בסדר אלפביתי בתוך כל תיקייה. קידומת עם `01-`, `02-` לשליטה בסדר
58
+ - רק קבצים התואמים `*policies.{js,mjs,ts}` נטענים; קבצים אחרים מתעלמים
59
+ - כל קובץ טוען באופן עצמאי (fail-open לכל קובץ)
60
+ - עובד לצד מדיניויות `--custom` מפורשות ומובנות
61
+
62
+ <Tip>
63
+ מדיניויות קונבנציה הן הדרך הקלה ביותר לשתף מדיניויות על פני הצוות. התחייב `.failproofai/policies/` ל-git וכל חבר בצוות יקבל אותם באופן אוטומטי.
64
+ </Tip>
65
+
66
+ ### אפשרות 2: נתיב קובץ מפורש
67
+
68
+ ```bash
69
+ # Install with a custom policies file
70
+ failproofai policies --install --custom ./my-policies.js
71
+
72
+ # Replace the policies file path
73
+ failproofai policies --install --custom ./new-policies.js
74
+
75
+ # Remove the custom policies path from config
76
+ failproofai policies --uninstall --custom
77
+ ```
78
+
79
+ הנתיב המוחלט שנפתר מאוחסן ב-`policies-config.json` בתור `customPoliciesPath`. הקובץ נטען מחדש בכל hook event - אין cache בין events.
80
+
81
+ ### שימוש בשניהם ביחד
82
+
83
+ מדיניויות קונבנציה והקובץ `--custom` המפורש יכולים להתקיים. סדר הטעינה:
84
+
85
+ 1. קובץ `customPoliciesPath` מפורש (אם מוגדר)
86
+ 2. קבצי קונבנציה של פרויקט (`{cwd}/.failproofai/policies/`, אלפביתי)
87
+ 3. קבצי קונבנציה של משתמש (`~/.failproofai/policies/`, אלפביתי)
88
+
89
+ ---
90
+
91
+ ## API
92
+
93
+ ### Import
94
+
95
+ ```js
96
+ import { customPolicies, allow, deny, instruct } from "failproofai";
97
+ ```
98
+
99
+ ### `customPolicies.add(hook)`
100
+
101
+ רושם מדיניות. קרא לפונקציה זו כמה פעמים שנדרש עבור מדיניויות מרובות באותו קובץ.
102
+
103
+ ```ts
104
+ customPolicies.add({
105
+ name: string; // required - unique identifier
106
+ description?: string; // shown in `failproofai policies` output
107
+ match?: { events?: HookEventType[] }; // filter by event type; omit to match all
108
+ fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
109
+ });
110
+ ```
111
+
112
+ ### עוזרי החלטה
113
+
114
+ | פונקציה | השפעה | השתמש כאשר |
115
+ |----------|--------|----------|
116
+ | `allow()` | התר את הפעולה בשקט | הפעולה בטוחה, לא נדרשת הודעה |
117
+ | `deny(message)` | חסום את הפעולה | ל-agent אין לבצע פעולה זו |
118
+ | `instruct(message)` | הוסף הקשר ללא חסימה | תן ל-agent הקשר נוסף להישאר בעקבות |
119
+
120
+ `deny(message)` - ההודעה מופיעה ל-Claude בתחילית `"Blocked by failproofai:"`. `deny` אחד בודד מקצר את כל ההערכה הנוספת.
121
+
122
+ `instruct(message)` - ההודעה מצורפת להקשר של Claude לקריאת הכלי הנוכחית. כל הודעות `instruct` מצטברות ומועברות יחד.
123
+
124
+ <Tip>
125
+ אתה יכול להצמיד הנחיות נוספות לכל הודעת `deny` או `instruct` על ידי הוספת שדה `hint` ב-`policyParams` — ללא צורך בשינוי קוד. זה עובד גם על מדיניויות custom (`custom/`), קונבנציה של פרויקט (`.failproofai-project/`), וקונבנציה של משתמש (`.failproofai-user/`). ראה [Configuration → hint](/he/configuration#hint-cross-cutting) לפרטים.
126
+ </Tip>
127
+
128
+ ### הודעות allow מידע (beta)
129
+
130
+ <Note>
131
+ `allow(message)` היא תכונת beta זמינה מ-v0.0.2-beta.3. ה-API עשוי להשתנות בגרסאות עתידיות. גרסאות קודמות תומכות רק ב-`allow()` ללא טיעונים.
132
+ </Note>
133
+
134
+ `allow(message)` מתיר את הפעולה **ו**שולח הודעה מידע בחזרה ל-Claude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של hook handler — אותה מנגנון שבו משתמשים `instruct`, אך שונה מבחינה סמנטית: זה עדכון סטטוס, לא אזהרה.
135
+
136
+ | פונקציה | השפעה | השתמש כאשר |
137
+ |----------|--------|----------|
138
+ | `allow(message)` | התר ושלח הקשר ל-Claude | אשר שצ'ק עבר, או הסבר למה צ'ק דולג |
139
+
140
+ מקרי שימוש:
141
+ - **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר ל-Claude שהכל ירוק
142
+ - **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק דולג כך שיש לו הקשר מלא
143
+ - **הודעות מרובות מצטברות:** אם מספר מדיניויות כל אחת מחזירה `allow(message)`, כל ההודעות מחוברות עם שורות חדשות ומועברות יחד
144
+
145
+ ```js
146
+ customPolicies.add({
147
+ name: "confirm-branch-status",
148
+ match: { events: ["Stop"] },
149
+ fn: async (ctx) => {
150
+ const cwd = ctx.session?.cwd;
151
+ if (!cwd) return allow("No working directory, skipping branch check.");
152
+
153
+ // ... check branch status ...
154
+ if (allPushed) {
155
+ return allow("Branch is up to date with remote.");
156
+ }
157
+ return deny("Unpushed changes detected.");
158
+ },
159
+ });
160
+ ```
161
+
162
+ ### שדות `PolicyContext`
163
+
164
+ | שדה | סוג | תיאור |
165
+ |-------|------|-------------|
166
+ | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
167
+ | `toolName` | `string \| undefined` | הכלי שנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
168
+ | `toolInput` | `Record<string, unknown> \| undefined` | פרמטרי הקלט של הכלי |
169
+ | `payload` | `Record<string, unknown>` | payload אירוע גולמי מלא מ-Claude Code |
170
+ | `session` | `SessionMetadata \| undefined` | הקשר סשן (ראה למטה) |
171
+
172
+ ### שדות `SessionMetadata`
173
+
174
+ | שדה | סוג | תיאור |
175
+ |-------|------|-------------|
176
+ | `sessionId` | `string` | מזהה סשן Claude Code |
177
+ | `cwd` | `string` | ספריית עבודה של סשן Claude Code |
178
+ | `transcriptPath` | `string` | נתיב לקובץ תמליל JSONL של הסשן |
179
+
180
+ ### סוגי אירוע
181
+
182
+ | אירוע | מתי הוא משדר | תוכן `toolInput` |
183
+ |-------|--------------|----------------------|
184
+ | `PreToolUse` | לפני ש-Claude מריץ כלי | קלט הכלי (למשל `{ command: "..." }` עבור Bash) |
185
+ | `PostToolUse` | לאחר סיום כלי | קלט הכלי + `tool_result` (הפלט) |
186
+ | `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים תמיד להחזיר `allow()`, הם לא יכולים לחסום הודעות |
187
+ | `Stop` | כאשר סשן Claude מסתיים | ריק |
188
+
189
+ ---
190
+
191
+ ## סדר הערכה
192
+
193
+ מדיניויות מוערכות בסדר זה:
194
+
195
+ 1. מדיניויות מובנות (בסדר הגדרה)
196
+ 2. מדיניויות custom מפורשות מ-`customPoliciesPath` (בסדר `.add()`)
197
+ 3. מדיניויות קונבנציה מ-`.failproofai/policies/` של פרויקט (קבצים אלפביתיים, סדר `.add()` בתוך)
198
+ 4. מדיניויות קונבנציה מ-`~/.failproofai/policies/` של משתמש (קבצים אלפביתיים, סדר `.add()` בתוך)
199
+
200
+ <Note>
201
+ `deny` הראשון מקצר את כל המדיניויות הבאות. כל הודעות `instruct` מצטברות ומועברות יחד.
202
+ </Note>
203
+
204
+ ---
205
+
206
+ ## ייבואים טרנזיטיביים
207
+
208
+ קבצי מדיניות מותאמות יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:
209
+
210
+ ```js
211
+ // my-policies.js
212
+ import { isBlockedPath } from "./utils.js";
213
+ import { checkApproval } from "./approval-client.js";
214
+
215
+ customPolicies.add({
216
+ name: "approval-gate",
217
+ fn: async (ctx) => {
218
+ if (ctx.toolName !== "Bash") return allow();
219
+ const approved = await checkApproval(ctx.toolInput?.command, ctx.session?.sessionId);
220
+ return approved ? allow() : deny("Approval required for this command");
221
+ },
222
+ });
223
+ ```
224
+
225
+ כל הייבואים היחסיים שניתן להגיע אליהם מקובץ הכניסה מופתרים. זה מיושם על ידי כתיבה מחדש של ייבואים `from "failproofai"` לנתיב dist בפועל ויצירת קבצים זמניים `.mjs` כדי להבטיח תאימות ESM.
226
+
227
+ ---
228
+
229
+ ## סינון סוג אירוע
230
+
231
+ השתמש ב-`match.events` להגבלת מתי מדיניות משדרת:
232
+
233
+ ```js
234
+ customPolicies.add({
235
+ name: "require-summary-on-stop",
236
+ match: { events: ["Stop"] },
237
+ fn: async (ctx) => {
238
+ // Only fires when the session ends
239
+ // ctx.session.transcriptPath contains the full session log
240
+ return allow();
241
+ },
242
+ });
243
+ ```
244
+
245
+ השמט `match` לחלוטין לשדר בכל סוג אירוע.
246
+
247
+ ---
248
+
249
+ ## טיפול בשגיאות ומצבי כשל
250
+
251
+ מדיניויות מותאמות הן **fail-open**: שגיאות לעולם לא חוסמות מדיניויות מובנות או מקרסות hook handler.
252
+
253
+ | כשל | התנהגות |
254
+ |---------|----------|
255
+ | `customPoliciesPath` לא מוגדר | אין מדיניויות custom מפורשות פועלות; מדיניויות קונבנציה ומובנות ממשיכות בדרך כלל |
256
+ | קובץ לא נמצא | אזהרה מתועדת ל-`~/.failproofai/hook.log`; מובנים ממשיכים |
257
+ | שגיאת Syntax/import (מפורשת) | שגיאה מתועדת ל-`~/.failproofai/hook.log`; מדיניויות custom מפורשות דולגות |
258
+ | שגיאת Syntax/import (קונבנציה) | שגיאה מתועדת; קובץ זה דולג, קבצי קונבנציה אחרים עדיין נטענים |
259
+ | `fn` זורק בזמן ריצה | שגיאה מתועדת; hook זה מטופל כ-`allow`; hooks אחרים ממשיכים |
260
+ | `fn` לוקח יותר מ-10 שניות | timeout מתועדת; מטופל כ-`allow` |
261
+ | ספריית קונבנציה חסרה | אין מדיניויות קונבנציה פועלות; לא שגיאה |
262
+
263
+ <Tip>
264
+ כדי לבדוק שגיאות של מדיניות מותאמת, צפה בקובץ היומן:
265
+
266
+ ```bash
267
+ tail -f ~/.failproofai/hook.log
268
+ ```
269
+ </Tip>
270
+
271
+ ---
272
+
273
+ ## דוגמה מלאה: מדיניויות מרובות
274
+
275
+ ```js
276
+ // my-policies.js
277
+ import { customPolicies, allow, deny, instruct } from "failproofai";
278
+
279
+ // Prevent agent from writing to secrets/ directory
280
+ customPolicies.add({
281
+ name: "block-secrets-dir",
282
+ description: "Prevent agent from writing to secrets/ directory",
283
+ match: { events: ["PreToolUse"] },
284
+ fn: async (ctx) => {
285
+ if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
286
+ const path = ctx.toolInput?.file_path ?? "";
287
+ if (path.includes("secrets/")) return deny("Writing to secrets/ is not permitted");
288
+ return allow();
289
+ },
290
+ });
291
+
292
+ // Keep the agent on track: verify tests before committing
293
+ customPolicies.add({
294
+ name: "remind-test-before-commit",
295
+ description: "Keep the agent on track: verify tests pass before committing",
296
+ match: { events: ["PreToolUse"] },
297
+ fn: async (ctx) => {
298
+ if (ctx.toolName !== "Bash") return allow();
299
+ const cmd = ctx.toolInput?.command ?? "";
300
+ if (/git\s+commit/.test(cmd)) {
301
+ return instruct("Verify all tests pass before committing. Run `bun test` if you haven't already.");
302
+ }
303
+ return allow();
304
+ },
305
+ });
306
+
307
+ // Prevent unplanned dependency changes during freeze
308
+ customPolicies.add({
309
+ name: "dependency-freeze",
310
+ description: "Prevent unplanned dependency changes during freeze period",
311
+ match: { events: ["PreToolUse"] },
312
+ fn: async (ctx) => {
313
+ if (ctx.toolName !== "Bash") return allow();
314
+ const cmd = ctx.toolInput?.command ?? "";
315
+ const isInstall = /^(npm install|yarn add|bun add|pnpm add)\s+\S/.test(cmd);
316
+ if (isInstall && process.env.DEPENDENCY_FREEZE === "1") {
317
+ return deny("Package installs are frozen. Unset DEPENDENCY_FREEZE to allow.");
318
+ }
319
+ return allow();
320
+ },
321
+ });
322
+
323
+ export { customPolicies };
324
+ ```
325
+
326
+ ---
327
+
328
+ ## דוגמאות
329
+
330
+ ספריית `examples/` מכילה קבצי מדיניות מוכנים להפעלה:
331
+
332
+ | קובץ | תוכן |
333
+ |------|----------|
334
+ | `examples/policies-basic.js` | חמש מדיניויות קלפי סטרטר המכסות מצבי כשל נפוצים של agent |
335
+ | `examples/policies-advanced/index.js` | דפוסים מתקדמים: ייבואים טרנזיטיביים, קריאות async, ניקוי פלט, hooks של סוף סשן |
336
+ | `examples/convention-policies/security-policies.mjs` | מדיניויות אבטחה מבוססות קונבנציה (חסום כתיבות .env, מנע כתיבה מחדש של היסטוריית git) |
337
+ | `examples/convention-policies/workflow-policies.mjs` | מדיניויות זרימת עבודה מבוססות קונבנציה (תזכורות בדיקה, קובץ כתיבה ביקורת) |
338
+
339
+ ### שימוש בדוגמאות קובץ מפורש
340
+
341
+ ```bash
342
+ failproofai policies --install --custom ./examples/policies-basic.js
343
+ ```
344
+
345
+ ### שימוש בדוגמאות מבוססות קונבנציה
346
+
347
+ ```bash
348
+ # Copy to project level
349
+ mkdir -p .failproofai/policies
350
+ cp examples/convention-policies/*.mjs .failproofai/policies/
351
+
352
+ # Or copy to user level
353
+ mkdir -p ~/.failproofai/policies
354
+ cp examples/convention-policies/*.mjs ~/.failproofai/policies/
355
+ ```
356
+
357
+ לא נדרש פקודת התקנה — הקבצים נקטפים באופן אוטומטי בהאירוע hook הבא.