failproofai 0.0.6-beta.2 → 0.0.6-beta.4

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 (511) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +7 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  13. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  19. package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
  21. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  22. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  25. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/standalone/.next/server/app/index.html +1 -1
  27. package/.next/standalone/.next/server/app/index.rsc +16 -16
  28. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
  30. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  31. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
  32. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  34. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  37. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  40. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  52. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  55. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0i5kvry._.js → [root-of-the-server]__0om-5pe._.js} +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__05akje6._.js → [root-of-the-server]__111.vxi._.js} +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js +1 -1
  65. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  66. package/.next/standalone/.next/server/pages/404.html +2 -2
  67. package/.next/standalone/.next/server/pages/500.html +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  70. package/.next/standalone/.next/static/chunks/{05j1px0r8yzh6.js → 02dqjyv6_9mhq.js} +2 -2
  71. package/.next/standalone/.next/static/chunks/{14cl9poem30dq.js → 070orfsl6.xal.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
  73. package/.next/standalone/.next/static/chunks/{00j0rr7rh8ef8.js → 0o547jv-k_k35.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{0ijk_kek9_wyx.js → 0pk2h2.mjxy.m.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{0xpl.oscrakvx.js → 0rcwkbh24w38b.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{1052sguyd-.ka.js → 140xx_tfr~lm_.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0npb~873.wvg3.js → 169_e4dq~1~b6.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0badv41uxa56..js → 17ne4p.1sw1jy.js} +1 -1
  79. package/.next/standalone/next.config.ts +6 -0
  80. package/.next/standalone/package.json +2 -2
  81. package/.next/standalone/server.js +1 -1
  82. package/bin/failproofai.mjs +91 -4
  83. package/dist/cli.mjs +1155 -54
  84. package/package.json +2 -2
  85. package/scripts/prune-standalone.mjs +128 -0
  86. package/src/auth/login.ts +104 -0
  87. package/src/auth/logout.ts +50 -0
  88. package/src/auth/token-store.ts +64 -0
  89. package/src/hooks/builtin-policies.ts +22 -20
  90. package/src/hooks/handler.ts +35 -15
  91. package/src/relay/daemon.ts +362 -0
  92. package/src/relay/pid.ts +76 -0
  93. package/src/relay/queue.ts +225 -0
  94. package/.next/standalone/.claude/settings.json +0 -316
  95. package/.next/standalone/.failproofai/policies/review-policies.mjs +0 -113
  96. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +0 -63
  97. package/.next/standalone/.failproofai/policies-config.json +0 -39
  98. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +0 -1
  99. package/.next/standalone/AGENTS.md +0 -80
  100. package/.next/standalone/CHANGELOG.md +0 -151
  101. package/.next/standalone/CLAUDE.md +0 -165
  102. package/.next/standalone/CONTRIBUTING.md +0 -76
  103. package/.next/standalone/Dockerfile.docs +0 -12
  104. package/.next/standalone/LICENSE +0 -42
  105. package/.next/standalone/README.md +0 -301
  106. package/.next/standalone/bin/failproofai.mjs +0 -352
  107. package/.next/standalone/bun.lock +0 -1119
  108. package/.next/standalone/components.json +0 -23
  109. package/.next/standalone/dist/cli.mjs +0 -3595
  110. package/.next/standalone/dist/index.js +0 -80
  111. package/.next/standalone/docs/ar/architecture.mdx +0 -334
  112. package/.next/standalone/docs/ar/built-in-policies.mdx +0 -574
  113. package/.next/standalone/docs/ar/cli/dashboard.mdx +0 -28
  114. package/.next/standalone/docs/ar/cli/environment-variables.mdx +0 -34
  115. package/.next/standalone/docs/ar/cli/hook.mdx +0 -31
  116. package/.next/standalone/docs/ar/cli/install-policies.mdx +0 -48
  117. package/.next/standalone/docs/ar/cli/list-policies.mdx +0 -31
  118. package/.next/standalone/docs/ar/cli/remove-policies.mdx +0 -43
  119. package/.next/standalone/docs/ar/cli/version.mdx +0 -13
  120. package/.next/standalone/docs/ar/configuration.mdx +0 -223
  121. package/.next/standalone/docs/ar/custom-policies.mdx +0 -354
  122. package/.next/standalone/docs/ar/dashboard.mdx +0 -142
  123. package/.next/standalone/docs/ar/examples.mdx +0 -307
  124. package/.next/standalone/docs/ar/for-agents.mdx +0 -39
  125. package/.next/standalone/docs/ar/getting-started.mdx +0 -187
  126. package/.next/standalone/docs/ar/introduction.mdx +0 -58
  127. package/.next/standalone/docs/ar/package-aliases.mdx +0 -82
  128. package/.next/standalone/docs/ar/testing.mdx +0 -261
  129. package/.next/standalone/docs/architecture.mdx +0 -332
  130. package/.next/standalone/docs/built-in-policies.mdx +0 -574
  131. package/.next/standalone/docs/cli/dashboard.mdx +0 -28
  132. package/.next/standalone/docs/cli/environment-variables.mdx +0 -34
  133. package/.next/standalone/docs/cli/hook.mdx +0 -30
  134. package/.next/standalone/docs/cli/install-policies.mdx +0 -47
  135. package/.next/standalone/docs/cli/list-policies.mdx +0 -31
  136. package/.next/standalone/docs/cli/remove-policies.mdx +0 -43
  137. package/.next/standalone/docs/cli/version.mdx +0 -12
  138. package/.next/standalone/docs/configuration.mdx +0 -222
  139. package/.next/standalone/docs/custom-policies.mdx +0 -353
  140. package/.next/standalone/docs/dashboard.mdx +0 -142
  141. package/.next/standalone/docs/de/architecture.mdx +0 -332
  142. package/.next/standalone/docs/de/built-in-policies.mdx +0 -574
  143. package/.next/standalone/docs/de/cli/dashboard.mdx +0 -28
  144. package/.next/standalone/docs/de/cli/environment-variables.mdx +0 -34
  145. package/.next/standalone/docs/de/cli/hook.mdx +0 -30
  146. package/.next/standalone/docs/de/cli/install-policies.mdx +0 -47
  147. package/.next/standalone/docs/de/cli/list-policies.mdx +0 -31
  148. package/.next/standalone/docs/de/cli/remove-policies.mdx +0 -43
  149. package/.next/standalone/docs/de/cli/version.mdx +0 -12
  150. package/.next/standalone/docs/de/configuration.mdx +0 -222
  151. package/.next/standalone/docs/de/custom-policies.mdx +0 -353
  152. package/.next/standalone/docs/de/dashboard.mdx +0 -142
  153. package/.next/standalone/docs/de/examples.mdx +0 -307
  154. package/.next/standalone/docs/de/for-agents.mdx +0 -38
  155. package/.next/standalone/docs/de/getting-started.mdx +0 -186
  156. package/.next/standalone/docs/de/introduction.mdx +0 -57
  157. package/.next/standalone/docs/de/package-aliases.mdx +0 -82
  158. package/.next/standalone/docs/de/testing.mdx +0 -260
  159. package/.next/standalone/docs/docs.json +0 -1002
  160. package/.next/standalone/docs/es/architecture.mdx +0 -332
  161. package/.next/standalone/docs/es/built-in-policies.mdx +0 -574
  162. package/.next/standalone/docs/es/cli/dashboard.mdx +0 -28
  163. package/.next/standalone/docs/es/cli/environment-variables.mdx +0 -34
  164. package/.next/standalone/docs/es/cli/hook.mdx +0 -30
  165. package/.next/standalone/docs/es/cli/install-policies.mdx +0 -47
  166. package/.next/standalone/docs/es/cli/list-policies.mdx +0 -31
  167. package/.next/standalone/docs/es/cli/remove-policies.mdx +0 -43
  168. package/.next/standalone/docs/es/cli/version.mdx +0 -12
  169. package/.next/standalone/docs/es/configuration.mdx +0 -222
  170. package/.next/standalone/docs/es/custom-policies.mdx +0 -353
  171. package/.next/standalone/docs/es/dashboard.mdx +0 -142
  172. package/.next/standalone/docs/es/examples.mdx +0 -307
  173. package/.next/standalone/docs/es/for-agents.mdx +0 -38
  174. package/.next/standalone/docs/es/getting-started.mdx +0 -186
  175. package/.next/standalone/docs/es/introduction.mdx +0 -57
  176. package/.next/standalone/docs/es/package-aliases.mdx +0 -82
  177. package/.next/standalone/docs/es/testing.mdx +0 -260
  178. package/.next/standalone/docs/examples.mdx +0 -307
  179. package/.next/standalone/docs/favicon.ico +0 -0
  180. package/.next/standalone/docs/for-agents.mdx +0 -38
  181. package/.next/standalone/docs/fr/architecture.mdx +0 -332
  182. package/.next/standalone/docs/fr/built-in-policies.mdx +0 -574
  183. package/.next/standalone/docs/fr/cli/dashboard.mdx +0 -28
  184. package/.next/standalone/docs/fr/cli/environment-variables.mdx +0 -34
  185. package/.next/standalone/docs/fr/cli/hook.mdx +0 -30
  186. package/.next/standalone/docs/fr/cli/install-policies.mdx +0 -47
  187. package/.next/standalone/docs/fr/cli/list-policies.mdx +0 -31
  188. package/.next/standalone/docs/fr/cli/remove-policies.mdx +0 -43
  189. package/.next/standalone/docs/fr/cli/version.mdx +0 -12
  190. package/.next/standalone/docs/fr/configuration.mdx +0 -222
  191. package/.next/standalone/docs/fr/custom-policies.mdx +0 -353
  192. package/.next/standalone/docs/fr/dashboard.mdx +0 -142
  193. package/.next/standalone/docs/fr/examples.mdx +0 -307
  194. package/.next/standalone/docs/fr/for-agents.mdx +0 -38
  195. package/.next/standalone/docs/fr/getting-started.mdx +0 -186
  196. package/.next/standalone/docs/fr/introduction.mdx +0 -57
  197. package/.next/standalone/docs/fr/package-aliases.mdx +0 -82
  198. package/.next/standalone/docs/fr/testing.mdx +0 -260
  199. package/.next/standalone/docs/getting-started.mdx +0 -186
  200. package/.next/standalone/docs/he/architecture.mdx +0 -333
  201. package/.next/standalone/docs/he/built-in-policies.mdx +0 -574
  202. package/.next/standalone/docs/he/cli/dashboard.mdx +0 -28
  203. package/.next/standalone/docs/he/cli/environment-variables.mdx +0 -34
  204. package/.next/standalone/docs/he/cli/hook.mdx +0 -30
  205. package/.next/standalone/docs/he/cli/install-policies.mdx +0 -47
  206. package/.next/standalone/docs/he/cli/list-policies.mdx +0 -32
  207. package/.next/standalone/docs/he/cli/remove-policies.mdx +0 -43
  208. package/.next/standalone/docs/he/cli/version.mdx +0 -12
  209. package/.next/standalone/docs/he/configuration.mdx +0 -223
  210. package/.next/standalone/docs/he/custom-policies.mdx +0 -353
  211. package/.next/standalone/docs/he/dashboard.mdx +0 -142
  212. package/.next/standalone/docs/he/examples.mdx +0 -307
  213. package/.next/standalone/docs/he/for-agents.mdx +0 -38
  214. package/.next/standalone/docs/he/getting-started.mdx +0 -186
  215. package/.next/standalone/docs/he/introduction.mdx +0 -57
  216. package/.next/standalone/docs/he/package-aliases.mdx +0 -82
  217. package/.next/standalone/docs/he/testing.mdx +0 -260
  218. package/.next/standalone/docs/hi/architecture.mdx +0 -334
  219. package/.next/standalone/docs/hi/built-in-policies.mdx +0 -576
  220. package/.next/standalone/docs/hi/cli/dashboard.mdx +0 -28
  221. package/.next/standalone/docs/hi/cli/environment-variables.mdx +0 -34
  222. package/.next/standalone/docs/hi/cli/hook.mdx +0 -30
  223. package/.next/standalone/docs/hi/cli/install-policies.mdx +0 -47
  224. package/.next/standalone/docs/hi/cli/list-policies.mdx +0 -31
  225. package/.next/standalone/docs/hi/cli/remove-policies.mdx +0 -43
  226. package/.next/standalone/docs/hi/cli/version.mdx +0 -12
  227. package/.next/standalone/docs/hi/configuration.mdx +0 -222
  228. package/.next/standalone/docs/hi/custom-policies.mdx +0 -354
  229. package/.next/standalone/docs/hi/dashboard.mdx +0 -142
  230. package/.next/standalone/docs/hi/examples.mdx +0 -309
  231. package/.next/standalone/docs/hi/for-agents.mdx +0 -38
  232. package/.next/standalone/docs/hi/getting-started.mdx +0 -187
  233. package/.next/standalone/docs/hi/introduction.mdx +0 -57
  234. package/.next/standalone/docs/hi/package-aliases.mdx +0 -82
  235. package/.next/standalone/docs/hi/testing.mdx +0 -260
  236. package/.next/standalone/docs/i18n/README.ar.md +0 -312
  237. package/.next/standalone/docs/i18n/README.de.md +0 -307
  238. package/.next/standalone/docs/i18n/README.es.md +0 -307
  239. package/.next/standalone/docs/i18n/README.fr.md +0 -307
  240. package/.next/standalone/docs/i18n/README.he.md +0 -312
  241. package/.next/standalone/docs/i18n/README.hi.md +0 -307
  242. package/.next/standalone/docs/i18n/README.it.md +0 -307
  243. package/.next/standalone/docs/i18n/README.ja.md +0 -307
  244. package/.next/standalone/docs/i18n/README.ko.md +0 -307
  245. package/.next/standalone/docs/i18n/README.pt-br.md +0 -307
  246. package/.next/standalone/docs/i18n/README.ru.md +0 -308
  247. package/.next/standalone/docs/i18n/README.tr.md +0 -307
  248. package/.next/standalone/docs/i18n/README.vi.md +0 -307
  249. package/.next/standalone/docs/i18n/README.zh.md +0 -307
  250. package/.next/standalone/docs/introduction.mdx +0 -57
  251. package/.next/standalone/docs/it/architecture.mdx +0 -334
  252. package/.next/standalone/docs/it/built-in-policies.mdx +0 -574
  253. package/.next/standalone/docs/it/cli/dashboard.mdx +0 -28
  254. package/.next/standalone/docs/it/cli/environment-variables.mdx +0 -34
  255. package/.next/standalone/docs/it/cli/hook.mdx +0 -30
  256. package/.next/standalone/docs/it/cli/install-policies.mdx +0 -47
  257. package/.next/standalone/docs/it/cli/list-policies.mdx +0 -31
  258. package/.next/standalone/docs/it/cli/remove-policies.mdx +0 -43
  259. package/.next/standalone/docs/it/cli/version.mdx +0 -12
  260. package/.next/standalone/docs/it/configuration.mdx +0 -222
  261. package/.next/standalone/docs/it/custom-policies.mdx +0 -353
  262. package/.next/standalone/docs/it/dashboard.mdx +0 -142
  263. package/.next/standalone/docs/it/examples.mdx +0 -307
  264. package/.next/standalone/docs/it/for-agents.mdx +0 -38
  265. package/.next/standalone/docs/it/getting-started.mdx +0 -186
  266. package/.next/standalone/docs/it/introduction.mdx +0 -57
  267. package/.next/standalone/docs/it/package-aliases.mdx +0 -82
  268. package/.next/standalone/docs/it/testing.mdx +0 -260
  269. package/.next/standalone/docs/ja/architecture.mdx +0 -332
  270. package/.next/standalone/docs/ja/built-in-policies.mdx +0 -572
  271. package/.next/standalone/docs/ja/cli/dashboard.mdx +0 -28
  272. package/.next/standalone/docs/ja/cli/environment-variables.mdx +0 -34
  273. package/.next/standalone/docs/ja/cli/hook.mdx +0 -30
  274. package/.next/standalone/docs/ja/cli/install-policies.mdx +0 -47
  275. package/.next/standalone/docs/ja/cli/list-policies.mdx +0 -31
  276. package/.next/standalone/docs/ja/cli/remove-policies.mdx +0 -43
  277. package/.next/standalone/docs/ja/cli/version.mdx +0 -12
  278. package/.next/standalone/docs/ja/configuration.mdx +0 -222
  279. package/.next/standalone/docs/ja/custom-policies.mdx +0 -353
  280. package/.next/standalone/docs/ja/dashboard.mdx +0 -142
  281. package/.next/standalone/docs/ja/examples.mdx +0 -307
  282. package/.next/standalone/docs/ja/for-agents.mdx +0 -38
  283. package/.next/standalone/docs/ja/getting-started.mdx +0 -186
  284. package/.next/standalone/docs/ja/introduction.mdx +0 -57
  285. package/.next/standalone/docs/ja/package-aliases.mdx +0 -82
  286. package/.next/standalone/docs/ja/testing.mdx +0 -260
  287. package/.next/standalone/docs/ko/architecture.mdx +0 -332
  288. package/.next/standalone/docs/ko/built-in-policies.mdx +0 -572
  289. package/.next/standalone/docs/ko/cli/dashboard.mdx +0 -28
  290. package/.next/standalone/docs/ko/cli/environment-variables.mdx +0 -34
  291. package/.next/standalone/docs/ko/cli/hook.mdx +0 -30
  292. package/.next/standalone/docs/ko/cli/install-policies.mdx +0 -47
  293. package/.next/standalone/docs/ko/cli/list-policies.mdx +0 -31
  294. package/.next/standalone/docs/ko/cli/remove-policies.mdx +0 -43
  295. package/.next/standalone/docs/ko/cli/version.mdx +0 -12
  296. package/.next/standalone/docs/ko/configuration.mdx +0 -222
  297. package/.next/standalone/docs/ko/custom-policies.mdx +0 -353
  298. package/.next/standalone/docs/ko/dashboard.mdx +0 -142
  299. package/.next/standalone/docs/ko/examples.mdx +0 -307
  300. package/.next/standalone/docs/ko/for-agents.mdx +0 -38
  301. package/.next/standalone/docs/ko/getting-started.mdx +0 -186
  302. package/.next/standalone/docs/ko/introduction.mdx +0 -57
  303. package/.next/standalone/docs/ko/package-aliases.mdx +0 -82
  304. package/.next/standalone/docs/ko/testing.mdx +0 -260
  305. package/.next/standalone/docs/logo/dark.svg +0 -21
  306. package/.next/standalone/docs/logo/exosphere-dark.png +0 -0
  307. package/.next/standalone/docs/logo/exosphere-light.png +0 -0
  308. package/.next/standalone/docs/logo/light.svg +0 -21
  309. package/.next/standalone/docs/package-aliases.mdx +0 -82
  310. package/.next/standalone/docs/pt-br/architecture.mdx +0 -332
  311. package/.next/standalone/docs/pt-br/built-in-policies.mdx +0 -574
  312. package/.next/standalone/docs/pt-br/cli/dashboard.mdx +0 -28
  313. package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +0 -34
  314. package/.next/standalone/docs/pt-br/cli/hook.mdx +0 -30
  315. package/.next/standalone/docs/pt-br/cli/install-policies.mdx +0 -47
  316. package/.next/standalone/docs/pt-br/cli/list-policies.mdx +0 -31
  317. package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +0 -43
  318. package/.next/standalone/docs/pt-br/cli/version.mdx +0 -12
  319. package/.next/standalone/docs/pt-br/configuration.mdx +0 -222
  320. package/.next/standalone/docs/pt-br/custom-policies.mdx +0 -353
  321. package/.next/standalone/docs/pt-br/dashboard.mdx +0 -142
  322. package/.next/standalone/docs/pt-br/examples.mdx +0 -307
  323. package/.next/standalone/docs/pt-br/for-agents.mdx +0 -38
  324. package/.next/standalone/docs/pt-br/getting-started.mdx +0 -186
  325. package/.next/standalone/docs/pt-br/introduction.mdx +0 -57
  326. package/.next/standalone/docs/pt-br/package-aliases.mdx +0 -82
  327. package/.next/standalone/docs/pt-br/testing.mdx +0 -260
  328. package/.next/standalone/docs/ru/architecture.mdx +0 -333
  329. package/.next/standalone/docs/ru/built-in-policies.mdx +0 -574
  330. package/.next/standalone/docs/ru/cli/dashboard.mdx +0 -28
  331. package/.next/standalone/docs/ru/cli/environment-variables.mdx +0 -34
  332. package/.next/standalone/docs/ru/cli/hook.mdx +0 -30
  333. package/.next/standalone/docs/ru/cli/install-policies.mdx +0 -48
  334. package/.next/standalone/docs/ru/cli/list-policies.mdx +0 -32
  335. package/.next/standalone/docs/ru/cli/remove-policies.mdx +0 -43
  336. package/.next/standalone/docs/ru/cli/version.mdx +0 -12
  337. package/.next/standalone/docs/ru/configuration.mdx +0 -222
  338. package/.next/standalone/docs/ru/custom-policies.mdx +0 -354
  339. package/.next/standalone/docs/ru/dashboard.mdx +0 -142
  340. package/.next/standalone/docs/ru/examples.mdx +0 -309
  341. package/.next/standalone/docs/ru/for-agents.mdx +0 -38
  342. package/.next/standalone/docs/ru/getting-started.mdx +0 -186
  343. package/.next/standalone/docs/ru/introduction.mdx +0 -57
  344. package/.next/standalone/docs/ru/package-aliases.mdx +0 -82
  345. package/.next/standalone/docs/ru/testing.mdx +0 -260
  346. package/.next/standalone/docs/testing.mdx +0 -260
  347. package/.next/standalone/docs/tr/architecture.mdx +0 -333
  348. package/.next/standalone/docs/tr/built-in-policies.mdx +0 -574
  349. package/.next/standalone/docs/tr/cli/dashboard.mdx +0 -28
  350. package/.next/standalone/docs/tr/cli/environment-variables.mdx +0 -34
  351. package/.next/standalone/docs/tr/cli/hook.mdx +0 -30
  352. package/.next/standalone/docs/tr/cli/install-policies.mdx +0 -47
  353. package/.next/standalone/docs/tr/cli/list-policies.mdx +0 -31
  354. package/.next/standalone/docs/tr/cli/remove-policies.mdx +0 -44
  355. package/.next/standalone/docs/tr/cli/version.mdx +0 -12
  356. package/.next/standalone/docs/tr/configuration.mdx +0 -222
  357. package/.next/standalone/docs/tr/custom-policies.mdx +0 -353
  358. package/.next/standalone/docs/tr/dashboard.mdx +0 -142
  359. package/.next/standalone/docs/tr/examples.mdx +0 -308
  360. package/.next/standalone/docs/tr/for-agents.mdx +0 -38
  361. package/.next/standalone/docs/tr/getting-started.mdx +0 -186
  362. package/.next/standalone/docs/tr/introduction.mdx +0 -57
  363. package/.next/standalone/docs/tr/package-aliases.mdx +0 -82
  364. package/.next/standalone/docs/tr/testing.mdx +0 -260
  365. package/.next/standalone/docs/vi/architecture.mdx +0 -334
  366. package/.next/standalone/docs/vi/built-in-policies.mdx +0 -575
  367. package/.next/standalone/docs/vi/cli/dashboard.mdx +0 -28
  368. package/.next/standalone/docs/vi/cli/environment-variables.mdx +0 -34
  369. package/.next/standalone/docs/vi/cli/hook.mdx +0 -30
  370. package/.next/standalone/docs/vi/cli/install-policies.mdx +0 -47
  371. package/.next/standalone/docs/vi/cli/list-policies.mdx +0 -31
  372. package/.next/standalone/docs/vi/cli/remove-policies.mdx +0 -43
  373. package/.next/standalone/docs/vi/cli/version.mdx +0 -13
  374. package/.next/standalone/docs/vi/configuration.mdx +0 -222
  375. package/.next/standalone/docs/vi/custom-policies.mdx +0 -353
  376. package/.next/standalone/docs/vi/dashboard.mdx +0 -142
  377. package/.next/standalone/docs/vi/examples.mdx +0 -308
  378. package/.next/standalone/docs/vi/for-agents.mdx +0 -38
  379. package/.next/standalone/docs/vi/getting-started.mdx +0 -186
  380. package/.next/standalone/docs/vi/introduction.mdx +0 -57
  381. package/.next/standalone/docs/vi/package-aliases.mdx +0 -82
  382. package/.next/standalone/docs/vi/testing.mdx +0 -260
  383. package/.next/standalone/docs/zh/architecture.mdx +0 -332
  384. package/.next/standalone/docs/zh/built-in-policies.mdx +0 -572
  385. package/.next/standalone/docs/zh/cli/dashboard.mdx +0 -28
  386. package/.next/standalone/docs/zh/cli/environment-variables.mdx +0 -34
  387. package/.next/standalone/docs/zh/cli/hook.mdx +0 -30
  388. package/.next/standalone/docs/zh/cli/install-policies.mdx +0 -47
  389. package/.next/standalone/docs/zh/cli/list-policies.mdx +0 -31
  390. package/.next/standalone/docs/zh/cli/remove-policies.mdx +0 -43
  391. package/.next/standalone/docs/zh/cli/version.mdx +0 -12
  392. package/.next/standalone/docs/zh/configuration.mdx +0 -222
  393. package/.next/standalone/docs/zh/custom-policies.mdx +0 -353
  394. package/.next/standalone/docs/zh/dashboard.mdx +0 -142
  395. package/.next/standalone/docs/zh/examples.mdx +0 -307
  396. package/.next/standalone/docs/zh/for-agents.mdx +0 -38
  397. package/.next/standalone/docs/zh/getting-started.mdx +0 -186
  398. package/.next/standalone/docs/zh/introduction.mdx +0 -57
  399. package/.next/standalone/docs/zh/package-aliases.mdx +0 -82
  400. package/.next/standalone/docs/zh/testing.mdx +0 -260
  401. package/.next/standalone/eslint.config.mjs +0 -15
  402. package/.next/standalone/examples/convention-policies/security-policies.mjs +0 -40
  403. package/.next/standalone/examples/convention-policies/workflow-policies.mjs +0 -41
  404. package/.next/standalone/examples/policies-advanced/index.js +0 -103
  405. package/.next/standalone/examples/policies-advanced/utils.js +0 -35
  406. package/.next/standalone/examples/policies-basic.js +0 -77
  407. package/.next/standalone/examples/policies-notification.js +0 -104
  408. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  409. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  410. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  411. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
  412. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  413. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
  414. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  415. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
  416. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
  417. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  418. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  419. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  420. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  421. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  422. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  423. package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  424. package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +0 -46
  425. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  426. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  427. package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +0 -313
  428. package/.next/standalone/node_modules/detect-libc/lib/elf.js +0 -39
  429. package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +0 -51
  430. package/.next/standalone/node_modules/detect-libc/lib/process.js +0 -24
  431. package/.next/standalone/node_modules/detect-libc/package.json +0 -44
  432. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  433. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  434. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  435. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  436. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  437. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  438. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  439. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  440. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  441. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  442. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  443. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  444. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  445. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  446. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  447. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  448. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  449. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  450. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  451. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  452. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  453. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  454. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  455. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  456. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  457. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  458. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  459. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  460. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  461. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  462. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  463. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  464. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  465. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  466. package/.next/standalone/node_modules/sharp/package.json +0 -202
  467. package/.next/standalone/scripts/alias-proxy.js +0 -18
  468. package/.next/standalone/scripts/dev.ts +0 -3
  469. package/.next/standalone/scripts/install-telemetry.mjs +0 -108
  470. package/.next/standalone/scripts/launch.ts +0 -83
  471. package/.next/standalone/scripts/parse-script-args.ts +0 -87
  472. package/.next/standalone/scripts/postinstall.mjs +0 -121
  473. package/.next/standalone/scripts/preuninstall.mjs +0 -131
  474. package/.next/standalone/scripts/publish-aliases.mjs +0 -87
  475. package/.next/standalone/scripts/start.ts +0 -3
  476. package/.next/standalone/scripts/sync-hook-events-prompt.md +0 -60
  477. package/.next/standalone/scripts/translate-docs/cache.ts +0 -62
  478. package/.next/standalone/scripts/translate-docs/cli.ts +0 -357
  479. package/.next/standalone/scripts/translate-docs/config.ts +0 -248
  480. package/.next/standalone/scripts/translate-docs/mdx-translator.ts +0 -153
  481. package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +0 -107
  482. package/.next/standalone/scripts/translate-docs/readme-translator.ts +0 -154
  483. package/.next/standalone/scripts/translate-docs/translator.ts +0 -68
  484. package/.next/standalone/scripts/translate-docs/types.ts +0 -43
  485. package/.next/standalone/src/cli-error.ts +0 -18
  486. package/.next/standalone/src/hooks/builtin-policies.ts +0 -1613
  487. package/.next/standalone/src/hooks/custom-hooks-loader.ts +0 -205
  488. package/.next/standalone/src/hooks/custom-hooks-registry.ts +0 -30
  489. package/.next/standalone/src/hooks/handler.ts +0 -202
  490. package/.next/standalone/src/hooks/hook-activity-store.ts +0 -349
  491. package/.next/standalone/src/hooks/hook-logger.ts +0 -133
  492. package/.next/standalone/src/hooks/hook-telemetry.ts +0 -43
  493. package/.next/standalone/src/hooks/hooks-config.ts +0 -166
  494. package/.next/standalone/src/hooks/install-prompt.ts +0 -357
  495. package/.next/standalone/src/hooks/llm-client.ts +0 -90
  496. package/.next/standalone/src/hooks/loader-utils.ts +0 -178
  497. package/.next/standalone/src/hooks/manager.ts +0 -692
  498. package/.next/standalone/src/hooks/policy-evaluator.ts +0 -224
  499. package/.next/standalone/src/hooks/policy-helpers.ts +0 -16
  500. package/.next/standalone/src/hooks/policy-registry.ts +0 -90
  501. package/.next/standalone/src/hooks/policy-types.ts +0 -77
  502. package/.next/standalone/src/hooks/types.ts +0 -63
  503. package/.next/standalone/src/index.ts +0 -19
  504. package/.next/standalone/src/posthog-key.ts +0 -5
  505. package/.next/standalone/tailwind.config.ts +0 -11
  506. package/.next/standalone/tsconfig.json +0 -42
  507. package/.next/standalone/vitest.config.e2e.mts +0 -24
  508. package/.next/standalone/vitest.config.mts +0 -23
  509. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_buildManifest.js +0 -0
  510. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_clientMiddlewareManifest.js +0 -0
  511. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_ssgManifest.js +0 -0
@@ -1,260 +0,0 @@
1
- ---
2
- title: בדיקות
3
- description: "בדיקות יחידה, בדיקות E2E ומסייעי בדיקה"
4
- icon: flask-vial
5
- ---
6
-
7
- failproofai כולל שתי חבילות בדיקה: **בדיקות יחידה** (מהירות, עם mocked) ו**בדיקות end-to-end** (קריאות subprocess אמיתיות).
8
-
9
- ---
10
-
11
- ## הרצת בדיקות
12
-
13
- ```bash
14
- # הרץ את כל בדיקות היחידה פעם אחת
15
- bun run test:run
16
-
17
- # הרץ בדיקות יחידה במצב watch
18
- bun run test
19
-
20
- # הרץ בדיקות E2E (דורש הגדרה - ראה להלן)
21
- bun run test:e2e
22
-
23
- # Type-check ללא בנייה
24
- bunx tsc --noEmit
25
-
26
- # Lint
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 # Logic מדיניות עבור כל builtin
40
- hooks-config.test.ts # טעינת config והיתוך scope
41
- policy-evaluator.test.ts # Param injection וסדר הערכה
42
- custom-hooks-registry.test.ts # globalThis registry add/get/clear
43
- custom-hooks-loader.test.ts # ESM loader, transitive imports, טיפול בשגיאות
44
- manager.test.ts # פעולות install/remove/list
45
- components/
46
- sessions-list.test.tsx # רכיב רשימת sessions
47
- project-list.test.tsx # רכיב רשימת projects
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
- ## בדיקות end-to-end
112
-
113
- בדיקות E2E מפעילות את ה-failproofai הבינארי האמיתי כתת-תהליך, מעביר payload JSON ל-stdin, וקובע את ה-stdout וקוד היציאה. זה בדוק את הנתיב של האינטגרציה המלא שבו Claude Code משתמש.
114
-
115
- ### הגדרה
116
-
117
- בדיקות E2E מריצות את הבינארי ישירות מה-source של ה-repo. לפני ההרצה הראשונה, בנה את ה-CJS bundle שקובצי custom hook משתמשים בהם כאשר הם מייבאים מ-`'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
- בנה מחדש את `dist/` בכל פעם שאתה משנה את public hook API (`src/hooks/custom-hooks-registry.ts`, `src/hooks/policy-helpers.ts`, או `src/hooks/policy-types.ts`).
130
-
131
- ### מבנה בדיקה E2E
132
-
133
- ```text
134
- __tests__/e2e/
135
- helpers/
136
- hook-runner.ts # Spawn הבינארי, pipe payload JSON, ספור exit code + stdout + stderr
137
- fixture-env.ts # temp directories מבודדים per-test עם קובצי config
138
- payloads.ts # Claude-accurate payload factories עבור כל event type
139
- hooks/
140
- builtin-policies.e2e.test.ts # כל מדיניות builtin עם subprocess אמיתי
141
- custom-hooks.e2e.test.ts # טעינה והערכה של custom hook
142
- config-scopes.e2e.test.ts # היתוך config על פני project/local/global
143
- policy-params.e2e.test.ts # Param injection עבור כל מדיניות parametrized
144
- ```
145
-
146
- ### שימוש ב-E2E helpers
147
-
148
- **`FixtureEnv`** - סביבה מבודדת per-test:
149
-
150
- ```typescript
151
- import { createFixtureEnv } from "../helpers/fixture-env";
152
-
153
- const env = createFixtureEnv();
154
- // env.cwd - temp dir; העבר כ-payload.cwd כדי להרים את .failproofai/policies-config.json
155
- // env.home - isolated home dir; אין דליפה של ~/.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`** - factories payload מוכנות:
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 (non-Stop) | `0` | `{"hookSpecificOutput":{"additionalContext":"Instruction from failproofai: ..."}}` |
241
- | Stop instruct | `2` | empty stdout; reason in stderr |
242
- | Allow | `0` | empty string |
243
-
244
- ### תצורת Vitest
245
-
246
- בדיקות E2E משתמשות ב-`vitest.config.e2e.mts` עם:
247
-
248
- - `environment: "node"` - אין צורך בגלובלים של דפדפן
249
- - `pool: "forks"` - isolation true process (בדיקות spawn subprocesses)
250
- - `testTimeout: 20_000` - 20s per test (binary startup + hook eval)
251
-
252
- ה-`forks` pool חשוב: עובדים המבוססים על thread משתפים `globalThis`, שיכול להפריע לבדיקות spawning-subprocess. Process-based forks להימנע מזה.
253
-
254
- ---
255
-
256
- ## CI
257
-
258
- הרצת CI המלאה (`bun run lint && bunx tsc --noEmit && bun run test:run && bun run build`) נדרשת להעביר לפני merge. חבילת E2E רצה כעבודת CI נפרדת במקביל.
259
-
260
- ראה [Contributing](../CONTRIBUTING.md) לרשימת הבדיקה המוקדמת המלאה למיזוג.
@@ -1,334 +0,0 @@
1
- ---
2
-
3
- ---
4
- title: आर्किटेक्चर
5
- description: "हुक हैंडलर, कॉन्फ़िगरेशन लोडिंग और पॉलिसी मूल्यांकन आंतरिक रूप से कैसे काम करते हैं"
6
- icon: sitemap
7
- ---
8
-
9
- यह दस्तावेज़ बताता है कि failproofai आंतरिक रूप से कैसे काम करता है: हुक सिस्टम एजेंट टूल कॉल को कैसे इंटरसेप्ट करता है, कॉन्फ़िगरेशन कैसे लोड और मर्ज होता है, पॉलिसीज़ का मूल्यांकन कैसे होता है, और डैशबोर्ड एजेंट गतिविधि को कैसे मॉनिटर करता है।
10
-
11
- ---
12
-
13
- ## सारांश
14
-
15
- failproofai के दो स्वतंत्र उपप्रणालियां हैं:
16
-
17
- 1. **हुक हैंडलर** - एक तेज़ CLI उपप्रक्रिया जो Claude Code हर एजेंट टूल कॉल पर आमंत्रित करती है। पॉलिसीज़ का मूल्यांकन करता है और एक निर्णय देता है।
18
- 2. **एजेंट मॉनिटर (डैशबोर्ड)** - एजेंट सत्रों की निगरानी और पॉलिसीज़ को प्रबंधित करने के लिए एक Next.js वेब एप्लिकेशन।
19
-
20
- दोनों उपप्रणालियां `~/.failproofai/` और प्रोजेक्ट की `.failproofai/` डायरेक्टरी में कॉन्फ़िगरेशन फ़ाइलें साझा करती हैं, लेकिन वे अलग-अलग प्रक्रियाओं के रूप में चलती हैं और केवल फ़ाइलसिस्टम के माध्यम से संचार करती हैं।
21
-
22
- ---
23
-
24
- ## हुक हैंडलर
25
-
26
- ### Claude Code के साथ एकीकरण
27
-
28
- जब आप `failproofai policies --install` चलाते हैं, तो यह `~/.claude/settings.json` में इस तरह की प्रविष्टियां लिखता है:
29
-
30
- ```json
31
- {
32
- "hooks": {
33
- "PreToolUse": [
34
- {
35
- "matcher": "",
36
- "hooks": [
37
- {
38
- "type": "command",
39
- "command": "failproofai --hook PreToolUse"
40
- }
41
- ]
42
- }
43
- ],
44
- "PostToolUse": [ ... ]
45
- }
46
- }
47
- ```
48
-
49
- Claude Code फिर प्रत्येक टूल कॉल से पहले `failproofai --hook PreToolUse` को एक उपप्रक्रिया के रूप में आमंत्रित करता है, stdin पर एक JSON पेलोड पास करता है।
50
-
51
- ### पेलोड प्रारूप
52
-
53
- ```json
54
- {
55
- "session_id": "abc123",
56
- "transcript_path": "/home/user/.claude/projects/myproject/sessions/abc123.jsonl",
57
- "cwd": "/home/user/myproject",
58
- "permission_mode": "default",
59
- "hook_event_name": "PreToolUse",
60
- "tool_name": "Bash",
61
- "tool_input": { "command": "sudo apt install nodejs" }
62
- }
63
- ```
64
-
65
- `PostToolUse` इवेंट्स के लिए, पेलोड में टूल के आउटपुट के साथ `tool_result` भी शामिल है।
66
-
67
- हैंडलर 1 MB stdin सीमा लागू करता है। इस सीमा से अधिक पेलोड को छोड़ दिया जाता है और सभी पॉलिसीज़ अर्थपूर्ण रूप से अनुमति देती हैं।
68
-
69
- ### प्रतिक्रिया प्रारूप
70
-
71
- **अस्वीकार करें (PreToolUse):**
72
- ```json
73
- {
74
- "hookSpecificOutput": {
75
- "permissionDecision": "deny",
76
- "permissionDecisionReason": "Blocked by failproofai: sudo command blocked"
77
- }
78
- }
79
- ```
80
-
81
- **अस्वीकार करें (PostToolUse):**
82
- ```json
83
- {
84
- "hookSpecificOutput": {
85
- "additionalContext": "Blocked by failproofai because: API key detected in output"
86
- }
87
- }
88
- ```
89
-
90
- **निर्देशन (Stop को छोड़कर किसी भी इवेंट):**
91
- ```json
92
- {
93
- "hookSpecificOutput": {
94
- "additionalContext": "Instruction from failproofai: Verify tests pass before committing."
95
- }
96
- }
97
- ```
98
-
99
- **Stop इवेंट निर्देशन:**
100
- - Exit code: `2`
101
- - कारण stderr को लिखा गया (stdout को नहीं)
102
-
103
- **अनुमति दें:**
104
- - Exit code: `0`
105
- - खाली stdout
106
-
107
- **संदेश के साथ अनुमति दें:**
108
-
109
- `allow(message)` एक पॉलिसी को Claude को सूचनात्मक संदर्भ भेजने देता है भले ही ऑपरेशन की अनुमति हो। हुक हैंडलर निम्नलिखित JSON को **stdout** में लिखता है (कॉन्फ़िगरेशन फ़ाइल में नहीं — यह हैंडलर की Claude Code को प्रतिक्रिया है, जैसे अस्वीकार और निर्देश प्रतिक्रियाएं ऊपर दी गई हैं):
110
-
111
- ```json
112
- // हुक हैंडलर प्रक्रिया द्वारा stdout में लिखा गया
113
- {
114
- "hookSpecificOutput": {
115
- "additionalContext": "All CI checks passed on branch 'feat/my-feature'."
116
- }
117
- }
118
- ```
119
- - Exit code: `0` (ऑपरेशन की अनुमति है)
120
- - जब कई पॉलिसीज़ एक संदेश के साथ `allow` देती हैं, तो उनके संदेश नई पंक्तियों के साथ एक एकल `additionalContext` स्ट्रिंग में जुड़ जाते हैं
121
- - यदि कोई पॉलिसी संदेश प्रदान नहीं करती है, तो stdout खाली है (पहले की तरह)
122
-
123
- ### प्रोसेसिंग पाइपलाइन
124
-
125
- `src/hooks/handler.ts` पूरी पाइपलाइन को लागू करता है:
126
-
127
- ```text
128
- stdin JSON
129
- → parse payload (max 1 MB)
130
- → extract session metadata (session_id, cwd, tool_name, tool_input, etc.)
131
- → readMergedHooksConfig(cwd) ← merges project + local + global config
132
- → register enabled builtin policies with resolved params
133
- → load custom policies from customPoliciesPath (if set)
134
- → register custom policies into policy registry
135
- → evaluate all policies (builtins first, then custom)
136
- → first deny short-circuits
137
- → instruct decisions accumulate
138
- → allow messages accumulate
139
- → write JSON decision to stdout
140
- → persist event to ~/.failproofai/hook-activity.jsonl
141
- → exit
142
- ```
143
-
144
- बिना LLM कॉल्स के सामान्य पेलोड्स के लिए पूरी प्रक्रिया 100ms से कम में चलती है।
145
-
146
- ---
147
-
148
- ## कॉन्फ़िगरेशन लोडिंग
149
-
150
- `src/hooks/hooks-config.ts` तीन-स्कोप कॉन्फ़िगरेशन लोडिंग को लागू करता है।
151
-
152
- ```text
153
- [1] {cwd}/.failproofai/policies-config.json ← project (highest priority)
154
- [2] {cwd}/.failproofai/policies-config.local.json ← local
155
- [3] ~/.failproofai/policies-config.json ← global (lowest priority)
156
- ```
157
-
158
- मर्ज तर्क:
159
- - `enabledPolicies` - सभी तीन फ़ाइलों में डीडुप्लिकेटेड यूनियन
160
- - `policyParams` - प्रति-पॉलिसी कुंजी, पहली फ़ाइल जो इसे परिभाषित करती है पूरी तरह जीतती है
161
- - `customPoliciesPath` - पहली फ़ाइल जो इसे परिभाषित करती है जीतती है
162
- - `llm` - पहली फ़ाइल जो इसे परिभाषित करती है जीतती है
163
-
164
- वेब डैशबोर्ड पढ़ने और लिखने के लिए `readHooksConfig()` (केवल वैश्विक) का उपयोग करता है, क्योंकि इसे प्रोजेक्ट cwd के साथ आमंत्रित नहीं किया जाता है।
165
-
166
- ---
167
-
168
- ## पॉलिसी मूल्यांकन
169
-
170
- `src/hooks/policy-evaluator.ts` पॉलिसीज़ को क्रम में चलाता है।
171
-
172
- प्रत्येक पॉलिसी के लिए:
173
-
174
- 1. पॉलिसी के `params` स्कीमा को देखें (यदि इसके पास है)।
175
- 2. मर्ज किए गए कॉन्फ़िगरेशन से `policyParams[policy.name]` पढ़ें।
176
- 3. `ctx.params` बनाने के लिए स्कीमा डिफ़ॉल्ट्स पर उपयोगकर्ता-प्रदान किए गए मानों को मर्ज करें।
177
- 4. हल किए गए संदर्भ के साथ `policy.fn(ctx)` को कॉल करें।
178
- 5. यदि परिणाम `deny` है, तो तुरंत रुकें और उस निर्णय को वापस करें।
179
- 6. यदि परिणाम `instruct` है, तो संदेश को जमा करें और जारी रखें।
180
- 7. यदि परिणाम `allow` है, तो अगली पॉलिसी पर जाएं।
181
-
182
- सभी पॉलिसीज़ चलने के बाद:
183
- - यदि कोई `deny` वापस किया गया था, तो अस्वीकार प्रतिक्रिया दें।
184
- - यदि कोई `instruct` वापसी एकत्र किए गए थे, तो सभी संदेशों को जोड़ने के साथ एक एकल निर्देश प्रतिक्रिया दें।
185
- - अन्यथा, अनुमति प्रतिक्रिया दें (खाली stdout, exit 0)।
186
-
187
- ---
188
-
189
- ## अंतर्निहित पॉलिसीज़
190
-
191
- `src/hooks/builtin-policies.ts` सभी 26 अंतर्निहित पॉलिसीज़ को `BuiltinPolicyDefinition` ऑब्जेक्ट्स के रूप में परिभाषित करता है:
192
-
193
- ```typescript
194
- interface BuiltinPolicyDefinition {
195
- name: string;
196
- description: string;
197
- fn: (ctx: PolicyContext) => PolicyResult;
198
- match: {
199
- events: HookEventType[];
200
- tools?: string[];
201
- };
202
- defaultEnabled: boolean;
203
- category: string;
204
- beta?: boolean;
205
- params?: PolicyParamsSchema;
206
- }
207
- ```
208
-
209
- जो पॉलिसीज़ `params` स्वीकार करती हैं वे प्रत्येक पैरामीटर के लिए प्रकार और डिफ़ॉल्ट्स के साथ `PolicyParamsSchema` घोषित करती हैं। पॉलिसी मूल्यांकन `fn` को कॉल करने से पहले `ctx.params` में हल किए गए मानों को इंजेक्ट करता है। पॉलिसी फ़ंक्शन्स `ctx.params` को पढ़ते हैं बिना null-गार्डिंग के क्योंकि डिफ़ॉल्ट्स हमेशा पहले लागू होते हैं।
210
-
211
- पॉलिसीज़ के अंदर पैटर्न मिलान पार्स किए गए कमांड टोकन्स (argv) का उपयोग करता है, कच्ची स्ट्रिंग मिलान नहीं। यह shell ऑपरेटर इंजेक्शन के माध्यम से बाईपास को रोकता है (उदाहरण के लिए `sudo systemctl status *` के लिए एक पैटर्न को `; rm -rf /` को जोड़कर बाईपास नहीं किया जा सकता)।
212
-
213
- ---
214
-
215
- ## कस्टम पॉलिसीज़
216
-
217
- `src/hooks/custom-hooks-registry.ts` एक `globalThis`-समर्थित रजिस्ट्री को लागू करता है:
218
-
219
- ```typescript
220
- const REGISTRY_KEY = "__failproofai_custom_hooks__";
221
-
222
- export const customPolicies = {
223
- add(hook: CustomHook): void { ... }
224
- };
225
-
226
- export function getCustomHooks(): CustomHook[] { ... }
227
- export function clearCustomHooks(): void { ... } // used in tests
228
- ```
229
-
230
- `src/hooks/custom-hooks-loader.ts` उपयोगकर्ता की पॉलिसी फ़ाइल लोड करता है:
231
-
232
- 1. कॉन्फ़िगरेशन से `customPoliciesPath` पढ़ें; यदि अनुपस्थित है तो छोड़ दें।
233
- 2. निरपेक्ष पथ में हल करें; फ़ाइल मौजूदगी की जांच करें।
234
- 3. सभी `from "failproofai"` आयातों को वास्तविक dist पथ में फिर से लिखें ताकि `customPolicies` एक ही `globalThis` रजिस्ट्री में हल हो।
235
- 4. ESM अनुकूलता सुनिश्चित करने के लिए संक्रमणकालीन स्थानीय आयातों को पुनरावर्ती रूप से फिर से लिखें।
236
- 5. अस्थायी `.mjs` फ़ाइलें लिखें और प्रविष्टि फ़ाइल को `import()` करें।
237
- 6. पंजीकृत हुक्स को पुनः प्राप्त करने के लिए `getCustomHooks()` को कॉल करें।
238
- 7. `finally` ब्लॉक में सभी अस्थायी फ़ाइलों को साफ़ करें।
239
-
240
- किसी भी त्रुटि पर (फ़ाइल नहीं मिली, सिंटैक्स त्रुटि, आयात विफलता), त्रुटि को `~/.failproofai/hook.log` में लॉग किया जाता है और लोडर एक खाली सरणी देता है। अंतर्निहित पॉलिसीज़ प्रभावित नहीं होती हैं।
241
-
242
- कस्टम पॉलिसीज़ का मूल्यांकन सभी अंतर्निहित पॉलिसीज़ के बाद किया जाता है। एक कस्टम पॉलिसी `deny` अभी भी आगे की कस्टम पॉलिसीज़ को छोटा करता है (लेकिन सभी अंतर्निहित पॉलिसीज़ पहले ही चल चुकी हैं)।
243
-
244
- ---
245
-
246
- ## गतिविधि लॉगिंग
247
-
248
- प्रत्येक हुक इवेंट के बाद, हैंडलर `~/.failproofai/hook-activity.jsonl` में एक JSONL पंक्ति जोड़ता है:
249
-
250
- ```json
251
- {
252
- "timestamp": "2026-04-06T12:34:56.789Z",
253
- "sessionId": "abc123",
254
- "eventType": "PreToolUse",
255
- "toolName": "Bash",
256
- "policyName": "block-sudo",
257
- "decision": "deny",
258
- "reason": "sudo command blocked by failproofai",
259
- "durationMs": 12
260
- }
261
- ```
262
-
263
- प्रत्येक पॉलिसी के लिए एक पंक्ति जिसने एक गैर-अनुमति निर्णय दिया। अनुमति के निर्णय लॉग नहीं किए जाते हैं (फ़ाइल को छोटा रखने के लिए)।
264
-
265
- ---
266
-
267
- ## डैशबोर्ड आर्किटेक्चर
268
-
269
- डैशबोर्ड एक **Next.js 16** एप्लिकेशन है जो App Router के साथ React Server Components और Server Actions का उपयोग करता है।
270
-
271
- ```text
272
- app/
273
- layout.tsx ← Root layout (theme, telemetry, nav)
274
- projects/page.tsx ← Server component: list all Claude projects
275
- project/[name]/page.tsx ← Server component: list sessions in a project
276
- project/[name]/session/
277
- [sessionId]/page.tsx ← Server component: render session viewer
278
- policies/page.tsx ← Client component: policy management + activity log
279
- actions/
280
- get-hooks-config.ts ← Read config + policy list
281
- update-hooks-config.ts ← Toggle policy on/off
282
- update-policy-params.ts ← Update policy parameters
283
- get-hook-activity.ts ← Paginate/search activity log
284
- install-hooks-web.ts ← Install/remove hooks from the browser
285
- api/
286
- download/[project]/[session]/route.ts ← Export session as ZIP/JSONL
287
- ```
288
-
289
- **डेटा प्रवाह:**
290
-
291
- - पेज कंपोनेंट्स प्रोजेक्ट/सेशन डेटा को सीधे फ़ाइलसिस्टम से पढ़ने के लिए `lib/projects.ts` और `lib/log-entries.ts` को कॉल करते हैं (पढ़ने के लिए कोई API परत नहीं)।
292
- - पॉलिसीज़ पेज सभी म्यूटेशन्स के लिए Server Actions का उपयोग करता है (टॉगल, पैरामीटर अपडेट, इंस्टॉल/निकालना)।
293
- - सेशन दर्शक Claude की JSONL ट्रांसक्रिप्ट प्रारूप को पार्स करता है और संदेशों और टूल कॉल्स की एक समयरेखा प्रस्तुत करता है।
294
-
295
- **मुख्य डिज़ाइन निर्णय:**
296
-
297
- - कोई डेटाबेस नहीं - सभी स्थायी स्थिति सादी फ़ाइलों में है (`~/.failproofai/`, `~/.claude/projects/`)।
298
- - म्यूटेशन्स के लिए Server Actions - CRUD ऑपरेशन्स के लिए कोई REST API आवश्यक नहीं है।
299
- - पढ़ने पन्नों के लिए React Server Components - तेज़ प्रारंभिक लोड, डेटा फेचिंग के लिए कोई क्लाइंट बंडल नहीं।
300
- - क्लाइंट कंपोनेंट्स केवल जहां इंटरैक्टिविटी आवश्यक है (पॉलिसी टॉगल, गतिविधि खोज, लॉग दर्शक)।
301
-
302
- ---
303
-
304
- ## फ़ाइल लेआउट
305
-
306
- ```text
307
- failproofai/
308
- ├── bin/
309
- │ └── failproofai.mjs # CLI router (hook / dashboard / install / etc.)
310
- ├── src/hooks/
311
- │ ├── handler.ts # Hook event pipeline
312
- │ ├── builtin-policies.ts # 26 policy definitions
313
- │ ├── policy-evaluator.ts # Policy execution engine
314
- │ ├── policy-registry.ts # Policy registration and lookup
315
- │ ├── policy-types.ts # TypeScript interfaces
316
- │ ├── hooks-config.ts # Multi-scope config loading
317
- │ ├── custom-hooks-registry.ts # globalThis-backed hook registry
318
- │ ├── custom-hooks-loader.ts # ESM loader for user JS hooks
319
- │ ├── manager.ts # install / remove / list operations
320
- │ ├── install-prompt.ts # Interactive policy selection prompt
321
- │ ├── hook-logger.ts # Logging to hook.log
322
- │ ├── hook-activity-store.ts # Persist activity to hook-activity.jsonl
323
- │ └── llm-client.ts # LLM API client (for AI-powered policies)
324
- ├── app/ # Next.js dashboard (pages + server actions)
325
- ├── lib/ # Shared utilities
326
- │ ├── projects.ts # Enumerate Claude projects from filesystem
327
- │ ├── log-entries.ts # Parse Claude transcript JSONL format
328
- │ ├── paths.ts # Resolve system paths
329
- │ └── ...
330
- ├── components/ # Shared React UI components
331
- ├── contexts/ # React context providers (theme, auto-refresh, telemetry)
332
- ├── examples/ # Example custom hook files
333
- └── __tests__/ # Unit and E2E tests
334
- ```