failproofai 0.0.6-beta.3 → 0.0.6-beta.5

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]__096k.db._.js → [root-of-the-server]__0u49i20._.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]__0kyh86x._.js → [root-of-the-server]__0xezw2w._.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/middleware-build-manifest.js +3 -3
  65. package/.next/standalone/.next/server/pages/404.html +2 -2
  66. package/.next/standalone/.next/server/pages/500.html +1 -1
  67. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  69. package/.next/standalone/.next/static/chunks/03xexm0jftw.x.js +6 -0
  70. package/.next/standalone/.next/static/chunks/{0-dm_9a6nsc2l.js → 0_-7qmtiagi-~.js} +1 -1
  71. package/.next/standalone/.next/static/chunks/{0l-mu4okl-cj1.js → 0af6vx3nh6v77.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/{051m32nx~n5yr.js → 0hrob6m-1.n1d.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
  74. package/.next/standalone/.next/static/chunks/{156zca6aewyr-.js → 0ms9sfkvw5h5i.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{01pmw1-asbek~.js → 0on5naeqa0w.x.js} +2 -2
  76. package/.next/standalone/.next/static/chunks/{0mazj-p-~2kc6.js → 0q~7ymasjp~n7.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0a-yctdwn368y.js → 11vga8q3t~527.js} +1 -1
  78. package/.next/standalone/next.config.ts +6 -0
  79. package/.next/standalone/package.json +2 -2
  80. package/.next/standalone/server.js +1 -1
  81. package/dist/cli.mjs +90 -2
  82. package/package.json +2 -2
  83. package/scripts/prune-standalone.mjs +128 -0
  84. package/src/hooks/builtin-policies.ts +117 -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 → Q-y1SELeezrTyQx0E2uqg}/_buildManifest.js +0 -0
  508. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → Q-y1SELeezrTyQx0E2uqg}/_clientMiddlewareManifest.js +0 -0
  509. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → Q-y1SELeezrTyQx0E2uqg}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.3",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\"",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",null),a.s(["getTelemetryConfig",0,m],36359)},26035,a=>{"use strict";var b=a.i(36359);a.s([],19459),a.i(19459),a.s(["00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",()=>b.getTelemetryConfig],26035)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
1
+ module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.5",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",null),a.s(["getTelemetryConfig",0,m],36359)},26035,a=>{"use strict";var b=a.i(36359);a.s([],19459),a.i(19459),a.s(["00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",()=>b.getTelemetryConfig],26035)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__0h..k-e._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.3",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\"",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",null),a.s(["getTelemetryConfig",0,m],36359)},24868,(a,b,c)=>{b.exports=a.x("fs/promises",()=>require("fs/promises"))},1457,(a,b,c)=>{b.exports=a.x("node:readline",()=>require("node:readline"))},7292,a=>{"use strict";var b=a.i(37936),c=a.i(2157),d=a.i(50227),e=a.i(60526);let f=(0,d.join)((0,e.homedir)(),".failproofai","cache","hook-activity"),g="current.jsonl";function h(){(0,c.existsSync)(f)||(0,c.mkdirSync)(f,{recursive:!0})}function i(){let a=function(){try{return JSON.parse((0,c.readFileSync)((0,d.join)(f,"stats.json"),"utf-8"))}catch{return{totalEvents:0,denyCount:0,policyMap:{}}}}(),b=null,e=0;for(let[c,d]of Object.entries(a.policyMap))d>e&&(b=c,e=d);return{totalEvents:a.totalEvents,denyCount:a.denyCount,topPolicy:b,topPolicyCount:e}}function j(a){let b=function(a){try{return(0,c.readFileSync)(a,"utf-8")}catch{return""}}(a);if(!b.trim())return[];let d=[];for(let a of b.trim().split("\n"))try{d.push(JSON.parse(a))}catch{}return d}function k(){try{return(0,c.readdirSync)(f).filter(a=>a.startsWith("page-")&&a.endsWith(".jsonl")).sort((a,b)=>{let c=a.slice(5,-6).split("-"),d=b.slice(5,-6).split("-"),e=parseInt(c[0],10),f=parseInt(d[0],10);if(e!==f)return f-e;let g=c.length>1?parseInt(c[1],10):0;return(d.length>1?parseInt(d[1],10):0)-g})}catch{return[]}}async function l(a){let b;return b=function(a){if(h(),a<1)return[];if(1===a)return j((0,d.join)(f,g)).reverse();let b=k(),c=a-2;return c>=b.length?[]:j((0,d.join)(f,b[c])).reverse()}(a),h(),{entries:b,totalPages:1+k().length,page:a,stats:i()}}async function m(a,b){let c,e,l;return e=Math.max(1,Math.ceil((c=(function(){h();let a=j((0,d.join)(f,g)).reverse(),b=k(),c=[];for(let a of b){let b=j((0,d.join)(f,a));c.push(...b.reverse())}return[...a,...c]})().filter(b=>(!a.decision||b.decision===a.decision)&&(!a.eventType||b.eventType===a.eventType)&&(!a.policyName||!!b.policyName&&!!b.policyName.toLowerCase().includes(a.policyName.toLowerCase()))&&(!a.sessionId||!!b.sessionId&&!!b.sessionId.toLowerCase().includes(a.sessionId.toLowerCase())))).length/25)),l=(b-1)*25,{entries:c.slice(l,l+25),totalPages:e,page:b,stats:i()}}(0,a.i(13095).ensureServerEntryExports)([l,m]),(0,b.registerServerReference)(l,"4070a18378631b07d4483d07ef780bcab3ee258a96",null),(0,b.registerServerReference)(m,"6070579009a9fc8bc30503a0e3f1e8158350f338ea",null),a.s(["getHookActivityAction",0,l,"searchHookActivityAction",0,m],7292)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_async_hooks_0v0ln8c._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
1
+ module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.5",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",null),a.s(["getTelemetryConfig",0,m],36359)},24868,(a,b,c)=>{b.exports=a.x("fs/promises",()=>require("fs/promises"))},1457,(a,b,c)=>{b.exports=a.x("node:readline",()=>require("node:readline"))},7292,a=>{"use strict";var b=a.i(37936),c=a.i(2157),d=a.i(50227),e=a.i(60526);let f=(0,d.join)((0,e.homedir)(),".failproofai","cache","hook-activity"),g="current.jsonl";function h(){(0,c.existsSync)(f)||(0,c.mkdirSync)(f,{recursive:!0})}function i(){let a=function(){try{return JSON.parse((0,c.readFileSync)((0,d.join)(f,"stats.json"),"utf-8"))}catch{return{totalEvents:0,denyCount:0,policyMap:{}}}}(),b=null,e=0;for(let[c,d]of Object.entries(a.policyMap))d>e&&(b=c,e=d);return{totalEvents:a.totalEvents,denyCount:a.denyCount,topPolicy:b,topPolicyCount:e}}function j(a){let b=function(a){try{return(0,c.readFileSync)(a,"utf-8")}catch{return""}}(a);if(!b.trim())return[];let d=[];for(let a of b.trim().split("\n"))try{d.push(JSON.parse(a))}catch{}return d}function k(){try{return(0,c.readdirSync)(f).filter(a=>a.startsWith("page-")&&a.endsWith(".jsonl")).sort((a,b)=>{let c=a.slice(5,-6).split("-"),d=b.slice(5,-6).split("-"),e=parseInt(c[0],10),f=parseInt(d[0],10);if(e!==f)return f-e;let g=c.length>1?parseInt(c[1],10):0;return(d.length>1?parseInt(d[1],10):0)-g})}catch{return[]}}async function l(a){let b;return b=function(a){if(h(),a<1)return[];if(1===a)return j((0,d.join)(f,g)).reverse();let b=k(),c=a-2;return c>=b.length?[]:j((0,d.join)(f,b[c])).reverse()}(a),h(),{entries:b,totalPages:1+k().length,page:a,stats:i()}}async function m(a,b){let c,e,l;return e=Math.max(1,Math.ceil((c=(function(){h();let a=j((0,d.join)(f,g)).reverse(),b=k(),c=[];for(let a of b){let b=j((0,d.join)(f,a));c.push(...b.reverse())}return[...a,...c]})().filter(b=>(!a.decision||b.decision===a.decision)&&(!a.eventType||b.eventType===a.eventType)&&(!a.policyName||!!b.policyName&&!!b.policyName.toLowerCase().includes(a.policyName.toLowerCase()))&&(!a.sessionId||!!b.sessionId&&!!b.sessionId.toLowerCase().includes(a.sessionId.toLowerCase())))).length/25)),l=(b-1)*25,{entries:c.slice(l,l+25),totalPages:e,page:b,stats:i()}}(0,a.i(13095).ensureServerEntryExports)([l,m]),(0,b.registerServerReference)(l,"407de97ad7d5eabfab84200aefe9a2b1007ea9ef36",null),(0,b.registerServerReference)(m,"603fba4e4a7082b4b2a473a258bcef9f37d518d8d2",null),a.s(["getHookActivityAction",0,l,"searchHookActivityAction",0,m],7292)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_node_async_hooks_0v0ln8c._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__0okos0k._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},40675,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])},3171,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(40675),e=a.i(66036);a.s(["default",0,function({error:a,reset:f}){return(0,c.useEffect)(()=>{(0,d.getTelemetryConfig)().then(b=>{(0,e.setClientTelemetryConfig)(b),(0,e.captureClientEvent)("client_error",{error_message:a.message,error_name:a.name,error_digest:a.digest,boundary:"global"})}).catch(()=>{})},[a]),(0,b.jsx)("html",{children:(0,b.jsx)("body",{children:(0,b.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,b.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,b.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,b.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:a.message||"An unexpected error occurred."}),(0,b.jsx)("button",{onClick:f,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])}];
1
+ module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},38201,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])},3171,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38201),e=a.i(66036);a.s(["default",0,function({error:a,reset:f}){return(0,c.useEffect)(()=>{(0,d.getTelemetryConfig)().then(b=>{(0,e.setClientTelemetryConfig)(b),(0,e.captureClientEvent)("client_error",{error_message:a.message,error_name:a.name,error_digest:a.digest,boundary:"global"})}).catch(()=>{})},[a]),(0,b.jsx)("html",{children:(0,b.jsx)("body",{children:(0,b.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,b.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,b.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,b.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:a.message||"An unexpected error occurred."}),(0,b.jsx)("button",{onClick:f,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__096k.db._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0u49i20._.js.map
@@ -1,6 +1,6 @@
1
1
  module.exports=[12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},57764,(a,b,c)=>{b.exports=a.x("node:url",()=>require("node:url"))},92509,(a,b,c)=>{b.exports=a.x("url",()=>require("url"))},11369,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157),f=a.i(50227),g=a.i(60526);let h={info:0,warn:1,error:2},i=(0,f.join)((0,g.homedir)(),".failproofai","logs"),j=!1,k="warn",l=!1,m=i;function n(a){return!function(){if(j)return;j=!0;let a=(process.env.FAILPROOFAI_LOG_LEVEL??"").toLowerCase();("info"===a||"warn"===a||"error"===a)&&(k=a);let b=(process.env.FAILPROOFAI_HOOK_LOG_FILE??"").trim();b&&(l=!0,"1"!==b&&"true"!==b&&(m=b))}(),h[a]>=h[k]}function o(a,b){process.stderr.write(`[failproofai:hook] ${a} ${b}
2
2
  `)}function p(a,b){if(l)try{(0,e.existsSync)(m)||(0,e.mkdirSync)(m,{recursive:!0});let c=(0,f.join)(m,"hooks.log");try{if((0,e.statSync)(c).size>=524288){let a=`hooks-${Date.now()}.log`;(0,e.renameSync)(c,(0,f.join)(m,a))}}catch{}let d=new Date().toISOString(),g=`[${d}] ${a} ${b}
3
- `;(0,e.appendFileSync)(c,g,"utf-8")}catch{}}function q(a){n("warn")&&(o("WARN",a),p("WARN",a))}function r(){return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json")}function s(){let a=r();if(!(0,e.existsSync)(a))return{enabledPolicies:[]};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return q(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{enabledPolicies:[]}}}function t(a){let b=r(),c=(0,f.dirname)(b);(0,e.existsSync)(c)||(0,e.mkdirSync)(c,{recursive:!0}),(0,e.writeFileSync)(b,JSON.stringify(a,null,2)+"\n","utf8")}function u(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json");case"project":return(0,f.resolve)(c,".failproofai","policies-config.json");case"local":return(0,f.resolve)(c,".failproofai","policies-config.local.json")}}function v(a,b){let c=u(a,b);if(!(0,e.existsSync)(c))return{enabledPolicies:[]};try{let a=(0,e.readFileSync)(c,"utf8");return JSON.parse(a)}catch(a){return q(`failed to parse config at ${c}: ${a instanceof Error?a.message:String(a)}`),{enabledPolicies:[]}}}function w(a,b,c){let d=u(b,c),g=(0,f.dirname)(d);(0,e.existsSync)(g)||(0,e.mkdirSync)(g,{recursive:!0}),(0,e.writeFileSync)(d,JSON.stringify(a,null,2)+"\n","utf8")}var x=a.i(74533);let y=["user","project","local"],z=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult"],A="__failproofai_hook__";var B=a.i(1457),C=a.i(12714);function D(a){return a?{decision:"allow",reason:a}:{decision:"allow"}}function E(a){return{decision:"deny",reason:a}}function F(a){return{decision:"instruct",reason:a}}function G(a){let b=(0,f.join)((0,g.homedir)(),".claude");return a===b||a.startsWith(b+"/")}function H(a){return/[\\/]\.claude[\\/]settings(?:\.[^/\\]+)?\.json$/.test(a)}function I(a){return a.toolInput?.command??""}function J(a){return a.toolInput?.file_path??""}function K(a){return a.trim().split(/\s+/).map(a=>a.replace(/^['"]|['"]$/g,""))}let L=new Set(["&&","||","|",";"]),M=/[;&<>`$()\\]/,N=/eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/,O=[[/sk-ant-[A-Za-z0-9\-_]{20,}/,"Anthropic API key"],[/sk-proj-[A-Za-z0-9\-_]{20,}/,"OpenAI project API key"],[/sk-[A-Za-z0-9]{20,}/,"OpenAI API key"],[/ghp_[A-Za-z0-9]{36}/,"GitHub personal access token"],[/github_pat_[A-Za-z0-9_]{82}/,"GitHub fine-grained token"],[/AKIA[A-Z0-9]{16}/,"AWS access key ID"],[/sk_live_[A-Za-z0-9]{24,}/,"Stripe live secret key"],[/sk_test_[A-Za-z0-9]{24,}/,"Stripe test secret key"],[/AIza[0-9A-Za-z\-_]{35}/,"Google API key"]],P=/(?:postgresql|postgres|mysql|mongodb(?:\+srv)?|redis|amqps?|smtps?):\/\/[^@\s]+@/,Q=/-----BEGIN (?:[A-Z]+ )?PRIVATE KEY-----/,R=/Authorization:\s*Bearer\s+[A-Za-z0-9\-._~+/]{20,}/i,S=/\b(?:psql|mysql|sqlite3|pgcli|clickhouse-client)\b/,T=/\b(?:DROP\s+(?:TABLE|DATABASE|SCHEMA)|TRUNCATE\b)/i,U=/\bDELETE\s+FROM\b/i,V=/\bWHERE\b/i,W=/\bALTER\s+TABLE\b[\s\S]*\b(?:DROP\s+COLUMN|ADD\s+COLUMN|RENAME\s+(?:COLUMN|TO)|MODIFY\s+COLUMN)\b/i,X=/(?:npm\s+publish|bun\s+publish|pnpm\s+publish|yarn\s+npm\s+publish|twine\s+upload|poetry\s+publish|cargo\s+publish|gem\s+push)\b/,Y=/(?:^|\s|;|&&|\|\|)(?:env|printenv)(?:\s|$|;|&&|\|)/,Z=/echo\s+.*\$\{?[A-Za-z_]/,$=/(?:^|\s|;|&&|\|\|)export\s+\w+/,_=/\$env:[A-Za-z_]/i,aa=/(?:Get-ChildItem|dir|gci|ls)\s+Env:/i,ab=/\[Environment\]::GetEnvironment/i,ac=/echo\s+%[A-Za-z_]/i,ad=/(?:^|[\\/])\.env(?:\.|$)/,ae=/\.env(?:\b|\s|$|\.)/,af=/(?:^|;|&&|\|\|)\s*sudo\s/,ag=/Start-Process\s+.*-Verb\s+RunAs/i,ah=/(?:^|;|&&|\|\|)\s*runas\s/i,ai=/(?:curl|wget)\s.*\|\s*(?:sh|bash|zsh|dash|ksh|csh|tcsh|fish|ash)\b/,aj=/(?:Invoke-WebRequest|iwr|Invoke-RestMethod|irm)\s+.*\|\s*(?:Invoke-Expression|iex)/i,ak=/(?:--force|-f\b)/,al=/\.(?:pem|key)$/,am=/id_rsa/,an=/credentials/,ao=/git\s+(?:commit|merge|rebase|cherry-pick)\b/,ap=/(?:^|;|&&|\|\||\|)\s*failproofai(?:\s|$)/,aq=/(?:npm\s+(?:uninstall|remove|un|r)\s.*failproofai|bun\s+remove\s.*failproofai|yarn\s+global\s+remove\s+failproofai|pnpm\s+(?:remove|uninstall|un)\s.*failproofai)/,ar=/\bgit\s+commit\b.*--amend\b/,as=/\bgit\s+stash\s+(?:drop|clear)\b/,at=/\bgit\s+add\s+(?:-A\b|--all\b|\.(?:\s|$|;|&&|\|\|))/,au=/\bnpm\s+(?:install|i)\b(?=.*(?:\s-g\b|--global\b))/,av=/\byarn\s+global\s+add\b/,aw=/\bpnpm\s+(?:add|install|i)\b(?=.*(?:\s-g\b|--global\b))/,ax=/\bbun\s+(?:install|add)\b(?=.*(?:\s-g\b|--global\b))/,ay=/\bcargo\s+install\b/,az=/\bpip(?:3)?\s+install\b(?=.*(?:--user\b|--break-system-packages\b))/,aA={pip:[/\bpip\b/,/\bpip3\b/,/\bpython3?\s+-m\s+pip\b/],npm:[/\bnpm\b/,/\bnpx\b/],yarn:[/\byarn\b/],pnpm:[/\bpnpm\b/,/\bpnpx\b/],bun:[/\bbun\b/,/\bbunx\b/],uv:[/\buv\b/],poetry:[/\bpoetry\b/],pipenv:[/\bpipenv\b/],conda:[/\bconda\b/],cargo:[/\bcargo\b/]},aB=/\bnohup\s+\S/,aC=/\bscreen\s+-[A-Za-z]*d[A-Za-z]*\b/,aD=/\btmux\s+(?:new-session|new)\b[^|&;]*-d\b/,aE=/\bdisown\b/,aF=/(?<![&|])\s?&\s*(?:$|#|;)/,aG=new Map;function aH(a){try{let b=aG.get(a);return void 0===b&&(b=(0,x.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim(),aG.set(a,b)),b||null}catch{return null}}function aI(a){return a.split(/&&|\|\||[|;\n]/).map(a=>a.trim()).filter(a=>/^git\s+push\s/.test(a)).map(a=>a.replace(/^git\s+push\s+/,""))}function aJ(a,b){if(0===b.length)return!1;let c=a.split(/&&|\|\||[|;\n]/).map(a=>a.trim()).filter(a=>/\brm\b/.test(a));if(0===c.length)return!1;for(let a of c){let c=K(a),d=c.findIndex(a=>"rm"===a);if(d<0)continue;let e=c.slice(d+1).filter(a=>/^-[^-]/.test(a)),f=c.slice(d+1).filter(a=>/^--/.test(a));if(/r/i.test(e.join(""))||f.some(a=>/^--recursive$/i.test(a)))for(let e of c.slice(d+1).filter(a=>!a.startsWith("-"))){let c=e.replace(/\/\*$/,"").replace(/\/+$/,"")||"/";if(!b.some(a=>{let b=a.replace(/\/+$/,"")||"/";return c===b||c.startsWith(b+"/")})&&!b.some(b=>{let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(`${c}(?:[/"'\\s/*]|$)`).test(a)}))return!1}}return!0}let aK=/(?:^|;|&&|\|\||\|)\s*(?:ls|find|cat|head|tail|less|more|wc|file|stat|tree|du)\s/,aL=/\s*(?:&&|\|\||\||;)\s*/,aM=[{name:"sanitize-jwt",description:"Stop Claude from reading JWTs in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return N.test(b)?{decision:"deny",reason:"JWT token detected in tool output",message:"[REDACTED: JWT token removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-api-keys",description:"Stop Claude from reading API keys (OpenAI, Anthropic, GitHub, AWS, Stripe, Google) in tool responses",fn:function(a){let b=JSON.stringify(a.payload);for(let[a,c]of O)if(a.test(b))return{decision:"deny",reason:`${c} detected in tool output`,message:`[REDACTED: ${c} removed by failproofai]`};for(let{regex:c,label:d}of a.params?.additionalPatterns??[])try{if(new RegExp(c).test(b))return{decision:"deny",reason:`${d} detected in tool output`,message:`[REDACTED: ${d} removed by failproofai]`}}catch{q(`additionalPatterns: invalid regex "${c}", skipping`)}return D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize",params:{additionalPatterns:{type:"pattern[]",description:"Additional API key patterns to scrub, each with { regex, label }",default:[]}}},{name:"sanitize-connection-strings",description:"Stop Claude from reading database connection strings with embedded credentials in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return P.test(b)?{decision:"deny",reason:"Database connection string with credentials detected in tool output",message:"[REDACTED: connection string removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-private-key-content",description:"Stop Claude from reading PEM private key content in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return Q.test(b)?{decision:"deny",reason:"Private key content detected in tool output",message:"[REDACTED: private key content removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-bearer-tokens",description:"Stop Claude from reading Authorization Bearer tokens in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return R.test(b)?{decision:"deny",reason:"Bearer token detected in tool output",message:"[REDACTED: Bearer token removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"protect-env-vars",description:"Prevent commands that read environment variables",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return Y.test(b)?E("Command reads environment variables"):Z.test(b)?E("Command echoes environment variable"):$.test(b)?E("Command exports environment variable"):_.test(b)?E("Command reads environment variable via PowerShell"):aa.test(b)?E("Command reads environment variables via PowerShell"):ab.test(b)?E("Command reads environment variable via .NET"):ac.test(b)?E("Command echoes environment variable via cmd"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Environment"},{name:"block-env-files",description:"Block reading/writing .env files",fn:function(a){let b=I(a),c=J(a);return c&&ad.test(c)?E("Access to .env file blocked"):"Bash"===a.toolName&&ae.test(b)?E("Command references .env file"):D()},match:{events:["PreToolUse"]},defaultEnabled:!0,category:"Environment"},{name:"block-read-outside-cwd",description:"Block file reads outside the session working directory",fn:function(a){let b=process.env.CLAUDE_PROJECT_DIR||a.session?.cwd;if(!b)return D();let c=a.params?.allowPaths??[];if("Bash"===a.toolName){let d=I(a);if(!aK.test(d))return D();let e=function(a){let b,c=[],d=/(?<![a-zA-Z0-9_.\-~\\])(?:~\/[^\s;|&"'()\[\]{}]*|~(?=\s|$|[;|&"'()\[\]{}])|\/[^\s;|&"'()\[\]{}]*)/g;function e(a){let b;for(d.lastIndex=0;null!==(b=d.exec(a));){let a=b[0];"~"===a?a=(0,g.homedir)():a.startsWith("~/")&&(a=(0,f.join)((0,g.homedir)(),a.slice(2))),c.push(a)}}let h=a.length,i=!1,j=!1;for(let b=0;b<a.length;b++){let c=a[b];if('"'!==c||j)if("'"!==c||i){if("|"===c&&!i&&!j){h=b;break}}else j=!j;else i=!i}let k=a.slice(0,h),l=/"([^"]*)"|'([^']*)'/g;for(;null!==(b=l.exec(k));){let a=b[1]??b[2]??"";/[*?\[\]^$+()\\]/.test(a)||e(a)}return e(a.replace(/"[^"]*"/g,a=>" ".repeat(a.length)).replace(/'[^']*'/g,a=>" ".repeat(a.length))),c}(d),h=b.endsWith("/")?b:b+"/";for(let a of e){let d=(0,f.resolve)(b,a);if(H(d))return E(`Reading Claude settings file blocked: ${d}`);if(!G(d)&&"/dev/null"!==d&&d!==b&&!d.startsWith(h)){if(c.some(a=>d===a||d.startsWith(a.endsWith("/")?a:a+"/")))continue;return E(`Bash read outside project directory blocked: ${d}`)}}return D()}let d=J(a),e=a.toolInput?.path??"",h=d||e;if(!h)return D();let i=(0,f.resolve)(b,h);if(H(i))return E(`Reading Claude settings file blocked: ${i}`);if(G(i)||"/dev/null"===i)return D();let j=b.endsWith("/")?b:b+"/";return i===b||i.startsWith(j)?D():c.some(a=>i===a||i.startsWith(a.endsWith("/")?a:a+"/"))?D():E(`Access outside project directory blocked: ${i}`)},match:{events:["PreToolUse"],toolNames:["Read","Glob","Grep","Bash"]},defaultEnabled:!1,category:"Environment",params:{allowPaths:{type:"string[]",description:"Absolute paths outside cwd that are allowed to be read",default:[]}}},{name:"block-sudo",description:"Block sudo commands",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a).trimStart();return af.test(b)||b.startsWith("sudo ")?(a.params?.allowPatterns??[]).some(a=>{let c,d;return c=K(b),d=K(a),!(c.length<d.length||c.some(a=>L.has(a))||c.some(a=>M.test(a)))&&d.every((a,b)=>"*"===a||a===c[b])})?D():E("sudo commands are blocked"):ag.test(b)?E("Elevated process launch is blocked"):ah.test(b)?E("runas elevation is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands",params:{allowPatterns:{type:"string[]",description:"Sudo command patterns to allow, matched token-by-token (e.g. 'sudo systemctl status')",default:[]}}},{name:"block-curl-pipe-sh",description:"Block piping downloads to shell",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ai.test(b)?E("Piping downloads to shell is blocked"):aj.test(b)?E("Piping downloads to Invoke-Expression is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands"},{name:"block-rm-rf",description:"Prevent catastrophic deletions",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a),c=K(b).some(a=>{let b=a.replace(/\/\*$/,"").replace(/\/+$/,"")||(a.startsWith("/")?"/":"");return"/"===b||"~"===b||/^\/[A-Za-z_][\w.-]*$/.test(b)});if(c&&(/rm\s+-[^\s]*r[^\s]*f[^\s]*/.test(b)||/rm\s+-[^\s]*f[^\s]*r[^\s]*/.test(b)))return aJ(b,a.params?.allowPaths??[])?D():E("Catastrophic deletion blocked");if(c&&/\brm\b/.test(b)){let c=K(b),d=c.filter(a=>/^-[^-]/.test(a)).join(""),e=c.filter(a=>/^--/.test(a)),f=/r/i.test(d)||e.some(a=>/^--recursive$/i.test(a)),g=/f/.test(d)||e.some(a=>/^--force$/i.test(a));if(f&&g)return aJ(b,a.params?.allowPaths??[])?D():E("Catastrophic deletion blocked")}return/Remove-Item\s+.*-Recurse.*-Force.*(?:[A-Z]:\\(?:\s|$)|\\\*)/i.test(b)||/(?:rd|rmdir)\s+\/s\s+\/q\s+[A-Z]:\\/i.test(b)?E("Catastrophic deletion blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Dangerous Commands",params:{allowPaths:{type:"string[]",description:"Paths that are allowed to be recursively deleted",default:[]}}},{name:"block-failproofai-commands",description:"Block failproofai CLI commands and uninstallation",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ap.test(b)?E("Running failproofai CLI commands is blocked"):aq.test(b)?E("Uninstalling failproofai is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands"},{name:"block-secrets-write",description:"Block writing secret key files",fn:function(a){if("Write"!==a.toolName)return D();let b=J(a);if(al.test(b)||am.test(b)||an.test(b))return E("Writing secret key files is blocked");for(let c of a.params?.additionalPatterns??[])if(b.includes(c))return E(`Writing blocked file pattern: ${c}`);return D()},match:{events:["PreToolUse"],toolNames:["Write"]},defaultEnabled:!1,category:"Dangerous Commands",params:{additionalPatterns:{type:"string[]",description:"Additional filename patterns (substrings) to block",default:[]}}},{name:"block-push-master",description:"Block pushing to main/master",fn:function(a){if("Bash"!==a.toolName)return D();let b=a.params?.protectedBranches??["main","master"];if(0===b.length)return D();let c=aI(I(a)),d=RegExp(`\\b(?:${b.map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\b`);return c.some(a=>d.test(a))?E(`Pushing to ${b.join("/")} is blocked`):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Git",params:{protectedBranches:{type:"string[]",description:"Branch names to protect from direct pushes",default:["main","master"]}}},{name:"block-force-push",description:"Prevent force-pushing to any branch",fn:function(a){return"Bash"!==a.toolName?D():aI(I(a)).some(a=>ak.test(a))?E("Force-pushing is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"block-work-on-main",description:"Block git commits and merges on main/master branch",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);if(!ao.test(b))return D();let c=a.session?.cwd;if(!c)return D();let d=aH(c);return d&&(a.params?.protectedBranches??["main","master"]).includes(d)?E(`Git ${b.match(/git\s+(\S+)/)?.[1]??"operation"} on ${d} is blocked. Create a feature branch first.`):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git",params:{protectedBranches:{type:"string[]",description:"Branch names where commits/merges are blocked",default:["main","master"]}}},{name:"warn-git-amend",description:"Warns before amending git commits, which rewrites history",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ar.test(b)?F("STOP: This command amends the last commit, which rewrites git history. If this commit has already been pushed to a shared branch, this will cause divergence for other contributors. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-git-stash-drop",description:"Warns before permanently deleting stashed changes",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return as.test(b)?F("STOP: This command permanently deletes stashed changes (git stash drop/clear). Stash entries cannot be recovered after deletion. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-all-files-staged",description:"Warns before staging all working tree files with git add -A / . / --all",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return at.test(b)?F("STOP: This command stages all files in the working tree (git add -A / --all / .). This may inadvertently include build artifacts, generated files, or sensitive files not covered by .gitignore. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-destructive-sql",description:"Warn before executing destructive SQL (DROP/TRUNCATE/DELETE without WHERE) via database clients",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return S.test(b)&&(T.test(b)||U.test(b)&&!V.test(b))?F("STOP: This command contains destructive SQL (DROP/TRUNCATE/DELETE). Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Database"},{name:"warn-schema-alteration",description:"Warns before SQL schema changes (ALTER TABLE with column or rename operations)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return S.test(b)&&W.test(b)?F("STOP: This command contains a schema-altering SQL statement (ALTER TABLE with column or rename operation). Schema changes on production databases are irreversible or disruptive. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Database"},{name:"warn-package-publish",description:"Warn before publishing packages to public registries (npm, PyPI, crates.io, RubyGems, etc.)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return X.test(b)?F("STOP: This command publishes a package to a public registry. Confirm with the user that this is intentional."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"warn-global-package-install",description:"Warns before installing packages globally (npm -g, cargo install, etc.)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return au.test(b)||av.test(b)||aw.test(b)||ax.test(b)||ay.test(b)||az.test(b)?F("STOP: This command installs a package globally, which modifies the system-wide environment outside the project. This can conflict with other projects or system tools. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"prefer-package-manager",description:"Blocks non-preferred package managers and tells Claude to use an allowed one (e.g., uv instead of pip)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);if(!b)return D();let c=a.params?.allowed??[];if(0===c.length)return D();let d=new Set(c.map(a=>a.toLowerCase())),e=a.params?.blocked??[],f=c.join(", ");for(let a of b.split(aL)){let b=a.trim();if(!b)continue;let c=!1;for(let a of d){let d=aA[a];if(d){for(let a of d)if(a.test(b)){c=!0;break}if(c)break}}if(!c){for(let[a,c]of Object.entries(aA))if(!d.has(a)){for(let d of c)if(d.test(b))return E(`"${a}" is not an allowed package manager. Allowed package managers for this project: ${f}. Rewrite this command using an allowed package manager.`)}for(let a of e){let c=a.toLowerCase();if(!d.has(c)&&RegExp(`\\b${c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`).test(b))return E(`"${c}" is not an allowed package manager. Allowed package managers for this project: ${f}. Rewrite this command using an allowed package manager.`)}}}return D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System",params:{allowed:{type:"string[]",description:"Allowed package manager names (e.g. ['uv', 'bun']). Any detected manager not in this list is blocked.",default:[]},blocked:{type:"string[]",description:"Additional manager names to block beyond the built-in list (e.g. ['pdm', 'pipx']).",default:[]}}},{name:"warn-large-file-write",description:"Warn before writing files larger than 1MB (configurable via thresholdKb param)",fn:function(a){if("Write"!==a.toolName)return D();let b=a.toolInput?.content;if("string"!=typeof b)return D();let c=a.params?.thresholdKb??1024;return b.length>1024*c?F(`STOP: You are writing a file larger than ${c}KB (${Math.round(b.length/1024)}KB). This is unusually large. Confirm this is intentional before proceeding.`):D()},match:{events:["PreToolUse"],toolNames:["Write"]},defaultEnabled:!1,category:"Packages & System",params:{thresholdKb:{type:"number",description:"File size threshold in KB above which a warning is issued",default:1024}}},{name:"warn-background-process",description:"Warns before starting detached or background processes",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return aB.test(b)||aC.test(b)||aD.test(b)||aE.test(b)||aF.test(b)?F("STOP: This command starts a background or detached process (nohup, screen -d, tmux -d, or trailing &). Background processes persist after Claude's session and may be difficult to track or stop. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"warn-repeated-tool-calls",description:"Warn when the same tool is called 3+ times with identical parameters",fn:async function a(a){let b=a.session?.transcriptPath;if(!b||!a.toolName||!a.toolInput)return D();let c=`${b}.tool-calls.json`,d=JSON.stringify({tool:a.toolName,input:a.toolInput}),e={};try{let a=await (0,C.readFile)(c,"utf8");e=JSON.parse(a)}catch{}let f=e[d]??0;if(f>=3)return F(`STOP: You have already called ${a.toolName} ${f} times with identical parameters. This is wasteful and unproductive. Do NOT repeat this call — use a different approach or ask the user for clarification.`);e[d]=f+1;try{let a=JSON.stringify(e);a.length<=65536&&await (0,C.writeFile)(c,a,"utf8")}catch{}return D()},match:{events:["PreToolUse"]},defaultEnabled:!1,category:"AI Behavior"},{name:"require-commit-before-stop",description:"Require all changes to be committed before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping commit check.");try{if((0,x.execSync)("git status --porcelain",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim().length>0)return E("You have uncommitted changes in the working directory. Commit all changes now.");return D("All changes are committed.")}catch{return D("Not a git repository, skipping commit check.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow"},{name:"require-push-before-stop",description:"Require all commits to be pushed to remote before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping push check.");try{if(!(0,x.execSync)("git remote",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim())return D("No git remote configured, skipping push check.");let c=a.params?.remote??"origin",d=aH(b);if(!d||"HEAD"===d)return D("Detached HEAD, skipping push check.");let e=a.params?.baseBranch??"main";if(d===e)return D(`On base branch "${e}", skipping push check.`);try{if(!(0,x.execFileSync)("git",["log",`${c}/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No commits ahead of ${c}/${e}, skipping push check.`);if(!(0,x.execFileSync)("git",["diff","--stat",`${c}/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No file changes compared to ${c}/${e}, skipping push check.`)}catch{}let f=!1;try{(0,x.execFileSync)("git",["rev-parse","--verify",`${c}/${d}`],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}),f=!0}catch{}if(!f)return E(`Branch "${d}" has not been pushed to remote "${c}". Run now: git push -u ${c} ${d}`);let g=(0,x.execFileSync)("git",["log",`${c}/${d}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim();if(g.length>0){let a=g.split("\n").length;return E(`You have ${a} unpushed commit${a>1?"s":""} on branch "${d}". Run now: git push`)}return D(`All commits pushed to "${c}".`)}catch{return D("Could not check push status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow",params:{remote:{type:"string",description:"Remote name to push to (default: origin)",default:"origin"},baseBranch:{type:"string",description:"Base branch to compare against (default: main)",default:"main"}}},{name:"require-pr-before-stop",description:"Require a pull request to exist for the current branch before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping PR check.");try{let c;try{(0,x.execSync)("gh --version",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3})}catch{return D("GitHub CLI (gh) not installed, skipping PR check.")}let d=aH(b);if(!d||"HEAD"===d)return D("Detached HEAD, skipping PR check.");let e=a.params?.baseBranch??"main";if(d===e)return D(`On base branch "${e}", skipping PR check.`);try{if(!(0,x.execFileSync)("git",["log",`origin/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No commits ahead of origin/${e}, skipping PR check.`);if(!(0,x.execFileSync)("git",["diff","--stat",`origin/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No file changes compared to origin/${e}, skipping PR check.`)}catch{}try{c=(0,x.execSync)("gh pr view --json number,url,state",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim()}catch{return E(`No pull request found for branch "${d}". Run now: gh pr create`)}let f=JSON.parse(c);if("OPEN"===f.state)return D(`PR #${f.number} exists: ${f.url}`);if("MERGED"===f.state)try{if((0,x.execFileSync)("git",["fetch","origin",`+refs/heads/${e}:refs/remotes/origin/${e}`],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:1e4}),!(0,x.execFileSync)("git",["log",`origin/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`PR #${f.number} was merged; branch is up to date with ${e}.`);if(!(0,x.execFileSync)("git",["diff","--stat",`origin/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`PR #${f.number} was merged; no file changes vs ${e}.`)}catch{}return E(`Pull request for branch "${d}" is ${f.state.toLowerCase()}. Run now: gh pr create`)}catch{return D("Could not check PR status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow",params:{baseBranch:{type:"string",description:"Base branch to compare against (default: main)",default:"main"}}},{name:"require-ci-green-before-stop",description:"Require CI checks to pass on the current branch before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping CI check.");try{try{(0,x.execSync)("gh --version",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3})}catch{return D("GitHub CLI (gh) not installed, skipping CI check.")}let a=aH(b);if(!a||"HEAD"===a)return D("Detached HEAD, skipping CI check.");let c=[];try{let d=(0,x.execFileSync)("gh",["run","list","--branch",a,"--limit","5","--json","status,conclusion,name"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();d&&"[]"!==d&&(c=JSON.parse(d))}catch{}let d=[],e=[],f=function(a){try{return(0,x.execSync)("git rev-parse HEAD",{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim()||null}catch{return null}}(b);f&&(d=function(a,b){try{let c=(0,x.execFileSync)("gh",["api",`repos/{owner}/{repo}/commits/${b}/check-runs`,"--jq",'.check_runs | map(select(.app.slug != "github-actions")) | map({name: .name, status: .status, conclusion: (.conclusion // "")})'],{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();if(!c||"[]"===c)return[];return JSON.parse(c)}catch{return[]}}(b,f),e=function(a,b){try{let c=(0,x.execFileSync)("gh",["api",`repos/{owner}/{repo}/commits/${b}/statuses`,"--jq","map({name: .context, state: .state}) | unique_by(.name)"],{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();if(!c||"[]"===c)return[];return JSON.parse(c).map(a=>({name:a.name,status:"pending"===a.state?"in_progress":"completed",conclusion:"pending"===a.state?"":"success"===a.state?"success":"failure"}))}catch{return[]}}(b,f));let g=[...c,...d,...e];if(0===g.length)return D(`No CI runs found for branch "${a}".`);let h=g.filter(a=>"completed"===a.status&&"success"!==a.conclusion&&"skipped"!==a.conclusion&&"cancelled"!==a.conclusion);if(h.length>0){let b=h.map(a=>`"${a.name}"`).join(", ");return E(`CI checks are failing on branch "${a}": ${b}. Fix the failing checks now.`)}let i=g.filter(a=>"in_progress"===a.status||"queued"===a.status||"waiting"===a.status);if(i.length>0){let b=i.map(a=>`"${a.name}"`).join(", ");return E(`CI checks are still running on branch "${a}": ${b}. Wait for all checks to complete, then verify they pass.`)}return D(`All CI checks passed on branch "${a}".`)}catch{return D("Could not check CI status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow"}];async function aN(a,b={}){let{includeBeta:c=!1}=b;if(!process.stdin.isTTY){let b=aM.filter(a=>c||!a.beta);return a?a.filter(a=>b.some(b=>b.name===a)):b.filter(a=>a.defaultEnabled).map(a=>a.name)}let d=a?new Set(a):null,e=aM.filter(a=>c||!a.beta).map(a=>({name:a.name,description:a.description,category:a.category,selected:d?d.has(a.name):a.defaultEnabled,beta:!!a.beta})),f=e.length,g=0,h="",i=0,j=!1;function k(){if(!h)return e;let a=h.toLowerCase();return e.filter(b=>b.name.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}function l(){let a=process.stdout.columns||120;j||(process.stdout.write("\x1b[?25l"),j=!0);let b=k(),d=b.length;d>0&&g>=d&&(g=d-1);let l=[];l.push(" Failproof AI — Policy Manager"),l.push("");let m=Math.max(20,a-6),n=" ┌"+"─".repeat(m+2)+"┐",o=" └"+"─".repeat(m+2)+"┘",p=h?` \x1b[2m(${d}/${f})\x1b[0m`:` \x1b[2m(${f} policies)\x1b[0m`,q=`\x1b[1mSearch:\x1b[0m ${h}\x1b[7m \x1b[0m${p}`;if(l.push(n),l.push(` \u2502 ${q}`),l.push(o),l.push(""),0===d){l.push(" \x1b[2mNo policies match “"+h+"”\x1b[0m");for(let a=0;a<9;a++)l.push("")}else{let c=function(a){let b=[],c=new Map,d=new Map;for(let a of e)c.has(a.category)||(b.push(a.category),c.set(a.category,0),d.set(a.category,0)),d.set(a.category,d.get(a.category)+1),a.selected&&c.set(a.category,c.get(a.category)+1);let f=new Map;for(let b of a){let a=f.get(b.category)??[];a.push(b),f.set(b.category,a)}let g=[],h=0;for(let a of b){let b=f.get(a);if(b&&0!==b.length)for(let e of(g.push({kind:"header",category:a,enabledCount:c.get(a),totalCount:d.get(a)}),b))g.push({kind:"item",item:e,filteredIndex:h++})}return g}(b),d=0;for(let a=0;a<c.length;a++){let b=c[a];if("item"===b.kind&&b.filteredIndex===g){d=a;break}}let f=d-Math.floor(4);f=Math.min(f=Math.max(0,f),Math.max(0,c.length-8));let h=Math.min(c.length,f+8),i=c.slice(0,f).filter(a=>"item"===a.kind).length;i>0?l.push(` \x1b[2m \u2191 ${i} more above\x1b[0m`):l.push("");for(let b=f;b<h;b++){let d=c[b];if("header"===d.kind){let b=` ${d.category.toUpperCase()} (${d.enabledCount}/${d.totalCount}) `,c=Math.max(2,a-2-(3+b.length));l.push(` \x1b[2m\u2500\u2500 ${b}${"─".repeat(c)}\x1b[0m`)}else{let a=d.item,b=d.filteredIndex===g,c=b?"\x1b[36m❯\x1b[0m":" ",e=a.selected?"\x1b[32m[✓]\x1b[0m":"[ ]",f=b?`\x1b[1;36m${a.name}\x1b[0m`:a.name,h=a.beta?" \x1b[35m[beta]\x1b[0m":"",i=" ".repeat(Math.max(1,28-a.name.length)),j=`\x1b[2m${a.description}\x1b[0m`;l.push(` ${c} ${e} ${f}${h}${i}${j}`)}}for(let a=h-f;a<8;a++)l.push("");let j=c.slice(h).filter(a=>"item"===a.kind).length;j>0?l.push(` \x1b[2m \u2193 ${j} more below\x1b[0m`):l.push("")}l.push(""),l.push(" \x1b[2m"+"─".repeat(a-2)+"\x1b[0m"),l.push(" [↑↓] Move [Space] Toggle [Ctrl+A] All [Ctrl+S] Save [Esc] Clear [^C] Quit"),l.push(""),l.push(" \x1b[2mTip: `policies` for a flat list · `policies --install <name…>` to skip prompt\x1b[0m"),c||l.push(" \x1b[2mTip: `policies --install --beta` to include beta policies\x1b[0m"),i>0&&process.stdout.write(`\x1b[${i}A\x1b[J`);let r=l.map(b=>""===b?b:function(a,b){let c=0,d="",e=0;for(;e<a.length;)if("\x1b"===a[e]&&"["===a[e+1]){let b=e+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;b++,d+=a.slice(e,b),e=b}else{if(c>=b)break;d+=a[e],c++,e++}return d}(b,a)).join("\n")+"\n";process.stdout.write(r),i=l.length}return new Promise(a=>{function b(b,d){if(!d)return;d.ctrl&&"c"===d.name&&(c(),process.exit(0));let f=k();if("up"===d.name)f.length>0&&(g=g>0?g-1:f.length-1),l();else if("down"===d.name)f.length>0&&(g=g<f.length-1?g+1:0),l();else if("return"===d.name||"space"===d.name){let a=f[g];a&&(a.selected=!a.selected),l()}else if("escape"===d.name)h="",g=0,l();else if(d.ctrl&&"a"===d.name){let a=f.length>0&&f.every(a=>a.selected);for(let b of f)b.selected=!a;l()}else if(d.ctrl&&"s"===d.name){c();let b=e.filter(a=>a.selected).map(a=>a.name);process.stdout.write("\n"),a(b)}else"backspace"===d.name||"delete"===d.name?h.length>0&&(h=h.slice(0,-1),g=0,l()):!b||1!==b.length||d.ctrl||d.meta||(h+=b,g=0,l())}function c(){j&&(process.stdout.write("\x1b[?25h"),j=!1),process.stdin.removeListener("keypress",b),process.stdin.setRawMode(!1),process.stdin.pause()}l(),process.stdin.setRawMode(!0),process.stdin.resume(),B.emitKeypressEvents(process.stdin),process.stdin.on("keypress",b)})}var aO=a.i(57764);let aP="__failproofai_custom_hooks__";var aQ=a.i(24868),aR=a.i(14747),aS=a.i(92509);let aT=".__failproofai_tmp__.mjs",aU=/(?:import\s+(?:[\s\S]*?\s+from\s+)?|export\s+(?:[\s\S]*?\s+from\s+))(['"])(\.\.?\/[^'"]+)\1/g,aV=/require\s*\(\s*(['"])(\.\.?\/[^'"]+)\1\s*\)/g;async function aW(a){try{return await (0,aQ.access)(a),!0}catch{return!1}}async function aX(){let a=process.env.FAILPROOFAI_DIST_PATH;if(a){let b=(0,aR.resolve)(a,"index.js");if(await aW(b))return b}for(let a of[(0,aR.resolve)((0,aR.dirname)(process.execPath),"..","assets","dist","index.js"),(0,aR.resolve)(process.cwd(),"dist","index.js"),(0,aR.resolve)(process.cwd(),"node_modules","failproofai","dist","index.js")])if(await aW(a))return a;return null}async function aY(a,b){let c=(0,aR.resolve)(a,b);for(let a of[c,`${c}.js`,`${c}.mjs`,`${c}.ts`,(0,aR.resolve)(c,"index.js")])if(await aW(a))return a;return null}async function aZ(a,b){let c=a+".__failproofai_esm_shim__.mjs",d=`import _cjs from '${b}';
3
+ `;(0,e.appendFileSync)(c,g,"utf-8")}catch{}}function q(a){n("warn")&&(o("WARN",a),p("WARN",a))}function r(){return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json")}function s(){let a=r();if(!(0,e.existsSync)(a))return{enabledPolicies:[]};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return q(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{enabledPolicies:[]}}}function t(a){let b=r(),c=(0,f.dirname)(b);(0,e.existsSync)(c)||(0,e.mkdirSync)(c,{recursive:!0}),(0,e.writeFileSync)(b,JSON.stringify(a,null,2)+"\n","utf8")}function u(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json");case"project":return(0,f.resolve)(c,".failproofai","policies-config.json");case"local":return(0,f.resolve)(c,".failproofai","policies-config.local.json")}}function v(a,b){let c=u(a,b);if(!(0,e.existsSync)(c))return{enabledPolicies:[]};try{let a=(0,e.readFileSync)(c,"utf8");return JSON.parse(a)}catch(a){return q(`failed to parse config at ${c}: ${a instanceof Error?a.message:String(a)}`),{enabledPolicies:[]}}}function w(a,b,c){let d=u(b,c),g=(0,f.dirname)(d);(0,e.existsSync)(g)||(0,e.mkdirSync)(g,{recursive:!0}),(0,e.writeFileSync)(d,JSON.stringify(a,null,2)+"\n","utf8")}var x=a.i(74533);let y=["user","project","local"],z=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult"],A="__failproofai_hook__";var B=a.i(1457),C=a.i(12714);function D(a){return a?{decision:"allow",reason:a}:{decision:"allow"}}function E(a){return{decision:"deny",reason:a}}function F(a){return{decision:"instruct",reason:a}}function G(a){let b=(0,f.join)((0,g.homedir)(),".claude");return a===b||a.startsWith(b+"/")}function H(a){return/[\\/]\.claude[\\/]settings(?:\.[^/\\]+)?\.json$/.test(a)}function I(a){return a.toolInput?.command??""}function J(a){return a.toolInput?.file_path??""}function K(a){return a.trim().split(/\s+/).map(a=>a.replace(/^['"]|['"]$/g,""))}let L=new Set(["&&","||","|",";"]),M=/[;&<>`$()\\]/,N=/eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/,O=[[/sk-ant-[A-Za-z0-9\-_]{20,}/,"Anthropic API key"],[/sk-proj-[A-Za-z0-9\-_]{20,}/,"OpenAI project API key"],[/sk-[A-Za-z0-9]{20,}/,"OpenAI API key"],[/ghp_[A-Za-z0-9]{36}/,"GitHub personal access token"],[/github_pat_[A-Za-z0-9_]{82}/,"GitHub fine-grained token"],[/AKIA[A-Z0-9]{16}/,"AWS access key ID"],[/sk_live_[A-Za-z0-9]{24,}/,"Stripe live secret key"],[/sk_test_[A-Za-z0-9]{24,}/,"Stripe test secret key"],[/AIza[0-9A-Za-z\-_]{35}/,"Google API key"]],P=/(?:postgresql|postgres|mysql|mongodb(?:\+srv)?|redis|amqps?|smtps?):\/\/[^@\s]+@/,Q=/-----BEGIN (?:[A-Z]+ )?PRIVATE KEY-----/,R=/Authorization:\s*Bearer\s+[A-Za-z0-9\-._~+/]{20,}/i,S=/\b(?:psql|mysql|sqlite3|pgcli|clickhouse-client)\b/,T=/\b(?:DROP\s+(?:TABLE|DATABASE|SCHEMA)|TRUNCATE\b)/i,U=/\bDELETE\s+FROM\b/i,V=/\bWHERE\b/i,W=/\bALTER\s+TABLE\b[\s\S]*\b(?:DROP\s+COLUMN|ADD\s+COLUMN|RENAME\s+(?:COLUMN|TO)|MODIFY\s+COLUMN)\b/i,X=/(?:npm\s+publish|bun\s+publish|pnpm\s+publish|yarn\s+npm\s+publish|twine\s+upload|poetry\s+publish|cargo\s+publish|gem\s+push)\b/,Y=/(?:^|\s|;|&&|\|\|)(?:env|printenv)(?:\s|$|;|&&|\|)/,Z=/echo\s+.*\$\{?[A-Za-z_]/,$=/(?:^|\s|;|&&|\|\|)export\s+\w+/,_=/\$env:[A-Za-z_]/i,aa=/(?:Get-ChildItem|dir|gci|ls)\s+Env:/i,ab=/\[Environment\]::GetEnvironment/i,ac=/echo\s+%[A-Za-z_]/i,ad=/(?:^|[\\/])\.env(?:\.|$)/,ae=/\.env(?:\b|\s|$|\.)/,af=/(?:^|;|&&|\|\|)\s*sudo\s/,ag=/Start-Process\s+.*-Verb\s+RunAs/i,ah=/(?:^|;|&&|\|\|)\s*runas\s/i,ai=/(?:curl|wget)\s.*\|\s*(?:sh|bash|zsh|dash|ksh|csh|tcsh|fish|ash)\b/,aj=/(?:Invoke-WebRequest|iwr|Invoke-RestMethod|irm)\s+.*\|\s*(?:Invoke-Expression|iex)/i,ak=/(?:--force|-f\b)/,al=/\.(?:pem|key)$/,am=/id_rsa/,an=/credentials/,ao=/git\s+(?:commit|merge|rebase|cherry-pick)\b/,ap=/(?:^|;|&&|\|\||\|)\s*failproofai(?:\s|$)/,aq=/(?:npm\s+(?:uninstall|remove|un|r)\s.*failproofai|bun\s+remove\s.*failproofai|yarn\s+global\s+remove\s+failproofai|pnpm\s+(?:remove|uninstall|un)\s.*failproofai)/,ar=/\bgit\s+commit\b.*--amend\b/,as=/\bgit\s+stash\s+(?:drop|clear)\b/,at=/\bgit\s+add\s+(?:-A\b|--all\b|\.(?:\s|$|;|&&|\|\|))/,au=/\bnpm\s+(?:install|i)\b(?=.*(?:\s-g\b|--global\b))/,av=/\byarn\s+global\s+add\b/,aw=/\bpnpm\s+(?:add|install|i)\b(?=.*(?:\s-g\b|--global\b))/,ax=/\bbun\s+(?:install|add)\b(?=.*(?:\s-g\b|--global\b))/,ay=/\bcargo\s+install\b/,az=/\bpip(?:3)?\s+install\b(?=.*(?:--user\b|--break-system-packages\b))/,aA={pip:[/\bpip\b/,/\bpip3\b/,/\bpython3?\s+-m\s+pip\b/],npm:[/\bnpm\b/,/\bnpx\b/],yarn:[/\byarn\b/],pnpm:[/\bpnpm\b/,/\bpnpx\b/],bun:[/\bbun\b/,/\bbunx\b/],uv:[/\buv\b/],poetry:[/\bpoetry\b/],pipenv:[/\bpipenv\b/],conda:[/\bconda\b/],cargo:[/\bcargo\b/]},aB=/\bnohup\s+\S/,aC=/\bscreen\s+-[A-Za-z]*d[A-Za-z]*\b/,aD=/\btmux\s+(?:new-session|new)\b[^|&;]*-d\b/,aE=/\bdisown\b/,aF=/(?<![&|])\s?&\s*(?:$|#|;)/,aG=new Map;function aH(a){try{let b=aG.get(a);return void 0===b&&(b=(0,x.execSync)("git rev-parse --abbrev-ref HEAD",{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim(),aG.set(a,b)),b||null}catch{return null}}function aI(a){return a.split(/&&|\|\||[|;\n]/).map(a=>a.trim()).filter(a=>/^git\s+push\s/.test(a)).map(a=>a.replace(/^git\s+push\s+/,""))}function aJ(a,b){if(0===b.length)return!1;let c=a.split(/&&|\|\||[|;\n]/).map(a=>a.trim()).filter(a=>/\brm\b/.test(a));if(0===c.length)return!1;for(let a of c){let c=K(a),d=c.findIndex(a=>"rm"===a);if(d<0)continue;let e=c.slice(d+1).filter(a=>/^-[^-]/.test(a)),f=c.slice(d+1).filter(a=>/^--/.test(a));if(/r/i.test(e.join(""))||f.some(a=>/^--recursive$/i.test(a)))for(let e of c.slice(d+1).filter(a=>!a.startsWith("-"))){let c=e.replace(/\/\*$/,"").replace(/\/+$/,"")||"/";if(!b.some(a=>{let b=a.replace(/\/+$/,"")||"/";return c===b||c.startsWith(b+"/")})&&!b.some(b=>{let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(`${c}(?:[/"'\\s/*]|$)`).test(a)}))return!1}}return!0}let aK=/(?:^|;|&&|\|\||\|)\s*(?:ls|find|cat|head|tail|less|more|wc|file|stat|tree|du)\s/,aL=/\s*(?:&&|\|\||\||;)\s*/,aM=[{name:"sanitize-jwt",description:"Stop Claude from reading JWTs in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return N.test(b)?{decision:"deny",reason:"JWT token detected in tool output",message:"[REDACTED: JWT token removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-api-keys",description:"Stop Claude from reading API keys (OpenAI, Anthropic, GitHub, AWS, Stripe, Google) in tool responses",fn:function(a){let b=JSON.stringify(a.payload);for(let[a,c]of O)if(a.test(b))return{decision:"deny",reason:`${c} detected in tool output`,message:`[REDACTED: ${c} removed by failproofai]`};for(let{regex:c,label:d}of a.params?.additionalPatterns??[])try{if(new RegExp(c).test(b))return{decision:"deny",reason:`${d} detected in tool output`,message:`[REDACTED: ${d} removed by failproofai]`}}catch{q(`additionalPatterns: invalid regex "${c}", skipping`)}return D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize",params:{additionalPatterns:{type:"pattern[]",description:"Additional API key patterns to scrub, each with { regex, label }",default:[]}}},{name:"sanitize-connection-strings",description:"Stop Claude from reading database connection strings with embedded credentials in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return P.test(b)?{decision:"deny",reason:"Database connection string with credentials detected in tool output",message:"[REDACTED: connection string removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-private-key-content",description:"Stop Claude from reading PEM private key content in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return Q.test(b)?{decision:"deny",reason:"Private key content detected in tool output",message:"[REDACTED: private key content removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"sanitize-bearer-tokens",description:"Stop Claude from reading Authorization Bearer tokens in tool responses",fn:function(a){let b=JSON.stringify(a.payload);return R.test(b)?{decision:"deny",reason:"Bearer token detected in tool output",message:"[REDACTED: Bearer token removed by failproofai]"}:D()},match:{events:["PostToolUse"]},defaultEnabled:!0,category:"Sanitize"},{name:"protect-env-vars",description:"Prevent commands that read environment variables",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return Y.test(b)?E("Command reads environment variables"):Z.test(b)?E("Command echoes environment variable"):$.test(b)?E("Command exports environment variable"):_.test(b)?E("Command reads environment variable via PowerShell"):aa.test(b)?E("Command reads environment variables via PowerShell"):ab.test(b)?E("Command reads environment variable via .NET"):ac.test(b)?E("Command echoes environment variable via cmd"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Environment"},{name:"block-env-files",description:"Block reading/writing .env files",fn:function(a){let b=I(a),c=J(a);return c&&ad.test(c)?E("Access to .env file blocked"):"Bash"===a.toolName&&ae.test(b)?E("Command references .env file"):D()},match:{events:["PreToolUse"]},defaultEnabled:!0,category:"Environment"},{name:"block-read-outside-cwd",description:"Block file reads outside the session working directory",fn:function(a){let b=process.env.CLAUDE_PROJECT_DIR||a.session?.cwd;if(!b)return D();let c=a.params?.allowPaths??[];if("Bash"===a.toolName){let d=I(a);if(!aK.test(d))return D();let e=function(a){let b,c=[],d=/(?<![a-zA-Z0-9_.\-~\\])(?:~\/[^\s;|&"'()\[\]{}]*|~(?=\s|$|[;|&"'()\[\]{}])|\/[^\s;|&"'()\[\]{}]*)/g;function e(a){let b;for(d.lastIndex=0;null!==(b=d.exec(a));){let a=b[0];"~"===a?a=(0,g.homedir)():a.startsWith("~/")&&(a=(0,f.join)((0,g.homedir)(),a.slice(2))),c.push(a)}}let h=a.length,i=!1,j=!1;for(let b=0;b<a.length;b++){let c=a[b];if('"'!==c||j)if("'"!==c||i){if("|"===c&&!i&&!j){h=b;break}}else j=!j;else i=!i}let k=a.slice(0,h),l=/"([^"]*)"|'([^']*)'/g;for(;null!==(b=l.exec(k));){let a=b[1]??b[2]??"";/[*?\[\]^$+()\\]/.test(a)||e(a)}return e(a.replace(/"[^"]*"/g,a=>" ".repeat(a.length)).replace(/'[^']*'/g,a=>" ".repeat(a.length))),c}(d),h=b.endsWith("/")?b:b+"/";for(let a of e){let d=(0,f.resolve)(b,a);if(H(d))return E(`Reading Claude settings file blocked: ${d}`);if(!G(d)&&"/dev/null"!==d&&d!==b&&!d.startsWith(h)){if(c.some(a=>d===a||d.startsWith(a.endsWith("/")?a:a+"/")))continue;return E(`Bash read outside project directory blocked: ${d}`)}}return D()}let d=J(a),e=a.toolInput?.path??"",h=d||e;if(!h)return D();let i=(0,f.resolve)(b,h);if(H(i))return E(`Reading Claude settings file blocked: ${i}`);if(G(i)||"/dev/null"===i)return D();let j=b.endsWith("/")?b:b+"/";return i===b||i.startsWith(j)?D():c.some(a=>i===a||i.startsWith(a.endsWith("/")?a:a+"/"))?D():E(`Access outside project directory blocked: ${i}`)},match:{events:["PreToolUse"],toolNames:["Read","Glob","Grep","Bash"]},defaultEnabled:!1,category:"Environment",params:{allowPaths:{type:"string[]",description:"Absolute paths outside cwd that are allowed to be read",default:[]}}},{name:"block-sudo",description:"Block sudo commands",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a).trimStart();return af.test(b)||b.startsWith("sudo ")?(a.params?.allowPatterns??[]).some(a=>{let c,d;return c=K(b),d=K(a),!(c.length<d.length||c.some(a=>L.has(a))||c.some(a=>M.test(a)))&&d.every((a,b)=>"*"===a||a===c[b])})?D():E("sudo commands are blocked"):ag.test(b)?E("Elevated process launch is blocked"):ah.test(b)?E("runas elevation is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands",params:{allowPatterns:{type:"string[]",description:"Sudo command patterns to allow, matched token-by-token (e.g. 'sudo systemctl status')",default:[]}}},{name:"block-curl-pipe-sh",description:"Block piping downloads to shell",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ai.test(b)?E("Piping downloads to shell is blocked"):aj.test(b)?E("Piping downloads to Invoke-Expression is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands"},{name:"block-rm-rf",description:"Prevent catastrophic deletions",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a),c=K(b).some(a=>{let b=a.replace(/\/\*$/,"").replace(/\/+$/,"")||(a.startsWith("/")?"/":"");return"/"===b||"~"===b||/^\/[A-Za-z_][\w.-]*$/.test(b)});if(c&&(/rm\s+-[^\s]*r[^\s]*f[^\s]*/.test(b)||/rm\s+-[^\s]*f[^\s]*r[^\s]*/.test(b)))return aJ(b,a.params?.allowPaths??[])?D():E("Catastrophic deletion blocked");if(c&&/\brm\b/.test(b)){let c=K(b),d=c.filter(a=>/^-[^-]/.test(a)).join(""),e=c.filter(a=>/^--/.test(a)),f=/r/i.test(d)||e.some(a=>/^--recursive$/i.test(a)),g=/f/.test(d)||e.some(a=>/^--force$/i.test(a));if(f&&g)return aJ(b,a.params?.allowPaths??[])?D():E("Catastrophic deletion blocked")}return/Remove-Item\s+.*-Recurse.*-Force.*(?:[A-Z]:\\(?:\s|$)|\\\*)/i.test(b)||/(?:rd|rmdir)\s+\/s\s+\/q\s+[A-Z]:\\/i.test(b)?E("Catastrophic deletion blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Dangerous Commands",params:{allowPaths:{type:"string[]",description:"Paths that are allowed to be recursively deleted",default:[]}}},{name:"block-failproofai-commands",description:"Block failproofai CLI commands and uninstallation",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ap.test(b)?E("Running failproofai CLI commands is blocked"):aq.test(b)?E("Uninstalling failproofai is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Dangerous Commands"},{name:"block-secrets-write",description:"Block writing secret key files",fn:function(a){if("Write"!==a.toolName)return D();let b=J(a);if(al.test(b)||am.test(b)||an.test(b))return E("Writing secret key files is blocked");for(let c of a.params?.additionalPatterns??[])if(b.includes(c))return E(`Writing blocked file pattern: ${c}`);return D()},match:{events:["PreToolUse"],toolNames:["Write"]},defaultEnabled:!1,category:"Dangerous Commands",params:{additionalPatterns:{type:"string[]",description:"Additional filename patterns (substrings) to block",default:[]}}},{name:"block-push-master",description:"Block pushing to main/master",fn:function(a){if("Bash"!==a.toolName)return D();let b=a.params?.protectedBranches??["main","master"];if(0===b.length)return D();let c=aI(I(a)),d=RegExp(`\\b(?:${b.map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\b`);return c.some(a=>d.test(a))?E(`Pushing to ${b.join("/")} is blocked`):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!0,category:"Git",params:{protectedBranches:{type:"string[]",description:"Branch names to protect from direct pushes",default:["main","master"]}}},{name:"block-force-push",description:"Prevent force-pushing to any branch",fn:function(a){return"Bash"!==a.toolName?D():aI(I(a)).some(a=>ak.test(a))?E("Force-pushing is blocked"):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"block-work-on-main",description:"Block git commits and merges on main/master branch",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);if(!ao.test(b))return D();let c=a.session?.cwd;if(!c)return D();let d=aH(c);return d&&(a.params?.protectedBranches??["main","master"]).includes(d)?E(`Git ${b.match(/git\s+(\S+)/)?.[1]??"operation"} on ${d} is blocked. Create a feature branch first.`):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git",params:{protectedBranches:{type:"string[]",description:"Branch names where commits/merges are blocked",default:["main","master"]}}},{name:"warn-git-amend",description:"Warns before amending git commits, which rewrites history",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return ar.test(b)?F("STOP: This command amends the last commit, which rewrites git history. If this commit has already been pushed to a shared branch, this will cause divergence for other contributors. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-git-stash-drop",description:"Warns before permanently deleting stashed changes",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return as.test(b)?F("STOP: This command permanently deletes stashed changes (git stash drop/clear). Stash entries cannot be recovered after deletion. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-all-files-staged",description:"Warns before staging all working tree files with git add -A / . / --all",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return at.test(b)?F("STOP: This command stages all files in the working tree (git add -A / --all / .). This may inadvertently include build artifacts, generated files, or sensitive files not covered by .gitignore. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Git"},{name:"warn-destructive-sql",description:"Warn before executing destructive SQL (DROP/TRUNCATE/DELETE without WHERE) via database clients",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return S.test(b)&&(T.test(b)||U.test(b)&&!V.test(b))?F("STOP: This command contains destructive SQL (DROP/TRUNCATE/DELETE). Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Database"},{name:"warn-schema-alteration",description:"Warns before SQL schema changes (ALTER TABLE with column or rename operations)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return S.test(b)&&W.test(b)?F("STOP: This command contains a schema-altering SQL statement (ALTER TABLE with column or rename operation). Schema changes on production databases are irreversible or disruptive. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Database"},{name:"warn-package-publish",description:"Warn before publishing packages to public registries (npm, PyPI, crates.io, RubyGems, etc.)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return X.test(b)?F("STOP: This command publishes a package to a public registry. Confirm with the user that this is intentional."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"warn-global-package-install",description:"Warns before installing packages globally (npm -g, cargo install, etc.)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return au.test(b)||av.test(b)||aw.test(b)||ax.test(b)||ay.test(b)||az.test(b)?F("STOP: This command installs a package globally, which modifies the system-wide environment outside the project. This can conflict with other projects or system tools. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"prefer-package-manager",description:"Blocks non-preferred package managers and tells Claude to use an allowed one (e.g., uv instead of pip)",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);if(!b)return D();let c=a.params?.allowed??[];if(0===c.length)return D();let d=new Set(c.map(a=>a.toLowerCase())),e=a.params?.blocked??[],f=c.join(", ");for(let a of b.split(aL)){let b=a.trim();if(!b)continue;let c=!1;for(let a of d){let d=aA[a];if(d){for(let a of d)if(a.test(b)){c=!0;break}if(c)break}}if(!c){for(let[a,c]of Object.entries(aA))if(!d.has(a)){for(let d of c)if(d.test(b))return E(`"${a}" is not an allowed package manager. Allowed package managers for this project: ${f}. Rewrite this command using an allowed package manager.`)}for(let a of e){let c=a.toLowerCase();if(!d.has(c)&&RegExp(`\\b${c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`).test(b))return E(`"${c}" is not an allowed package manager. Allowed package managers for this project: ${f}. Rewrite this command using an allowed package manager.`)}}}return D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System",params:{allowed:{type:"string[]",description:"Allowed package manager names (e.g. ['uv', 'bun']). Any detected manager not in this list is blocked.",default:[]},blocked:{type:"string[]",description:"Additional manager names to block beyond the built-in list (e.g. ['pdm', 'pipx']).",default:[]}}},{name:"warn-large-file-write",description:"Warn before writing files larger than 1MB (configurable via thresholdKb param)",fn:function(a){if("Write"!==a.toolName)return D();let b=a.toolInput?.content;if("string"!=typeof b)return D();let c=a.params?.thresholdKb??1024;return b.length>1024*c?F(`STOP: You are writing a file larger than ${c}KB (${Math.round(b.length/1024)}KB). This is unusually large. Confirm this is intentional before proceeding.`):D()},match:{events:["PreToolUse"],toolNames:["Write"]},defaultEnabled:!1,category:"Packages & System",params:{thresholdKb:{type:"number",description:"File size threshold in KB above which a warning is issued",default:1024}}},{name:"warn-background-process",description:"Warns before starting detached or background processes",fn:function(a){if("Bash"!==a.toolName)return D();let b=I(a);return aB.test(b)||aC.test(b)||aD.test(b)||aE.test(b)||aF.test(b)?F("STOP: This command starts a background or detached process (nohup, screen -d, tmux -d, or trailing &). Background processes persist after Claude's session and may be difficult to track or stop. Confirm with the user before executing."):D()},match:{events:["PreToolUse"],toolNames:["Bash"]},defaultEnabled:!1,category:"Packages & System"},{name:"warn-repeated-tool-calls",description:"Warn when the same tool is called 3+ times with identical parameters",fn:async function a(a){let b=a.session?.transcriptPath;if(!b||!a.toolName||!a.toolInput)return D();let c=`${b}.tool-calls.json`,d=JSON.stringify({tool:a.toolName,input:a.toolInput}),e={};try{let a=await (0,C.readFile)(c,"utf8");e=JSON.parse(a)}catch{}let f=e[d]??0;if(f>=3)return F(`STOP: You have already called ${a.toolName} ${f} times with identical parameters. This is wasteful and unproductive. Do NOT repeat this call — use a different approach or ask the user for clarification.`);e[d]=f+1;try{let a=JSON.stringify(e);a.length<=65536&&await (0,C.writeFile)(c,a,"utf8")}catch{}return D()},match:{events:["PreToolUse"]},defaultEnabled:!1,category:"AI Behavior"},{name:"require-commit-before-stop",description:"Require all changes to be committed before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping commit check.");try{if((0,x.execSync)("git status --porcelain",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim().length>0)return E("You have uncommitted changes in the working directory. Commit all changes now.");return D("All changes are committed.")}catch{return D("Not a git repository, skipping commit check.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow"},{name:"require-push-before-stop",description:"Require all commits to be pushed to remote before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping push check.");try{if(!(0,x.execSync)("git remote",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim())return D("No git remote configured, skipping push check.");let c=a.params?.remote??"origin",d=aH(b);if(!d||"HEAD"===d)return D("Detached HEAD, skipping push check.");let e=a.params?.baseBranch??"main";if(d===e)return D(`On base branch "${e}", skipping push check.`);try{if(!(0,x.execFileSync)("git",["log",`${c}/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No commits ahead of ${c}/${e}, skipping push check.`);if(!(0,x.execFileSync)("git",["diff","--stat",`${c}/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No file changes compared to ${c}/${e}, skipping push check.`)}catch{}let f=!1;try{(0,x.execFileSync)("git",["rev-parse","--verify",`${c}/${d}`],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}),f=!0}catch{}if(!f)return E(`Branch "${d}" has not been pushed to remote "${c}". Run now: git push -u ${c} ${d}`);let g=(0,x.execFileSync)("git",["log",`${c}/${d}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim();if(g.length>0){let a=g.split("\n").length;return E(`You have ${a} unpushed commit${a>1?"s":""} on branch "${d}". Run now: git push`)}return D(`All commits pushed to "${c}".`)}catch{return D("Could not check push status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow",params:{remote:{type:"string",description:"Remote name to push to (default: origin)",default:"origin"},baseBranch:{type:"string",description:"Base branch to compare against (default: main)",default:"main"}}},{name:"require-pr-before-stop",description:"Require a pull request to exist for the current branch before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping PR check.");try{let c;try{(0,x.execSync)("gh --version",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3})}catch{return D("GitHub CLI (gh) not installed, skipping PR check.")}let d=aH(b);if(!d||"HEAD"===d)return D("Detached HEAD, skipping PR check.");let e=a.params?.baseBranch??"main";if(d===e)return D(`On base branch "${e}", skipping PR check.`);try{if(!(0,x.execFileSync)("git",["log",`origin/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No commits ahead of origin/${e}, skipping PR check.`);if(!(0,x.execFileSync)("git",["diff","--stat",`origin/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`No file changes compared to origin/${e}, skipping PR check.`)}catch{}try{c=(0,x.execSync)("gh pr view --json number,url,state",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim()}catch{return E(`No pull request found for branch "${d}". Run now: gh pr create`)}let f=JSON.parse(c);if("OPEN"===f.state)return D(`PR #${f.number} exists: ${f.url}`);if("MERGED"===f.state)try{if((0,x.execFileSync)("git",["fetch","origin",`+refs/heads/${e}:refs/remotes/origin/${e}`],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:1e4}),!(0,x.execFileSync)("git",["log",`origin/${e}..HEAD`,"--oneline"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`PR #${f.number} was merged; branch is up to date with ${e}.`);if(!(0,x.execFileSync)("git",["diff","--stat",`origin/${e}`,"HEAD"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim())return D(`PR #${f.number} was merged; no file changes vs ${e}.`)}catch{}return E(`Pull request for branch "${d}" is ${f.state.toLowerCase()}. Run now: gh pr create`)}catch{return D("Could not check PR status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow",params:{baseBranch:{type:"string",description:"Base branch to compare against (default: main)",default:"main"}}},{name:"require-no-conflicts-before-stop",description:"Require the current branch to merge cleanly with the base branch before Claude stops",fn:function(a){let b,c,d=a.session?.cwd;if(!d)return D("No working directory available, skipping conflict check.");let e=aH(d);if(!e||"HEAD"===e)return D("Detached HEAD, skipping conflict check.");let f=a.params?.baseBranch??"main";if(e===f)return D(`On base branch "${f}", skipping conflict check.`);let g=!1;try{(0,x.execFileSync)("git",["rev-parse","--verify",`origin/${f}`],{cwd:d,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}),(0,x.execFileSync)("git",["log",`origin/${f}..HEAD`,"--oneline"],{cwd:d,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:5e3}).trim()?(0,x.execFileSync)("git",["merge-tree","--write-tree","--name-only",`origin/${f}`,"HEAD"],{cwd:d,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:1e4}):g=!0}catch(a){if(1===a.status){let b=("string"==typeof a.stdout?a.stdout:a.stdout?.toString("utf8")??"").trim().split("\n"),c=[];for(let a=1;a<b.length;a++){let d=b[a];if(""===d)break;c.push(d)}let d=c.length?c.join(", "):"one or more files";return E(`Branch "${e}" has merge conflicts with ${f} in: ${d}. Rebase or merge origin/${f} now and resolve the conflicts.`)}g=!0}try{(0,x.execSync)("gh --version",{cwd:d,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3})}catch{return D(g?"Local conflict check skipped and gh CLI not installed, skipping conflict check.":`Branch "${e}" merges cleanly with ${f} locally (gh CLI not installed, PR mergeability not verified).`)}try{b=(0,x.execSync)("gh pr view --json mergeable,number,url",{cwd:d,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim()}catch{return D(g?"No pull request found for branch, skipping conflict check.":`Branch "${e}" merges cleanly with ${f} locally (no PR to verify against).`)}try{c=JSON.parse(b)}catch{return D("Could not parse gh pr view output, skipping PR mergeability check.")}return"CONFLICTING"===c.mergeable?E(`PR #${c.number} has merge conflicts per GitHub (${c.url}). Rebase or merge origin/${f} now and resolve the conflicts.`):"UNKNOWN"===c.mergeable?E(`GitHub is still computing mergeability for PR #${c.number} (${c.url}). Wait ~10 seconds, then re-check with \`gh pr view --json mergeable\` before attempting to stop again.`):D(`PR #${c.number} merges cleanly per GitHub.`)},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow",params:{baseBranch:{type:"string",description:"Base branch to check for conflicts against (default: main)",default:"main"}}},{name:"require-ci-green-before-stop",description:"Require CI checks to pass on the current branch before Claude stops",fn:function(a){let b=a.session?.cwd;if(!b)return D("No working directory available, skipping CI check.");try{try{(0,x.execSync)("gh --version",{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3})}catch{return D("GitHub CLI (gh) not installed, skipping CI check.")}let a=aH(b);if(!a||"HEAD"===a)return D("Detached HEAD, skipping CI check.");let c=[];try{let d=(0,x.execFileSync)("gh",["run","list","--branch",a,"--limit","5","--json","status,conclusion,name"],{cwd:b,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();d&&"[]"!==d&&(c=JSON.parse(d))}catch{}let d=[],e=[],f=function(a){try{return(0,x.execSync)("git rev-parse HEAD",{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:3e3}).trim()||null}catch{return null}}(b);f&&(d=function(a,b){try{let c=(0,x.execFileSync)("gh",["api",`repos/{owner}/{repo}/commits/${b}/check-runs`,"--jq",'.check_runs | map(select(.app.slug != "github-actions")) | map({name: .name, status: .status, conclusion: (.conclusion // "")})'],{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();if(!c||"[]"===c)return[];return JSON.parse(c)}catch{return[]}}(b,f),e=function(a,b){try{let c=(0,x.execFileSync)("gh",["api",`repos/{owner}/{repo}/commits/${b}/statuses`,"--jq","map({name: .context, state: .state}) | unique_by(.name)"],{cwd:a,encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}).trim();if(!c||"[]"===c)return[];return JSON.parse(c).map(a=>({name:a.name,status:"pending"===a.state?"in_progress":"completed",conclusion:"pending"===a.state?"":"success"===a.state?"success":"failure"}))}catch{return[]}}(b,f));let g=[...c,...d,...e];if(0===g.length)return D(`No CI runs found for branch "${a}".`);let h=g.filter(a=>"completed"===a.status&&"success"!==a.conclusion&&"skipped"!==a.conclusion&&"cancelled"!==a.conclusion);if(h.length>0){let b=h.map(a=>`"${a.name}"`).join(", ");return E(`CI checks are failing on branch "${a}": ${b}. Fix the failing checks now.`)}let i=g.filter(a=>"in_progress"===a.status||"queued"===a.status||"waiting"===a.status);if(i.length>0){let b=i.map(a=>`"${a.name}"`).join(", ");return E(`CI checks are still running on branch "${a}": ${b}. Wait for all checks to complete, then verify they pass.`)}return D(`All CI checks passed on branch "${a}".`)}catch{return D("Could not check CI status, skipping.")}},match:{events:["Stop"]},defaultEnabled:!1,category:"Workflow"}];async function aN(a,b={}){let{includeBeta:c=!1}=b;if(!process.stdin.isTTY){let b=aM.filter(a=>c||!a.beta);return a?a.filter(a=>b.some(b=>b.name===a)):b.filter(a=>a.defaultEnabled).map(a=>a.name)}let d=a?new Set(a):null,e=aM.filter(a=>c||!a.beta).map(a=>({name:a.name,description:a.description,category:a.category,selected:d?d.has(a.name):a.defaultEnabled,beta:!!a.beta})),f=e.length,g=0,h="",i=0,j=!1;function k(){if(!h)return e;let a=h.toLowerCase();return e.filter(b=>b.name.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}function l(){let a=process.stdout.columns||120;j||(process.stdout.write("\x1b[?25l"),j=!0);let b=k(),d=b.length;d>0&&g>=d&&(g=d-1);let l=[];l.push(" Failproof AI — Policy Manager"),l.push("");let m=Math.max(20,a-6),n=" ┌"+"─".repeat(m+2)+"┐",o=" └"+"─".repeat(m+2)+"┘",p=h?` \x1b[2m(${d}/${f})\x1b[0m`:` \x1b[2m(${f} policies)\x1b[0m`,q=`\x1b[1mSearch:\x1b[0m ${h}\x1b[7m \x1b[0m${p}`;if(l.push(n),l.push(` \u2502 ${q}`),l.push(o),l.push(""),0===d){l.push(" \x1b[2mNo policies match “"+h+"”\x1b[0m");for(let a=0;a<9;a++)l.push("")}else{let c=function(a){let b=[],c=new Map,d=new Map;for(let a of e)c.has(a.category)||(b.push(a.category),c.set(a.category,0),d.set(a.category,0)),d.set(a.category,d.get(a.category)+1),a.selected&&c.set(a.category,c.get(a.category)+1);let f=new Map;for(let b of a){let a=f.get(b.category)??[];a.push(b),f.set(b.category,a)}let g=[],h=0;for(let a of b){let b=f.get(a);if(b&&0!==b.length)for(let e of(g.push({kind:"header",category:a,enabledCount:c.get(a),totalCount:d.get(a)}),b))g.push({kind:"item",item:e,filteredIndex:h++})}return g}(b),d=0;for(let a=0;a<c.length;a++){let b=c[a];if("item"===b.kind&&b.filteredIndex===g){d=a;break}}let f=d-Math.floor(4);f=Math.min(f=Math.max(0,f),Math.max(0,c.length-8));let h=Math.min(c.length,f+8),i=c.slice(0,f).filter(a=>"item"===a.kind).length;i>0?l.push(` \x1b[2m \u2191 ${i} more above\x1b[0m`):l.push("");for(let b=f;b<h;b++){let d=c[b];if("header"===d.kind){let b=` ${d.category.toUpperCase()} (${d.enabledCount}/${d.totalCount}) `,c=Math.max(2,a-2-(3+b.length));l.push(` \x1b[2m\u2500\u2500 ${b}${"─".repeat(c)}\x1b[0m`)}else{let a=d.item,b=d.filteredIndex===g,c=b?"\x1b[36m❯\x1b[0m":" ",e=a.selected?"\x1b[32m[✓]\x1b[0m":"[ ]",f=b?`\x1b[1;36m${a.name}\x1b[0m`:a.name,h=a.beta?" \x1b[35m[beta]\x1b[0m":"",i=" ".repeat(Math.max(1,28-a.name.length)),j=`\x1b[2m${a.description}\x1b[0m`;l.push(` ${c} ${e} ${f}${h}${i}${j}`)}}for(let a=h-f;a<8;a++)l.push("");let j=c.slice(h).filter(a=>"item"===a.kind).length;j>0?l.push(` \x1b[2m \u2193 ${j} more below\x1b[0m`):l.push("")}l.push(""),l.push(" \x1b[2m"+"─".repeat(a-2)+"\x1b[0m"),l.push(" [↑↓] Move [Space] Toggle [Ctrl+A] All [Ctrl+S] Save [Esc] Clear [^C] Quit"),l.push(""),l.push(" \x1b[2mTip: `policies` for a flat list · `policies --install <name…>` to skip prompt\x1b[0m"),c||l.push(" \x1b[2mTip: `policies --install --beta` to include beta policies\x1b[0m"),i>0&&process.stdout.write(`\x1b[${i}A\x1b[J`);let r=l.map(b=>""===b?b:function(a,b){let c=0,d="",e=0;for(;e<a.length;)if("\x1b"===a[e]&&"["===a[e+1]){let b=e+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;b++,d+=a.slice(e,b),e=b}else{if(c>=b)break;d+=a[e],c++,e++}return d}(b,a)).join("\n")+"\n";process.stdout.write(r),i=l.length}return new Promise(a=>{function b(b,d){if(!d)return;d.ctrl&&"c"===d.name&&(c(),process.exit(0));let f=k();if("up"===d.name)f.length>0&&(g=g>0?g-1:f.length-1),l();else if("down"===d.name)f.length>0&&(g=g<f.length-1?g+1:0),l();else if("return"===d.name||"space"===d.name){let a=f[g];a&&(a.selected=!a.selected),l()}else if("escape"===d.name)h="",g=0,l();else if(d.ctrl&&"a"===d.name){let a=f.length>0&&f.every(a=>a.selected);for(let b of f)b.selected=!a;l()}else if(d.ctrl&&"s"===d.name){c();let b=e.filter(a=>a.selected).map(a=>a.name);process.stdout.write("\n"),a(b)}else"backspace"===d.name||"delete"===d.name?h.length>0&&(h=h.slice(0,-1),g=0,l()):!b||1!==b.length||d.ctrl||d.meta||(h+=b,g=0,l())}function c(){j&&(process.stdout.write("\x1b[?25h"),j=!1),process.stdin.removeListener("keypress",b),process.stdin.setRawMode(!1),process.stdin.pause()}l(),process.stdin.setRawMode(!0),process.stdin.resume(),B.emitKeypressEvents(process.stdin),process.stdin.on("keypress",b)})}var aO=a.i(57764);let aP="__failproofai_custom_hooks__";var aQ=a.i(24868),aR=a.i(14747),aS=a.i(92509);let aT=".__failproofai_tmp__.mjs",aU=/(?:import\s+(?:[\s\S]*?\s+from\s+)?|export\s+(?:[\s\S]*?\s+from\s+))(['"])(\.\.?\/[^'"]+)\1/g,aV=/require\s*\(\s*(['"])(\.\.?\/[^'"]+)\1\s*\)/g;async function aW(a){try{return await (0,aQ.access)(a),!0}catch{return!1}}async function aX(){let a=process.env.FAILPROOFAI_DIST_PATH;if(a){let b=(0,aR.resolve)(a,"index.js");if(await aW(b))return b}for(let a of[(0,aR.resolve)((0,aR.dirname)(process.execPath),"..","assets","dist","index.js"),(0,aR.resolve)(process.cwd(),"dist","index.js"),(0,aR.resolve)(process.cwd(),"node_modules","failproofai","dist","index.js")])if(await aW(a))return a;return null}async function aY(a,b){let c=(0,aR.resolve)(a,b);for(let a of[c,`${c}.js`,`${c}.mjs`,`${c}.ts`,(0,aR.resolve)(c,"index.js")])if(await aW(a))return a;return null}async function aZ(a,b){let c=a+".__failproofai_esm_shim__.mjs",d=`import _cjs from '${b}';
4
4
  export const customPolicies = _cjs.customPolicies;
5
5
  export const getCustomHooks = _cjs.getCustomHooks;
6
6
  export const clearCustomHooks = _cjs.clearCustomHooks;
@@ -12,6 +12,6 @@ Valid policies: ${a}`)}}function be(a,b){let c=a9(a,b);if(!(0,e.existsSync)(c))r
12
12
  Use either: --install all or --install block-sudo sanitize-jwt ...`)}let l=function(){try{return(0,x.execSync)("which failproofai",{encoding:"utf8"}).trim().split("\n")[0].trim()}catch{throw new a7("failproofai binary not found in PATH.\nInstall it globally first: npm install -g failproofai")}}(),m=v(b,c),n=new Set(m.enabledPolicies);if(void 0!==a){let b;b=1===a.length&&"all"===a[0]?aM.filter(a=>d||!a.beta).map(a=>a.name):a,j=[...new Set([...m.enabledPolicies,...b])]}else{let a=m.enabledPolicies.length>0?m.enabledPolicies:void 0;j=await aN(a,{includeBeta:d})}let o={...m,enabledPolicies:j};if(i)delete o.customPoliciesPath;else if(h){o.customPoliciesPath=(0,f.resolve)(h);let a=[];try{a=await a2(o.customPoliciesPath,{strict:!0})}catch(a){console.error(`Error: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}0===a.length&&(console.error(`Error: no hooks registered in ${h}. Make sure your file calls customPolicies.add(...) at least once.`),process.exit(1)),console.log(`
13
13
  Validated ${a.length} custom hook(s): ${a.map(a=>a.name).join(", ")}`)}w(o,b,c),console.log(`
14
14
  Enabled ${j.length} policy(ies): ${j.join(", ")}`),i?console.log("Custom hooks path cleared."):o.customPoliciesPath&&console.log(`Custom hooks path: ${o.customPoliciesPath}`);let p=a9(b,c),q=ba(p);for(let a of(q.hooks||(q.hooks={}),z)){let c={type:"command",command:"project"===b?`npx -y failproofai --hook ${a}`:`"${l}" --hook ${a}`,timeout:6e4,[A]:!0};q.hooks[a]||(q.hooks[a]=[]);let d=q.hooks[a],e=!1;for(let a of d){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>bc(a));if(b>=0){a.hooks[b]=c,e=!0;break}}e||d.push({hooks:[c]})}bb(p,q);try{let a=new Set(j),c=j.filter(a=>!n.has(a)),d=[...n].filter(b=>!a.has(b)),f=(0,a6.getInstanceId)();await a5(f,"hooks_installed",{scope:b,policies:j,policy_count:j.length,policies_added:c,policies_removed:d,...e?{source:e}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,a6.hashToId)((0,g.hostname)()),has_custom_hooks_path:!!o.customPoliciesPath,has_policy_params:!!(o.policyParams&&Object.keys(o.policyParams).length>0),param_policy_names:o.policyParams?Object.keys(o.policyParams):[],command_format:"project"===b?"npx":"absolute"})}catch{}console.log(`Failproof AI hooks installed for all ${z.length} event types (scope: ${b}).`),console.log(`Settings: ${p}`),"project"===b?(console.log("Command: npx -y failproofai"),console.log(`
15
- This file can be committed to git — no machine-specific paths.`)):console.log(`Binary: ${l}`);let r=(k=new Set,y.filter(a=>{let b=a9(a,c);return!k.has(b)&&(k.add(b),!0)})).filter(a=>a!==b).filter(a=>be(a,c));if(r.length>0){let a=r.map(a=>`${a} (${function(a){switch(a){case"user":return"~/.claude/settings.json";case"project":return"{cwd}/.claude/settings.json";case"local":return"{cwd}/.claude/settings.local.json"}}(a)})`).join(", ");console.log(),console.log(`\x1b[33mWarning: Failproof AI hooks are also installed at ${a}.\x1b[0m`),console.log("Having hooks in multiple scopes may cause duplicate policy evaluation."),console.log(`Use \`failproofai policies --uninstall --scope ${r[0]}\` to remove the other installation,`),console.log("or `failproofai policies` to see all scopes.")}}async function bg(a,b="user",c,d){let f="all"===b?"user":b;if(d?.removeCustomHooks){let a=v(f,c);delete a.customPoliciesPath,w(a,f,c),console.log("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){bd(a);let e=v(f,c),h=new Set(a),i=e.enabledPolicies.filter(a=>!h.has(a)),j=a.filter(a=>!e.enabledPolicies.includes(a));j.length>0&&console.log(`Warning: policy(ies) not currently enabled: ${j.join(", ")}`);let{policyParams:k,...l}=e,m=k?Object.fromEntries(Object.entries(k).filter(([a])=>!h.has(a))):null;w({...l,enabledPolicies:i,...m&&Object.keys(m).length>0?{policyParams:m}:{}},f,c);try{let c=(0,a6.getInstanceId)(),f=a.filter(a=>e.enabledPolicies.includes(a));await a5(c,"hooks_removed",{scope:b,removal_mode:d?.betaOnly?"beta_policies":"policies",beta_only:d?.betaOnly??!1,policies_removed:f,removed_count:f.length,...d?.source?{source:d.source}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,a6.hashToId)((0,g.hostname)())})}catch{}console.log(`Disabled ${a.length-j.length} policy(ies).`),console.log(`Remaining: ${i.length>0?i.join(", "):"(none)"}`);return}let h=v(f,c),i="all"===b?[...y]:[b],j=0;for(let a of i){let d=a9(a,c);if(!(0,e.existsSync)(d)){if("all"!==b)return void console.log("No settings file found. Nothing to remove.");continue}if(!ba(d).hooks){if("all"!==b)return void console.log("No hooks found in settings. Nothing to remove.");continue}let f=function(a){let b=ba(a);if(!b.hooks)return 0;let c=0;for(let a of Object.keys(b.hooks)){let d=b.hooks[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!bc(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,bb(a,b),c}(d);j+=f,"all"!==b&&(console.log(`Removed ${f} failproofai hook(s) from settings.`),console.log(`Settings: ${d}`))}if("all"===b)for(let a of(console.log(`Removed ${j} failproofai hook(s) from all scopes.`),i))console.log(` ${a}: ${a9(a,c)}`);try{let a=(0,a6.getInstanceId)();await a5(a,"hooks_removed",{scope:b,removal_mode:"hooks",policies_removed:h.enabledPolicies,removed_count:j,...d?.source?{source:d.source}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,a6.hashToId)((0,g.hostname)())})}catch{}if("all"===b)for(let a of y){let b=v(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,policyParams:e,...f}=b;w({...f,enabledPolicies:[]},a,c)}}else if(!y.some(a=>be(a,c))){let{customPoliciesPath:a,policyParams:b,...d}=v(f,c);w({...d,enabledPolicies:[]},f,c)}}var bh=a.i(13095);async function bi(a){if(!(0,e.existsSync)(a))return[];let b=await (0,C.readFile)(a,"utf-8"),c=[],d=b.split(/customPolicies\.add\s*\(/);for(let a=1;a<d.length;a++){let b=d[a],e=b.match(/name:\s*["'`]([^"'`]+)["'`]/);if(!e)continue;let f=b.match(/description:\s*["'`]([^"'`]+)["'`]/),g=b.match(/events:\s*\[([^\]]+)\]/),h=g?g[1].replace(/["'`\s]/g,"").split(",").filter(Boolean).join(", "):void 0;c.push({name:e[1],description:f?.[1],eventScope:h})}return c}async function bj(){let a=s(),b=new Set(a.enabledPolicies),c=y.filter(a=>be(a)),d=a9(c[0]??"user"),e=aM.map(c=>{var d;let e,f;return{name:c.name,description:c.description,category:c.category,defaultEnabled:c.defaultEnabled,beta:!!c.beta,enabled:b.has(c.name),eventScope:(d=c.match,e=d.events?.join(", ")??"",f=d.toolNames?` \xb7 ${d.toolNames.join(", ")}`:"",`${e}${f}`),params:c.params?Object.fromEntries(Object.entries(c.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])):void 0,currentParams:c.params?a.policyParams?.[c.name]??{}:void 0}}),f=a.customPoliciesPath?await bi(a.customPoliciesPath):void 0;return{enabledPolicies:a.enabledPolicies,installedScopes:c,settingsPath:d,policies:e,customPoliciesPath:a.customPoliciesPath,customPolicies:f?.length?f:void 0}}async function bk(a,b){let c=s(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),t({...c,enabledPolicies:[...d]});try{let c=(0,a6.getInstanceId)();await a5(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function bl(a="user"){let b=s(),c=b.enabledPolicies.length>0?b.enabledPolicies:aM.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name);await bf(c,a,void 0,!1,"web")}async function bm(a="user"){await bg(void 0,a,void 0,{source:"web"})}async function bn(a,b){let c=s(),d={...c.policyParams??{},[a]:b};t({...c,policyParams:d});try{let c=(0,a6.getInstanceId)();await a5(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,bh.ensureServerEntryExports)([bj]),(0,d.registerServerReference)(bj,"0072b138ce51ff79fc320e42b6689a1d757d17fa7f",null),(0,bh.ensureServerEntryExports)([bk]),(0,d.registerServerReference)(bk,"608554ecdd52c3921fd0860109d0c3d2544434bc2d",null),(0,bh.ensureServerEntryExports)([bl,bm]),(0,d.registerServerReference)(bl,"40e8da753e5e3a18e7b8c1feb9022f40a191babc6a",null),(0,d.registerServerReference)(bm,"40ab1268d4b2bd2e9b5b6cd8fad2c304a464b84950",null),(0,bh.ensureServerEntryExports)([bn]),(0,d.registerServerReference)(bn,"6045cdfad98dd03e94ec029d12cf77d8b5fb088c08",null),a.s([],63895),a.i(63895),a.s(["0072b138ce51ff79fc320e42b6689a1d757d17fa7f",0,bj,"00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",()=>b.getTelemetryConfig,"4070a18378631b07d4483d07ef780bcab3ee258a96",()=>c.getHookActivityAction,"40ab1268d4b2bd2e9b5b6cd8fad2c304a464b84950",0,bm,"40e8da753e5e3a18e7b8c1feb9022f40a191babc6a",0,bl,"6045cdfad98dd03e94ec029d12cf77d8b5fb088c08",0,bn,"6070579009a9fc8bc30503a0e3f1e8158350f338ea",()=>c.searchHookActivityAction,"608554ecdd52c3921fd0860109d0c3d2544434bc2d",0,bk],11369)}];
15
+ This file can be committed to git — no machine-specific paths.`)):console.log(`Binary: ${l}`);let r=(k=new Set,y.filter(a=>{let b=a9(a,c);return!k.has(b)&&(k.add(b),!0)})).filter(a=>a!==b).filter(a=>be(a,c));if(r.length>0){let a=r.map(a=>`${a} (${function(a){switch(a){case"user":return"~/.claude/settings.json";case"project":return"{cwd}/.claude/settings.json";case"local":return"{cwd}/.claude/settings.local.json"}}(a)})`).join(", ");console.log(),console.log(`\x1b[33mWarning: Failproof AI hooks are also installed at ${a}.\x1b[0m`),console.log("Having hooks in multiple scopes may cause duplicate policy evaluation."),console.log(`Use \`failproofai policies --uninstall --scope ${r[0]}\` to remove the other installation,`),console.log("or `failproofai policies` to see all scopes.")}}async function bg(a,b="user",c,d){let f="all"===b?"user":b;if(d?.removeCustomHooks){let a=v(f,c);delete a.customPoliciesPath,w(a,f,c),console.log("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){bd(a);let e=v(f,c),h=new Set(a),i=e.enabledPolicies.filter(a=>!h.has(a)),j=a.filter(a=>!e.enabledPolicies.includes(a));j.length>0&&console.log(`Warning: policy(ies) not currently enabled: ${j.join(", ")}`);let{policyParams:k,...l}=e,m=k?Object.fromEntries(Object.entries(k).filter(([a])=>!h.has(a))):null;w({...l,enabledPolicies:i,...m&&Object.keys(m).length>0?{policyParams:m}:{}},f,c);try{let c=(0,a6.getInstanceId)(),f=a.filter(a=>e.enabledPolicies.includes(a));await a5(c,"hooks_removed",{scope:b,removal_mode:d?.betaOnly?"beta_policies":"policies",beta_only:d?.betaOnly??!1,policies_removed:f,removed_count:f.length,...d?.source?{source:d.source}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,a6.hashToId)((0,g.hostname)())})}catch{}console.log(`Disabled ${a.length-j.length} policy(ies).`),console.log(`Remaining: ${i.length>0?i.join(", "):"(none)"}`);return}let h=v(f,c),i="all"===b?[...y]:[b],j=0;for(let a of i){let d=a9(a,c);if(!(0,e.existsSync)(d)){if("all"!==b)return void console.log("No settings file found. Nothing to remove.");continue}if(!ba(d).hooks){if("all"!==b)return void console.log("No hooks found in settings. Nothing to remove.");continue}let f=function(a){let b=ba(a);if(!b.hooks)return 0;let c=0;for(let a of Object.keys(b.hooks)){let d=b.hooks[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!bc(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,bb(a,b),c}(d);j+=f,"all"!==b&&(console.log(`Removed ${f} failproofai hook(s) from settings.`),console.log(`Settings: ${d}`))}if("all"===b)for(let a of(console.log(`Removed ${j} failproofai hook(s) from all scopes.`),i))console.log(` ${a}: ${a9(a,c)}`);try{let a=(0,a6.getInstanceId)();await a5(a,"hooks_removed",{scope:b,removal_mode:"hooks",policies_removed:h.enabledPolicies,removed_count:j,...d?.source?{source:d.source}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,a6.hashToId)((0,g.hostname)())})}catch{}if("all"===b)for(let a of y){let b=v(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,policyParams:e,...f}=b;w({...f,enabledPolicies:[]},a,c)}}else if(!y.some(a=>be(a,c))){let{customPoliciesPath:a,policyParams:b,...d}=v(f,c);w({...d,enabledPolicies:[]},f,c)}}var bh=a.i(13095);async function bi(a){if(!(0,e.existsSync)(a))return[];let b=await (0,C.readFile)(a,"utf-8"),c=[],d=b.split(/customPolicies\.add\s*\(/);for(let a=1;a<d.length;a++){let b=d[a],e=b.match(/name:\s*["'`]([^"'`]+)["'`]/);if(!e)continue;let f=b.match(/description:\s*["'`]([^"'`]+)["'`]/),g=b.match(/events:\s*\[([^\]]+)\]/),h=g?g[1].replace(/["'`\s]/g,"").split(",").filter(Boolean).join(", "):void 0;c.push({name:e[1],description:f?.[1],eventScope:h})}return c}async function bj(){let a=s(),b=new Set(a.enabledPolicies),c=y.filter(a=>be(a)),d=a9(c[0]??"user"),e=aM.map(c=>{var d;let e,f;return{name:c.name,description:c.description,category:c.category,defaultEnabled:c.defaultEnabled,beta:!!c.beta,enabled:b.has(c.name),eventScope:(d=c.match,e=d.events?.join(", ")??"",f=d.toolNames?` \xb7 ${d.toolNames.join(", ")}`:"",`${e}${f}`),params:c.params?Object.fromEntries(Object.entries(c.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])):void 0,currentParams:c.params?a.policyParams?.[c.name]??{}:void 0}}),f=a.customPoliciesPath?await bi(a.customPoliciesPath):void 0;return{enabledPolicies:a.enabledPolicies,installedScopes:c,settingsPath:d,policies:e,customPoliciesPath:a.customPoliciesPath,customPolicies:f?.length?f:void 0}}async function bk(a,b){let c=s(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),t({...c,enabledPolicies:[...d]});try{let c=(0,a6.getInstanceId)();await a5(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function bl(a="user"){let b=s(),c=b.enabledPolicies.length>0?b.enabledPolicies:aM.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name);await bf(c,a,void 0,!1,"web")}async function bm(a="user"){await bg(void 0,a,void 0,{source:"web"})}async function bn(a,b){let c=s(),d={...c.policyParams??{},[a]:b};t({...c,policyParams:d});try{let c=(0,a6.getInstanceId)();await a5(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,bh.ensureServerEntryExports)([bj]),(0,d.registerServerReference)(bj,"004ef7b6530cf52067516afda1d5f4e0254443f59c",null),(0,bh.ensureServerEntryExports)([bk]),(0,d.registerServerReference)(bk,"60894fe08f2b40598345cd152aa47b9e695679213b",null),(0,bh.ensureServerEntryExports)([bl,bm]),(0,d.registerServerReference)(bl,"40ae76a373c285a1eb1c02278284429df96113415e",null),(0,d.registerServerReference)(bm,"40e1b60df8ee4d9b17029ad7cb7c204ee1066cb967",null),(0,bh.ensureServerEntryExports)([bn]),(0,d.registerServerReference)(bn,"6033e9e0fdaab5aba9b1d1b2d73ab430812662040c",null),a.s([],63895),a.i(63895),a.s(["004ef7b6530cf52067516afda1d5f4e0254443f59c",0,bj,"00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",()=>b.getTelemetryConfig,"407de97ad7d5eabfab84200aefe9a2b1007ea9ef36",()=>c.getHookActivityAction,"40ae76a373c285a1eb1c02278284429df96113415e",0,bl,"40e1b60df8ee4d9b17029ad7cb7c204ee1066cb967",0,bm,"6033e9e0fdaab5aba9b1d1b2d73ab430812662040c",0,bn,"603fba4e4a7082b4b2a473a258bcef9f37d518d8d2",()=>c.searchHookActivityAction,"60894fe08f2b40598345cd152aa47b9e695679213b",0,bk],11369)}];
16
16
 
17
17
  //# sourceMappingURL=%5Broot-of-the-server%5D__0w6l33k._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},6236,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d=(0,c.createContext)(void 0);a.s(["AutoRefreshProvider",0,function({children:a}){let[e,f]=(0,c.useState)(0);return(0,b.jsx)(d.Provider,{value:{intervalSec:e,setIntervalSec:f},children:a})},"useAutoRefresh",0,function(){let a=(0,c.useContext)(d);if(!a)throw Error("useAutoRefresh must be used within AutoRefreshProvider");return a}])},3314,a=>{"use strict";let b=(0,a.i(70106).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",0,b],3314)},40695,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(97895);let e=c.forwardRef(({className:a,variant:c="default",size:e="default",...f},g)=>(0,b.jsx)("button",{className:(0,d.cn)("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none",{"bg-primary text-primary-foreground hover:bg-primary/90":"default"===c,"hover:bg-muted hover:text-muted-foreground":"ghost"===c,"border border-border bg-background hover:bg-muted":"outline"===c,"h-10 py-2 px-4":"default"===e,"h-10 w-10":"icon"===e,"h-9 px-3":"sm"===e,"h-11 px-8":"lg"===e},a),ref:g,...f}));e.displayName="Button",a.s(["Button",0,e])},5784,a=>{"use strict";let b=(0,a.i(70106).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],5784)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},40675,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])}];
1
+ module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},6236,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d=(0,c.createContext)(void 0);a.s(["AutoRefreshProvider",0,function({children:a}){let[e,f]=(0,c.useState)(0);return(0,b.jsx)(d.Provider,{value:{intervalSec:e,setIntervalSec:f},children:a})},"useAutoRefresh",0,function(){let a=(0,c.useContext)(d);if(!a)throw Error("useAutoRefresh must be used within AutoRefreshProvider");return a}])},3314,a=>{"use strict";let b=(0,a.i(70106).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",0,b],3314)},40695,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(97895);let e=c.forwardRef(({className:a,variant:c="default",size:e="default",...f},g)=>(0,b.jsx)("button",{className:(0,d.cn)("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none",{"bg-primary text-primary-foreground hover:bg-primary/90":"default"===c,"hover:bg-muted hover:text-muted-foreground":"ghost"===c,"border border-border bg-background hover:bg-muted":"outline"===c,"h-10 py-2 px-4":"default"===e,"h-10 w-10":"icon"===e,"h-9 px-3":"sm"===e,"h-11 px-8":"lg"===e},a),ref:g,...f}));e.displayName="Button",a.s(["Button",0,e])},5784,a=>{"use strict";let b=(0,a.i(70106).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],5784)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},38201,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0kyh86x._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0xezw2w._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.3",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\"",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",null),a.s(["getTelemetryConfig",0,m],36359)},165,a=>{"use strict";var b=a.i(36359);a.s([],84833),a.i(84833),a.s(["00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",()=>b.getTelemetryConfig],165)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
1
+ module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.5",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",null),a.s(["getTelemetryConfig",0,m],36359)},165,a=>{"use strict";var b=a.i(36359);a.s([],84833),a.i(84833),a.s(["00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",()=>b.getTelemetryConfig],165)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__11pa2ra._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.3",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\"",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",null),a.s(["getTelemetryConfig",0,m],36359)},37985,a=>{"use strict";var b=a.i(36359);a.s([],80194),a.i(80194),a.s(["00b8564d2dcca3fd6502d4d943582d4d2890bdf3a1",()=>b.getTelemetryConfig],37985)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
1
+ module.exports=[2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},37936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},12072,(a,b,c)=>{b.exports={name:"failproofai",version:"0.0.6-beta.5",description:"The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",bin:{failproofai:"./dist/cli.mjs"},files:["bin/","src/","scripts/","lib/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",postinstall:"node scripts/postinstall.mjs",preuninstall:"node scripts/preuninstall.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate"},keywords:["claude","claude-code","claude-agents-sdk","anthropic","ai-agent","agent-reliability","agent-monitoring","autonomous-agent","failure-prevention","developer-tools","devtools","cli","local-first","hooks","policies"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/exospherehost/failproofai",repository:{type:"git",url:"https://github.com/exospherehost/failproofai.git"},bugs:{url:"https://github.com/exospherehost/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","@tanstack/react-virtual":"^3.13.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^25.5.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.2.0","eslint-config-next":"^16.2.2","happy-dom":"^20.7.0","lucide-react":"^1.0.1",next:"^16.2.2",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.1.18",typescript:"^6.0.2","@anthropic-ai/sdk":"^0.90.0",vitest:"^4.0.18"},dependencies:{"posthog-node":"^5.28.11"}}},13095,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},36359,69839,79779,a=>{"use strict";let b;var c=a.i(37936),d=a.i(2157),e=a.i(50227),f=a.i(60526),g=a.i(66680);a.i(74533);let h=e.default.join(f.default.homedir(),".failproofai"),i=e.default.join(h,"instance-id");function j(a){return g.default.createHmac("sha256","failproofai-telemetry-v1").update(a).digest("hex")}function k(){if(b)return b;let a=function(){try{for(let a of(f.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let b=d.default.readFileSync(a,"utf-8").trim();if(b)return b}catch{}}catch{}}();if(a)return b=j(a);let c=[f.default.hostname(),f.default.homedir(),f.default.platform(),f.default.arch(),f.default.cpus()[0]?.model??""].join(":");return b=c?j(c):function(){try{let a=d.default.readFileSync(i,"utf-8").trim();if(a)return a}catch{}let a=g.default.randomUUID();try{d.default.mkdirSync(h,{recursive:!0}),d.default.writeFileSync(i,a,"utf-8")}catch{}return a}()}a.s(["getInstanceId",0,k,"hashToId",0,j],69839),a.s(["POSTHOG_API_KEY",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX"],79779);var l=a.i(12072);async function m(){let a="1"!==process.env.FAILPROOFAI_TELEMETRY_DISABLED;return{enabled:a,distinctId:a?k():"",apiKey:process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",host:process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com",version:l.version}}(0,a.i(13095).ensureServerEntryExports)([m]),(0,c.registerServerReference)(m,"00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",null),a.s(["getTelemetryConfig",0,m],36359)},37985,a=>{"use strict";var b=a.i(36359);a.s([],80194),a.i(80194),a.s(["00a0fdf0cfdb06d9140b027f639ae94eae9b224d7c",()=>b.getTelemetryConfig],37985)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12dv.x0._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__12t-wym._.js.map