failproofai 0.0.6-beta.3 → 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 (509) 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]__0kyh86x._.js → [root-of-the-server]__0om-5pe._.js} +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +1 -1
  58. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__096k.db._.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/{01pmw1-asbek~.js → 02dqjyv6_9mhq.js} +2 -2
  71. package/.next/standalone/.next/static/chunks/{051m32nx~n5yr.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/{0mazj-p-~2kc6.js → 0o547jv-k_k35.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/0pk2h2.mjxy.m.js +6 -0
  75. package/.next/standalone/.next/static/chunks/{0l-mu4okl-cj1.js → 0rcwkbh24w38b.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{0-dm_9a6nsc2l.js → 140xx_tfr~lm_.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{156zca6aewyr-.js → 169_e4dq~1~b6.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0a-yctdwn368y.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/dist/cli.mjs +2 -2
  83. package/package.json +2 -2
  84. package/scripts/prune-standalone.mjs +128 -0
  85. package/.next/standalone/.claude/settings.json +0 -316
  86. package/.next/standalone/.failproofai/policies/review-policies.mjs +0 -113
  87. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +0 -63
  88. package/.next/standalone/.failproofai/policies-config.json +0 -39
  89. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +0 -1
  90. package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +0 -6
  91. package/.next/standalone/AGENTS.md +0 -80
  92. package/.next/standalone/CHANGELOG.md +0 -158
  93. package/.next/standalone/CLAUDE.md +0 -165
  94. package/.next/standalone/CONTRIBUTING.md +0 -76
  95. package/.next/standalone/Dockerfile.docs +0 -12
  96. package/.next/standalone/LICENSE +0 -42
  97. package/.next/standalone/README.md +0 -301
  98. package/.next/standalone/bin/failproofai.mjs +0 -439
  99. package/.next/standalone/bun.lock +0 -1119
  100. package/.next/standalone/components.json +0 -23
  101. package/.next/standalone/dist/cli.mjs +0 -4696
  102. package/.next/standalone/dist/index.js +0 -80
  103. package/.next/standalone/docs/ar/architecture.mdx +0 -334
  104. package/.next/standalone/docs/ar/built-in-policies.mdx +0 -574
  105. package/.next/standalone/docs/ar/cli/dashboard.mdx +0 -28
  106. package/.next/standalone/docs/ar/cli/environment-variables.mdx +0 -34
  107. package/.next/standalone/docs/ar/cli/hook.mdx +0 -31
  108. package/.next/standalone/docs/ar/cli/install-policies.mdx +0 -48
  109. package/.next/standalone/docs/ar/cli/list-policies.mdx +0 -31
  110. package/.next/standalone/docs/ar/cli/remove-policies.mdx +0 -43
  111. package/.next/standalone/docs/ar/cli/version.mdx +0 -13
  112. package/.next/standalone/docs/ar/configuration.mdx +0 -223
  113. package/.next/standalone/docs/ar/custom-policies.mdx +0 -354
  114. package/.next/standalone/docs/ar/dashboard.mdx +0 -142
  115. package/.next/standalone/docs/ar/examples.mdx +0 -307
  116. package/.next/standalone/docs/ar/for-agents.mdx +0 -39
  117. package/.next/standalone/docs/ar/getting-started.mdx +0 -187
  118. package/.next/standalone/docs/ar/introduction.mdx +0 -58
  119. package/.next/standalone/docs/ar/package-aliases.mdx +0 -82
  120. package/.next/standalone/docs/ar/testing.mdx +0 -261
  121. package/.next/standalone/docs/architecture.mdx +0 -332
  122. package/.next/standalone/docs/built-in-policies.mdx +0 -574
  123. package/.next/standalone/docs/cli/dashboard.mdx +0 -28
  124. package/.next/standalone/docs/cli/environment-variables.mdx +0 -34
  125. package/.next/standalone/docs/cli/hook.mdx +0 -30
  126. package/.next/standalone/docs/cli/install-policies.mdx +0 -47
  127. package/.next/standalone/docs/cli/list-policies.mdx +0 -31
  128. package/.next/standalone/docs/cli/remove-policies.mdx +0 -43
  129. package/.next/standalone/docs/cli/version.mdx +0 -12
  130. package/.next/standalone/docs/configuration.mdx +0 -222
  131. package/.next/standalone/docs/custom-policies.mdx +0 -353
  132. package/.next/standalone/docs/dashboard.mdx +0 -142
  133. package/.next/standalone/docs/de/architecture.mdx +0 -332
  134. package/.next/standalone/docs/de/built-in-policies.mdx +0 -574
  135. package/.next/standalone/docs/de/cli/dashboard.mdx +0 -28
  136. package/.next/standalone/docs/de/cli/environment-variables.mdx +0 -34
  137. package/.next/standalone/docs/de/cli/hook.mdx +0 -30
  138. package/.next/standalone/docs/de/cli/install-policies.mdx +0 -47
  139. package/.next/standalone/docs/de/cli/list-policies.mdx +0 -31
  140. package/.next/standalone/docs/de/cli/remove-policies.mdx +0 -43
  141. package/.next/standalone/docs/de/cli/version.mdx +0 -12
  142. package/.next/standalone/docs/de/configuration.mdx +0 -222
  143. package/.next/standalone/docs/de/custom-policies.mdx +0 -353
  144. package/.next/standalone/docs/de/dashboard.mdx +0 -142
  145. package/.next/standalone/docs/de/examples.mdx +0 -307
  146. package/.next/standalone/docs/de/for-agents.mdx +0 -38
  147. package/.next/standalone/docs/de/getting-started.mdx +0 -186
  148. package/.next/standalone/docs/de/introduction.mdx +0 -57
  149. package/.next/standalone/docs/de/package-aliases.mdx +0 -82
  150. package/.next/standalone/docs/de/testing.mdx +0 -260
  151. package/.next/standalone/docs/docs.json +0 -1002
  152. package/.next/standalone/docs/es/architecture.mdx +0 -332
  153. package/.next/standalone/docs/es/built-in-policies.mdx +0 -574
  154. package/.next/standalone/docs/es/cli/dashboard.mdx +0 -28
  155. package/.next/standalone/docs/es/cli/environment-variables.mdx +0 -34
  156. package/.next/standalone/docs/es/cli/hook.mdx +0 -30
  157. package/.next/standalone/docs/es/cli/install-policies.mdx +0 -47
  158. package/.next/standalone/docs/es/cli/list-policies.mdx +0 -31
  159. package/.next/standalone/docs/es/cli/remove-policies.mdx +0 -43
  160. package/.next/standalone/docs/es/cli/version.mdx +0 -12
  161. package/.next/standalone/docs/es/configuration.mdx +0 -222
  162. package/.next/standalone/docs/es/custom-policies.mdx +0 -353
  163. package/.next/standalone/docs/es/dashboard.mdx +0 -142
  164. package/.next/standalone/docs/es/examples.mdx +0 -307
  165. package/.next/standalone/docs/es/for-agents.mdx +0 -38
  166. package/.next/standalone/docs/es/getting-started.mdx +0 -186
  167. package/.next/standalone/docs/es/introduction.mdx +0 -57
  168. package/.next/standalone/docs/es/package-aliases.mdx +0 -82
  169. package/.next/standalone/docs/es/testing.mdx +0 -260
  170. package/.next/standalone/docs/examples.mdx +0 -307
  171. package/.next/standalone/docs/favicon.ico +0 -0
  172. package/.next/standalone/docs/for-agents.mdx +0 -38
  173. package/.next/standalone/docs/fr/architecture.mdx +0 -332
  174. package/.next/standalone/docs/fr/built-in-policies.mdx +0 -574
  175. package/.next/standalone/docs/fr/cli/dashboard.mdx +0 -28
  176. package/.next/standalone/docs/fr/cli/environment-variables.mdx +0 -34
  177. package/.next/standalone/docs/fr/cli/hook.mdx +0 -30
  178. package/.next/standalone/docs/fr/cli/install-policies.mdx +0 -47
  179. package/.next/standalone/docs/fr/cli/list-policies.mdx +0 -31
  180. package/.next/standalone/docs/fr/cli/remove-policies.mdx +0 -43
  181. package/.next/standalone/docs/fr/cli/version.mdx +0 -12
  182. package/.next/standalone/docs/fr/configuration.mdx +0 -222
  183. package/.next/standalone/docs/fr/custom-policies.mdx +0 -353
  184. package/.next/standalone/docs/fr/dashboard.mdx +0 -142
  185. package/.next/standalone/docs/fr/examples.mdx +0 -307
  186. package/.next/standalone/docs/fr/for-agents.mdx +0 -38
  187. package/.next/standalone/docs/fr/getting-started.mdx +0 -186
  188. package/.next/standalone/docs/fr/introduction.mdx +0 -57
  189. package/.next/standalone/docs/fr/package-aliases.mdx +0 -82
  190. package/.next/standalone/docs/fr/testing.mdx +0 -260
  191. package/.next/standalone/docs/getting-started.mdx +0 -186
  192. package/.next/standalone/docs/he/architecture.mdx +0 -333
  193. package/.next/standalone/docs/he/built-in-policies.mdx +0 -575
  194. package/.next/standalone/docs/he/cli/dashboard.mdx +0 -28
  195. package/.next/standalone/docs/he/cli/environment-variables.mdx +0 -34
  196. package/.next/standalone/docs/he/cli/hook.mdx +0 -30
  197. package/.next/standalone/docs/he/cli/install-policies.mdx +0 -47
  198. package/.next/standalone/docs/he/cli/list-policies.mdx +0 -32
  199. package/.next/standalone/docs/he/cli/remove-policies.mdx +0 -43
  200. package/.next/standalone/docs/he/cli/version.mdx +0 -12
  201. package/.next/standalone/docs/he/configuration.mdx +0 -223
  202. package/.next/standalone/docs/he/custom-policies.mdx +0 -353
  203. package/.next/standalone/docs/he/dashboard.mdx +0 -142
  204. package/.next/standalone/docs/he/examples.mdx +0 -307
  205. package/.next/standalone/docs/he/for-agents.mdx +0 -38
  206. package/.next/standalone/docs/he/getting-started.mdx +0 -186
  207. package/.next/standalone/docs/he/introduction.mdx +0 -57
  208. package/.next/standalone/docs/he/package-aliases.mdx +0 -82
  209. package/.next/standalone/docs/he/testing.mdx +0 -260
  210. package/.next/standalone/docs/hi/architecture.mdx +0 -334
  211. package/.next/standalone/docs/hi/built-in-policies.mdx +0 -572
  212. package/.next/standalone/docs/hi/cli/dashboard.mdx +0 -28
  213. package/.next/standalone/docs/hi/cli/environment-variables.mdx +0 -34
  214. package/.next/standalone/docs/hi/cli/hook.mdx +0 -30
  215. package/.next/standalone/docs/hi/cli/install-policies.mdx +0 -47
  216. package/.next/standalone/docs/hi/cli/list-policies.mdx +0 -31
  217. package/.next/standalone/docs/hi/cli/remove-policies.mdx +0 -43
  218. package/.next/standalone/docs/hi/cli/version.mdx +0 -12
  219. package/.next/standalone/docs/hi/configuration.mdx +0 -222
  220. package/.next/standalone/docs/hi/custom-policies.mdx +0 -354
  221. package/.next/standalone/docs/hi/dashboard.mdx +0 -142
  222. package/.next/standalone/docs/hi/examples.mdx +0 -309
  223. package/.next/standalone/docs/hi/for-agents.mdx +0 -38
  224. package/.next/standalone/docs/hi/getting-started.mdx +0 -187
  225. package/.next/standalone/docs/hi/introduction.mdx +0 -57
  226. package/.next/standalone/docs/hi/package-aliases.mdx +0 -82
  227. package/.next/standalone/docs/hi/testing.mdx +0 -260
  228. package/.next/standalone/docs/i18n/README.ar.md +0 -312
  229. package/.next/standalone/docs/i18n/README.de.md +0 -307
  230. package/.next/standalone/docs/i18n/README.es.md +0 -307
  231. package/.next/standalone/docs/i18n/README.fr.md +0 -307
  232. package/.next/standalone/docs/i18n/README.he.md +0 -312
  233. package/.next/standalone/docs/i18n/README.hi.md +0 -307
  234. package/.next/standalone/docs/i18n/README.it.md +0 -307
  235. package/.next/standalone/docs/i18n/README.ja.md +0 -307
  236. package/.next/standalone/docs/i18n/README.ko.md +0 -307
  237. package/.next/standalone/docs/i18n/README.pt-br.md +0 -307
  238. package/.next/standalone/docs/i18n/README.ru.md +0 -308
  239. package/.next/standalone/docs/i18n/README.tr.md +0 -307
  240. package/.next/standalone/docs/i18n/README.vi.md +0 -307
  241. package/.next/standalone/docs/i18n/README.zh.md +0 -307
  242. package/.next/standalone/docs/introduction.mdx +0 -57
  243. package/.next/standalone/docs/it/architecture.mdx +0 -334
  244. package/.next/standalone/docs/it/built-in-policies.mdx +0 -574
  245. package/.next/standalone/docs/it/cli/dashboard.mdx +0 -28
  246. package/.next/standalone/docs/it/cli/environment-variables.mdx +0 -34
  247. package/.next/standalone/docs/it/cli/hook.mdx +0 -30
  248. package/.next/standalone/docs/it/cli/install-policies.mdx +0 -47
  249. package/.next/standalone/docs/it/cli/list-policies.mdx +0 -31
  250. package/.next/standalone/docs/it/cli/remove-policies.mdx +0 -43
  251. package/.next/standalone/docs/it/cli/version.mdx +0 -12
  252. package/.next/standalone/docs/it/configuration.mdx +0 -222
  253. package/.next/standalone/docs/it/custom-policies.mdx +0 -353
  254. package/.next/standalone/docs/it/dashboard.mdx +0 -142
  255. package/.next/standalone/docs/it/examples.mdx +0 -307
  256. package/.next/standalone/docs/it/for-agents.mdx +0 -38
  257. package/.next/standalone/docs/it/getting-started.mdx +0 -186
  258. package/.next/standalone/docs/it/introduction.mdx +0 -57
  259. package/.next/standalone/docs/it/package-aliases.mdx +0 -82
  260. package/.next/standalone/docs/it/testing.mdx +0 -260
  261. package/.next/standalone/docs/ja/architecture.mdx +0 -332
  262. package/.next/standalone/docs/ja/built-in-policies.mdx +0 -572
  263. package/.next/standalone/docs/ja/cli/dashboard.mdx +0 -28
  264. package/.next/standalone/docs/ja/cli/environment-variables.mdx +0 -34
  265. package/.next/standalone/docs/ja/cli/hook.mdx +0 -30
  266. package/.next/standalone/docs/ja/cli/install-policies.mdx +0 -47
  267. package/.next/standalone/docs/ja/cli/list-policies.mdx +0 -31
  268. package/.next/standalone/docs/ja/cli/remove-policies.mdx +0 -43
  269. package/.next/standalone/docs/ja/cli/version.mdx +0 -12
  270. package/.next/standalone/docs/ja/configuration.mdx +0 -222
  271. package/.next/standalone/docs/ja/custom-policies.mdx +0 -353
  272. package/.next/standalone/docs/ja/dashboard.mdx +0 -142
  273. package/.next/standalone/docs/ja/examples.mdx +0 -307
  274. package/.next/standalone/docs/ja/for-agents.mdx +0 -38
  275. package/.next/standalone/docs/ja/getting-started.mdx +0 -186
  276. package/.next/standalone/docs/ja/introduction.mdx +0 -57
  277. package/.next/standalone/docs/ja/package-aliases.mdx +0 -82
  278. package/.next/standalone/docs/ja/testing.mdx +0 -260
  279. package/.next/standalone/docs/ko/architecture.mdx +0 -332
  280. package/.next/standalone/docs/ko/built-in-policies.mdx +0 -572
  281. package/.next/standalone/docs/ko/cli/dashboard.mdx +0 -28
  282. package/.next/standalone/docs/ko/cli/environment-variables.mdx +0 -34
  283. package/.next/standalone/docs/ko/cli/hook.mdx +0 -30
  284. package/.next/standalone/docs/ko/cli/install-policies.mdx +0 -47
  285. package/.next/standalone/docs/ko/cli/list-policies.mdx +0 -31
  286. package/.next/standalone/docs/ko/cli/remove-policies.mdx +0 -43
  287. package/.next/standalone/docs/ko/cli/version.mdx +0 -12
  288. package/.next/standalone/docs/ko/configuration.mdx +0 -222
  289. package/.next/standalone/docs/ko/custom-policies.mdx +0 -353
  290. package/.next/standalone/docs/ko/dashboard.mdx +0 -142
  291. package/.next/standalone/docs/ko/examples.mdx +0 -307
  292. package/.next/standalone/docs/ko/for-agents.mdx +0 -38
  293. package/.next/standalone/docs/ko/getting-started.mdx +0 -186
  294. package/.next/standalone/docs/ko/introduction.mdx +0 -57
  295. package/.next/standalone/docs/ko/package-aliases.mdx +0 -82
  296. package/.next/standalone/docs/ko/testing.mdx +0 -260
  297. package/.next/standalone/docs/logo/dark.svg +0 -21
  298. package/.next/standalone/docs/logo/exosphere-dark.png +0 -0
  299. package/.next/standalone/docs/logo/exosphere-light.png +0 -0
  300. package/.next/standalone/docs/logo/light.svg +0 -21
  301. package/.next/standalone/docs/package-aliases.mdx +0 -82
  302. package/.next/standalone/docs/pt-br/architecture.mdx +0 -332
  303. package/.next/standalone/docs/pt-br/built-in-policies.mdx +0 -574
  304. package/.next/standalone/docs/pt-br/cli/dashboard.mdx +0 -28
  305. package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +0 -34
  306. package/.next/standalone/docs/pt-br/cli/hook.mdx +0 -30
  307. package/.next/standalone/docs/pt-br/cli/install-policies.mdx +0 -47
  308. package/.next/standalone/docs/pt-br/cli/list-policies.mdx +0 -31
  309. package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +0 -43
  310. package/.next/standalone/docs/pt-br/cli/version.mdx +0 -12
  311. package/.next/standalone/docs/pt-br/configuration.mdx +0 -222
  312. package/.next/standalone/docs/pt-br/custom-policies.mdx +0 -353
  313. package/.next/standalone/docs/pt-br/dashboard.mdx +0 -142
  314. package/.next/standalone/docs/pt-br/examples.mdx +0 -307
  315. package/.next/standalone/docs/pt-br/for-agents.mdx +0 -38
  316. package/.next/standalone/docs/pt-br/getting-started.mdx +0 -186
  317. package/.next/standalone/docs/pt-br/introduction.mdx +0 -57
  318. package/.next/standalone/docs/pt-br/package-aliases.mdx +0 -82
  319. package/.next/standalone/docs/pt-br/testing.mdx +0 -260
  320. package/.next/standalone/docs/ru/architecture.mdx +0 -333
  321. package/.next/standalone/docs/ru/built-in-policies.mdx +0 -574
  322. package/.next/standalone/docs/ru/cli/dashboard.mdx +0 -28
  323. package/.next/standalone/docs/ru/cli/environment-variables.mdx +0 -34
  324. package/.next/standalone/docs/ru/cli/hook.mdx +0 -30
  325. package/.next/standalone/docs/ru/cli/install-policies.mdx +0 -48
  326. package/.next/standalone/docs/ru/cli/list-policies.mdx +0 -32
  327. package/.next/standalone/docs/ru/cli/remove-policies.mdx +0 -43
  328. package/.next/standalone/docs/ru/cli/version.mdx +0 -12
  329. package/.next/standalone/docs/ru/configuration.mdx +0 -222
  330. package/.next/standalone/docs/ru/custom-policies.mdx +0 -354
  331. package/.next/standalone/docs/ru/dashboard.mdx +0 -142
  332. package/.next/standalone/docs/ru/examples.mdx +0 -309
  333. package/.next/standalone/docs/ru/for-agents.mdx +0 -38
  334. package/.next/standalone/docs/ru/getting-started.mdx +0 -186
  335. package/.next/standalone/docs/ru/introduction.mdx +0 -57
  336. package/.next/standalone/docs/ru/package-aliases.mdx +0 -82
  337. package/.next/standalone/docs/ru/testing.mdx +0 -260
  338. package/.next/standalone/docs/testing.mdx +0 -260
  339. package/.next/standalone/docs/tr/architecture.mdx +0 -333
  340. package/.next/standalone/docs/tr/built-in-policies.mdx +0 -574
  341. package/.next/standalone/docs/tr/cli/dashboard.mdx +0 -28
  342. package/.next/standalone/docs/tr/cli/environment-variables.mdx +0 -34
  343. package/.next/standalone/docs/tr/cli/hook.mdx +0 -30
  344. package/.next/standalone/docs/tr/cli/install-policies.mdx +0 -47
  345. package/.next/standalone/docs/tr/cli/list-policies.mdx +0 -31
  346. package/.next/standalone/docs/tr/cli/remove-policies.mdx +0 -44
  347. package/.next/standalone/docs/tr/cli/version.mdx +0 -12
  348. package/.next/standalone/docs/tr/configuration.mdx +0 -222
  349. package/.next/standalone/docs/tr/custom-policies.mdx +0 -353
  350. package/.next/standalone/docs/tr/dashboard.mdx +0 -142
  351. package/.next/standalone/docs/tr/examples.mdx +0 -308
  352. package/.next/standalone/docs/tr/for-agents.mdx +0 -38
  353. package/.next/standalone/docs/tr/getting-started.mdx +0 -186
  354. package/.next/standalone/docs/tr/introduction.mdx +0 -57
  355. package/.next/standalone/docs/tr/package-aliases.mdx +0 -82
  356. package/.next/standalone/docs/tr/testing.mdx +0 -260
  357. package/.next/standalone/docs/vi/architecture.mdx +0 -334
  358. package/.next/standalone/docs/vi/built-in-policies.mdx +0 -572
  359. package/.next/standalone/docs/vi/cli/dashboard.mdx +0 -28
  360. package/.next/standalone/docs/vi/cli/environment-variables.mdx +0 -34
  361. package/.next/standalone/docs/vi/cli/hook.mdx +0 -30
  362. package/.next/standalone/docs/vi/cli/install-policies.mdx +0 -47
  363. package/.next/standalone/docs/vi/cli/list-policies.mdx +0 -31
  364. package/.next/standalone/docs/vi/cli/remove-policies.mdx +0 -43
  365. package/.next/standalone/docs/vi/cli/version.mdx +0 -13
  366. package/.next/standalone/docs/vi/configuration.mdx +0 -222
  367. package/.next/standalone/docs/vi/custom-policies.mdx +0 -353
  368. package/.next/standalone/docs/vi/dashboard.mdx +0 -142
  369. package/.next/standalone/docs/vi/examples.mdx +0 -308
  370. package/.next/standalone/docs/vi/for-agents.mdx +0 -38
  371. package/.next/standalone/docs/vi/getting-started.mdx +0 -186
  372. package/.next/standalone/docs/vi/introduction.mdx +0 -57
  373. package/.next/standalone/docs/vi/package-aliases.mdx +0 -82
  374. package/.next/standalone/docs/vi/testing.mdx +0 -260
  375. package/.next/standalone/docs/zh/architecture.mdx +0 -332
  376. package/.next/standalone/docs/zh/built-in-policies.mdx +0 -570
  377. package/.next/standalone/docs/zh/cli/dashboard.mdx +0 -28
  378. package/.next/standalone/docs/zh/cli/environment-variables.mdx +0 -34
  379. package/.next/standalone/docs/zh/cli/hook.mdx +0 -30
  380. package/.next/standalone/docs/zh/cli/install-policies.mdx +0 -47
  381. package/.next/standalone/docs/zh/cli/list-policies.mdx +0 -31
  382. package/.next/standalone/docs/zh/cli/remove-policies.mdx +0 -43
  383. package/.next/standalone/docs/zh/cli/version.mdx +0 -12
  384. package/.next/standalone/docs/zh/configuration.mdx +0 -222
  385. package/.next/standalone/docs/zh/custom-policies.mdx +0 -353
  386. package/.next/standalone/docs/zh/dashboard.mdx +0 -142
  387. package/.next/standalone/docs/zh/examples.mdx +0 -307
  388. package/.next/standalone/docs/zh/for-agents.mdx +0 -38
  389. package/.next/standalone/docs/zh/getting-started.mdx +0 -186
  390. package/.next/standalone/docs/zh/introduction.mdx +0 -57
  391. package/.next/standalone/docs/zh/package-aliases.mdx +0 -82
  392. package/.next/standalone/docs/zh/testing.mdx +0 -260
  393. package/.next/standalone/eslint.config.mjs +0 -15
  394. package/.next/standalone/examples/convention-policies/security-policies.mjs +0 -40
  395. package/.next/standalone/examples/convention-policies/workflow-policies.mjs +0 -41
  396. package/.next/standalone/examples/policies-advanced/index.js +0 -103
  397. package/.next/standalone/examples/policies-advanced/utils.js +0 -35
  398. package/.next/standalone/examples/policies-basic.js +0 -77
  399. package/.next/standalone/examples/policies-notification.js +0 -104
  400. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  401. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  402. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  403. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
  404. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  405. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
  406. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  407. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
  408. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
  409. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  410. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  411. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  412. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  413. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  414. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  415. package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  416. package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +0 -46
  417. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  418. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  419. package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +0 -313
  420. package/.next/standalone/node_modules/detect-libc/lib/elf.js +0 -39
  421. package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +0 -51
  422. package/.next/standalone/node_modules/detect-libc/lib/process.js +0 -24
  423. package/.next/standalone/node_modules/detect-libc/package.json +0 -44
  424. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  425. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  426. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  427. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  428. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  429. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  430. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  431. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  432. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  433. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  434. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  435. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  436. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  437. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  438. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  439. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  440. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  441. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  442. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  443. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  444. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  445. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  446. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  447. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  448. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  449. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  450. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  451. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  452. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  453. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  454. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  455. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  456. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  457. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  458. package/.next/standalone/node_modules/sharp/package.json +0 -202
  459. package/.next/standalone/scripts/alias-proxy.js +0 -18
  460. package/.next/standalone/scripts/dev.ts +0 -3
  461. package/.next/standalone/scripts/install-telemetry.mjs +0 -108
  462. package/.next/standalone/scripts/launch.ts +0 -83
  463. package/.next/standalone/scripts/parse-script-args.ts +0 -87
  464. package/.next/standalone/scripts/postinstall.mjs +0 -121
  465. package/.next/standalone/scripts/preuninstall.mjs +0 -131
  466. package/.next/standalone/scripts/publish-aliases.mjs +0 -87
  467. package/.next/standalone/scripts/start.ts +0 -3
  468. package/.next/standalone/scripts/sync-hook-events-prompt.md +0 -60
  469. package/.next/standalone/scripts/translate-docs/cache.ts +0 -62
  470. package/.next/standalone/scripts/translate-docs/cli.ts +0 -357
  471. package/.next/standalone/scripts/translate-docs/config.ts +0 -248
  472. package/.next/standalone/scripts/translate-docs/mdx-translator.ts +0 -153
  473. package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +0 -107
  474. package/.next/standalone/scripts/translate-docs/readme-translator.ts +0 -154
  475. package/.next/standalone/scripts/translate-docs/translator.ts +0 -68
  476. package/.next/standalone/scripts/translate-docs/types.ts +0 -43
  477. package/.next/standalone/src/auth/login.ts +0 -104
  478. package/.next/standalone/src/auth/logout.ts +0 -50
  479. package/.next/standalone/src/auth/token-store.ts +0 -64
  480. package/.next/standalone/src/cli-error.ts +0 -18
  481. package/.next/standalone/src/hooks/builtin-policies.ts +0 -1615
  482. package/.next/standalone/src/hooks/custom-hooks-loader.ts +0 -205
  483. package/.next/standalone/src/hooks/custom-hooks-registry.ts +0 -30
  484. package/.next/standalone/src/hooks/handler.ts +0 -222
  485. package/.next/standalone/src/hooks/hook-activity-store.ts +0 -349
  486. package/.next/standalone/src/hooks/hook-logger.ts +0 -133
  487. package/.next/standalone/src/hooks/hook-telemetry.ts +0 -43
  488. package/.next/standalone/src/hooks/hooks-config.ts +0 -166
  489. package/.next/standalone/src/hooks/install-prompt.ts +0 -357
  490. package/.next/standalone/src/hooks/llm-client.ts +0 -90
  491. package/.next/standalone/src/hooks/loader-utils.ts +0 -178
  492. package/.next/standalone/src/hooks/manager.ts +0 -692
  493. package/.next/standalone/src/hooks/policy-evaluator.ts +0 -224
  494. package/.next/standalone/src/hooks/policy-helpers.ts +0 -16
  495. package/.next/standalone/src/hooks/policy-registry.ts +0 -90
  496. package/.next/standalone/src/hooks/policy-types.ts +0 -77
  497. package/.next/standalone/src/hooks/types.ts +0 -63
  498. package/.next/standalone/src/index.ts +0 -19
  499. package/.next/standalone/src/posthog-key.ts +0 -5
  500. package/.next/standalone/src/relay/daemon.ts +0 -362
  501. package/.next/standalone/src/relay/pid.ts +0 -76
  502. package/.next/standalone/src/relay/queue.ts +0 -225
  503. package/.next/standalone/tailwind.config.ts +0 -11
  504. package/.next/standalone/tsconfig.json +0 -42
  505. package/.next/standalone/vitest.config.e2e.mts +0 -24
  506. package/.next/standalone/vitest.config.mts +0 -23
  507. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_buildManifest.js +0 -0
  508. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_clientMiddlewareManifest.js +0 -0
  509. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_ssgManifest.js +0 -0
@@ -1,260 +0,0 @@
1
- ---
2
- title: Test Etme
3
- description: "Birim testleri, uçtan uca testleri ve test yardımcıları"
4
- icon: flask-vial
5
- ---
6
-
7
- failproofai iki test paketi içerir: **birim testleri** (hızlı, simüle edilmiş) ve **uçtan uca testleri** (gerçek alt işlem çağırmaları).
8
-
9
- ---
10
-
11
- ## Testleri çalıştırma
12
-
13
- ```bash
14
- # Tüm birim testlerini bir kez çalıştır
15
- bun run test:run
16
-
17
- # Birim testlerini izleme modunda çalıştır
18
- bun run test
19
-
20
- # E2E testlerini çalıştır (setup gerektirir - aşağıya bakın)
21
- bun run test:e2e
22
-
23
- # Derlemeden tip kontrolü yap
24
- bunx tsc --noEmit
25
-
26
- # Lint
27
- bun run lint
28
- ```
29
-
30
- ---
31
-
32
- ## Birim testleri
33
-
34
- Birim testleri `__tests__/` içinde bulunur ve [Vitest](https://vitest.dev) ile `happy-dom` kullanır.
35
-
36
- ```text
37
- __tests__/
38
- hooks/
39
- builtin-policies.test.ts # Her yerleşik ilke için ilke mantığı
40
- hooks-config.test.ts # Yapılandırma yükleme ve kapsam birleştirme
41
- policy-evaluator.test.ts # Parametre enjeksiyonu ve değerlendirme sırası
42
- custom-hooks-registry.test.ts # globalThis kayıt defteri ekleme/alma/temizleme
43
- custom-hooks-loader.test.ts # ESM yükleyici, geçişli içeri aktarmalar, hata işleme
44
- manager.test.ts # kurulum/kaldırma/listeleme işlemleri
45
- components/
46
- sessions-list.test.tsx # Oturum listesi bileşeni
47
- project-list.test.tsx # Proje listesi bileşeni
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
- ### İlke birim testi yazma
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("sudo komutlarını reddeder", () => {
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("sudo olmayan komutlara izin verir", () => {
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("allowPatterns içindeki desenlere izin verir", () => {
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
- ## Uçtan uca testleri
112
-
113
- E2E testleri gerçek `failproofai` ikilisini alt işlem olarak çağırır, JSON yükünü stdin'e aktarır ve stdout çıkışı ile çıkış kodu üzerinde doğrulamalar yapar. Bu, Claude Code'un kullandığı tam entegrasyon yolunu test eder.
114
-
115
- ### Setup
116
-
117
- E2E testleri doğrudan depo kaynağından ikiliyi çalıştırır. İlk çalıştırmadan önce, özel kanca dosyalarının `'failproofai'`'den içeri aktarırken kullanacağı CJS paketini oluşturun:
118
-
119
- ```bash
120
- bun build src/index.ts --outdir dist --target node --format cjs
121
- ```
122
-
123
- Ardından testleri çalıştırın:
124
-
125
- ```bash
126
- bun run test:e2e
127
- ```
128
-
129
- Genel kanca API'sini değiştirdiğinizde `dist/` öğesini yeniden oluşturun (`src/hooks/custom-hooks-registry.ts`, `src/hooks/policy-helpers.ts` veya `src/hooks/policy-types.ts`).
130
-
131
- ### E2E test yapısı
132
-
133
- ```text
134
- __tests__/e2e/
135
- helpers/
136
- hook-runner.ts # İkiliyi oluştur, yük JSON'unu aktar, çıkış kodu + stdout + stderr'ı yakala
137
- fixture-env.ts # Test başına izole edilen geçici dizinler yapılandırma dosyalarıyla
138
- payloads.ts # Her olay türü için Claude'a uygun yük fabrikaları
139
- hooks/
140
- builtin-policies.e2e.test.ts # Her yerleşik ilke gerçek alt işlemle
141
- custom-hooks.e2e.test.ts # Özel kanca yükleme ve değerlendirmesi
142
- config-scopes.e2e.test.ts # Proje/yerel/genel arasında yapılandırma birleştirme
143
- policy-params.e2e.test.ts # Her parametreli ilke için parametre enjeksiyonu
144
- ```
145
-
146
- ### E2E yardımcılarını kullanma
147
-
148
- **`FixtureEnv`** - test başına izole ortam:
149
-
150
- ```typescript
151
- import { createFixtureEnv } from "../helpers/fixture-env";
152
-
153
- const env = createFixtureEnv();
154
- // env.cwd - geçici dizin; .failproofai/policies-config.json'ı almak için payload.cwd olarak geçir
155
- // env.home - izole ev dizini; gerçek ~/.failproofai sızıntıya uğramaz
156
-
157
- env.writeConfig({
158
- enabledPolicies: ["block-sudo"],
159
- policyParams: {
160
- "block-sudo": { allowPatterns: ["sudo systemctl status"] },
161
- },
162
- });
163
- ```
164
-
165
- `createFixtureEnv()` `afterEach` temizlemesini otomatik olarak kaydeder.
166
-
167
- **`runHook`** - ikiliyi çağır:
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`** - hazır yük fabrikaları:
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 testi yazma
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("rm -rf'yi reddeder", 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("özyinelemeli olmayan rm'ye izin verir", 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(""); // izin ver → boş stdout
230
- });
231
- });
232
- ```
233
-
234
- ### E2E yanıt şekilleri
235
-
236
- | Karar | Çıkış kodu | stdout |
237
- |----------|-----------|--------|
238
- | `PreToolUse` reddet | `0` | `{"hookSpecificOutput":{"permissionDecision":"deny","permissionDecisionReason":"..."}}` |
239
- | `PostToolUse` reddet | `0` | `{"hookSpecificOutput":{"additionalContext":"Blocked ... because: ..."}}` |
240
- | Talimati (Stop olmayan) | `0` | `{"hookSpecificOutput":{"additionalContext":"Instruction from failproofai: ..."}}` |
241
- | Stop talimatı | `2` | boş stdout; neden stderr'de |
242
- | İzin ver | `0` | boş dize |
243
-
244
- ### Vitest yapılandırması
245
-
246
- E2E testleri `vitest.config.e2e.mts` kullanır:
247
-
248
- - `environment: "node"` - tarayıcı globalleri gerekli değil
249
- - `pool: "forks"` - gerçek işlem izolasyonu (testler alt işlemler oluşturur)
250
- - `testTimeout: 20_000` - test başına 20 saniye (ikili başlatma + kanca değerlendirmesi)
251
-
252
- `forks` havuzu önemlidir: iş parçacığı tabanlı işçiler `globalThis` paylaşırlar ve bu, alt işlem oluşturan testleri etkileyebilir. İşlem tabanlı çatallama bunu önler.
253
-
254
- ---
255
-
256
- ## CI
257
-
258
- Birleştirmeden önce tam CI çalıştırması (`bun run lint && bunx tsc --noEmit && bun run test:run && bun run build`) geçmesi gerekir. E2E paketi paralel olarak ayrı bir CI işinde çalışır.
259
-
260
- Tam ön birleştirme kontrol listesi için [Contributing](../CONTRIBUTING.md) bölümüne bakın.
@@ -1,334 +0,0 @@
1
- ---
2
-
3
- ---
4
- title: Kiến trúc
5
- description: "Cách hook handler, config loading, và policy evaluation hoạt động nội bộ"
6
- icon: sitemap
7
- ---
8
-
9
- Tài liệu này giải thích cách failproofai hoạt động nội bộ: cách hook system chặn các tool call của agent, cách configuration được load và merge, cách policies được đánh giá, và cách dashboard giám sát hoạt động của agent.
10
-
11
- ---
12
-
13
- ## Tổng quan
14
-
15
- failproofai có hai subsystem độc lập:
16
-
17
- 1. **Hook handler** - Một subprocess CLI nhanh mà Claude Code gọi trên mỗi agent tool call. Đánh giá policies và trả về quyết định.
18
- 2. **Agent Monitor (Dashboard)** - Một ứng dụng web Next.js để giám sát các agent session và quản lý policies.
19
-
20
- Cả hai subsystem chia sẻ các file cấu hình trong `~/.failproofai/` và thư mục `.failproofai/` của project, nhưng chúng chạy như các process riêng biệt và chỉ giao tiếp thông qua filesystem.
21
-
22
- ---
23
-
24
- ## Hook handler
25
-
26
- ### Tích hợp với Claude Code
27
-
28
- Khi bạn chạy `failproofai policies --install`, nó sẽ ghi các entry như sau vào `~/.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 sau đó gọi `failproofai --hook PreToolUse` như một subprocess trước mỗi tool call, truyền một JSON payload trên stdin.
50
-
51
- ### Định dạng payload
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
- Đối với `PostToolUse` events, payload cũng chứa `tool_result` với output của tool.
66
-
67
- Handler enforces giới hạn stdin 1 MB. Các payload vượt quá giới hạn này được loại bỏ và tất cả policies implicit cho phép.
68
-
69
- ### Định dạng response
70
-
71
- **Deny (PreToolUse):**
72
- ```json
73
- {
74
- "hookSpecificOutput": {
75
- "permissionDecision": "deny",
76
- "permissionDecisionReason": "Blocked by failproofai: sudo command blocked"
77
- }
78
- }
79
- ```
80
-
81
- **Deny (PostToolUse):**
82
- ```json
83
- {
84
- "hookSpecificOutput": {
85
- "additionalContext": "Blocked by failproofai because: API key detected in output"
86
- }
87
- }
88
- ```
89
-
90
- **Instruct (any event except Stop):**
91
- ```json
92
- {
93
- "hookSpecificOutput": {
94
- "additionalContext": "Instruction from failproofai: Verify tests pass before committing."
95
- }
96
- }
97
- ```
98
-
99
- **Stop event instruct:**
100
- - Exit code: `2`
101
- - Lý do được ghi vào stderr (không phải stdout)
102
-
103
- **Allow:**
104
- - Exit code: `0`
105
- - Stdout trống
106
-
107
- **Allow với message:**
108
-
109
- `allow(message)` cho phép một policy gửi informational context trở lại Claude ngay cả khi operation được phép. Hook handler ghi JSON sau vào **stdout** (không phải config file — đây là handler's response tới Claude Code, giống như deny và instruct responses ở trên):
110
-
111
- ```json
112
- // Written to stdout by the hook handler process
113
- {
114
- "hookSpecificOutput": {
115
- "additionalContext": "All CI checks passed on branch 'feat/my-feature'."
116
- }
117
- }
118
- ```
119
- - Exit code: `0` (operation được phép)
120
- - Khi nhiều policies trả về `allow` với một message, các messages của chúng được join với newlines thành một single `additionalContext` string
121
- - Nếu không có policy nào cung cấp message, stdout trống (giống như trước)
122
-
123
- ### Processing pipeline
124
-
125
- `src/hooks/handler.ts` implements toàn bộ pipeline:
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
- Toàn bộ process chạy dưới 100ms cho các typical payloads mà không có LLM calls.
145
-
146
- ---
147
-
148
- ## Configuration loading
149
-
150
- `src/hooks/hooks-config.ts` implements three-scope config loading.
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
- Merge logic:
159
- - `enabledPolicies` - deduplicated union across all three files
160
- - `policyParams` - per-policy key, first file that defines it wins entirely
161
- - `customPoliciesPath` - first file that defines it wins
162
- - `llm` - first file that defines it wins
163
-
164
- Web dashboard sử dụng `readHooksConfig()` (global only) để đọc và ghi, vì nó không được gọi với project cwd.
165
-
166
- ---
167
-
168
- ## Policy evaluation
169
-
170
- `src/hooks/policy-evaluator.ts` chạy policies theo thứ tự.
171
-
172
- Với mỗi policy:
173
-
174
- 1. Look up policy's `params` schema (nếu nó có).
175
- 2. Đọc `policyParams[policy.name]` từ merged config.
176
- 3. Merge user-provided values over schema defaults để tạo `ctx.params`.
177
- 4. Gọi `policy.fn(ctx)` với resolved context.
178
- 5. Nếu result là `deny`, dừng ngay lập tức và trả về quyết định đó.
179
- 6. Nếu result là `instruct`, accumulate message và tiếp tục.
180
- 7. Nếu result là `allow`, tiếp tục tới policy tiếp theo.
181
-
182
- Sau khi tất cả policies chạy:
183
- - Nếu bất kỳ `deny` nào được trả về, emit deny response.
184
- - Nếu bất kỳ `instruct` returns nào được collected, emit một single instruct response với tất cả messages được join.
185
- - Ngoài ra, emit một allow response (empty stdout, exit 0).
186
-
187
- ---
188
-
189
- ## Builtin policies
190
-
191
- `src/hooks/builtin-policies.ts` định nghĩa tất cả 26 built-in policies như `BuiltinPolicyDefinition` objects:
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
- Các policies chấp nhận `params` khai báo một `PolicyParamsSchema` với types và defaults cho mỗi parameter. Policy evaluator injects resolved values vào `ctx.params` trước khi gọi `fn`. Policy functions đọc `ctx.params` mà không cần null-guarding vì defaults luôn được applied trước.
210
-
211
- Pattern matching bên trong policies sử dụng parsed command tokens (argv), không phải raw string matching. Điều này ngăn chặn bypass thông qua shell operator injection (ví dụ: một pattern cho `sudo systemctl status *` không thể bypass bằng cách append `; rm -rf /` vào command).
212
-
213
- ---
214
-
215
- ## Custom policies
216
-
217
- `src/hooks/custom-hooks-registry.ts` implements một `globalThis`-backed registry:
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` load user's policy file:
231
-
232
- 1. Đọc `customPoliciesPath` từ config; skip nếu absent.
233
- 2. Resolve tới absolute path; check file exists.
234
- 3. Rewrite tất cả `from "failproofai"` imports tới actual dist path để `customPolicies` resolve tới cùng `globalThis` registry.
235
- 4. Recursively rewrite transitive local imports để ensure ESM compatibility.
236
- 5. Write temporary `.mjs` files và `import()` entry file.
237
- 6. Gọi `getCustomHooks()` để retrieve registered hooks.
238
- 7. Clean up tất cả temp files trong một `finally` block.
239
-
240
- Trên bất kỳ error nào (file not found, syntax error, import failure), error được logged tới `~/.failproofai/hook.log` và loader trả về một empty array. Built-in policies không bị ảnh hưởng.
241
-
242
- Custom policies được đánh giá sau tất cả built-in policies. Một custom policy `deny` vẫn short-circuits further custom policies (nhưng tất cả built-ins đã chạy rồi ở điểm đó).
243
-
244
- ---
245
-
246
- ## Activity logging
247
-
248
- Sau mỗi hook event, handler appends một JSONL line tới `~/.failproofai/hook-activity.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
- Một line cho mỗi policy mà có một non-allow decision. Allow decisions không được logged (để giữ file nhỏ).
264
-
265
- ---
266
-
267
- ## Dashboard architecture
268
-
269
- Dashboard là một **Next.js 16** application sử dụng App Router với React Server Components và 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
- **Data flow:**
290
-
291
- - Page components gọi `lib/projects.ts` và `lib/log-entries.ts` để đọc project/session data trực tiếp từ filesystem (không API layer cho reads).
292
- - Policies page sử dụng Server Actions cho tất cả mutations (toggle, params update, install/remove).
293
- - Session viewer parse Claude's JSONL transcript format và render một timeline của messages và tool calls.
294
-
295
- **Key design decisions:**
296
-
297
- - Không database - tất cả persistent state nằm trong plain files (`~/.failproofai/`, `~/.claude/projects/`).
298
- - Server Actions cho mutations - không cần REST API cho CRUD operations.
299
- - React Server Components cho read pages - faster initial load, không client bundle cho data fetching.
300
- - Client components chỉ ở nơi cần interactivity (policy toggles, activity search, log viewer).
301
-
302
- ---
303
-
304
- ## File layout
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
- ```