failproofai 1.0.0-beta.2 → 1.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +6 -6
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  11. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
  17. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  22. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  23. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  24. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  25. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  26. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  27. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/audit/run/route.js +2 -2
  30. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/auth/reminder/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +1 -1
  37. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
  39. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  40. package/.next/standalone/.next/server/app/audit/page.js +1 -1
  41. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/index.html +1 -1
  44. package/.next/standalone/.next/server/app/index.rsc +15 -15
  45. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  46. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  47. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  48. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  49. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  50. package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
  51. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  52. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
  55. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +30 -18
  56. package/.next/standalone/.next/server/app/policies/page.js +2 -2
  57. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
  60. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  61. package/.next/standalone/.next/server/app/project/[name]/page.js +1 -1
  62. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
  65. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  66. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  67. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +1 -1
  68. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
  71. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  72. package/.next/standalone/.next/server/app/projects/page.js +1 -1
  73. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/chunks/[externals]__0h9_83k._.js +3 -0
  76. package/.next/standalone/.next/server/chunks/[externals]__1ifpkx-._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-dh5jy._.js +1 -1
  78. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f8nu8d._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h3lfmp._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l4vuqm._.js +1 -1
  81. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0longh-._.js → [root-of-the-server]__0szqzl8._.js} +2 -2
  82. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10oa-v9._.js +1 -1
  83. package/.next/standalone/.next/server/chunks/[root-of-the-server]__18d-9oi._.js +1 -1
  84. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19120tr._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1fwl2mz._.js +1 -1
  86. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1myjm-d._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__16le-kd._.js → [root-of-the-server]__1p7s8-d._.js} +2 -2
  88. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_17k9e3w.js +4 -4
  89. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +2 -1
  90. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +2 -1
  91. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/[externals]__1aq139v._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02r5bgf._.js +2 -2
  94. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0nb0syg._.js → [root-of-the-server]__0cmdyn_._.js} +2 -2
  95. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e8sjqm._.js +2 -2
  96. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lkzqax._.js +2 -2
  97. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1ath6v_._.js → [root-of-the-server]__0ls0gsr._.js} +3 -3
  98. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0uno39i._.js → [root-of-the-server]__0n_uvv0._.js} +2 -2
  99. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qucxyj._.js +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01od0m6._.js → [root-of-the-server]__0rag5dg._.js} +2 -2
  101. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1apb7k_._.js → [root-of-the-server]__0rtdfof._.js} +2 -2
  102. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1psjybo._.js → [root-of-the-server]__0sdrz-j._.js} +2 -2
  103. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__170799-._.js → [root-of-the-server]__0spkm68._.js} +11 -11
  104. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0u02miy._.js +2 -2
  105. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0114ewg._.js → [root-of-the-server]__1j4u3yd._.js} +3 -3
  106. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qapotl._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1zqz4v8._.js +2 -2
  108. package/.next/standalone/.next/server/chunks/ssr/_1e19atl._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0oy_-36.js → node_modules_html-to-image_es_index_1q9xxca.js} +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +2 -1
  114. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1ezd2jf._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1tnuifj._.js +1 -1
  116. package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
  117. package/.next/standalone/.next/server/pages/404.html +1 -1
  118. package/.next/standalone/.next/server/pages/500.html +1 -1
  119. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/server-reference-manifest.json +32 -20
  121. package/.next/standalone/.next/static/chunks/{18rvdw5v72364.js → 06jakt_xhoolk.js} +1 -1
  122. package/.next/standalone/.next/static/chunks/{03fmihek9n986.js → 06zgzyh3wv1ig.js} +1 -1
  123. package/.next/standalone/.next/static/chunks/0oe2-hp0_2tzs.js +6 -0
  124. package/.next/standalone/.next/static/chunks/{1hdhteui932bq.js → 0qmo2t50kpb30.js} +1 -1
  125. package/.next/standalone/.next/static/chunks/{3vs4ay36tjds_.js → 0ue9ak_xexiqh.js} +1 -1
  126. package/.next/standalone/.next/static/chunks/16p68cybetr31.js +1 -0
  127. package/.next/standalone/.next/static/chunks/1fw3pxobk_otl.js +1 -0
  128. package/.next/standalone/.next/static/chunks/23kev26by1e4f.js +1 -0
  129. package/.next/standalone/.next/static/chunks/2c90h1g6x8z8y.js +1 -0
  130. package/.next/standalone/.next/static/chunks/{2sbelanzvxvv0.js → 2zb3m1tzq6h98.js} +1 -1
  131. package/.next/standalone/.next/static/chunks/31coz11ia5vc4.js +1 -0
  132. package/.next/standalone/.next/static/chunks/{3hp8ulqknybil.js → 31cqiv_cpgj9m.js} +1 -1
  133. package/.next/standalone/.next/static/chunks/{2j94uwkb4s3qr.js → 3h5_3u46gu9jx.js} +1 -1
  134. package/.next/standalone/.next/static/chunks/3zdwnnthucs_1.css +2 -0
  135. package/.next/standalone/.next/static/chunks/{0fi645si-uiiq.js → 43a1ywqsg9bq9.js} +1 -1
  136. package/.next/standalone/.next/static/chunks/{turbopack-1lsv92x7klwrn.js → turbopack-3diub4ctvn1n0.js} +1 -1
  137. package/.next/standalone/Cargo.lock +1992 -198
  138. package/.next/standalone/Cargo.toml +1 -1
  139. package/.next/standalone/app/actions/get-active-pauses.ts +16 -0
  140. package/.next/standalone/app/components/pause-notices.tsx +111 -0
  141. package/.next/standalone/app/policies/hooks-client.tsx +81 -6
  142. package/.next/standalone/crates/CLOUD_POLICIES.md +136 -0
  143. package/.next/standalone/crates/failproofaid/Cargo.toml +7 -0
  144. package/.next/standalone/crates/failproofaid/src/cloud_client.rs +484 -0
  145. package/.next/standalone/crates/failproofaid/src/cloud_policies.rs +921 -0
  146. package/.next/standalone/crates/failproofaid/src/main.rs +452 -3
  147. package/.next/standalone/crates/failproofaid/src/paths.rs +29 -0
  148. package/.next/standalone/crates/fpai-collect/Cargo.toml +43 -0
  149. package/.next/standalone/crates/fpai-collect/src/config.rs +412 -0
  150. package/.next/standalone/crates/fpai-collect/src/cursor.rs +520 -0
  151. package/.next/standalone/crates/fpai-collect/src/delivery.rs +472 -0
  152. package/.next/standalone/crates/fpai-collect/src/filetail.rs +484 -0
  153. package/.next/standalone/crates/fpai-collect/src/health.rs +369 -0
  154. package/.next/standalone/crates/fpai-collect/src/lib.rs +34 -0
  155. package/.next/standalone/crates/fpai-collect/src/redact.rs +516 -0
  156. package/.next/standalone/crates/fpai-collect/src/sources/claude/mod.rs +279 -0
  157. package/.next/standalone/crates/fpai-collect/src/sources/claude/transform.rs +619 -0
  158. package/.next/standalone/crates/fpai-collect/src/sources/codex/mod.rs +156 -0
  159. package/.next/standalone/crates/fpai-collect/src/sources/codex/transform.rs +715 -0
  160. package/.next/standalone/crates/fpai-collect/src/sources/copilot/mod.rs +158 -0
  161. package/.next/standalone/crates/fpai-collect/src/sources/copilot/transform.rs +512 -0
  162. package/.next/standalone/crates/fpai-collect/src/sources/goose/mod.rs +511 -0
  163. package/.next/standalone/crates/fpai-collect/src/sources/goose/transform.rs +586 -0
  164. package/.next/standalone/crates/fpai-collect/src/sources/hermes/mod.rs +318 -0
  165. package/.next/standalone/crates/fpai-collect/src/sources/hermes/transform.rs +579 -0
  166. package/.next/standalone/crates/fpai-collect/src/sources/hooks/mod.rs +310 -0
  167. package/.next/standalone/crates/fpai-collect/src/sources/hooks/transform.rs +448 -0
  168. package/.next/standalone/crates/fpai-collect/src/sources/mod.rs +23 -0
  169. package/.next/standalone/crates/fpai-collect/src/sources/openclaw/mod.rs +176 -0
  170. package/.next/standalone/crates/fpai-collect/src/sources/openclaw/transform.rs +500 -0
  171. package/.next/standalone/crates/fpai-collect/src/sources/opencode/mod.rs +315 -0
  172. package/.next/standalone/crates/fpai-collect/src/sources/opencode/transform.rs +493 -0
  173. package/.next/standalone/crates/fpai-collect/src/sources/pi/mod.rs +201 -0
  174. package/.next/standalone/crates/fpai-collect/src/sources/pi/transform.rs +533 -0
  175. package/.next/standalone/crates/fpai-collect/src/spool.rs +458 -0
  176. package/.next/standalone/crates/fpai-collect/src/sqlitepoll.rs +387 -0
  177. package/.next/standalone/crates/fpai-collect/src/supervisor.rs +423 -0
  178. package/.next/standalone/crates/fpai-collect/src/uploader.rs +600 -0
  179. package/.next/standalone/crates/fpai-collect/tests/claude_source.rs +738 -0
  180. package/.next/standalone/crates/fpai-collect/tests/claude_subagents.rs +393 -0
  181. package/.next/standalone/crates/fpai-collect/tests/codex_source.rs +975 -0
  182. package/.next/standalone/crates/fpai-collect/tests/config.rs +286 -0
  183. package/.next/standalone/crates/fpai-collect/tests/copilot_source.rs +1019 -0
  184. package/.next/standalone/crates/fpai-collect/tests/delivery.rs +281 -0
  185. package/.next/standalone/crates/fpai-collect/tests/goose_source.rs +1008 -0
  186. package/.next/standalone/crates/fpai-collect/tests/hermes_source.rs +1129 -0
  187. package/.next/standalone/crates/fpai-collect/tests/hooks_source.rs +621 -0
  188. package/.next/standalone/crates/fpai-collect/tests/openclaw_source.rs +854 -0
  189. package/.next/standalone/crates/fpai-collect/tests/opencode_source.rs +1478 -0
  190. package/.next/standalone/crates/fpai-collect/tests/pi_source.rs +1191 -0
  191. package/.next/standalone/crates/fpai-collect/tests/supervisor.rs +290 -0
  192. package/.next/standalone/crates/fpai-collect/tests/uploader.rs +506 -0
  193. package/.next/standalone/package.json +15 -9
  194. package/.next/standalone/server.js +1 -1
  195. package/bin/failproofai.mjs +129 -0
  196. package/dist/cli.mjs +2255 -779
  197. package/dist/worker.mjs +365 -52
  198. package/package.json +15 -9
  199. package/scripts/build-daemon-packages.mjs +210 -0
  200. package/scripts/daemon-platforms.mjs +42 -0
  201. package/scripts/prune-standalone.mjs +6 -0
  202. package/scripts/publish-aliases.mjs +62 -41
  203. package/src/hooks/builtin-policies.ts +139 -0
  204. package/src/hooks/cloud-connection.ts +205 -0
  205. package/src/hooks/cloud-enrollment-cli.ts +227 -0
  206. package/src/hooks/cloud-enrollment.ts +173 -0
  207. package/src/hooks/cloud-managed-policies.ts +138 -0
  208. package/src/hooks/collector-config.ts +226 -0
  209. package/src/hooks/configure-wizard.ts +221 -5
  210. package/src/hooks/custom-hooks-loader.ts +69 -25
  211. package/src/hooks/daemon-client.ts +18 -0
  212. package/src/hooks/daemon-download.ts +137 -27
  213. package/src/hooks/daemon-service.ts +23 -8
  214. package/src/hooks/handler.ts +144 -6
  215. package/src/hooks/hook-activity-store.ts +50 -0
  216. package/src/hooks/loader-utils.ts +6 -4
  217. package/src/hooks/policy-types.ts +35 -0
  218. package/src/hooks/session-pause-cli.ts +157 -0
  219. package/src/hooks/session-pause.ts +236 -0
  220. package/src/hooks/tui.ts +115 -0
  221. package/.next/standalone/.next/server/chunks/[externals]__14odj07._.js +0 -3
  222. package/.next/standalone/.next/server/chunks/[externals]__1s61mel._.js +0 -3
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0id_xf7._.js +0 -3
  224. package/.next/standalone/.next/server/chunks/ssr/[externals]__1_g_b3t._.js +0 -3
  225. package/.next/standalone/.next/static/chunks/0zbxssxh53n-3.js +0 -1
  226. package/.next/standalone/.next/static/chunks/2mazwb1qmur1p.js +0 -1
  227. package/.next/standalone/.next/static/chunks/2pujpnfx4pws6.css +0 -2
  228. package/.next/standalone/.next/static/chunks/31feojxhjyjpl.js +0 -1
  229. package/.next/standalone/.next/static/chunks/33u59vf_8xpd-.js +0 -1
  230. package/.next/standalone/.next/static/chunks/3s7myk_co0gbh.js +0 -1
  231. package/.next/standalone/.next/static/chunks/40k1_v4os4cw6.js +0 -6
  232. /package/.next/standalone/.next/static/{NWAjs0tHFyzk97gRGG09r → StV6Lay7Q1cU4ysYCFJmH}/_buildManifest.js +0 -0
  233. /package/.next/standalone/.next/static/{NWAjs0tHFyzk97gRGG09r → StV6Lay7Q1cU4ysYCFJmH}/_clientMiddlewareManifest.js +0 -0
  234. /package/.next/standalone/.next/static/{NWAjs0tHFyzk97gRGG09r → StV6Lay7Q1cU4ysYCFJmH}/_ssgManifest.js +0 -0
@@ -22,7 +22,7 @@ ${h}
22
22
  ${c}`:c;else if(d||a.directives.docStart||!e)a.commentBefore=c;else if(h.isCollection(e)&&!e.flow&&e.items.length>0){let a=e.items[0];h.isPair(a)&&(a=a.key);let b=a.commentBefore;a.commentBefore=b?`${c}
23
23
  ${b}`:c}else{let a=e.commentBefore;e.commentBefore=a?`${c}
24
24
  ${a}`:c}}if(b){for(let b=0;b<this.errors.length;++b)a.errors.push(this.errors[b]);for(let b=0;b<this.warnings.length;++b)a.warnings.push(this.warnings[b])}else a.errors=this.errors,a.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:l(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(a,b=!1,c=-1){for(let b of a)yield*this.next(b);yield*this.end(b,c)}*next(a){switch(d.env.LOG_STREAM&&console.dir(a,{depth:null}),a.type){case"directive":this.directives.add(a.source,(b,c,d)=>{let e=k(a);e[0]+=b,this.onError(e,"BAD_DIRECTIVE",c,d)}),this.prelude.push(a.source),this.atDirectives=!0;break;case"document":{let b=i.composeDoc(this.options,this.directives,a,this.onError);this.atDirectives&&!b.directives.docStart&&this.onError(a,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(b,!1),this.doc&&(yield this.doc),this.doc=b,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(a.source);break;case"error":{let b=a.source?`${a.message}: ${JSON.stringify(a.source)}`:a.message,c=new g.YAMLParseError(k(a),"UNEXPECTED_TOKEN",b);this.atDirectives||!this.doc?this.errors.push(c):this.doc.errors.push(c);break}case"doc-end":{if(!this.doc){this.errors.push(new g.YAMLParseError(k(a),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let b=j.resolveEnd(a.end,a.offset+a.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),b.comment){let a=this.doc.comment;this.doc.comment=a?`${a}
25
- ${b.comment}`:b.comment}this.doc.range[2]=b.offset;break}default:this.errors.push(new g.YAMLParseError(k(a),"UNEXPECTED_TOKEN",`Unsupported token ${a.type}`))}}*end(a=!1,b=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(a){let a=Object.assign({_directives:this.directives},this.options),c=new f.Document(void 0,a);this.atDirectives&&this.onError(b,"MISSING_CHAR","Missing directives-end indicator line"),c.range=[0,b,b],this.decorate(c,!1),yield c}}}},86888,(a,b,c)=>{"use strict";var d=a.r(71014),e=a.r(21525),f=a.r(25717),g=a.r(88583);function h(a,b){if(b)for(let c of b)switch(c.type){case"space":case"comment":a.push(c);break;case"newline":return a.push(c),!0}return!1}function i(a,b,c){switch(a.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":a.type=c,a.source=b;break;case"block-scalar":{let d=a.props.slice(1),e=b.length;for(let b of("block-scalar-header"===a.props[0].type&&(e-=a.props[0].source.length),d))b.offset+=e;delete a.props,Object.assign(a,{type:c,source:b,end:d});break}case"block-map":case"block-seq":{let d={type:"newline",offset:a.offset+b.length,indent:a.indent,source:"\n"};delete a.items,Object.assign(a,{type:c,source:b,end:[d]});break}default:{let d="indent"in a?a.indent:-1,e="end"in a&&Array.isArray(a.end)?a.end.filter(a=>"space"===a.type||"comment"===a.type||"newline"===a.type):[];for(let b of Object.keys(a))"type"!==b&&"offset"!==b&&delete a[b];Object.assign(a,{type:c,indent:d,source:b,end:e})}}}c.createScalarToken=function(a,b){let{implicitKey:c=!1,indent:d,inFlow:e=!1,offset:f=-1,type:i="PLAIN"}=b,j=g.stringifyString({type:i,value:a},{implicitKey:c,indent:d>0?" ".repeat(d):"",inFlow:e,options:{blockQuote:!0,lineWidth:-1}}),k=b.end??[{type:"newline",offset:-1,indent:d,source:"\n"}];switch(j[0]){case"|":case">":{let a=j.indexOf("\n"),b=j.substring(0,a),c=j.substring(a+1)+"\n",e=[{type:"block-scalar-header",offset:f,indent:d,source:b}];return h(e,k)||e.push({type:"newline",offset:-1,indent:d,source:"\n"}),{type:"block-scalar",offset:f,indent:d,props:e,source:c}}case'"':return{type:"double-quoted-scalar",offset:f,indent:d,source:j,end:k};case"'":return{type:"single-quoted-scalar",offset:f,indent:d,source:j,end:k};default:return{type:"scalar",offset:f,indent:d,source:j,end:k}}},c.resolveAsScalar=function(a,b=!0,c){if(a){let g=(a,b,d)=>{let e="number"==typeof a?a:Array.isArray(a)?a[0]:a.offset;if(c)c(e,b,d);else throw new f.YAMLParseError([e,e+1],b,d)};switch(a.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return e.resolveFlowScalar(a,b,g);case"block-scalar":return d.resolveBlockScalar({options:{strict:b}},a,g)}}return null},c.setScalarValue=function(a,b,c={}){let{afterKey:d=!1,implicitKey:e=!1,inFlow:f=!1,type:j}=c,k="indent"in a?a.indent:null;if(d&&"number"==typeof k&&(k+=2),!j)switch(a.type){case"single-quoted-scalar":j="QUOTE_SINGLE";break;case"double-quoted-scalar":j="QUOTE_DOUBLE";break;case"block-scalar":{let b=a.props[0];if("block-scalar-header"!==b.type)throw Error("Invalid block scalar header");j=">"===b.source[0]?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:j="PLAIN"}let l=g.stringifyString({type:j,value:b},{implicitKey:e||null===k,indent:null!==k&&k>0?" ".repeat(k):"",inFlow:f,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":!function(a,b){let c=b.indexOf("\n"),d=b.substring(0,c),e=b.substring(c+1)+"\n";if("block-scalar"===a.type){let b=a.props[0];if("block-scalar-header"!==b.type)throw Error("Invalid block scalar header");b.source=d,a.source=e}else{let{offset:b}=a,c="indent"in a?a.indent:-1,f=[{type:"block-scalar-header",offset:b,indent:c,source:d}];for(let b of(h(f,"end"in a?a.end:void 0)||f.push({type:"newline",offset:-1,indent:c,source:"\n"}),Object.keys(a)))"type"!==b&&"offset"!==b&&delete a[b];Object.assign(a,{type:"block-scalar",indent:c,props:f,source:e})}}(a,l);break;case'"':i(a,l,"double-quoted-scalar");break;case"'":i(a,l,"single-quoted-scalar");break;default:i(a,l,"scalar")}}},25449,(a,b,c)=>{"use strict";function d(a){switch(a.type){case"block-scalar":{let b="";for(let c of a.props)b+=d(c);return b+a.source}case"block-map":case"block-seq":{let b="";for(let c of a.items)b+=e(c);return b}case"flow-collection":{let b=a.start.source;for(let c of a.items)b+=e(c);for(let c of a.end)b+=c.source;return b}case"document":{let b=e(a);if(a.end)for(let c of a.end)b+=c.source;return b}default:{let b=a.source;if("end"in a&&a.end)for(let c of a.end)b+=c.source;return b}}}function e({start:a,key:b,sep:c,value:f}){let g="";for(let b of a)g+=b.source;if(b&&(g+=d(b)),c)for(let a of c)g+=a.source;return f&&(g+=d(f)),g}c.stringify=a=>"type"in a?d(a):e(a)},2135,(a,b,c)=>{"use strict";let d=Symbol("break visit"),e=Symbol("skip children"),f=Symbol("remove item");function g(a,b){"type"in a&&"document"===a.type&&(a={start:a.start,value:a.value}),function a(b,c,e){let g=e(c,b);if("symbol"==typeof g)return g;for(let h of["key","value"]){let i=c[h];if(i&&"items"in i){for(let c=0;c<i.items.length;++c){let g=a(Object.freeze(b.concat([[h,c]])),i.items[c],e);if("number"==typeof g)c=g-1;else{if(g===d)return d;g===f&&(i.items.splice(c,1),c-=1)}}"function"==typeof g&&"key"===h&&(g=g(c,b))}}return"function"==typeof g?g(c,b):g}(Object.freeze([]),a,b)}g.BREAK=d,g.SKIP=e,g.REMOVE=f,g.itemAtPath=(a,b)=>{let c=a;for(let[a,d]of b){let b=c?.[a];if(!b||!("items"in b))return;c=b.items[d]}return c},g.parentCollection=(a,b)=>{let c=g.itemAtPath(a,b.slice(0,-1)),d=b[b.length-1][0],e=c?.[d];if(e&&"items"in e)return e;throw Error("Parent collection not found")},c.visit=g},2704,(a,b,c)=>{"use strict";var d=a.r(86888),e=a.r(25449),f=a.r(2135);c.createScalarToken=d.createScalarToken,c.resolveAsScalar=d.resolveAsScalar,c.setScalarValue=d.setScalarValue,c.stringify=e.stringify,c.visit=f.visit,c.BOM="\uFEFF",c.DOCUMENT="\x02",c.FLOW_END="\x18",c.SCALAR="\x1f",c.isCollection=a=>!!a&&"items"in a,c.isScalar=a=>!!a&&("scalar"===a.type||"single-quoted-scalar"===a.type||"double-quoted-scalar"===a.type||"block-scalar"===a.type),c.prettyToken=function(a){switch(a){case"\uFEFF":return"<BOM>";case"\x02":return"<DOC>";case"\x18":return"<FLOW_END>";case"\x1f":return"<SCALAR>";default:return JSON.stringify(a)}},c.tokenType=function(a){switch(a){case"\uFEFF":return"byte-order-mark";case"\x02":return"doc-mode";case"\x18":return"flow-error-end";case"\x1f":return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case"\n":case"\r\n":return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(a[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}},66326,(a,b,c)=>{"use strict";var d=a.r(2704);function e(a){switch(a){case void 0:case" ":case"\n":case"\r":case" ":return!0;default:return!1}}let f=new Set("0123456789ABCDEFabcdef"),g=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),h=new Set(",[]{}"),i=new Set(" ,[]{}\n\r "),j=a=>!a||i.has(a);c.Lexer=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(a,b=!1){if(a){if("string"!=typeof a)throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+a:a,this.lineEndPos=null}this.atEnd=!b;let c=this.next??"stream";for(;c&&(b||this.hasChars(1));)c=yield*this.parseNext(c)}atLineEnd(){let a=this.pos,b=this.buffer[a];for(;" "===b||" "===b;)b=this.buffer[++a];return!b||"#"===b||"\n"===b||"\r"===b&&"\n"===this.buffer[a+1]}charAt(a){return this.buffer[this.pos+a]}continueScalar(a){let b=this.buffer[a];if(this.indentNext>0){let c=0;for(;" "===b;)b=this.buffer[++c+a];if("\r"===b){let b=this.buffer[c+a+1];if("\n"===b||!b&&!this.atEnd)return a+c+1}return"\n"!==b&&!(c>=this.indentNext)&&(b||this.atEnd)?-1:a+c}if("-"===b||"."===b){let b=this.buffer.substr(a,3);if(("---"===b||"..."===b)&&e(this.buffer[a+3]))return -1}return a}getLine(){let a=this.lineEndPos;return(("number"!=typeof a||-1!==a&&a<this.pos)&&(a=this.buffer.indexOf("\n",this.pos),this.lineEndPos=a),-1===a)?this.atEnd?this.buffer.substring(this.pos):null:("\r"===this.buffer[a-1]&&(a-=1),this.buffer.substring(this.pos,a))}hasChars(a){return this.pos+a<=this.buffer.length}setNext(a){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=a,null}peek(a){return this.buffer.substr(this.pos,a)}*parseNext(a){switch(a){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let a=this.getLine();if(null===a)return this.setNext("stream");if(a[0]===d.BOM&&(yield*this.pushCount(1),a=a.substring(1)),"%"===a[0]){let b=a.length,c=a.indexOf("#");for(;-1!==c;){let d=a[c-1];if(" "===d||" "===d){b=c-1;break}c=a.indexOf("#",c+1)}for(;;){let c=a[b-1];if(" "===c||" "===c)b-=1;else break}let d=(yield*this.pushCount(b))+(yield*this.pushSpaces(!0));return yield*this.pushCount(a.length-d),this.pushNewline(),"stream"}if(this.atLineEnd()){let b=yield*this.pushSpaces(!0);return yield*this.pushCount(a.length-b),yield*this.pushNewline(),"stream"}return yield d.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let a=this.charAt(0);if(!a&&!this.atEnd)return this.setNext("line-start");if("-"===a||"."===a){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let a=this.peek(3);if(("---"===a||"..."===a)&&e(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,"---"===a?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!e(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[a,b]=this.peek(2);if(!b&&!this.atEnd)return this.setNext("block-start");if(("-"===a||"?"===a||":"===a)&&e(b)){let a=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=a,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let a=this.getLine();if(null===a)return this.setNext("doc");let b=yield*this.pushIndicators();switch(a[b]){case"#":yield*this.pushCount(a.length-b);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(j),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return b+=yield*this.parseBlockScalarHeader(),b+=yield*this.pushSpaces(!0),yield*this.pushCount(a.length-b),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let a,b,c=-1;do(a=yield*this.pushNewline())>0?(b=yield*this.pushSpaces(!1),this.indentValue=c=b):b=0,b+=yield*this.pushSpaces(!0);while(a+b>0)let f=this.getLine();if(null===f)return this.setNext("flow");if((-1!==c&&c<this.indentNext&&"#"!==f[0]||0===c&&(f.startsWith("---")||f.startsWith("..."))&&e(f[3]))&&(c!==this.indentNext-1||1!==this.flowLevel||"]"!==f[0]&&"}"!==f[0]))return this.flowLevel=0,yield d.FLOW_END,yield*this.parseLineStart();let g=0;for(;","===f[g];)g+=yield*this.pushCount(1),g+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(f[g+=yield*this.pushIndicators()]){case void 0:return"flow";case"#":return yield*this.pushCount(f.length-g),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(j),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let a=this.charAt(1);if(this.flowKey||e(a)||","===a)return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let a=this.charAt(0),b=this.buffer.indexOf(a,this.pos+1);if("'"===a)for(;-1!==b&&"'"===this.buffer[b+1];)b=this.buffer.indexOf("'",b+2);else for(;-1!==b;){let a=0;for(;"\\"===this.buffer[b-1-a];)a+=1;if(a%2==0)break;b=this.buffer.indexOf('"',b+1)}let c=this.buffer.substring(0,b),d=c.indexOf("\n",this.pos);if(-1!==d){for(;-1!==d;){let a=this.continueScalar(d+1);if(-1===a)break;d=c.indexOf("\n",a)}-1!==d&&(b=d-("\r"===c[d-1]?2:1))}if(-1===b){if(!this.atEnd)return this.setNext("quoted-scalar");b=this.buffer.length}return yield*this.pushToIndex(b+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let a=this.pos;for(;;){let b=this.buffer[++a];if("+"===b)this.blockScalarKeep=!0;else if(b>"0"&&b<="9")this.blockScalarIndent=Number(b)-1;else if("-"!==b)break}return yield*this.pushUntil(a=>e(a)||"#"===a)}*parseBlockScalar(){let a,b=this.pos-1,c=0;a:for(let d=this.pos;a=this.buffer[d];++d)switch(a){case" ":c+=1;break;case"\n":b=d,c=0;break;case"\r":{let a=this.buffer[d+1];if(!a&&!this.atEnd)return this.setNext("block-scalar");if("\n"===a)break}default:break a}if(!a&&!this.atEnd)return this.setNext("block-scalar");if(c>=this.indentNext){-1===this.blockScalarIndent?this.indentNext=c:this.indentNext=this.blockScalarIndent+(0===this.indentNext?1:this.indentNext);do{let a=this.continueScalar(b+1);if(-1===a)break;b=this.buffer.indexOf("\n",a)}while(-1!==b)if(-1===b){if(!this.atEnd)return this.setNext("block-scalar");b=this.buffer.length}}let e=b+1;for(a=this.buffer[e];" "===a;)a=this.buffer[++e];if(" "===a){for(;" "===a||" "===a||"\r"===a||"\n"===a;)a=this.buffer[++e];b=e-1}else if(!this.blockScalarKeep)for(;;){let a=b-1,d=this.buffer[a];"\r"===d&&(d=this.buffer[--a]);let e=a;for(;" "===d;)d=this.buffer[--a];if("\n"===d&&a>=this.pos&&a+1+c>e)b=a;else break}return yield d.SCALAR,yield*this.pushToIndex(b+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let a,b=this.flowLevel>0,c=this.pos-1,f=this.pos-1;for(;a=this.buffer[++f];)if(":"===a){let a=this.buffer[f+1];if(e(a)||b&&h.has(a))break;c=f}else if(e(a)){let d=this.buffer[f+1];if("\r"===a&&("\n"===d?(f+=1,a="\n",d=this.buffer[f+1]):c=f),"#"===d||b&&h.has(d))break;if("\n"===a){let a=this.continueScalar(f+1);if(-1===a)break;f=Math.max(f,a-2)}}else{if(b&&h.has(a))break;c=f}return a||this.atEnd?(yield d.SCALAR,yield*this.pushToIndex(c+1,!0),b?"flow":"doc"):this.setNext("plain-scalar")}*pushCount(a){return a>0?(yield this.buffer.substr(this.pos,a),this.pos+=a,a):0}*pushToIndex(a,b){let c=this.buffer.slice(this.pos,a);return c?(yield c,this.pos+=c.length,c.length):(b&&(yield""),0)}*pushIndicators(){let a=0;for(;;){switch(this.charAt(0)){case"!":a+=yield*this.pushTag(),a+=yield*this.pushSpaces(!0);continue;case"&":a+=yield*this.pushUntil(j),a+=yield*this.pushSpaces(!0);continue;case"-":case"?":case":":{let b=this.flowLevel>0,c=this.charAt(1);if(e(c)||b&&h.has(c)){b?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,a+=yield*this.pushCount(1),a+=yield*this.pushSpaces(!0);continue}}}break}return a}*pushTag(){if("<"===this.charAt(1)){let a=this.pos+2,b=this.buffer[a];for(;!e(b)&&">"!==b;)b=this.buffer[++a];return yield*this.pushToIndex(">"===b?a+1:a,!1)}{let a=this.pos+1,b=this.buffer[a];for(;b;)if(g.has(b))b=this.buffer[++a];else if("%"===b&&f.has(this.buffer[a+1])&&f.has(this.buffer[a+2]))b=this.buffer[a+=3];else break;return yield*this.pushToIndex(a,!1)}}*pushNewline(){let a=this.buffer[this.pos];return"\n"===a?yield*this.pushCount(1):"\r"===a&&"\n"===this.charAt(1)?yield*this.pushCount(2):0}*pushSpaces(a){let b,c=this.pos-1;do b=this.buffer[++c];while(" "===b||a&&" "===b)let d=c-this.pos;return d>0&&(yield this.buffer.substr(this.pos,d),this.pos=c),d}*pushUntil(a){let b=this.pos,c=this.buffer[b];for(;!a(c);)c=this.buffer[++b];return yield*this.pushToIndex(b,!1)}}},46987,(a,b,c)=>{"use strict";c.LineCounter=class{constructor(){this.lineStarts=[],this.addNewLine=a=>this.lineStarts.push(a),this.linePos=a=>{let b=0,c=this.lineStarts.length;for(;b<c;){let d=b+c>>1;this.lineStarts[d]<a?b=d+1:c=d}if(this.lineStarts[b]===a)return{line:b+1,col:1};if(0===b)return{line:0,col:a};let d=this.lineStarts[b-1];return{line:b,col:a-d+1}}}}},9575,(a,b,c)=>{"use strict";var d=a.r(5365),e=a.r(2704),f=a.r(66326);function g(a,b){for(let c=0;c<a.length;++c)if(a[c].type===b)return!0;return!1}function h(a){for(let b=0;b<a.length;++b)switch(a[b].type){case"space":case"comment":case"newline":break;default:return b}return -1}function i(a){switch(a?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function j(a){switch(a.type){case"document":return a.start;case"block-map":{let b=a.items[a.items.length-1];return b.sep??b.start}case"block-seq":return a.items[a.items.length-1].start;default:return[]}}function k(a){if(0===a.length)return[];let b=a.length;a:for(;--b>=0;)switch(a[b].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break a}for(;a[++b]?.type==="space";);return a.splice(b,a.length)}function l(a,b){if(b.length<1e5)Array.prototype.push.apply(a,b);else for(let c=0;c<b.length;++c)a.push(b[c])}function m(a){if("flow-seq-start"===a.start.type)for(let b of a.items)!b.sep||b.value||g(b.start,"explicit-key-ind")||g(b.sep,"map-value-ind")||(b.key&&(b.value=b.key),delete b.key,i(b.value)?b.value.end?l(b.value.end,b.sep):b.value.end=b.sep:l(b.start,b.sep),delete b.sep)}c.Parser=class{constructor(a){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new f.Lexer,this.onNewLine=a}*parse(a,b=!1){for(let c of(this.onNewLine&&0===this.offset&&this.onNewLine(0),this.lexer.lex(a,b)))yield*this.next(c);b||(yield*this.end())}*next(a){if(this.source=a,d.env.LOG_TOKENS&&console.log("|",e.prettyToken(a)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=a.length;return}let b=e.tokenType(a);if(b)if("scalar"===b)this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=b,yield*this.step(),b){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+a.length);break;case"space":this.atNewLine&&" "===a[0]&&(this.indent+=a.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=a.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=a.length}else{let b=`Not a YAML token: ${a}`;yield*this.pop({type:"error",offset:this.offset,message:b,source:a}),this.offset+=a.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let a=this.peek(1);if("doc-end"===this.type&&a?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!a)return yield*this.stream();switch(a.type){case"document":return yield*this.document(a);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(a);case"block-scalar":return yield*this.blockScalar(a);case"block-map":return yield*this.blockMap(a);case"block-seq":return yield*this.blockSequence(a);case"flow-collection":return yield*this.flowCollection(a);case"doc-end":return yield*this.documentEnd(a)}yield*this.pop()}peek(a){return this.stack[this.stack.length-a]}*pop(a){let b=a??this.stack.pop();if(b)if(0===this.stack.length)yield b;else{let a=this.peek(1);switch("block-scalar"===b.type?b.indent="indent"in a?a.indent:0:"flow-collection"===b.type&&"document"===a.type&&(b.indent=0),"flow-collection"===b.type&&m(b),a.type){case"document":a.value=b;break;case"block-scalar":a.props.push(b);break;case"block-map":{let c=a.items[a.items.length-1];if(c.value){a.items.push({start:[],key:b,sep:[]}),this.onKeyLine=!0;return}if(c.sep)c.value=b;else{Object.assign(c,{key:b,sep:[]}),this.onKeyLine=!c.explicitKey;return}break}case"block-seq":{let c=a.items[a.items.length-1];c.value?a.items.push({start:[],value:b}):c.value=b;break}case"flow-collection":{let c=a.items[a.items.length-1];!c||c.value?a.items.push({start:[],key:b,sep:[]}):c.sep?c.value=b:Object.assign(c,{key:b,sep:[]});return}default:yield*this.pop(),yield*this.pop(b)}if(("document"===a.type||"block-map"===a.type||"block-seq"===a.type)&&("block-map"===b.type||"block-seq"===b.type)){let c=b.items[b.items.length-1];c&&!c.sep&&!c.value&&c.start.length>0&&-1===h(c.start)&&(0===b.indent||c.start.every(a=>"comment"!==a.type||a.indent<b.indent))&&("document"===a.type?a.end=c.start:a.items.push({start:c.start}),b.items.splice(-1,1))}}else yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let a={type:"document",offset:this.offset,start:[]};"doc-start"===this.type&&a.start.push(this.sourceToken),this.stack.push(a);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(a){if(a.value)return yield*this.lineEnd(a);switch(this.type){case"doc-start":-1!==h(a.start)?(yield*this.pop(),yield*this.step()):a.start.push(this.sourceToken);return;case"anchor":case"tag":case"space":case"comment":case"newline":a.start.push(this.sourceToken);return}let b=this.startBlockValue(a);b?this.stack.push(b):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(a){if("map-value-ind"===this.type){let b,c=k(j(this.peek(2)));a.end?((b=a.end).push(this.sourceToken),delete a.end):b=[this.sourceToken];let d={type:"block-map",offset:a.offset,indent:a.indent,items:[{start:c,key:a,sep:b}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=d}else yield*this.lineEnd(a)}*blockScalar(a){switch(this.type){case"space":case"comment":case"newline":a.props.push(this.sourceToken);return;case"scalar":if(a.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let a=this.source.indexOf("\n")+1;for(;0!==a;)this.onNewLine(this.offset+a),a=this.source.indexOf("\n",a)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(a){let b=a.items[a.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,b.value){let c="end"in b.value?b.value.end:void 0,d=Array.isArray(c)?c[c.length-1]:void 0;d?.type==="comment"?c?.push(this.sourceToken):a.items.push({start:[this.sourceToken]})}else b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"space":case"comment":if(b.value)a.items.push({start:[this.sourceToken]});else if(b.sep)b.sep.push(this.sourceToken);else{if(this.atIndentedComment(b.start,a.indent)){let c=a.items[a.items.length-2],d=c?.value?.end;if(Array.isArray(d)){l(d,b.start),d.push(this.sourceToken),a.items.pop();return}}b.start.push(this.sourceToken)}return}if(this.indent>=a.indent){let c=!this.onKeyLine&&this.indent===a.indent,d=c&&(b.sep||b.explicitKey)&&"seq-item-ind"!==this.type,e=[];if(d&&b.sep&&!b.value){let c=[];for(let d=0;d<b.sep.length;++d){let e=b.sep[d];switch(e.type){case"newline":c.push(d);break;case"space":break;case"comment":e.indent>a.indent&&(c.length=0);break;default:c.length=0}}c.length>=2&&(e=b.sep.splice(c[1]))}switch(this.type){case"anchor":case"tag":d||b.value?(e.push(this.sourceToken),a.items.push({start:e}),this.onKeyLine=!0):b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"explicit-key-ind":b.sep||b.explicitKey?d||b.value?(e.push(this.sourceToken),a.items.push({start:e,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}):(b.start.push(this.sourceToken),b.explicitKey=!0),this.onKeyLine=!0;return;case"map-value-ind":if(b.explicitKey)if(b.sep)if(b.value)a.items.push({start:[],key:null,sep:[this.sourceToken]});else if(g(b.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]});else if(i(b.key)&&!g(b.sep,"newline")){let a=k(b.start),c=b.key,d=b.sep;d.push(this.sourceToken),delete b.key,delete b.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:c,sep:d}]})}else e.length>0?b.sep=b.sep.concat(e,this.sourceToken):b.sep.push(this.sourceToken);else if(g(b.start,"newline"))Object.assign(b,{key:null,sep:[this.sourceToken]});else{let a=k(b.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else b.sep?b.value||d?a.items.push({start:e,key:null,sep:[this.sourceToken]}):g(b.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):b.sep.push(this.sourceToken):Object.assign(b,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let c=this.flowScalar(this.type);d||b.value?(a.items.push({start:e,key:c,sep:[]}),this.onKeyLine=!0):b.sep?this.stack.push(c):(Object.assign(b,{key:c,sep:[]}),this.onKeyLine=!0);return}default:{let d=this.startBlockValue(a);if(d){if("block-seq"===d.type){if(!b.explicitKey&&b.sep&&!g(b.sep,"newline"))return void(yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source}))}else c&&a.items.push({start:e});this.stack.push(d);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(a){let b=a.items[a.items.length-1];switch(this.type){case"newline":if(b.value){let c="end"in b.value?b.value.end:void 0,d=Array.isArray(c)?c[c.length-1]:void 0;d?.type==="comment"?c?.push(this.sourceToken):a.items.push({start:[this.sourceToken]})}else b.start.push(this.sourceToken);return;case"space":case"comment":if(b.value)a.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(b.start,a.indent)){let c=a.items[a.items.length-2],d=c?.value?.end;if(Array.isArray(d)){l(d,b.start),d.push(this.sourceToken),a.items.pop();return}}b.start.push(this.sourceToken)}return;case"anchor":case"tag":if(b.value||this.indent<=a.indent)break;b.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==a.indent)break;b.value||g(b.start,"seq-item-ind")?a.items.push({start:[this.sourceToken]}):b.start.push(this.sourceToken);return}if(this.indent>a.indent){let b=this.startBlockValue(a);if(b)return void this.stack.push(b)}yield*this.pop(),yield*this.step()}*flowCollection(a){let b=a.items[a.items.length-1];if("flow-error-end"===this.type){let a;do yield*this.pop(),a=this.peek(1);while(a?.type==="flow-collection")}else if(0===a.end.length){switch(this.type){case"comma":case"explicit-key-ind":!b||b.sep?a.items.push({start:[this.sourceToken]}):b.start.push(this.sourceToken);return;case"map-value-ind":!b||b.value?a.items.push({start:[],key:null,sep:[this.sourceToken]}):b.sep?b.sep.push(this.sourceToken):Object.assign(b,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!b||b.value?a.items.push({start:[this.sourceToken]}):b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let c=this.flowScalar(this.type);!b||b.value?a.items.push({start:[],key:c,sep:[]}):b.sep?this.stack.push(c):Object.assign(b,{key:c,sep:[]});return}case"flow-map-end":case"flow-seq-end":a.end.push(this.sourceToken);return}let c=this.startBlockValue(a);c?this.stack.push(c):(yield*this.pop(),yield*this.step())}else{let b=this.peek(2);if("block-map"!==b.type||("map-value-ind"!==this.type||b.indent!==a.indent)&&("newline"!==this.type||b.items[b.items.length-1].sep))if("map-value-ind"===this.type&&"flow-collection"!==b.type){let c=k(j(b));m(a);let d=a.end.splice(1,a.end.length);d.push(this.sourceToken);let e={type:"block-map",offset:a.offset,indent:a.indent,items:[{start:c,key:a,sep:d}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=e}else yield*this.lineEnd(a);else yield*this.pop(),yield*this.step()}}flowScalar(a){if(this.onNewLine){let a=this.source.indexOf("\n")+1;for(;0!==a;)this.onNewLine(this.offset+a),a=this.source.indexOf("\n",a)+1}return{type:a,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(a){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let b=k(j(a));return b.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:b,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let b=k(j(a));return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:b,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(a,b){return"comment"===this.type&&!(this.indent<=b)&&a.every(a=>"newline"===a.type||"space"===a.type)}*documentEnd(a){"doc-mode"!==this.type&&(a.end?a.end.push(this.sourceToken):a.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop()))}*lineEnd(a){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:a.end?a.end.push(this.sourceToken):a.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop())}}}},5013,(a,b,c)=>{"use strict";var d=a.r(19662),e=a.r(69242),f=a.r(25717),g=a.r(18114),h=a.r(27267),i=a.r(46987),j=a.r(9575);function k(a){let b=!1!==a.prettyErrors;return{lineCounter:a.lineCounter||b&&new i.LineCounter||null,prettyErrors:b}}function l(a,b={}){let{lineCounter:c,prettyErrors:e}=k(b),g=new j.Parser(c?.addNewLine),h=new d.Composer(b),i=null;for(let b of h.compose(g.parse(a),!0,a.length))if(i){if("silent"!==i.options.logLevel){i.errors.push(new f.YAMLParseError(b.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}}else i=b;return e&&c&&(i.errors.forEach(f.prettifyError(a,c)),i.warnings.forEach(f.prettifyError(a,c))),i}c.parse=function(a,b,c){let d;"function"==typeof b?d=b:void 0===c&&b&&"object"==typeof b&&(c=b);let e=l(a,c);if(!e)return null;if(e.warnings.forEach(a=>g.warn(e.options.logLevel,a)),e.errors.length>0)if("silent"!==e.options.logLevel)throw e.errors[0];else e.errors=[];return e.toJS(Object.assign({reviver:d},c))},c.parseAllDocuments=function(a,b={}){let{lineCounter:c,prettyErrors:e}=k(b),g=new j.Parser(c?.addNewLine),h=new d.Composer(b),i=Array.from(h.compose(g.parse(a)));if(e&&c)for(let b of i)b.errors.forEach(f.prettifyError(a,c)),b.warnings.forEach(f.prettifyError(a,c));return i.length>0?i:Object.assign([],{empty:!0},h.streamInfo())},c.parseDocument=l,c.stringify=function(a,b,c){let d=null;if("function"==typeof b||Array.isArray(b)?d=b:void 0===c&&b&&(c=b),"string"==typeof c&&(c=c.length),"number"==typeof c){let a=Math.round(c);c=a<1?void 0:a>8?{indent:8}:{indent:a}}if(void 0===a){let{keepUndefined:a}=c??b??{};if(!a)return}return h.isDocument(a)&&!d?a.toString(c):new e.Document(a,d,c).toString(c)}},22650,(a,b,c)=>{"use strict";var d=a.r(19662),e=a.r(69242),f=a.r(98027),g=a.r(25717),h=a.r(21562),i=a.r(27267),j=a.r(17602),k=a.r(27853),l=a.r(47544),m=a.r(7621),n=a.r(2704),o=a.r(66326),p=a.r(46987),q=a.r(9575),r=a.r(5013),s=a.r(85927);c.Composer=d.Composer,c.Document=e.Document,c.Schema=f.Schema,c.YAMLError=g.YAMLError,c.YAMLParseError=g.YAMLParseError,c.YAMLWarning=g.YAMLWarning,c.Alias=h.Alias,c.isAlias=i.isAlias,c.isCollection=i.isCollection,c.isDocument=i.isDocument,c.isMap=i.isMap,c.isNode=i.isNode,c.isPair=i.isPair,c.isScalar=i.isScalar,c.isSeq=i.isSeq,c.Pair=j.Pair,c.Scalar=k.Scalar,c.YAMLMap=l.YAMLMap,c.YAMLSeq=m.YAMLSeq,c.CST=n,c.Lexer=o.Lexer,c.LineCounter=p.LineCounter,c.Parser=q.Parser,c.parse=r.parse,c.parseAllDocuments=r.parseAllDocuments,c.parseDocument=r.parseDocument,c.stringify=r.stringify,c.visit=s.visit,c.visitAsync=s.visitAsync},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),h=a.i(10695);function i(a){if(!(0,e.existsSync)(a))return{};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return(0,h.hookLogWarn)(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{}}}function j(a){let b=(0,g.homedir)(),c=(0,f.resolve)(a);for(;c!==b;){let a=(0,f.resolve)(c,".failproofai");try{if((0,e.statSync)(a).isDirectory())return c}catch{}let b=(0,f.dirname)(c);if(b===c)break;c=b}return(0,f.resolve)(a)}function k(){return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json")}function l(){let a=k();if(!(0,e.existsSync)(a))return{enabledPolicies:[]};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return(0,h.hookLogWarn)(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{enabledPolicies:[]}}}function m(a){let b=k(),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 n(a,b){switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json");case"project":return(0,f.resolve)(j(b??process.cwd()),".failproofai","policies-config.json");case"local":return(0,f.resolve)(j(b??process.cwd()),".failproofai","policies-config.local.json")}}function o(a,b){let c=n(a,b);if(!(0,e.existsSync)(c))return{enabledPolicies:[]};try{let a=(0,e.readFileSync)(c,"utf8");return JSON.parse(a)}catch(a){return(0,h.hookLogWarn)(`failed to parse config at ${c}: ${a instanceof Error?a.message:String(a)}`),{enabledPolicies:[]}}}function p(a,b,c){let d=n(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 q=a.i(74533);let r=["user","project","local"],s=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],t=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],u={session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},v=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],w=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],x=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],y=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],z=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],A=["PreToolUse","PostToolUse","PreInvocation","Stop"],B=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],C=["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","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a),D="__failproofai_hook__";var E=a.i(57764),F=a.i(22650),G=a.i(43600);let H={get url(){return`file://${a.P("src/hooks/integrations.ts")}`}};function I(a){return(0,e.existsSync)(a)?JSON.parse((0,e.readFileSync)(a,"utf8")):{}}function J(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0}),(0,e.writeFileSync)(a,JSON.stringify(b,null,2)+"\n","utf8")}function K(a){try{return(0,e.existsSync)(a)?(0,F.parseDocument)((0,e.readFileSync)(a,"utf8")):(0,F.parseDocument)("")}catch{return(0,F.parseDocument)("")}}function L(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0}),(0,e.writeFileSync)(a,b.toString(),"utf8")}function M(a){if(!a||"object"!=typeof a)return!1;if(!0===a[D])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}function N(a){return"version"in a&&(delete a.version,!0)}function O(a){try{let b=`which ${a}`;return(0,q.execSync)(b,{encoding:"utf8",stdio:"pipe"}),!0}catch{return!1}}function P(a,b,c){let d=a.getSettingsPaths?.(b,c);return d&&d.length>0?d:[a.getSettingsPath(b,c)]}let Q={id:"claude",displayName:"Claude Code",scopes:r,eventTypes:C,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".claude","settings.json");case"project":return(0,f.resolve)(c,".claude","settings.json");case"local":return(0,f.resolve)(c,".claude","settings.local.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b}`:`"${a}" --hook ${b}`,timeout:60,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){a.hooks||(a.hooks={});let d=new Set(C);for(let b of Object.keys(a.hooks)){if(d.has(b))continue;let c=a.hooks[b];if(!Array.isArray(c))continue;let e=[];for(let a of c){if(!a||!Array.isArray(a.hooks)){a&&e.push(a);continue}let b=a.hooks.length;a.hooks=a.hooks.filter(a=>!M(a)),0===a.hooks.length&&b>0||e.push(a)}a.hooks[b]=e,0===e.length&&delete a.hooks[b]}for(let d of C){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>M(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!M(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>M(a)))return!0}}catch{}return!1},detectInstalled:()=>O("claude")||O("claude-code")};function R(a){if(!0===a[D])return!0;for(let b of["string"==typeof a.bash?a.bash:"","string"==typeof a.powershell?a.powershell:""])if(b.includes("failproofai")&&b.includes("--hook"))return!0;return!1}let S="./plugins/failproofai.mjs";function T(a){return(0,f.resolve)((0,f.dirname)(a),"plugins","failproofai.mjs")}function U(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,f.resolve)(a,"pi-extension"):(0,f.resolve)((0,E.fileURLToPath)(H.url),"..","..","..","pi-extension")}function V(a){return"string"==typeof a&&(!!/(?:^|\/)pi-extension\/?$/.test(a)||a.includes("pi-extension")&&a.includes("failproofai"))}let W="failproofai";function X(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,f.resolve)(a,"openclaw-plugin"):(0,f.resolve)((0,E.fileURLToPath)(H.url),"..","..","..","openclaw-plugin")}function Y(a){return"string"==typeof a&&(/(?:^|\/)openclaw-plugin\/?$/.test(a)||a.includes("openclaw-plugin")&&a.includes("failproofai"))}let Z="failproofai",$=new Set(["PreToolUse","PostToolUse"]);function _(a){if(!a||"object"!=typeof a)return!1;let b=a.command;return"string"==typeof b&&b.includes("failproofai")&&b.includes("--cli goose")}let aa={claude:Q,codex:{id:"codex",displayName:"OpenAI Codex",scopes:["user","project"],eventTypes:t,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".codex","hooks.json");case"project":case"local":return(0,f.resolve)(c,".codex","hooks.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli codex`:`"${a}" --hook ${b} --cli codex`,timeout:60,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){for(let d of(N(a),a.hooks||(a.hooks={}),t)){let e=u[d],f=this.buildHookEntry(b,d,c);a.hooks[e]||(a.hooks[e]=[]);let g=a.hooks[e],h=!1;for(let a of g){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>M(a));if(b>=0){a.hooks[b]=f,h=!0;break}}h||g.push({hooks:[f]})}},removeHooksFromFile(a){let b=this.readSettings(a),c=N(b);if(!b.hooks)return c&&this.writeSettings(a,b),0;let d=0;for(let a of Object.keys(b.hooks)){let c=b.hooks[a];if(Array.isArray(c)){for(let a=c.length-1;a>=0;a--){let b=c[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!M(a)),d+=e-b.hooks.length,0===b.hooks.length&&c.splice(a,1)}0===c.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,(d>0||c)&&this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>M(a)))return!0}}catch{}return!1},detectInstalled:()=>O("codex")},copilot:{id:"copilot",displayName:"GitHub Copilot",scopes:["user","project"],eventTypes:w,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".copilot","hooks","failproofai.json");case"project":case"local":return(0,f.resolve)(c,".github","hooks","failproofai.json")}},readSettings(a){let b=I(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){J(a,b)},buildHookEntry(a,b,c){let d="project"===c?`npx -y failproofai --hook ${b} --cli copilot`:`"${a}" --hook ${b} --cli copilot`;return{type:"command",bash:d,powershell:d,timeoutSec:60,[D]:!0}},isFailproofaiHook:R,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),w)){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>R(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!R(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>R(a)))return!0}}catch{}return!1},detectInstalled:()=>O("copilot")},cursor:{id:"cursor",displayName:"Cursor Agent",scopes:["user","project"],eventTypes:x,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".cursor","hooks.json");case"project":case"local":return(0,f.resolve)(c,".cursor","hooks.json")}},readSettings(a){let b=I(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli cursor`:`"${a}" --hook ${b} --cli cursor`,timeout:60,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),x)){let e=this.buildHookEntry(b,d,c),f=a.hooks[d],g=f??[];f||(a.hooks[d]=g);let h=g.findIndex(a=>M(a));h>=0?g[h]=e:g.push(e)}},removeHooksFromFile(a){let b=this.readSettings(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))continue;let e=d.length,f=d.filter(a=>!M(a));c+=e-f.length,0===f.length?delete b.hooks[a]:b.hooks[a]=f}return 0===Object.keys(b.hooks).length&&delete b.hooks,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)&&b.some(a=>M(a)))return!0}catch{}return!1},detectInstalled:()=>O("cursor-agent")||O("agent")},opencode:{id:"opencode",displayName:"OpenCode",scopes:["user","project"],eventTypes:["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".config","opencode","opencode.json");case"project":case"local":return(0,f.resolve)(c,".opencode","opencode.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry(a,b,c){if("user"===c){let a=(0,f.resolve)((0,g.homedir)(),".config","opencode","plugins","failproofai.mjs");return{spec:`file://${a}`,[D]:!0}}return{spec:S,[D]:!0}},isFailproofaiHook:a=>"string"==typeof a?a.includes("failproofai.mjs"):!!Array.isArray(a)&&"string"==typeof a[0]&&a[0].includes("failproofai.mjs"),writeHookEntries(a,b,c){let d,h,i=c??"project",j=T("user"===i?(0,f.resolve)((0,g.homedir)(),".config","opencode","opencode.json"):(0,f.resolve)(process.cwd(),".opencode","opencode.json"));(0,e.mkdirSync)((0,f.dirname)(j),{recursive:!0}),(0,e.writeFileSync)(j,(h=(d="project"===i)?'""':JSON.stringify(b),`// AUTO-GENERATED by failproofai. ${D}
25
+ ${b.comment}`:b.comment}this.doc.range[2]=b.offset;break}default:this.errors.push(new g.YAMLParseError(k(a),"UNEXPECTED_TOKEN",`Unsupported token ${a.type}`))}}*end(a=!1,b=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(a){let a=Object.assign({_directives:this.directives},this.options),c=new f.Document(void 0,a);this.atDirectives&&this.onError(b,"MISSING_CHAR","Missing directives-end indicator line"),c.range=[0,b,b],this.decorate(c,!1),yield c}}}},86888,(a,b,c)=>{"use strict";var d=a.r(71014),e=a.r(21525),f=a.r(25717),g=a.r(88583);function h(a,b){if(b)for(let c of b)switch(c.type){case"space":case"comment":a.push(c);break;case"newline":return a.push(c),!0}return!1}function i(a,b,c){switch(a.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":a.type=c,a.source=b;break;case"block-scalar":{let d=a.props.slice(1),e=b.length;for(let b of("block-scalar-header"===a.props[0].type&&(e-=a.props[0].source.length),d))b.offset+=e;delete a.props,Object.assign(a,{type:c,source:b,end:d});break}case"block-map":case"block-seq":{let d={type:"newline",offset:a.offset+b.length,indent:a.indent,source:"\n"};delete a.items,Object.assign(a,{type:c,source:b,end:[d]});break}default:{let d="indent"in a?a.indent:-1,e="end"in a&&Array.isArray(a.end)?a.end.filter(a=>"space"===a.type||"comment"===a.type||"newline"===a.type):[];for(let b of Object.keys(a))"type"!==b&&"offset"!==b&&delete a[b];Object.assign(a,{type:c,indent:d,source:b,end:e})}}}c.createScalarToken=function(a,b){let{implicitKey:c=!1,indent:d,inFlow:e=!1,offset:f=-1,type:i="PLAIN"}=b,j=g.stringifyString({type:i,value:a},{implicitKey:c,indent:d>0?" ".repeat(d):"",inFlow:e,options:{blockQuote:!0,lineWidth:-1}}),k=b.end??[{type:"newline",offset:-1,indent:d,source:"\n"}];switch(j[0]){case"|":case">":{let a=j.indexOf("\n"),b=j.substring(0,a),c=j.substring(a+1)+"\n",e=[{type:"block-scalar-header",offset:f,indent:d,source:b}];return h(e,k)||e.push({type:"newline",offset:-1,indent:d,source:"\n"}),{type:"block-scalar",offset:f,indent:d,props:e,source:c}}case'"':return{type:"double-quoted-scalar",offset:f,indent:d,source:j,end:k};case"'":return{type:"single-quoted-scalar",offset:f,indent:d,source:j,end:k};default:return{type:"scalar",offset:f,indent:d,source:j,end:k}}},c.resolveAsScalar=function(a,b=!0,c){if(a){let g=(a,b,d)=>{let e="number"==typeof a?a:Array.isArray(a)?a[0]:a.offset;if(c)c(e,b,d);else throw new f.YAMLParseError([e,e+1],b,d)};switch(a.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return e.resolveFlowScalar(a,b,g);case"block-scalar":return d.resolveBlockScalar({options:{strict:b}},a,g)}}return null},c.setScalarValue=function(a,b,c={}){let{afterKey:d=!1,implicitKey:e=!1,inFlow:f=!1,type:j}=c,k="indent"in a?a.indent:null;if(d&&"number"==typeof k&&(k+=2),!j)switch(a.type){case"single-quoted-scalar":j="QUOTE_SINGLE";break;case"double-quoted-scalar":j="QUOTE_DOUBLE";break;case"block-scalar":{let b=a.props[0];if("block-scalar-header"!==b.type)throw Error("Invalid block scalar header");j=">"===b.source[0]?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:j="PLAIN"}let l=g.stringifyString({type:j,value:b},{implicitKey:e||null===k,indent:null!==k&&k>0?" ".repeat(k):"",inFlow:f,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":!function(a,b){let c=b.indexOf("\n"),d=b.substring(0,c),e=b.substring(c+1)+"\n";if("block-scalar"===a.type){let b=a.props[0];if("block-scalar-header"!==b.type)throw Error("Invalid block scalar header");b.source=d,a.source=e}else{let{offset:b}=a,c="indent"in a?a.indent:-1,f=[{type:"block-scalar-header",offset:b,indent:c,source:d}];for(let b of(h(f,"end"in a?a.end:void 0)||f.push({type:"newline",offset:-1,indent:c,source:"\n"}),Object.keys(a)))"type"!==b&&"offset"!==b&&delete a[b];Object.assign(a,{type:"block-scalar",indent:c,props:f,source:e})}}(a,l);break;case'"':i(a,l,"double-quoted-scalar");break;case"'":i(a,l,"single-quoted-scalar");break;default:i(a,l,"scalar")}}},25449,(a,b,c)=>{"use strict";function d(a){switch(a.type){case"block-scalar":{let b="";for(let c of a.props)b+=d(c);return b+a.source}case"block-map":case"block-seq":{let b="";for(let c of a.items)b+=e(c);return b}case"flow-collection":{let b=a.start.source;for(let c of a.items)b+=e(c);for(let c of a.end)b+=c.source;return b}case"document":{let b=e(a);if(a.end)for(let c of a.end)b+=c.source;return b}default:{let b=a.source;if("end"in a&&a.end)for(let c of a.end)b+=c.source;return b}}}function e({start:a,key:b,sep:c,value:f}){let g="";for(let b of a)g+=b.source;if(b&&(g+=d(b)),c)for(let a of c)g+=a.source;return f&&(g+=d(f)),g}c.stringify=a=>"type"in a?d(a):e(a)},2135,(a,b,c)=>{"use strict";let d=Symbol("break visit"),e=Symbol("skip children"),f=Symbol("remove item");function g(a,b){"type"in a&&"document"===a.type&&(a={start:a.start,value:a.value}),function a(b,c,e){let g=e(c,b);if("symbol"==typeof g)return g;for(let h of["key","value"]){let i=c[h];if(i&&"items"in i){for(let c=0;c<i.items.length;++c){let g=a(Object.freeze(b.concat([[h,c]])),i.items[c],e);if("number"==typeof g)c=g-1;else{if(g===d)return d;g===f&&(i.items.splice(c,1),c-=1)}}"function"==typeof g&&"key"===h&&(g=g(c,b))}}return"function"==typeof g?g(c,b):g}(Object.freeze([]),a,b)}g.BREAK=d,g.SKIP=e,g.REMOVE=f,g.itemAtPath=(a,b)=>{let c=a;for(let[a,d]of b){let b=c?.[a];if(!b||!("items"in b))return;c=b.items[d]}return c},g.parentCollection=(a,b)=>{let c=g.itemAtPath(a,b.slice(0,-1)),d=b[b.length-1][0],e=c?.[d];if(e&&"items"in e)return e;throw Error("Parent collection not found")},c.visit=g},2704,(a,b,c)=>{"use strict";var d=a.r(86888),e=a.r(25449),f=a.r(2135);c.createScalarToken=d.createScalarToken,c.resolveAsScalar=d.resolveAsScalar,c.setScalarValue=d.setScalarValue,c.stringify=e.stringify,c.visit=f.visit,c.BOM="\uFEFF",c.DOCUMENT="\x02",c.FLOW_END="\x18",c.SCALAR="\x1f",c.isCollection=a=>!!a&&"items"in a,c.isScalar=a=>!!a&&("scalar"===a.type||"single-quoted-scalar"===a.type||"double-quoted-scalar"===a.type||"block-scalar"===a.type),c.prettyToken=function(a){switch(a){case"\uFEFF":return"<BOM>";case"\x02":return"<DOC>";case"\x18":return"<FLOW_END>";case"\x1f":return"<SCALAR>";default:return JSON.stringify(a)}},c.tokenType=function(a){switch(a){case"\uFEFF":return"byte-order-mark";case"\x02":return"doc-mode";case"\x18":return"flow-error-end";case"\x1f":return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case"\n":case"\r\n":return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(a[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}},66326,(a,b,c)=>{"use strict";var d=a.r(2704);function e(a){switch(a){case void 0:case" ":case"\n":case"\r":case" ":return!0;default:return!1}}let f=new Set("0123456789ABCDEFabcdef"),g=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),h=new Set(",[]{}"),i=new Set(" ,[]{}\n\r "),j=a=>!a||i.has(a);c.Lexer=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(a,b=!1){if(a){if("string"!=typeof a)throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+a:a,this.lineEndPos=null}this.atEnd=!b;let c=this.next??"stream";for(;c&&(b||this.hasChars(1));)c=yield*this.parseNext(c)}atLineEnd(){let a=this.pos,b=this.buffer[a];for(;" "===b||" "===b;)b=this.buffer[++a];return!b||"#"===b||"\n"===b||"\r"===b&&"\n"===this.buffer[a+1]}charAt(a){return this.buffer[this.pos+a]}continueScalar(a){let b=this.buffer[a];if(this.indentNext>0){let c=0;for(;" "===b;)b=this.buffer[++c+a];if("\r"===b){let b=this.buffer[c+a+1];if("\n"===b||!b&&!this.atEnd)return a+c+1}return"\n"!==b&&!(c>=this.indentNext)&&(b||this.atEnd)?-1:a+c}if("-"===b||"."===b){let b=this.buffer.substr(a,3);if(("---"===b||"..."===b)&&e(this.buffer[a+3]))return -1}return a}getLine(){let a=this.lineEndPos;return(("number"!=typeof a||-1!==a&&a<this.pos)&&(a=this.buffer.indexOf("\n",this.pos),this.lineEndPos=a),-1===a)?this.atEnd?this.buffer.substring(this.pos):null:("\r"===this.buffer[a-1]&&(a-=1),this.buffer.substring(this.pos,a))}hasChars(a){return this.pos+a<=this.buffer.length}setNext(a){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=a,null}peek(a){return this.buffer.substr(this.pos,a)}*parseNext(a){switch(a){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let a=this.getLine();if(null===a)return this.setNext("stream");if(a[0]===d.BOM&&(yield*this.pushCount(1),a=a.substring(1)),"%"===a[0]){let b=a.length,c=a.indexOf("#");for(;-1!==c;){let d=a[c-1];if(" "===d||" "===d){b=c-1;break}c=a.indexOf("#",c+1)}for(;;){let c=a[b-1];if(" "===c||" "===c)b-=1;else break}let d=(yield*this.pushCount(b))+(yield*this.pushSpaces(!0));return yield*this.pushCount(a.length-d),this.pushNewline(),"stream"}if(this.atLineEnd()){let b=yield*this.pushSpaces(!0);return yield*this.pushCount(a.length-b),yield*this.pushNewline(),"stream"}return yield d.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let a=this.charAt(0);if(!a&&!this.atEnd)return this.setNext("line-start");if("-"===a||"."===a){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let a=this.peek(3);if(("---"===a||"..."===a)&&e(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,"---"===a?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!e(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[a,b]=this.peek(2);if(!b&&!this.atEnd)return this.setNext("block-start");if(("-"===a||"?"===a||":"===a)&&e(b)){let a=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=a,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let a=this.getLine();if(null===a)return this.setNext("doc");let b=yield*this.pushIndicators();switch(a[b]){case"#":yield*this.pushCount(a.length-b);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(j),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return b+=yield*this.parseBlockScalarHeader(),b+=yield*this.pushSpaces(!0),yield*this.pushCount(a.length-b),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let a,b,c=-1;do(a=yield*this.pushNewline())>0?(b=yield*this.pushSpaces(!1),this.indentValue=c=b):b=0,b+=yield*this.pushSpaces(!0);while(a+b>0)let f=this.getLine();if(null===f)return this.setNext("flow");if((-1!==c&&c<this.indentNext&&"#"!==f[0]||0===c&&(f.startsWith("---")||f.startsWith("..."))&&e(f[3]))&&(c!==this.indentNext-1||1!==this.flowLevel||"]"!==f[0]&&"}"!==f[0]))return this.flowLevel=0,yield d.FLOW_END,yield*this.parseLineStart();let g=0;for(;","===f[g];)g+=yield*this.pushCount(1),g+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(f[g+=yield*this.pushIndicators()]){case void 0:return"flow";case"#":return yield*this.pushCount(f.length-g),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(j),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let a=this.charAt(1);if(this.flowKey||e(a)||","===a)return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let a=this.charAt(0),b=this.buffer.indexOf(a,this.pos+1);if("'"===a)for(;-1!==b&&"'"===this.buffer[b+1];)b=this.buffer.indexOf("'",b+2);else for(;-1!==b;){let a=0;for(;"\\"===this.buffer[b-1-a];)a+=1;if(a%2==0)break;b=this.buffer.indexOf('"',b+1)}let c=this.buffer.substring(0,b),d=c.indexOf("\n",this.pos);if(-1!==d){for(;-1!==d;){let a=this.continueScalar(d+1);if(-1===a)break;d=c.indexOf("\n",a)}-1!==d&&(b=d-("\r"===c[d-1]?2:1))}if(-1===b){if(!this.atEnd)return this.setNext("quoted-scalar");b=this.buffer.length}return yield*this.pushToIndex(b+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let a=this.pos;for(;;){let b=this.buffer[++a];if("+"===b)this.blockScalarKeep=!0;else if(b>"0"&&b<="9")this.blockScalarIndent=Number(b)-1;else if("-"!==b)break}return yield*this.pushUntil(a=>e(a)||"#"===a)}*parseBlockScalar(){let a,b=this.pos-1,c=0;a:for(let d=this.pos;a=this.buffer[d];++d)switch(a){case" ":c+=1;break;case"\n":b=d,c=0;break;case"\r":{let a=this.buffer[d+1];if(!a&&!this.atEnd)return this.setNext("block-scalar");if("\n"===a)break}default:break a}if(!a&&!this.atEnd)return this.setNext("block-scalar");if(c>=this.indentNext){-1===this.blockScalarIndent?this.indentNext=c:this.indentNext=this.blockScalarIndent+(0===this.indentNext?1:this.indentNext);do{let a=this.continueScalar(b+1);if(-1===a)break;b=this.buffer.indexOf("\n",a)}while(-1!==b)if(-1===b){if(!this.atEnd)return this.setNext("block-scalar");b=this.buffer.length}}let e=b+1;for(a=this.buffer[e];" "===a;)a=this.buffer[++e];if(" "===a){for(;" "===a||" "===a||"\r"===a||"\n"===a;)a=this.buffer[++e];b=e-1}else if(!this.blockScalarKeep)for(;;){let a=b-1,d=this.buffer[a];"\r"===d&&(d=this.buffer[--a]);let e=a;for(;" "===d;)d=this.buffer[--a];if("\n"===d&&a>=this.pos&&a+1+c>e)b=a;else break}return yield d.SCALAR,yield*this.pushToIndex(b+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let a,b=this.flowLevel>0,c=this.pos-1,f=this.pos-1;for(;a=this.buffer[++f];)if(":"===a){let a=this.buffer[f+1];if(e(a)||b&&h.has(a))break;c=f}else if(e(a)){let d=this.buffer[f+1];if("\r"===a&&("\n"===d?(f+=1,a="\n",d=this.buffer[f+1]):c=f),"#"===d||b&&h.has(d))break;if("\n"===a){let a=this.continueScalar(f+1);if(-1===a)break;f=Math.max(f,a-2)}}else{if(b&&h.has(a))break;c=f}return a||this.atEnd?(yield d.SCALAR,yield*this.pushToIndex(c+1,!0),b?"flow":"doc"):this.setNext("plain-scalar")}*pushCount(a){return a>0?(yield this.buffer.substr(this.pos,a),this.pos+=a,a):0}*pushToIndex(a,b){let c=this.buffer.slice(this.pos,a);return c?(yield c,this.pos+=c.length,c.length):(b&&(yield""),0)}*pushIndicators(){let a=0;for(;;){switch(this.charAt(0)){case"!":a+=yield*this.pushTag(),a+=yield*this.pushSpaces(!0);continue;case"&":a+=yield*this.pushUntil(j),a+=yield*this.pushSpaces(!0);continue;case"-":case"?":case":":{let b=this.flowLevel>0,c=this.charAt(1);if(e(c)||b&&h.has(c)){b?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,a+=yield*this.pushCount(1),a+=yield*this.pushSpaces(!0);continue}}}break}return a}*pushTag(){if("<"===this.charAt(1)){let a=this.pos+2,b=this.buffer[a];for(;!e(b)&&">"!==b;)b=this.buffer[++a];return yield*this.pushToIndex(">"===b?a+1:a,!1)}{let a=this.pos+1,b=this.buffer[a];for(;b;)if(g.has(b))b=this.buffer[++a];else if("%"===b&&f.has(this.buffer[a+1])&&f.has(this.buffer[a+2]))b=this.buffer[a+=3];else break;return yield*this.pushToIndex(a,!1)}}*pushNewline(){let a=this.buffer[this.pos];return"\n"===a?yield*this.pushCount(1):"\r"===a&&"\n"===this.charAt(1)?yield*this.pushCount(2):0}*pushSpaces(a){let b,c=this.pos-1;do b=this.buffer[++c];while(" "===b||a&&" "===b)let d=c-this.pos;return d>0&&(yield this.buffer.substr(this.pos,d),this.pos=c),d}*pushUntil(a){let b=this.pos,c=this.buffer[b];for(;!a(c);)c=this.buffer[++b];return yield*this.pushToIndex(b,!1)}}},46987,(a,b,c)=>{"use strict";c.LineCounter=class{constructor(){this.lineStarts=[],this.addNewLine=a=>this.lineStarts.push(a),this.linePos=a=>{let b=0,c=this.lineStarts.length;for(;b<c;){let d=b+c>>1;this.lineStarts[d]<a?b=d+1:c=d}if(this.lineStarts[b]===a)return{line:b+1,col:1};if(0===b)return{line:0,col:a};let d=this.lineStarts[b-1];return{line:b,col:a-d+1}}}}},9575,(a,b,c)=>{"use strict";var d=a.r(5365),e=a.r(2704),f=a.r(66326);function g(a,b){for(let c=0;c<a.length;++c)if(a[c].type===b)return!0;return!1}function h(a){for(let b=0;b<a.length;++b)switch(a[b].type){case"space":case"comment":case"newline":break;default:return b}return -1}function i(a){switch(a?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function j(a){switch(a.type){case"document":return a.start;case"block-map":{let b=a.items[a.items.length-1];return b.sep??b.start}case"block-seq":return a.items[a.items.length-1].start;default:return[]}}function k(a){if(0===a.length)return[];let b=a.length;a:for(;--b>=0;)switch(a[b].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break a}for(;a[++b]?.type==="space";);return a.splice(b,a.length)}function l(a,b){if(b.length<1e5)Array.prototype.push.apply(a,b);else for(let c=0;c<b.length;++c)a.push(b[c])}function m(a){if("flow-seq-start"===a.start.type)for(let b of a.items)!b.sep||b.value||g(b.start,"explicit-key-ind")||g(b.sep,"map-value-ind")||(b.key&&(b.value=b.key),delete b.key,i(b.value)?b.value.end?l(b.value.end,b.sep):b.value.end=b.sep:l(b.start,b.sep),delete b.sep)}c.Parser=class{constructor(a){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new f.Lexer,this.onNewLine=a}*parse(a,b=!1){for(let c of(this.onNewLine&&0===this.offset&&this.onNewLine(0),this.lexer.lex(a,b)))yield*this.next(c);b||(yield*this.end())}*next(a){if(this.source=a,d.env.LOG_TOKENS&&console.log("|",e.prettyToken(a)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=a.length;return}let b=e.tokenType(a);if(b)if("scalar"===b)this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=b,yield*this.step(),b){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+a.length);break;case"space":this.atNewLine&&" "===a[0]&&(this.indent+=a.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=a.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=a.length}else{let b=`Not a YAML token: ${a}`;yield*this.pop({type:"error",offset:this.offset,message:b,source:a}),this.offset+=a.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let a=this.peek(1);if("doc-end"===this.type&&a?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!a)return yield*this.stream();switch(a.type){case"document":return yield*this.document(a);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(a);case"block-scalar":return yield*this.blockScalar(a);case"block-map":return yield*this.blockMap(a);case"block-seq":return yield*this.blockSequence(a);case"flow-collection":return yield*this.flowCollection(a);case"doc-end":return yield*this.documentEnd(a)}yield*this.pop()}peek(a){return this.stack[this.stack.length-a]}*pop(a){let b=a??this.stack.pop();if(b)if(0===this.stack.length)yield b;else{let a=this.peek(1);switch("block-scalar"===b.type?b.indent="indent"in a?a.indent:0:"flow-collection"===b.type&&"document"===a.type&&(b.indent=0),"flow-collection"===b.type&&m(b),a.type){case"document":a.value=b;break;case"block-scalar":a.props.push(b);break;case"block-map":{let c=a.items[a.items.length-1];if(c.value){a.items.push({start:[],key:b,sep:[]}),this.onKeyLine=!0;return}if(c.sep)c.value=b;else{Object.assign(c,{key:b,sep:[]}),this.onKeyLine=!c.explicitKey;return}break}case"block-seq":{let c=a.items[a.items.length-1];c.value?a.items.push({start:[],value:b}):c.value=b;break}case"flow-collection":{let c=a.items[a.items.length-1];!c||c.value?a.items.push({start:[],key:b,sep:[]}):c.sep?c.value=b:Object.assign(c,{key:b,sep:[]});return}default:yield*this.pop(),yield*this.pop(b)}if(("document"===a.type||"block-map"===a.type||"block-seq"===a.type)&&("block-map"===b.type||"block-seq"===b.type)){let c=b.items[b.items.length-1];c&&!c.sep&&!c.value&&c.start.length>0&&-1===h(c.start)&&(0===b.indent||c.start.every(a=>"comment"!==a.type||a.indent<b.indent))&&("document"===a.type?a.end=c.start:a.items.push({start:c.start}),b.items.splice(-1,1))}}else yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let a={type:"document",offset:this.offset,start:[]};"doc-start"===this.type&&a.start.push(this.sourceToken),this.stack.push(a);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(a){if(a.value)return yield*this.lineEnd(a);switch(this.type){case"doc-start":-1!==h(a.start)?(yield*this.pop(),yield*this.step()):a.start.push(this.sourceToken);return;case"anchor":case"tag":case"space":case"comment":case"newline":a.start.push(this.sourceToken);return}let b=this.startBlockValue(a);b?this.stack.push(b):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(a){if("map-value-ind"===this.type){let b,c=k(j(this.peek(2)));a.end?((b=a.end).push(this.sourceToken),delete a.end):b=[this.sourceToken];let d={type:"block-map",offset:a.offset,indent:a.indent,items:[{start:c,key:a,sep:b}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=d}else yield*this.lineEnd(a)}*blockScalar(a){switch(this.type){case"space":case"comment":case"newline":a.props.push(this.sourceToken);return;case"scalar":if(a.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let a=this.source.indexOf("\n")+1;for(;0!==a;)this.onNewLine(this.offset+a),a=this.source.indexOf("\n",a)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(a){let b=a.items[a.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,b.value){let c="end"in b.value?b.value.end:void 0,d=Array.isArray(c)?c[c.length-1]:void 0;d?.type==="comment"?c?.push(this.sourceToken):a.items.push({start:[this.sourceToken]})}else b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"space":case"comment":if(b.value)a.items.push({start:[this.sourceToken]});else if(b.sep)b.sep.push(this.sourceToken);else{if(this.atIndentedComment(b.start,a.indent)){let c=a.items[a.items.length-2],d=c?.value?.end;if(Array.isArray(d)){l(d,b.start),d.push(this.sourceToken),a.items.pop();return}}b.start.push(this.sourceToken)}return}if(this.indent>=a.indent){let c=!this.onKeyLine&&this.indent===a.indent,d=c&&(b.sep||b.explicitKey)&&"seq-item-ind"!==this.type,e=[];if(d&&b.sep&&!b.value){let c=[];for(let d=0;d<b.sep.length;++d){let e=b.sep[d];switch(e.type){case"newline":c.push(d);break;case"space":break;case"comment":e.indent>a.indent&&(c.length=0);break;default:c.length=0}}c.length>=2&&(e=b.sep.splice(c[1]))}switch(this.type){case"anchor":case"tag":d||b.value?(e.push(this.sourceToken),a.items.push({start:e}),this.onKeyLine=!0):b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"explicit-key-ind":b.sep||b.explicitKey?d||b.value?(e.push(this.sourceToken),a.items.push({start:e,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}):(b.start.push(this.sourceToken),b.explicitKey=!0),this.onKeyLine=!0;return;case"map-value-ind":if(b.explicitKey)if(b.sep)if(b.value)a.items.push({start:[],key:null,sep:[this.sourceToken]});else if(g(b.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]});else if(i(b.key)&&!g(b.sep,"newline")){let a=k(b.start),c=b.key,d=b.sep;d.push(this.sourceToken),delete b.key,delete b.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:c,sep:d}]})}else e.length>0?b.sep=b.sep.concat(e,this.sourceToken):b.sep.push(this.sourceToken);else if(g(b.start,"newline"))Object.assign(b,{key:null,sep:[this.sourceToken]});else{let a=k(b.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else b.sep?b.value||d?a.items.push({start:e,key:null,sep:[this.sourceToken]}):g(b.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):b.sep.push(this.sourceToken):Object.assign(b,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let c=this.flowScalar(this.type);d||b.value?(a.items.push({start:e,key:c,sep:[]}),this.onKeyLine=!0):b.sep?this.stack.push(c):(Object.assign(b,{key:c,sep:[]}),this.onKeyLine=!0);return}default:{let d=this.startBlockValue(a);if(d){if("block-seq"===d.type){if(!b.explicitKey&&b.sep&&!g(b.sep,"newline"))return void(yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source}))}else c&&a.items.push({start:e});this.stack.push(d);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(a){let b=a.items[a.items.length-1];switch(this.type){case"newline":if(b.value){let c="end"in b.value?b.value.end:void 0,d=Array.isArray(c)?c[c.length-1]:void 0;d?.type==="comment"?c?.push(this.sourceToken):a.items.push({start:[this.sourceToken]})}else b.start.push(this.sourceToken);return;case"space":case"comment":if(b.value)a.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(b.start,a.indent)){let c=a.items[a.items.length-2],d=c?.value?.end;if(Array.isArray(d)){l(d,b.start),d.push(this.sourceToken),a.items.pop();return}}b.start.push(this.sourceToken)}return;case"anchor":case"tag":if(b.value||this.indent<=a.indent)break;b.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==a.indent)break;b.value||g(b.start,"seq-item-ind")?a.items.push({start:[this.sourceToken]}):b.start.push(this.sourceToken);return}if(this.indent>a.indent){let b=this.startBlockValue(a);if(b)return void this.stack.push(b)}yield*this.pop(),yield*this.step()}*flowCollection(a){let b=a.items[a.items.length-1];if("flow-error-end"===this.type){let a;do yield*this.pop(),a=this.peek(1);while(a?.type==="flow-collection")}else if(0===a.end.length){switch(this.type){case"comma":case"explicit-key-ind":!b||b.sep?a.items.push({start:[this.sourceToken]}):b.start.push(this.sourceToken);return;case"map-value-ind":!b||b.value?a.items.push({start:[],key:null,sep:[this.sourceToken]}):b.sep?b.sep.push(this.sourceToken):Object.assign(b,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!b||b.value?a.items.push({start:[this.sourceToken]}):b.sep?b.sep.push(this.sourceToken):b.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let c=this.flowScalar(this.type);!b||b.value?a.items.push({start:[],key:c,sep:[]}):b.sep?this.stack.push(c):Object.assign(b,{key:c,sep:[]});return}case"flow-map-end":case"flow-seq-end":a.end.push(this.sourceToken);return}let c=this.startBlockValue(a);c?this.stack.push(c):(yield*this.pop(),yield*this.step())}else{let b=this.peek(2);if("block-map"!==b.type||("map-value-ind"!==this.type||b.indent!==a.indent)&&("newline"!==this.type||b.items[b.items.length-1].sep))if("map-value-ind"===this.type&&"flow-collection"!==b.type){let c=k(j(b));m(a);let d=a.end.splice(1,a.end.length);d.push(this.sourceToken);let e={type:"block-map",offset:a.offset,indent:a.indent,items:[{start:c,key:a,sep:d}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=e}else yield*this.lineEnd(a);else yield*this.pop(),yield*this.step()}}flowScalar(a){if(this.onNewLine){let a=this.source.indexOf("\n")+1;for(;0!==a;)this.onNewLine(this.offset+a),a=this.source.indexOf("\n",a)+1}return{type:a,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(a){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let b=k(j(a));return b.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:b,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let b=k(j(a));return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:b,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(a,b){return"comment"===this.type&&!(this.indent<=b)&&a.every(a=>"newline"===a.type||"space"===a.type)}*documentEnd(a){"doc-mode"!==this.type&&(a.end?a.end.push(this.sourceToken):a.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop()))}*lineEnd(a){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:a.end?a.end.push(this.sourceToken):a.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop())}}}},5013,(a,b,c)=>{"use strict";var d=a.r(19662),e=a.r(69242),f=a.r(25717),g=a.r(18114),h=a.r(27267),i=a.r(46987),j=a.r(9575);function k(a){let b=!1!==a.prettyErrors;return{lineCounter:a.lineCounter||b&&new i.LineCounter||null,prettyErrors:b}}function l(a,b={}){let{lineCounter:c,prettyErrors:e}=k(b),g=new j.Parser(c?.addNewLine),h=new d.Composer(b),i=null;for(let b of h.compose(g.parse(a),!0,a.length))if(i){if("silent"!==i.options.logLevel){i.errors.push(new f.YAMLParseError(b.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}}else i=b;return e&&c&&(i.errors.forEach(f.prettifyError(a,c)),i.warnings.forEach(f.prettifyError(a,c))),i}c.parse=function(a,b,c){let d;"function"==typeof b?d=b:void 0===c&&b&&"object"==typeof b&&(c=b);let e=l(a,c);if(!e)return null;if(e.warnings.forEach(a=>g.warn(e.options.logLevel,a)),e.errors.length>0)if("silent"!==e.options.logLevel)throw e.errors[0];else e.errors=[];return e.toJS(Object.assign({reviver:d},c))},c.parseAllDocuments=function(a,b={}){let{lineCounter:c,prettyErrors:e}=k(b),g=new j.Parser(c?.addNewLine),h=new d.Composer(b),i=Array.from(h.compose(g.parse(a)));if(e&&c)for(let b of i)b.errors.forEach(f.prettifyError(a,c)),b.warnings.forEach(f.prettifyError(a,c));return i.length>0?i:Object.assign([],{empty:!0},h.streamInfo())},c.parseDocument=l,c.stringify=function(a,b,c){let d=null;if("function"==typeof b||Array.isArray(b)?d=b:void 0===c&&b&&(c=b),"string"==typeof c&&(c=c.length),"number"==typeof c){let a=Math.round(c);c=a<1?void 0:a>8?{indent:8}:{indent:a}}if(void 0===a){let{keepUndefined:a}=c??b??{};if(!a)return}return h.isDocument(a)&&!d?a.toString(c):new e.Document(a,d,c).toString(c)}},22650,(a,b,c)=>{"use strict";var d=a.r(19662),e=a.r(69242),f=a.r(98027),g=a.r(25717),h=a.r(21562),i=a.r(27267),j=a.r(17602),k=a.r(27853),l=a.r(47544),m=a.r(7621),n=a.r(2704),o=a.r(66326),p=a.r(46987),q=a.r(9575),r=a.r(5013),s=a.r(85927);c.Composer=d.Composer,c.Document=e.Document,c.Schema=f.Schema,c.YAMLError=g.YAMLError,c.YAMLParseError=g.YAMLParseError,c.YAMLWarning=g.YAMLWarning,c.Alias=h.Alias,c.isAlias=i.isAlias,c.isCollection=i.isCollection,c.isDocument=i.isDocument,c.isMap=i.isMap,c.isNode=i.isNode,c.isPair=i.isPair,c.isScalar=i.isScalar,c.isSeq=i.isSeq,c.Pair=j.Pair,c.Scalar=k.Scalar,c.YAMLMap=l.YAMLMap,c.YAMLSeq=m.YAMLSeq,c.CST=n,c.Lexer=o.Lexer,c.LineCounter=p.LineCounter,c.Parser=q.Parser,c.parse=r.parse,c.parseAllDocuments=r.parseAllDocuments,c.parseDocument=r.parseDocument,c.stringify=r.stringify,c.visit=s.visit,c.visitAsync=s.visitAsync},92509,(a,b,c)=>{b.exports=a.x("url",()=>require("url"))},64338,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157),f=a.i(60526),g=a.i(66680),h=a.i(50227);a.i(8674),a.i(1144);var i=a.i(13095);async function j(){return function(a=Date.now()){let b,c,d=(c=process.env.FAILPROOFAI_STATE_DIR)?(0,h.resolve)(c,"sessions"):(0,h.join)((0,f.homedir)(),".failproofai","state","sessions");if(!(0,e.existsSync)(d))return[];let g=[];try{b=(0,e.readdirSync)(d)}catch{return[]}for(let c of b)if(c.endsWith(".json"))try{var i;let b=(i=JSON.parse((0,e.readFileSync)((0,h.join)(d,c),"utf8")))&&"object"==typeof i&&1===i.schemaVersion&&"string"==typeof i.sessionId&&0!==i.sessionId.length&&Number.isFinite(i.pausedAt)&&Number.isFinite(i.expiresAt)?{schemaVersion:1,sessionId:i.sessionId,pausedAt:i.pausedAt,expiresAt:i.expiresAt,setBy:"string"==typeof i.setBy?i.setBy:"unknown",..."string"==typeof i.cwd?{cwd:i.cwd}:{}}:null;if(!b||b.expiresAt<=a)continue;let{schemaVersion:f,...j}=b;g.push(j)}catch{}return g.sort((a,b)=>b.pausedAt-a.pausedAt)}()}(0,i.ensureServerEntryExports)([j]),(0,d.registerServerReference)(j,"00117ecdc8a8938b3f095bf9a6e5d9ab486f15b646",null);var k=a.i(10695);function l(a){if(!(0,e.existsSync)(a))return{};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return(0,k.hookLogWarn)(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{}}}function m(a){let b=(0,f.homedir)(),c=(0,h.resolve)(a);for(;c!==b;){let a=(0,h.resolve)(c,".failproofai");try{if((0,e.statSync)(a).isDirectory())return c}catch{}let b=(0,h.dirname)(c);if(b===c)break;c=b}return(0,h.resolve)(a)}function n(){return(0,h.resolve)((0,f.homedir)(),".failproofai","policies-config.json")}function o(){let a=n();if(!(0,e.existsSync)(a))return{enabledPolicies:[]};try{let b=(0,e.readFileSync)(a,"utf8");return JSON.parse(b)}catch(b){return(0,k.hookLogWarn)(`failed to parse config at ${a}: ${b instanceof Error?b.message:String(b)}`),{enabledPolicies:[]}}}function p(a){let b=n(),c=(0,h.dirname)(b);(0,e.existsSync)(c)||(0,e.mkdirSync)(c,{recursive:!0}),(0,e.writeFileSync)(b,JSON.stringify(a,null,2)+"\n","utf8")}function q(a,b){switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".failproofai","policies-config.json");case"project":return(0,h.resolve)(m(b??process.cwd()),".failproofai","policies-config.json");case"local":return(0,h.resolve)(m(b??process.cwd()),".failproofai","policies-config.local.json")}}function r(a,b){let c=q(a,b);if(!(0,e.existsSync)(c))return{enabledPolicies:[]};try{let a=(0,e.readFileSync)(c,"utf8");return JSON.parse(a)}catch(a){return(0,k.hookLogWarn)(`failed to parse config at ${c}: ${a instanceof Error?a.message:String(a)}`),{enabledPolicies:[]}}}function s(a,b,c){let d=q(b,c),f=(0,h.dirname)(d);(0,e.existsSync)(f)||(0,e.mkdirSync)(f,{recursive:!0}),(0,e.writeFileSync)(d,JSON.stringify(a,null,2)+"\n","utf8")}var t=a.i(74533);let u=["user","project","local"],v=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],w=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],x={session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},y=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],z=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],A=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],B=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],C=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],D=["PreToolUse","PostToolUse","PreInvocation","Stop"],E=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],F=["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","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a),G="__failproofai_hook__";var H=a.i(57764),I=a.i(22650),J=a.i(43600);let K={get url(){return`file://${a.P("src/hooks/integrations.ts")}`}};function L(a){return(0,e.existsSync)(a)?JSON.parse((0,e.readFileSync)(a,"utf8")):{}}function M(a,b){(0,e.mkdirSync)((0,h.dirname)(a),{recursive:!0}),(0,e.writeFileSync)(a,JSON.stringify(b,null,2)+"\n","utf8")}function N(a){try{return(0,e.existsSync)(a)?(0,I.parseDocument)((0,e.readFileSync)(a,"utf8")):(0,I.parseDocument)("")}catch{return(0,I.parseDocument)("")}}function O(a,b){(0,e.mkdirSync)((0,h.dirname)(a),{recursive:!0}),(0,e.writeFileSync)(a,b.toString(),"utf8")}function P(a){if(!a||"object"!=typeof a)return!1;if(!0===a[G])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}function Q(a){return"version"in a&&(delete a.version,!0)}function R(a){try{let b=`which ${a}`;return(0,t.execSync)(b,{encoding:"utf8",stdio:"pipe"}),!0}catch{return!1}}function S(a,b,c){let d=a.getSettingsPaths?.(b,c);return d&&d.length>0?d:[a.getSettingsPath(b,c)]}let T={id:"claude",displayName:"Claude Code",scopes:u,eventTypes:F,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".claude","settings.json");case"project":return(0,h.resolve)(c,".claude","settings.json");case"local":return(0,h.resolve)(c,".claude","settings.local.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b}`:`"${a}" --hook ${b}`,timeout:60,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){a.hooks||(a.hooks={});let d=new Set(F);for(let b of Object.keys(a.hooks)){if(d.has(b))continue;let c=a.hooks[b];if(!Array.isArray(c))continue;let e=[];for(let a of c){if(!a||!Array.isArray(a.hooks)){a&&e.push(a);continue}let b=a.hooks.length;a.hooks=a.hooks.filter(a=>!P(a)),0===a.hooks.length&&b>0||e.push(a)}a.hooks[b]=e,0===e.length&&delete a.hooks[b]}for(let d of F){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>P(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!P(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>P(a)))return!0}}catch{}return!1},detectInstalled:()=>R("claude")||R("claude-code")};function U(a){if(!0===a[G])return!0;for(let b of["string"==typeof a.bash?a.bash:"","string"==typeof a.powershell?a.powershell:""])if(b.includes("failproofai")&&b.includes("--hook"))return!0;return!1}let V="./plugins/failproofai.mjs";function W(a){return(0,h.resolve)((0,h.dirname)(a),"plugins","failproofai.mjs")}function X(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,h.resolve)(a,"pi-extension"):(0,h.resolve)((0,H.fileURLToPath)(K.url),"..","..","..","pi-extension")}function Y(a){return"string"==typeof a&&(!!/(?:^|\/)pi-extension\/?$/.test(a)||a.includes("pi-extension")&&a.includes("failproofai"))}let Z="failproofai";function $(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,h.resolve)(a,"openclaw-plugin"):(0,h.resolve)((0,H.fileURLToPath)(K.url),"..","..","..","openclaw-plugin")}function _(a){return"string"==typeof a&&(/(?:^|\/)openclaw-plugin\/?$/.test(a)||a.includes("openclaw-plugin")&&a.includes("failproofai"))}let aa="failproofai",ab=new Set(["PreToolUse","PostToolUse"]);function ac(a){if(!a||"object"!=typeof a)return!1;let b=a.command;return"string"==typeof b&&b.includes("failproofai")&&b.includes("--cli goose")}let ad={claude:T,codex:{id:"codex",displayName:"OpenAI Codex",scopes:["user","project"],eventTypes:w,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".codex","hooks.json");case"project":case"local":return(0,h.resolve)(c,".codex","hooks.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli codex`:`"${a}" --hook ${b} --cli codex`,timeout:60,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){for(let d of(Q(a),a.hooks||(a.hooks={}),w)){let e=x[d],f=this.buildHookEntry(b,d,c);a.hooks[e]||(a.hooks[e]=[]);let g=a.hooks[e],h=!1;for(let a of g){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>P(a));if(b>=0){a.hooks[b]=f,h=!0;break}}h||g.push({hooks:[f]})}},removeHooksFromFile(a){let b=this.readSettings(a),c=Q(b);if(!b.hooks)return c&&this.writeSettings(a,b),0;let d=0;for(let a of Object.keys(b.hooks)){let c=b.hooks[a];if(Array.isArray(c)){for(let a=c.length-1;a>=0;a--){let b=c[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!P(a)),d+=e-b.hooks.length,0===b.hooks.length&&c.splice(a,1)}0===c.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,(d>0||c)&&this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>P(a)))return!0}}catch{}return!1},detectInstalled:()=>R("codex")},copilot:{id:"copilot",displayName:"GitHub Copilot",scopes:["user","project"],eventTypes:z,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".copilot","hooks","failproofai.json");case"project":case"local":return(0,h.resolve)(c,".github","hooks","failproofai.json")}},readSettings(a){let b=L(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){M(a,b)},buildHookEntry(a,b,c){let d="project"===c?`npx -y failproofai --hook ${b} --cli copilot`:`"${a}" --hook ${b} --cli copilot`;return{type:"command",bash:d,powershell:d,timeoutSec:60,[G]:!0}},isFailproofaiHook:U,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),z)){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>U(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!U(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>U(a)))return!0}}catch{}return!1},detectInstalled:()=>R("copilot")},cursor:{id:"cursor",displayName:"Cursor Agent",scopes:["user","project"],eventTypes:A,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".cursor","hooks.json");case"project":case"local":return(0,h.resolve)(c,".cursor","hooks.json")}},readSettings(a){let b=L(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli cursor`:`"${a}" --hook ${b} --cli cursor`,timeout:60,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),A)){let e=this.buildHookEntry(b,d,c),f=a.hooks[d],g=f??[];f||(a.hooks[d]=g);let h=g.findIndex(a=>P(a));h>=0?g[h]=e:g.push(e)}},removeHooksFromFile(a){let b=this.readSettings(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))continue;let e=d.length,f=d.filter(a=>!P(a));c+=e-f.length,0===f.length?delete b.hooks[a]:b.hooks[a]=f}return 0===Object.keys(b.hooks).length&&delete b.hooks,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)&&b.some(a=>P(a)))return!0}catch{}return!1},detectInstalled:()=>R("cursor-agent")||R("agent")},opencode:{id:"opencode",displayName:"OpenCode",scopes:["user","project"],eventTypes:["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".config","opencode","opencode.json");case"project":case"local":return(0,h.resolve)(c,".opencode","opencode.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry(a,b,c){if("user"===c){let a=(0,h.resolve)((0,f.homedir)(),".config","opencode","plugins","failproofai.mjs");return{spec:`file://${a}`,[G]:!0}}return{spec:V,[G]:!0}},isFailproofaiHook:a=>"string"==typeof a?a.includes("failproofai.mjs"):!!Array.isArray(a)&&"string"==typeof a[0]&&a[0].includes("failproofai.mjs"),writeHookEntries(a,b,c){let d,g,i=c??"project",j=W("user"===i?(0,h.resolve)((0,f.homedir)(),".config","opencode","opencode.json"):(0,h.resolve)(process.cwd(),".opencode","opencode.json"));(0,e.mkdirSync)((0,h.dirname)(j),{recursive:!0}),(0,e.writeFileSync)(j,(g=(d="project"===i)?'""':JSON.stringify(b),`// AUTO-GENERATED by failproofai. ${G}
26
26
  // Re-generate via: failproofai policies --install --cli opencode
27
27
  // Plugin shim that bridges OpenCode's plugin API to the failproofai binary.
28
28
  // See: https://opencode.ai/docs/plugins/
@@ -86,7 +86,7 @@ function canonicalizeToolInput(canonicalToolName, args) {
86
86
  return out;
87
87
  }
88
88
 
89
- const FAILPROOFAI_BIN = ${h};
89
+ const FAILPROOFAI_BIN = ${g};
90
90
  const USE_NPX = ${d};
91
91
 
92
92
  function runFailproofai(eventName, payload, directory) {
@@ -227,22 +227,22 @@ export default async function failproofaiPlugin({ client, directory }) {
227
227
  },
228
228
  };
229
229
  }
230
- `),"utf8"),Array.isArray(a.plugin)||(a.plugin=[]);let k="user"===i?`file://${j}`:S,l=a.plugin.findIndex(a=>this.isFailproofaiHook(a));l>=0?a.plugin[l]=k:a.plugin.push(k)},removeHooksFromFile(a){let b=0,c=this.readSettings(a);if(Array.isArray(c.plugin)){let a=c.plugin.length;c.plugin=c.plugin.filter(a=>!this.isFailproofaiHook(a)),b+=a-c.plugin.length,0===c.plugin.length&&delete c.plugin}this.writeSettings(a,c);let d=T(a);if((0,e.existsSync)(d))try{(0,e.readFileSync)(d,"utf8").includes(D)&&((0,e.unlinkSync)(d),0===b&&(b=1))}catch{}return b},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!Array.isArray(a.plugin)||!a.plugin.some(a=>this.isFailproofaiHook(a)))return!1;let b=T(c);if(!(0,e.existsSync)(b))return!1;return(0,e.readFileSync)(b,"utf8").includes(D)}catch{return!1}},detectInstalled:()=>O("opencode")},pi:{id:"pi",displayName:"Pi",scopes:["user","project"],eventTypes:["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".pi","agent","settings.json");case"project":case"local":return(0,f.resolve)(c,".pi","settings.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({[D]:!0,_piPackagePath:U(),_piScope:c}),isFailproofaiHook:a=>"string"==typeof a?V(a):!!a&&"object"==typeof a&&(!0===a[D]||"string"==typeof a.source&&V(a.source)),writeHookEntries(a,b,c){var d;let e,g,h;Array.isArray(a.packages)||(a.packages=[]);let i=U(),j="project"===c?(d=i,e=process.cwd(),g=(0,f.resolve)(e),(h=(0,f.resolve)(d)).startsWith(g+"/")||h===g?"../"+h.slice(g.length+1):h):i,k=a.packages.findIndex(a=>V(a));k>=0?a.packages[k]=j:a.packages.push(j)},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=this.readSettings(a);if(!Array.isArray(b.packages))return 0;let c=b.packages.length;b.packages=b.packages.filter(a=>!V(a));let d=c-b.packages.length;return 0===b.packages.length&&delete b.packages,this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!Array.isArray(a.packages))return!1;return a.packages.some(a=>V(a))}catch{return!1}},detectInstalled:()=>O("pi")},hermes:{id:"hermes",displayName:"Hermes",scopes:["user"],eventTypes:v,getSettingsPath:()=>(0,f.resolve)((0,G.hermesRoot)(),"config.yaml"),getSettingsPaths:()=>(0,G.listHermesProfiles)().map(a=>(0,f.resolve)(a.home,"config.yaml")),readSettings:a=>K(a),writeSettings(a,b){L(a,b)},buildHookEntry:(a,b,c)=>({command:"project"===c?`npx -y failproofai --hook ${b} --cli hermes`:`"${a}" --hook ${b} --cli hermes`,timeout:30,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){let d=a.toJS()??{},e=d.hooks&&"object"==typeof d.hooks?d.hooks:{};for(let a of v){let d=this.buildHookEntry(b,a,c),f=Array.isArray(e[a])?e[a]:[],g=f.findIndex(a=>M(a));g>=0?f[g]=d:f.push(d),e[a]=f}a.set("hooks",e),a.set("hooks_auto_accept",!0)},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=K(a),c=(b.toJS()??{}).hooks,d=0;if(c&&"object"==typeof c){for(let a of Object.keys(c)){let b=c[a];if(!Array.isArray(b))continue;let e=b.length,f=b.filter(a=>!M(a));d+=e-f.length,0===f.length?delete c[a]:c[a]=f}d>0&&(0===Object.keys(c).length?b.delete("hooks"):b.set("hooks",c))}let f=b.delete("hooks_auto_accept");return(d>0||f)&&L(a,b),d},hooksInstalledInSettings(a,b){let c=P(this,a,b);return c.length>0&&c.every(a=>(function(a){if(!(0,e.existsSync)(a))return!1;try{let b=(K(a).toJS()??{}).hooks;if(!b||"object"!=typeof b)return!1;for(let a of Object.values(b))if(Array.isArray(a)&&a.some(a=>M(a)))return!0}catch{}return!1})(a))},detectInstalled:()=>O("hermes")},openclaw:{id:"openclaw",displayName:"OpenClaw",scopes:["user"],eventTypes:["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],getSettingsPath:()=>(0,f.resolve)((0,g.homedir)(),".openclaw","openclaw.json"),readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:()=>({[D]:!0,_openclawPluginPath:X()}),isFailproofaiHook:a=>"string"==typeof a?Y(a):!!a&&"object"==typeof a&&(!0===a[D]||"string"==typeof a.source&&Y(a.source)),writeHookEntries(a){let b=a.plugins??={},c=b.load??={};Array.isArray(c.paths)||(c.paths=[]);let d=X(),e=c.paths.findIndex(a=>Y(a));e>=0?c.paths[e]=d:c.paths.push(d);let f=b.entries??={},g=f[W]??={};g.enabled=!0,(g.hooks??={}).allowConversationAccess=!0},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=this.readSettings(a),c=b.plugins;if(!c)return 0;let d=0;if(Array.isArray(c.load?.paths)){let a=c.load.paths.length;c.load.paths=c.load.paths.filter(a=>!Y(a)),d+=a-c.load.paths.length,0===c.load.paths.length&&delete c.load.paths,c.load&&0===Object.keys(c.load).length&&delete c.load}return c.entries&&W in c.entries&&(delete c.entries[W],d+=1,0===Object.keys(c.entries).length&&delete c.entries),0===Object.keys(c).length&&delete b.plugins,this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c),b=a.plugins?.load?.paths,d=Array.isArray(b)&&b.some(a=>Y(a)),e=a.plugins?.entries?.[W]?.enabled===!0;return d&&e}catch{return!1}},detectInstalled:()=>O("openclaw")},factory:{id:"factory",displayName:"Factory Droid",scopes:["user","project"],eventTypes:y,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".factory","hooks.json");case"project":case"local":return(0,f.resolve)(c,".factory","hooks.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli factory`:`"${a}" --hook ${b} --cli factory`,timeout:30,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){for(let d of y){let e=this.buildHookEntry(b,d,c);Array.isArray(a[d])||(a[d]=[]);let f=a[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>M(a));if(b>=0){a.hooks[b]=e,g=!0;break}}if(!g){let a="PreToolUse"===d||"PostToolUse"===d;f.push(a?{matcher:"*",hooks:[e]}:{hooks:[e]})}}},removeHooksFromFile(a){let b=this.readSettings(a),c=0;for(let a of Object.keys(b)){let d=b[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b||!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!M(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b[a]}}return this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);for(let b of Object.values(a))if(Array.isArray(b)){for(let a of b)if(a&&a.hooks&&a.hooks.some(a=>M(a)))return!0}}catch{}return!1},detectInstalled:()=>O("droid")},devin:{id:"devin",displayName:"Devin CLI",scopes:["user","project"],eventTypes:z,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".config","devin","config.json");case"project":case"local":return(0,f.resolve)(c,".devin","config.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli devin`:`"${a}" --hook ${b} --cli devin`,timeout:60,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){for(let d of(a.hooks||(a.hooks={}),z)){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>M(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!M(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>M(a)))return!0}}catch{}return!1},detectInstalled:()=>O("devin")},antigravity:{id:"antigravity",displayName:"Antigravity CLI",scopes:["user","project"],eventTypes:A,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".gemini","config","hooks.json");case"project":case"local":return(0,f.resolve)(c,".agents","hooks.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli antigravity`:`"${a}" --hook ${b} --cli antigravity`,timeout:30,[D]:!0}),isFailproofaiHook:M,writeHookEntries(a,b,c){a[Z]&&"object"==typeof a[Z]||(a[Z]={});let d=a[Z];for(let a of A){let e=this.buildHookEntry(b,a,c);if($.has(a)){Array.isArray(d[a])||(d[a]=[]);let b=d[a],c=!1;for(let a of b){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>M(a));if(b>=0){a.hooks[b]=e,c=!0;break}}c||b.push({matcher:"*",hooks:[e]})}else{Array.isArray(d[a])||(d[a]=[]);let b=d[a],c=b.findIndex(a=>M(a));c>=0?b[c]=e:b.push(e)}}},removeHooksFromFile(a){let b=this.readSettings(a),c=b[Z];if(!c||"object"!=typeof c)return this.writeSettings(a,b),0;let d=0;for(let a of Object.keys(c)){let b=c[a];if(Array.isArray(b))if($.has(a)){for(let a=b.length-1;a>=0;a--){let c=b[a];if(!c||!c.hooks)continue;let e=c.hooks.length;c.hooks=c.hooks.filter(a=>!M(a)),d+=e-c.hooks.length,0===c.hooks.length&&b.splice(a,1)}0===b.length&&delete c[a]}else{let e=b.length,f=b.filter(a=>!M(a));d+=e-f.length,0===f.length?delete c[a]:c[a]=f}}return 0===Object.keys(c).length&&delete b[Z],this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c)[Z];if(!a||"object"!=typeof a)return!1;for(let b of Object.values(a))if(Array.isArray(b)){for(let a of b)if(M(a)||a&&Array.isArray(a.hooks)&&a.hooks.some(a=>M(a)))return!0}}catch{}return!1},detectInstalled:()=>O("agy")},goose:{id:"goose",displayName:"Goose",scopes:["user","project"],eventTypes:B,getSettingsPath(a,b){let c=b?(0,f.resolve)(b):process.cwd();switch(a){case"user":return(0,f.resolve)((0,g.homedir)(),".agents","plugins","failproofai","hooks","hooks.json");case"project":case"local":return(0,f.resolve)(c,".agents","plugins","failproofai","hooks","hooks.json")}},readSettings:a=>I(a),writeSettings(a,b){J(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli goose`:`"${a}" --hook ${b} --cli goose`}),isFailproofaiHook:_,writeHookEntries(a,b,c){for(let d of(a.hooks||(a.hooks={}),B)){let e=this.buildHookEntry(b,d,c);Array.isArray(a.hooks[d])||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>_(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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||!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!_(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a&&a.hooks&&a.hooks.some(a=>_(a)))return!0}}catch{}return!1},detectInstalled:()=>O("goose")}};function ab(a){let b=aa[a];if(!b)throw Error(`"${a}" is audit-only — live-hook install is not supported for it yet. Installable: ${s.filter(a=>void 0!==aa[a]).join(", ")}`);return b}function ac(){return s.filter(a=>aa[a]?.detectInstalled())}var ad=a.i(1457);let ae={rgb:[102,209,181],basic:"36"},af={rgb:[255,46,136],basic:"95"},ag={rgb:[228,88,124],basic:"95"},ah={rgb:[227,179,65],basic:"33"},ai={rgb:[107,118,132],basic:"2"};function aj(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}ae.rgb,ag.rgb;var ak=a.i(92956),al=a.i(69839);async function am(a,b={}){let c,d,{includeBeta:e=!1}=b;if(!process.stdin.isTTY){let b=ak.BUILTIN_POLICIES.filter(a=>e||!a.beta);return a?a.filter(a=>b.some(b=>b.name===a)):b.filter(a=>a.defaultEnabled).map(a=>a.name)}let f=a?new Set(a):null,g=ak.BUILTIN_POLICIES.filter(a=>e||!a.beta).map(a=>({name:a.name,description:a.description,category:a.category,selected:f?f.has(a.name):a.defaultEnabled,beta:!!a.beta})),h=g.length,i=!process.env.NO_COLOR,j=(c=i&&/truecolor|24bit/i.test(process.env.COLORTERM||""),{bold:a=>i?`\x1b[1m${a}\x1b[0m`:a,dim:(d=(a,b=!1)=>d=>{if(!i)return d;let e=c?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:a.basic;return`\x1b[${b?"1;":""}${e}m${d}\x1b[0m`})(ai),guide:d(ae),pink:d(af),pinkBold:d(af,!0),softPink:d(ag),warn:d(ah)}),{dim:k,bold:l}=j,m=j.guide,n=j.pinkBold,o=j.pink,p=j.softPink,q=Math.min(34,Math.max(10,...g.map(a=>a.name.length))),r=0,s="",t=0,u=!1;function v(){if(!s)return g;let a=s.toLowerCase();return g.filter(b=>b.name.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}function w(){let a=process.stdout.columns||100;u||(process.stdout.write("\x1b[?25l"),u=!0);let b=v(),c=b.length;c>0&&r>=c&&(r=c-1);let d=g.filter(a=>a.selected).length,e=k("│"),f=[];f.push(e),f.push(`${m("◆")} ${l("Choose the policies to enable")} ${k("·")} ${m(String(d))} ${k("selected")}`);let j=s?k(`${c}/${h} shown`):k(`${h} policies`);if(f.push(`${e} ${k("filter ›")} ${s}${i?"\x1b[7m \x1b[0m":"_"} ${j}`),f.push(e),0===c){f.push(`${e} ${k(`no policies match “${s}”`)}`);for(let a=0;a<11;a++)f.push(e)}else{let c=function(a){let b=[],c=new Map,d=new Map;for(let a of g)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 e=new Map;for(let b of a){let a=e.get(b.category)??[];a.push(b),e.set(b.category,a)}let f=[],h=0;for(let a of b){let b=e.get(a);if(b&&0!==b.length)for(let e of(f.push({kind:"header",category:a,enabledCount:c.get(a),totalCount:d.get(a)}),b))f.push({kind:"item",item:e,filteredIndex:h++})}return f}(b),d=0;for(let a=0;a<c.length;a++){let b=c[a];if("item"===b.kind&&b.filteredIndex===r){d=a;break}}let h=d-Math.floor(5);h=Math.min(h=Math.max(0,h),Math.max(0,c.length-10));let i=Math.min(c.length,h+10),j=c.slice(0,h).filter(a=>"item"===a.kind).length;f.push(j>0?`${e} ${k(`↑ ${j} more`)}`:e);for(let b=h;b<i;b++){let d=c[b];if("header"===d.kind)f.push(`${e} ${k(d.category.toUpperCase())} ${k(`${d.enabledCount}/${d.totalCount}`)}`);else{let b=d.item,c=d.filteredIndex===r,g=b.selected?o("◼"):k("◻"),h=b.name.padEnd(q),i=c?n(h):b.selected?h:k(h),j=b.beta?` ${p("beta")}`:"",l=Math.max(8,a-q-8-5*!!b.beta),m=k(aj(b.description,l));f.push(`${e} ${g} ${i}${j} ${m}`)}}for(let a=i-h;a<10;a++)f.push(e);let l=c.slice(i).filter(a=>"item"===a.kind).length;f.push(l>0?`${e} ${k(`↓ ${l} more`)}`:e)}f.push(e),f.push(`${e} ${k("↑/↓ move · space select · ctrl+a all · ↵ save · type to filter · esc clear")}`),t>0&&process.stdout.write(`\x1b[${t}A\x1b[J`),process.stdout.write(f.map(b=>aj(b,a)).join("\n")+"\n"),t=f.length}return new Promise(a=>{function b(b,d){if(!d)return;d.ctrl&&"c"===d.name&&(c(),process.exit(0));let e=v();if("up"===d.name)e.length>0&&(r=r>0?r-1:e.length-1),w();else if("down"===d.name)e.length>0&&(r=r<e.length-1?r+1:0),w();else if("space"===d.name){let a=e[r];a&&(a.selected=!a.selected),w()}else if("return"===d.name||d.ctrl&&"s"===d.name){c();let b=g.filter(a=>a.selected).map(a=>a.name);t>0&&process.stdout.write(`\x1b[${t}A\x1b[J`),process.stdout.write(`${k("│")}
230
+ `),"utf8"),Array.isArray(a.plugin)||(a.plugin=[]);let k="user"===i?`file://${j}`:V,l=a.plugin.findIndex(a=>this.isFailproofaiHook(a));l>=0?a.plugin[l]=k:a.plugin.push(k)},removeHooksFromFile(a){let b=0,c=this.readSettings(a);if(Array.isArray(c.plugin)){let a=c.plugin.length;c.plugin=c.plugin.filter(a=>!this.isFailproofaiHook(a)),b+=a-c.plugin.length,0===c.plugin.length&&delete c.plugin}this.writeSettings(a,c);let d=W(a);if((0,e.existsSync)(d))try{(0,e.readFileSync)(d,"utf8").includes(G)&&((0,e.unlinkSync)(d),0===b&&(b=1))}catch{}return b},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!Array.isArray(a.plugin)||!a.plugin.some(a=>this.isFailproofaiHook(a)))return!1;let b=W(c);if(!(0,e.existsSync)(b))return!1;return(0,e.readFileSync)(b,"utf8").includes(G)}catch{return!1}},detectInstalled:()=>R("opencode")},pi:{id:"pi",displayName:"Pi",scopes:["user","project"],eventTypes:["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".pi","agent","settings.json");case"project":case"local":return(0,h.resolve)(c,".pi","settings.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({[G]:!0,_piPackagePath:X(),_piScope:c}),isFailproofaiHook:a=>"string"==typeof a?Y(a):!!a&&"object"==typeof a&&(!0===a[G]||"string"==typeof a.source&&Y(a.source)),writeHookEntries(a,b,c){var d;let e,f,g;Array.isArray(a.packages)||(a.packages=[]);let i=X(),j="project"===c?(d=i,e=process.cwd(),f=(0,h.resolve)(e),(g=(0,h.resolve)(d)).startsWith(f+"/")||g===f?"../"+g.slice(f.length+1):g):i,k=a.packages.findIndex(a=>Y(a));k>=0?a.packages[k]=j:a.packages.push(j)},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=this.readSettings(a);if(!Array.isArray(b.packages))return 0;let c=b.packages.length;b.packages=b.packages.filter(a=>!Y(a));let d=c-b.packages.length;return 0===b.packages.length&&delete b.packages,this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!Array.isArray(a.packages))return!1;return a.packages.some(a=>Y(a))}catch{return!1}},detectInstalled:()=>R("pi")},hermes:{id:"hermes",displayName:"Hermes",scopes:["user"],eventTypes:y,getSettingsPath:()=>(0,h.resolve)((0,J.hermesRoot)(),"config.yaml"),getSettingsPaths:()=>(0,J.listHermesProfiles)().map(a=>(0,h.resolve)(a.home,"config.yaml")),readSettings:a=>N(a),writeSettings(a,b){O(a,b)},buildHookEntry:(a,b,c)=>({command:"project"===c?`npx -y failproofai --hook ${b} --cli hermes`:`"${a}" --hook ${b} --cli hermes`,timeout:30,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){let d=a.toJS()??{},e=d.hooks&&"object"==typeof d.hooks?d.hooks:{};for(let a of y){let d=this.buildHookEntry(b,a,c),f=Array.isArray(e[a])?e[a]:[],g=f.findIndex(a=>P(a));g>=0?f[g]=d:f.push(d),e[a]=f}a.set("hooks",e),a.set("hooks_auto_accept",!0)},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=N(a),c=(b.toJS()??{}).hooks,d=0;if(c&&"object"==typeof c){for(let a of Object.keys(c)){let b=c[a];if(!Array.isArray(b))continue;let e=b.length,f=b.filter(a=>!P(a));d+=e-f.length,0===f.length?delete c[a]:c[a]=f}d>0&&(0===Object.keys(c).length?b.delete("hooks"):b.set("hooks",c))}let f=b.delete("hooks_auto_accept");return(d>0||f)&&O(a,b),d},hooksInstalledInSettings(a,b){let c=S(this,a,b);return c.length>0&&c.every(a=>(function(a){if(!(0,e.existsSync)(a))return!1;try{let b=(N(a).toJS()??{}).hooks;if(!b||"object"!=typeof b)return!1;for(let a of Object.values(b))if(Array.isArray(a)&&a.some(a=>P(a)))return!0}catch{}return!1})(a))},detectInstalled:()=>R("hermes")},openclaw:{id:"openclaw",displayName:"OpenClaw",scopes:["user"],eventTypes:["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],getSettingsPath:()=>(0,h.resolve)((0,f.homedir)(),".openclaw","openclaw.json"),readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:()=>({[G]:!0,_openclawPluginPath:$()}),isFailproofaiHook:a=>"string"==typeof a?_(a):!!a&&"object"==typeof a&&(!0===a[G]||"string"==typeof a.source&&_(a.source)),writeHookEntries(a){let b=a.plugins??={},c=b.load??={};Array.isArray(c.paths)||(c.paths=[]);let d=$(),e=c.paths.findIndex(a=>_(a));e>=0?c.paths[e]=d:c.paths.push(d);let f=b.entries??={},g=f[Z]??={};g.enabled=!0,(g.hooks??={}).allowConversationAccess=!0},removeHooksFromFile(a){if(!(0,e.existsSync)(a))return 0;let b=this.readSettings(a),c=b.plugins;if(!c)return 0;let d=0;if(Array.isArray(c.load?.paths)){let a=c.load.paths.length;c.load.paths=c.load.paths.filter(a=>!_(a)),d+=a-c.load.paths.length,0===c.load.paths.length&&delete c.load.paths,c.load&&0===Object.keys(c.load).length&&delete c.load}return c.entries&&Z in c.entries&&(delete c.entries[Z],d+=1,0===Object.keys(c.entries).length&&delete c.entries),0===Object.keys(c).length&&delete b.plugins,this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c),b=a.plugins?.load?.paths,d=Array.isArray(b)&&b.some(a=>_(a)),e=a.plugins?.entries?.[Z]?.enabled===!0;return d&&e}catch{return!1}},detectInstalled:()=>R("openclaw")},factory:{id:"factory",displayName:"Factory Droid",scopes:["user","project"],eventTypes:B,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".factory","hooks.json");case"project":case"local":return(0,h.resolve)(c,".factory","hooks.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli factory`:`"${a}" --hook ${b} --cli factory`,timeout:30,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){for(let d of B){let e=this.buildHookEntry(b,d,c);Array.isArray(a[d])||(a[d]=[]);let f=a[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>P(a));if(b>=0){a.hooks[b]=e,g=!0;break}}if(!g){let a="PreToolUse"===d||"PostToolUse"===d;f.push(a?{matcher:"*",hooks:[e]}:{hooks:[e]})}}},removeHooksFromFile(a){let b=this.readSettings(a),c=0;for(let a of Object.keys(b)){let d=b[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b||!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!P(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b[a]}}return this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);for(let b of Object.values(a))if(Array.isArray(b)){for(let a of b)if(a&&a.hooks&&a.hooks.some(a=>P(a)))return!0}}catch{}return!1},detectInstalled:()=>R("droid")},devin:{id:"devin",displayName:"Devin CLI",scopes:["user","project"],eventTypes:C,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".config","devin","config.json");case"project":case"local":return(0,h.resolve)(c,".devin","config.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli devin`:`"${a}" --hook ${b} --cli devin`,timeout:60,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){for(let d of(a.hooks||(a.hooks={}),C)){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>P(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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=>!P(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>P(a)))return!0}}catch{}return!1},detectInstalled:()=>R("devin")},antigravity:{id:"antigravity",displayName:"Antigravity CLI",scopes:["user","project"],eventTypes:D,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".gemini","config","hooks.json");case"project":case"local":return(0,h.resolve)(c,".agents","hooks.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli antigravity`:`"${a}" --hook ${b} --cli antigravity`,timeout:30,[G]:!0}),isFailproofaiHook:P,writeHookEntries(a,b,c){a[aa]&&"object"==typeof a[aa]||(a[aa]={});let d=a[aa];for(let a of D){let e=this.buildHookEntry(b,a,c);if(ab.has(a)){Array.isArray(d[a])||(d[a]=[]);let b=d[a],c=!1;for(let a of b){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>P(a));if(b>=0){a.hooks[b]=e,c=!0;break}}c||b.push({matcher:"*",hooks:[e]})}else{Array.isArray(d[a])||(d[a]=[]);let b=d[a],c=b.findIndex(a=>P(a));c>=0?b[c]=e:b.push(e)}}},removeHooksFromFile(a){let b=this.readSettings(a),c=b[aa];if(!c||"object"!=typeof c)return this.writeSettings(a,b),0;let d=0;for(let a of Object.keys(c)){let b=c[a];if(Array.isArray(b))if(ab.has(a)){for(let a=b.length-1;a>=0;a--){let c=b[a];if(!c||!c.hooks)continue;let e=c.hooks.length;c.hooks=c.hooks.filter(a=>!P(a)),d+=e-c.hooks.length,0===c.hooks.length&&b.splice(a,1)}0===b.length&&delete c[a]}else{let e=b.length,f=b.filter(a=>!P(a));d+=e-f.length,0===f.length?delete c[a]:c[a]=f}}return 0===Object.keys(c).length&&delete b[aa],this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c)[aa];if(!a||"object"!=typeof a)return!1;for(let b of Object.values(a))if(Array.isArray(b)){for(let a of b)if(P(a)||a&&Array.isArray(a.hooks)&&a.hooks.some(a=>P(a)))return!0}}catch{}return!1},detectInstalled:()=>R("agy")},goose:{id:"goose",displayName:"Goose",scopes:["user","project"],eventTypes:E,getSettingsPath(a,b){let c=b?(0,h.resolve)(b):process.cwd();switch(a){case"user":return(0,h.resolve)((0,f.homedir)(),".agents","plugins","failproofai","hooks","hooks.json");case"project":case"local":return(0,h.resolve)(c,".agents","plugins","failproofai","hooks","hooks.json")}},readSettings:a=>L(a),writeSettings(a,b){M(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli goose`:`"${a}" --hook ${b} --cli goose`}),isFailproofaiHook:ac,writeHookEntries(a,b,c){for(let d of(a.hooks||(a.hooks={}),E)){let e=this.buildHookEntry(b,d,c);Array.isArray(a.hooks[d])||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>ac(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(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||!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!ac(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,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,e.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a&&a.hooks&&a.hooks.some(a=>ac(a)))return!0}}catch{}return!1},detectInstalled:()=>R("goose")}};function ae(a){let b=ad[a];if(!b)throw Error(`"${a}" is audit-only — live-hook install is not supported for it yet. Installable: ${v.filter(a=>void 0!==ad[a]).join(", ")}`);return b}function af(){return v.filter(a=>ad[a]?.detectInstalled())}var ag=a.i(1457);let ah={rgb:[102,209,181],basic:"36"},ai={rgb:[255,46,136],basic:"95"},aj={rgb:[228,88,124],basic:"95"},ak={rgb:[227,179,65],basic:"33"},al={rgb:[107,118,132],basic:"2"};function am(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}ah.rgb,aj.rgb;var an=a.i(92956),ao=a.i(69839);async function ap(a,b={}){let c,d,{includeBeta:e=!1}=b;if(!process.stdin.isTTY){let b=an.BUILTIN_POLICIES.filter(a=>e||!a.beta);return a?a.filter(a=>b.some(b=>b.name===a)):b.filter(a=>a.defaultEnabled).map(a=>a.name)}let f=a?new Set(a):null,g=an.BUILTIN_POLICIES.filter(a=>e||!a.beta).map(a=>({name:a.name,description:a.description,category:a.category,selected:f?f.has(a.name):a.defaultEnabled,beta:!!a.beta})),h=g.length,i=!process.env.NO_COLOR,j=(c=i&&/truecolor|24bit/i.test(process.env.COLORTERM||""),{bold:a=>i?`\x1b[1m${a}\x1b[0m`:a,dim:(d=(a,b=!1)=>d=>{if(!i)return d;let e=c?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:a.basic;return`\x1b[${b?"1;":""}${e}m${d}\x1b[0m`})(al),guide:d(ah),pink:d(ai),pinkBold:d(ai,!0),softPink:d(aj),warn:d(ak)}),{dim:k,bold:l}=j,m=j.guide,n=j.pinkBold,o=j.pink,p=j.softPink,q=Math.min(34,Math.max(10,...g.map(a=>a.name.length))),r=0,s="",t=0,u=!1;function v(){if(!s)return g;let a=s.toLowerCase();return g.filter(b=>b.name.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}function w(){let a=process.stdout.columns||100;u||(process.stdout.write("\x1b[?25l"),u=!0);let b=v(),c=b.length;c>0&&r>=c&&(r=c-1);let d=g.filter(a=>a.selected).length,e=k("│"),f=[];f.push(e),f.push(`${m("◆")} ${l("Choose the policies to enable")} ${k("·")} ${m(String(d))} ${k("selected")}`);let j=s?k(`${c}/${h} shown`):k(`${h} policies`);if(f.push(`${e} ${k("filter ›")} ${s}${i?"\x1b[7m \x1b[0m":"_"} ${j}`),f.push(e),0===c){f.push(`${e} ${k(`no policies match “${s}”`)}`);for(let a=0;a<11;a++)f.push(e)}else{let c=function(a){let b=[],c=new Map,d=new Map;for(let a of g)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 e=new Map;for(let b of a){let a=e.get(b.category)??[];a.push(b),e.set(b.category,a)}let f=[],h=0;for(let a of b){let b=e.get(a);if(b&&0!==b.length)for(let e of(f.push({kind:"header",category:a,enabledCount:c.get(a),totalCount:d.get(a)}),b))f.push({kind:"item",item:e,filteredIndex:h++})}return f}(b),d=0;for(let a=0;a<c.length;a++){let b=c[a];if("item"===b.kind&&b.filteredIndex===r){d=a;break}}let h=d-Math.floor(5);h=Math.min(h=Math.max(0,h),Math.max(0,c.length-10));let i=Math.min(c.length,h+10),j=c.slice(0,h).filter(a=>"item"===a.kind).length;f.push(j>0?`${e} ${k(`↑ ${j} more`)}`:e);for(let b=h;b<i;b++){let d=c[b];if("header"===d.kind)f.push(`${e} ${k(d.category.toUpperCase())} ${k(`${d.enabledCount}/${d.totalCount}`)}`);else{let b=d.item,c=d.filteredIndex===r,g=b.selected?o("◼"):k("◻"),h=b.name.padEnd(q),i=c?n(h):b.selected?h:k(h),j=b.beta?` ${p("beta")}`:"",l=Math.max(8,a-q-8-5*!!b.beta),m=k(am(b.description,l));f.push(`${e} ${g} ${i}${j} ${m}`)}}for(let a=i-h;a<10;a++)f.push(e);let l=c.slice(i).filter(a=>"item"===a.kind).length;f.push(l>0?`${e} ${k(`↓ ${l} more`)}`:e)}f.push(e),f.push(`${e} ${k("↑/↓ move · space select · ctrl+a all · ↵ save · type to filter · esc clear")}`),t>0&&process.stdout.write(`\x1b[${t}A\x1b[J`),process.stdout.write(f.map(b=>am(b,a)).join("\n")+"\n"),t=f.length}return new Promise(a=>{function b(b,d){if(!d)return;d.ctrl&&"c"===d.name&&(c(),process.exit(0));let e=v();if("up"===d.name)e.length>0&&(r=r>0?r-1:e.length-1),w();else if("down"===d.name)e.length>0&&(r=r<e.length-1?r+1:0),w();else if("space"===d.name){let a=e[r];a&&(a.selected=!a.selected),w()}else if("return"===d.name||d.ctrl&&"s"===d.name){c();let b=g.filter(a=>a.selected).map(a=>a.name);t>0&&process.stdout.write(`\x1b[${t}A\x1b[J`),process.stdout.write(`${k("│")}
231
231
  ${k("◇")} Policies
232
232
  ${k("│")} ${k(`${b.length} selected`)}
233
- `),a(b)}else if("escape"===d.name)s="",r=0,w();else if(d.ctrl&&"a"===d.name){let a=e.length>0&&e.every(a=>a.selected);for(let b of e)b.selected=!a;w()}else"backspace"===d.name||"delete"===d.name?s.length>0&&(s=s.slice(0,-1),r=0,w()):!b||1!==b.length||d.ctrl||d.meta||(s+=b,r=0,w())}function c(){u&&(process.stdout.write("\x1b[?25h"),u=!1),process.stdin.removeListener("keypress",b),process.stdin.setRawMode(!1),process.stdin.pause()}w(),process.stdin.setRawMode(!0),process.stdin.resume(),ad.emitKeypressEvents(process.stdin),process.stdin.on("keypress",b)})}let an="__failproofai_custom_hooks__";var ao=a.i(24868),ap=a.i(14747),aq=a.i(92509);let ar=".__failproofai_tmp__.mjs",as=/(?:import\s+(?:[\s\S]*?\s+from\s+)?|export\s+(?:[\s\S]*?\s+from\s+))(['"])(\.\.?\/[^'"]+)\1/g,at=/require\s*\(\s*(['"])(\.\.?\/[^'"]+)\1\s*\)/g;async function au(a){try{return await (0,ao.access)(a),!0}catch{return!1}}async function av(){let a=process.env.FAILPROOFAI_DIST_PATH;if(a){let b=(0,ap.resolve)(a,"index.js");if(await au(b))return b}for(let a of[(0,ap.resolve)((0,ap.dirname)(process.execPath),"..","assets","dist","index.js"),(0,ap.resolve)(process.cwd(),"dist","index.js"),(0,ap.resolve)(process.cwd(),"node_modules","failproofai","dist","index.js")])if(await au(a))return a;return null}async function aw(a,b){let c=(0,ap.resolve)(a,b);for(let a of[c,`${c}.js`,`${c}.mjs`,`${c}.ts`,(0,ap.resolve)(c,"index.js")])if(await au(a))return a;return null}async function ax(a,b){let c=a+".__failproofai_esm_shim__.mjs",d=`import _cjs from '${b}';
233
+ `),a(b)}else if("escape"===d.name)s="",r=0,w();else if(d.ctrl&&"a"===d.name){let a=e.length>0&&e.every(a=>a.selected);for(let b of e)b.selected=!a;w()}else"backspace"===d.name||"delete"===d.name?s.length>0&&(s=s.slice(0,-1),r=0,w()):!b||1!==b.length||d.ctrl||d.meta||(s+=b,r=0,w())}function c(){u&&(process.stdout.write("\x1b[?25h"),u=!1),process.stdin.removeListener("keypress",b),process.stdin.setRawMode(!1),process.stdin.pause()}w(),process.stdin.setRawMode(!0),process.stdin.resume(),ag.emitKeypressEvents(process.stdin),process.stdin.on("keypress",b)})}var aq=a.i(12714);let ar="__failproofai_custom_hooks__";function as(){let a=globalThis;return Array.isArray(a[ar])||(a[ar]=[]),a[ar]}let at={add(a){as().push(a)}};var au=a.i(24868),av=a.i(14747),aw=a.i(92509);let ax=".__failproofai_tmp__.mjs",ay=/(?:import\s+(?:[\s\S]*?\s+from\s+)?|export\s+(?:[\s\S]*?\s+from\s+))(['"])(\.\.?\/[^'"]+)\1/g,az=/require\s*\(\s*(['"])(\.\.?\/[^'"]+)\1\s*\)/g;async function aA(a){try{return await (0,au.access)(a),!0}catch{return!1}}async function aB(){let a=process.env.FAILPROOFAI_DIST_PATH;if(a){let b=(0,av.resolve)(a,"index.js");if(await aA(b))return b}for(let a of[(0,av.resolve)((0,av.dirname)(process.execPath),"..","assets","dist","index.js"),(0,av.resolve)(process.cwd(),"dist","index.js"),(0,av.resolve)(process.cwd(),"node_modules","failproofai","dist","index.js")])if(await aA(a))return a;return null}async function aC(a,b){let c=(0,av.resolve)(a,b);for(let a of[c,`${c}.js`,`${c}.mjs`,`${c}.ts`,(0,av.resolve)(c,"index.js")])if(await aA(a))return a;return null}async function aD(a,b,c=ax){let d=`${a}${c}.shim.mjs`,e=`import _cjs from '${b}';
234
234
  export const customPolicies = _cjs.customPolicies;
235
235
  export const getCustomHooks = _cjs.getCustomHooks;
236
236
  export const clearCustomHooks = _cjs.clearCustomHooks;
237
237
  export const allow = _cjs.allow;
238
238
  export const deny = _cjs.deny;
239
239
  export const instruct = _cjs.instruct;
240
- export default _cjs;`;return await (0,ao.writeFile)(c,d,"utf-8"),{shimPath:c,shimUrl:(0,aq.pathToFileURL)(c).href}}async function ay(a,b,c){let d=[a],e=new Set,f=[],g=null;if(c&&b){let a=await ax(c,b);f.push(a.shimPath),g=a.shimUrl}for(;d.length>0;){let a=d.shift();if(e.has(a))continue;e.add(a);let b=await (0,ao.readFile)(a,"utf-8");g&&(b=b.replace(/from\s+(['"])(?:claudeye|failproofai)\1/g,`from '${g}'`)),c&&(b=b.replace(/require\s*\(\s*(['"])(?:claudeye|failproofai)\1\s*\)/g,`require('${c.replace(/\\/g,"\\\\")}')`));let h=(0,ap.dirname)(a),i=new Map;for(let a of[as,at]){let c,f=new RegExp(a.source,a.flags);for(;null!==(c=f.exec(b));){let a=c[2];if(i.has(a))continue;let b=await aw(h,a);if(!b)continue;e.has(b)||d.includes(b)||d.push(b);let f=(0,ap.relative)(h,b+ar).split("\\").join("/");f.startsWith(".")||(f="./"+f),i.set(a,f)}}for(let a of[...i.keys()].sort((a,b)=>b.length-a.length)){let c=i.get(a),d=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");b=(b=b.replace(RegExp(`'${d}'`,"g"),`'${c}'`)).replace(RegExp(`"${d}"`,"g"),`"${c}"`)}let j=a+ar;await (0,ao.writeFile)(j,b,"utf-8"),f.push(j)}return f}async function az(a){for(let b of a)try{await (0,ao.unlink)(b)}catch{}}var aA=a.i(12072),aB=a.i(79779);let aC=aB.POSTHOG_API_KEY,aD=new Set;async function aE(a,b,c){let d=JSON.stringify({api_key:process.env.FAILPROOFAI_POSTHOG_KEY??aC,event:b,distinct_id:a,properties:{...c,$lib:"failproofai-hooks",failproofai_version:aA.version,product:aB.POSTHOG_PRODUCT}});try{await fetch(process.env.FAILPROOFAI_POSTHOG_HOST?`${process.env.FAILPROOFAI_POSTHOG_HOST}/capture/`:"https://us.i.posthog.com/capture/",{method:"POST",headers:{"Content-Type":"application/json"},body:d,signal:AbortSignal.timeout(5e3)})}catch{}}async function aF(a,b,c){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return;let d=aE(a,b,c);aD.add(d),d.finally(()=>aD.delete(d)),await d}let aG="__FAILPROOFAI_LOADING_HOOKS__",aH=/policies\.(js|mjs|ts)$/,aI=0;async function aJ(a,b){let c=globalThis;c[aG]=!0;let d=[];try{let b=await av(),c=b?(0,E.pathToFileURL)(b).href:null;d=await ay(a,c,b);let e=`${(0,E.pathToFileURL)(a+ar).href}?v=${++aI}`;await import(e)}catch(e){let c=e instanceof Error?e.message:String(e),d=/Cannot find module|MODULE_NOT_FOUND|ENOENT/i.test(c)?"module_not_found":/SyntaxError|Unexpected token/i.test(c)?"syntax_error":"runtime_error";if(aF((0,al.getInstanceId)(),"custom_hooks_load_error",{error_type:d,is_convention:!!b?.conventionScope,convention_scope:b?.conventionScope??null,file_basename:(0,f.basename)(a)}),b?.strict)throw Error(`Failed to load custom hooks from ${a}: ${c}`);(0,h.hookLogError)(`failed to load custom hooks from ${a}: ${c}`)}finally{c[aG]=!1,await az(d)}}async function aK(a,b){let c;if(!a)return[];let d=(0,f.isAbsolute)(a)?a:(0,f.resolve)(b?.sessionCwd??process.cwd(),a);if(!(0,e.existsSync)(d)){if(b?.strict)throw Error(`Custom hooks file not found: ${d}`);return(0,h.hookLogWarn)(`customPoliciesPath not found: ${d}`),[]}return globalThis[an]=[],await aJ(d,b),Array.isArray((c=globalThis)[an])||(c[an]=[]),c[an]}class aL extends Error{exitCode;constructor(a,b=1){super(a),this.name="CliError",this.exitCode=b}}let aM=new Set(ak.BUILTIN_POLICIES.map(a=>a.name));function aN(a,b){return Q.getSettingsPath(a,b)}function aO(a){let b=a.filter(a=>!aM.has(a));if(b.length>0){let a=[...aM].join(", ");throw new aL(`Unknown policy name(s): ${b.join(", ")}
241
- Valid policies: ${a}`)}}function aP(a,b){return Q.hooksInstalledInSettings(a,b)}async function aQ(a,b="user",c,d=!1,e,f,g=!1,h,i={}){let{replace:j=!1,quiet:k=!1}=i;if(!k)return aR(a,b,c,d,e,f,g,h,j);let l=console.log;console.log=()=>{};try{return await aR(a,b,c,d,e,f,g,h,j)}finally{console.log=l}}async function aR(a,b="user",c,d=!1,h,i,j=!1,k,l=!1){let m,n;if(void 0!==a&&a.length>0){let b=a.filter(a=>"all"!==a);if(b.length>0&&aO(b),a.includes("all")&&b.length>0)throw new aL(`"all" cannot be combined with specific policy names.
242
- Use either: --install all or --install block-sudo sanitize-jwt ...`)}let s=k&&k.length>0?[...new Set(k)]:["claude"];for(let a of s){let c=ab(a);if(!c.scopes.includes(b)){try{await aF((0,al.getInstanceId)(),"scope_validation_failed",{cli:a,scope:b,supported_scopes:c.scopes})}catch{}throw new aL(`Scope "${b}" is not supported by ${c.displayName}. Valid scopes: ${c.scopes.join(", ")}`)}}let t=function(){let a=process.env.FAILPROOFAI_BINARY_OVERRIDE;if(a&&a.trim())return a.trim();try{return(0,q.execSync)("which failproofai",{encoding:"utf8"}).trim().split("\n")[0].trim()}catch{throw new aL("failproofai binary not found in PATH.\nInstall it globally first: npm install -g failproofai")}}(),u=o(b,c),v=new Set(u.enabledPolicies);if(void 0!==a){let b;b=1===a.length&&"all"===a[0]?ak.BUILTIN_POLICIES.filter(a=>d||!a.beta).map(a=>a.name):a,m=l?[...new Set(b)]:[...new Set([...u.enabledPolicies,...b])]}else{let a=u.enabledPolicies.length>0?u.enabledPolicies:void 0;m=await am(a,{includeBeta:d})}let w={...u,enabledPolicies:m};if(j)delete w.customPoliciesPath,delete w.customPoliciesPaths;else if(i&&("string"==typeof i||i.length>0)){let a=("string"==typeof i?[i]:i).map(a=>(0,f.resolve)(a)),c=(u.customPoliciesPaths??(u.customPoliciesPath?[u.customPoliciesPath]:[])).map(a=>(0,f.resolve)(a)).filter(a=>!!(0,e.existsSync)(a)||(console.log(`Dropping custom policies path (file no longer exists): ${a}`),!1));for(let d of(w.customPoliciesPaths=l?[...new Set(a)]:[...new Set([...c,...a])],delete w.customPoliciesPath,a)){let a=[];try{a=await aK(d,{strict:!0})}catch(c){let a=c instanceof Error?c.message:String(c);try{await aF((0,al.getInstanceId)(),"custom_policy_validation_failed",{scope:b,error_type:/not found/i.test(a)?"file_not_found":"load_error"})}catch{}console.error(`Error: ${a}`),process.exit(1)}if(0===a.length){try{await aF((0,al.getInstanceId)(),"custom_policy_validation_failed",{scope:b,error_type:"no_hooks_registered"})}catch{}console.error(`Error: no hooks registered in ${d}. Make sure your file calls customPolicies.add(...) at least once.`),process.exit(1)}console.log(`
243
- Validated ${a.length} custom hook(s) from ${d}: ${a.map(a=>a.name).join(", ")}`)}}if(p(w,b,c),console.log(`
240
+ export default _cjs;`;return await (0,au.writeFile)(d,e,"utf-8"),{shimPath:d,shimUrl:(0,aw.pathToFileURL)(d).href}}async function aE(a,b,c,d=ax){let e=[a],f=new Set,g=[],h=null;if(c&&b){let a=await aD(c,b,d);g.push(a.shimPath),h=a.shimUrl}for(;e.length>0;){let a=e.shift();if(f.has(a))continue;f.add(a);let b=await (0,au.readFile)(a,"utf-8");h&&(b=b.replace(/from\s+(['"])(?:claudeye|failproofai)\1/g,`from '${h}'`)),c&&(b=b.replace(/require\s*\(\s*(['"])(?:claudeye|failproofai)\1\s*\)/g,`require('${c.replace(/\\/g,"\\\\")}')`));let i=(0,av.dirname)(a),j=new Map;for(let a of[ay,az]){let c,g=new RegExp(a.source,a.flags);for(;null!==(c=g.exec(b));){let a=c[2];if(j.has(a))continue;let b=await aC(i,a);if(!b)continue;f.has(b)||e.includes(b)||e.push(b);let g=(0,av.relative)(i,b+d).split("\\").join("/");g.startsWith(".")||(g="./"+g),j.set(a,g)}}for(let a of[...j.keys()].sort((a,b)=>b.length-a.length)){let c=j.get(a),d=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");b=(b=b.replace(RegExp(`'${d}'`,"g"),`'${c}'`)).replace(RegExp(`"${d}"`,"g"),`"${c}"`)}let k=a+d;await (0,au.writeFile)(k,b,"utf-8"),g.push(k)}return g}async function aF(a){for(let b of a)try{await (0,au.unlink)(b)}catch{}}var aG=a.i(12072),aH=a.i(79779);let aI=aH.POSTHOG_API_KEY,aJ=new Set;async function aK(a,b,c){let d=JSON.stringify({api_key:process.env.FAILPROOFAI_POSTHOG_KEY??aI,event:b,distinct_id:a,properties:{...c,$lib:"failproofai-hooks",failproofai_version:aG.version,product:aH.POSTHOG_PRODUCT}});try{await fetch(process.env.FAILPROOFAI_POSTHOG_HOST?`${process.env.FAILPROOFAI_POSTHOG_HOST}/capture/`:"https://us.i.posthog.com/capture/",{method:"POST",headers:{"Content-Type":"application/json"},body:d,signal:AbortSignal.timeout(5e3)})}catch{}}async function aL(a,b,c){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return;let d=aK(a,b,c);aJ.add(d),d.finally(()=>aJ.delete(d)),await d}let aM="__FAILPROOFAI_LOADING_HOOKS__",aN=/policies\.(js|mjs|ts)$/,aO=0,aP=new Map;async function aQ(a,b){let c=globalThis;c[aM]=!0;let d=[];try{let b=await aB(),c=b?(0,H.pathToFileURL)(b).href:null,e=++aO,f=`${ax}.${process.pid}.${e}.mjs`;d=await aE(a,c,b,f);let g=await aR(d,f),h=aP.get(a);if(h?.fingerprint===g){for(let a of h.hooks)at.add({...a});return}let i=a+f,j=(0,H.pathToFileURL)(i).href,k=as().length;await import(j),aP.set(a,{fingerprint:g,hooks:as().slice(k).map(a=>({...a}))})}catch(e){let c=e instanceof Error?e.message:String(e),d=/Cannot find module|MODULE_NOT_FOUND|ENOENT/i.test(c)?"module_not_found":/SyntaxError|Unexpected token/i.test(c)?"syntax_error":"runtime_error";if(aL((0,ao.getInstanceId)(),"custom_hooks_load_error",{error_type:d,is_convention:!!b?.conventionScope,convention_scope:b?.conventionScope??null,file_basename:(0,h.basename)(a)}),b?.strict)throw Error(`Failed to load custom hooks from ${a}: ${c}`);(0,k.hookLogError)(`failed to load custom hooks from ${a}: ${c}`)}finally{c[aM]=!1,await aF(d)}}async function aR(a,b){let c=(0,g.createHash)("sha256");for(let d of[...a].sort()){c.update(d.replaceAll(b,ax));let a=await (0,aq.readFile)(d,"utf8");c.update(a.replaceAll(b,ax))}return c.digest("hex")}async function aS(a,b){if(!a)return[];let c=(0,h.isAbsolute)(a)?a:(0,h.resolve)(b?.sessionCwd??process.cwd(),a);if(!(0,e.existsSync)(c)){if(b?.strict)throw Error(`Custom hooks file not found: ${c}`);return(0,k.hookLogWarn)(`customPoliciesPath not found: ${c}`),[]}return globalThis[ar]=[],await aQ(c,b),as()}class aT extends Error{exitCode;constructor(a,b=1){super(a),this.name="CliError",this.exitCode=b}}let aU=new Set(an.BUILTIN_POLICIES.map(a=>a.name));function aV(a,b){return T.getSettingsPath(a,b)}function aW(a){let b=a.filter(a=>!aU.has(a));if(b.length>0){let a=[...aU].join(", ");throw new aT(`Unknown policy name(s): ${b.join(", ")}
241
+ Valid policies: ${a}`)}}function aX(a,b){return T.hooksInstalledInSettings(a,b)}async function aY(a,b="user",c,d=!1,e,f,g=!1,h,i={}){let{replace:j=!1,quiet:k=!1}=i;if(!k)return aZ(a,b,c,d,e,f,g,h,j);let l=console.log;console.log=()=>{};try{return await aZ(a,b,c,d,e,f,g,h,j)}finally{console.log=l}}async function aZ(a,b="user",c,d=!1,g,i,j=!1,k,l=!1){let m,n;if(void 0!==a&&a.length>0){let b=a.filter(a=>"all"!==a);if(b.length>0&&aW(b),a.includes("all")&&b.length>0)throw new aT(`"all" cannot be combined with specific policy names.
242
+ Use either: --install all or --install block-sudo sanitize-jwt ...`)}let o=k&&k.length>0?[...new Set(k)]:["claude"];for(let a of o){let c=ae(a);if(!c.scopes.includes(b)){try{await aL((0,ao.getInstanceId)(),"scope_validation_failed",{cli:a,scope:b,supported_scopes:c.scopes})}catch{}throw new aT(`Scope "${b}" is not supported by ${c.displayName}. Valid scopes: ${c.scopes.join(", ")}`)}}let p=function(){let a=process.env.FAILPROOFAI_BINARY_OVERRIDE;if(a&&a.trim())return a.trim();try{return(0,t.execSync)("which failproofai",{encoding:"utf8"}).trim().split("\n")[0].trim()}catch{throw new aT("failproofai binary not found in PATH.\nInstall it globally first: npm install -g failproofai")}}(),q=r(b,c),v=new Set(q.enabledPolicies);if(void 0!==a){let b;b=1===a.length&&"all"===a[0]?an.BUILTIN_POLICIES.filter(a=>d||!a.beta).map(a=>a.name):a,m=l?[...new Set(b)]:[...new Set([...q.enabledPolicies,...b])]}else{let a=q.enabledPolicies.length>0?q.enabledPolicies:void 0;m=await ap(a,{includeBeta:d})}let w={...q,enabledPolicies:m};if(j)delete w.customPoliciesPath,delete w.customPoliciesPaths;else if(i&&("string"==typeof i||i.length>0)){let a=("string"==typeof i?[i]:i).map(a=>(0,h.resolve)(a)),c=(q.customPoliciesPaths??(q.customPoliciesPath?[q.customPoliciesPath]:[])).map(a=>(0,h.resolve)(a)).filter(a=>!!(0,e.existsSync)(a)||(console.log(`Dropping custom policies path (file no longer exists): ${a}`),!1));for(let d of(w.customPoliciesPaths=l?[...new Set(a)]:[...new Set([...c,...a])],delete w.customPoliciesPath,a)){let a=[];try{a=await aS(d,{strict:!0})}catch(c){let a=c instanceof Error?c.message:String(c);try{await aL((0,ao.getInstanceId)(),"custom_policy_validation_failed",{scope:b,error_type:/not found/i.test(a)?"file_not_found":"load_error"})}catch{}console.error(`Error: ${a}`),process.exit(1)}if(0===a.length){try{await aL((0,ao.getInstanceId)(),"custom_policy_validation_failed",{scope:b,error_type:"no_hooks_registered"})}catch{}console.error(`Error: no hooks registered in ${d}. Make sure your file calls customPolicies.add(...) at least once.`),process.exit(1)}console.log(`
243
+ Validated ${a.length} custom hook(s) from ${d}: ${a.map(a=>a.name).join(", ")}`)}}if(s(w,b,c),console.log(`
244
244
  Enabled ${m.length} policy(ies): ${m.join(", ")}
245
- `),j)console.log("Custom hooks path cleared.");else if(w.customPoliciesPaths?.length||w.customPoliciesPath){let a=w.customPoliciesPaths??[w.customPoliciesPath];console.log(`Custom hooks paths: ${a.join(", ")}`)}let x=[];for(let a of s){let d=ab(a),e=P(d,b,c);try{for(let c of e){let e=d.readSettings(c);d.writeHookEntries(e,t,b),d.writeSettings(c,e),x.push({cli:a,path:c})}}catch(d){let c=d instanceof Error&&/EACCES|EPERM/.test(d.message)?"permission_denied":d instanceof Error&&/ENOENT|ENOTDIR/.test(d.message)?"path_not_found":"write_error";try{await aF((0,al.getInstanceId)(),"hook_write_failed",{cli:a,scope:b,error_type:c})}catch{}throw d}}try{let a=new Set(m),c=m.filter(a=>!v.has(a)),e=[...v].filter(b=>!a.has(b)),f=(0,al.getInstanceId)();if(await aF(f,"hooks_installed",{scope:b,cli:s,cli_count:s.length,policies:m,policy_count:m.length,policies_added:c,policies_removed:e,...h?{source:h}:{},platform:(0,g.platform)(),arch:(0,g.arch)(),os_release:(0,g.release)(),hostname_hash:(0,al.hashToId)((0,g.hostname)()),has_custom_hooks_path:!!(w.customPoliciesPaths?.length||w.customPoliciesPath),has_policy_params:!!(w.policyParams&&Object.keys(w.policyParams).length>0),param_policy_names:w.policyParams?Object.keys(w.policyParams):[],command_format:"project"===b?"npx":"absolute"}),d){let a=new Set(ak.BUILTIN_POLICIES.filter(a=>a.beta).map(a=>a.name)),c=m.filter(b=>a.has(b));c.length>0&&await aF(f,"beta_policies_installed",{scope:b,cli:s,beta_count:c.length,beta_policy_names:c,...h?{source:h}:{}})}}catch{}for(let{cli:a,path:c}of x){let d=ab(a);console.log(`Failproof AI hooks installed for ${d.displayName} (${d.eventTypes.length} event types, scope: ${b}).`),console.log(`Settings: ${c}`)}"project"===b?(console.log("Command: npx -y failproofai"),console.log(`
246
- This file can be committed to git — no machine-specific paths.`)):console.log(`Binary: ${t}`);let y=(n=new Set,r.filter(a=>{let b=aN(a,c);return!n.has(b)&&(n.add(b),!0)})).filter(a=>a!==b).filter(a=>aP(a,c));if(y.length>0){let a=y.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 ${y[0]}\` to remove the other installation,`),console.log("or `failproofai policies` to see all scopes.");try{await aF((0,al.getInstanceId)(),"multi_scope_warning_shown",{new_scope:b,existing_scopes:y,cli:s})}catch{}}}async function aS(a,b="user",c,d){let f="all"===b?"user":b,h=d?.cli&&d.cli.length>0?[...new Set(d.cli)]:["claude"];if(d?.removeCustomHooks){let a=o(f,c);delete a.customPoliciesPath,delete a.customPoliciesPaths,p(a,f,c),console.log("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){aO(a);let e=o(f,c),i=new Set(a),j=e.enabledPolicies.filter(a=>!i.has(a)),k=a.filter(a=>!e.enabledPolicies.includes(a));k.length>0&&console.log(`Warning: policy(ies) not currently enabled: ${k.join(", ")}`);let{policyParams:l,...m}=e,n=l?Object.fromEntries(Object.entries(l).filter(([a])=>!i.has(a))):null;p({...m,enabledPolicies:j,...n&&Object.keys(n).length>0?{policyParams:n}:{}},f,c);try{let c=(0,al.getInstanceId)(),f=a.filter(a=>e.enabledPolicies.includes(a));await aF(c,"hooks_removed",{scope:b,cli:h,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,al.hashToId)((0,g.hostname)())})}catch{}console.log(`Disabled ${a.length-k.length} policy(ies).`),console.log(`Remaining: ${j.length>0?j.join(", "):"(none)"}`);return}let i=o(f,c),j=0,k=!1;for(let a of h){let d=ab(a);for(let a of"all"===b?[...d.scopes]:d.scopes.includes(b)?[b]:[]){let f=P(d,a,c).filter(a=>(0,e.existsSync)(a));if(0===f.length){"all"!==b&&1===h.length&&(console.log("No settings file found. Nothing to remove."),k=!0);continue}let g=0;for(let a of f){let c=d.removeHooksFromFile(a);g+=c,c>0&&"all"!==b&&(console.log(`Removed ${c} failproofai hook(s) from ${d.displayName} settings.`),console.log(`Settings: ${a}`))}if(0===g&&"all"!==b&&1===h.length){console.log("No hooks found in settings. Nothing to remove."),k=!0;continue}j+=g}}if(!k||0!==j){if("all"===b)for(let a of(console.log(`Removed ${j} failproofai hook(s) from all scopes.`),h)){let b=ab(a);for(let a of b.scopes)for(let d of P(b,a,c))console.log(` ${b.displayName} / ${a}: ${d}`)}try{let a=(0,al.getInstanceId)();await aF(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:i.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,al.hashToId)((0,g.hostname)())})}catch{}if("all"===b)for(let a of r){let b=o(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;p({...g,enabledPolicies:[]},a,c)}}else if(!r.some(a=>aP(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=o(f,c);p({...e,enabledPolicies:[]},f,c)}}}var aT=a.i(24282),aU=a.i(12714),aV=a.i(13095);async function aW(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,f.resolve)(j(c),".failproofai","policies"),h=(0,f.resolve)((0,g.homedir)(),".failproofai","policies"),i=[];for(let{scope:c,dir:g}of[{scope:"project",dir:d},...h===d?[]:[{scope:"user",dir:h}]]){let d=[];try{d=function(a){if(!(0,e.existsSync)(a))return[];try{return(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isFile()&&aH.test(a.name)).sort((a,b)=>a.name.localeCompare(b.name)).map(b=>(0,f.resolve)(a,b.name))}catch{return[]}}(g)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await aX(e)).map(b=>{var d,g;let h=(d=(0,f.basename)(e),g=b.name,`convention:${c}:${d}:${g}`);return{...b,id:h,enabled:!a.has(h)}})}catch{}i.push({scope:c,file:(0,f.basename)(e),path:e,policies:d})}}return i}async function aX(a){if(!(0,e.existsSync)(a))return[];let b=await (0,aU.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,id:"",enabled:!0})}return c}async function aY(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=function(a){let b=j(a??process.cwd()),c=(0,f.resolve)(b,".failproofai","policies-config.json"),d=(0,f.resolve)(b,".failproofai","policies-config.local.json"),e=(0,f.resolve)((0,g.homedir)(),".failproofai","policies-config.json"),h=i(c),k=i(d),l=i(e),m=new Set([...h.enabledPolicies??[],...k.enabledPolicies??[],...l.enabledPolicies??[]]),n={};for(let a of[h,k,l])if(a.policyParams)for(let[b,c]of Object.entries(a.policyParams))b in n||(n[b]=c);let o=[h,k,l].map(a=>void 0!==a.customPoliciesPaths?a.customPoliciesPaths:void 0!==a.customPoliciesPath?[a.customPoliciesPath]:void 0).find(a=>void 0!==a),p=new Set([...h.disabledCustomPolicies??[],...k.disabledCustomPolicies??[],...l.disabledCustomPolicies??[]]),q=h.customPoliciesEnabled??k.customPoliciesEnabled??l.customPoliciesEnabled,r=h.llm??k.llm??l.llm;return{enabledPolicies:[...m],...Object.keys(n).length>0?{policyParams:n}:{},...void 0!==o?{customPoliciesPaths:o}:{},...p.size?{disabledCustomPolicies:[...p]}:{},...void 0!==q?{customPoliciesEnabled:q}:{},...void 0!==r?{llm:r}:{}}}(a),c=new Set(b.enabledPolicies),d=new Set(b.disabledCustomPolicies??[]),e=r.filter(a=>aP(a)),h=aN(e[0]??"user"),k=s.map(a=>aa[a]).filter(a=>void 0!==a).map(a=>({id:a.id,label:(0,aT.getCliLabel)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),l=ak.BUILTIN_POLICIES.map(a=>{var d;let e,f;return{name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled,beta:!!a.beta,enabled:c.has(a.name),eventScope:(d=a.match,e=d.events?.join(", ")??"",f=d.toolNames?` \xb7 ${d.toolNames.join(", ")}`:"",`${e}${f}`),params:a.params?Object.fromEntries(Object.entries(a.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])):void 0,currentParams:a.params?b.policyParams?.[a.name]??{}:void 0}}),m=b.customPoliciesPaths??(b.customPoliciesPath?[b.customPoliciesPath]:[]),n=j(a),o=m.map(a=>(0,f.resolve)(n,a)),p=(await Promise.all(o.map(async a=>{try{return(await aX(a)).map(b=>{var c;let e=(c=b.name,`custom:${a}:${c}`);return{...b,id:e,enabled:!d.has(e)}})}catch{return[]}}))).flat(),q=await aW(d,new Set(o));return{enabledPolicies:b.enabledPolicies,installedScopes:e,settingsPath:h,clis:k,policies:l,customPoliciesPaths:m.length?m:void 0,customPoliciesPath:1===m.length?m[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q}}async function aZ(a,b){let c=l(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),m({...c,enabledPolicies:[...d]});try{let c=(0,al.getInstanceId)();await aF(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function a$(a,b){if(!a.startsWith("custom:")&&!a.startsWith("convention:"))throw Error("Invalid custom policy ID");let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd();if(b){for(let b of r){let d=o(b,c);if(!d.disabledCustomPolicies?.includes(a))continue;let e=d.disabledCustomPolicies.filter(b=>b!==a),f={...d,disabledCustomPolicies:e};e.length||delete f.disabledCustomPolicies,p(f,b,c)}return}let d=l(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,m(f)}async function a_(a="user",b){let c=l(),d=c.enabledPolicies.length>0?c.enabledPolicies:ak.BUILTIN_POLICIES.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:ac(),f=e.length>0?e:["claude"];await aQ(d,a,void 0,!1,"web",void 0,!1,f)}async function a0(a="user",b){let c=b&&b.length>0?b:ac(),d=c.length>0?c:["claude"];await aS(void 0,a,void 0,{source:"web",cli:d})}async function a1(a,b){let c=l(),d={...c.policyParams??{},[a]:b};m({...c,policyParams:d});try{let c=(0,al.getInstanceId)();await aF(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,aV.ensureServerEntryExports)([aY]),(0,d.registerServerReference)(aY,"003f4932d705f3ccddde9242c1c2ac111092655144",null),(0,aV.ensureServerEntryExports)([aZ,a$]),(0,d.registerServerReference)(aZ,"60ed5b6ca5f7a41ed8472ec0ef40de9f3a5b07634e",null),(0,d.registerServerReference)(a$,"601e1e96939e2fa4db2b7189c61574d8a12ed25712",null),(0,aV.ensureServerEntryExports)([a_,a0]),(0,d.registerServerReference)(a_,"60f5bea305ec0ef502b80cbbb7069573b015d84a55",null),(0,d.registerServerReference)(a0,"60dfe6223418da45139b3dc40b047ce001e04dc9f8",null),(0,aV.ensureServerEntryExports)([a1]),(0,d.registerServerReference)(a1,"606f7b86f5f2a2d93ac690fd6fe988e980d4562054",null),a.s([],63895),a.i(63895),a.s(["003f4932d705f3ccddde9242c1c2ac111092655144",0,aY,"00bc6c2e75efe241025f5000ebad6ba97b07f41100",()=>b.getTelemetryConfig,"4014f2941eec49a0f08c0b3ffc3e8f522f0f640300",()=>c.getHookActivityAction,"601e1e96939e2fa4db2b7189c61574d8a12ed25712",0,a$,"6024da1919a986e7a15341dda8a5d950f5bc37997a",()=>c.searchHookActivityAction,"606f7b86f5f2a2d93ac690fd6fe988e980d4562054",0,a1,"60dfe6223418da45139b3dc40b047ce001e04dc9f8",0,a0,"60ed5b6ca5f7a41ed8472ec0ef40de9f3a5b07634e",0,aZ,"60f5bea305ec0ef502b80cbbb7069573b015d84a55",0,a_],11369)}];
245
+ `),j)console.log("Custom hooks path cleared.");else if(w.customPoliciesPaths?.length||w.customPoliciesPath){let a=w.customPoliciesPaths??[w.customPoliciesPath];console.log(`Custom hooks paths: ${a.join(", ")}`)}let x=[];for(let a of o){let d=ae(a),e=S(d,b,c);try{for(let c of e){let e=d.readSettings(c);d.writeHookEntries(e,p,b),d.writeSettings(c,e),x.push({cli:a,path:c})}}catch(d){let c=d instanceof Error&&/EACCES|EPERM/.test(d.message)?"permission_denied":d instanceof Error&&/ENOENT|ENOTDIR/.test(d.message)?"path_not_found":"write_error";try{await aL((0,ao.getInstanceId)(),"hook_write_failed",{cli:a,scope:b,error_type:c})}catch{}throw d}}try{let a=new Set(m),c=m.filter(a=>!v.has(a)),e=[...v].filter(b=>!a.has(b)),h=(0,ao.getInstanceId)();if(await aL(h,"hooks_installed",{scope:b,cli:o,cli_count:o.length,policies:m,policy_count:m.length,policies_added:c,policies_removed:e,...g?{source:g}:{},platform:(0,f.platform)(),arch:(0,f.arch)(),os_release:(0,f.release)(),hostname_hash:(0,ao.hashToId)((0,f.hostname)()),has_custom_hooks_path:!!(w.customPoliciesPaths?.length||w.customPoliciesPath),has_policy_params:!!(w.policyParams&&Object.keys(w.policyParams).length>0),param_policy_names:w.policyParams?Object.keys(w.policyParams):[],command_format:"project"===b?"npx":"absolute"}),d){let a=new Set(an.BUILTIN_POLICIES.filter(a=>a.beta).map(a=>a.name)),c=m.filter(b=>a.has(b));c.length>0&&await aL(h,"beta_policies_installed",{scope:b,cli:o,beta_count:c.length,beta_policy_names:c,...g?{source:g}:{}})}}catch{}for(let{cli:a,path:c}of x){let d=ae(a);console.log(`Failproof AI hooks installed for ${d.displayName} (${d.eventTypes.length} event types, scope: ${b}).`),console.log(`Settings: ${c}`)}"project"===b?(console.log("Command: npx -y failproofai"),console.log(`
246
+ This file can be committed to git — no machine-specific paths.`)):console.log(`Binary: ${p}`);let y=(n=new Set,u.filter(a=>{let b=aV(a,c);return!n.has(b)&&(n.add(b),!0)})).filter(a=>a!==b).filter(a=>aX(a,c));if(y.length>0){let a=y.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 ${y[0]}\` to remove the other installation,`),console.log("or `failproofai policies` to see all scopes.");try{await aL((0,ao.getInstanceId)(),"multi_scope_warning_shown",{new_scope:b,existing_scopes:y,cli:o})}catch{}}}async function a$(a,b="user",c,d){let g="all"===b?"user":b,h=d?.cli&&d.cli.length>0?[...new Set(d.cli)]:["claude"];if(d?.removeCustomHooks){let a=r(g,c);delete a.customPoliciesPath,delete a.customPoliciesPaths,s(a,g,c),console.log("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){aW(a);let e=r(g,c),i=new Set(a),j=e.enabledPolicies.filter(a=>!i.has(a)),k=a.filter(a=>!e.enabledPolicies.includes(a));k.length>0&&console.log(`Warning: policy(ies) not currently enabled: ${k.join(", ")}`);let{policyParams:l,...m}=e,n=l?Object.fromEntries(Object.entries(l).filter(([a])=>!i.has(a))):null;s({...m,enabledPolicies:j,...n&&Object.keys(n).length>0?{policyParams:n}:{}},g,c);try{let c=(0,ao.getInstanceId)(),g=a.filter(a=>e.enabledPolicies.includes(a));await aL(c,"hooks_removed",{scope:b,cli:h,removal_mode:d?.betaOnly?"beta_policies":"policies",beta_only:d?.betaOnly??!1,policies_removed:g,removed_count:g.length,...d?.source?{source:d.source}:{},platform:(0,f.platform)(),arch:(0,f.arch)(),os_release:(0,f.release)(),hostname_hash:(0,ao.hashToId)((0,f.hostname)())})}catch{}console.log(`Disabled ${a.length-k.length} policy(ies).`),console.log(`Remaining: ${j.length>0?j.join(", "):"(none)"}`);return}let i=r(g,c),j=0,k=!1;for(let a of h){let d=ae(a);for(let a of"all"===b?[...d.scopes]:d.scopes.includes(b)?[b]:[]){let f=S(d,a,c).filter(a=>(0,e.existsSync)(a));if(0===f.length){"all"!==b&&1===h.length&&(console.log("No settings file found. Nothing to remove."),k=!0);continue}let g=0;for(let a of f){let c=d.removeHooksFromFile(a);g+=c,c>0&&"all"!==b&&(console.log(`Removed ${c} failproofai hook(s) from ${d.displayName} settings.`),console.log(`Settings: ${a}`))}if(0===g&&"all"!==b&&1===h.length){console.log("No hooks found in settings. Nothing to remove."),k=!0;continue}j+=g}}if(!k||0!==j){if("all"===b)for(let a of(console.log(`Removed ${j} failproofai hook(s) from all scopes.`),h)){let b=ae(a);for(let a of b.scopes)for(let d of S(b,a,c))console.log(` ${b.displayName} / ${a}: ${d}`)}try{let a=(0,ao.getInstanceId)();await aL(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:i.enabledPolicies,removed_count:j,...d?.source?{source:d.source}:{},platform:(0,f.platform)(),arch:(0,f.arch)(),os_release:(0,f.release)(),hostname_hash:(0,ao.hashToId)((0,f.hostname)())})}catch{}if("all"===b)for(let a of u){let b=r(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;s({...g,enabledPolicies:[]},a,c)}}else if(!u.some(a=>aX(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=r(g,c);s({...e,enabledPolicies:[]},g,c)}}}var a_=a.i(24282);async function a0(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,h.resolve)(m(c),".failproofai","policies"),g=(0,h.resolve)((0,f.homedir)(),".failproofai","policies"),i=[];for(let{scope:c,dir:f}of[{scope:"project",dir:d},...g===d?[]:[{scope:"user",dir:g}]]){let d=[];try{d=function(a){if(!(0,e.existsSync)(a))return[];try{return(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isFile()&&aN.test(a.name)).sort((a,b)=>a.name.localeCompare(b.name)).map(b=>(0,h.resolve)(a,b.name))}catch{return[]}}(f)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await a1(e)).map(b=>{var d,f;let g=(d=(0,h.basename)(e),f=b.name,`convention:${c}:${d}:${f}`);return{...b,id:g,enabled:!a.has(g)}})}catch{}i.push({scope:c,file:(0,h.basename)(e),path:e,policies:d})}}return i}async function a1(a){if(!(0,e.existsSync)(a))return[];let b=await (0,aq.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,id:"",enabled:!0})}return c}async function a2(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=function(a){let b=m(a??process.cwd()),c=(0,h.resolve)(b,".failproofai","policies-config.json"),d=(0,h.resolve)(b,".failproofai","policies-config.local.json"),e=(0,h.resolve)((0,f.homedir)(),".failproofai","policies-config.json"),g=l(c),i=l(d),j=l(e),k=new Set([...g.enabledPolicies??[],...i.enabledPolicies??[],...j.enabledPolicies??[]]),n={};for(let a of[g,i,j])if(a.policyParams)for(let[b,c]of Object.entries(a.policyParams))b in n||(n[b]=c);let o=[g,i,j].map(a=>void 0!==a.customPoliciesPaths?a.customPoliciesPaths:void 0!==a.customPoliciesPath?[a.customPoliciesPath]:void 0).find(a=>void 0!==a),p=new Set([...g.disabledCustomPolicies??[],...i.disabledCustomPolicies??[],...j.disabledCustomPolicies??[]]),q=g.customPoliciesEnabled??i.customPoliciesEnabled??j.customPoliciesEnabled,r=g.llm??i.llm??j.llm;return{enabledPolicies:[...k],...Object.keys(n).length>0?{policyParams:n}:{},...void 0!==o?{customPoliciesPaths:o}:{},...p.size?{disabledCustomPolicies:[...p]}:{},...void 0!==q?{customPoliciesEnabled:q}:{},...void 0!==r?{llm:r}:{}}}(a),c=new Set(b.enabledPolicies),d=new Set(b.disabledCustomPolicies??[]),e=u.filter(a=>aX(a)),g=aV(e[0]??"user"),i=v.map(a=>ad[a]).filter(a=>void 0!==a).map(a=>({id:a.id,label:(0,a_.getCliLabel)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),j=an.BUILTIN_POLICIES.map(a=>{var d;let e,f;return{name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled,beta:!!a.beta,enabled:c.has(a.name),eventScope:(d=a.match,e=d.events?.join(", ")??"",f=d.toolNames?` \xb7 ${d.toolNames.join(", ")}`:"",`${e}${f}`),params:a.params?Object.fromEntries(Object.entries(a.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])):void 0,currentParams:a.params?b.policyParams?.[a.name]??{}:void 0}}),k=b.customPoliciesPaths??(b.customPoliciesPath?[b.customPoliciesPath]:[]),n=m(a),o=k.map(a=>(0,h.resolve)(n,a)),p=(await Promise.all(o.map(async a=>{try{return(await a1(a)).map(b=>{var c;let e=(c=b.name,`custom:${a}:${c}`);return{...b,id:e,enabled:!d.has(e)}})}catch{return[]}}))).flat(),q=await a0(d,new Set(o));return{enabledPolicies:b.enabledPolicies,installedScopes:e,settingsPath:g,clis:i,policies:j,customPoliciesPaths:k.length?k:void 0,customPoliciesPath:1===k.length?k[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q}}async function a3(a,b){let c=o(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),p({...c,enabledPolicies:[...d]});try{let c=(0,ao.getInstanceId)();await aL(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function a4(a,b){if(!a.startsWith("custom:")&&!a.startsWith("convention:"))throw Error("Invalid custom policy ID");let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd();if(b){for(let b of u){let d=r(b,c);if(!d.disabledCustomPolicies?.includes(a))continue;let e=d.disabledCustomPolicies.filter(b=>b!==a),f={...d,disabledCustomPolicies:e};e.length||delete f.disabledCustomPolicies,s(f,b,c)}return}let d=o(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,p(f)}async function a5(a="user",b){let c=o(),d=c.enabledPolicies.length>0?c.enabledPolicies:an.BUILTIN_POLICIES.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:af(),f=e.length>0?e:["claude"];await aY(d,a,void 0,!1,"web",void 0,!1,f)}async function a6(a="user",b){let c=b&&b.length>0?b:af(),d=c.length>0?c:["claude"];await a$(void 0,a,void 0,{source:"web",cli:d})}async function a7(a,b){let c=o(),d={...c.policyParams??{},[a]:b};p({...c,policyParams:d});try{let c=(0,ao.getInstanceId)();await aL(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,i.ensureServerEntryExports)([a2]),(0,d.registerServerReference)(a2,"00d669e33649f4cfc3fdfb904ef722083c86df9e4b",null),(0,i.ensureServerEntryExports)([a3,a4]),(0,d.registerServerReference)(a3,"6029926b5c34e16c0e43980889940f916c1d23b8f9",null),(0,d.registerServerReference)(a4,"60eb0274f3e68c3be9d827a185fb940738fc0bc11f",null),(0,i.ensureServerEntryExports)([a5,a6]),(0,d.registerServerReference)(a5,"60e5085b1ff561cf9c06d5224aab0884bced675eac",null),(0,d.registerServerReference)(a6,"600abebc958d0a144d6f4c6a64e814694682bd6b07",null),(0,i.ensureServerEntryExports)([a7]),(0,d.registerServerReference)(a7,"6076edad4e8511453233d6bb7d18173fba6c25a958",null),a.s([],61830),a.i(61830),a.s(["00117ecdc8a8938b3f095bf9a6e5d9ab486f15b646",0,j,"001ec1f1d7fd6b60ec177aba587daf0f44c51b194e",()=>b.getTelemetryConfig,"00d669e33649f4cfc3fdfb904ef722083c86df9e4b",0,a2,"40ccaefc2cd27187d84341370e940c92d016ed2a85",()=>c.getHookActivityAction,"600abebc958d0a144d6f4c6a64e814694682bd6b07",0,a6,"6029926b5c34e16c0e43980889940f916c1d23b8f9",0,a3,"6076edad4e8511453233d6bb7d18173fba6c25a958",0,a7,"60afd7466cb2250c10509dd1d937e85bace6ddf650",()=>c.searchHookActivityAction,"60e5085b1ff561cf9c06d5224aab0884bced675eac",0,a5,"60eb0274f3e68c3be9d827a185fb940738fc0bc11f",0,a4],64338)}];
247
247
 
248
- //# sourceMappingURL=%5Broot-of-the-server%5D__170799-._.js.map
248
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0spkm68._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},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:"1.0.0-beta.2",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",failproofaid:"./bin/failproofaid-shim.mjs"},files:["bin/","src/","scripts/","lib/","pi-extension/","openclaw-plugin/",".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 --external sql.js && 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:worker":"bun build --target=node --format=esm --outfile=dist/worker.mjs bin/failproofai-worker.mjs --external posthog-node --external sql.js",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun run build:worker && 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",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","validate:mdx":"bun scripts/validate-mdx.ts"},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/FailproofAI/failproofai",repository:{type:"git",url:"https://github.com/FailproofAI/failproofai.git"},bugs:{url:"https://github.com/FailproofAI/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@anthropic-ai/sdk":"^0.115.0","@mdx-js/mdx":"^3.1.1","@tailwindcss/postcss":"^4.3.1","@tanstack/react-virtual":"^3.14.3","@testing-library/jest-dom":"^7.0.0","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"26.1.1","@types/react":"19.2.17","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",clsx:"^2.1.1",eslint:"^10.5.0","eslint-config-next":"^16.2.9",jsdom:"^30.0.0","lucide-react":"^1.18.0",next:"^16.2.11",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.3.1",typescript:"6.0.3",vitest:"^4.1.9"},dependencies:{"html-to-image":"^1.11.13",html2canvas:"^1.4.1","posthog-node":"^5.37.1","sql.js":"^1.14.1",yaml:"^2.9.0"},overrides:{postcss:"8.5.23","eslint-plugin-react-hooks":"7.0.1",vite:"8.0.16",undici:"7.28.0","brace-expansion":"5.0.8",sharp:"0.35.0"}}},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","POSTHOG_PRODUCT",0,"failproofai-oss"],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,"00bc6c2e75efe241025f5000ebad6ba97b07f41100",null),a.s(["getTelemetryConfig",0,m],36359)},165,a=>{"use strict";var b=a.i(36359);a.s([],84833),a.i(84833),a.s(["00bc6c2e75efe241025f5000ebad6ba97b07f41100",()=>b.getTelemetryConfig],165)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__1_g_b3t._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
1
+ module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},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:"1.0.0-beta.4",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",failproofaid:"./bin/failproofaid-shim.mjs"},files:["bin/","src/","scripts/","lib/","pi-extension/","openclaw-plugin/",".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 --external sql.js && 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:worker":"bun build --target=node --format=esm --outfile=dist/worker.mjs bin/failproofai-worker.mjs --external posthog-node --external sql.js",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun run build:worker && 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",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","validate:mdx":"bun scripts/validate-mdx.ts"},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/FailproofAI/failproofai",repository:{type:"git",url:"https://github.com/FailproofAI/failproofai.git"},bugs:{url:"https://github.com/FailproofAI/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@anthropic-ai/sdk":"^0.115.0","@mdx-js/mdx":"^3.1.1","@tailwindcss/postcss":"^4.3.1","@tanstack/react-virtual":"^3.14.9","@testing-library/jest-dom":"^7.0.0","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"26.1.2","@types/react":"19.2.17","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.5",clsx:"^2.1.1",eslint:"^10.5.0","eslint-config-next":"^16.2.9",jsdom:"^30.0.1","lucide-react":"^1.28.0",next:"^16.2.11",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.3.1",typescript:"6.0.3",vitest:"^4.1.9"},dependencies:{"html-to-image":"^1.11.13",html2canvas:"^1.4.1","posthog-node":"^5.47.7","sql.js":"^1.14.1",yaml:"^2.9.0"},overrides:{postcss:"8.5.23","eslint-plugin-react-hooks":"7.0.1",vite:"8.0.16",undici:"7.29.0","brace-expansion":"5.0.9",sharp:"0.35.0"},optionalDependencies:{"@failproofai/failproofaid-linux-x64":"1.0.0-beta.4","@failproofai/failproofaid-linux-arm64":"1.0.0-beta.4","@failproofai/failproofaid-darwin-x64":"1.0.0-beta.4","@failproofai/failproofaid-darwin-arm64":"1.0.0-beta.4"}}},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","POSTHOG_PRODUCT",0,"failproofai-oss"],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,"001ec1f1d7fd6b60ec177aba587daf0f44c51b194e",null),a.s(["getTelemetryConfig",0,m],36359)},165,a=>{"use strict";var b=a.i(36359);a.s([],84833),a.i(84833),a.s(["001ec1f1d7fd6b60ec177aba587daf0f44c51b194e",()=>b.getTelemetryConfig],165)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__1aq139v._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__0u02miy._.js.map