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,260 @@
1
+ ---
2
+ title: परीक्षण
3
+ description: "यूनिट टेस्ट, E2E टेस्ट, और टेस्ट हेल्पर्स"
4
+ icon: flask-vial
5
+ ---
6
+
7
+ failproofai के दो टेस्ट सूट हैं: **यूनिट टेस्ट** (तेज़, मॉक किए गए) और **एंड-टू-एंड टेस्ट** (वास्तविक सबप्रोसेस आमंत्रण)।
8
+
9
+ ---
10
+
11
+ ## टेस्ट चलाना
12
+
13
+ ```bash
14
+ # सभी यूनिट टेस्ट एक बार चलाएं
15
+ bun run test:run
16
+
17
+ # यूनिट टेस्ट को वॉच मोड में चलाएं
18
+ bun run test
19
+
20
+ # E2E टेस्ट चलाएं (सेटअप की आवश्यकता है - नीचे देखें)
21
+ bun run test:e2e
22
+
23
+ # बिल्ड किए बिना टाइप-चेक करें
24
+ bunx tsc --noEmit
25
+
26
+ # लिंट करें
27
+ bun run lint
28
+ ```
29
+
30
+ ---
31
+
32
+ ## यूनिट टेस्ट
33
+
34
+ यूनिट टेस्ट `__tests__/` में रहते हैं और [Vitest](https://vitest.dev) के साथ `happy-dom` का उपयोग करते हैं।
35
+
36
+ ```text
37
+ __tests__/
38
+ hooks/
39
+ builtin-policies.test.ts # प्रत्येक बिल्टइन के लिए पॉलिसी लॉजिक
40
+ hooks-config.test.ts # कॉन्फ़िग लोडिंग और स्कोप मर्जिंग
41
+ policy-evaluator.test.ts # पैरम इंजेक्शन और मूल्यांकन क्रम
42
+ custom-hooks-registry.test.ts # globalThis रजिस्ट्री add/get/clear
43
+ custom-hooks-loader.test.ts # ESM लोडर, ट्रांजिटिव इम्पोर्ट, त्रुटि प्रबंधन
44
+ manager.test.ts # install/remove/list ऑपरेशन
45
+ components/
46
+ sessions-list.test.tsx # सेशन लिस्ट कंपोनेंट
47
+ project-list.test.tsx # प्रोजेक्ट लिस्ट कंपोनेंट
48
+ ...
49
+ lib/
50
+ logger.test.ts
51
+ paths.test.ts
52
+ date-filters.test.ts
53
+ telemetry.test.ts
54
+ ...
55
+ actions/
56
+ get-hooks-config.test.ts
57
+ get-hook-activity.test.ts
58
+ ...
59
+ contexts/
60
+ ThemeContext.test.tsx
61
+ AutoRefreshContext.test.tsx
62
+ ```
63
+
64
+ ### पॉलिसी यूनिट टेस्ट लिखना
65
+
66
+ ```typescript
67
+ import { describe, it, expect, beforeEach } from "vitest";
68
+ import { getBuiltinPolicies } from "../../src/hooks/builtin-policies";
69
+ import { allow, deny } from "../../src/hooks/policy-types";
70
+
71
+ describe("block-sudo", () => {
72
+ const policy = getBuiltinPolicies().find((p) => p.name === "block-sudo")!;
73
+
74
+ it("denies sudo commands", () => {
75
+ const ctx = {
76
+ eventType: "PreToolUse" as const,
77
+ payload: {},
78
+ toolName: "Bash",
79
+ toolInput: { command: "sudo apt install nodejs" },
80
+ params: { allowPatterns: [] },
81
+ };
82
+ expect(policy.fn(ctx)).toEqual(deny("sudo command blocked by failproofai"));
83
+ });
84
+
85
+ it("allows non-sudo commands", () => {
86
+ const ctx = {
87
+ eventType: "PreToolUse" as const,
88
+ payload: {},
89
+ toolName: "Bash",
90
+ toolInput: { command: "ls -la" },
91
+ params: { allowPatterns: [] },
92
+ };
93
+ expect(policy.fn(ctx)).toEqual(allow());
94
+ });
95
+
96
+ it("allows patterns in allowPatterns", () => {
97
+ const ctx = {
98
+ eventType: "PreToolUse" as const,
99
+ payload: {},
100
+ toolName: "Bash",
101
+ toolInput: { command: "sudo systemctl status nginx" },
102
+ params: { allowPatterns: ["sudo systemctl status"] },
103
+ };
104
+ expect(policy.fn(ctx)).toEqual(allow());
105
+ });
106
+ });
107
+ ```
108
+
109
+ ---
110
+
111
+ ## एंड-टू-एंड टेस्ट
112
+
113
+ E2E टेस्ट वास्तविक `failproofai` बाइनरी को सबप्रोसेस के रूप में आमंत्रित करते हैं, stdin को JSON पेलोड पाइप करते हैं, और stdout आउटपुट और एक्जिट कोड पर दावे लगाते हैं। यह पूर्ण इंटीग्रेशन पथ का परीक्षण करता है जो Claude Code उपयोग करता है।
114
+
115
+ ### सेटअप
116
+
117
+ E2E टेस्ट बाइनरी को रेपो सोर्स से सीधे चलाते हैं। पहली बार चलाने से पहले, CJS बंडल बनाएं जो कस्टम हुक फाइलें `'failproofai'` से इम्पोर्ट करते समय उपयोग करती हैं:
118
+
119
+ ```bash
120
+ bun build src/index.ts --outdir dist --target node --format cjs
121
+ ```
122
+
123
+ फिर टेस्ट चलाएं:
124
+
125
+ ```bash
126
+ bun run test:e2e
127
+ ```
128
+
129
+ जब भी आप सार्वजनिक हुक API (`src/hooks/custom-hooks-registry.ts`, `src/hooks/policy-helpers.ts`, या `src/hooks/policy-types.ts`) में बदलाव करें तो `dist/` को फिर से बनाएं।
130
+
131
+ ### E2E टेस्ट संरचना
132
+
133
+ ```text
134
+ __tests__/e2e/
135
+ helpers/
136
+ hook-runner.ts # बाइनरी स्पॉन करें, पेलोड JSON पाइप करें, एक्जिट कोड + stdout + stderr कैप्चर करें
137
+ fixture-env.ts # कॉन्फ़िग फाइलों के साथ प्रति-टेस्ट अलग-थलग अस्थायी निर्देशिकाएं
138
+ payloads.ts # प्रत्येक इवेंट टाइप के लिए Claude-सटीक पेलोड फैक्ट्रीज़
139
+ hooks/
140
+ builtin-policies.e2e.test.ts # वास्तविक सबप्रोसेस के साथ प्रत्येक बिल्टइन पॉलिसी
141
+ custom-hooks.e2e.test.ts # कस्टम हुक लोडिंग और मूल्यांकन
142
+ config-scopes.e2e.test.ts # प्रोजेक्ट/स्थानीय/वैश्विक में कॉन्फ़िग मर्जिंग
143
+ policy-params.e2e.test.ts # प्रत्येक पैरामीटराइज्ड पॉलिसी के लिए पैरामीटर इंजेक्शन
144
+ ```
145
+
146
+ ### E2E हेल्पर्स का उपयोग करना
147
+
148
+ **`FixtureEnv`** - प्रति-टेस्ट अलग-थलग वातावरण:
149
+
150
+ ```typescript
151
+ import { createFixtureEnv } from "../helpers/fixture-env";
152
+
153
+ const env = createFixtureEnv();
154
+ // env.cwd - अस्थायी निर्देशिका; .failproofai/policies-config.json पिक अप करने के लिए payload.cwd के रूप में पास करें
155
+ // env.home - अलग-थलग होम निर्देशिका; कोई वास्तविक ~/.failproofai लीक नहीं
156
+
157
+ env.writeConfig({
158
+ enabledPolicies: ["block-sudo"],
159
+ policyParams: {
160
+ "block-sudo": { allowPatterns: ["sudo systemctl status"] },
161
+ },
162
+ });
163
+ ```
164
+
165
+ `createFixtureEnv()` स्वचालित रूप से `afterEach` क्लीनअप पंजीकृत करता है।
166
+
167
+ **`runHook`** - बाइनरी को आमंत्रित करें:
168
+
169
+ ```typescript
170
+ import { runHook } from "../helpers/hook-runner";
171
+ import { Payloads } from "../helpers/payloads";
172
+
173
+ const result = await runHook(
174
+ "PreToolUse",
175
+ Payloads.preToolUse.bash("sudo apt install nodejs", env.cwd),
176
+ { homeDir: env.home }
177
+ );
178
+
179
+ expect(result.exitCode).toBe(0);
180
+ expect(result.parsed?.hookSpecificOutput?.permissionDecision).toBe("deny");
181
+ ```
182
+
183
+ **`Payloads`** - तैयार पेलोड फैक्ट्रीज़:
184
+
185
+ ```typescript
186
+ Payloads.preToolUse.bash(command, cwd)
187
+ Payloads.preToolUse.write(filePath, content, cwd)
188
+ Payloads.preToolUse.read(filePath, cwd)
189
+ Payloads.postToolUse.bash(command, output, cwd)
190
+ Payloads.postToolUse.read(filePath, content, cwd)
191
+ Payloads.notification(message, cwd)
192
+ Payloads.stop(cwd)
193
+ ```
194
+
195
+ ### E2E टेस्ट लिखना
196
+
197
+ ```typescript
198
+ import { describe, it, expect } from "vitest";
199
+ import { createFixtureEnv } from "../helpers/fixture-env";
200
+ import { runHook } from "../helpers/hook-runner";
201
+ import { Payloads } from "../helpers/payloads";
202
+
203
+ describe("block-rm-rf (E2E)", () => {
204
+ it("denies rm -rf", async () => {
205
+ const env = createFixtureEnv();
206
+ env.writeConfig({ enabledPolicies: ["block-rm-rf"] });
207
+
208
+ const result = await runHook(
209
+ "PreToolUse",
210
+ Payloads.preToolUse.bash("rm -rf /", env.cwd),
211
+ { homeDir: env.home }
212
+ );
213
+
214
+ expect(result.exitCode).toBe(0);
215
+ expect(result.parsed?.hookSpecificOutput?.permissionDecision).toBe("deny");
216
+ });
217
+
218
+ it("allows non-recursive rm", async () => {
219
+ const env = createFixtureEnv();
220
+ env.writeConfig({ enabledPolicies: ["block-rm-rf"] });
221
+
222
+ const result = await runHook(
223
+ "PreToolUse",
224
+ Payloads.preToolUse.bash("rm /tmp/file.txt", env.cwd),
225
+ { homeDir: env.home }
226
+ );
227
+
228
+ expect(result.exitCode).toBe(0);
229
+ expect(result.stdout).toBe(""); // allow → empty stdout
230
+ });
231
+ });
232
+ ```
233
+
234
+ ### E2E प्रतिक्रिया आकार
235
+
236
+ | निर्णय | एक्जिट कोड | stdout |
237
+ |----------|-----------|--------|
238
+ | `PreToolUse` deny | `0` | `{"hookSpecificOutput":{"permissionDecision":"deny","permissionDecisionReason":"..."}}` |
239
+ | `PostToolUse` deny | `0` | `{"hookSpecificOutput":{"additionalContext":"Blocked ... because: ..."}}` |
240
+ | Instruct (गैर-Stop) | `0` | `{"hookSpecificOutput":{"additionalContext":"Instruction from failproofai: ..."}}` |
241
+ | Stop instruct | `2` | खाली stdout; stderr में कारण |
242
+ | Allow | `0` | खाली स्ट्रिंग |
243
+
244
+ ### Vitest कॉन्फ़िग
245
+
246
+ E2E टेस्ट `vitest.config.e2e.mts` का उपयोग करते हैं:
247
+
248
+ - `environment: "node"` - कोई ब्राउजर ग्लोबल्स की आवश्यकता नहीं
249
+ - `pool: "forks"` - सच्चा प्रोसेस इसोलेशन (टेस्ट सबप्रोसेस स्पॉन करते हैं)
250
+ - `testTimeout: 20_000` - प्रति टेस्ट 20 सेकंड (बाइनरी स्टार्टअप + हुक eval)
251
+
252
+ `forks` पूल महत्वपूर्ण है: थ्रेड-आधारित वर्कर्स `globalThis` साझा करते हैं, जो सबप्रोसेस-स्पॉनिंग टेस्ट में हस्तक्षेप कर सकता है। प्रोसेस-आधारित फोर्क इससे बचते हैं।
253
+
254
+ ---
255
+
256
+ ## CI
257
+
258
+ पूर्ण CI रन (`bun run lint && bunx tsc --noEmit && bun run test:run && bun run build`) मर्ज करने से पहले पास होना आवश्यक है। E2E सूट समानांतर में एक अलग CI जॉब के रूप में चलता है।
259
+
260
+ पूर्ण प्री-मर्ज चेकलिस्ट के लिए [Contributing](../CONTRIBUTING.md) देखें।
@@ -0,0 +1,312 @@
1
+ > **⚠️** هذه ترجمة آلية. للاطلاع على أحدث إصدار، راجع [English README](../../README.md).
2
+
3
+ [🇺🇸 English](../../README.md) | [🇨🇳 简体中文](README.zh.md) | [🇯🇵 日本語](README.ja.md) | [🇰🇷 한국어](README.ko.md) | [🇪🇸 Español](README.es.md) | [🇧🇷 Português](README.pt-br.md) | [🇩🇪 Deutsch](README.de.md) | [🇫🇷 Français](README.fr.md) | [🇷🇺 Русский](README.ru.md) | [🇮🇳 हिन्दी](README.hi.md) | [🇹🇷 Türkçe](README.tr.md) | [🇻🇳 Tiếng Việt](README.vi.md) | [🇮🇹 Italiano](README.it.md) | **🇸🇦 العربية** | [🇮🇱 עברית](README.he.md)
4
+
5
+ ---
6
+ <div dir="rtl">
7
+
8
+
9
+ ```
10
+ ______ _ __ ____ ___ ____
11
+ / ____/___ _(_) /___ _________ ____ / __/ / | / _/
12
+ / /_ / __ `/ / / __ \/ ___/ __ \/ __ \/ /_ / /| | / /
13
+ / __/ / /_/ / / / /_/ / / / /_/ / /_/ / __/ / ___ |_/ /
14
+ /_/ \__,_/_/_/ .___/_/ \____/\____/_/ /_/ |_/___/
15
+ /_/
16
+ ```
17
+
18
+ # Failproof AI
19
+
20
+ [![Docs](https://img.shields.io/badge/docs-befailproof.ai-002CA7?style=flat-square)](https://befailproof.ai)
21
+ [![npm](https://img.shields.io/npm/v/failproofai?style=flat-square&color=CB3837)](https://www.npmjs.com/package/failproofai)
22
+ [![License](https://img.shields.io/badge/license-MIT%20%2B%20Commons%20Clause-blue?style=flat-square)](LICENSE)
23
+ [![CI](https://img.shields.io/github/actions/workflow/status/exospherehost/failproofai/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/exospherehost/failproofai/actions)
24
+ [![Slack](https://img.shields.io/badge/Slack-join%20us-4A154B?style=flat-square&logo=slack)](https://join.slack.com/t/failproofai/shared_invite/zt-3v63b7k5e-O3NBHmj8X6n9gZSGDx6ggQ)
25
+
26
+ **الترجمات**: [简体中文](docs/i18n/README.zh.md) | [日本語](docs/i18n/README.ja.md) | [한국어](docs/i18n/README.ko.md) | [Español](docs/i18n/README.es.md) | [Português](docs/i18n/README.pt-br.md) | [Deutsch](docs/i18n/README.de.md) | [Français](docs/i18n/README.fr.md) | [Русский](docs/i18n/README.ru.md) | [हिन्दी](docs/i18n/README.hi.md) | [Türkçe](docs/i18n/README.tr.md) | [Tiếng Việt](docs/i18n/README.vi.md) | [Italiano](docs/i18n/README.it.md) | [العربية](docs/i18n/README.ar.md) | [עברית](docs/i18n/README.he.md)
27
+
28
+ أسهل طريقة لإدارة السياسات التي تجعل وكلاءك الذكيين موثوقين وملتزمين بالمهام ويعملون بشكل مستقل - لـ **Claude Code** و **Agents SDK**.
29
+
30
+ - **30 سياسة مدمجة** - اكتشف أنماط فشل الوكيل الشائعة مباشرة من الصندوق. احجب الأوامر المدمرة، ومنع تسرب الأسرار، واحتفظ بالوكلاء داخل حدود المشروع، واكتشف الحلقات، والمزيد.
31
+ - **سياسات مخصصة** - اكتب قواعد الموثوقية الخاصة بك في JavaScript. استخدم واجهات برمجية `allow`/`deny`/`instruct` لفرض الاتفاقيات، ومنع الانجراف، وتقييد العمليات، أو الدمج مع الأنظمة الخارجية.
32
+ - **تكوين سهل** - اضبط أي سياسة بدون كتابة أكواد. حدد قوائم السماح والفروع المحمية والحدود الدنيا لكل مشروع أو عام. يتم دمج ثلاث نطاقات للتكوين تلقائياً.
33
+ - **مراقب الوكيل** - اطلع على ما فعله وكلاؤك أثناء غيابك. تصفح الجلسات، وافحص كل استدعاء أداة، وراجع بالضبط حيث تم تفعيل السياسات.
34
+
35
+ كل شيء يعمل محلياً - لا تترك البيانات جهازك.
36
+
37
+ ---
38
+
39
+ ## المتطلبات
40
+
41
+ - Node.js >= 20.9.0
42
+ - Bun >= 1.3.0 (اختياري - مطلوب فقط للتطوير / البناء من المصدر)
43
+
44
+ ---
45
+
46
+ ## التثبيت
47
+
48
+ ```bash
49
+ npm install -g failproofai
50
+ # أو
51
+ bun add -g failproofai
52
+ ```
53
+
54
+ ---
55
+
56
+ ## البدء السريع
57
+
58
+ ### 1. تفعيل السياسات عالمياً
59
+
60
+ ```bash
61
+ failproofai policies --install
62
+ ```
63
+
64
+ يكتب إدخالات الخطاف في `~/.claude/settings.json`. سيقوم Claude Code الآن باستدعاء failproofai قبل وبعد كل استدعاء أداة.
65
+
66
+ ### 2. تشغيل لوحة التحكم
67
+
68
+ ```bash
69
+ failproofai
70
+ ```
71
+
72
+ يفتح `http://localhost:8020` - تصفح الجلسات، وافحص السجلات، وأدر السياسات.
73
+
74
+ ### 3. تحقق مما هو نشط
75
+
76
+ ```bash
77
+ failproofai policies
78
+ ```
79
+
80
+ ---
81
+
82
+ ## تثبيت السياسة
83
+
84
+ ### النطاقات
85
+
86
+ | النطاق | الأمر | المكان الذي تكتب فيه |
87
+ |-------|---------|-----------------|
88
+ | عام (افتراضي) | `failproofai policies --install` | `~/.claude/settings.json` |
89
+ | المشروع | `failproofai policies --install --scope project` | `.claude/settings.json` |
90
+ | محلي | `failproofai policies --install --scope local` | `.claude/settings.local.json` |
91
+
92
+ ### تثبيت سياسات معينة
93
+
94
+ ```bash
95
+ failproofai policies --install block-sudo block-rm-rf sanitize-api-keys
96
+ ```
97
+
98
+ ### إزالة السياسات
99
+
100
+ ```bash
101
+ failproofai policies --uninstall
102
+ # أو لنطاق معين:
103
+ failproofai policies --uninstall --scope project
104
+ ```
105
+
106
+ ---
107
+
108
+ ## التكوين
109
+
110
+ يوجد تكوين السياسة في `~/.failproofai/policies-config.json` (عام) أو `.failproofai/policies-config.json` في مشروعك (لكل مشروع).
111
+
112
+ ```json
113
+ {
114
+ "enabledPolicies": [
115
+ "block-sudo",
116
+ "block-rm-rf",
117
+ "sanitize-api-keys",
118
+ "block-push-master",
119
+ "block-env-files",
120
+ "block-read-outside-cwd"
121
+ ],
122
+ "policyParams": {
123
+ "block-sudo": {
124
+ "allowPatterns": ["sudo systemctl status", "sudo journalctl"],
125
+ "hint": "Use apt-get directly without sudo."
126
+ },
127
+ "block-push-master": {
128
+ "protectedBranches": ["main", "release", "prod"],
129
+ "hint": "Try creating a fresh branch instead."
130
+ },
131
+ "sanitize-api-keys": {
132
+ "additionalPatterns": [
133
+ { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo API key" }
134
+ ]
135
+ },
136
+ "warn-large-file-write": {
137
+ "thresholdKb": 512
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ **يتم دمج ثلاث نطاقات للتكوين** تلقائياً (المشروع → المحلي → العام). انظر [docs/configuration.mdx](docs/configuration.mdx) للحصول على قواعد الدمج الكاملة.
144
+
145
+ ---
146
+
147
+ ## السياسات المدمجة
148
+
149
+ | السياسة | الوصف | قابل للتخصيص |
150
+ |--------|-------------|:---:|
151
+ | `block-sudo` | منع الوكلاء من تشغيل أوامر النظام المميزة | `allowPatterns` |
152
+ | `block-rm-rf` | منع حذف الملفات العودي العرضي | `allowPaths` |
153
+ | `block-curl-pipe-sh` | منع الوكلاء من نقل البرامج النصية غير الموثوقة إلى shell | |
154
+ | `block-failproofai-commands` | منع إلغاء التثبيت الذاتي | |
155
+ | `sanitize-jwt` | إيقاف تسرب رموز JWT إلى سياق الوكيل | |
156
+ | `sanitize-api-keys` | إيقاف تسرب مفاتيح API إلى سياق الوكيل | `additionalPatterns` |
157
+ | `sanitize-connection-strings` | إيقاف تسرب بيانات اعتماد قاعدة البيانات إلى سياق الوكيل | |
158
+ | `sanitize-private-key-content` | إعادة تحرير كتل مفاتيح PEM الخاصة من الإخراج | |
159
+ | `sanitize-bearer-tokens` | إعادة تحرير رموز Authorization Bearer من الإخراج | |
160
+ | `block-env-files` | منع الوكلاء من قراءة ملفات .env | |
161
+ | `protect-env-vars` | منع الوكلاء من طباعة متغيرات البيئة | |
162
+ | `block-read-outside-cwd` | احتفظ بالوكلاء داخل حدود المشروع | `allowPaths` |
163
+ | `block-secrets-write` | منع الكتابة إلى ملفات المفاتيح الخاصة والشهادات | `additionalPatterns` |
164
+ | `block-push-master` | منع الدفع العرضي إلى main/master | `protectedBranches` |
165
+ | `block-work-on-main` | ابعد الوكلاء عن الفروع المحمية | `protectedBranches` |
166
+ | `block-force-push` | منع `git push --force` | |
167
+ | `warn-git-amend` | ذكر الوكلاء قبل تعديل الالتزامات | |
168
+ | `warn-git-stash-drop` | ذكر الوكلاء قبل إسقاط المخزن المؤقت | |
169
+ | `warn-all-files-staged` | اكتشف `git add -A` العرضي | |
170
+ | `warn-destructive-sql` | اكتشف SQL DROP/DELETE قبل التنفيذ | |
171
+ | `warn-schema-alteration` | اكتشف ALTER TABLE قبل التنفيذ | |
172
+ | `warn-large-file-write` | اكتشف كتابات الملفات الكبيرة غير المتوقعة | `thresholdKb` |
173
+ | `warn-package-publish` | اكتشف `npm publish` العرضي | |
174
+ | `warn-background-process` | اكتشف عمليات الخلفية غير المقصودة | |
175
+ | `warn-global-package-install` | اكتشف عمليات التثبيت العام غير المقصودة | |
176
+ | …والمزيد | | |
177
+
178
+ تفاصيل السياسة الكاملة ومرجع المعاملات: [docs/built-in-policies.mdx](docs/built-in-policies.mdx)
179
+
180
+ ---
181
+
182
+ ## السياسات المخصصة
183
+
184
+ اكتب سياساتك الخاصة لجعل وكلاءك موثوقين وملتزمين بالمهام:
185
+
186
+ ```js
187
+ import { customPolicies, allow, deny, instruct } from "failproofai";
188
+
189
+ customPolicies.add({
190
+ name: "no-production-writes",
191
+ description: "Block writes to paths containing 'production'",
192
+ match: { events: ["PreToolUse"] },
193
+ fn: async (ctx) => {
194
+ if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
195
+ const path = ctx.toolInput?.file_path ?? "";
196
+ if (path.includes("production")) return deny("Writes to production paths are blocked");
197
+ return allow();
198
+ },
199
+ });
200
+ ```
201
+
202
+ ثبتها باستخدام:
203
+
204
+ ```bash
205
+ failproofai policies --install --custom ./my-policies.js
206
+ ```
207
+
208
+ ### مساعدات القرار
209
+
210
+ | الدالة | التأثير |
211
+ |----------|--------|
212
+ | `allow()` | السماح بالعملية |
213
+ | `allow(message)` | السماح وإرسال السياق المعلوماتي إلى Claude *(تجريبي)* |
214
+ | `deny(message)` | حظر العملية؛ الرسالة معروضة ل Claude |
215
+ | `instruct(message)` | إضافة سياق إلى موجه Claude؛ لا تحظر |
216
+
217
+ ### كائن السياق (`ctx`)
218
+
219
+ | الحقل | النوع | الوصف |
220
+ |-------|------|-------------|
221
+ | `eventType` | `string` | `"PreToolUse"` أو `"PostToolUse"` أو `"Notification"` أو `"Stop"` |
222
+ | `toolName` | `string` | الأداة التي يتم استدعاؤها (`"Bash"` أو `"Write"` أو `"Read"` وغيرها) |
223
+ | `toolInput` | `object` | معاملات إدخال الأداة |
224
+ | `payload` | `object` | حمولة الحدث الخام الكاملة |
225
+ | `session.cwd` | `string` | دليل العمل لجلسة Claude Code |
226
+ | `session.sessionId` | `string` | معرف الجلسة |
227
+ | `session.transcriptPath` | `string` | المسار إلى ملف نص جلسة العمل |
228
+
229
+ تدعم الخطافات المخصصة الاستيراد المحلي العابر، والانتظار غير المتزامن، والوصول إلى `process.env`. الأخطاء مفتوحة للفشل (تسجيل في `~/.failproofai/hook.log`، استمرار السياسات المدمجة). انظر [docs/custom-hooks.mdx](docs/custom-hooks.mdx) للحصول على الدليل الكامل.
230
+
231
+ ### السياسات المستندة إلى الاتفاقية (v0.0.2-beta.7+)
232
+
233
+ ضع ملفات `*policies.{js,mjs,ts}` في `.failproofai/policies/` وسيتم تحميلها تلقائياً - لا حاجة لعلم `--custom` أو تغييرات التكوين. يعمل مثل git hooks: ضع الملف، وسيعمل.
234
+
235
+ ```text
236
+ # مستوى المشروع — يتم الالتزام به في git، مشاركة مع الفريق
237
+ .failproofai/policies/security-policies.mjs
238
+ .failproofai/policies/workflow-policies.mjs
239
+
240
+ # مستوى المستخدم — شخصي، ينطبق على جميع المشاريع
241
+ ~/.failproofai/policies/my-policies.mjs
242
+ ```
243
+
244
+ يتم تحميل كلا المستويين (الاتحاد). يتم تحميل الملفات بترتيب أبجدي ضمن كل دليل. أضف بادئة `01-` أو `02-` وما إلى ذلك للتحكم في الترتيب. انظر [examples/convention-policies/](examples/convention-policies/) للحصول على أمثلة جاهزة للاستخدام.
245
+
246
+ ---
247
+
248
+ ## قياس الاستخدام
249
+
250
+ يجمع Failproof AI بيانات قياس الاستخدام المجهول عبر PostHog لفهم استخدام الميزات. لا يتم أبداً إرسال محتوى الجلسة أو أسماء الملفات أو مدخلات الأدوات أو المعلومات الشخصية.
251
+
252
+ عطله:
253
+
254
+ ```bash
255
+ FAILPROOFAI_TELEMETRY_DISABLED=1 failproofai
256
+ ```
257
+
258
+ ---
259
+
260
+ ## التوثيق
261
+
262
+ | الدليل | الوصف |
263
+ |-------|-------------|
264
+ | [البدء](docs/getting-started.mdx) | التثبيت والخطوات الأولى |
265
+ | [السياسات المدمجة](docs/built-in-policies.mdx) | جميع السياسات المدمجة الـ 30 مع المعاملات |
266
+ | [السياسات المخصصة](docs/custom-policies.mdx) | اكتب سياساتك الخاصة |
267
+ | [التكوين](docs/configuration.mdx) | تنسيق ملف التكوين ودمج النطاق |
268
+ | [لوحة التحكم](docs/dashboard.mdx) | مراقبة الجلسات ومراجعة نشاط السياسة |
269
+ | [الهندسة المعمارية](docs/architecture.mdx) | كيفية عمل نظام الخطاف |
270
+ | [الاختبار](docs/testing.mdx) | تشغيل الاختبارات وكتابة اختبارات جديدة |
271
+
272
+ ### تشغيل التوثيق محلياً
273
+
274
+ ```bash
275
+ docker build -f Dockerfile.docs -t failproofai-docs .
276
+ docker run --rm -p 3000:3000 failproofai-docs
277
+ ```
278
+
279
+ يفتح موقع Mintlify docs في `http://localhost:3000`. الحاوية تراقب التغييرات إذا قمت بتركيب دليل التوثيق:
280
+
281
+ ```bash
282
+ docker run --rm -p 3000:3000 -v $(pwd)/docs:/app/docs failproofai-docs
283
+ ```
284
+
285
+ ---
286
+
287
+ ## ملاحظة لمساهمي failproofai
288
+
289
+ يستخدم `.claude/settings.json` الخاص بهذا المستودع `bun ./bin/failproofai.mjs --hook <EventType>` بدلاً من أمر `npx -y failproofai` القياسي. وذلك لأن تشغيل `npx -y failproofai` داخل مشروع failproofai نفسه يخلق تضاربة التعريف الذاتي.
290
+
291
+ بالنسبة لجميع المستودعات الأخرى، يُنصح باستخدام `npx -y failproofai`، والذي تم تثبيته عبر:
292
+
293
+ ```bash
294
+ failproofai policies --install --scope project
295
+ ```
296
+
297
+ ## المساهمة
298
+
299
+ انظر [CONTRIBUTING.md](CONTRIBUTING.md).
300
+
301
+ ---
302
+
303
+ ## الترخيص
304
+
305
+ انظر [LICENSE](LICENSE).
306
+
307
+ ---
308
+
309
+ تم البناء والصيانة من قبل **ExosphereHost: مختبر البحث عن الموثوقية لوكلائك**. نساعد المؤسسات والشركات الناشئة على تحسين موثوقية وكلائهم الذكيين من خلال وكلائنا وبرامجنا وخبرتنا. تعرف على المزيد في [exosphere.host](https://exosphere.host).
310
+
311
+
312
+ </div>