failproofai 1.0.11 → 1.0.12-beta.0
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +23 -23
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js +2 -2
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +3 -3
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js +5 -6
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js +9 -9
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js +2 -2
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js +4 -5
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +6 -7
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +6 -7
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js +5 -6
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +4 -4
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +3 -3
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +7 -7
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +8 -8
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +3 -3
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +3 -3
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/{[externals]__0qkp92tjfvw8r._.js → [externals]__0-ha5ydqq0mws._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02vous7mpi2xm._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03i5o4a840guz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_hsnj_a2mvl_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0swiyzbmvja2d._.js → [root-of-the-server]__0t9ufnv5hi2hq._.js} +5 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wg9dk8x8bnau._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12kq3x-h7t7i1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a5zkndjwlc13._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1r7kbfkiw2xmu._.js → [root-of-the-server]__1aaw59g-5uty7._.js} +12 -12
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1izwqj_ij_9x_._.js → [root-of-the-server]__20xe05hm5u8_1._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_09dz7xva4ce_2._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_1ixl-kxq_ctsa._.js → _0kc-piux3hady._.js} +2 -2
- package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01j58mdcdw0vn._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_a8z2ldp2v3n._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ffu2-38y03ic._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g8b0kyorya-t._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__075uro8t92s0_._.js → [root-of-the-server]__0pwj2h2efe5f-._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0_lbstb5x2t15._.js → [root-of-the-server]__0ts0fg5yih1c1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zn1d4blhd3bu._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__17r4zrwanhp6r._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1lnfv02ucky7m._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1mc9-zlnh656_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1s2-ck3k3rsoo._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1l1qgu5mfapkh._.js → [root-of-the-server]__1vx7o8ukefudh._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1_ozgifqv1ssi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1gb0ifpkowwub._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0dc-of_bn0cim._.js → _1ve8y151ua7qx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1f_ymmaonkksc.js → node_modules_html-to-image_es_index_00jxj8foxqz5t.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +23 -23
- package/.next/standalone/.next/server/middleware.js +2 -2
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/{0frxv4_m-m2u5.js → 063al_q720fkj.js} +1 -1
- package/.next/standalone/.next/static/chunks/{16z6_d7sp61jm.js → 0a-ccsp3xmypz.js} +1 -1
- package/.next/standalone/.next/static/chunks/{302llgh97ce6w.js → 0pjxnp927y7_j.js} +1 -1
- package/.next/standalone/.next/static/chunks/{44a7k2_62qc-9.js → 13jv-xvabeb62.js} +2 -2
- package/.next/standalone/.next/static/chunks/2ank2u3apy8m6.js +1 -0
- package/.next/standalone/.next/static/chunks/2meqb9kygrncb.js +1 -0
- package/.next/standalone/.next/static/chunks/2ohktp_-lkv3x.js +1 -0
- package/.next/standalone/.next/static/chunks/2py0eldhwz8ay.js +1 -0
- package/.next/standalone/.next/static/chunks/{1_c0dc7zqj1n7.js → 2qz5piiir-qqm.js} +1 -1
- package/.next/standalone/.next/static/chunks/2tjfp9dirxnku.js +1 -0
- package/.next/standalone/.next/static/chunks/{37stoe-_yd852.js → 2znt1784j9gd9.js} +1 -1
- package/.next/standalone/.next/static/chunks/3tn1bzk094e8e.js +1 -0
- package/.next/standalone/fp-cloud-cli/uv.lock +6 -6
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/context.js +72 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/diag.js +84 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/metrics.js +50 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/propagation.js +80 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/trace.js +70 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js +52 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js +44 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js +12 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/utils.js +41 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js +27 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context/context.js +52 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context-api.js +16 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js +47 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js +73 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js +34 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/types.js +33 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag-api.js +20 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/index.js +71 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/internal/global-utils.js +60 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/internal/semver.js +111 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/Metric.js +18 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js +118 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js +20 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js +23 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js +36 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js +58 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js +68 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js +21 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js +46 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js +46 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js +33 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/context-utils.js +71 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js +94 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js +35 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js +16 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js +25 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/span_kind.js +38 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js +66 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/status.js +29 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js +18 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/version.js +10 -0
- package/.next/standalone/node_modules/@opentelemetry/api/package.json +96 -0
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +2 -2
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +2 -2
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +1 -1
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/generate-agent-files.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/config.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +11 -11
- package/.next/standalone/package.json +11 -11
- package/.next/standalone/sdk/python/CHANGELOG.md +7 -0
- package/.next/standalone/sdk/python/failproofai_sdk/_version.py +1 -1
- package/.next/standalone/sdk/python/pyproject.toml +19 -0
- package/.next/standalone/sdk/python/uv.lock +520 -301
- package/.next/standalone/sdk/typescript/CHANGELOG.md +13 -0
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +4 -13
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +2 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +4 -13
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +3 -0
- package/.next/standalone/sdk/typescript/package-lock.json +178 -162
- package/.next/standalone/sdk/typescript/package.json +1 -1
- package/.next/standalone/sdk/typescript/src/version.ts +1 -1
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +638 -79
- package/dist/worker.mjs +1 -1
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +11 -11
- package/src/audit/open-browser.ts +19 -1
- package/src/hooks/cloud-introspect.ts +5 -2
- package/src/hooks/cloud-login.ts +245 -0
- package/src/hooks/configure-wizard.ts +311 -15
- package/src/hooks/tui.ts +271 -0
- package/.next/standalone/.next/server/chunks/[externals]__0hjaw70fchx66._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07l68zv0hqdiu._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u3i025_setk_._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10a2f6s636yc7._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qt5u58xrcuk6._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_077n_4ip5__fu._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mqvvxcn6v0op._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0pb7ds5g0vzgn._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_1gasm5xkeqmm3._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_1q1heqmkhh8l4._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0888k4s6spfmh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_bflu046ep5j._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0fdwgktjfhedo._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s4deza787asx._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__18qe-hu0gwqm4._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1_p_9xe520fex._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1fmhm8_s9i4re._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1g76awtnmimd1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pczevlpk5lxh._.js +0 -3
- package/.next/standalone/.next/static/chunks/0m-tv1y6ghhtk.js +0 -1
- package/.next/standalone/.next/static/chunks/0ol2gj4ntfn56.js +0 -1
- package/.next/standalone/.next/static/chunks/15rm15u5a6dua.js +0 -1
- package/.next/standalone/.next/static/chunks/1kwj8uqxuv85t.js +0 -1
- package/.next/standalone/.next/static/chunks/3hj5_7i3nw4zj.js +0 -1
- package/.next/standalone/.next/static/chunks/3iyoapeoq_hup.js +0 -1
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → SNr7o_-G4kNBQTR-iLZMM}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → SNr7o_-G4kNBQTR-iLZMM}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → SNr7o_-G4kNBQTR-iLZMM}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[45550,a=>{var b=a.i(72131),c=a.i(66036);let d=/\b[\w-]+-extension:\/\//i;function e(a){return"app"===function({stack:a,filename:b,appOrigin:c}){let e=[b,a].filter(Boolean).join("\n");return e.trim()?d.test(e)?"extension":c&&e.includes(c)?"app":"unknown":"unknown"}(a)}a.s(["GlobalErrorListeners",0,function(){return(0,b.useEffect)(()=>{let a=a=>{e({stack:a.error?.stack,filename:a.filename,appOrigin:window.location.origin})&&(0,c.L)("unhandled_exception",{error_message:a.message,error_name:a.error?.name,error_filename:a.filename,error_lineno:a.lineno,error_colno:a.colno})},b=a=>{let b=a.reason;e({stack:b instanceof Error?b.stack:void 0,appOrigin:window.location.origin})&&(0,c.L)("unhandled_rejection",{error_message:b instanceof Error?b.message:String(b),error_name:b instanceof Error?b.name:void 0})};return window.addEventListener("error",a),window.addEventListener("unhandledrejection",b),()=>{window.removeEventListener("error",a),window.removeEventListener("unhandledrejection",b)}},[]),null}],45550)},10815,a=>{var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(41476),f=a.i(72131),g=a.i(64831);let h={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]};h.node;let i=(0,g.f)(h);var j=a.i(89027);let k={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};k.node;let l=(0,g.f)(k),m={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};m.node;let n=(0,g.f)(m),o={name:"message-circle",size:24,node:[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]};o.node;let p=(0,g.f)(o),q={name:"messages-square",size:24,node:[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]]};q.node;let r=(0,g.f)(q),s={name:"message-square-warning",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 15h.01",key:"q59x07"}],["path",{d:"M12 7v4",key:"xawao1"}]]};s.node;let t=(0,g.f)(s);var u=a.i(40695);let v="failproofai@exosphere.host",w=[{label:"Star us on GitHub",icon:l,href:"https://github.com/failproofai/failproofai",color:"#f5c842",bg:"rgba(245,200,66,0.08)"},{label:"Documentation",icon:n,href:"https://docs.befailproof.ai/introduction",color:"#60a5fa",bg:"rgba(96,165,250,0.08)"},{label:"Join our Discord",icon:p,href:"https://discord.befailproof.ai/",color:"#5865f2",bg:"rgba(88,101,242,0.08)"},{label:"Join r/failproofai",icon:r,href:"https://www.reddit.com/r/failproofai/",color:"#ff4500",bg:"rgba(255,69,0,0.08)"},{label:"Feedback & Issues",icon:t,href:"https://github.com/FailproofAI/failproofai/issues/new/choose",color:"#34d399",bg:"rgba(52,211,153,0.08)"}],x=()=>{let[a,c]=(0,f.useState)(!1),d=(0,f.useCallback)(()=>c(!1),[]),e=(0,f.useCallback)(a=>{"Escape"===a.key&&c(!1)},[]);return(0,b.jsxs)("div",{className:"relative",onKeyDown:e,children:[a&&(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:d,"aria-hidden":"true"}),(0,b.jsxs)(u.f,{type:"button",variant:"ghost",size:"sm",onClick:()=>c(a=>!a),"aria-expanded":a,"aria-haspopup":"true",className:"relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(i,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"hidden sm:inline text-xs whitespace-nowrap",children:"Reach Us"}),(0,b.jsx)(j.f,{className:`h-3 w-3 transition-transform ${a?"rotate-180":""}`})]}),a&&(0,b.jsxs)("div",{className:"absolute right-0 mt-2 w-60 rounded-lg border border-border bg-card shadow-xl z-50",role:"menu",style:{boxShadow:"0 8px 32px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.04)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2.5 border-b border-border",style:{background:"linear-gradient(135deg, rgba(236,72,153,0.12) 0%, rgba(139,92,246,0.08) 100%)"},children:[(0,b.jsx)("p",{className:"text-xs font-semibold",style:{color:"#e879f9",letterSpacing:"0.06em"},children:"Reach Developers"}),(0,b.jsx)("p",{className:"text-[0.65rem] text-muted-foreground mt-0.5",children:"We'd love to hear from you"})]}),(0,b.jsx)("div",{className:"py-1",children:w.map(({label:a,icon:c,href:e,color:f,bg:g})=>(0,b.jsxs)("a",{href:e,target:"_blank",rel:"noopener noreferrer",role:"menuitem",className:"flex items-center gap-2.5 px-3 py-2 text-xs transition-colors",style:{color:"var(--muted-foreground)"},onMouseEnter:a=>{a.currentTarget.style.background=g,a.currentTarget.style.color=f},onMouseLeave:a=>{a.currentTarget.style.background="",a.currentTarget.style.color=""},onClick:d,children:[(0,b.jsx)(c,{className:"h-3.5 w-3.5 flex-shrink-0",style:{color:f}}),a]},a))}),(0,b.jsx)("div",{className:"px-3 py-2 border-t border-border",style:{background:"rgba(0,0,0,0.2)"},children:(0,b.jsxs)("p",{className:"text-[0.65rem] text-muted-foreground",children:["or email"," ",(0,b.jsx)("a",{href:`mailto:${v}`,className:"transition-colors",style:{color:"#e879f9"},onMouseEnter:a=>a.currentTarget.style.opacity="0.75",onMouseLeave:a=>a.currentTarget.style.opacity="1",children:v})]})})]})]})},y={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};y.node;let z=(0,g.f)(y);var A=a.i(97895),B=a.i(6236);let C=[{label:"Off",value:0},{label:"5s",value:5},{label:"10s",value:10},{label:"30s",value:30}];function D({className:a}){let c=(0,d.useRouter)(),[e,g]=(0,f.useTransition)(),{intervalSec:h,setIntervalSec:i}=(0,B.useAutoRefresh)(),j=(0,f.useCallback)(()=>{g(()=>c.refresh())},[c]);(0,f.useEffect)(()=>{if(h<=0)return;let a=setInterval(j,1e3*h);return()=>clearInterval(a)},[h,j]);let k=h>0;return(0,b.jsxs)("div",{className:(0,A.f)("inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5",a),children:[(0,b.jsx)("button",{onClick:j,title:"Refresh",className:(0,A.f)("inline-flex items-center justify-center rounded-md p-1.5 transition-colors",k?"text-primary hover:bg-primary/10":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:(0,b.jsx)(z,{className:(0,A.f)("w-3.5 h-3.5",e&&"animate-spin")})}),(0,b.jsx)("div",{className:"w-px h-4 bg-border"}),(0,b.jsx)("div",{className:"inline-flex items-center gap-0.5",role:"group","aria-label":"Auto-refresh interval",children:C.map(a=>(0,b.jsx)("button",{onClick:()=>i(a.value),"aria-pressed":h===a.value,className:(0,A.f)("px-2 py-1 text-[11px] font-medium rounded-md transition-colors",h===a.value?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:a.label},a.value))})]})}var E=a.i(10765);let F=[{href:"/projects",label:"projects"},{href:"/policies",label:"policies"},{href:"/audit",label:"audit"}];a.s(["Navbar",0,({disabledPages:a=[]})=>{let f=(0,d.usePathname)(),{capture:g}=(0,E.usePostHog)(),h=f.startsWith("/policies")?"policies":f.startsWith("/audit")?"audit":f.startsWith("/settings")?"settings":f.startsWith("/projects")||f.startsWith("/project/")?"projects":"";return(0,b.jsxs)("header",{className:"app-header",children:[(0,b.jsx)("a",{href:"https://github.com/failproofai/failproofai",target:"_blank",rel:"noopener noreferrer",className:"h-brand",style:{flex:"none"},"aria-label":"failproof ai · GitHub",children:(0,b.jsx)("img",{src:"/logo.svg",alt:"failproof_ai",style:{height:18,display:"block",flexShrink:0}})}),(0,b.jsx)("nav",{className:"tabs",style:{border:"none",padding:0,gap:0},children:F.filter(({href:b})=>{let c=b.slice(1);return!a.includes(c)}).map(({href:a,label:d})=>{let e="/projects"===a?"/projects"===f||f.startsWith("/project/"):f.startsWith(a);return(0,b.jsx)(c.default,{href:a,className:`tab${e?" is-active":""}`,"aria-current":e?"page":void 0,onClick:()=>{"/audit"===a&&g("audit_nav_clicked",{from_path:f,is_active_tab:e})},children:d},a)})}),(0,b.jsx)("div",{style:{flex:1}}),(0,b.jsxs)("div",{className:"h-meta",children:[(0,b.jsxs)("span",{className:"h-version",children:["v","1.0.
|
|
1
|
+
(()=>{"use strict";module.exports=[45550,a=>{var b=a.i(72131),c=a.i(66036);let d=/\b[\w-]+-extension:\/\//i;function e(a){return"app"===function({stack:a,filename:b,appOrigin:c}){let e=[b,a].filter(Boolean).join("\n");return e.trim()?d.test(e)?"extension":c&&e.includes(c)?"app":"unknown":"unknown"}(a)}a.s(["GlobalErrorListeners",0,function(){return(0,b.useEffect)(()=>{let a=a=>{e({stack:a.error?.stack,filename:a.filename,appOrigin:window.location.origin})&&(0,c.L)("unhandled_exception",{error_message:a.message,error_name:a.error?.name,error_filename:a.filename,error_lineno:a.lineno,error_colno:a.colno})},b=a=>{let b=a.reason;e({stack:b instanceof Error?b.stack:void 0,appOrigin:window.location.origin})&&(0,c.L)("unhandled_rejection",{error_message:b instanceof Error?b.message:String(b),error_name:b instanceof Error?b.name:void 0})};return window.addEventListener("error",a),window.addEventListener("unhandledrejection",b),()=>{window.removeEventListener("error",a),window.removeEventListener("unhandledrejection",b)}},[]),null}],45550)},10815,a=>{var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(41476),f=a.i(72131),g=a.i(64831);let h={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]};h.node;let i=(0,g.f)(h);var j=a.i(89027);let k={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};k.node;let l=(0,g.f)(k),m={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};m.node;let n=(0,g.f)(m),o={name:"message-circle",size:24,node:[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]};o.node;let p=(0,g.f)(o),q={name:"messages-square",size:24,node:[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]]};q.node;let r=(0,g.f)(q),s={name:"message-square-warning",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 15h.01",key:"q59x07"}],["path",{d:"M12 7v4",key:"xawao1"}]]};s.node;let t=(0,g.f)(s);var u=a.i(40695);let v="failproofai@exosphere.host",w=[{label:"Star us on GitHub",icon:l,href:"https://github.com/failproofai/failproofai",color:"#f5c842",bg:"rgba(245,200,66,0.08)"},{label:"Documentation",icon:n,href:"https://docs.befailproof.ai/introduction",color:"#60a5fa",bg:"rgba(96,165,250,0.08)"},{label:"Join our Discord",icon:p,href:"https://discord.befailproof.ai/",color:"#5865f2",bg:"rgba(88,101,242,0.08)"},{label:"Join r/failproofai",icon:r,href:"https://www.reddit.com/r/failproofai/",color:"#ff4500",bg:"rgba(255,69,0,0.08)"},{label:"Feedback & Issues",icon:t,href:"https://github.com/FailproofAI/failproofai/issues/new/choose",color:"#34d399",bg:"rgba(52,211,153,0.08)"}],x=()=>{let[a,c]=(0,f.useState)(!1),d=(0,f.useCallback)(()=>c(!1),[]),e=(0,f.useCallback)(a=>{"Escape"===a.key&&c(!1)},[]);return(0,b.jsxs)("div",{className:"relative",onKeyDown:e,children:[a&&(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:d,"aria-hidden":"true"}),(0,b.jsxs)(u.f,{type:"button",variant:"ghost",size:"sm",onClick:()=>c(a=>!a),"aria-expanded":a,"aria-haspopup":"true",className:"relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(i,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"hidden sm:inline text-xs whitespace-nowrap",children:"Reach Us"}),(0,b.jsx)(j.f,{className:`h-3 w-3 transition-transform ${a?"rotate-180":""}`})]}),a&&(0,b.jsxs)("div",{className:"absolute right-0 mt-2 w-60 rounded-lg border border-border bg-card shadow-xl z-50",role:"menu",style:{boxShadow:"0 8px 32px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.04)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2.5 border-b border-border",style:{background:"linear-gradient(135deg, rgba(236,72,153,0.12) 0%, rgba(139,92,246,0.08) 100%)"},children:[(0,b.jsx)("p",{className:"text-xs font-semibold",style:{color:"#e879f9",letterSpacing:"0.06em"},children:"Reach Developers"}),(0,b.jsx)("p",{className:"text-[0.65rem] text-muted-foreground mt-0.5",children:"We'd love to hear from you"})]}),(0,b.jsx)("div",{className:"py-1",children:w.map(({label:a,icon:c,href:e,color:f,bg:g})=>(0,b.jsxs)("a",{href:e,target:"_blank",rel:"noopener noreferrer",role:"menuitem",className:"flex items-center gap-2.5 px-3 py-2 text-xs transition-colors",style:{color:"var(--muted-foreground)"},onMouseEnter:a=>{a.currentTarget.style.background=g,a.currentTarget.style.color=f},onMouseLeave:a=>{a.currentTarget.style.background="",a.currentTarget.style.color=""},onClick:d,children:[(0,b.jsx)(c,{className:"h-3.5 w-3.5 flex-shrink-0",style:{color:f}}),a]},a))}),(0,b.jsx)("div",{className:"px-3 py-2 border-t border-border",style:{background:"rgba(0,0,0,0.2)"},children:(0,b.jsxs)("p",{className:"text-[0.65rem] text-muted-foreground",children:["or email"," ",(0,b.jsx)("a",{href:`mailto:${v}`,className:"transition-colors",style:{color:"#e879f9"},onMouseEnter:a=>a.currentTarget.style.opacity="0.75",onMouseLeave:a=>a.currentTarget.style.opacity="1",children:v})]})})]})]})},y={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};y.node;let z=(0,g.f)(y);var A=a.i(97895),B=a.i(6236);let C=[{label:"Off",value:0},{label:"5s",value:5},{label:"10s",value:10},{label:"30s",value:30}];function D({className:a}){let c=(0,d.useRouter)(),[e,g]=(0,f.useTransition)(),{intervalSec:h,setIntervalSec:i}=(0,B.useAutoRefresh)(),j=(0,f.useCallback)(()=>{g(()=>c.refresh())},[c]);(0,f.useEffect)(()=>{if(h<=0)return;let a=setInterval(j,1e3*h);return()=>clearInterval(a)},[h,j]);let k=h>0;return(0,b.jsxs)("div",{className:(0,A.f)("inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5",a),children:[(0,b.jsx)("button",{onClick:j,title:"Refresh",className:(0,A.f)("inline-flex items-center justify-center rounded-md p-1.5 transition-colors",k?"text-primary hover:bg-primary/10":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:(0,b.jsx)(z,{className:(0,A.f)("w-3.5 h-3.5",e&&"animate-spin")})}),(0,b.jsx)("div",{className:"w-px h-4 bg-border"}),(0,b.jsx)("div",{className:"inline-flex items-center gap-0.5",role:"group","aria-label":"Auto-refresh interval",children:C.map(a=>(0,b.jsx)("button",{onClick:()=>i(a.value),"aria-pressed":h===a.value,className:(0,A.f)("px-2 py-1 text-[11px] font-medium rounded-md transition-colors",h===a.value?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:a.label},a.value))})]})}var E=a.i(10765);let F=[{href:"/projects",label:"projects"},{href:"/policies",label:"policies"},{href:"/audit",label:"audit"}];a.s(["Navbar",0,({disabledPages:a=[]})=>{let f=(0,d.usePathname)(),{capture:g}=(0,E.usePostHog)(),h=f.startsWith("/policies")?"policies":f.startsWith("/audit")?"audit":f.startsWith("/settings")?"settings":f.startsWith("/projects")||f.startsWith("/project/")?"projects":"";return(0,b.jsxs)("header",{className:"app-header",children:[(0,b.jsx)("a",{href:"https://github.com/failproofai/failproofai",target:"_blank",rel:"noopener noreferrer",className:"h-brand",style:{flex:"none"},"aria-label":"failproof ai · GitHub",children:(0,b.jsx)("img",{src:"/logo.svg",alt:"failproof_ai",style:{height:18,display:"block",flexShrink:0}})}),(0,b.jsx)("nav",{className:"tabs",style:{border:"none",padding:0,gap:0},children:F.filter(({href:b})=>{let c=b.slice(1);return!a.includes(c)}).map(({href:a,label:d})=>{let e="/projects"===a?"/projects"===f||f.startsWith("/project/"):f.startsWith(a);return(0,b.jsx)(c.default,{href:a,className:`tab${e?" is-active":""}`,"aria-current":e?"page":void 0,onClick:()=>{"/audit"===a&&g("audit_nav_clicked",{from_path:f,is_active_tab:e})},children:d},a)})}),(0,b.jsx)("div",{style:{flex:1}}),(0,b.jsxs)("div",{className:"h-meta",children:[(0,b.jsxs)("span",{className:"h-version",children:["v","1.0.12-beta.0"]}),h&&(0,b.jsx)("span",{className:"h-brand-sep","aria-hidden":"true",children:"·"}),h&&(0,b.jsx)("span",{className:"h-brand-section",children:h})]}),(0,b.jsxs)("div",{className:"h-actions",children:[(0,b.jsx)(D,{}),(0,b.jsx)("span",{style:{width:1,height:18,background:"var(--line)",margin:"0 6px"}}),!a.includes("settings")&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.default,{href:"/settings",className:`h-icon-btn${f.startsWith("/settings")?" is-active":""}`,"aria-label":"settings","aria-current":f.startsWith("/settings")?"page":void 0,title:"settings",children:(0,b.jsx)(e.f,{className:"w-3.5 h-3.5",strokeWidth:1.75,"aria-hidden":"true"})}),(0,b.jsx)("span",{style:{width:1,height:18,background:"var(--line)",margin:"0 6px"}})]}),(0,b.jsx)(x,{})]})]})}],10815)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1djqs9i27e4kg._.js.map
|
|
@@ -22,7 +22,7 @@ ${c.indent}`)}}else(""===z||"\n"===z[0])&&(A="");return x+=A+z,c.inFlow?y&&h&&h(
|
|
|
22
22
|
${c}`)+"'";return b.implicitKey?d:f.foldFlowLines(d,c,f.FOLD_FLOW,g(b,!1))}function j(a,b){let c,{singleQuote:d}=b.options;if(!1===d)c=h;else{let b=a.includes('"'),e=a.includes("'");c=b&&!e?i:e&&!b?h:d?i:h}return c(a,b)}try{d=RegExp("(^|(?<!\n))\n+(?!\n|$)","g")}catch{d=/\n+(?!\n|$)/g}function k({comment:a,type:b,value:c},h,i,l){let m,n,o,p,{blockQuote:q,commentString:r,lineWidth:s}=h.options;if(!q||/\n[\t ]+$/.test(c))return j(c,h);let t=h.indent||(h.forceBlockIndent||(p=c,/^(%|---|\.\.\.)/m.test(p))?" ":""),u="literal"===q||"folded"!==q&&b!==e.Scalar.BLOCK_FOLDED&&(b===e.Scalar.BLOCK_LITERAL||!function(a,b,c){if(!b||b<0)return!1;let d=b-c,e=a.length;if(e<=d)return!1;for(let b=0,c=0;b<e;++b)if("\n"===a[b]){if(b-c>d)return!0;if(e-(c=b+1)<=d)return!1}return!0}(c,s,t.length));if(!c)return u?"|\n":">\n";for(n=c.length;n>0;--n){let a=c[n-1];if("\n"!==a&&" "!==a&&" "!==a)break}let v=c.substring(n),w=v.indexOf("\n");-1===w?m="-":c===v||w!==v.length-1?(m="+",l&&l()):m="",v&&(c=c.slice(0,-v.length),"\n"===v[v.length-1]&&(v=v.slice(0,-1)),v=v.replace(d,`$&${t}`));let x=!1,y=-1;for(o=0;o<c.length;++o){let a=c[o];if(" "===a)x=!0;else if("\n"===a)y=o;else break}let z=c.substring(0,y<o?y+1:o);z&&(c=c.substring(z.length),z=z.replace(/\n+/g,`$&${t}`));let A=t?"2":"1",B=(x?A:"")+m;if(a&&(B+=" "+r(a.replace(/ ?[\r\n]+/g," ")),i&&i()),!u){let a=c.replace(/\n+/g,"\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${t}`),d=!1,i=g(h,!0);"folded"!==q&&b!==e.Scalar.BLOCK_FOLDED&&(i.onOverflow=()=>{d=!0});let j=f.foldFlowLines(`${z}${a}${v}`,t,f.FOLD_BLOCK,i);if(!d)return`>${B}
|
|
23
23
|
${t}${j}`}return c=c.replace(/\n+/g,`$&${t}`),`|${B}
|
|
24
24
|
${t}${z}${c}${v}`}c.stringifyString=function(a,b,c,d){let{implicitKey:l,inFlow:m}=b,n="string"==typeof a.value?a:Object.assign({},a,{value:String(a.value)}),{type:o}=a;o!==e.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(n.value)&&(o=e.Scalar.QUOTE_DOUBLE);let p=a=>{switch(a){case e.Scalar.BLOCK_FOLDED:case e.Scalar.BLOCK_LITERAL:return l||m?j(n.value,b):k(n,b,c,d);case e.Scalar.QUOTE_DOUBLE:return h(n.value,b);case e.Scalar.QUOTE_SINGLE:return i(n.value,b);case e.Scalar.PLAIN:return function(a,b,c,d){let{type:h,value:i}=a,{actualString:l,implicitKey:m,indent:n,indentStep:o,inFlow:p}=b;if(m&&i.includes("\n")||p&&/[[\]{},]/.test(i))return j(i,b);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return m||p||!i.includes("\n")?j(i,b):k(a,b,c,d);if(!m&&!p&&h!==e.Scalar.PLAIN&&i.includes("\n"))return k(a,b,c,d);if(/^(%|---|\.\.\.)/m.test(i)){if(""===n)return b.forceBlockIndent=!0,k(a,b,c,d);else if(m&&n===o)return j(i,b)}let q=i.replace(/\n+/g,`$&
|
|
25
|
-
${n}`);if(l){let a=a=>a.default&&"tag:yaml.org,2002:str"!==a.tag&&a.test?.test(q),{compat:c,tags:d}=b.doc.schema;if(d.some(a)||c?.some(a))return j(i,b)}return m?q:f.foldFlowLines(q,n,f.FOLD_FLOW,g(b,!1))}(n,b,c,d);default:return null}},q=p(o);if(null===q){let{defaultKeyType:a,defaultStringType:c}=b.options,d=l&&a||c;if(null===(q=p(d)))throw Error(`Unsupported default string type ${d}`)}return q}},85927,(a,b,c)=>{var d=a.r(27267);let e=Symbol("break visit"),f=Symbol("skip children"),g=Symbol("remove node");function h(a,b){let c=l(b);d.isDocument(a)?i(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):i(null,a,c,Object.freeze([]))}function i(a,b,c,f){let h=m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),i(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=i(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=i("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=i("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}async function j(a,b){let c=l(b);d.isDocument(a)?await k(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):await k(null,a,c,Object.freeze([]))}async function k(a,b,c,f){let h=await m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),k(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=await k(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=await k("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=await k("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}function l(a){return"object"==typeof a&&(a.Collection||a.Node||a.Value)?Object.assign({Alias:a.Node,Map:a.Node,Scalar:a.Node,Seq:a.Node},a.Value&&{Map:a.Value,Scalar:a.Value,Seq:a.Value},a.Collection&&{Map:a.Collection,Seq:a.Collection},a):a}function m(a,b,c,e){return"function"==typeof c?c(a,b,e):d.isMap(b)?c.Map?.(a,b,e):d.isSeq(b)?c.Seq?.(a,b,e):d.isPair(b)?c.Pair?.(a,b,e):d.isScalar(b)?c.Scalar?.(a,b,e):d.isAlias(b)?c.Alias?.(a,b,e):void 0}function n(a,b,c){let e=b[b.length-1];if(d.isCollection(e))e.items[a]=c;else if(d.isPair(e))"key"===a?e.key=c:e.value=c;else if(d.isDocument(e))e.contents=c;else{let a=d.isAlias(e)?"alias":"scalar";throw Error(`Cannot replace node with ${a} parent`)}}h.BREAK=e,h.SKIP=f,h.REMOVE=g,j.BREAK=e,j.SKIP=f,j.REMOVE=g,c.visit=h,c.visitAsync=j},17280,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(9909),f=a.i(86304);let g="failproofai-pack.json",h="failproofai-pack.mjs",i="SHA256SUMS";function j(){return(process.env.FAILPROOFAI_PACK_BASE_URL||"https://github.com").replace(/\/+$/,"")}let k=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,l=/^[A-Za-z0-9][A-Za-z0-9._/-]{0,127}$/,m="FailproofAI/policies",n=new Set(["core","failproofai","official"]);function o(a){let b=a.trim();if(0===b.length)throw Error("pack source is empty");let c=b.match(/^(?:https?:\/\/)?(?:www\.)?github\.com\/(.+)$/i);if(c){let[a,b,...d]=c[1].replace(/\/+$/,"").split("/"),e=null;if("releases"===d[0]&&("tag"===d[1]||"download"===d[1])){let a=d.slice(2);e=("download"===d[1]?a.slice(0,-1):a).join("/")||null}else"releases"===d[0]&&"latest"===d[1]&&(e=null);return p(a,b,e)}let d=b.replace(/^github:/i,""),e=d.lastIndexOf("@"),f=e>0?d.slice(0,e):d,g=e>0?d.slice(e+1):null,h=f.indexOf("/");if(h<=0||h===f.length-1){if(n.has(f.trim().toLowerCase()))throw Error(`${JSON.stringify(a)} is no longer a pack name — ours is a pack like anyone else's now. Use ${m} instead.`);throw Error(`pack source must be owner/repo, owner/repo@tag, or a github.com URL — got ${JSON.stringify(a)}`)}return p(f.slice(0,h),f.slice(h+1),g)}function p(a,b,c){if(!a||!k.test(a))throw Error(`unsafe owner ${JSON.stringify(a)}`);if(!b||!k.test(b))throw Error(`unsafe repo ${JSON.stringify(b)}`);if(null!==c&&!l.test(c))throw Error(`unsafe tag ${JSON.stringify(c)}`);return{owner:a,repo:b,tag:c}}async function q(a){let b=`${j()}/${a.owner}/${a.repo}/releases/latest`,c=await fetch(b,{signal:AbortSignal.timeout(3e4),redirect:"manual"}),d=c.headers.get("location");if(!d)throw Error(`could not resolve the newest release of ${a.owner}/${a.repo} (GET ${b} returned ${c.status} with no redirect). That redirect is issued only for a published, non-prerelease release, so either the repository has no releases at all or every release it has is a prerelease or a draft. Name a tag explicitly.`);let e=d.match(/\/releases\/tag\/(.+)$/);if(!e)throw Error(`unexpected redirect from ${b}: ${d}`);let f=decodeURIComponent(e[1]).replace(/\/+$/,"");if(!l.test(f))throw Error(`unsafe tag ${JSON.stringify(f)} from ${b}`);return f}async function r(b,c){let d,e=c.toLowerCase(),f=`${(process.env.FAILPROOFAI_GITHUB_API??"https://api.github.com").replace(/\/+$/,"")}/repos/${b.owner}/${b.repo}/releases?per_page=100`;try{let a=(process.env.GITHUB_TOKEN||process.env.GH_TOKEN||"").trim(),b=await fetch(f,{headers:{...a?{Authorization:`Bearer ${a}`}:{},Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"failproofai"},signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${f} returned ${b.status}`);d=await b.json()}catch(a){throw Error(`could not resolve commit ${c} in ${b.owner}/${b.repo}: ${L(a)}. Name the release tag instead if you know it.`)}let{parseReleaseBody:g}=await a.A(49679),h=Array.isArray(d)?d:[],i=[];for(let a of h){let b="string"==typeof a.tag_name?a.tag_name:"";if(!b||!l.test(b))continue;let c=g("string"==typeof a.body?a.body:"");c.commit&&c.commit.startsWith(e)&&i.push({tag:b,commit:c.commit})}if(i.length>1)throw Error(`commit ${c} matches ${i.length} releases of ${b.owner}/${b.repo}: `+i.map(a=>`${a.tag} (${a.commit})`).join(", ")+". Name one of those tags, or type more of the commit.");return 1===i.length?i[0].tag:null}async function s(a){return null===a.tag?q(a):e.r.test(a.tag)?await r(a,a.tag)??a.tag:a.tag}function t(a){return`github:${a.owner}/${a.repo}@${a.tag}`}function u(a,b){return`${j()}/${a.owner}/${a.repo}/releases/download/${a.tag}/${b}`}async function v(a){let b=await fetch(a,{signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${a} returned ${b.status}`);let c=b.headers.get("content-length");if(null!==c){let d=Number(c);if(Number.isFinite(d)&&d>8388608)throw await b.body?.cancel(),Error(`${a} declares ${d} bytes, over the 8388608 limit`)}if(!b.body)return Buffer.alloc(0);let d=[],e=b.body.getReader(),f=0;try{for(;;){let{done:b,value:c}=await e.read();if(b)break;if((f+=c.byteLength)>8388608)throw await e.cancel(),Error(`${a} is over the 8388608 byte limit`);d.push(Buffer.from(c))}}finally{e.releaseLock()}return Buffer.concat(d,f)}function w(a,b){for(let c of a.split("\n")){let a=c.trim().match(/^([0-9a-f]{64})\s+\*?(.+)$/i);if(a&&a[2].trim()===b)return a[1].toLowerCase()}return null}function x(a){return(0,b.createHash)("sha256").update(a).digest("hex")}function y(a,b){let e=`${a}.${process.pid}.tmp`;try{(0,c.mkdirSync)((0,d.dirname)(a),{recursive:!0}),(0,c.writeFileSync)(e,b),(0,c.renameSync)(e,a)}catch(a){throw(0,c.rmSync)(e,{force:!0}),a}}function z(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} semantic is not an array`);if(b.length>e.P)throw Error(`pack ${a} declares ${b.length} semantic policies, over the cap of ${e.P}`);let c=b.map((b,c)=>(0,e.U)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);d.add(b.name)}return c}function A(a,b){let c=(0,e.T)(a,b);if("too-old"===c.kind)throw Error(c.reason);return"unreadable"===c.kind?{minCliVersionNote:c.reason}:c.declared?{minCliVersion:c.declared}:{}}async function B(a,b={}){let c=await I(a,b);return{id:c.id,version:c.version,enabled:c.enabled,available:c.available,bundled:!1,source:c.source,tag:c.tag,resolvedFromLatest:c.resolvedFromLatest,selection:c.selection,categories:c.categories}}async function C(a){let b;if("1"===process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("FAILPROOFAI_NO_DOWNLOAD is set, so nothing can be fetched to preview");let c=o(a),d=null===c.tag,f={...c,tag:await s(c)},h=(await v(u(f,i))).toString("utf8"),j=await v(u(f,g)),k=w(h,g);if(!k)throw Error(`${i} has no entry for ${g}`);if(x(j)!==k)throw Error(`${g} failed integrity verification`);try{b=JSON.parse(j.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let l=b,m=(0,e.$)(l),n=A(m.id,l.minCliVersion),p=z(m.id,l.semantic),q=D(m.id,l.policies);return E(q,p),{id:m.id,version:m.version,effect:m.effect,...m.commit?{commit:m.commit}:{},policies:q,semantic:p,...n,source:t(f),resolvedFromLatest:d}}function D(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} policies is not an array`);let c=b.map((b,c)=>(0,e.Z)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares ${b.name} twice`);d.add(b.name)}return c}function E(a,b){if(0===a.length&&0===b.length)throw Error("pack manifest declares no policies")}async function F(a){let b,c=(await v(u(a,i))).toString("utf8"),d=await v(u(a,g)),f=w(c,g);if(!f)throw Error(`${i} has no entry for ${g}`);if(x(d)!==f)throw Error(`${g} failed integrity verification`);let j=await v(u(a,h)),k=w(c,h);if(!k)throw Error(`${i} has no entry for ${h}`);let l=x(j);if(l!==k)throw Error(`${h} failed integrity verification`);try{b=JSON.parse(d.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let m=b,n=(0,e.$)(m),o=A(n.id,m.minCliVersion),p=D(n.id,m.policies),q=z(n.id,m.semantic);return E(p,q),{id:n.id,version:n.version,policies:p,semantic:q,...o,...void 0!==m.effect?{effect:n.effect}:{},...n.commit?{commit:n.commit}:{},artifact:j,artifactDigest:l}}function G(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}async function H(b,c){let d,{loadCustomHooks:e}=await a.A(6188);try{d=(await e(b,{strict:!0})).map(a=>a.name)}catch(a){throw Error(`its artifact could not be loaded: ${a instanceof Error?a.message:String(a)}`)}let f=c.filter(a=>!d.includes(a)),g=d.filter(a=>!c.includes(a));if(f.length>0)throw Error(`its manifest declares ${f.join(", ")} but the artifact does not register ${1===f.length?"it":"them"} — that would install as protection that never runs`);if(g.length>0)throw Error(`its artifact registers undeclared ${g.join(", ")} — a policy that enforces but appears in no listing cannot be reviewed or switched off`)}async function I(a,b){var g,h,i,j;let k,l;if(process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("pack downloads are disabled (FAILPROOFAI_NO_DOWNLOAD). Already-installed packs keep enforcing.");let m=o(a),n={...m,tag:await s(m)},p=null===m.tag,q=await F(n);if(g=n.tag,h=q.version,(k=g.slice(g.lastIndexOf("/")+1))!==h&&k!==`v${h}`){let a=n.tag.slice(n.tag.lastIndexOf("/")+1).replace(/^v/,""),b=`re-tag the release ${q.version} (a leading v is fine), or rebuild the pack with --version ${a}`;throw Error(`${q.id} was not installed: release tag ${n.tag} does not match the version its manifest declares (${q.version}). `+(p?`That is the newest release of ${n.owner}/${n.repo}, so the release and the pack disagree at the source — ask the publisher to ${b}.`:`Name the tag whose manifest says ${q.version}, or fix the pack: ${b}.`))}if(/^failproofai\//i.test(q.id)&&!(0,f.g)({source:t(n)}))throw Error(`${q.id} was not installed: the FailproofAI/ namespace is reserved for releases from github.com/FailproofAI, and this one came from ${n.owner}/${n.repo}.`);let r=q.policies.map(a=>a.name),u=(i=q.id,j=q.artifactDigest,(l=(0,e.V)().packs).find(a=>a.id===i)??l.find(a=>a.sha256===j)),{enabled:v,reason:w}=function(a,b,c,d){let e=a.map(a=>a.name);if(b?.all)return{enabled:null,reason:"all"};let f=new Set;if(b?.categories?.length){let c=new Set(b.categories.map(G)),d=new Map(a.map(a=>[G(a.category),a.category])),e=[...c].filter(a=>!d.has(a));if(e.length>0)throw Error(`no such categor${1===e.length?"y":"ies"}: ${e.join(", ")} (has: ${[...new Set(a.map(a=>G(a.category)))].join(", ")})`);for(let b of a)c.has(G(b.category))&&f.add(b.name)}if(b?.only?.length){let a=b.only.filter(a=>!e.includes(a));if(a.length>0)throw Error(`pack does not contain ${a.join(", ")}`);for(let a of b.only)f.add(a)}if(b?.only!==void 0||b?.categories?.length){if(b.merge&&d){if(null===c)return{enabled:null,reason:"carried"};for(let a of c??[])f.add(a);return{enabled:e.filter(a=>f.has(a)),reason:"added"}}return{enabled:e.filter(a=>f.has(a)),reason:"selected"}}return d?{enabled:null===c?null:c??null,reason:"carried"}:{enabled:a.filter(a=>a.defaultEnabled).map(a=>a.name),reason:"defaults"}}(q.policies,b,u?.enabled?u.enabled.filter(a=>r.includes(a)):u?.enabled,!!u),x=(0,e.N)(),z=`artifacts/${q.artifactDigest}.mjs`,A=(0,d.resolve)(x,z);(0,c.existsSync)(A)||y(A,q.artifact);try{await H(A,r)}catch(a){throw Error(`${q.id}@${q.version} was not installed: ${a instanceof Error?a.message:String(a)}`)}let B=a=>{let b=a.lastIndexOf("@");return b>a.indexOf(":")?a.slice(0,b):a};if(u&&u.id===q.id&&!u.source.startsWith("bundled:")&&B(u.source)!==B(t(n)))throw Error(`pack id ${q.id} is already installed from ${u.source}. Refusing to replace it with ${t(n)} — remove it first if that is what you mean.`);let C={id:q.id,version:q.version,source:t(n),entry:z,sha256:q.artifactDigest,policies:q.policies,...q.semantic.length>0?{semantic:q.semantic}:{},...q.minCliVersion?{minCliVersion:q.minCliVersion}:{},...q.commit?{commit:q.commit}:{},...q.effect?{effect:q.effect}:{},...v?{enabled:v}:{},...b?.clis?{clis:b.clis}:b?.merge!==!1&&u?.clis?{clis:u.clis}:{}};return{replaced:function(a,b=!0){let f=(0,d.resolve)((0,e.N)(),"installed.json"),g=[];if((0,c.existsSync)(f))try{let a=JSON.parse((0,c.readFileSync)(f,"utf8"));Array.isArray(a.packs)&&(g=a.packs)}catch{throw Error(`existing pack manifest at ${f} is unreadable; move it aside and re-add`)}let h=g.filter(b=>b?.sha256===a.sha256&&b?.id!==a.id).map(a=>a.id);if(b&&!a.enabled){let b=g.find(a=>h.includes(a?.id)),c=b?.enabled?.filter(b=>a.policies?.some(a=>a?.name===b));c&&c.length>0&&(a.enabled=c)}let i=g.filter(a=>!h.includes(a?.id)),j=i.findIndex(b=>b?.id===a.id);return j>=0?i[j]=a:i.push(a),y(f,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),h}(C,"all"!==w),id:q.id,version:q.version,source:C.source,tag:n.tag,resolvedFromLatest:p,enabled:v??r,available:r,selection:w,categories:[...new Set(q.policies.map(a=>G(a.category)))],semantic:q.semantic.length,...q.minCliVersionNote?{minCliVersionNote:q.minCliVersionNote}:{},...q.effect?{effect:q.effect}:{},...C.clis?{clis:C.clis}:{},artifact:A}}function J(a){let b=a.trim(),c=b.lastIndexOf("@");return(c>0?b.slice(0,c):b).trim()}class K extends Error{candidates;constructor(a,b){super(`${b} matches ${a.length} installed packs: ${a.join(", ")}. Name one of them exactly.`),this.candidates=a,this.name="AmbiguousPackId"}}function L(a){return a instanceof Error?a.message:String(a)}a.s(["w",0,m,"U",0,i,"Z",0,h,"v",0,g,"I",0,I,"z",0,B,"k",0,C,"R",0,function(a){let b,f=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(f))return null;try{b=JSON.parse((0,c.readFileSync)(f,"utf8"))}catch{return null}let g=Array.isArray(b.packs)?b.packs:[],h=g.find(b=>b?.id===J(a)),i=g.filter(b=>{var c;return b?.id&&(c=b.id,J(c).toLowerCase()===J(a).toLowerCase())});if(!h&&i.length>1)throw new K(i.map(a=>a.id).filter(a=>"string"==typeof a),a);let j=h??i[0],k=g.filter(a=>a!==j);return j&&k.length!==g.length?(y(f,JSON.stringify({schemaVersion:1,packs:k},null,2)+"\n"),j.id):null},"g",0,function(a,b,f){let g,h=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(h))return{ok:!1,reason:"no packs are installed"};try{g=JSON.parse((0,c.readFileSync)(h,"utf8"))}catch{return{ok:!1,reason:`pack manifest at ${h} is unreadable`}}let i=Array.isArray(g.packs)?g.packs:[],j=i.find(b=>b?.id===a);if(!j)return{ok:!1,reason:`no installed pack with id ${a}`};let k=(Array.isArray(j.policies)?j.policies:[]).map(a=>"string"==typeof a?.name?a.name:null).filter(a=>null!==a);if(!k.includes(b))return{ok:!1,reason:`pack ${a} declares no policy named ${b}`};let l=j.enabled??k,m=f?[...new Set([...l,b])]:l.filter(a=>a!==b);return j.enabled=k.filter(a=>m.includes(a)),y(h,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),{ok:!0}}])},49526,a=>{var b=a.i(1457),c=a.i(12072);let d={rgb:[102,209,181],c256:79,basic:"36"},e={rgb:[228,88,125],c256:168,basic:"95"},f={rgb:[227,179,65],c256:179,basic:"33"},g={rgb:[107,118,132],basic:"2"},h={rgb:[118,127,139],basic:"2"},i={rgb:[62,67,76],basic:"2"},j={rgb:[240,113,120],c256:203,basic:"31"};function k(a){return!!a.isTTY&&!process.env.NO_COLOR}let l="\x1b[0m";function m(){return/truecolor|24bit/i.test(process.env.COLORTERM||"")?"truecolor":/256color/i.test(process.env.TERM||"")?"ansi256":"basic"}function n(a,b){return"truecolor"===b?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:"ansi256"===b&&void 0!==a.c256?`38;5;${a.c256}`:a.basic}let o=["...tt........","..tttt.......",".tttttt..pppp",".tttttt..pppp","..tttt...pppp","...tt....pppp",".........pppp",".........pppp","..pppp...pppp","..pppp...pppp","..pppp...pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp","..pppp...pppp","..ppppppppppp","..ppppppppppp","..ppppppppppp","..ppppppppppp"];function p(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}function q(a,b,c,d={}){let e=a.columns||80,f=d.cut??!0,g=c.map(a=>""!==a&&f?p(a,e):a).join("\n")+"\n",h=b.lastCount>0?`\x1b[${b.lastCount}A\x1b[J`:"";a.write(`\x1b[?2026h${d.lead??""}${h}${g}${d.tail??""}\x1b[?2026l`),b.lastCount=c.length}function r(a){let b=0,c=0;for(;c<a.length;)if("\x1b"===a[c]&&"["===a[c+1]){let b=c+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;c=b+1}else b++,c++;return b}function s(a){let b=[],c="",d=0;for(;d<a.length;)if("\x1b"===a[d]&&"["===a[d+1]){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;let e=a.slice(d,b+1);c=/\[0?m$/.test(e)?"":c+e,d=b+1}else b.push({ch:a[d],active:c}),d++;return b}function t(a){let b="",c="";for(let d of a)d.active!==c&&(c&&(b+=l),b+=d.active,c=d.active),b+=d.ch;return c?b+l:b}function u(a,b,c="left"){let d=Math.max(0,b-r(a));return"right"===c?" ".repeat(d)+a:a+" ".repeat(d)}Symbol("failproofai.back"),Symbol("failproofai.open-source"),Object.values({on:"✓ ON",off:"· OFF",mixed:"◐ MIXED",locked:"✓ LOCK",cloud:"✓ CLOUD",pack:"✓ PACK",failed:"▲ FAIL",observe:"◉ OBS"}).map(a=>a.length),a.s(["J",0," ","v",0,k,"w",0,function(a=process.stdout){return{cols:a.columns||80,color:k(a)}},"m",0,function(a={}){var k;let v,w,{cols:x,c:y}={cols:Math.max(20,a?.cols??80),c:(v=(k=a?.color??!1)?m():"basic",{bold:a=>k?`\x1b[1m${a}\x1b[0m`:a,dim:(w=(a,b=!1)=>c=>k?`\x1b[${b?"1;":""}${n(a,v)}m${c}\x1b[0m`:c)(g),guide:w(d),pink:w(e),pinkBold:w(e,!0),softPink:w(e),warn:w(f),ink2:a=>a,ink3:w(h),track:w(i),err:w(j)})},z=a.color??!1,A=a.version??c.version,B=y.ink3(" · "),C=(a,b)=>b?a(b):"",D=a=>y.pink(a),E=y.guide("●"),F=y.ink3("○"),G=y.err("✕"),H=y.pink("■"),I=y.ink3("□"),J=a=>`${y.bold("fa")}${y.pinkBold("il")}${y.bold("proof ai")} ${y.ink3(`v${A}`)}`+(a?`${B}${a}`:""),K=(a,b)=>y.bold(a.toUpperCase())+(b?` ${y.ink3(b)}`:""),L=(b,c=0)=>{let d=Math.max(c,...b.map(([a,b])=>b?r(a)+2:0));return b.map(([b,c])=>{let e,f;if(!c)return` ${b}`;let g=` ${u(b,d)}`;return g+(e=y.ink2(c),f=x-r(g),a.fit&&r(e)>f?function(a,b){var c;if(r(a)<=b)return a;if(a.includes("\x1b")){let d,e;return b<=1?"…":`${(e=(d=s(c=p(a,b-1)))[d.length-1])&&e.active?c+l:c}…`}return b<=0?"":a.length<=b?a:a.slice(0,b-1).trimEnd()+"…"}(e,Math.max(1,f)):e)})};return{cols:x,sep:B,cmd:D,on:E,off:F,failed:G,selected:H,unselected:I,meta:a=>C(y.ink3,a),header:J,head:K,rows:L,kv:(a,b=9)=>{let c=Math.max(b,...a.map(([a])=>r(a)))+2;return a.map(([a,b])=>b?` ${u(C(y.ink3,a),c)}${b}`:` ${C(y.ink3,a)}`)},ok:(a,b)=>`${y.guide("✓")} ${a}${b?` ${y.ink3(b)}`:""}`,caution:(a,b)=>`${y.warn("▲")} ${a}${b?`${B}${D(b)}`:""}`,fail:(a,b)=>`${y.err("✕")} ${a}${b?`${B}${D(b)}`:""}`,notice:(a,b)=>{let c=a=>(a.split("`").length-1)%2==0?a.replace(/`([^`]+)`/g,(a,b)=>D(b)):a,d="ok"===a?y.guide("✓"):"caution"===a?y.warn("▲"):y.err("✕"),[e="",...f]=b.split("\n");return[`${d} ${c(e)}`,...f.map(a=>""===a.trim()?"":` ${c(a)}`)]},confirm:(a,c="Continue?")=>new Promise(d=>{let{stdin:e,stdout:f}=a,g="",h=!1,i=e.isRaw,j=a=>{h||(h=!0,e.removeListener("keypress",l),e.removeListener("end",k),e.setRawMode?.(i??!1),e.pause(),f.write("\n"),d(a))};function k(){j(!1)}function l(a,b){let c=b?.name;b?.ctrl&&("c"===c||"d"===c)||"escape"===c?j(!1):"return"===c||"enter"===c?j(/^y(es)?$/i.test(g.trim())):"backspace"===c?g&&(g=g.slice(0,-1),f.write("\b \b")):a&&1===a.length&&a>=" "&&!b?.ctrl&&!b?.meta&&(g+=a,f.write(a))}f.write(`${c} ${y.ink3("y/N")} `),b.emitKeypressEvents(e),e.setRawMode?.(!0),e.on("keypress",l),e.on("end",k),e.resume()}),keys:a=>y.ink3(a.join(" · ")),bar:(a,b)=>{let c=Math.round(Math.max(0,Math.min(1,b))*a),d=Math.max(0,a-c);return C(y.pink,"━".repeat(c))+(z?C(y.track,"━".repeat(d)):" ".repeat(d))},logo:()=>x<22?[]:(function(a){let b=".".repeat(o[0]?.length??0),c=a=>"t"===a?d:"p"===a?e:null,f=[];for(let d=0;d<o.length;d+=2){let e=o[d],g=o[d+1]??b,h="";for(let b=0;b<e.length;b++){let d=c(e[b]),f=c(g[b]);if(d||f)if("basic"===a)h+=d&&f?"█":d?"▀":"▄";else if(d&&f)h+=d===f?`\x1b[${n(d,a)}m█\x1b[0m`:`\x1b[${n(d,a)};${"ansi256"===a&&void 0!==f.c256?`48;5;${f.c256}`:`48;2;${f.rgb[0]};${f.rgb[1]};${f.rgb[2]}`}m▀\x1b[0m`;else d?h+=`\x1b[${n(d,a)}m▀\x1b[0m`:h+=`\x1b[${n(f,a)}m▄\x1b[0m`;else h+=" "}f.push(h)}return f})(z?m():"basic").map(a=>` ${a}`),helpPage:b=>{var c;let d,e=[J(b.name),"",K("Usage"),...L(b.usage)];return b.options?.length&&e.push("",K("Options"),...(c=b.options,d=Math.max(b.optionsCol??0,...c.map(([a,b])=>b?r(a)+2:0)),c.flatMap(([b,c])=>{if(!c)return[` ${b}`];let e=` ${u(b,d)}`,f=x-r(e);if(!a.fit||r(c)<=f)return[e+y.ink2(c)];let g=" ".repeat(r(e));return(function(a,b){if(b<=0)return[a];if(!a.includes("\x1b")){if(b<=0)return[a];let c=a.split(/\s+/).filter(Boolean);if(0===c.length)return[];let d=[],e="";for(let a of c)e?e.length+1+a.length<=b?e+=` ${a}`:(d.push(e),e=a):e=a;return e&&d.push(e),d}let c=[],d=[];for(let b of s(a))/\s/.test(b.ch)?(d.length>0&&c.push(d),d=[]):d.push(b);d.length>0&&c.push(d);let e=[],f=[];for(let a of c){if(f.length>0&&f.length+1+a.length>b){e.push(t(f)),f=[...a];continue}f.length>0&&f.push({ch:" ",active:f[f.length-1].active}),f.push(...a)}return f.length>0&&e.push(t(f)),e})(c,Math.max(1,f)).map((a,b)=>(0===b?e:g)+y.ink2(a))}))),b.examples?.length&&e.push("",K("Examples"),...b.examples.map(a=>` ${D(a)}`)),e},live:a=>{let b={lastCount:0},c=0,d=null,e=null,f=!1,g=!1,h=()=>{a.write("\x1b[?25h")},i=()=>{process.removeListener("exit",h),process.removeListener("SIGINT",j),process.removeListener("SIGTERM",j)},j=a=>{g=!0,e&&clearTimeout(e),i(),h(),process.kill(process.pid,a)},k=()=>{e=null;let i=d;if(d=null,!i||g)return;c=Date.now();let k="";f||(f=!0,k="\x1b[?25l",process.once("exit",h),process.on("SIGINT",j),process.on("SIGTERM",j)),q(a,b,i(),{lead:k})};return{draw(a){if(g||(d=a,e))return;let b=c+100-Date.now();b<=0?k():(e=setTimeout(k,b),e.unref?.())},done(c){g||(g=!0,e&&clearTimeout(e),e=null,d=null,i(),q(a,b,c,{cut:!1,tail:f?"\x1b[?25h":""}))}}}}}])},91997,80504,67121,a=>{let b=["user","project","local"],c=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],d=["user","project"],e=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],f={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"},g=["user"],h=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],i=["user","project"],j=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],k=["user","project"],l=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],m=["user","project"],n=["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],o=["user","project"],p=["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],q=["user"],r=["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],s=["user","project"],t=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],u=["user","project"],v=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],w=["user","project"],x=["PreToolUse","PostToolUse","PreInvocation","Stop"],y=["user","project"],z=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],A=["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),B="__failproofai_hook__";a.s(["X",0,x,"m",0,w,"I",0,A,"p",0,f,"W",0,e,"L",0,d,"d",0,j,"w",0,i,"s",0,l,"Y",0,k,"D",0,v,"c",0,u,"n",0,t,"B",0,s,"Z",0,B,"i",0,z,"x",0,y,"y",0,h,"M",0,g,"F",0,b,"z",0,c,"P",0,r,"E",0,q,"e",0,n,"O",0,m,"J",0,p,"G",0,o],91997);var C=a.i(74533),D=a.i(2157),E=a.i(50227),F=a.i(57764),G=a.i(60526),H=a.i(22650),I=a.i(66680);class J extends Error{path;target;constructor(a,b){super(`Refusing to write ${a}: it is a symlink to ${b}, which does not exist. Fix or remove the link, then retry — failproofai will not replace it with a regular file.`),this.path=a,this.target=b,this.name="DanglingConfigSymlinkError"}}function K(a,b,c={}){let d,e,f="replace"===c.symlinks&&function(a){try{return(0,D.lstatSync)(a).isSymbolicLink()}catch{return!1}}(a),g="replace"===c.symlinks?a:function(a){let b=!1;try{b=(0,D.lstatSync)(a).isSymbolicLink()}catch{return a}if(!b)return a;try{return(0,D.realpathSync)(a)}catch{let b="(unreadable link)";try{b=(0,D.readlinkSync)(a)}catch{}throw new J(a,b)}}(a),h=(0,E.dirname)(g);(0,D.mkdirSync)(h,{recursive:!0});try{d=c.mode??(f?void 0:511&(0,D.statSync)(g).mode)}catch{d=c.mode}let i=(0,E.join)(h,`.${(0,E.basename)(g)}.failproofai-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{e=(0,D.openSync)(i,"wx",d??438);let a=Buffer.from(b,"utf8"),j=0;for(;j<a.length;)j+=(0,D.writeSync)(e,a,j,a.length-j);(0,D.fsyncSync)(e),(0,D.closeSync)(e),e=void 0,void 0!==d&&(0,D.chmodSync)(i,d),!1!==c.backup&&!f&&(0,D.existsSync)(g)&&function(a,b){let c=`${a}.failproofai-backup`,d=(0,E.join)(b,`.${(0,E.basename)(a)}.failproofai-backup-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{(0,D.copyFileSync)(a,d,D.constants.COPYFILE_EXCL),(0,D.renameSync)(d,c)}catch(a){throw(0,D.rmSync)(d,{force:!0}),a}}(g,h),(c.rename??D.renameSync)(i,g)}catch(a){if(void 0!==e)try{(0,D.closeSync)(e)}catch{}throw(0,D.rmSync)(i,{force:!0}),a}try{let a=(0,D.openSync)(h,"r");try{(0,D.fsyncSync)(a)}finally{(0,D.closeSync)(a)}}catch{}}var L=a.i(8284),M=a.i(68561);let N="# >>> failproofai managed hooks >>>",O="# <<< failproofai managed hooks <<<",P="0.129.0",Q=["PreToolUse","PermissionRequest","PostToolUse","PreCompact","PostCompact","SessionStart","SessionEnd","UserPromptSubmit","SubagentStart","SubagentStop","Stop","Interrupt"];function R(a){return`${a}.failproofai-backup`}function S(){try{let a=(0,C.execSync)("codex --version",{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3});return/(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(a)?.[1]??null}catch{return null}}function T(a){let b=RegExp(`^${U(N)}[ \\t]*$`,"m").exec(a);if(!b)return RegExp(`^${U(O)}[ \\t]*$`,"m").test(a)?"malformed":null;let c=RegExp(`^${U(O)}[ \\t]*$`,"mg");c.lastIndex=b.index+b[0].length;let d=c.exec(a);if(!d)return"malformed";let e=d.index+d[0].length;return"\r"===a[e]&&e++,"\n"===a[e]&&e++,{start:b.index,end:e}}function U(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(a,b){let c=T(a);if("malformed"===c)throw Error("failproofai's managed block is missing its begin or end marker");if(c){let d=a.slice(0,c.start),e=a.slice(c.end);return null!==b?d+b+e:(d.endsWith("\n\n")&&""===e?d.slice(0,-1):d)+e}return null===b?a:""===a?b:`${a}${a.endsWith("\n")?"\n":"\n\n"}${b}`}function W(a){let b;return void 0!==a.path?a.path:void 0!==(b=process.env.FAILPROOFAI_CODEX_SYSTEM_CONFIG)?""===b||"off"===b?null:(0,E.resolve)(b):"/etc/codex/config.toml"}function X(a){let b=(0,E.dirname)(a);for(;!(0,D.existsSync)(b);){let a=(0,E.dirname)(b);if(a===b)return!1;b=a}try{return(0,D.accessSync)(b,D.constants.W_OK),(0,D.existsSync)(a)&&(0,D.accessSync)(a,D.constants.W_OK),!0}catch{return!1}}function Y(a){try{return(511&(0,D.statSync)(a).mode).toString(8).padStart(4,"0")}catch{return"0644"}}function Z(a,b,c,d){if(d){K(a,b,{backup:!1}),(0,D.chmodSync)(a,parseInt(c,8));return}(0,L.p)("install",["-d","-m","0755",(0,E.dirname)(a)]),(0,L.C)(a,b,c)}function $(a,b){b?(0,D.rmSync)(a,{force:!0}):(0,L.p)("rm",["-f",a])}function _(a={}){let b=W(a);if(!b)return!1;try{var c;let a;return c=(0,D.readFileSync)(b,"utf8"),a=T(c),null!==a&&"malformed"!==a}catch{return!1}}function aa(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}let ab=new Set(["UserPromptSubmit","Stop","Interrupt"]);function ac(a,b){for(;b<a.length&&(" "===a[b]||" "===a[b]);)b++;return b}function ad(a,b){let c=[];for(;;){b=ac(a,b);let d=ae(a,b);if(d)c.push(d.value),b=d.end;else{let d=/^[A-Za-z0-9_-]+/.exec(a.slice(b));if(!d)return null;c.push(d[0]),b+=d[0].length}let e=ac(a,b);if("."!==a[e])return{path:c,end:b};b=e+1}}function ae(a,b){if("'"===a[b]){let c=a.indexOf("'",b+1);return c<0?null:{value:a.slice(b+1,c),end:c+1}}if('"'!==a[b])return null;let c="";for(let d=b+1;d<a.length;d++){let b=a[d];if('"'===b)return{value:c,end:d+1};if("\\"!==b){c+=b;continue}let e=a[++d],f={b:"\b",t:" ",n:"\n",f:"\f",r:"\r",'"':'"',"\\":"\\",e:"\x1b"};if(e in f)c+=f[e];else if("u"===e||"U"===e){let b="u"===e?4:8,f=a.slice(d+1,d+1+b);if(!/^[0-9A-Fa-f]+$/.test(f)||f.length!==b)return null;c+=String.fromCodePoint(parseInt(f,16)),d+=b}else break}return null}a.s(["s",0,"Codex won't run failproofai's hooks until they're trusted.\nRe-run `failproofai config` and allow sudo, or open `codex` once and approve the hooks.","c",0,function(a={}){let b=W(a);if(b&&_({path:b}))return{kind:"system",path:b};let c=a.hooksJsonPath??(0,E.resolve)((0,G.homedir)(),".codex","hooks.json"),d=function(a){let b;try{b=JSON.parse((0,D.readFileSync)(a,"utf8"))}catch{return[]}let c=b?.hooks;if(!c||"object"!=typeof c)return[];let d=[];for(let[b,e]of Object.entries(c))Array.isArray(e)&&e.forEach((c,e)=>{let f=c?.hooks;Array.isArray(f)&&f.forEach((f,g)=>{if(!function(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}(f))return;let h=c.matcher;d.push({key:`${a}:${aa(b)}:${e}:${g}`,hash:function(a,b,c){let d="SessionEnd"===a||"Interrupt"===a,e="number"==typeof c.timeout&&Number.isFinite(c.timeout)?Math.trunc(c.timeout):null,f=d?Math.min(3,Math.max(1,e??1)):Math.max(1,e??600),g={async:!0===c.async,command:"string"==typeof c.command?c.command:"",timeout:f,type:"command"};"string"==typeof c.statusMessage&&(g.statusMessage=c.statusMessage);let h=c.additionalContextLimit;"number"==typeof h&&2500!==h&&(g.additionalContextLimit=h);let i={event_name:aa(a),hooks:[g]};return null===b||ab.has(a)||(i.matcher=b),`sha256:${(0,I.createHash)("sha256").update(function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(b&&"object"==typeof b){let c=Object.entries(b).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)}(i)).digest("hex")}`}(b,"string"==typeof h?h:null,f)})})});return d}(c);if(0===d.length)return{kind:"none"};let e=(a.codexVersion??S)();if(e&&!function(a){if(!a)return!0;let b=(0,M.f)(a,P);return null===b||b>=0}(e))return{kind:"ungated",path:c,version:e};let f=new Map;try{f=function(a){let b=new Map,c=(a,c)=>{if(4===a.length&&"hooks"===a[0]&&"state"===a[1]&&"trusted_hash"===a[3]){let d=a[2].trim();d&&b.set(d,c)}},d=[],e=null;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(e){a.includes(e)&&(e=null);continue}let f=a.trimStart();if(f.startsWith("#")||""===f)continue;if(f.startsWith("[[")){let a=ad(f,2);d=a?[...a.path,"[]"]:["[]"];continue}if(f.startsWith("[")){let a=ad(f,1);d=a&&"]"===f[ac(f,a.end)]?a.path:["?"];continue}let g=ad(f,0);if(!g)continue;let h=ac(f,g.end);if("="!==f[h])continue;h=ac(f,h+1);let i=[...d,...g.path];if(f.startsWith('"""',h)||f.startsWith("'''",h)){let a=f.slice(h,h+3);f.slice(h+3).includes(a)||(e=a);continue}let j=ae(f,h);if(j){c(i,j.value);continue}if("{"===f[h]){let a=h+1;for(;;){a=ac(f,a);let b=ad(f,a);if(!b||(a=ac(f,b.end),"="!==f[a]))break;a=ac(f,a+1);let d=ae(f,a);if(d)c([...i,...b.path],d.value),a=d.end;else for(;a<f.length&&","!==f[a]&&"}"!==f[a];)a++;if(a=ac(f,a),","!==f[a])break;a++}}}return b}((0,D.readFileSync)(a.userConfigPath??(0,E.resolve)((0,G.homedir)(),".codex","config.toml"),"utf8"))}catch{}let g=d.filter(a=>f.get(a.key)!==a.hash).length;return 0===g?{kind:"trusted",path:c}:{kind:"untrusted",path:c,untrusted:g,total:d.length}},"j",0,_,"i",0,function(a,b={}){let c=W(b);if(!c)return{ok:!1,reason:"unsupported-platform"};let d=(b.codexVersion??S)();if(!d)return{ok:!1,reason:"codex-not-found",path:c};let e=(0,M.f)(d,P);if(null!==e&&e<0)return{ok:!1,reason:"codex-too-old",detail:d,path:c};let f="",g=(0,D.existsSync)(c);if(g)try{f=(0,D.readFileSync)(c,"utf8")}catch(a){return{ok:!1,reason:"unreadable",detail:a instanceof Error?a.message:String(a),path:c}}let h=T(f);if("malformed"===h)return{ok:!1,reason:"unreadable",detail:"failproofai's block has lost one of its markers",path:c};let i=function(a){let b=Q.join("|"),c=/^\s*hooks\s*=/,d=RegExp(`^\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(=|\\.)`),e=RegExp(`^\\s*\\[\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(\\]|\\.)`),f=RegExp(`^\\s*"?(${b})"?\\s*(=|\\.)`),g=!1;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(/^\s*\[\[/.test(a)){g=!1;continue}if(/^\s*\[/.test(a)){if(e.test(a))return a.trim();g=/^\s*\[\s*hooks\s*\]/.test(a);continue}if(c.test(a)||d.test(a)||g&&f.test(a))return a.trim()}return null}(h?f.slice(0,h.start)+f.slice(h.end):f);if(i)return{ok:!1,reason:"conflict",detail:i,path:c};let j=V(f,function(a){let b=[N,"# Written by failproofai. Codex runs hooks from its system config without","# asking to trust them. `failproofai uninstall` removes this block; edit","# outside the markers only, everything between them is replaced."];for(let c of a)b.push("",`[[hooks.${c.event}]]`,`[[hooks.${c.event}.hooks]]`,'type = "command"',`command = ${JSON.stringify(c.command)}`,`timeout = ${Math.trunc(c.timeout)}`);return b.push(O),`${b.join("\n")}
|
|
25
|
+
${n}`);if(l){let a=a=>a.default&&"tag:yaml.org,2002:str"!==a.tag&&a.test?.test(q),{compat:c,tags:d}=b.doc.schema;if(d.some(a)||c?.some(a))return j(i,b)}return m?q:f.foldFlowLines(q,n,f.FOLD_FLOW,g(b,!1))}(n,b,c,d);default:return null}},q=p(o);if(null===q){let{defaultKeyType:a,defaultStringType:c}=b.options,d=l&&a||c;if(null===(q=p(d)))throw Error(`Unsupported default string type ${d}`)}return q}},85927,(a,b,c)=>{var d=a.r(27267);let e=Symbol("break visit"),f=Symbol("skip children"),g=Symbol("remove node");function h(a,b){let c=l(b);d.isDocument(a)?i(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):i(null,a,c,Object.freeze([]))}function i(a,b,c,f){let h=m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),i(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=i(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=i("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=i("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}async function j(a,b){let c=l(b);d.isDocument(a)?await k(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):await k(null,a,c,Object.freeze([]))}async function k(a,b,c,f){let h=await m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),k(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=await k(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=await k("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=await k("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}function l(a){return"object"==typeof a&&(a.Collection||a.Node||a.Value)?Object.assign({Alias:a.Node,Map:a.Node,Scalar:a.Node,Seq:a.Node},a.Value&&{Map:a.Value,Scalar:a.Value,Seq:a.Value},a.Collection&&{Map:a.Collection,Seq:a.Collection},a):a}function m(a,b,c,e){return"function"==typeof c?c(a,b,e):d.isMap(b)?c.Map?.(a,b,e):d.isSeq(b)?c.Seq?.(a,b,e):d.isPair(b)?c.Pair?.(a,b,e):d.isScalar(b)?c.Scalar?.(a,b,e):d.isAlias(b)?c.Alias?.(a,b,e):void 0}function n(a,b,c){let e=b[b.length-1];if(d.isCollection(e))e.items[a]=c;else if(d.isPair(e))"key"===a?e.key=c:e.value=c;else if(d.isDocument(e))e.contents=c;else{let a=d.isAlias(e)?"alias":"scalar";throw Error(`Cannot replace node with ${a} parent`)}}h.BREAK=e,h.SKIP=f,h.REMOVE=g,j.BREAK=e,j.SKIP=f,j.REMOVE=g,c.visit=h,c.visitAsync=j},17280,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(9909),f=a.i(86304);let g="failproofai-pack.json",h="failproofai-pack.mjs",i="SHA256SUMS";function j(){return(process.env.FAILPROOFAI_PACK_BASE_URL||"https://github.com").replace(/\/+$/,"")}let k=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,l=/^[A-Za-z0-9][A-Za-z0-9._/-]{0,127}$/,m="FailproofAI/policies",n=new Set(["core","failproofai","official"]);function o(a){let b=a.trim();if(0===b.length)throw Error("pack source is empty");let c=b.match(/^(?:https?:\/\/)?(?:www\.)?github\.com\/(.+)$/i);if(c){let[a,b,...d]=c[1].replace(/\/+$/,"").split("/"),e=null;if("releases"===d[0]&&("tag"===d[1]||"download"===d[1])){let a=d.slice(2);e=("download"===d[1]?a.slice(0,-1):a).join("/")||null}else"releases"===d[0]&&"latest"===d[1]&&(e=null);return p(a,b,e)}let d=b.replace(/^github:/i,""),e=d.lastIndexOf("@"),f=e>0?d.slice(0,e):d,g=e>0?d.slice(e+1):null,h=f.indexOf("/");if(h<=0||h===f.length-1){if(n.has(f.trim().toLowerCase()))throw Error(`${JSON.stringify(a)} is no longer a pack name — ours is a pack like anyone else's now. Use ${m} instead.`);throw Error(`pack source must be owner/repo, owner/repo@tag, or a github.com URL — got ${JSON.stringify(a)}`)}return p(f.slice(0,h),f.slice(h+1),g)}function p(a,b,c){if(!a||!k.test(a))throw Error(`unsafe owner ${JSON.stringify(a)}`);if(!b||!k.test(b))throw Error(`unsafe repo ${JSON.stringify(b)}`);if(null!==c&&!l.test(c))throw Error(`unsafe tag ${JSON.stringify(c)}`);return{owner:a,repo:b,tag:c}}async function q(a){let b=`${j()}/${a.owner}/${a.repo}/releases/latest`,c=await fetch(b,{signal:AbortSignal.timeout(3e4),redirect:"manual"}),d=c.headers.get("location");if(!d)throw Error(`could not resolve the newest release of ${a.owner}/${a.repo} (GET ${b} returned ${c.status} with no redirect). That redirect is issued only for a published, non-prerelease release, so either the repository has no releases at all or every release it has is a prerelease or a draft. Name a tag explicitly.`);let e=d.match(/\/releases\/tag\/(.+)$/);if(!e)throw Error(`unexpected redirect from ${b}: ${d}`);let f=decodeURIComponent(e[1]).replace(/\/+$/,"");if(!l.test(f))throw Error(`unsafe tag ${JSON.stringify(f)} from ${b}`);return f}async function r(b,c){let d,e=c.toLowerCase(),f=`${(process.env.FAILPROOFAI_GITHUB_API??"https://api.github.com").replace(/\/+$/,"")}/repos/${b.owner}/${b.repo}/releases?per_page=100`;try{let a=(process.env.GITHUB_TOKEN||process.env.GH_TOKEN||"").trim(),b=await fetch(f,{headers:{...a?{Authorization:`Bearer ${a}`}:{},Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"failproofai"},signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${f} returned ${b.status}`);d=await b.json()}catch(a){throw Error(`could not resolve commit ${c} in ${b.owner}/${b.repo}: ${L(a)}. Name the release tag instead if you know it.`)}let{parseReleaseBody:g}=await a.A(49679),h=Array.isArray(d)?d:[],i=[];for(let a of h){let b="string"==typeof a.tag_name?a.tag_name:"";if(!b||!l.test(b))continue;let c=g("string"==typeof a.body?a.body:"");c.commit&&c.commit.startsWith(e)&&i.push({tag:b,commit:c.commit})}if(i.length>1)throw Error(`commit ${c} matches ${i.length} releases of ${b.owner}/${b.repo}: `+i.map(a=>`${a.tag} (${a.commit})`).join(", ")+". Name one of those tags, or type more of the commit.");return 1===i.length?i[0].tag:null}async function s(a){return null===a.tag?q(a):e.r.test(a.tag)?await r(a,a.tag)??a.tag:a.tag}function t(a){return`github:${a.owner}/${a.repo}@${a.tag}`}function u(a,b){return`${j()}/${a.owner}/${a.repo}/releases/download/${a.tag}/${b}`}async function v(a){let b=await fetch(a,{signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${a} returned ${b.status}`);let c=b.headers.get("content-length");if(null!==c){let d=Number(c);if(Number.isFinite(d)&&d>8388608)throw await b.body?.cancel(),Error(`${a} declares ${d} bytes, over the 8388608 limit`)}if(!b.body)return Buffer.alloc(0);let d=[],e=b.body.getReader(),f=0;try{for(;;){let{done:b,value:c}=await e.read();if(b)break;if((f+=c.byteLength)>8388608)throw await e.cancel(),Error(`${a} is over the 8388608 byte limit`);d.push(Buffer.from(c))}}finally{e.releaseLock()}return Buffer.concat(d,f)}function w(a,b){for(let c of a.split("\n")){let a=c.trim().match(/^([0-9a-f]{64})\s+\*?(.+)$/i);if(a&&a[2].trim()===b)return a[1].toLowerCase()}return null}function x(a){return(0,b.createHash)("sha256").update(a).digest("hex")}function y(a,b){let e=`${a}.${process.pid}.tmp`;try{(0,c.mkdirSync)((0,d.dirname)(a),{recursive:!0}),(0,c.writeFileSync)(e,b),(0,c.renameSync)(e,a)}catch(a){throw(0,c.rmSync)(e,{force:!0}),a}}function z(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} semantic is not an array`);if(b.length>e.P)throw Error(`pack ${a} declares ${b.length} semantic policies, over the cap of ${e.P}`);let c=b.map((b,c)=>(0,e.U)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);d.add(b.name)}return c}function A(a,b){let c=(0,e.T)(a,b);if("too-old"===c.kind)throw Error(c.reason);return"unreadable"===c.kind?{minCliVersionNote:c.reason}:c.declared?{minCliVersion:c.declared}:{}}async function B(a,b={}){let c=await I(a,b);return{id:c.id,version:c.version,enabled:c.enabled,available:c.available,bundled:!1,source:c.source,tag:c.tag,resolvedFromLatest:c.resolvedFromLatest,selection:c.selection,categories:c.categories}}async function C(a){let b;if("1"===process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("FAILPROOFAI_NO_DOWNLOAD is set, so nothing can be fetched to preview");let c=o(a),d=null===c.tag,f={...c,tag:await s(c)},h=(await v(u(f,i))).toString("utf8"),j=await v(u(f,g)),k=w(h,g);if(!k)throw Error(`${i} has no entry for ${g}`);if(x(j)!==k)throw Error(`${g} failed integrity verification`);try{b=JSON.parse(j.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let l=b,m=(0,e.$)(l),n=A(m.id,l.minCliVersion),p=z(m.id,l.semantic),q=D(m.id,l.policies);return E(q,p),{id:m.id,version:m.version,effect:m.effect,...m.commit?{commit:m.commit}:{},policies:q,semantic:p,...n,source:t(f),resolvedFromLatest:d}}function D(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} policies is not an array`);let c=b.map((b,c)=>(0,e.Z)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares ${b.name} twice`);d.add(b.name)}return c}function E(a,b){if(0===a.length&&0===b.length)throw Error("pack manifest declares no policies")}async function F(a){let b,c=(await v(u(a,i))).toString("utf8"),d=await v(u(a,g)),f=w(c,g);if(!f)throw Error(`${i} has no entry for ${g}`);if(x(d)!==f)throw Error(`${g} failed integrity verification`);let j=await v(u(a,h)),k=w(c,h);if(!k)throw Error(`${i} has no entry for ${h}`);let l=x(j);if(l!==k)throw Error(`${h} failed integrity verification`);try{b=JSON.parse(d.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let m=b,n=(0,e.$)(m),o=A(n.id,m.minCliVersion),p=D(n.id,m.policies),q=z(n.id,m.semantic);return E(p,q),{id:n.id,version:n.version,policies:p,semantic:q,...o,...void 0!==m.effect?{effect:n.effect}:{},...n.commit?{commit:n.commit}:{},artifact:j,artifactDigest:l}}function G(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}async function H(b,c){let d,{loadCustomHooks:e}=await a.A(6188);try{d=(await e(b,{strict:!0})).map(a=>a.name)}catch(a){throw Error(`its artifact could not be loaded: ${a instanceof Error?a.message:String(a)}`)}let f=c.filter(a=>!d.includes(a)),g=d.filter(a=>!c.includes(a));if(f.length>0)throw Error(`its manifest declares ${f.join(", ")} but the artifact does not register ${1===f.length?"it":"them"} — that would install as protection that never runs`);if(g.length>0)throw Error(`its artifact registers undeclared ${g.join(", ")} — a policy that enforces but appears in no listing cannot be reviewed or switched off`)}async function I(a,b){var g,h,i,j;let k,l;if(process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("pack downloads are disabled (FAILPROOFAI_NO_DOWNLOAD). Already-installed packs keep enforcing.");let m=o(a),n={...m,tag:await s(m)},p=null===m.tag,q=await F(n);if(g=n.tag,h=q.version,(k=g.slice(g.lastIndexOf("/")+1))!==h&&k!==`v${h}`){let a=n.tag.slice(n.tag.lastIndexOf("/")+1).replace(/^v/,""),b=`re-tag the release ${q.version} (a leading v is fine), or rebuild the pack with --version ${a}`;throw Error(`${q.id} was not installed: release tag ${n.tag} does not match the version its manifest declares (${q.version}). `+(p?`That is the newest release of ${n.owner}/${n.repo}, so the release and the pack disagree at the source — ask the publisher to ${b}.`:`Name the tag whose manifest says ${q.version}, or fix the pack: ${b}.`))}if(/^failproofai\//i.test(q.id)&&!(0,f.g)({source:t(n)}))throw Error(`${q.id} was not installed: the FailproofAI/ namespace is reserved for releases from github.com/FailproofAI, and this one came from ${n.owner}/${n.repo}.`);let r=q.policies.map(a=>a.name),u=(i=q.id,j=q.artifactDigest,(l=(0,e.V)().packs).find(a=>a.id===i)??l.find(a=>a.sha256===j)),{enabled:v,reason:w}=function(a,b,c,d){let e=a.map(a=>a.name);if(b?.all)return{enabled:null,reason:"all"};let f=new Set;if(b?.categories?.length){let c=new Set(b.categories.map(G)),d=new Map(a.map(a=>[G(a.category),a.category])),e=[...c].filter(a=>!d.has(a));if(e.length>0)throw Error(`no such categor${1===e.length?"y":"ies"}: ${e.join(", ")} (has: ${[...new Set(a.map(a=>G(a.category)))].join(", ")})`);for(let b of a)c.has(G(b.category))&&f.add(b.name)}if(b?.only?.length){let a=b.only.filter(a=>!e.includes(a));if(a.length>0)throw Error(`pack does not contain ${a.join(", ")}`);for(let a of b.only)f.add(a)}if(b?.only!==void 0||b?.categories?.length){if(b.merge&&d){if(null===c)return{enabled:null,reason:"carried"};for(let a of c??[])f.add(a);return{enabled:e.filter(a=>f.has(a)),reason:"added"}}return{enabled:e.filter(a=>f.has(a)),reason:"selected"}}return d?{enabled:null===c?null:c??null,reason:"carried"}:{enabled:a.filter(a=>a.defaultEnabled).map(a=>a.name),reason:"defaults"}}(q.policies,b,u?.enabled?u.enabled.filter(a=>r.includes(a)):u?.enabled,!!u),x=(0,e.N)(),z=`artifacts/${q.artifactDigest}.mjs`,A=(0,d.resolve)(x,z);(0,c.existsSync)(A)||y(A,q.artifact);try{await H(A,r)}catch(a){throw Error(`${q.id}@${q.version} was not installed: ${a instanceof Error?a.message:String(a)}`)}let B=a=>{let b=a.lastIndexOf("@");return b>a.indexOf(":")?a.slice(0,b):a};if(u&&u.id===q.id&&!u.source.startsWith("bundled:")&&B(u.source)!==B(t(n)))throw Error(`pack id ${q.id} is already installed from ${u.source}. Refusing to replace it with ${t(n)} — remove it first if that is what you mean.`);let C={id:q.id,version:q.version,source:t(n),entry:z,sha256:q.artifactDigest,policies:q.policies,...q.semantic.length>0?{semantic:q.semantic}:{},...q.minCliVersion?{minCliVersion:q.minCliVersion}:{},...q.commit?{commit:q.commit}:{},...q.effect?{effect:q.effect}:{},...v?{enabled:v}:{},...b?.clis?{clis:b.clis}:b?.merge!==!1&&u?.clis?{clis:u.clis}:{}};return{replaced:function(a,b=!0){let f=(0,d.resolve)((0,e.N)(),"installed.json"),g=[];if((0,c.existsSync)(f))try{let a=JSON.parse((0,c.readFileSync)(f,"utf8"));Array.isArray(a.packs)&&(g=a.packs)}catch{throw Error(`existing pack manifest at ${f} is unreadable; move it aside and re-add`)}let h=g.filter(b=>b?.sha256===a.sha256&&b?.id!==a.id).map(a=>a.id);if(b&&!a.enabled){let b=g.find(a=>h.includes(a?.id)),c=b?.enabled?.filter(b=>a.policies?.some(a=>a?.name===b));c&&c.length>0&&(a.enabled=c)}let i=g.filter(a=>!h.includes(a?.id)),j=i.findIndex(b=>b?.id===a.id);return j>=0?i[j]=a:i.push(a),y(f,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),h}(C,"all"!==w),id:q.id,version:q.version,source:C.source,tag:n.tag,resolvedFromLatest:p,enabled:v??r,available:r,selection:w,categories:[...new Set(q.policies.map(a=>G(a.category)))],semantic:q.semantic.length,...q.minCliVersionNote?{minCliVersionNote:q.minCliVersionNote}:{},...q.effect?{effect:q.effect}:{},...C.clis?{clis:C.clis}:{},artifact:A}}function J(a){let b=a.trim(),c=b.lastIndexOf("@");return(c>0?b.slice(0,c):b).trim()}class K extends Error{candidates;constructor(a,b){super(`${b} matches ${a.length} installed packs: ${a.join(", ")}. Name one of them exactly.`),this.candidates=a,this.name="AmbiguousPackId"}}function L(a){return a instanceof Error?a.message:String(a)}a.s(["w",0,m,"U",0,i,"Z",0,h,"v",0,g,"I",0,I,"z",0,B,"k",0,C,"R",0,function(a){let b,f=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(f))return null;try{b=JSON.parse((0,c.readFileSync)(f,"utf8"))}catch{return null}let g=Array.isArray(b.packs)?b.packs:[],h=g.find(b=>b?.id===J(a)),i=g.filter(b=>{var c;return b?.id&&(c=b.id,J(c).toLowerCase()===J(a).toLowerCase())});if(!h&&i.length>1)throw new K(i.map(a=>a.id).filter(a=>"string"==typeof a),a);let j=h??i[0],k=g.filter(a=>a!==j);return j&&k.length!==g.length?(y(f,JSON.stringify({schemaVersion:1,packs:k},null,2)+"\n"),j.id):null},"g",0,function(a,b,f){let g,h=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(h))return{ok:!1,reason:"no packs are installed"};try{g=JSON.parse((0,c.readFileSync)(h,"utf8"))}catch{return{ok:!1,reason:`pack manifest at ${h} is unreadable`}}let i=Array.isArray(g.packs)?g.packs:[],j=i.find(b=>b?.id===a);if(!j)return{ok:!1,reason:`no installed pack with id ${a}`};let k=(Array.isArray(j.policies)?j.policies:[]).map(a=>"string"==typeof a?.name?a.name:null).filter(a=>null!==a);if(!k.includes(b))return{ok:!1,reason:`pack ${a} declares no policy named ${b}`};let l=j.enabled??k,m=f?[...new Set([...l,b])]:l.filter(a=>a!==b);return j.enabled=k.filter(a=>m.includes(a)),y(h,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),{ok:!0}}])},1459,a=>{var b=a.i(1457),c=a.i(12072);let d={rgb:[102,209,181],c256:79,basic:"36"},e={rgb:[228,88,125],c256:168,basic:"95"},f={rgb:[227,179,65],c256:179,basic:"33"},g={rgb:[107,118,132],basic:"2"},h={rgb:[118,127,139],basic:"2"},i={rgb:[62,67,76],basic:"2"},j={rgb:[240,113,120],c256:203,basic:"31"};function k(a){return!!a.isTTY&&!process.env.NO_COLOR}let l="\x1b[0m";function m(){return/truecolor|24bit/i.test(process.env.COLORTERM||"")?"truecolor":/256color/i.test(process.env.TERM||"")?"ansi256":"basic"}function n(a,b){return"truecolor"===b?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:"ansi256"===b&&void 0!==a.c256?`38;5;${a.c256}`:a.basic}let o=["...tt........","..tttt.......",".tttttt..pppp",".tttttt..pppp","..tttt...pppp","...tt....pppp",".........pppp",".........pppp","..pppp...pppp","..pppp...pppp","..pppp...pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp","..pppp...pppp","..ppppppppppp","..ppppppppppp","..ppppppppppp","..ppppppppppp"];function p(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}function q(a,b,c,d={}){let e=a.columns||80,f=d.cut??!0,g=c.map(a=>""!==a&&f?p(a,e):a).join("\n")+"\n",h=b.lastCount>0?`\x1b[${b.lastCount}A\x1b[J`:"";a.write(`\x1b[?2026h${d.lead??""}${h}${g}${d.tail??""}\x1b[?2026l`),b.lastCount=c.length}function r(a){let b=0,c=0;for(;c<a.length;)if("\x1b"===a[c]&&"["===a[c+1]){let b=c+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;c=b+1}else b++,c++;return b}function s(a){let b=[],c="",d=0;for(;d<a.length;)if("\x1b"===a[d]&&"["===a[d+1]){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;let e=a.slice(d,b+1);c=/\[0?m$/.test(e)?"":c+e,d=b+1}else b.push({ch:a[d],active:c}),d++;return b}function t(a){let b="",c="";for(let d of a)d.active!==c&&(c&&(b+=l),b+=d.active,c=d.active),b+=d.ch;return c?b+l:b}function u(a,b,c="left"){let d=Math.max(0,b-r(a));return"right"===c?" ".repeat(d)+a:a+" ".repeat(d)}Symbol("failproofai.back"),Symbol("failproofai.open-source"),Object.values({on:"✓ ON",off:"· OFF",mixed:"◐ MIXED",locked:"✓ LOCK",cloud:"✓ CLOUD",pack:"✓ PACK",failed:"▲ FAIL",observe:"◉ OBS"}).map(a=>a.length),a.s(["J",0," ","v",0,k,"w",0,function(a=process.stdout){return{cols:a.columns||80,color:k(a)}},"m",0,function(a={}){var k;let v,w,{cols:x,c:y}={cols:Math.max(20,a?.cols??80),c:(v=(k=a?.color??!1)?m():"basic",{bold:a=>k?`\x1b[1m${a}\x1b[0m`:a,dim:(w=(a,b=!1)=>c=>k?`\x1b[${b?"1;":""}${n(a,v)}m${c}\x1b[0m`:c)(g),guide:w(d),pink:w(e),pinkBold:w(e,!0),softPink:w(e),warn:w(f),ink2:a=>a,ink3:w(h),track:w(i),err:w(j)})},z=a.color??!1,A=a.version??c.version,B=y.ink3(" · "),C=(a,b)=>b?a(b):"",D=a=>y.pink(a),E=y.guide("●"),F=y.ink3("○"),G=y.err("✕"),H=y.pink("■"),I=y.ink3("□"),J=a=>`${y.bold("fa")}${y.pinkBold("il")}${y.bold("proof ai")} ${y.ink3(`v${A}`)}`+(a?`${B}${a}`:""),K=(a,b)=>y.bold(a.toUpperCase())+(b?` ${y.ink3(b)}`:""),L=(b,c=0)=>{let d=Math.max(c,...b.map(([a,b])=>b?r(a)+2:0));return b.map(([b,c])=>{let e,f;if(!c)return` ${b}`;let g=` ${u(b,d)}`;return g+(e=y.ink2(c),f=x-r(g),a.fit&&r(e)>f?function(a,b){var c;if(r(a)<=b)return a;if(a.includes("\x1b")){let d,e;return b<=1?"…":`${(e=(d=s(c=p(a,b-1)))[d.length-1])&&e.active?c+l:c}…`}return b<=0?"":a.length<=b?a:a.slice(0,b-1).trimEnd()+"…"}(e,Math.max(1,f)):e)})};return{cols:x,sep:B,cmd:D,on:E,off:F,failed:G,selected:H,unselected:I,meta:a=>C(y.ink3,a),header:J,head:K,rows:L,kv:(a,b=9)=>{let c=Math.max(b,...a.map(([a])=>r(a)))+2;return a.map(([a,b])=>b?` ${u(C(y.ink3,a),c)}${b}`:` ${C(y.ink3,a)}`)},ok:(a,b)=>`${y.guide("✓")} ${a}${b?` ${y.ink3(b)}`:""}`,caution:(a,b)=>`${y.warn("▲")} ${a}${b?`${B}${D(b)}`:""}`,fail:(a,b)=>`${y.err("✕")} ${a}${b?`${B}${D(b)}`:""}`,notice:(a,b)=>{let c=a=>(a.split("`").length-1)%2==0?a.replace(/`([^`]+)`/g,(a,b)=>D(b)):a,d="ok"===a?y.guide("✓"):"caution"===a?y.warn("▲"):y.err("✕"),[e="",...f]=b.split("\n");return[`${d} ${c(e)}`,...f.map(a=>""===a.trim()?"":` ${c(a)}`)]},confirm:(a,c="Continue?")=>new Promise(d=>{let{stdin:e,stdout:f}=a,g="",h=!1,i=e.isRaw,j=a=>{h||(h=!0,e.removeListener("keypress",l),e.removeListener("end",k),e.setRawMode?.(i??!1),e.pause(),f.write("\n"),d(a))};function k(){j(!1)}function l(a,b){let c=b?.name;b?.ctrl&&("c"===c||"d"===c)||"escape"===c?j(!1):"return"===c||"enter"===c?j(/^y(es)?$/i.test(g.trim())):"backspace"===c?g&&(g=g.slice(0,-1),f.write("\b \b")):a&&1===a.length&&a>=" "&&!b?.ctrl&&!b?.meta&&(g+=a,f.write(a))}f.write(`${c} ${y.ink3("y/N")} `),b.emitKeypressEvents(e),e.setRawMode?.(!0),e.on("keypress",l),e.on("end",k),e.resume()}),keys:a=>y.ink3(a.join(" · ")),bar:(a,b)=>{let c=Math.round(Math.max(0,Math.min(1,b))*a),d=Math.max(0,a-c);return C(y.pink,"━".repeat(c))+(z?C(y.track,"━".repeat(d)):" ".repeat(d))},logo:()=>x<22?[]:(function(a){let b=".".repeat(o[0]?.length??0),c=a=>"t"===a?d:"p"===a?e:null,f=[];for(let d=0;d<o.length;d+=2){let e=o[d],g=o[d+1]??b,h="";for(let b=0;b<e.length;b++){let d=c(e[b]),f=c(g[b]);if(d||f)if("basic"===a)h+=d&&f?"█":d?"▀":"▄";else if(d&&f)h+=d===f?`\x1b[${n(d,a)}m█\x1b[0m`:`\x1b[${n(d,a)};${"ansi256"===a&&void 0!==f.c256?`48;5;${f.c256}`:`48;2;${f.rgb[0]};${f.rgb[1]};${f.rgb[2]}`}m▀\x1b[0m`;else d?h+=`\x1b[${n(d,a)}m▀\x1b[0m`:h+=`\x1b[${n(f,a)}m▄\x1b[0m`;else h+=" "}f.push(h)}return f})(z?m():"basic").map(a=>` ${a}`),helpPage:b=>{var c;let d,e=[J(b.name),"",K("Usage"),...L(b.usage)];return b.options?.length&&e.push("",K("Options"),...(c=b.options,d=Math.max(b.optionsCol??0,...c.map(([a,b])=>b?r(a)+2:0)),c.flatMap(([b,c])=>{if(!c)return[` ${b}`];let e=` ${u(b,d)}`,f=x-r(e);if(!a.fit||r(c)<=f)return[e+y.ink2(c)];let g=" ".repeat(r(e));return(function(a,b){if(b<=0)return[a];if(!a.includes("\x1b")){if(b<=0)return[a];let c=a.split(/\s+/).filter(Boolean);if(0===c.length)return[];let d=[],e="";for(let a of c)e?e.length+1+a.length<=b?e+=` ${a}`:(d.push(e),e=a):e=a;return e&&d.push(e),d}let c=[],d=[];for(let b of s(a))/\s/.test(b.ch)?(d.length>0&&c.push(d),d=[]):d.push(b);d.length>0&&c.push(d);let e=[],f=[];for(let a of c){if(f.length>0&&f.length+1+a.length>b){e.push(t(f)),f=[...a];continue}f.length>0&&f.push({ch:" ",active:f[f.length-1].active}),f.push(...a)}return f.length>0&&e.push(t(f)),e})(c,Math.max(1,f)).map((a,b)=>(0===b?e:g)+y.ink2(a))}))),b.examples?.length&&e.push("",K("Examples"),...b.examples.map(a=>` ${D(a)}`)),e},live:a=>{let b={lastCount:0},c=0,d=null,e=null,f=!1,g=!1,h=()=>{a.write("\x1b[?25h")},i=()=>{process.removeListener("exit",h),process.removeListener("SIGINT",j),process.removeListener("SIGTERM",j)},j=a=>{g=!0,e&&clearTimeout(e),i(),h(),process.kill(process.pid,a)},k=()=>{e=null;let i=d;if(d=null,!i||g)return;c=Date.now();let k="";f||(f=!0,k="\x1b[?25l",process.once("exit",h),process.on("SIGINT",j),process.on("SIGTERM",j)),q(a,b,i(),{lead:k})};return{draw(a){if(g||(d=a,e))return;let b=c+100-Date.now();b<=0?k():(e=setTimeout(k,b),e.unref?.())},done(c){g||(g=!0,e&&clearTimeout(e),e=null,d=null,i(),q(a,b,c,{cut:!1,tail:f?"\x1b[?25h":""}))}}}}}])},91997,80504,67121,a=>{let b=["user","project","local"],c=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],d=["user","project"],e=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],f={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"},g=["user"],h=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],i=["user","project"],j=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],k=["user","project"],l=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],m=["user","project"],n=["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],o=["user","project"],p=["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],q=["user"],r=["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],s=["user","project"],t=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],u=["user","project"],v=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],w=["user","project"],x=["PreToolUse","PostToolUse","PreInvocation","Stop"],y=["user","project"],z=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],A=["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),B="__failproofai_hook__";a.s(["X",0,x,"m",0,w,"I",0,A,"p",0,f,"W",0,e,"L",0,d,"d",0,j,"w",0,i,"s",0,l,"Y",0,k,"D",0,v,"c",0,u,"n",0,t,"B",0,s,"Z",0,B,"i",0,z,"x",0,y,"y",0,h,"M",0,g,"F",0,b,"z",0,c,"P",0,r,"E",0,q,"e",0,n,"O",0,m,"J",0,p,"G",0,o],91997);var C=a.i(74533),D=a.i(2157),E=a.i(50227),F=a.i(57764),G=a.i(60526),H=a.i(22650),I=a.i(66680);class J extends Error{path;target;constructor(a,b){super(`Refusing to write ${a}: it is a symlink to ${b}, which does not exist. Fix or remove the link, then retry — failproofai will not replace it with a regular file.`),this.path=a,this.target=b,this.name="DanglingConfigSymlinkError"}}function K(a,b,c={}){let d,e,f="replace"===c.symlinks&&function(a){try{return(0,D.lstatSync)(a).isSymbolicLink()}catch{return!1}}(a),g="replace"===c.symlinks?a:function(a){let b=!1;try{b=(0,D.lstatSync)(a).isSymbolicLink()}catch{return a}if(!b)return a;try{return(0,D.realpathSync)(a)}catch{let b="(unreadable link)";try{b=(0,D.readlinkSync)(a)}catch{}throw new J(a,b)}}(a),h=(0,E.dirname)(g);(0,D.mkdirSync)(h,{recursive:!0});try{d=c.mode??(f?void 0:511&(0,D.statSync)(g).mode)}catch{d=c.mode}let i=(0,E.join)(h,`.${(0,E.basename)(g)}.failproofai-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{e=(0,D.openSync)(i,"wx",d??438);let a=Buffer.from(b,"utf8"),j=0;for(;j<a.length;)j+=(0,D.writeSync)(e,a,j,a.length-j);(0,D.fsyncSync)(e),(0,D.closeSync)(e),e=void 0,void 0!==d&&(0,D.chmodSync)(i,d),!1!==c.backup&&!f&&(0,D.existsSync)(g)&&function(a,b){let c=`${a}.failproofai-backup`,d=(0,E.join)(b,`.${(0,E.basename)(a)}.failproofai-backup-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{(0,D.copyFileSync)(a,d,D.constants.COPYFILE_EXCL),(0,D.renameSync)(d,c)}catch(a){throw(0,D.rmSync)(d,{force:!0}),a}}(g,h),(c.rename??D.renameSync)(i,g)}catch(a){if(void 0!==e)try{(0,D.closeSync)(e)}catch{}throw(0,D.rmSync)(i,{force:!0}),a}try{let a=(0,D.openSync)(h,"r");try{(0,D.fsyncSync)(a)}finally{(0,D.closeSync)(a)}}catch{}}var L=a.i(8284),M=a.i(68561);let N="# >>> failproofai managed hooks >>>",O="# <<< failproofai managed hooks <<<",P="0.129.0",Q=["PreToolUse","PermissionRequest","PostToolUse","PreCompact","PostCompact","SessionStart","SessionEnd","UserPromptSubmit","SubagentStart","SubagentStop","Stop","Interrupt"];function R(a){return`${a}.failproofai-backup`}function S(){try{let a=(0,C.execSync)("codex --version",{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3});return/(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(a)?.[1]??null}catch{return null}}function T(a){let b=RegExp(`^${U(N)}[ \\t]*$`,"m").exec(a);if(!b)return RegExp(`^${U(O)}[ \\t]*$`,"m").test(a)?"malformed":null;let c=RegExp(`^${U(O)}[ \\t]*$`,"mg");c.lastIndex=b.index+b[0].length;let d=c.exec(a);if(!d)return"malformed";let e=d.index+d[0].length;return"\r"===a[e]&&e++,"\n"===a[e]&&e++,{start:b.index,end:e}}function U(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(a,b){let c=T(a);if("malformed"===c)throw Error("failproofai's managed block is missing its begin or end marker");if(c){let d=a.slice(0,c.start),e=a.slice(c.end);return null!==b?d+b+e:(d.endsWith("\n\n")&&""===e?d.slice(0,-1):d)+e}return null===b?a:""===a?b:`${a}${a.endsWith("\n")?"\n":"\n\n"}${b}`}function W(a){let b;return void 0!==a.path?a.path:void 0!==(b=process.env.FAILPROOFAI_CODEX_SYSTEM_CONFIG)?""===b||"off"===b?null:(0,E.resolve)(b):"/etc/codex/config.toml"}function X(a){let b=(0,E.dirname)(a);for(;!(0,D.existsSync)(b);){let a=(0,E.dirname)(b);if(a===b)return!1;b=a}try{return(0,D.accessSync)(b,D.constants.W_OK),(0,D.existsSync)(a)&&(0,D.accessSync)(a,D.constants.W_OK),!0}catch{return!1}}function Y(a){try{return(511&(0,D.statSync)(a).mode).toString(8).padStart(4,"0")}catch{return"0644"}}function Z(a,b,c,d){if(d){K(a,b,{backup:!1}),(0,D.chmodSync)(a,parseInt(c,8));return}(0,L.p)("install",["-d","-m","0755",(0,E.dirname)(a)]),(0,L.C)(a,b,c)}function $(a,b){b?(0,D.rmSync)(a,{force:!0}):(0,L.p)("rm",["-f",a])}function _(a={}){let b=W(a);if(!b)return!1;try{var c;let a;return c=(0,D.readFileSync)(b,"utf8"),a=T(c),null!==a&&"malformed"!==a}catch{return!1}}function aa(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}let ab=new Set(["UserPromptSubmit","Stop","Interrupt"]);function ac(a,b){for(;b<a.length&&(" "===a[b]||" "===a[b]);)b++;return b}function ad(a,b){let c=[];for(;;){b=ac(a,b);let d=ae(a,b);if(d)c.push(d.value),b=d.end;else{let d=/^[A-Za-z0-9_-]+/.exec(a.slice(b));if(!d)return null;c.push(d[0]),b+=d[0].length}let e=ac(a,b);if("."!==a[e])return{path:c,end:b};b=e+1}}function ae(a,b){if("'"===a[b]){let c=a.indexOf("'",b+1);return c<0?null:{value:a.slice(b+1,c),end:c+1}}if('"'!==a[b])return null;let c="";for(let d=b+1;d<a.length;d++){let b=a[d];if('"'===b)return{value:c,end:d+1};if("\\"!==b){c+=b;continue}let e=a[++d],f={b:"\b",t:" ",n:"\n",f:"\f",r:"\r",'"':'"',"\\":"\\",e:"\x1b"};if(e in f)c+=f[e];else if("u"===e||"U"===e){let b="u"===e?4:8,f=a.slice(d+1,d+1+b);if(!/^[0-9A-Fa-f]+$/.test(f)||f.length!==b)return null;c+=String.fromCodePoint(parseInt(f,16)),d+=b}else break}return null}a.s(["s",0,"Codex won't run failproofai's hooks until they're trusted.\nRe-run `failproofai config` and allow sudo, or open `codex` once and approve the hooks.","c",0,function(a={}){let b=W(a);if(b&&_({path:b}))return{kind:"system",path:b};let c=a.hooksJsonPath??(0,E.resolve)((0,G.homedir)(),".codex","hooks.json"),d=function(a){let b;try{b=JSON.parse((0,D.readFileSync)(a,"utf8"))}catch{return[]}let c=b?.hooks;if(!c||"object"!=typeof c)return[];let d=[];for(let[b,e]of Object.entries(c))Array.isArray(e)&&e.forEach((c,e)=>{let f=c?.hooks;Array.isArray(f)&&f.forEach((f,g)=>{if(!function(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}(f))return;let h=c.matcher;d.push({key:`${a}:${aa(b)}:${e}:${g}`,hash:function(a,b,c){let d="SessionEnd"===a||"Interrupt"===a,e="number"==typeof c.timeout&&Number.isFinite(c.timeout)?Math.trunc(c.timeout):null,f=d?Math.min(3,Math.max(1,e??1)):Math.max(1,e??600),g={async:!0===c.async,command:"string"==typeof c.command?c.command:"",timeout:f,type:"command"};"string"==typeof c.statusMessage&&(g.statusMessage=c.statusMessage);let h=c.additionalContextLimit;"number"==typeof h&&2500!==h&&(g.additionalContextLimit=h);let i={event_name:aa(a),hooks:[g]};return null===b||ab.has(a)||(i.matcher=b),`sha256:${(0,I.createHash)("sha256").update(function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(b&&"object"==typeof b){let c=Object.entries(b).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)}(i)).digest("hex")}`}(b,"string"==typeof h?h:null,f)})})});return d}(c);if(0===d.length)return{kind:"none"};let e=(a.codexVersion??S)();if(e&&!function(a){if(!a)return!0;let b=(0,M.f)(a,P);return null===b||b>=0}(e))return{kind:"ungated",path:c,version:e};let f=new Map;try{f=function(a){let b=new Map,c=(a,c)=>{if(4===a.length&&"hooks"===a[0]&&"state"===a[1]&&"trusted_hash"===a[3]){let d=a[2].trim();d&&b.set(d,c)}},d=[],e=null;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(e){a.includes(e)&&(e=null);continue}let f=a.trimStart();if(f.startsWith("#")||""===f)continue;if(f.startsWith("[[")){let a=ad(f,2);d=a?[...a.path,"[]"]:["[]"];continue}if(f.startsWith("[")){let a=ad(f,1);d=a&&"]"===f[ac(f,a.end)]?a.path:["?"];continue}let g=ad(f,0);if(!g)continue;let h=ac(f,g.end);if("="!==f[h])continue;h=ac(f,h+1);let i=[...d,...g.path];if(f.startsWith('"""',h)||f.startsWith("'''",h)){let a=f.slice(h,h+3);f.slice(h+3).includes(a)||(e=a);continue}let j=ae(f,h);if(j){c(i,j.value);continue}if("{"===f[h]){let a=h+1;for(;;){a=ac(f,a);let b=ad(f,a);if(!b||(a=ac(f,b.end),"="!==f[a]))break;a=ac(f,a+1);let d=ae(f,a);if(d)c([...i,...b.path],d.value),a=d.end;else for(;a<f.length&&","!==f[a]&&"}"!==f[a];)a++;if(a=ac(f,a),","!==f[a])break;a++}}}return b}((0,D.readFileSync)(a.userConfigPath??(0,E.resolve)((0,G.homedir)(),".codex","config.toml"),"utf8"))}catch{}let g=d.filter(a=>f.get(a.key)!==a.hash).length;return 0===g?{kind:"trusted",path:c}:{kind:"untrusted",path:c,untrusted:g,total:d.length}},"j",0,_,"i",0,function(a,b={}){let c=W(b);if(!c)return{ok:!1,reason:"unsupported-platform"};let d=(b.codexVersion??S)();if(!d)return{ok:!1,reason:"codex-not-found",path:c};let e=(0,M.f)(d,P);if(null!==e&&e<0)return{ok:!1,reason:"codex-too-old",detail:d,path:c};let f="",g=(0,D.existsSync)(c);if(g)try{f=(0,D.readFileSync)(c,"utf8")}catch(a){return{ok:!1,reason:"unreadable",detail:a instanceof Error?a.message:String(a),path:c}}let h=T(f);if("malformed"===h)return{ok:!1,reason:"unreadable",detail:"failproofai's block has lost one of its markers",path:c};let i=function(a){let b=Q.join("|"),c=/^\s*hooks\s*=/,d=RegExp(`^\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(=|\\.)`),e=RegExp(`^\\s*\\[\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(\\]|\\.)`),f=RegExp(`^\\s*"?(${b})"?\\s*(=|\\.)`),g=!1;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(/^\s*\[\[/.test(a)){g=!1;continue}if(/^\s*\[/.test(a)){if(e.test(a))return a.trim();g=/^\s*\[\s*hooks\s*\]/.test(a);continue}if(c.test(a)||d.test(a)||g&&f.test(a))return a.trim()}return null}(h?f.slice(0,h.start)+f.slice(h.end):f);if(i)return{ok:!1,reason:"conflict",detail:i,path:c};let j=V(f,function(a){let b=[N,"# Written by failproofai. Codex runs hooks from its system config without","# asking to trust them. `failproofai uninstall` removes this block; edit","# outside the markers only, everything between them is replaced."];for(let c of a)b.push("",`[[hooks.${c.event}]]`,`[[hooks.${c.event}.hooks]]`,'type = "command"',`command = ${JSON.stringify(c.command)}`,`timeout = ${Math.trunc(c.timeout)}`);return b.push(O),`${b.join("\n")}
|
|
26
26
|
`}(a));if(j===f)return{ok:!0,path:c,changed:!1};let k=X(c);if(!k&&!(b.canElevate??L.e)())return{ok:!1,reason:"no-root",path:c};try{let a=g?Y(c):"0644",b=R(c);!g||h||(0,D.existsSync)(b)||Z(b,f,a,k),Z(c,j,a,k)}catch(a){return{ok:!1,reason:"write-failed",detail:a instanceof Error?a.message:String(a),path:c}}return{ok:!0,path:c,changed:!0}},"g",0,function(a={}){let b,c=W(a);if(!c||!(0,D.existsSync)(c))return{status:"absent"};try{b=(0,D.readFileSync)(c,"utf8")}catch(a){return{status:"failed",path:c,reason:a instanceof Error?a.message:String(a)}}let d=T(b);if(null===d)return{status:"absent"};if("malformed"===d)return{status:"failed",path:c,reason:"one of failproofai's markers is missing; remove the block by hand"};let e=(b.slice(d.start,d.end).match(/^\[\[hooks\.[A-Za-z]+\.hooks\]\]/gm)??[]).length,f=V(b,null),g=R(c),h=null;try{(0,D.existsSync)(g)&&(h=(0,D.readFileSync)(g,"utf8"))}catch{h=null}let i=X(c);if(!i&&!(a.canElevate??L.e)())return{status:"failed",path:c,reason:"removing it needs root, and sudo is not available"};try{null!==h&&(f===h||f===`${h}
|
|
27
27
|
`)?(Z(c,h,Y(c),i),$(g,i)):null===h&&""===f.trim()?$(c,i):Z(c,f,Y(c),i)}catch(a){return{status:"failed",path:c,reason:a instanceof Error?a.message:String(a)}}return{status:"removed",path:c,hooks:e}}],80504);var af=a.i(43600);let ag="default";function ah(){let a,b=function(){let a=(process.env.OPENCLAW_STATE_DIR??"").trim();if(a)return(0,E.resolve)(a);let b=(process.env.OPENCLAW_HOME??"").trim();if(b)return(0,E.resolve)(b);let c=(process.env.OPENCLAW_CONFIG_PATH||"").trim();return c?(0,E.dirname)((0,E.resolve)(c)):(0,E.join)((0,G.homedir)(),".openclaw")}(),c=(0,E.basename)(b);if(".openclaw"!==c&&!c.startsWith(".openclaw-"))return[{name:ag,home:b}];let d=(0,E.dirname)(b),e=[{name:ag,home:(0,E.join)(d,".openclaw")}];try{a=(0,D.readdirSync)(d,{withFileTypes:!0})}catch{return e}let f=a.filter(a=>(a.isDirectory()||a.isSymbolicLink())&&a.name.startsWith(".openclaw-")&&a.name.length>10&&(0,D.existsSync)((0,E.join)(d,a.name,"openclaw.json"))).map(a=>({name:a.name.slice(10),home:(0,E.join)(d,a.name)})).sort((a,b)=>a.name.localeCompare(b.name));return e.push(...f),e}var ai={get url(){return a.F("src/hooks/integrations.ts")},env:{DEV:!1,PROD:!0,MODE:"production",BASE_URL:"/",SSR:!0}};class aj extends Error{path;constructor(a,b){super(`Refusing to modify ${a}: ${b}. failproofai never rewrites a config it could not parse — fix or move the file, then retry.`),this.path=a,this.name="UnreadableAgentConfigError"}}function ak(a){let b,c;if(!(0,D.existsSync)(a))return{};try{b=(0,D.readFileSync)(a,"utf8")}catch(b){throw new aj(a,`it could not be read (${b instanceof Error?b.message:String(b)})`)}if(""===b.trim())return{};try{c=JSON.parse(b)}catch(b){throw new aj(a,`it is not valid JSON (${b instanceof Error?b.message:String(b)})`)}if(!c||"object"!=typeof c||Array.isArray(c))throw new aj(a,"its top level is not a JSON object");return c}function al(a,b){K(a,JSON.stringify(b,null,2)+"\n")}function am(a){let b;if(!(0,D.existsSync)(a))return(0,H.parseDocument)("");try{b=(0,D.readFileSync)(a,"utf8")}catch(b){throw new aj(a,`it could not be read (${b instanceof Error?b.message:String(b)})`)}let c=(0,H.parseDocument)(b);if(c.errors.length>0){let b=c.errors[0]?.message.split("\n")[0]??"syntax error";throw new aj(a,`it does not parse as YAML (${b})`)}return c}function an(a,b){K(a,b.toString())}function ao(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}function ap(a){return"version"in a&&(delete a.version,!0)}function aq(a){try{let b=`which ${a}`;return(0,C.execSync)(b,{encoding:"utf8",stdio:"pipe"}),!0}catch{return!1}}function ar(a,b,c){let d=a.getSettingsPaths?.(b,c);return d&&d.length>0?d:[a.getSettingsPath(b,c)]}let as={id:"claude",displayName:"Claude Code",scopes:b,eventTypes:A,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".claude","settings.json");case"project":return(0,E.resolve)(c,".claude","settings.json");case"local":return(0,E.resolve)(c,".claude","settings.local.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b}`:`"${a}" --hook ${b}`,timeout:60,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){a.hooks||(a.hooks={});let d=new Set(A);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=>!ao(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 A){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=>ao(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=>!ao(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,D.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=>ao(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("claude")||aq("claude-code")},at={id:"codex",displayName:"OpenAI Codex",scopes:d,eventTypes:e,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".codex","hooks.json");case"project":case"local":return(0,E.resolve)(c,".codex","hooks.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(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,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){for(let d of(ap(a),a.hooks||(a.hooks={}),e)){let e=f[d],g=this.buildHookEntry(b,d,c);a.hooks[e]||(a.hooks[e]=[]);let h=a.hooks[e],i=!1;for(let a of h){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>ao(a));if(b>=0){a.hooks[b]=g,i=!0;break}}i||h.push({hooks:[g]})}},removeHooksFromFile(a){let b=this.readSettings(a),c=ap(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=>!ao(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){if("user"===a&&_())return!0;let c=this.getSettingsPath(a,b);if(!(0,D.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=>ao(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("codex")};function au(a){if(!0===a[B])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 av="./plugins/failproofai.mjs";function aw(a){return(0,E.resolve)((0,E.dirname)(a),"plugins","failproofai.mjs")}function ax(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,"pi-extension"):(0,E.resolve)((0,F.fileURLToPath)(ai.url),"..","..","..","pi-extension")}function ay(a){return"string"==typeof a&&(!!/(?:^|\/)pi-extension\/?$/.test(a)||a.includes("pi-extension")&&a.includes("failproofai"))}let az="failproofai",aA=".failproofai-managed",aB=["plugin.yaml","__init__.py","client.py","ledger.py"],aC="hermes-plugin";function aD(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,aC):function(a){let b=(0,E.resolve)(a);for(let a=0;a<8;a++){let a=(0,E.resolve)(b,aC);if((0,D.existsSync)((0,E.resolve)(a,"plugin.yaml")))return a;let c=(0,E.dirname)(b);if(c===b)break;b=c}return(0,E.resolve)(a,"..","..",aC)}((0,E.dirname)((0,F.fileURLToPath)(ai.url)))}function aE(a){return(0,E.resolve)((0,E.dirname)(a),"plugins",az)}function aF(a){try{return(0,D.lstatSync)(a),!0}catch{return!1}}function aG(a){return aB.every(b=>(0,D.existsSync)((0,E.resolve)(a,b)))}function aH(a){return(0,E.resolve)((0,E.dirname)(a),".failproofai-link")}function aI(a){try{let b=(0,D.readFileSync)(aH(a),"utf8").trim();return""===b?null:(0,E.resolve)(b)}catch{return null}}function aJ(a,b){K(aH(a),(0,E.resolve)(b)+"\n",{backup:!1,symlinks:"replace"})}function aK(a){(0,D.rmSync)(aH(a),{force:!0})}function aL(a,b){if((0,E.resolve)(a)===(0,E.resolve)(b))return!0;try{return(0,D.realpathSync)(a)===(0,D.realpathSync)(b)}catch{return!1}}function aM(a){let b,c,d=aE(a);try{let a=(0,D.lstatSync)(d);b=a.isSymbolicLink(),c=a.isDirectory()}catch{return{kind:"absent"}}if(b){let a;try{a=(0,E.resolve)((0,E.dirname)(d),(0,D.readlinkSync)(d))}catch{return{kind:"foreign"}}return!function(a,b){let c=aI(a);if(c&&(0,E.resolve)(b)===c||aL(b,aD()))return!0;let d=(0,E.dirname)((0,E.resolve)(b));if((0,E.basename)((0,E.resolve)(b))!==aC||"failproofai"!==(0,E.basename)(d)||"node_modules"!==(0,E.basename)((0,E.dirname)(d)))return!1;try{let a=JSON.parse((0,D.readFileSync)((0,E.resolve)(d,"package.json"),"utf8"));return"failproofai"===a.name}catch{return!1}}(d,a)?{kind:"foreign"}:{kind:"link",target:a,complete:aG(a),current:aL(a,aD())}}return c&&(0,D.existsSync)((0,E.resolve)(d,aA))?{kind:"copy",complete:aG(d)}:{kind:"foreign"}}function aN(a){let b=(a.toJS()??{}).hooks,c=0;if(b&&"object"==typeof b){for(let a of Object.keys(b)){let d=b[a];if(!Array.isArray(d))continue;let e=d.length,f=d.filter(a=>!ao(a));c+=e-f.length,0===f.length?delete b[a]:b[a]=f}0===Object.keys(b).length?(a.delete("hooks"),c>0&&a.delete("hooks_auto_accept")):a.set("hooks",b)}return c}function aO(a){if(!(0,D.existsSync)(a))return{pluginEnabled:!1,pluginListed:!1,pluginDisabled:!1,legacyShellHookPresent:!1};let b=function(a){try{return am(a)}catch{return null}}(a);if(!b)return{pluginEnabled:!1,pluginListed:!1,pluginDisabled:!1,legacyShellHookPresent:!1,unreadable:!0};let c=b.toJS()??{},d=c.plugins?.enabled,e=c.plugins?.disabled,f=!!c.hooks&&"object"==typeof c.hooks&&Object.values(c.hooks).some(a=>Array.isArray(a)&&a.some(a=>ao(a))),g=Array.isArray(d)&&d.includes(az),h=Array.isArray(e)&&e.includes(az);return{pluginEnabled:g&&!h,pluginListed:g,pluginDisabled:h,legacyShellHookPresent:f}}let aP="failproofai";function aQ(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,"openclaw-plugin"):(0,E.resolve)((0,F.fileURLToPath)(ai.url),"..","..","..","openclaw-plugin")}function aR(a){return"string"==typeof a&&(/(?:^|\/)openclaw-plugin\/?$/.test(a)||a.includes("openclaw-plugin")&&a.includes("failproofai"))}let aS="failproofai",aT=new Set(["PreToolUse","PostToolUse"]);function aU(a){if(!a||"object"!=typeof a)return!1;let b=a.command;return"string"==typeof b&&b.includes("failproofai")&&b.includes("--cli goose")}let aV={claude:as,codex:at,copilot:{id:"copilot",displayName:"GitHub Copilot",scopes:i,eventTypes:j,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".copilot","hooks","failproofai.json");case"project":case"local":return(0,E.resolve)(c,".github","hooks","failproofai.json")}},readSettings(a){let b=ak(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){al(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,[B]:!0}},isFailproofaiHook:au,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),j)){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=>au(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=>!au(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,D.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=>au(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("copilot")},cursor:{id:"cursor",displayName:"Cursor Agent",scopes:k,eventTypes:l,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".cursor","hooks.json");case"project":case"local":return(0,E.resolve)(c,".cursor","hooks.json")}},readSettings(a){let b=ak(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){al(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,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),l)){let e=this.buildHookEntry(b,d,c),f=a.hooks[d],g=f??[];f||(a.hooks[d]=g);let h=g.findIndex(a=>ao(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=>!ao(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,D.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=>ao(a)))return!0}catch{}return!1},detectInstalled:()=>aq("cursor-agent")||aq("agent")},opencode:{id:"opencode",displayName:"OpenCode",scopes:m,eventTypes:n,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".config","opencode","opencode.json");case"project":case"local":return(0,E.resolve)(c,".opencode","opencode.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(a,b)},buildHookEntry(a,b,c){if("user"===c){let a=(0,E.resolve)((0,G.homedir)(),".config","opencode","plugins","failproofai.mjs");return{spec:`file://${a}`,[B]:!0}}return{spec:av,[B]:!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,e,f=c??"project",g=aw("user"===f?(0,E.resolve)((0,G.homedir)(),".config","opencode","opencode.json"):(0,E.resolve)(process.cwd(),".opencode","opencode.json"));(0,D.mkdirSync)((0,E.dirname)(g),{recursive:!0}),K(g,(e=(d="project"===f)?'""':JSON.stringify(b),`// AUTO-GENERATED by failproofai. ${B}
|
|
28
28
|
// Re-generate via: failproofai policies --install --cli opencode
|
package/.next/standalone/.next/server/chunks/ssr/{_0dc-of_bn0cim._.js → _1ve8y151ua7qx._.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[
|
|
1
|
+
(()=>{"use strict";module.exports=[96810,a=>{var b=a.i(5050);let c=(0,b.createServerReference)("00c1643dbf5223904a82f005011bb3f653f0975037",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["f",0,c])},18952,a=>{var b=a.i(87924),c=a.i(72131);let d=[],e=0,f=new Set;function g(){for(let a of f)a()}function h(a){return f.add(a),()=>f.delete(a)}function i(){return d}function j({message:a}){let[d,e]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{requestAnimationFrame(()=>e(!0));let a=setTimeout(()=>e(!1),2e3);return()=>clearTimeout(a)},[]),(0,b.jsx)("div",{className:`bg-card border border-border text-foreground text-sm px-4 py-2 rounded-lg shadow-lg transition-opacity duration-300 ${d?"opacity-100":"opacity-0"}`,children:a})}a.s(["Toaster",0,function(){let a=(0,c.useSyncExternalStore)(h,i,i);return(0,b.jsx)("div",{className:"fixed bottom-4 right-4 z-50 flex flex-col gap-2",children:a.map(a=>(0,b.jsx)(j,{message:a.message},a.id))})},"toast",0,function(a){let b=e++;d=[...d,{id:b,message:a}],g(),setTimeout(()=>{d=d.filter(a=>a.id!==b),g()},2500)}])},10765,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(96810),f=a.i(66036);let g=(0,c.createContext)(void 0);a.s(["PostHogProvider",0,function({children:a}){let h=(0,d.usePathname)(),i=(0,c.useRef)(null),j=(0,c.useRef)(!1);(0,c.useEffect)(()=>{let a=!1;return(0,e.f)().then(b=>{a||((0,f.$)(b),j.current=!0,(0,f.L)("$pageview"),i.current=window.location.pathname)}),()=>{a=!0}},[]),(0,c.useEffect)(()=>{j.current&&i.current!==h&&(i.current=h,(0,f.L)("$pageview"))},[h]);let k=c.default.useCallback((a,b)=>{(0,f.L)(a,b)},[]);return(0,b.jsx)(g.Provider,{value:{capture:k},children:a})},"usePostHog",0,function(){let a=(0,c.useContext)(g);if(void 0===a)throw Error("usePostHog must be used within a PostHogProvider");return a}])},66036,a=>{a.s(["L",0,function(a,b){},"$",0,function(a){}])},5050,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)}]})();
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=_1ve8y151ua7qx._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[73338,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157);a.i(66680);var f=a.i(50227),g=a.i(8674);a.i(1144);var h=a.i(75818),i=a.i(13095);async function j(){return function(a=Date.now()){let b,c,d=(c=process.env.FAILPROOFAI_STATE_DIR)?(0,f.resolve)(c,"sessions"):(0,h.$)();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{let b=function(a){if(!a||"object"!=typeof a||1!==a.schemaVersion||"string"!=typeof a.sessionId||0===a.sessionId.length||!Number.isFinite(a.pausedAt)||!Number.isFinite(a.expiresAt))return null;let b=a.pausedAt,c=Number.isFinite(a.firstPausedAt)?a.firstPausedAt:b;return{schemaVersion:1,sessionId:a.sessionId,pausedAt:b,firstPausedAt:c,expiresAt:Math.min(a.expiresAt,c+288e5),setBy:"string"==typeof a.setBy?a.setBy:"unknown",..."string"==typeof a.cwd?{cwd:a.cwd}:{}}}(JSON.parse((0,e.readFileSync)((0,f.join)(d,c),"utf8")));if(!b||b.expiresAt<=a)continue;let{schemaVersion:h,...i}=b;g.push(i)}catch{}return g.sort((a,b)=>b.pausedAt-a.pausedAt)}()}(0,i.ensureServerEntryExports)([j]),(0,d.registerServerReference)(j,"
|
|
1
|
+
module.exports=[73338,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157);a.i(66680);var f=a.i(50227),g=a.i(8674);a.i(1144);var h=a.i(75818),i=a.i(13095);async function j(){return function(a=Date.now()){let b,c,d=(c=process.env.FAILPROOFAI_STATE_DIR)?(0,f.resolve)(c,"sessions"):(0,h.$)();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{let b=function(a){if(!a||"object"!=typeof a||1!==a.schemaVersion||"string"!=typeof a.sessionId||0===a.sessionId.length||!Number.isFinite(a.pausedAt)||!Number.isFinite(a.expiresAt))return null;let b=a.pausedAt,c=Number.isFinite(a.firstPausedAt)?a.firstPausedAt:b;return{schemaVersion:1,sessionId:a.sessionId,pausedAt:b,firstPausedAt:c,expiresAt:Math.min(a.expiresAt,c+288e5),setBy:"string"==typeof a.setBy?a.setBy:"unknown",..."string"==typeof a.cwd?{cwd:a.cwd}:{}}}(JSON.parse((0,e.readFileSync)((0,f.join)(d,c),"utf8")));if(!b||b.expiresAt<=a)continue;let{schemaVersion:h,...i}=b;g.push(i)}catch{}return g.sort((a,b)=>b.pausedAt-a.pausedAt)}()}(0,i.ensureServerEntryExports)([j]),(0,d.registerServerReference)(j,"0012ac8b873e10620d7bb4c85d954c8c84b59c4ab0",null);var k=a.i(17280);a.i(75534);var l=a.i(10695),m=a.i(98378),n=a.i(69839),o=a.i(28120),p=a.i(74533),q=a.i(60526),r=a.i(91997),s=a.i(67121),t=a.i(80504),u=a.i(92956),v=a.i(15638),w=a.i(32352);class x extends Error{exitCode;constructor(a,b=1){super(a),this.name="CliError",this.exitCode=b}}a.i(89790);var y=a.i(9909),z=a.i(8284),A=a.i(21572),B=a.i(1459);function C(a,b){let c,d,i=r.z.filter(a=>b.includes(a));if(0===i.length)return null;let j=(0,A.s)().agents;if("installed"===a){if(!j||0===(c=i.filter(a=>!j.selected.includes(a))).length)return null;let a=a=>[...r.z.filter(b=>a.includes(b)),...a.filter(a=>!r.z.includes(a))],b=(0,s.w)(),e=c.filter(a=>b.includes(a)&&!j.seen.includes(a));d={selected:a([...j.selected,...c]),seen:e.length>0?a([...j.seen,...e]):j.seen}}else if(j){if(0===(c=i.filter(a=>j.selected.includes(a))).length)return null;let a=new Set(c);d={selected:j.selected.filter(b=>!a.has(b)),seen:j.seen}}else{c=i;let a=(0,s.w)(),b=process.cwd();d={selected:r.z.filter(c=>!i.includes(c)&&(a.includes(c)||function(a,b){let c=(0,s.B)(a);try{if(c.hooksInstalledInSettings("user",b))return!0;if("hermes"===a)return(0,s.d)().some(a=>(0,e.existsSync)(a.home)&&(a.pluginInstalled&&a.pluginEnabled||a.legacyShellHookPresent));let d=(0,s.r)(c,"user",b);if(d.length<2)return!1;return d.some(a=>c.hooksInstalledInSettings.call({...c,getSettingsPaths:()=>[a]},"user",b))}catch{return!1}}(c,b))),seen:a}}let k=(0,B.m)((0,B.w)(process.stdout)),m=c.map(a=>(0,s.B)(a).displayName),n=1===m.length?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`,o=1===m.length,p=k.cmd("failproofai config");"installed"===a&&function(a,b,c=Date.now()){if(0!==a.length&&b)try{!function(a){var b;let c=(b=void 0,(0,f.join)((0,h.J)(b),"state","backfill-request.json")),d=null;if((0,e.existsSync)(c))try{d=function(a,b){let c;if("object"!=typeof a||null===a||Array.isArray(a))return null;if(Array.isArray(a.agents))c=[...new Set(a.agents.filter(a=>"string"==typeof a&&""!==a.trim()))];else if(void 0!==a.agents&&null!==a.agents)return null;let d="number"==typeof a.requestedAtMs?a.requestedAtMs:void 0,e=void 0===a.kind||null===a.kind?"user":a.kind;return"user"===e?"number"!=typeof a.sinceMs?null:{kind:"user",sinceMs:a.sinceMs,requestedAtMs:d??b,...c?{agents:c}:{}}:"added"===e?void 0===d||!c||b-d>6e5?null:{kind:"added",requestedAtMs:d,agents:c}:null}(JSON.parse((0,e.readFileSync)(c,"utf8")),a.requestedAtMs)}catch{d=null}let i=function(a,b){let c,d;if(!a)return b;if("added"===a.kind&&"added"===b.kind)return{kind:"added",requestedAtMs:b.requestedAtMs,agents:[...new Set([...a.agents,...b.agents])]};let e=[a,b].flatMap(a=>"user"===a.kind?[a.sinceMs]:[]),f=(c=a.agents,d=b.agents,void 0===c||void 0===d?void 0:[...new Set([...c,...d])]);return{kind:"user",sinceMs:Math.min(...e),requestedAtMs:b.requestedAtMs,...f?{agents:f}:{}}}(d,a);(0,g.f)(c,i)}({kind:"added",agents:[...a],requestedAtMs:c})}catch(a){return(0,l.g)(`could not write the backfill request for re-added agents: ${a instanceof Error?a.message:String(a)}`),!1}}(c,function(){try{let a;return null!==((a=(0,A.d)().ingest)?{url:a.url,key:a.key}:null)&&!0===(0,A.s)().collector.sessions}catch{return!1}}());try{(0,A.t)({agents:d})}catch(c){let b=c instanceof Error?c.message:String(c);return k.caution("installed"===a?`Couldn't record ${n} as traced (${b}), so ${p} may remove ${o?"its":"their"} hooks again.`:`Couldn't record ${n} as no longer traced (${b}), so ${p} may add ${o?"its":"their"} hooks back.`)}return k.ok("installed"===a?`${n} ${o?"is":"are"} traced again, so ${p} keeps ${o?"its":"their"} hooks.`:`${n} ${o?"is":"are"} no longer traced, so ${p} won't add ${o?"its":"their"} hooks back.`)}let D=new Set(u.H.map(a=>a.name));function E(a,b){return s.p.getSettingsPath(a,b)}function F(a){let b=[],c=[],d=[],e=[];try{e=(0,y.V)().packs}catch{}let f=(a,b)=>e.filter(b=>null===a||b.id===a).filter(a=>a.policies.some(a=>a.name===b)).map(a=>({packId:a.id,packVersion:a.version,name:b,disabledKey:`pack:${a.id}@${a.version}:${b}`}));for(let e of a){let a=f(null,e);if(1===a.length){c.push(a[0]);continue}if(a.length>1)throw new x(`"${e}" is declared by ${a.length} installed packs.
|
|
2
2
|
Name the one you mean:
|
|
3
3
|
`+a.map(a=>` \`${a.packId}:${a.name}\``).join("\n"));if(D.has(e)){b.push(e);continue}let g=e.lastIndexOf(":"),h=g>0?{packId:e.slice(0,g),name:e.slice(g+1)}:null,i=h?f(h.packId,h.name):f(null,e);if(1===i.length){c.push(i[0]);continue}if(i.length>1)throw new x(`"${e}" is declared by ${i.length} installed packs.
|
|
4
4
|
Name the one you mean:
|
|
@@ -12,6 +12,6 @@ Make sure the file calls \`customPolicies.add(...)\` at least once.`).join("\n
|
|
|
12
12
|
`),process.exit(1)}console.log(`
|
|
13
13
|
Validated ${a.length} custom hook(s) from ${d}: ${a.map(a=>a.name).join(", ")}`)}}(0,o.f)(S,b,c);let T=new Set(u.H.filter(a=>a.alwaysOn).map(a=>a.name)),U=void 0===a?[]:K.filter(a=>!T.has(a));if(U.length>0)if((0,y.Q)()){for(let a of U)for(let b of(0,y.V)().packs)if(b.policies.some(b=>b.name===a)){(0,k.g)(b.id,a,!0);break}}else try{await (0,k.I)(k.w,{only:U})}catch(a){console.log((0,B.m)((0,B.w)(process.stdout)).caution(`Couldn't fetch the policy pack (${a instanceof Error?a.message:String(a)}). Once you are online:`,"failproofai policies add FailproofAI/policies"))}if(void 0!==a&&K.length>0){let a=K.length;console.log((0,B.m)((0,B.w)(process.stdout)).ok(`Enabled ${a} ${1===a?"policy":"policies"}: ${K.join(", ")}`))}if(i)console.log((0,B.m)((0,B.w)(process.stdout)).ok("Custom hooks path cleared."));else if(S.customPoliciesPaths?.length||S.customPoliciesPath){let a=S.customPoliciesPaths??[S.customPoliciesPath];for(let b of(0,B.m)((0,B.w)(process.stdout)).kv([["custom",a.join(", ")]]))console.log(b)}let V=[],W=null;for(let a of M){let d=(0,s.B)(a);if("codex"===a&&"user"===b){let b=(0,t.i)((0,s.D)(P));if(b.ok){let f=d.getSettingsPath("user",c);(0,e.existsSync)(f)&&d.removeHooksFromFile(f),V.push({cli:a,path:b.path});continue}W=b}let f=(0,s.r)(d,b,c);try{for(let c of f){d.prepareInstall?.(c);let e=d.readSettings(c);d.writeHookEntries(e,P,b),d.writeSettings(c,e),V.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 (0,m.f)((0,n._)(),"hook_write_failed",{cli:a,scope:b,error_type:c})}catch{}throw d}}try{let a=new Set(K),c=K.filter(a=>!R.has(a)),e=[...R].filter(b=>!a.has(b)),f=(0,n._)();if(await (0,m.f)(f,"hooks_installed",{scope:b,cli:M,cli_count:M.length,policies:K,policy_count:K.length,policies_added:c,policies_removed:e,...g?{source:g}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)()),has_custom_hooks_path:!!(S.customPoliciesPaths?.length||S.customPoliciesPath),has_policy_params:!!(S.policyParams&&Object.keys(S.policyParams).length>0),param_policy_names:S.policyParams?Object.keys(S.policyParams):[],command_format:"project"===b?"npx":"absolute"}),d){let a=new Set(u.H.filter(a=>a.beta).map(a=>a.name)),c=K.filter(b=>a.has(b));c.length>0&&await (0,m.f)(f,"beta_policies_installed",{scope:b,cli:M,beta_count:c.length,beta_policy_names:c,...g?{source:g}:{}})}}catch{}let X=(0,B.m)((0,B.w)(process.stdout));for(let{cli:a,path:c}of V){let d=(0,s.B)(a);for(let e of(console.log(X.ok("hermes"===a?`${d.displayName} plugin installed (8 hooks, ${b} scope).`:`${d.displayName} hooks installed (${d.eventTypes.length} events, ${b} scope).`)),X.kv([["settings",c]])))console.log(e)}for(let a of X.kv("project"===b?[["command","npx -y failproofai"]]:[["binary",P]]))console.log(a);if("project"===b&&console.log(`${B.J}This file can be committed to git: it has no machine-specific paths.`),W&&!W.ok&&(("conflict"===W.reason||"unreadable"===W.reason||"write-failed"===W.reason)&&console.log(X.caution(`Couldn't add the Codex hooks to ${W.path}: ${W.detail??W.reason}.`)),"untrusted"===(0,t.c)().kind))for(let a of X.notice("caution",t.s))console.log(a);let Y=(I=r.F,L=new Set,I.filter(a=>{let b=E(a,c);return!L.has(b)&&(L.add(b),!0)})).filter(a=>a!==b).filter(a=>H(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(X.caution(`Hooks are also installed at ${a}, so each policy may run twice.`,`failproofai policies --uninstall --scope ${Y[0]}`));try{await (0,m.f)((0,n._)(),"multi_scope_warning_shown",{new_scope:b,existing_scopes:Y,cli:M})}catch{}}if(A){let a=C("installed",V.map(a=>a.cli));a&&console.log(a)}}async function K(a,b="user",c,d){let f=a=>{d?.silent||console.log(a)},g="all"===b?"user":b,h=d?.cli&&d.cli.length>0?[...new Set(d.cli)]:["claude"];if(d?.removeCustomHooks){let a=(0,o.Z)(g,c);delete a.customPoliciesPath,delete a.customPoliciesPaths,(0,o.f)(a,g,c),f("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){let b=F(a);G(b.packs,!1,g,c);var i=a=b.builtins;let d=new Set(u.H.filter(a=>a.alwaysOn).map(a=>a.name)),e=i.filter(a=>d.has(a));if(e.length>0)throw new x(`Cannot disable: ${e.join(", ")}
|
|
14
14
|
It stops an agent from switching failproofai off, so it is always on.`);if(b.packs.length>0&&0===a.length)return}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){let e=(0,o.Z)(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&&f(`Warning: policy(ies) not currently enabled: ${k.join(", ")}`);let{policyParams:l,...p}=e,r=l?Object.fromEntries(Object.entries(l).filter(([a])=>!i.has(a))):null,s={...p,enabledPolicies:j,...r&&Object.keys(r).length>0?{policyParams:r}:{}};(0,o.f)(s,g,c);try{let c=(0,n._)(),f=a.filter(a=>e.enabledPolicies.includes(a));await (0,m.f)(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,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}f(`Disabled ${a.length-k.length} policy(ies).`),f(`Remaining: ${j.length>0?j.join(", "):"(none)"}`);return}let j=(0,o.Z)(g,c),k=()=>{if(!d?.syncAgentSelection||"user"!==b&&"all"!==b)return;let a=C("removed",h.filter(a=>"all"===b||(0,s.B)(a).scopes.includes("user")));a&&f(a)},l=0,p=!1;for(let a of h){let d=(0,s.B)(a);for(let g of"all"===b?[...d.scopes]:d.scopes.includes(b)?[b]:[]){let i=0;if("codex"===a&&"user"===g){let a=(0,t.g)();if("removed"===a.status){if(i=a.hooks,"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${a.hooks} failproofai ${1===a.hooks?"hook":"hooks"} from Codex's system config.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a.path]])))f(b)}else if("failed"===a.status)for(let b of(0,B.m)((0,B.w)(process.stdout)).notice("caution",`failproofai's Codex hooks are still in ${a.path}: ${a.reason}.
|
|
15
|
-
Run \`sudo -v\`, then this command again.`))f(b)}let j=(0,s.r)(d,g,c),k="hermes"===a?j:j.filter(a=>(0,e.existsSync)(a));if(0===k.length){if(l+=i,i>0)continue;"all"!==b&&1===h.length&&(f((0,B.m)((0,B.w)(process.stdout)).ok("No settings file found, so there is nothing to remove.")),p=!0);continue}let m=i;for(let a of k){let c=d.removeHooksFromFile(a);if(m+=c,c>0&&"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${c} failproofai ${1===c?"hook":"hooks"} from ${d.displayName} settings.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a]])))f(b)}if(0===m&&"all"!==b&&1===h.length){f((0,B.m)((0,B.w)(process.stdout)).ok("No hooks found in settings, so there is nothing to remove.")),p=!0;continue}l+=m}}if(p&&0===l)return void k();if("all"===b)for(let a of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${l} failproofai ${1===l?"hook":"hooks"} from every scope.`)),h)){let b=(0,s.B)(a);for(let a of b.scopes)for(let d of(0,s.r)(b,a,c))f(`${B.J}${b.displayName}, ${a}: ${d}`)}try{let a=(0,n._)();await (0,m.f)(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:j.enabledPolicies,removed_count:l,...d?.source?{source:d.source}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}if("all"===b)for(let a of r.F){let b=(0,o.Z)(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;(0,o.f)({...g,enabledPolicies:[]},a,c)}}else if(!r.F.some(a=>H(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=(0,o.Z)(g,c);(0,o.f)({...e,enabledPolicies:[]},g,c)}k()}var L=a.i(24282),M=a.i(12714);async function N(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,f.resolve)((0,o.Y)(c),".failproofai","policies"),e=(0,h.E)(),g=[];for(let{scope:c,dir:h}of[{scope:"project",dir:d},...e===d?[]:[{scope:"user",dir:e}]]){let d=[];try{d=(0,v.discoverPolicyFiles)(h)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await O(e)).map(b=>{let d=(0,v.conventionPolicyId)(c,(0,f.basename)(e),b.name);return{...b,id:d,enabled:!a.has(d)}})}catch{}g.push({scope:c,file:(0,f.basename)(e),path:e,policies:d})}}return g}async function O(a){if(!(0,e.existsSync)(a))return[];let b=await (0,M.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 P(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=(0,o.q)(a),c=new Set(b.disabledCustomPolicies??[]),d=r.F.filter(a=>H(a)),e=E(d[0]??"user"),g=(0,s.u)().map(a=>({id:a.id,label:(0,L.A)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),h=[],i=[];try{let a=(0,y.V)();h=a.packs,i=a.errors}catch{}let j=[];for(let a of h){let d=a.enabled??a.policies.map(a=>a.name);for(let e of a.policies)j.push({name:e.name,description:e.description,category:e.category,defaultEnabled:e.defaultEnabled,beta:!1,enabled:d.includes(e.name)&&!c.has(`pack:${a.id}@${a.version}:${e.name}`),eventScope:function(a){let b=a.events?.join(", ")??"",c=a.toolNames?` \xb7 ${a.toolNames.join(", ")}`:"";return`${b}${c}`}(e.match),packId:a.id,packVersion:a.version,...e.params?{params:Object.fromEntries(Object.entries(e.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])),currentParams:function(a,b,c){if(!a)return;let d=a[`pack/${b}/${c}`];return d||(b.toLowerCase()===k.w.toLowerCase()?a[c]:void 0)}(b.policyParams,a.id,e.name)??{}}:{}})}let l=(0,o.W)(b),m=(0,o.Y)(a),n=l.map(a=>(0,f.resolve)(m,a)),p=(await Promise.all(n.map(async a=>{try{return(await O(a)).map(b=>{let d=(0,v.customPolicyId)(a,b.name);return{...b,id:d,enabled:!c.has(d)}})}catch{return[]}}))).flat(),q=await N(c,new Set(n)),t=h.map(a=>{let b=a.enabled??a.policies.map(a=>a.name);return{id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(d=>({name:d.name,description:d.description,category:d.category,enabled:b.includes(d.name)&&!c.has(`pack:${a.id}@${a.version}:${d.name}`)}))}});for(let a of i)t.push({id:a.id??"(unnamed pack)",version:"",source:"",effect:"enforce",policies:[],error:a.reason});return{enabledPolicies:b.enabledPolicies,installedScopes:d,settingsPath:e,clis:g,policies:j,customPoliciesPaths:l.length?l:void 0,customPoliciesPath:1===l.length?l[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q,packs:t}}async function Q(a,b){let c=(0,o.E)(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),(0,o.H)({...c,enabledPolicies:[...d]});try{let c=(0,n._)();await (0,m.f)(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function R(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.F){let d=(0,o.Z)(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,(0,o.f)(f,b,c)}return}let d=(0,o.E)(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,(0,o.H)(f)}async function S(a,b){let c=a.trim();if(!c)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.z)(c,b??{});return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function T(){try{let a=await (0,k.I)(k.w);return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function U(a){let b;try{b=(0,k.R)(a)}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}return b?{ok:!0,id:b}:{ok:!1,error:`No installed pack with id ${a}`}}async function V(a,b,c){let d=(0,k.g)(a,b,c);if(!d.ok)return{ok:!1,error:d.reason};if(c){let c=(0,y.V)().packs.find(b=>b.id===a);if(c){let a=`pack:${c.id}@${c.version}:${b}`,d=(0,o.E)(),e=(d.disabledCustomPolicies??[]).filter(b=>b!==a);if(e.length!==(d.disabledCustomPolicies??[]).length){let{disabledCustomPolicies:a,...b}=d;(0,o.H)(e.length>0?{...b,disabledCustomPolicies:e}:b)}}}return{ok:!0,id:a}}async function W(a){let b=a.trim();if(!b)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.k)(b);return{ok:!0,id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(a=>({name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled})),...a.semantic.length>0?{semantic:a.semantic.map(a=>a.name)}:{},...a.minCliVersion?{minCliVersion:a.minCliVersion}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function X(a="user",b){let c=(0,o.E)(),d=c.enabledPolicies.length>0?c.enabledPolicies:u.H.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:(0,s.w)(),f=e.length>0?e:["claude"];await I(d,a,void 0,!1,"web",void 0,!1,f,{syncAgentSelection:!0})}async function Y(a="user",b){let c=b&&b.length>0?b:(0,s.w)(),d=c.length>0?c:["claude"];await K(void 0,a,void 0,{source:"web",cli:d,syncAgentSelection:!0})}async function Z(a,b){let c=(0,o.E)(),d={...c.policyParams??{},[a]:b};(0,o.H)({...c,policyParams:d});try{let c=(0,n._)();await (0,m.f)(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,i.ensureServerEntryExports)([P]),(0,d.registerServerReference)(P,"
|
|
15
|
+
Run \`sudo -v\`, then this command again.`))f(b)}let j=(0,s.r)(d,g,c),k="hermes"===a?j:j.filter(a=>(0,e.existsSync)(a));if(0===k.length){if(l+=i,i>0)continue;"all"!==b&&1===h.length&&(f((0,B.m)((0,B.w)(process.stdout)).ok("No settings file found, so there is nothing to remove.")),p=!0);continue}let m=i;for(let a of k){let c=d.removeHooksFromFile(a);if(m+=c,c>0&&"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${c} failproofai ${1===c?"hook":"hooks"} from ${d.displayName} settings.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a]])))f(b)}if(0===m&&"all"!==b&&1===h.length){f((0,B.m)((0,B.w)(process.stdout)).ok("No hooks found in settings, so there is nothing to remove.")),p=!0;continue}l+=m}}if(p&&0===l)return void k();if("all"===b)for(let a of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${l} failproofai ${1===l?"hook":"hooks"} from every scope.`)),h)){let b=(0,s.B)(a);for(let a of b.scopes)for(let d of(0,s.r)(b,a,c))f(`${B.J}${b.displayName}, ${a}: ${d}`)}try{let a=(0,n._)();await (0,m.f)(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:j.enabledPolicies,removed_count:l,...d?.source?{source:d.source}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}if("all"===b)for(let a of r.F){let b=(0,o.Z)(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;(0,o.f)({...g,enabledPolicies:[]},a,c)}}else if(!r.F.some(a=>H(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=(0,o.Z)(g,c);(0,o.f)({...e,enabledPolicies:[]},g,c)}k()}var L=a.i(24282),M=a.i(12714);async function N(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,f.resolve)((0,o.Y)(c),".failproofai","policies"),e=(0,h.E)(),g=[];for(let{scope:c,dir:h}of[{scope:"project",dir:d},...e===d?[]:[{scope:"user",dir:e}]]){let d=[];try{d=(0,v.discoverPolicyFiles)(h)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await O(e)).map(b=>{let d=(0,v.conventionPolicyId)(c,(0,f.basename)(e),b.name);return{...b,id:d,enabled:!a.has(d)}})}catch{}g.push({scope:c,file:(0,f.basename)(e),path:e,policies:d})}}return g}async function O(a){if(!(0,e.existsSync)(a))return[];let b=await (0,M.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 P(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=(0,o.q)(a),c=new Set(b.disabledCustomPolicies??[]),d=r.F.filter(a=>H(a)),e=E(d[0]??"user"),g=(0,s.u)().map(a=>({id:a.id,label:(0,L.A)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),h=[],i=[];try{let a=(0,y.V)();h=a.packs,i=a.errors}catch{}let j=[];for(let a of h){let d=a.enabled??a.policies.map(a=>a.name);for(let e of a.policies)j.push({name:e.name,description:e.description,category:e.category,defaultEnabled:e.defaultEnabled,beta:!1,enabled:d.includes(e.name)&&!c.has(`pack:${a.id}@${a.version}:${e.name}`),eventScope:function(a){let b=a.events?.join(", ")??"",c=a.toolNames?` \xb7 ${a.toolNames.join(", ")}`:"";return`${b}${c}`}(e.match),packId:a.id,packVersion:a.version,...e.params?{params:Object.fromEntries(Object.entries(e.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])),currentParams:function(a,b,c){if(!a)return;let d=a[`pack/${b}/${c}`];return d||(b.toLowerCase()===k.w.toLowerCase()?a[c]:void 0)}(b.policyParams,a.id,e.name)??{}}:{}})}let l=(0,o.W)(b),m=(0,o.Y)(a),n=l.map(a=>(0,f.resolve)(m,a)),p=(await Promise.all(n.map(async a=>{try{return(await O(a)).map(b=>{let d=(0,v.customPolicyId)(a,b.name);return{...b,id:d,enabled:!c.has(d)}})}catch{return[]}}))).flat(),q=await N(c,new Set(n)),t=h.map(a=>{let b=a.enabled??a.policies.map(a=>a.name);return{id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(d=>({name:d.name,description:d.description,category:d.category,enabled:b.includes(d.name)&&!c.has(`pack:${a.id}@${a.version}:${d.name}`)}))}});for(let a of i)t.push({id:a.id??"(unnamed pack)",version:"",source:"",effect:"enforce",policies:[],error:a.reason});return{enabledPolicies:b.enabledPolicies,installedScopes:d,settingsPath:e,clis:g,policies:j,customPoliciesPaths:l.length?l:void 0,customPoliciesPath:1===l.length?l[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q,packs:t}}async function Q(a,b){let c=(0,o.E)(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),(0,o.H)({...c,enabledPolicies:[...d]});try{let c=(0,n._)();await (0,m.f)(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function R(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.F){let d=(0,o.Z)(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,(0,o.f)(f,b,c)}return}let d=(0,o.E)(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,(0,o.H)(f)}async function S(a,b){let c=a.trim();if(!c)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.z)(c,b??{});return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function T(){try{let a=await (0,k.I)(k.w);return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function U(a){let b;try{b=(0,k.R)(a)}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}return b?{ok:!0,id:b}:{ok:!1,error:`No installed pack with id ${a}`}}async function V(a,b,c){let d=(0,k.g)(a,b,c);if(!d.ok)return{ok:!1,error:d.reason};if(c){let c=(0,y.V)().packs.find(b=>b.id===a);if(c){let a=`pack:${c.id}@${c.version}:${b}`,d=(0,o.E)(),e=(d.disabledCustomPolicies??[]).filter(b=>b!==a);if(e.length!==(d.disabledCustomPolicies??[]).length){let{disabledCustomPolicies:a,...b}=d;(0,o.H)(e.length>0?{...b,disabledCustomPolicies:e}:b)}}}return{ok:!0,id:a}}async function W(a){let b=a.trim();if(!b)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.k)(b);return{ok:!0,id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(a=>({name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled})),...a.semantic.length>0?{semantic:a.semantic.map(a=>a.name)}:{},...a.minCliVersion?{minCliVersion:a.minCliVersion}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function X(a="user",b){let c=(0,o.E)(),d=c.enabledPolicies.length>0?c.enabledPolicies:u.H.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:(0,s.w)(),f=e.length>0?e:["claude"];await I(d,a,void 0,!1,"web",void 0,!1,f,{syncAgentSelection:!0})}async function Y(a="user",b){let c=b&&b.length>0?b:(0,s.w)(),d=c.length>0?c:["claude"];await K(void 0,a,void 0,{source:"web",cli:d,syncAgentSelection:!0})}async function Z(a,b){let c=(0,o.E)(),d={...c.policyParams??{},[a]:b};(0,o.H)({...c,policyParams:d});try{let c=(0,n._)();await (0,m.f)(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,i.ensureServerEntryExports)([P]),(0,d.registerServerReference)(P,"003ec969a8989a732e9892b583c8c1eae41609faf4",null),(0,i.ensureServerEntryExports)([Q,R]),(0,d.registerServerReference)(Q,"609d1302b6d98086e7688bc679afb77880cac21ae3",null),(0,d.registerServerReference)(R,"60922a6ad763c01f8628deefb271ad8b57448dc71f",null),(0,i.ensureServerEntryExports)([S,T,U,V,W]),(0,d.registerServerReference)(S,"601eb4e286c556791d5c438f0d9e8280e5796b9309",null),(0,d.registerServerReference)(T,"00823c0f6cf7d4ac073758eac3c57ba8d0c5626618",null),(0,d.registerServerReference)(U,"40246a52f60fe43ef4aefce1f7722f47135dabedf1",null),(0,d.registerServerReference)(V,"701359d811bff550d6e601c11d1666edfd6ab71855",null),(0,d.registerServerReference)(W,"406703a0866f678d914175a67c98cab6f983694738",null),(0,i.ensureServerEntryExports)([X,Y]),(0,d.registerServerReference)(X,"60c16351ca5e84728c77af9f5e0c7bd65237eb7a8e",null),(0,d.registerServerReference)(Y,"6032e8373a616afd136a2f346c0d5a66c6c168d63a",null),(0,i.ensureServerEntryExports)([Z]),(0,d.registerServerReference)(Z,"6077fb97f95b4c92e48a9d291b1f3bab7419cb7a1e",null),a.s(["0012ac8b873e10620d7bb4c85d954c8c84b59c4ab0",0,j,"003ec969a8989a732e9892b583c8c1eae41609faf4",0,P,"00823c0f6cf7d4ac073758eac3c57ba8d0c5626618",0,T,"00c1643dbf5223904a82f005011bb3f653f0975037",()=>b.f,"4012bc29553363320079da9c4da39e5f7f271db3d8",()=>c.x,"40246a52f60fe43ef4aefce1f7722f47135dabedf1",0,U,"406703a0866f678d914175a67c98cab6f983694738",0,W,"601eb4e286c556791d5c438f0d9e8280e5796b9309",0,S,"6032e8373a616afd136a2f346c0d5a66c6c168d63a",0,Y,"6054c975f99afafd19c3ef2563888cdfd417fcee2d",()=>c.m,"6077fb97f95b4c92e48a9d291b1f3bab7419cb7a1e",0,Z,"60922a6ad763c01f8628deefb271ad8b57448dc71f",0,R,"60c16351ca5e84728c77af9f5e0c7bd65237eb7a8e",0,X,"701359d811bff550d6e601c11d1666edfd6ab71855",0,V],73338)}];
|
|
16
16
|
|
|
17
17
|
//# sourceMappingURL=_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js.map
|