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,301 +0,0 @@
1
- ```
2
- ______ _ __ ____ ___ ____
3
- / ____/___ _(_) /___ _________ ____ / __/ / | / _/
4
- / /_ / __ `/ / / __ \/ ___/ __ \/ __ \/ /_ / /| | / /
5
- / __/ / /_/ / / / /_/ / / / /_/ / /_/ / __/ / ___ |_/ /
6
- /_/ \__,_/_/_/ .___/_/ \____/\____/_/ /_/ |_/___/
7
- /_/
8
- ```
9
-
10
- # Failproof AI
11
-
12
- [![Docs](https://img.shields.io/badge/docs-befailproof.ai-002CA7?style=flat-square)](https://befailproof.ai)
13
- [![npm](https://img.shields.io/npm/v/failproofai?style=flat-square&color=CB3837)](https://www.npmjs.com/package/failproofai)
14
- [![License](https://img.shields.io/badge/license-MIT%20%2B%20Commons%20Clause-blue?style=flat-square)](LICENSE)
15
- [![CI](https://img.shields.io/github/actions/workflow/status/exospherehost/failproofai/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/exospherehost/failproofai/actions)
16
- [![Slack](https://img.shields.io/badge/Slack-join%20us-4A154B?style=flat-square&logo=slack)](https://join.slack.com/t/failproofai/shared_invite/zt-3v63b7k5e-O3NBHmj8X6n9gZSGDx6ggQ)
17
-
18
- **Translations**: [简体中文](docs/i18n/README.zh.md) | [日本語](docs/i18n/README.ja.md) | [한국어](docs/i18n/README.ko.md) | [Español](docs/i18n/README.es.md) | [Português](docs/i18n/README.pt-br.md) | [Deutsch](docs/i18n/README.de.md) | [Français](docs/i18n/README.fr.md) | [Русский](docs/i18n/README.ru.md) | [हिन्दी](docs/i18n/README.hi.md) | [Türkçe](docs/i18n/README.tr.md) | [Tiếng Việt](docs/i18n/README.vi.md) | [Italiano](docs/i18n/README.it.md) | [العربية](docs/i18n/README.ar.md) | [עברית](docs/i18n/README.he.md)
19
-
20
- The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously - for **Claude Code** & the **Agents SDK**.
21
-
22
- - **30 Built-in Policies** - Catch common agent failure modes out of the box. Block destructive commands, prevent secret leakage, keep agents inside project boundaries, detect loops, and more.
23
- - **Custom Policies** - Write your own reliability rules in JavaScript. Use the `allow`/`deny`/`instruct` API to enforce conventions, prevent drift, gate operations, or integrate with external systems.
24
- - **Easy Configuration** - Tune any policy without writing code. Set allowlists, protected branches, thresholds per-project or globally. Three-scope config merges automatically.
25
- - **Agent Monitor** - See what your agents did while you were away. Browse sessions, inspect every tool call, and review exactly where policies fired.
26
-
27
- Everything runs locally - no data leaves your machine.
28
-
29
- ---
30
-
31
- ## Requirements
32
-
33
- - Node.js >= 20.9.0
34
- - Bun >= 1.3.0 (optional - only needed for development / building from source)
35
-
36
- ---
37
-
38
- ## Install
39
-
40
- ```bash
41
- npm install -g failproofai
42
- # or
43
- bun add -g failproofai
44
- ```
45
-
46
- ---
47
-
48
- ## Quick start
49
-
50
- ### 1. Enable policies globally
51
-
52
- ```bash
53
- failproofai policies --install
54
- ```
55
-
56
- Writes hook entries into `~/.claude/settings.json`. Claude Code will now invoke failproofai before and after each tool call.
57
-
58
- ### 2. Launch the dashboard
59
-
60
- ```bash
61
- failproofai
62
- ```
63
-
64
- Opens `http://localhost:8020` - browse sessions, inspect logs, manage policies.
65
-
66
- ### 3. Check what's active
67
-
68
- ```bash
69
- failproofai policies
70
- ```
71
-
72
- ---
73
-
74
- ## Policy installation
75
-
76
- ### Scopes
77
-
78
- | Scope | Command | Where it writes |
79
- |-------|---------|-----------------|
80
- | Global (default) | `failproofai policies --install` | `~/.claude/settings.json` |
81
- | Project | `failproofai policies --install --scope project` | `.claude/settings.json` |
82
- | Local | `failproofai policies --install --scope local` | `.claude/settings.local.json` |
83
-
84
- ### Install specific policies
85
-
86
- ```bash
87
- failproofai policies --install block-sudo block-rm-rf sanitize-api-keys
88
- ```
89
-
90
- ### Remove policies
91
-
92
- ```bash
93
- failproofai policies --uninstall
94
- # or for a specific scope:
95
- failproofai policies --uninstall --scope project
96
- ```
97
-
98
- ---
99
-
100
- ## Configuration
101
-
102
- Policy configuration lives in `~/.failproofai/policies-config.json` (global) or `.failproofai/policies-config.json` in your project (per-project).
103
-
104
- ```json
105
- {
106
- "enabledPolicies": [
107
- "block-sudo",
108
- "block-rm-rf",
109
- "sanitize-api-keys",
110
- "block-push-master",
111
- "block-env-files",
112
- "block-read-outside-cwd"
113
- ],
114
- "policyParams": {
115
- "block-sudo": {
116
- "allowPatterns": ["sudo systemctl status", "sudo journalctl"],
117
- "hint": "Use apt-get directly without sudo."
118
- },
119
- "block-push-master": {
120
- "protectedBranches": ["main", "release", "prod"],
121
- "hint": "Try creating a fresh branch instead."
122
- },
123
- "sanitize-api-keys": {
124
- "additionalPatterns": [
125
- { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo API key" }
126
- ]
127
- },
128
- "warn-large-file-write": {
129
- "thresholdKb": 512
130
- }
131
- }
132
- }
133
- ```
134
-
135
- **Three config scopes** are merged automatically (project → local → global). See [docs/configuration.mdx](docs/configuration.mdx) for full merge rules.
136
-
137
- ---
138
-
139
- ## Built-in policies
140
-
141
- | Policy | Description | Configurable |
142
- |--------|-------------|:---:|
143
- | `block-sudo` | Prevent agents from running privileged system commands | `allowPatterns` |
144
- | `block-rm-rf` | Prevent accidental recursive file deletion | `allowPaths` |
145
- | `block-curl-pipe-sh` | Prevent agents from piping untrusted scripts to shell | |
146
- | `block-failproofai-commands` | Prevent self-uninstallation | |
147
- | `sanitize-jwt` | Stop JWT tokens from leaking into agent context | |
148
- | `sanitize-api-keys` | Stop API keys from leaking into agent context | `additionalPatterns` |
149
- | `sanitize-connection-strings` | Stop database credentials from leaking into agent context | |
150
- | `sanitize-private-key-content` | Redact PEM private key blocks from output | |
151
- | `sanitize-bearer-tokens` | Redact Authorization Bearer tokens from output | |
152
- | `block-env-files` | Keep agents from reading .env files | |
153
- | `protect-env-vars` | Prevent agents from printing environment variables | |
154
- | `block-read-outside-cwd` | Keep agents inside project boundaries | `allowPaths` |
155
- | `block-secrets-write` | Prevent writes to private key and certificate files | `additionalPatterns` |
156
- | `block-push-master` | Prevent accidental pushes to main/master | `protectedBranches` |
157
- | `block-work-on-main` | Keep agents off protected branches | `protectedBranches` |
158
- | `block-force-push` | Prevent `git push --force` | |
159
- | `warn-git-amend` | Remind agents before amending commits | |
160
- | `warn-git-stash-drop` | Remind agents before dropping stashes | |
161
- | `warn-all-files-staged` | Catch accidental `git add -A` | |
162
- | `warn-destructive-sql` | Catch DROP/DELETE SQL before execution | |
163
- | `warn-schema-alteration` | Catch ALTER TABLE before execution | |
164
- | `warn-large-file-write` | Catch unexpectedly large file writes | `thresholdKb` |
165
- | `warn-package-publish` | Catch accidental `npm publish` | |
166
- | `warn-background-process` | Catch unintended background process launches | |
167
- | `warn-global-package-install` | Catch unintended global package installs | |
168
- | …and more | | |
169
-
170
- Full policy details and parameter reference: [docs/built-in-policies.mdx](docs/built-in-policies.mdx)
171
-
172
- ---
173
-
174
- ## Custom policies
175
-
176
- Write your own policies to keep agents reliable and on-task:
177
-
178
- ```js
179
- import { customPolicies, allow, deny, instruct } from "failproofai";
180
-
181
- customPolicies.add({
182
- name: "no-production-writes",
183
- description: "Block writes to paths containing 'production'",
184
- match: { events: ["PreToolUse"] },
185
- fn: async (ctx) => {
186
- if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
187
- const path = ctx.toolInput?.file_path ?? "";
188
- if (path.includes("production")) return deny("Writes to production paths are blocked");
189
- return allow();
190
- },
191
- });
192
- ```
193
-
194
- Install with:
195
-
196
- ```bash
197
- failproofai policies --install --custom ./my-policies.js
198
- ```
199
-
200
- ### Decision helpers
201
-
202
- | Function | Effect |
203
- |----------|--------|
204
- | `allow()` | Permit the operation |
205
- | `allow(message)` | Permit and send informational context to Claude |
206
- | `deny(message)` | Block the operation; message shown to Claude |
207
- | `instruct(message)` | Add context to Claude's prompt; does not block |
208
-
209
- ### Context object (`ctx`)
210
-
211
- | Field | Type | Description |
212
- |-------|------|-------------|
213
- | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
214
- | `toolName` | `string` | Tool being called (`"Bash"`, `"Write"`, `"Read"`, …) |
215
- | `toolInput` | `object` | Tool's input parameters |
216
- | `payload` | `object` | Full raw event payload |
217
- | `session.cwd` | `string` | Working directory of the Claude Code session |
218
- | `session.sessionId` | `string` | Session identifier |
219
- | `session.transcriptPath` | `string` | Path to the session transcript file |
220
-
221
- Custom hooks support transitive local imports, async/await, and access to `process.env`. Errors are fail-open (logged to `~/.failproofai/hook.log`, built-in policies continue). See [docs/custom-hooks.mdx](docs/custom-hooks.mdx) for the full guide.
222
-
223
- ### Convention-based policies
224
-
225
- Drop `*policies.{js,mjs,ts}` files into `.failproofai/policies/` and they're automatically loaded — no flags or config changes needed. Commit the directory to git and every team member gets the same quality standards automatically.
226
-
227
- ```text
228
- # Project level — committed to git, shared with the team
229
- .failproofai/policies/security-policies.mjs
230
- .failproofai/policies/workflow-policies.mjs
231
-
232
- # User level — personal, applies to all projects
233
- ~/.failproofai/policies/my-policies.mjs
234
- ```
235
-
236
- Both levels load (union). Files are loaded alphabetically within each directory. Prefix with `01-`, `02-`, etc. to control order. As your team discovers new failure modes, add a policy and push — everyone gets the update on their next pull. See [examples/convention-policies/](examples/convention-policies/) for ready-to-use examples.
237
-
238
- ---
239
-
240
- ## Telemetry
241
-
242
- Failproof AI collects anonymous usage telemetry via PostHog to understand feature usage. No session content, file names, tool inputs, or personal information is ever sent.
243
-
244
- Disable it:
245
-
246
- ```bash
247
- FAILPROOFAI_TELEMETRY_DISABLED=1 failproofai
248
- ```
249
-
250
- ---
251
-
252
- ## Documentation
253
-
254
- | Guide | Description |
255
- |-------|-------------|
256
- | [Getting Started](docs/getting-started.mdx) | Installation and first steps |
257
- | [Built-in Policies](docs/built-in-policies.mdx) | All 30 built-in policies with parameters |
258
- | [Custom Policies](docs/custom-policies.mdx) | Write your own policies |
259
- | [Configuration](docs/configuration.mdx) | Config file format and scope merging |
260
- | [Dashboard](docs/dashboard.mdx) | Monitor sessions and review policy activity |
261
- | [Architecture](docs/architecture.mdx) | How the hook system works |
262
- | [Testing](docs/testing.mdx) | Running tests and writing new ones |
263
-
264
- ### Run docs locally
265
-
266
- ```bash
267
- docker build -f Dockerfile.docs -t failproofai-docs .
268
- docker run --rm -p 3000:3000 failproofai-docs
269
- ```
270
-
271
- Opens the Mintlify docs site at `http://localhost:3000`. The container watches for changes if you mount the docs directory:
272
-
273
- ```bash
274
- docker run --rm -p 3000:3000 -v $(pwd)/docs:/app/docs failproofai-docs
275
- ```
276
-
277
- ---
278
-
279
- ## Note for failproofai contributors
280
-
281
- This repo's `.claude/settings.json` uses `bun ./bin/failproofai.mjs --hook <EventType>` instead of the standard `npx -y failproofai` command. This is because running `npx -y failproofai` inside the failproofai project itself creates a self-referencing conflict.
282
-
283
- For all other repos, the recommended approach is `npx -y failproofai`, installed via:
284
-
285
- ```bash
286
- failproofai policies --install --scope project
287
- ```
288
-
289
- ## Contributing
290
-
291
- See [CONTRIBUTING.md](CONTRIBUTING.md).
292
-
293
- ---
294
-
295
- ## License
296
-
297
- See [LICENSE](LICENSE).
298
-
299
- ---
300
-
301
- Built and Maintained by **ExosphereHost: Reliability Research Lab for Your Agents**. We help enterprises and startups improve the reliability of their AI agents through our own agents, software, and expertise. Learn more at [exosphere.host](https://exosphere.host).
@@ -1,352 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * failproofai — main entry point.
4
- *
5
- * Handles:
6
- * --hook <event> Hook event from Claude Code (minimal startup latency)
7
- * --version / -v Print version and exit
8
- * --help / -h Show usage and exit
9
- * policies Manage policies (list / install / uninstall)
10
- * (default) Launch production dashboard
11
- */
12
- import { realpathSync } from "node:fs";
13
- import { dirname, resolve } from "node:path";
14
- import { fileURLToPath } from "node:url";
15
- import { version } from "../package.json";
16
-
17
- // Resolve the real package root early (following any npm bin symlinks) so that
18
- // scripts/launch.ts can locate .next/standalone/server.js correctly regardless
19
- // of how bun resolves import.meta.url for dynamically-imported modules.
20
- if (!process.env.FAILPROOFAI_PACKAGE_ROOT) {
21
- process.env.FAILPROOFAI_PACKAGE_ROOT = resolve(
22
- dirname(realpathSync(fileURLToPath(import.meta.url))),
23
- ".."
24
- );
25
- }
26
-
27
- if (!process.env.FAILPROOFAI_DIST_PATH) {
28
- process.env.FAILPROOFAI_DIST_PATH = resolve(
29
- dirname(realpathSync(fileURLToPath(import.meta.url))),
30
- "..",
31
- "dist"
32
- );
33
- }
34
-
35
- const args = process.argv.slice(2);
36
-
37
- // Normalize 'p' → 'policies' (shorthand alias)
38
- if (args[0] === "p") args[0] = "policies";
39
-
40
- // --hook <event> — called by Claude Code hooks; fast path, outside runCli()
41
- // because it has its own exit code contract with Claude Code.
42
- const hookIdx = args.indexOf("--hook");
43
- if (hookIdx >= 0) {
44
- if (!args[hookIdx + 1]) {
45
- console.error("Error: Missing event type after --hook");
46
- console.error("Usage: failproofai --hook <event> (e.g. PreToolUse, PostToolUse)");
47
- process.exit(1);
48
- }
49
- try {
50
- const { handleHookEvent } = await import("../src/hooks/handler");
51
- const exitCode = await handleHookEvent(args[hookIdx + 1]);
52
- process.exit(exitCode);
53
- } catch (err) {
54
- const msg = err instanceof Error ? err.message : String(err);
55
- console.error(`Unexpected error: ${msg}`);
56
- process.exit(2);
57
- }
58
- }
59
-
60
- /**
61
- * Centralised error handler for all CLI subcommands.
62
- * CliError → clean message, no stack trace, exit exitCode (1 or 2)
63
- * Error → unexpected; shows message only, exits 2
64
- */
65
- async function runCli() {
66
- // --help / -h (only when not inside a subcommand that handles its own --help)
67
- const SUBCOMMANDS = ["policies"];
68
- if ((args.includes("--help") || args.includes("-h")) && !SUBCOMMANDS.includes(args[0])) {
69
- const extraArgs = args.filter((a) => a !== "--help" && a !== "-h");
70
- if (extraArgs.length > 0) {
71
- throw new CliError(`Unexpected argument: ${extraArgs[0]}\nRun \`failproofai --help\` for usage.`);
72
- }
73
- console.log(`
74
- failproofai v${version}
75
-
76
- USAGE
77
- failproofai [command] [options]
78
-
79
- COMMANDS
80
- (no args) Launch the policy dashboard
81
-
82
- policies, p List all available policies and their status
83
- policies --install, -i Enable policies in Claude Code settings
84
- [names...] Specific policy names to enable
85
- --scope user|project|local Config scope to write to (default: user)
86
- --beta Include beta policies
87
- --custom, -c <path> Path to a JS file of custom policies
88
-
89
- policies --uninstall, -u Disable policies or remove hooks
90
- [names...] Specific policy names to disable
91
- --scope user|project|local|all Config scope to remove from (default: user)
92
- --beta Remove only beta policies
93
- --custom, -c Clear the customPoliciesPath from config
94
-
95
- policies --help, -h Show this help for the policies command
96
-
97
- --version, -v Print version and exit
98
- --help, -h Show this help message
99
-
100
- CONVENTION POLICIES
101
- Drop *policies.{js,mjs,ts} files into .failproofai/policies/ for auto-loading.
102
- Works at project level (.failproofai/policies/) and user level (~/.failproofai/policies/).
103
- No --custom flag or config changes needed — just drop files and they're picked up.
104
-
105
- EXAMPLES
106
- failproofai policies
107
- failproofai policies --install
108
- failproofai policies --install block-sudo sanitize-api-keys --scope project
109
- failproofai policies --install --custom ./my-policies.js
110
- failproofai policies -i -c ./my-policies.js
111
- failproofai policies --uninstall block-sudo
112
- failproofai policies --uninstall --custom
113
-
114
- LINKS
115
- ⭐ Star us: https://github.com/exospherehost/failproofai
116
- 📖 Docs: https://befailproof.ai
117
- `.trimStart());
118
- process.exit(0);
119
- }
120
-
121
- // --version / -v
122
- if ((args.includes("--version") || args.includes("-v")) && !SUBCOMMANDS.includes(args[0])) {
123
- const extraArgs = args.filter((a) => a !== "--version" && a !== "-v");
124
- if (extraArgs.length > 0) {
125
- throw new CliError(`Unexpected argument: ${extraArgs[0]}\nRun \`failproofai --help\` for usage.`);
126
- }
127
- console.log(version);
128
- process.exit(0);
129
- }
130
-
131
- // policies [--install|-i|--uninstall|-u|--help|-h] [names...] [--scope] [--beta] [--custom|-c <path>]
132
- if (args[0] === "policies") {
133
- const subArgs = args.slice(1);
134
-
135
- const isInstall = subArgs.includes("--install") || subArgs.includes("-i");
136
- const isUninstall = subArgs.includes("--uninstall") || subArgs.includes("-u");
137
- const isHelp = subArgs.includes("--help") || subArgs.includes("-h");
138
-
139
- if (isHelp) {
140
- console.log(`
141
- failproofai policies — manage Failproof AI policies
142
-
143
- USAGE
144
- failproofai policies List all policies and their status
145
- failproofai policies --install, -i Enable policies
146
- failproofai policies --uninstall, -u Disable policies or remove hooks
147
-
148
- OPTIONS (install)
149
- [names...] Specific policy names to enable (omit for interactive)
150
- --scope user|project|local Config scope to write to (default: user)
151
- --beta Include beta policies
152
- --custom, -c <path> Path to a JS file of custom policies
153
- (skips interactive prompt; validates file first)
154
-
155
- OPTIONS (uninstall)
156
- [names...] Specific policy names to disable (omit to remove hooks)
157
- --scope user|project|local|all Config scope to remove from (default: user)
158
- --beta Remove only beta policies
159
- --custom, -c Clear the customPoliciesPath from config
160
-
161
- EXAMPLES
162
- failproofai policies
163
- failproofai policies --install
164
- failproofai policies --install block-sudo sanitize-api-keys
165
- failproofai policies --install --custom ./my-policies.js
166
- failproofai policies -i -c ./my-policies.js
167
- failproofai policies --uninstall block-sudo
168
- failproofai policies -u
169
- failproofai policies --uninstall --custom
170
- `.trimStart());
171
- process.exit(0);
172
- }
173
-
174
- if (isInstall) {
175
- const { installHooks } = await import("../src/hooks/manager");
176
-
177
- const scopeIdx = subArgs.indexOf("--scope");
178
- const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
179
- if (scopeIdx >= 0 && (!scope || scope.startsWith("-"))) {
180
- throw new CliError("Missing value for --scope. Valid values: user, project, local");
181
- }
182
- if (scopeIdx >= 0 && !["user", "project", "local"].includes(scope)) {
183
- throw new CliError(`Invalid scope: ${scope}. Valid values: user, project, local`);
184
- }
185
-
186
- const customIdx = subArgs.includes("--custom") ? subArgs.indexOf("--custom")
187
- : subArgs.includes("-c") ? subArgs.indexOf("-c")
188
- : -1;
189
- const customPoliciesPath = customIdx >= 0 ? subArgs[customIdx + 1] : undefined;
190
- if (customIdx >= 0 && (!customPoliciesPath || customPoliciesPath.startsWith("-"))) {
191
- throw new CliError("Missing path after --custom/-c\nUsage: --custom <path> (e.g. --custom ./my-policies.js)");
192
- }
193
-
194
- const includeBeta = subArgs.includes("--beta");
195
-
196
- // Collect positional policy names — args that don't start with - and aren't
197
- // values consumed by --scope or --custom/-c (tracked by index, not value,
198
- // so a policy named "user" isn't incorrectly dropped by the default scope).
199
- const consumedIdxs = new Set();
200
- if (scopeIdx >= 0) consumedIdxs.add(scopeIdx + 1);
201
- if (customIdx >= 0) consumedIdxs.add(customIdx + 1);
202
- const flags = new Set(["--install", "-i", "--scope", "--beta", "--custom", "-c"]);
203
- const unknownInstallFlag = subArgs.find((a) => a.startsWith("-") && !flags.has(a));
204
- if (unknownInstallFlag) {
205
- throw new CliError(`Unknown flag: ${unknownInstallFlag}\nRun \`failproofai policies --help\` for usage.`);
206
- }
207
-
208
- const explicitPolicyNames = subArgs.filter(
209
- (a, idx) => !a.startsWith("-") && !consumedIdxs.has(idx)
210
- );
211
-
212
- // When --custom/-c is present but no explicit policy names, pass [] so
213
- // installHooks uses the existing enabled policies and skips the interactive
214
- // prompt — validation of the custom file happens inside installHooks.
215
- const policyNames =
216
- explicitPolicyNames.length > 0 ? explicitPolicyNames
217
- : customPoliciesPath !== undefined ? []
218
- : undefined;
219
-
220
- await installHooks(
221
- policyNames,
222
- scope,
223
- undefined,
224
- includeBeta,
225
- undefined,
226
- customPoliciesPath,
227
- );
228
- process.exit(0);
229
- }
230
-
231
- if (isUninstall) {
232
- const { removeHooks } = await import("../src/hooks/manager");
233
-
234
- const scopeIdx = subArgs.indexOf("--scope");
235
- const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
236
- if (scopeIdx >= 0 && (!scope || scope.startsWith("-"))) {
237
- throw new CliError("Missing value for --scope. Valid values: user, project, local, all");
238
- }
239
- if (scopeIdx >= 0 && !["user", "project", "local", "all"].includes(scope)) {
240
- throw new CliError(`Invalid scope: ${scope}. Valid values: user, project, local, all`);
241
- }
242
-
243
- const betaOnly = subArgs.includes("--beta");
244
- const removeCustomHooks = subArgs.includes("--custom") || subArgs.includes("-c");
245
-
246
- const consumedIdxs = new Set();
247
- if (scopeIdx >= 0) consumedIdxs.add(scopeIdx + 1);
248
- const flags = new Set(["--uninstall", "-u", "--scope", "--beta", "--custom", "-c"]);
249
- const unknownUninstallFlag = subArgs.find((a) => a.startsWith("-") && !flags.has(a));
250
- if (unknownUninstallFlag) {
251
- throw new CliError(`Unknown flag: ${unknownUninstallFlag}\nRun \`failproofai policies --help\` for usage.`);
252
- }
253
-
254
- const policyNames = subArgs.filter(
255
- (a, idx) => !a.startsWith("-") && !consumedIdxs.has(idx)
256
- );
257
-
258
- await removeHooks(
259
- policyNames.length > 0 ? policyNames : undefined,
260
- scope,
261
- undefined,
262
- { betaOnly, removeCustomHooks },
263
- );
264
- process.exit(0);
265
- }
266
-
267
- // Default: list policies
268
- // Accept --list as a no-op alias (common intuition), reject all other unknown flags
269
- // and unexpected positional args (e.g. "hi").
270
- const knownListFlags = new Set(["--install", "-i", "--uninstall", "-u", "--help", "-h", "--list"]);
271
- const unknownListArg = subArgs.find((a) => a.startsWith("-") && !knownListFlags.has(a));
272
- if (unknownListArg) {
273
- throw new CliError(
274
- `Unknown flag: ${unknownListArg}\n` +
275
- `Run \`failproofai policies --help\` for usage.`
276
- );
277
- }
278
- const positionalArgs = subArgs.filter((a) => !a.startsWith("-"));
279
- if (positionalArgs.length > 0) {
280
- throw new CliError(
281
- `Unexpected argument: ${positionalArgs[0]}\n` +
282
- `Run \`failproofai policies --help\` for usage.`
283
- );
284
- }
285
-
286
- const { listHooks } = await import("../src/hooks/manager");
287
- await listHooks();
288
- process.exit(0);
289
- }
290
-
291
- // Unknown flag guard — must appear after all known-flag branches
292
- const knownFlags = ["--version", "-v", "--help", "-h", "--hook"];
293
- const unknownFlag = args.find(a => a.startsWith("-") && !knownFlags.includes(a));
294
-
295
- if (unknownFlag) {
296
- function levenshtein(a, b) {
297
- const m = a.length, n = b.length;
298
- const dp = Array.from({ length: m + 1 }, (_, i) =>
299
- Array.from({ length: n + 1 }, (_, j) => (i === 0 ? j : j === 0 ? i : 0))
300
- );
301
- for (let i = 1; i <= m; i++)
302
- for (let j = 1; j <= n; j++)
303
- dp[i][j] = a[i - 1] === b[j - 1]
304
- ? dp[i - 1][j - 1]
305
- : 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
306
- return dp[m][n];
307
- }
308
-
309
- const primary = ["--version", "--help", "--hook", "policies"];
310
- const closest = primary.reduce((best, flag) => {
311
- const dist = levenshtein(unknownFlag, flag);
312
- return dist < best.dist ? { flag, dist } : best;
313
- }, { flag: primary[0], dist: Infinity });
314
-
315
- throw new CliError(
316
- `Unknown flag: ${unknownFlag}\n` +
317
- `Did you mean: ${closest.flag}?\n` +
318
- `Run \`failproofai --help\` for usage details.`
319
- );
320
- }
321
-
322
- // Unknown subcommand guard (non-flag args that aren't "policies")
323
- const unknownSubcommand = args.find(a => !a.startsWith("-") && a !== "policies");
324
- if (unknownSubcommand) {
325
- throw new CliError(
326
- `Unknown command: ${unknownSubcommand}\n` +
327
- `Did you mean: failproofai policies?\n` +
328
- `Run \`failproofai --help\` for usage details.`
329
- );
330
- }
331
-
332
- // Dashboard launch — always production mode
333
- const { launch } = await import("../scripts/launch");
334
- launch("start");
335
- }
336
-
337
- // ── Import CliError for use in the guard above ────────────────────────────────
338
- const { CliError } = await import("../src/cli-error");
339
-
340
- // ── Run ───────────────────────────────────────────────────────────────────────
341
- try {
342
- await runCli();
343
- } catch (err) {
344
- if (err instanceof CliError) {
345
- console.error(`Error: ${err.message}`);
346
- process.exit(err.exitCode);
347
- }
348
- // Unexpected internal error — show message only, no stack trace
349
- const msg = err instanceof Error ? err.message : String(err);
350
- console.error(`Unexpected error: ${msg}`);
351
- process.exit(2);
352
- }