failproofai 1.0.12 → 1.0.13-beta.2
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 +13 -13
- 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 +2 -2
- 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 -1
- 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 +2 -2
- 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 +4 -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 +6 -5
- 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 +27 -26
- 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 +4 -3
- 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 +6 -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 -5
- 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 -5
- 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 +6 -5
- 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 +4 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +7 -6
- 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 +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +6 -5
- 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 +2 -2
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +5 -4
- 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 +2 -2
- 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 +21 -20
- 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 +2 -2
- 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 +10 -9
- 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 +2 -2
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +7 -6
- 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 +2 -2
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +6 -5
- 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]__0vt9i6fqinjne._.js → [externals]__1h83uo-b1b6-2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__214wn4wh2x79y._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[externals]__1rlxpymm37wel._.js → [root-of-the-server]__031qp1lkow_kc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__038kwryp970nh._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_hsnj_a2mvl_._.js → [root-of-the-server]__03s1za0hn71yp._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wg9dk8x8bnau._.js → [root-of-the-server]__07a0sa6fuw5_b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08atcie7jzswm._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfudh2_4f._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0spt0kv8azrpl._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12kq3x-h7t7i1._.js → [root-of-the-server]__0yvyp5b7jmlc4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02vous7mpi2xm._.js → [root-of-the-server]__145vo_drnuvas._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__0h0p9dmv_e7r7._.js → [root-of-the-server]__1a2d0ewycsp6k._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__1_407huhlmj1m._.js → [root-of-the-server]__1am_1tz0o0aqz._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03i5o4a840guz._.js → [root-of-the-server]__1gxfzuvpyw30j._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1j6kfp0vzu5rw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1l0ayum_hqqsw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1lh8c0mmhdrbj._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1o9rznwc0w7og._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f_4g-vazrvxv._.js → [root-of-the-server]__1o_622x0fglpr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1oclamblhzhrf._.js +68 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v1-l-83czzsr._.js +63 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1a5zkndjwlc13._.js → [root-of-the-server]__1wwi53kkqhnfi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_1y590mjzpkbos._.js → _02sa8fcu9_9xo._.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/_1-2owkp-1_987._.js +1 -1
- package/.next/standalone/.next/server/chunks/_13ltj8a9z92o8._.js +1 -1
- package/.next/standalone/.next/server/chunks/_15k37au70vjvg._.js +1 -1
- package/.next/standalone/.next/server/chunks/_18rfu4__wjhwb._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
- package/.next/standalone/.next/server/chunks/_1fz8m31sndkcu._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ogwigfb0163w._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_0oo58a7rymoxh.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_1jp9ij0_ddtgk.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oigsgz07._.js +2 -2
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p77cu37y._.js +2 -2
- 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]__0ffu2-38y03ic._.js → [root-of-the-server]__021vebe-4il8s._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__075uro8t92s0_._.js +14 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[externals]__12qr51qgrrt6o._.js → [root-of-the-server]__097i34ct1o88x._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0alpzjn3450sr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0aup10z2o8zc1._.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]__0bioghlkjf7s7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01j58mdcdw0vn._.js → [root-of-the-server]__0ed1zh4scn7-k._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0naevg4bcoh54._.js → [root-of-the-server]__0evgy902m9h5e._.js} +2 -2
- 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]__0nhm28v58ty9z._.js +3 -0
- 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]__0vse4qi496ol-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__17r4zrwanhp6r._.js → [root-of-the-server]__0yb3u36xjy3b9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0g8b0kyorya-t._.js → [root-of-the-server]__0ywj2u6ovfm_5._.js} +1 -1
- 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]__0zn1d4blhd3bu._.js → [root-of-the-server]__10v5cyxvj64j4._.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]__190xwrr5zrfi3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__167mipqmjprq5._.js → [root-of-the-server]__19nvo1qfswchs._.js} +2 -2
- 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]__1vx7o8ukefudh._.js → [root-of-the-server]__1guwlpkyurdn9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1k96jctukf65_._.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]__1sj-wn2jp6va5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1vofkb2oq7p7e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1s2-ck3k3rsoo._.js → [root-of-the-server]__20dt376-socef._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1lnfv02ucky7m._.js → [root-of-the-server]__2158020r_amn9._.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/{_1d98fyfrcaqhy._.js → _1nvqg4si0splb._.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_09s4n108bqreq._.js → node_modules_0ptcnmeaxvd_a._.js} +22 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@opentelemetry_api_build_esm_index_0ntwr8lzj6p2i.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0tqc05n832v7a.js → node_modules_html-to-image_es_index_1gk40bvx2bftt.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0bz67659f5z-3._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0ocrceo0c9psx._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1alv566ojmz5j._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1khq67j4vo9y4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_0ftnv26hg1lry._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dagmbznysrc2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuznb72p7z._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +13 -13
- 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/061bksch79zq2.js +1 -0
- package/.next/standalone/.next/static/chunks/{0wobqgosirs8p.js → 1l9lji2he-mbw.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1kduj74-715jh.js → 1mkf3bas1g5ka.js} +1 -1
- package/.next/standalone/.next/static/chunks/22gs9785ug-vp.js +1 -0
- package/.next/standalone/.next/static/chunks/{0el9n3h9_zp5m.js → 2f9-xdgd1o3r5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0umzct31duk5g.js → 2q-6h4rclnu98.js} +1 -1
- package/.next/standalone/.next/static/chunks/{27cavoc8paelg.js → 2x-77r0k0xm3b.js} +1 -1
- package/.next/standalone/.next/static/chunks/2xox4fr0q-ftn.js +1 -0
- package/.next/standalone/.next/static/chunks/3lgxb73wehfv2.js +1 -0
- package/.next/standalone/.next/static/chunks/{063al_q720fkj.js → 3xgxl1s_in776.js} +2 -2
- package/.next/standalone/.next/static/chunks/44rukkkzacqkl.js +6 -0
- package/.next/standalone/SECURITY.md +20 -4
- package/.next/standalone/fp-cloud-cli/CHANGELOG.md +15 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/_version.py +1 -1
- package/.next/standalone/fp-cloud-cli/uv.lock +4 -4
- 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/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 +24 -24
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +26 -26
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +41 -40
- package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-validation.js +814 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +1 -799
- package/.next/standalone/node_modules/next/dist/server/base-server.js +39 -5
- 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/dedupe-fetch.js +4 -43
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch-symbol.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +3 -7
- package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +77 -12
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +12 -0
- package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +30 -14
- package/.next/standalone/node_modules/next/dist/server/next-server.js +10 -11
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +29 -23
- package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +85 -8
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/web/adapter.js +124 -65
- package/.next/standalone/node_modules/next/dist/server/web/forward-trace-context.js +102 -0
- 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 +10 -10
- package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
- package/.next/standalone/node_modules/react/package.json +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +31 -27
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +33 -27
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +38 -30
- package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/package.json +2 -2
- package/.next/standalone/package.json +10 -10
- package/.next/standalone/sdk/python/CHANGELOG.md +8 -4
- package/.next/standalone/sdk/python/failproofai_sdk/evaluator/source.py +2 -2
- package/.next/standalone/sdk/python/pyproject.toml +2 -7
- package/.next/standalone/sdk/python/skill/references/frameworks.md +0 -15
- package/.next/standalone/sdk/python/tests/test_docs.py +1 -4
- package/.next/standalone/sdk/python/tests/test_evaluator_source.py +1 -1
- package/.next/standalone/sdk/python/tests/test_packaging.py +4 -7
- package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +2 -13
- package/.next/standalone/sdk/python/uv.lock +40 -902
- package/.next/standalone/sdk/typescript/CHANGELOG.md +52 -0
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +176 -68
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package.json +2 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +115 -98
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +171 -149
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +5 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +27 -15
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +2 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/deno-npm.ts +1 -1
- package/.next/standalone/server.js +1 -1
- package/README.md +0 -6
- package/dist/cli.mjs +369 -221
- package/dist/worker.mjs +1 -1
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +10 -10
- package/scripts/sync-agent-cli-harnesses-prompt.md +26 -31
- package/src/hooks/daemon-service.ts +168 -3
- package/src/hooks/uninstall-cli.ts +3 -0
- package/.next/standalone/.codex/hooks.json +0 -76
- package/.next/standalone/.cursor/hooks.json +0 -47
- package/.next/standalone/.factory/hooks.json +0 -112
- package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t9ufnv5hi2hq._.js +0 -327
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1aaw59g-5uty7._.js +0 -322
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[externals]__0ilfh9mfnzsth._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[externals]__0ohnuzsaozaca._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pwj2h2efe5f-._.js +0 -14
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js +0 -271
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_158jo-9mwvgad._.js +0 -291
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_19r82zsxo2jj1._.js +0 -291
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js +0 -23
- package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +0 -1
- package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +0 -1
- package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +0 -1
- package/.next/standalone/.next/static/chunks/2ve23a7keupjw.js +0 -1
- package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +0 -6
- package/.next/standalone/.opencode/opencode.json +0 -4
- package/.next/standalone/.opencode/plugins/failproofai.mjs +0 -210
- package/.next/standalone/.pi/settings.json +0 -5
- package/.next/standalone/node_modules/react/cjs/react.development.js +0 -1330
- package/scripts/dev-hook.mjs +0 -333
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_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.13-beta.2"]}),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
|
package/.next/standalone/.next/server/chunks/ssr/{_1d98fyfrcaqhy._.js → _1nvqg4si0splb._.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[
|
|
1
|
+
(()=>{"use strict";module.exports=[77832,a=>{var b=a.i(5050);let c=(0,b.createServerReference)("0000c7022fca93a2f83aaf4040a2e166fad83432d7",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(77832),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=_1nvqg4si0splb._.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,"00b965b277c85d86a2470f7e452b80dc23d66fee08",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(41863),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);a.i(86017);var 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,"0090d17f6fec594ba174b5d7dd1793b522b9b4706c",null),(0,i.ensureServerEntryExports)([Q,R]),(0,d.registerServerReference)(Q,"605be625be5c2db00a26592de70742b3af3cef832e",null),(0,d.registerServerReference)(R,"60f567a5a845a39235204d579bc3985114bde7455f",null),(0,i.ensureServerEntryExports)([S,T,U,V,W]),(0,d.registerServerReference)(S,"6077de717cc7d649c3211565e5f05c068d5d149d61",null),(0,d.registerServerReference)(T,"00758f38aa1b1a8d802b31bc2e05a1b6788f9fa5eb",null),(0,d.registerServerReference)(U,"407198f3a5201ef34e2f545ff102f067b98d006262",null),(0,d.registerServerReference)(V,"7057df567101146904517819860c62c24980ef9290",null),(0,d.registerServerReference)(W,"4070facb284714772b192a9f308ccb50a9535452e3",null),(0,i.ensureServerEntryExports)([X,Y]),(0,d.registerServerReference)(X,"602db8964ac0ef99a4a52e5953ee5d6b1fde340655",null),(0,d.registerServerReference)(Y,"60f7add23f171997919317036085b99b18ea39505b",null),(0,i.ensureServerEntryExports)([Z]),(0,d.registerServerReference)(Z,"60957c11f39487120f77a12233375b1e00e21994e3",null),a.s(["0000c7022fca93a2f83aaf4040a2e166fad83432d7",()=>b.f,"00758f38aa1b1a8d802b31bc2e05a1b6788f9fa5eb",0,T,"0090d17f6fec594ba174b5d7dd1793b522b9b4706c",0,P,"00b965b277c85d86a2470f7e452b80dc23d66fee08",0,j,"404c491898e8366467cd6b6eae30ed12123fbd2855",()=>c.x,"4070facb284714772b192a9f308ccb50a9535452e3",0,W,"407198f3a5201ef34e2f545ff102f067b98d006262",0,U,"602db8964ac0ef99a4a52e5953ee5d6b1fde340655",0,X,"6077de717cc7d649c3211565e5f05c068d5d149d61",0,S,"60957c11f39487120f77a12233375b1e00e21994e3",0,Z,"60cb210271eef60505c6f6502a9575c4f4d7037a0f",()=>c.m,"60f567a5a845a39235204d579bc3985114bde7455f",0,R,"60f7add23f171997919317036085b99b18ea39505b",0,Y,"7057df567101146904517819860c62c24980ef9290",0,V],73338)}];
|
|
16
16
|
|
|
17
17
|
//# sourceMappingURL=_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[36119,81243,87481,55113,41289,a=>{"use strict";var b=a.i(37936),c=a.i(21572),d=a.i(2157),e=a.i(75818),f=a.i(8284),g=a.i(15501),h=a.i(50227),i=a.i(8674),j=a.i(93328);function k(){return(process.env.FAILPROOF_API_URL??process.env.FAILPROOFAI_API_URL??"https://api.befailproof.ai").replace(/\/+$/,"")}class l extends Error{status;code;retryAfterSecs;constructor(a,b,c,d){super(c),this.status=a,this.code=b,this.retryAfterSecs=d,this.name="AuthApiError"}}async function m(a){let b={};try{b=await a.json()}catch{}let c=b.code??`http_${a.status}`,d=b.message??b.detail??a.statusText??"request failed",e=b.retry_after_secs;if(void 0===e){let b=a.headers.get("retry-after");if(b){let a=Number(b);Number.isFinite(a)&&(e=a)}}return void 0!==e&&(e=Math.max(0,Math.min(86400,e))),new l(a.status,c,d,e)}async function n(a,b){try{return await fetch(a,{...b,signal:function(a){let b=AbortSignal.timeout(1e4);if(!a)return b;let c=AbortSignal.any;if(c)return c([b,a]);let d=new AbortController;if(b.aborted)d.abort(b.reason);else b.addEventListener("abort",()=>d.abort(b.reason),{once:!0});if(a.aborted)d.abort(a.reason);else a.addEventListener("abort",()=>d.abort(a.reason),{once:!0});return d.signal}(b.signal??void 0)})}catch(d){let c=function(a){if(null===a||"object"!=typeof a)return!1;let b=a.name;return"AbortError"===b||"TimeoutError"===b}(d);if((0,j.f)("api_server_unreachable",{kind:c?"timeout":"network",path:function(a){try{return new URL(a).pathname}catch{return a}}(a),method:"string"==typeof b.method?b.method:"GET"}),c)throw new l(0,"timeout",`request to ${a} timed out after 10000ms`);throw d}}async function o(a,b,c){let d={"content-type":"application/json"};c?.accessToken&&(d.authorization=`Bearer ${c.accessToken}`);let e=await n(`${k()}${a}`,{method:"POST",headers:d,body:JSON.stringify(b)});if(204!==e.status){if(!e.ok)throw await m(e);return await e.json()}}async function p(a,b){let c=await n(`${k()}${a}`,{method:"GET",headers:{authorization:`Bearer ${b}`}});if(!c.ok)throw await m(c);return await c.json()}async function q(a){return o("/v0/auth/token/refresh",{refresh_token:a})}async function r(a){return p("/v0/auth/me",a)}function s(){let a=process.env.FAILPROOFAI_AUTH_DIR;return a?(0,h.join)(a,"session.json"):(0,e.e)()}function t(){let a=s();if(!(0,d.existsSync)(a))return null;try{let b=(0,d.readFileSync)(a,"utf-8"),c=JSON.parse(b);if("string"!=typeof c.access_token||"string"!=typeof c.refresh_token||"number"!=typeof c.access_expires_at||"object"!=typeof c.user||!c.user||"string"!=typeof c.user.id||"string"!=typeof c.user.email)return null;return{access_token:c.access_token,refresh_token:c.refresh_token,access_expires_at:c.access_expires_at,refresh_expires_at:"number"==typeof c.refresh_expires_at?c.refresh_expires_at:c.access_expires_at,user:{id:c.user.id,email:c.user.email}}}catch{return null}}function u(){let a=s();(0,d.existsSync)(a)&&(0,d.rmSync)(a,{force:!0});try{let a=(0,e.u)();if(!(0,d.existsSync)(a))return;for(let b of(0,d.readdirSync)(a)){if(!b.startsWith("backup-layout"))continue;let c=(0,h.resolve)(a,b,"auth.json");(0,d.existsSync)(c)&&(0,d.rmSync)(c,{force:!0})}}catch{}}let v=new Map;async function w(a){let b=v.get(a.refresh_token);if(b)return b;let c=(async()=>{let b=function(a,b){let c=Math.floor(Date.now()/1e3),d=a.user??b;if(!d)throw Error("authFromTokenResponse: missing user identity");return{access_token:a.access_token,refresh_token:a.refresh_token,access_expires_at:c+a.access_expires_in,refresh_expires_at:c+a.refresh_expires_in,user:d}}(await q(a.refresh_token),a.user);return(0,i.f)(s(),b),b})();v.set(a.refresh_token,c);try{return await c}finally{v.delete(a.refresh_token)}}async function x(){let a=t();if(!a)return null;let b=Math.floor(Date.now()/1e3);if(a.access_expires_at-b>60)return a;try{return await w(a)}catch(a){return a instanceof l&&401===a.status&&u(),null}}async function y(){let a=await x();if(!a)return null;try{return{me:await r(a.access_token),auth:a}}catch(a){if(a instanceof l&&401===a.status){let a=t();if(!a)return null;try{let b=await w(a);return{me:await r(b.access_token),auth:b}}catch(a){a instanceof l&&401===a.status&&u()}}return null}}a.s(["M",0,t,"s",0,y],81243);var z=a.i(13095);async function A(){let a=(0,c.s)(),b=function(){let a,b;try{a=(0,d.readFileSync)((0,e.H)(void 0),"utf8")}catch{return null}try{b=JSON.parse(a)}catch{return null}if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b,f=a=>"number"==typeof a&&Number.isFinite(a)?a:null,g=f(c.schema);return{schema:g,nextDueAtMs:f(c.next_due_at_ms),lastAttemptAtMs:f(c.last_attempt_at_ms),lastRunAtMs:f(c.last_run_at_ms),lastExitCode:f(c.last_exit_code),schemaAhead:null!==g&&g>1}}(),h=(0,g.t)(),i=t(),j=(0,f.v)();return{auto:a.audit.auto,intervalDays:a.audit.intervalDays,signedInAs:i?{id:i.user.id,email:i.user.email}:null,daemon:j,schedule:b?{nextDueAtMs:b.nextDueAtMs,lastAttemptAtMs:b.lastAttemptAtMs,lastRunAtMs:b.lastRunAtMs,lastExitCode:b.lastExitCode,schemaAhead:b.schemaAhead}:null,lastResultAt:h?.cachedAt??null,lastScan:h?{finishedAt:h.cachedAt,findings:h.findings,sessionsScanned:h.sessionsScanned,eventsScanned:h.eventsScanned}:null,daemonStartedAtMs:"running"===j?(0,f.u)():null}}function B(a){return"off"===a||"observe"===a||"enforce"===a?a:null}(0,z.ensureServerEntryExports)([A]),(0,b.registerServerReference)(A,"00c79e28570789986ae1d50a53934e133a5014d54d",null),a.s(["f",0,A],36119);let C="enforce",D=["typesafe","openrouter","vercel","cloudflare","custom","failproofai"],E="failproofai",F="FAILPROOFAI_JEV_API_KEY",G=d.constants.O_RDONLY|(d.constants.O_NONBLOCK??0);function H(){return(0,e.z)()}let I=/^(?:(?:typesafe|typesafe-ai)\/)?jev-(\d{1,4})\.(\d{1,4})(?:\.(\d{1,6}))?(?:-(\d{8}))?$/,J=/^[0-9a-f]{32}$/,K=/^[\x21-\x7e]{1,4096}$/,L=/^[A-Za-z0-9._:/@~+-]{1,200}$/,M=new Set(["localhost","127.0.0.1","[::1]","::1"]);function N(a){return"string"!=typeof a||0===a.length?"the API key is empty":K.test(a)?null:"the API key must be one line of visible ASCII with no spaces (at most 4096 characters)"}let O=["key","token","secret","password","passwd","credential","auth","signature"],P=new Set(["pw","pass","sig","sid","jwt","bearer","session","code","access"]),Q=/^[A-Za-z0-9._-]{1,40}$/;function R(a){let b;if("string"!=typeof a||""===a.trim())return{ok:!1,problem:"baseUrl must be a non-empty string"};try{b=new URL(a.trim())}catch{return{ok:!1,problem:"baseUrl is not a valid URL"}}if("https:"!==b.protocol&&!("http:"===b.protocol&&M.has(b.hostname)))return{ok:!1,problem:"baseUrl must use https (plain http is accepted only for localhost)"};if(b.username||b.password)return{ok:!1,problem:"baseUrl must not carry credentials; put the key in the key field"};if(b.hash)return{ok:!1,problem:"baseUrl must not have a #fragment"};let c=function(a){for(let[b,c]of a.searchParams){let a=Q.test(b)?`?${b}=`:"one of its query parameters",d=b.toLowerCase().replace(/[^a-z0-9]/g,"");if(O.some(a=>d.includes(a))||P.has(d))return`baseUrl must not carry a credential in its query string, and ${a} is one; put the key in the key field`;if(X(c))return`baseUrl's ${a} value is shaped like a credential (not repeated here); put the key in the key field`}return null}(b);return c?{ok:!1,problem:c}:(b.pathname=b.pathname.replace(/\/+$/,"")||"/",{ok:!0,value:b.toString()})}function S(a){try{let b=new URL(a);if(!b.search&&!b.username&&!b.password)return{url:a,hadQuery:!1};let c=""!==b.search;return b.search="",b.username="",b.password="",{url:b.toString(),hadQuery:c}}catch{let b=a.indexOf("?");return{url:(b<0?a:a.slice(0,b)).replace(/^([^:/?#]+:\/\/)[^/?#]*@/,"$1"),hadQuery:b>=0}}}let T=["/chat/completions","/systemone","/completions","/embeddings","/models"],U={"api.typesafe.ai":"typesafe","openrouter.ai":"openrouter","ai-gateway.vercel.sh":"vercel","api.cloudflare.com":"cloudflare"};function V(a){try{let b=new URL(a);if("https:"!==b.protocol&&!("http:"===b.protocol&&M.has(b.hostname)))return null;return b.origin}catch{return null}}let W=/^(?:(?:sk|rk)[-_]|gh[pousr]_|github_pat_|glpat-|xox[abprs]-|AKIA[0-9A-Z]{12}|AIza[0-9A-Za-z_-]{20}|hf_[A-Za-z0-9]{16}|vck_)/;function X(a){return!!W.test(a)||a.length>=32&&!a.includes("/")&&!/jev/i.test(a)&&/[A-Za-z]/.test(a)&&/[0-9]/.test(a)}function Y(a,b,c){let d;if(!a||"object"!=typeof a||Array.isArray(a))return{ok:!1,problem:"the file must hold a JSON object"};let e=a.provider;if("string"!=typeof e||!D.includes(e))return{ok:!1,problem:`provider must be one of ${D.join(", ")}`};if(e===E){if(void 0!==a.apiKey)return{ok:!1,problem:"provider failproofai takes its key from this machine's FailproofAI Cloud connection (credentials.json), never from jev.json — remove apiKey from the file (not repeated here)"};if(!c)return{ok:!1,problem:"this machine is not connected to FailproofAI Cloud with a key that carries jev:evaluate — connect it with: failproofai config --token <key>",notConnected:!0};let b=N(c.key);if(b)return{ok:!1,problem:`the FailproofAI Cloud key in credentials.json is unusable: ${b}`};d=c.key}else if(void 0!==a.apiKey){let b=N(a.apiKey);if(b)return{ok:!1,problem:b};d=a.apiKey}else{if(null==b||""===b)return{ok:!1,problem:`no API key: set apiKey in the file (failproofai jev setup), or ${F} for this session`,missingKey:!0};let a=N(b);if(a)return{ok:!1,problem:`${F} is set but invalid: ${a}`};d=b}let f={provider:e,apiKey:d,mode:C,timeoutMs:e===E?5e3:3e3};if(void 0!==a.baseUrl){let b=R(a.baseUrl);if(!b.ok)return b;f.baseUrl=b.value}else if("custom"===e||e===E)return{ok:!1,problem:`provider ${e} needs a baseUrl`};if(e===E&&c){let a=V(c.url),b=V(f.baseUrl);if(null===a)return{ok:!1,problem:"the FailproofAI Cloud credential in credentials.json names no usable origin — reconnect: failproofai config --token <key>"};if(b!==a)return{ok:!1,problem:`baseUrl is on ${b??"an unusable origin"}, but this machine's FailproofAI Cloud key was issued for ${a} — the key is only ever sent to the origin it was issued for. Point jev.json back at it: failproofai jev setup --provider failproofai`};f.credentialOrigin=a}if("cloudflare"===e){if("string"!=typeof a.accountId||!J.test(a.accountId))return{ok:!1,problem:"provider cloudflare needs accountId: 32 lowercase hex characters"};f.accountId=a.accountId}if(void 0!==a.model){let b=function(a){let b;if("string"!=typeof a||!L.test(a))return{ok:!1,problem:"model must be 1–200 characters of letters, digits and . _ : / @ ~ + -"};if(X(a))return{ok:!1,problem:"model looks like an API key, not a model id (not repeated here). The key goes on stdin: failproofai jev setup --key-stdin"};let c=(b=I.exec(a))?{major:Number(b[1]),minor:Number(b[2]),patch:void 0===b[3]?null:Number(b[3]),date:b[4]??null}:null;return c&&(1!==c.major||13!==c.minor)?{ok:!1,problem:`model ${a} names Jev ${c.major}.${c.minor}, but the thresholds are calibrated for Jev 1.13 — every call would fall back to regex`}:{ok:!0,value:a}}(a.model);if(!b.ok)return b;if(b.value===d)return{ok:!1,problem:"model is the API key (not repeated here); give the model id, or leave --model out for the provider's default"};f.model=b.value}if(void 0!==a.timeoutMs){let b=a.timeoutMs;if("number"!=typeof b||!Number.isInteger(b)||b<100||b>1e4)return{ok:!1,problem:"timeoutMs must be a whole number of milliseconds from 100 to 10000"};f.timeoutMs=b}if(void 0!==a.mode){let b=B(a.mode);if(null===b)return{ok:!1,problem:'mode must be "off", "observe" or "enforce"'};f.mode=b}return{ok:!0,value:f}}function Z(a){if(a.provider!==E)return Y(a);let{apiKey:b,credentialOrigin:c,...d}=a;return"string"!=typeof c||""===c?{ok:!1,problem:"this FailproofAI Cloud config names no credential origin — it did not come from the loader, so its key is not sent anywhere"}:Y(d,null,{url:c,key:b})}let $="supplied-by-the-environment";function _(a){aa();try{let b=511&(0,d.statSync)((0,h.dirname)(a)).mode;return(18&b)!=0?b:null}catch{return null}}function aa(){return"win32"!==process.platform}function ab(){let a,b,e,f,g=H();try{a=(0,d.openSync)(g,G)}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return{status:"absent",path:g};return{status:"refused",path:g,mode:null,reason:"unreadable",problem:`cannot open it (${a??"error"})`}}let i=null;try{let c=(0,d.fstatSync)(a);if(!c.isFile())return{status:"refused",path:g,mode:null,reason:"unreadable",problem:"it is not a regular file"};i=511&c.mode;let e=()=>{let b=Buffer.alloc(c.size),e=0;for(;e<b.length;){let c=(0,d.readSync)(a,b,e,b.length-e,e);if(0===c)break;e+=c}return b.subarray(0,e).toString("utf8")};if(aa()&&(63&i)!=0){let a=!1;try{a=c.size<=65536&&function(a){try{let b=JSON.parse(a);return null!==b&&"object"==typeof b&&!Array.isArray(b)&&void 0===b.apiKey}catch{return!1}}(e())}catch{}let b=i.toString(8).padStart(4,"0");return{status:"refused",path:g,mode:i,reason:"too-open",problem:a?(18&i)!=0?`its permissions are ${b}; other users could change it, and with it where Jev sends tool calls and prompts, so it must be owner-only (chmod 600 ${g})`:`its permissions are ${b}; it must be owner-only (chmod 600 ${g})`:`its permissions are ${b}; it holds a key, so it must be owner-only (chmod 600 ${g})`,fix:`chmod 600 ${g}`,...a?{keyless:!0}:{}}}let f=_(g);if(null!==f)return{status:"refused",path:g,mode:i,reason:"too-open",problem:`its directory ${(0,h.dirname)(g)} is ${f.toString(8).padStart(4,"0")} — other users can write there, so they can put their own config in its place; it must be owner-only (chmod 700 ${(0,h.dirname)(g)})`,fix:`chmod 700 ${(0,h.dirname)(g)}`};if(c.size>65536)return{status:"refused",path:g,mode:i,reason:"too-large",problem:"it is larger than 65536 bytes"};b=e()}catch(a){return{status:"refused",path:g,mode:i,reason:"unreadable",problem:`cannot read it (${a.code??"error"})`}}finally{try{(0,d.closeSync)(a)}catch{}}try{e=JSON.parse(b)}catch{return{status:"refused",path:g,mode:i,reason:"not-json",problem:"it is not valid JSON"}}let j=null===e||"object"!=typeof e||Array.isArray(e)?null:e;if(j?.mode==="off"){let a=Y(e,$,ae(j));return a.ok?{status:"off",path:g,mode:i,routing:ad(a.value)}:{status:"refused",path:g,mode:i,reason:"invalid",problem:a.problem}}if(j?.provider===E){let a=(0,c.R)();if("refused"===a.status)return{status:"refused",path:g,mode:i,reason:"too-open"===a.reason?"too-open":"unreadable",problem:`the FailproofAI Cloud credential was refused: ${a.problem}`,...a.fix?{fix:a.fix}:{},credentialsMode:a.mode};let b=Y(e,null,"ok"===a.status?a.credential:null);if(b.ok)return{status:"ok",path:g,mode:i,keySource:"cloud",config:b.value};if(!0===b.notConnected){let c=Y(e,null,ae(j));return c.ok?"absent"===a.status&&a.connected?{status:"key-lacks-jev",path:g,mode:i,routing:ad(c.value),problem:ac}:{status:"not-connected",path:g,mode:i,routing:ad(c.value),problem:b.problem}:{status:"refused",path:g,mode:i,reason:"invalid",problem:c.problem}}return{status:"refused",path:g,mode:i,reason:"invalid",problem:b.problem}}let k=Y(e,void 0===(f=process.env[F])||""===f?null:f);if(!k.ok){if(!0===k.missingKey){let a=Y(e,$);return a.ok?{status:"key-missing",path:g,mode:i,routing:ad(a.value),problem:`it carries no apiKey, so the key comes from ${F} — which is not set in this environment`}:{status:"refused",path:g,mode:i,reason:"invalid",problem:a.problem}}return{status:"refused",path:g,mode:i,reason:"invalid",problem:k.problem}}return{status:"ok",path:g,mode:i,keySource:void 0!==e.apiKey?"file":"env",config:k.value}}let ac="this machine is connected to FailproofAI Cloud, but no Jev key is stored for that connection (its key lacks jev:evaluate, or the connect could not confirm it)";function ad(a){let b={provider:a.provider,mode:a.mode,timeoutMs:a.timeoutMs};return void 0!==a.baseUrl&&(b.baseUrl=a.baseUrl),void 0!==a.accountId&&(b.accountId=a.accountId),void 0!==a.model&&(b.model=a.model),b}function ae(a){let b="https://stand-in.invalid";if("string"==typeof a.baseUrl)try{b=new URL(a.baseUrl.trim()).origin}catch{}return{url:b,key:$}}function af(){let a,b=H();try{a=(0,d.openSync)(b,G)}catch{return null}try{let c=(0,d.fstatSync)(a);if(!c.isFile()||c.size>65536)return null;let e=Buffer.alloc(c.size),f=0;for(;f<e.length;){let b=(0,d.readSync)(a,e,f,e.length-f,f);if(0===b)break;f+=b}let g=JSON.parse(e.subarray(0,f).toString("utf8"));if(!g||"object"!=typeof g||Array.isArray(g))return null;aa();let h=511&c.mode,i=null!==h&&((63&h)!=0||null!==_(b));return{raw:g,mode:h,tooOpen:i}}catch{return null}finally{try{(0,d.closeSync)(a)}catch{}}}function ag(){return af()?.raw??null}a.s(["N",0,J,"U",0,C,"F",0,F,"e",0,E,"n",0,D,"T",0,S,"f",0,function(a){let b;try{b=new URL(a)}catch{return null}let c=b.pathname.replace(/\/+$/,""),d=T.find(a=>c.toLowerCase().endsWith(a));return void 0===d?null:(b.pathname=c.slice(0,c.length-d.length)||"/",{suffix:d,base:b.toString()})},"V",0,ab,"W",0,H,"u",0,X,"_",0,B,"O",0,function(a,b){let c=function(a){try{return U[new URL(a).hostname.toLowerCase()]??"custom"}catch{return"custom"}}(b);if("custom"===c||c===a)return null;let d=new URL(b).host;return"custom"!==a?`${d} is ${c}'s endpoint, not ${a}'s`:"cloudflare"===c?`${d} is Cloudflare Workers AI, which provider custom cannot reach — its endpoint is per-account and its answers are wrapped, and a custom endpoint is asked in TypeSafe's own shape at <url>/systemone`:null},"Z",0,af,"h",0,ag,"$",0,N,"A",0,R,"P",0,Y,"c",0,Z],87481),a.i(60526);let ah={typesafe:{baseUrl:"https://api.typesafe.ai/v1",model:"jev-1.13.0"},openrouter:{baseUrl:"https://openrouter.ai/api/v1",model:"typesafe/jev-1.13"},vercel:{baseUrl:"https://ai-gateway.vercel.sh/typesafe/v1",model:"typesafe-ai/jev"},cloudflare:{baseUrl:"https://api.cloudflare.com/client/v4",model:"typesafe/jev"},custom:{baseUrl:null,model:"jev-1.13.0"},failproofai:{baseUrl:null,model:"jev-1.13.0"}};class ai extends Error{code;retryAfter;constructor(a,b,c={}){super(b.replace(/[\u0000-\u001f\u007f-\u009f]/g," ")),this.name="JevError",this.code=a,this.retryAfter=c.retryAfter??null}}function aj(a){let b=new URL(a);return/\/systemone$/.test(b.pathname)||(b.pathname=`${b.pathname.replace(/\/+$/,"")}/systemone`),b.toString()}function ak(a){let b=function(a){let b=Z(a);if(!b.ok)throw new ai("config",b.problem);return b.value}(a),c=ah[b.provider],d=b.model??c.model,e=void 0===b.model;if("cloudflare"===b.provider)return{via:"cloudflare",endpoint:function(a,b){if(!b)return((a,b=ah.cloudflare.baseUrl)=>`${b.replace(/\/+$/,"")}/accounts/${a}/ai/run`)(a);let c=new URL(b);return/\/ai\/run$/.test(c.pathname)||(c.pathname=`${c.pathname.replace(/\/+$/,"")}/accounts/${a}/ai/run`),c.toString()}(b.accountId,b.baseUrl),model:d,modelIsDefault:e};let f=b.baseUrl??c.baseUrl;if(!f)throw new ai("config",`provider ${b.provider} needs a baseUrl`);return{via:b.provider,endpoint:aj(f),model:d,modelIsDefault:e}}function al(a){try{let b=new URL(a),c=`${b.origin}${b.pathname}`;return b.search?`${c}?…`:c}catch{return"(invalid URL)"}}a.s(["J",0,al,"G",0,function(a){let b=aj(a);return b===new URL(a).toString()?"That is already the Jev endpoint itself: this field takes the base it sits under (where <base>/models is read), and failproofai adds /systemone on its own.":`A Jev request goes to <base>/systemone, and failproofai appends that itself, so ${al(a)} would be asked at ${al(b)}.`},"B",0,ak],55113);var am=a.i(1144);let an=["evaluator","jevDecision","jevCleared","jevFallbackReason","jevLatencyMs","jevModel","jevMode","jevChecks"],ao=new Set(["jev","jev-fallback"]),ap=new Set(["allow","instruct","deny"]),aq=new Set(["observe","enforce"]),ar=/^([a-z0-9]+(?:-[a-z0-9]+)*)\s*(?:$|[:(])/,as=/^http-\d{3}$/,at="other",au=new Set(["aborted","cloudflare-error","cloudflare-incomplete","config","error","malformed","model-mismatch","network","no-api-key","no-transport","other","out-of-credits","prepare-error","provider-refused","rate-limited","request-cut","request-too-large","timeout","truncated","unavailable","upstream-error"]),av=new Map([["prepare","prepare-error"],["error","error"],["timeout","timeout"],["network","network"],["malformed","malformed"],["truncated","truncated"],["rate-limited","rate-limited"],["out-of-credits","out-of-credits"],["model-mismatch","model-mismatch"],["request-too-large","request-too-large"],["config","config"]]),aw=/^[A-Za-z0-9._:/@~+-]{1,200}$/,ax=/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/,ay=/^(?:custom|pack|cloud|failproofai|\.failproofai-[A-Za-z0-9_-]{1,32})\//;function az(a){return!("string"!=typeof a||0===a.length||[...a].length>200||ax.test(a))&&(!/\s/.test(a)||ay.test(a))}let aA=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/,aB=/^[a-z][a-z0-9_]{0,31}$/,aC=new Set(["none","deny","instruct","overridden"]),aD=new Set(["not-detected","exempt","fired","injection","user-asked","op-requested","task-step","downgraded","scan-incomplete"]),aE=a=>"number"==typeof a&&Number.isFinite(a)&&a>=0&&a<=1,aF=a=>Math.round(100*a)/100;function aG(a){if(!an.some(b=>void 0!==a[b]))return a;let b={...a},c=a=>{delete b[a]};"string"==typeof b.evaluator&&ao.has(b.evaluator)||c("evaluator"),"string"==typeof b.jevDecision&&ap.has(b.jevDecision)||c("jevDecision");let d=void 0!==b.jevMode&&!("string"==typeof b.jevMode&&aq.has(b.jevMode));if("string"==typeof b.jevMode&&aq.has(b.jevMode)||c("jevMode"),d&&c("jevCleared"),Array.isArray(b.jevCleared)){let a=[...new Set(b.jevCleared.filter(az))].slice(0,64);b.jevCleared=a}else c("jevCleared");let e=function(a){if("string"!=typeof a)return;let b=a.trim().toLowerCase();if(0===b.length)return;let c=ar.exec(b)?.[1];if(void 0===c||c.length>40)return at;if(as.test(c))return c;let d=av.get(c)??c;return au.has(d)?d:at}(b.jevFallbackReason);void 0===e?c("jevFallbackReason"):b.jevFallbackReason=e,"number"==typeof b.jevLatencyMs&&Number.isFinite(b.jevLatencyMs)&&b.jevLatencyMs>=0?b.jevLatencyMs=Math.round(b.jevLatencyMs):c("jevLatencyMs"),"string"==typeof b.jevModel&&aw.test(b.jevModel.trim())?b.jevModel=b.jevModel.trim():c("jevModel");let f="jev"===b.evaluator?function(a){if(!Array.isArray(a))return;let b=[];for(let c of a){if(b.length>=32)break;let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.check||!aA.test(a.check)||"string"!=typeof a.verdict||!aC.has(a.verdict)||"string"!=typeof a.why||!aD.has(a.why)||!aE(a.p))return null;let b={check:a.check,verdict:a.verdict,why:a.why,p:aF(a.p)};if("string"==typeof a.policy&&az(a.policy)&&!/\s/.test(a.policy)&&/^(?:cloud|pack)\//.test(a.policy)&&(b.policy=a.policy),aE(a.exempt)&&(b.exempt=aF(a.exempt)),!0===a.watched&&(b.watched=!0),a.probes&&"object"==typeof a.probes&&!Array.isArray(a.probes)){let c={};for(let[b,d]of Object.entries(a.probes)){if(Object.keys(c).length>=8)break;aB.test(b)&&aE(d)&&(c[b]=aF(d))}Object.keys(c).length>0&&(b.probes=c)}return b}(c);a&&b.push(a)}return a.length>0&&0===b.length?void 0:b}(b.jevChecks):void 0;return void 0===f?c("jevChecks"):b.jevChecks=f,b}function aH(a){return"number"!=typeof a||Number.isNaN(a)||a<=0?864e5:Math.min(a,7776e6)}function aI(a){return"number"==typeof a&&Number.isFinite(a)?a:Date.now()}function aJ(a,b){if(0===a.length)return null;let c=Math.ceil(b/100*a.length);return a[Math.min(a.length,Math.max(1,c))-1]}class aK{counts=new Map;bump(a){this.counts.set(a,(this.counts.get(a)??0)+1)}toRecord(){return Object.fromEntries(this.counts)}}async function aL(a={}){let b=aH(a.windowMs),c=aI(a.now),d=[];try{d=(0,am.t)(c-b)}catch{d=[]}return function(a,b={}){let c=aH(b.windowMs),d=aI(b.now),e=d-c,f={windowMs:c,total:0,fallbackRate:0,fallbackReasons:{},latencyP50Ms:null,latencyP95Ms:null,clearsByPolicy:{},since:e,answered:0,fallbacks:0,notConsulted:0,noRequest:0,decisions:{allow:0,instruct:0,deny:0},modes:{observe:0,enforce:0},observeClearsByPolicy:{},models:{}},g=[],h=new aK,i=new aK,j=new aK,k=new aK;for(let b of a){var l;if("number"!=typeof b.timestamp||b.timestamp<e||b.timestamp>d)continue;let a=aG(b),c="jev-fallback"===(l=aG(a)).evaluator?"fallback":"jev"!==l.evaluator?null:Array.isArray(l.jevChecks)&&0===l.jevChecks.length?"no-request":void 0!==l.jevCleared||void 0!==l.jevLatencyMs||void 0!==l.jevModel||"deny"===l.jevDecision||"instruct"===l.jevDecision?"answered":"allow"===l.jevDecision?"no-request":"not-consulted";if(null===c)continue;if("not-consulted"===c){f.notConsulted+=1;continue}if("no-request"===c){f.noRequest+=1;continue}if(f.total+=1,a.jevMode&&(f.modes[a.jevMode]+=1),"fallback"===c){f.fallbacks+=1,h.bump(a.jevFallbackReason??"unknown");continue}f.answered+=1,a.jevDecision&&(f.decisions[a.jevDecision]+=1),void 0!==a.jevLatencyMs&&g.push(a.jevLatencyMs),a.jevModel&&k.bump(a.jevModel);let m="observe"===a.jevMode?j:i;for(let b of a.jevCleared??[])m.bump(b)}return f.fallbackReasons=h.toRecord(),f.clearsByPolicy=i.toRecord(),f.observeClearsByPolicy=j.toRecord(),f.models=k.toRecord(),f.fallbackRate=f.total>0?f.fallbacks/f.total:0,g.sort((a,b)=>a-b),f.latencyP50Ms=aJ(g,50),f.latencyP95Ms=aJ(g,95),f}(d,{windowMs:b,now:c})}var aM=a.i(89790),aN=a.i(86304),aO=a.i(15638),aP=a.i(28120),aQ=a.i(9909),aR=a.i(91609),aS=a.i(65917),aT=a.i(75534),aU=a.i(88673);let aV="display-only";function aW(a){return a?a.length>40||X(a)?{kind:"withheld"}:{kind:"id",id:a}:{kind:"default"}}function aX(a){if(!a)return{baseUrl:"",baseUrlQueryWithheld:!1};let{url:b,hadQuery:c}=S(a);return{baseUrl:b,baseUrlQueryWithheld:c}}function aY(a){return null===a?null:a.toString(8).padStart(4,"0")}function aZ(a){return"string"==typeof a?a:""}function a$(a){try{return al(ak(function(a){if(a.provider!==E||a.credentialOrigin||"string"!=typeof a.baseUrl)return a;try{return{...a,credentialOrigin:new URL(a.baseUrl).origin}}catch{return a}}(a)).endpoint)}catch{return null}}async function a_(a){if(!a)return null;try{let a=await aL();return{windowMs:a.windowMs,total:a.total,answered:a.answered,fallbacks:a.fallbacks,fallbackRate:a.fallbackRate}}catch{return null}}async function a0(){let a=ab(),b={cloud:function(){let a=!1,b=null,d=null;try{let e=(0,c.d)(),f=e.cloud?.url??e.ingest?.url??null;if(a=null!==f,null!==f)try{d=new URL(f).host}catch{d=null}let g=e.org;b=g?g.name&&g.slug?`${g.name} (${g.slug})`:g.name??g.slug??g.id??null:null}catch{}let e="no";try{let a=(0,c.R)().status;e="ok"===a?"yes":"refused"===a?"refused":"no"}catch{e="no"}return{connected:a,org:b,host:d,jev:e}}(),path:a.path,permissions:null,provider:null,baseUrl:"",baseUrlQueryWithheld:!1,accountId:"",model:{kind:"default"},endpoint:null,mode:C,timeoutMs:null,token:null,problem:null,fix:null,reviewable:null};if("ok"===a.status){let c=a.config;return{...b,status:"ok",on:!0,permissions:aY(a.mode),provider:c.provider,...aX(c.baseUrl),accountId:c.accountId??"",model:aW(c.model??""),endpoint:a$(c),mode:c.mode??C,timeoutMs:c.timeoutMs??null,token:{source:a.keySource},stats:await a_(!0),reviewable:function(a){if(!a)return null;try{let a=function(a){let b,c,d=[],f=!1;try{f=(0,aQ.Q)();let a=(0,aQ.V)().packs;for(let b of a){let a=b.enabled;d.push(...a?b.policies.filter(b=>a.includes(b.name)):b.policies)}let c=(0,aU.f)((0,aN.r)(a));b=new Set(c.policies.map(a=>a.name))}catch{}try{c=(0,aP.q)(a)}catch{c={enabledPolicies:[]}}let g=new Set(f?[]:c.enabledPolicies.map(aT.f));for(let a of aS.f)(a.alwaysOn||g.has((0,aT.f)(a.name)))&&d.push(a);try{let a=(0,aM.D)(),c=(0,aM.h)(),e=(0,aM.O)(c,a);for(let f of(e.length>0&&(b=new Set([...b??[],...e])),c))d.push((0,aM.i)(f,a))}catch{}let i=0;try{let b=(0,aP.Y)(a??process.cwd()),d=new Set((0,aP.W)(c).map(a=>(0,h.resolve)(b,a)));if(!1!==c.customPoliciesEnabled)for(let a of[(0,h.resolve)(b,".failproofai","policies"),(0,e.E)()])for(let b of(0,aO.discoverPolicyFiles)(a))d.add(b);i=d.size}catch{i=0}return{...function(a,b){let c=0,d=0;for(let e of a)c+=1,"reviewable"===(0,aR.d)(e,b).authority&&(d+=1);return{enabled:c,reviewable:d}}(d,b),customFiles:i,jevChecks:b?[...b].filter(a=>!a.startsWith("cloud:")).length:0}}(process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd());return{enabled:a.enabled,reviewable:a.reviewable,summary:function(a){let{enabled:b,reviewable:c}=a,d=a.customFiles>0?" (policies from your own files are not counted)":"";if(0===b)return`No policies are enabled here, so there is nothing for Jev to clear${d}.`;let e=1===b?"1 enabled policy is":`${b} enabled policies are`;return 0===c?`0 of ${e} reviewable${d}.`:`${c} of ${e} reviewable: Jev may clear a deny or an instruction from those, and from no others${d}.`}(a),problem:0===a.jevChecks?"Jev has no checks installed, so it asks nothing and clears nothing. To enable it: `failproofai policies add FailproofAI/jev-policies`.":0===a.enabled||a.reviewable>0||a.customFiles>0?null:"Jev can add a deny or an instruction on this machine, but it can never clear one. No enabled policy is marked reviewable — a policy pack published before this release carries no such marks — so re-take the pack (`failproofai policies add FailproofAI/policies`) to get a marked copy, or enforce this build's builtin policies, which carry them."}}catch{return null}}(!0)}}if("key-missing"===a.status){let c=a.routing;return{...b,status:"key-missing",on:!1,permissions:aY(a.mode),provider:c.provider,...aX(c.baseUrl),accountId:c.accountId??"",model:aW(c.model??""),endpoint:a$({...c,apiKey:aV}),mode:c.mode??C,timeoutMs:c.timeoutMs??null,token:null,problem:a.problem,fix:`set ${F}, or save a token here`,stats:await a_(!0)}}if("off"===a.status||"not-connected"===a.status||"key-lacks-jev"===a.status){let d=a.routing;return{...b,status:a.status,on:!1,permissions:aY(a.mode),provider:d.provider,...aX(d.baseUrl),accountId:d.accountId??"",model:aW(d.model??""),endpoint:a$({...d,apiKey:aV}),mode:d.mode??C,timeoutMs:d.timeoutMs??null,token:"off"===a.status?function(a){if(a===E)try{return"ok"===(0,c.R)().status?{source:"cloud"}:null}catch{return null}let b=ag();return"string"==typeof b?.apiKey&&""!==b.apiKey?{source:"file"}:null}(d.provider):null,problem:"off"===a.status?null:a.problem,fix:"not-connected"===a.status?"connect this machine with a key that carries jev:evaluate: failproofai config --token <key>":"key-lacks-jev"===a.status?"reconnect this machine with a key that carries jev:evaluate: failproofai config --token <key>":null,stats:null}}if("refused"===a.status){var d;let c,e=(d=ag(),c=aZ(d?.provider),{provider:D.includes(c)?c:null,baseUrl:aZ(d?.baseUrl),accountId:J.test(aZ(d?.accountId))?aZ(d?.accountId):"",model:aZ(d?.model),mode:B(d?.mode)??C});return{...b,status:"refused",on:!1,permissions:aY(a.mode),provider:e.provider,...aX(e.baseUrl),accountId:e.accountId,model:aW(e.model),endpoint:null===e.provider?null:a$({provider:e.provider,apiKey:aV,...e.baseUrl?{baseUrl:e.baseUrl}:{},...e.accountId?{accountId:e.accountId}:{},mode:e.mode}),mode:e.mode,problem:a.problem,fix:a.fix??null,stats:null}}return{...b,status:"absent",on:!1,stats:null}}(0,z.ensureServerEntryExports)([a0]),(0,b.registerServerReference)(a0,"003a559f3d271119cc52526aa453f876d1d33ecbb1",null),a.s(["f",0,a0],41289)}];
|
|
1
|
+
module.exports=[36119,81243,87481,55113,41289,a=>{"use strict";var b=a.i(37936),c=a.i(21572),d=a.i(2157),e=a.i(75818),f=a.i(8284),g=a.i(15501),h=a.i(50227),i=a.i(8674),j=a.i(93328);function k(){return(process.env.FAILPROOF_API_URL??process.env.FAILPROOFAI_API_URL??"https://api.befailproof.ai").replace(/\/+$/,"")}class l extends Error{status;code;retryAfterSecs;constructor(a,b,c,d){super(c),this.status=a,this.code=b,this.retryAfterSecs=d,this.name="AuthApiError"}}async function m(a){let b={};try{b=await a.json()}catch{}let c=b.code??`http_${a.status}`,d=b.message??b.detail??a.statusText??"request failed",e=b.retry_after_secs;if(void 0===e){let b=a.headers.get("retry-after");if(b){let a=Number(b);Number.isFinite(a)&&(e=a)}}return void 0!==e&&(e=Math.max(0,Math.min(86400,e))),new l(a.status,c,d,e)}async function n(a,b){try{return await fetch(a,{...b,signal:function(a){let b=AbortSignal.timeout(1e4);if(!a)return b;let c=AbortSignal.any;if(c)return c([b,a]);let d=new AbortController;if(b.aborted)d.abort(b.reason);else b.addEventListener("abort",()=>d.abort(b.reason),{once:!0});if(a.aborted)d.abort(a.reason);else a.addEventListener("abort",()=>d.abort(a.reason),{once:!0});return d.signal}(b.signal??void 0)})}catch(d){let c=function(a){if(null===a||"object"!=typeof a)return!1;let b=a.name;return"AbortError"===b||"TimeoutError"===b}(d);if((0,j.f)("api_server_unreachable",{kind:c?"timeout":"network",path:function(a){try{return new URL(a).pathname}catch{return a}}(a),method:"string"==typeof b.method?b.method:"GET"}),c)throw new l(0,"timeout",`request to ${a} timed out after 10000ms`);throw d}}async function o(a,b,c){let d={"content-type":"application/json"};c?.accessToken&&(d.authorization=`Bearer ${c.accessToken}`);let e=await n(`${k()}${a}`,{method:"POST",headers:d,body:JSON.stringify(b)});if(204!==e.status){if(!e.ok)throw await m(e);return await e.json()}}async function p(a,b){let c=await n(`${k()}${a}`,{method:"GET",headers:{authorization:`Bearer ${b}`}});if(!c.ok)throw await m(c);return await c.json()}async function q(a){return o("/v0/auth/token/refresh",{refresh_token:a})}async function r(a){return p("/v0/auth/me",a)}function s(){let a=process.env.FAILPROOFAI_AUTH_DIR;return a?(0,h.join)(a,"session.json"):(0,e.e)()}function t(){let a=s();if(!(0,d.existsSync)(a))return null;try{let b=(0,d.readFileSync)(a,"utf-8"),c=JSON.parse(b);if("string"!=typeof c.access_token||"string"!=typeof c.refresh_token||"number"!=typeof c.access_expires_at||"object"!=typeof c.user||!c.user||"string"!=typeof c.user.id||"string"!=typeof c.user.email)return null;return{access_token:c.access_token,refresh_token:c.refresh_token,access_expires_at:c.access_expires_at,refresh_expires_at:"number"==typeof c.refresh_expires_at?c.refresh_expires_at:c.access_expires_at,user:{id:c.user.id,email:c.user.email}}}catch{return null}}function u(){let a=s();(0,d.existsSync)(a)&&(0,d.rmSync)(a,{force:!0});try{let a=(0,e.u)();if(!(0,d.existsSync)(a))return;for(let b of(0,d.readdirSync)(a)){if(!b.startsWith("backup-layout"))continue;let c=(0,h.resolve)(a,b,"auth.json");(0,d.existsSync)(c)&&(0,d.rmSync)(c,{force:!0})}}catch{}}let v=new Map;async function w(a){let b=v.get(a.refresh_token);if(b)return b;let c=(async()=>{let b=function(a,b){let c=Math.floor(Date.now()/1e3),d=a.user??b;if(!d)throw Error("authFromTokenResponse: missing user identity");return{access_token:a.access_token,refresh_token:a.refresh_token,access_expires_at:c+a.access_expires_in,refresh_expires_at:c+a.refresh_expires_in,user:d}}(await q(a.refresh_token),a.user);return(0,i.f)(s(),b),b})();v.set(a.refresh_token,c);try{return await c}finally{v.delete(a.refresh_token)}}async function x(){let a=t();if(!a)return null;let b=Math.floor(Date.now()/1e3);if(a.access_expires_at-b>60)return a;try{return await w(a)}catch(a){return a instanceof l&&401===a.status&&u(),null}}async function y(){let a=await x();if(!a)return null;try{return{me:await r(a.access_token),auth:a}}catch(a){if(a instanceof l&&401===a.status){let a=t();if(!a)return null;try{let b=await w(a);return{me:await r(b.access_token),auth:b}}catch(a){a instanceof l&&401===a.status&&u()}}return null}}a.s(["M",0,t,"s",0,y],81243);var z=a.i(13095);async function A(){let a=(0,c.s)(),b=function(){let a,b;try{a=(0,d.readFileSync)((0,e.H)(void 0),"utf8")}catch{return null}try{b=JSON.parse(a)}catch{return null}if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b,f=a=>"number"==typeof a&&Number.isFinite(a)?a:null,g=f(c.schema);return{schema:g,nextDueAtMs:f(c.next_due_at_ms),lastAttemptAtMs:f(c.last_attempt_at_ms),lastRunAtMs:f(c.last_run_at_ms),lastExitCode:f(c.last_exit_code),schemaAhead:null!==g&&g>1}}(),h=(0,g.t)(),i=t(),j=(0,f.v)();return{auto:a.audit.auto,intervalDays:a.audit.intervalDays,signedInAs:i?{id:i.user.id,email:i.user.email}:null,daemon:j,schedule:b?{nextDueAtMs:b.nextDueAtMs,lastAttemptAtMs:b.lastAttemptAtMs,lastRunAtMs:b.lastRunAtMs,lastExitCode:b.lastExitCode,schemaAhead:b.schemaAhead}:null,lastResultAt:h?.cachedAt??null,lastScan:h?{finishedAt:h.cachedAt,findings:h.findings,sessionsScanned:h.sessionsScanned,eventsScanned:h.eventsScanned}:null,daemonStartedAtMs:"running"===j?(0,f.u)():null}}function B(a){return"off"===a||"observe"===a||"enforce"===a?a:null}(0,z.ensureServerEntryExports)([A]),(0,b.registerServerReference)(A,"000c4fd5e37e67898d3e6d840cb11d15bb0074cea6",null),a.s(["f",0,A],36119);let C="enforce",D=["typesafe","openrouter","vercel","cloudflare","custom","failproofai"],E="failproofai",F="FAILPROOFAI_JEV_API_KEY",G=d.constants.O_RDONLY|(d.constants.O_NONBLOCK??0);function H(){return(0,e.z)()}let I=/^(?:(?:typesafe|typesafe-ai)\/)?jev-(\d{1,4})\.(\d{1,4})(?:\.(\d{1,6}))?(?:-(\d{8}))?$/,J=/^[0-9a-f]{32}$/,K=/^[\x21-\x7e]{1,4096}$/,L=/^[A-Za-z0-9._:/@~+-]{1,200}$/,M=new Set(["localhost","127.0.0.1","[::1]","::1"]);function N(a){return"string"!=typeof a||0===a.length?"the API key is empty":K.test(a)?null:"the API key must be one line of visible ASCII with no spaces (at most 4096 characters)"}let O=["key","token","secret","password","passwd","credential","auth","signature"],P=new Set(["pw","pass","sig","sid","jwt","bearer","session","code","access"]),Q=/^[A-Za-z0-9._-]{1,40}$/;function R(a){let b;if("string"!=typeof a||""===a.trim())return{ok:!1,problem:"baseUrl must be a non-empty string"};try{b=new URL(a.trim())}catch{return{ok:!1,problem:"baseUrl is not a valid URL"}}if("https:"!==b.protocol&&!("http:"===b.protocol&&M.has(b.hostname)))return{ok:!1,problem:"baseUrl must use https (plain http is accepted only for localhost)"};if(b.username||b.password)return{ok:!1,problem:"baseUrl must not carry credentials; put the key in the key field"};if(b.hash)return{ok:!1,problem:"baseUrl must not have a #fragment"};let c=function(a){for(let[b,c]of a.searchParams){let a=Q.test(b)?`?${b}=`:"one of its query parameters",d=b.toLowerCase().replace(/[^a-z0-9]/g,"");if(O.some(a=>d.includes(a))||P.has(d))return`baseUrl must not carry a credential in its query string, and ${a} is one; put the key in the key field`;if(X(c))return`baseUrl's ${a} value is shaped like a credential (not repeated here); put the key in the key field`}return null}(b);return c?{ok:!1,problem:c}:(b.pathname=b.pathname.replace(/\/+$/,"")||"/",{ok:!0,value:b.toString()})}function S(a){try{let b=new URL(a);if(!b.search&&!b.username&&!b.password)return{url:a,hadQuery:!1};let c=""!==b.search;return b.search="",b.username="",b.password="",{url:b.toString(),hadQuery:c}}catch{let b=a.indexOf("?");return{url:(b<0?a:a.slice(0,b)).replace(/^([^:/?#]+:\/\/)[^/?#]*@/,"$1"),hadQuery:b>=0}}}let T=["/chat/completions","/systemone","/completions","/embeddings","/models"],U={"api.typesafe.ai":"typesafe","openrouter.ai":"openrouter","ai-gateway.vercel.sh":"vercel","api.cloudflare.com":"cloudflare"};function V(a){try{let b=new URL(a);if("https:"!==b.protocol&&!("http:"===b.protocol&&M.has(b.hostname)))return null;return b.origin}catch{return null}}let W=/^(?:(?:sk|rk)[-_]|gh[pousr]_|github_pat_|glpat-|xox[abprs]-|AKIA[0-9A-Z]{12}|AIza[0-9A-Za-z_-]{20}|hf_[A-Za-z0-9]{16}|vck_)/;function X(a){return!!W.test(a)||a.length>=32&&!a.includes("/")&&!/jev/i.test(a)&&/[A-Za-z]/.test(a)&&/[0-9]/.test(a)}function Y(a,b,c){let d;if(!a||"object"!=typeof a||Array.isArray(a))return{ok:!1,problem:"the file must hold a JSON object"};let e=a.provider;if("string"!=typeof e||!D.includes(e))return{ok:!1,problem:`provider must be one of ${D.join(", ")}`};if(e===E){if(void 0!==a.apiKey)return{ok:!1,problem:"provider failproofai takes its key from this machine's FailproofAI Cloud connection (credentials.json), never from jev.json — remove apiKey from the file (not repeated here)"};if(!c)return{ok:!1,problem:"this machine is not connected to FailproofAI Cloud with a key that carries jev:evaluate — connect it with: failproofai config --token <key>",notConnected:!0};let b=N(c.key);if(b)return{ok:!1,problem:`the FailproofAI Cloud key in credentials.json is unusable: ${b}`};d=c.key}else if(void 0!==a.apiKey){let b=N(a.apiKey);if(b)return{ok:!1,problem:b};d=a.apiKey}else{if(null==b||""===b)return{ok:!1,problem:`no API key: set apiKey in the file (failproofai jev setup), or ${F} for this session`,missingKey:!0};let a=N(b);if(a)return{ok:!1,problem:`${F} is set but invalid: ${a}`};d=b}let f={provider:e,apiKey:d,mode:C,timeoutMs:e===E?5e3:3e3};if(void 0!==a.baseUrl){let b=R(a.baseUrl);if(!b.ok)return b;f.baseUrl=b.value}else if("custom"===e||e===E)return{ok:!1,problem:`provider ${e} needs a baseUrl`};if(e===E&&c){let a=V(c.url),b=V(f.baseUrl);if(null===a)return{ok:!1,problem:"the FailproofAI Cloud credential in credentials.json names no usable origin — reconnect: failproofai config --token <key>"};if(b!==a)return{ok:!1,problem:`baseUrl is on ${b??"an unusable origin"}, but this machine's FailproofAI Cloud key was issued for ${a} — the key is only ever sent to the origin it was issued for. Point jev.json back at it: failproofai jev setup --provider failproofai`};f.credentialOrigin=a}if("cloudflare"===e){if("string"!=typeof a.accountId||!J.test(a.accountId))return{ok:!1,problem:"provider cloudflare needs accountId: 32 lowercase hex characters"};f.accountId=a.accountId}if(void 0!==a.model){let b=function(a){let b;if("string"!=typeof a||!L.test(a))return{ok:!1,problem:"model must be 1–200 characters of letters, digits and . _ : / @ ~ + -"};if(X(a))return{ok:!1,problem:"model looks like an API key, not a model id (not repeated here). The key goes on stdin: failproofai jev setup --key-stdin"};let c=(b=I.exec(a))?{major:Number(b[1]),minor:Number(b[2]),patch:void 0===b[3]?null:Number(b[3]),date:b[4]??null}:null;return c&&(1!==c.major||13!==c.minor)?{ok:!1,problem:`model ${a} names Jev ${c.major}.${c.minor}, but the thresholds are calibrated for Jev 1.13 — every call would fall back to regex`}:{ok:!0,value:a}}(a.model);if(!b.ok)return b;if(b.value===d)return{ok:!1,problem:"model is the API key (not repeated here); give the model id, or leave --model out for the provider's default"};f.model=b.value}if(void 0!==a.timeoutMs){let b=a.timeoutMs;if("number"!=typeof b||!Number.isInteger(b)||b<100||b>1e4)return{ok:!1,problem:"timeoutMs must be a whole number of milliseconds from 100 to 10000"};f.timeoutMs=b}if(void 0!==a.mode){let b=B(a.mode);if(null===b)return{ok:!1,problem:'mode must be "off", "observe" or "enforce"'};f.mode=b}return{ok:!0,value:f}}function Z(a){if(a.provider!==E)return Y(a);let{apiKey:b,credentialOrigin:c,...d}=a;return"string"!=typeof c||""===c?{ok:!1,problem:"this FailproofAI Cloud config names no credential origin — it did not come from the loader, so its key is not sent anywhere"}:Y(d,null,{url:c,key:b})}let $="supplied-by-the-environment";function _(a){aa();try{let b=511&(0,d.statSync)((0,h.dirname)(a)).mode;return(18&b)!=0?b:null}catch{return null}}function aa(){return"win32"!==process.platform}function ab(){let a,b,e,f,g=H();try{a=(0,d.openSync)(g,G)}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return{status:"absent",path:g};return{status:"refused",path:g,mode:null,reason:"unreadable",problem:`cannot open it (${a??"error"})`}}let i=null;try{let c=(0,d.fstatSync)(a);if(!c.isFile())return{status:"refused",path:g,mode:null,reason:"unreadable",problem:"it is not a regular file"};i=511&c.mode;let e=()=>{let b=Buffer.alloc(c.size),e=0;for(;e<b.length;){let c=(0,d.readSync)(a,b,e,b.length-e,e);if(0===c)break;e+=c}return b.subarray(0,e).toString("utf8")};if(aa()&&(63&i)!=0){let a=!1;try{a=c.size<=65536&&function(a){try{let b=JSON.parse(a);return null!==b&&"object"==typeof b&&!Array.isArray(b)&&void 0===b.apiKey}catch{return!1}}(e())}catch{}let b=i.toString(8).padStart(4,"0");return{status:"refused",path:g,mode:i,reason:"too-open",problem:a?(18&i)!=0?`its permissions are ${b}; other users could change it, and with it where Jev sends tool calls and prompts, so it must be owner-only (chmod 600 ${g})`:`its permissions are ${b}; it must be owner-only (chmod 600 ${g})`:`its permissions are ${b}; it holds a key, so it must be owner-only (chmod 600 ${g})`,fix:`chmod 600 ${g}`,...a?{keyless:!0}:{}}}let f=_(g);if(null!==f)return{status:"refused",path:g,mode:i,reason:"too-open",problem:`its directory ${(0,h.dirname)(g)} is ${f.toString(8).padStart(4,"0")} — other users can write there, so they can put their own config in its place; it must be owner-only (chmod 700 ${(0,h.dirname)(g)})`,fix:`chmod 700 ${(0,h.dirname)(g)}`};if(c.size>65536)return{status:"refused",path:g,mode:i,reason:"too-large",problem:"it is larger than 65536 bytes"};b=e()}catch(a){return{status:"refused",path:g,mode:i,reason:"unreadable",problem:`cannot read it (${a.code??"error"})`}}finally{try{(0,d.closeSync)(a)}catch{}}try{e=JSON.parse(b)}catch{return{status:"refused",path:g,mode:i,reason:"not-json",problem:"it is not valid JSON"}}let j=null===e||"object"!=typeof e||Array.isArray(e)?null:e;if(j?.mode==="off"){let a=Y(e,$,ae(j));return a.ok?{status:"off",path:g,mode:i,routing:ad(a.value)}:{status:"refused",path:g,mode:i,reason:"invalid",problem:a.problem}}if(j?.provider===E){let a=(0,c.R)();if("refused"===a.status)return{status:"refused",path:g,mode:i,reason:"too-open"===a.reason?"too-open":"unreadable",problem:`the FailproofAI Cloud credential was refused: ${a.problem}`,...a.fix?{fix:a.fix}:{},credentialsMode:a.mode};let b=Y(e,null,"ok"===a.status?a.credential:null);if(b.ok)return{status:"ok",path:g,mode:i,keySource:"cloud",config:b.value};if(!0===b.notConnected){let c=Y(e,null,ae(j));return c.ok?"absent"===a.status&&a.connected?{status:"key-lacks-jev",path:g,mode:i,routing:ad(c.value),problem:ac}:{status:"not-connected",path:g,mode:i,routing:ad(c.value),problem:b.problem}:{status:"refused",path:g,mode:i,reason:"invalid",problem:c.problem}}return{status:"refused",path:g,mode:i,reason:"invalid",problem:b.problem}}let k=Y(e,void 0===(f=process.env[F])||""===f?null:f);if(!k.ok){if(!0===k.missingKey){let a=Y(e,$);return a.ok?{status:"key-missing",path:g,mode:i,routing:ad(a.value),problem:`it carries no apiKey, so the key comes from ${F} — which is not set in this environment`}:{status:"refused",path:g,mode:i,reason:"invalid",problem:a.problem}}return{status:"refused",path:g,mode:i,reason:"invalid",problem:k.problem}}return{status:"ok",path:g,mode:i,keySource:void 0!==e.apiKey?"file":"env",config:k.value}}let ac="this machine is connected to FailproofAI Cloud, but no Jev key is stored for that connection (its key lacks jev:evaluate, or the connect could not confirm it)";function ad(a){let b={provider:a.provider,mode:a.mode,timeoutMs:a.timeoutMs};return void 0!==a.baseUrl&&(b.baseUrl=a.baseUrl),void 0!==a.accountId&&(b.accountId=a.accountId),void 0!==a.model&&(b.model=a.model),b}function ae(a){let b="https://stand-in.invalid";if("string"==typeof a.baseUrl)try{b=new URL(a.baseUrl.trim()).origin}catch{}return{url:b,key:$}}function af(){let a,b=H();try{a=(0,d.openSync)(b,G)}catch{return null}try{let c=(0,d.fstatSync)(a);if(!c.isFile()||c.size>65536)return null;let e=Buffer.alloc(c.size),f=0;for(;f<e.length;){let b=(0,d.readSync)(a,e,f,e.length-f,f);if(0===b)break;f+=b}let g=JSON.parse(e.subarray(0,f).toString("utf8"));if(!g||"object"!=typeof g||Array.isArray(g))return null;aa();let h=511&c.mode,i=null!==h&&((63&h)!=0||null!==_(b));return{raw:g,mode:h,tooOpen:i}}catch{return null}finally{try{(0,d.closeSync)(a)}catch{}}}function ag(){return af()?.raw??null}a.s(["N",0,J,"U",0,C,"F",0,F,"e",0,E,"n",0,D,"T",0,S,"f",0,function(a){let b;try{b=new URL(a)}catch{return null}let c=b.pathname.replace(/\/+$/,""),d=T.find(a=>c.toLowerCase().endsWith(a));return void 0===d?null:(b.pathname=c.slice(0,c.length-d.length)||"/",{suffix:d,base:b.toString()})},"V",0,ab,"W",0,H,"u",0,X,"_",0,B,"O",0,function(a,b){let c=function(a){try{return U[new URL(a).hostname.toLowerCase()]??"custom"}catch{return"custom"}}(b);if("custom"===c||c===a)return null;let d=new URL(b).host;return"custom"!==a?`${d} is ${c}'s endpoint, not ${a}'s`:"cloudflare"===c?`${d} is Cloudflare Workers AI, which provider custom cannot reach — its endpoint is per-account and its answers are wrapped, and a custom endpoint is asked in TypeSafe's own shape at <url>/systemone`:null},"Z",0,af,"h",0,ag,"$",0,N,"A",0,R,"P",0,Y,"c",0,Z],87481),a.i(60526);let ah={typesafe:{baseUrl:"https://api.typesafe.ai/v1",model:"jev-1.13.0"},openrouter:{baseUrl:"https://openrouter.ai/api/v1",model:"typesafe/jev-1.13"},vercel:{baseUrl:"https://ai-gateway.vercel.sh/typesafe/v1",model:"typesafe-ai/jev"},cloudflare:{baseUrl:"https://api.cloudflare.com/client/v4",model:"typesafe/jev"},custom:{baseUrl:null,model:"jev-1.13.0"},failproofai:{baseUrl:null,model:"jev-1.13.0"}};class ai extends Error{code;retryAfter;constructor(a,b,c={}){super(b.replace(/[\u0000-\u001f\u007f-\u009f]/g," ")),this.name="JevError",this.code=a,this.retryAfter=c.retryAfter??null}}function aj(a){let b=new URL(a);return/\/systemone$/.test(b.pathname)||(b.pathname=`${b.pathname.replace(/\/+$/,"")}/systemone`),b.toString()}function ak(a){let b=function(a){let b=Z(a);if(!b.ok)throw new ai("config",b.problem);return b.value}(a),c=ah[b.provider],d=b.model??c.model,e=void 0===b.model;if("cloudflare"===b.provider)return{via:"cloudflare",endpoint:function(a,b){if(!b)return((a,b=ah.cloudflare.baseUrl)=>`${b.replace(/\/+$/,"")}/accounts/${a}/ai/run`)(a);let c=new URL(b);return/\/ai\/run$/.test(c.pathname)||(c.pathname=`${c.pathname.replace(/\/+$/,"")}/accounts/${a}/ai/run`),c.toString()}(b.accountId,b.baseUrl),model:d,modelIsDefault:e};let f=b.baseUrl??c.baseUrl;if(!f)throw new ai("config",`provider ${b.provider} needs a baseUrl`);return{via:b.provider,endpoint:aj(f),model:d,modelIsDefault:e}}function al(a){try{let b=new URL(a),c=`${b.origin}${b.pathname}`;return b.search?`${c}?…`:c}catch{return"(invalid URL)"}}a.s(["J",0,al,"G",0,function(a){let b=aj(a);return b===new URL(a).toString()?"That is already the Jev endpoint itself: this field takes the base it sits under (where <base>/models is read), and failproofai adds /systemone on its own.":`A Jev request goes to <base>/systemone, and failproofai appends that itself, so ${al(a)} would be asked at ${al(b)}.`},"B",0,ak],55113);var am=a.i(1144);let an=["evaluator","jevDecision","jevCleared","jevFallbackReason","jevLatencyMs","jevModel","jevMode","jevChecks"],ao=new Set(["jev","jev-fallback"]),ap=new Set(["allow","instruct","deny"]),aq=new Set(["observe","enforce"]),ar=/^([a-z0-9]+(?:-[a-z0-9]+)*)\s*(?:$|[:(])/,as=/^http-\d{3}$/,at="other",au=new Set(["aborted","cloudflare-error","cloudflare-incomplete","config","error","malformed","model-mismatch","network","no-api-key","no-transport","other","out-of-credits","prepare-error","provider-refused","rate-limited","request-cut","request-too-large","timeout","truncated","unavailable","upstream-error"]),av=new Map([["prepare","prepare-error"],["error","error"],["timeout","timeout"],["network","network"],["malformed","malformed"],["truncated","truncated"],["rate-limited","rate-limited"],["out-of-credits","out-of-credits"],["model-mismatch","model-mismatch"],["request-too-large","request-too-large"],["config","config"]]),aw=/^[A-Za-z0-9._:/@~+-]{1,200}$/,ax=/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/,ay=/^(?:custom|pack|cloud|failproofai|\.failproofai-[A-Za-z0-9_-]{1,32})\//;function az(a){return!("string"!=typeof a||0===a.length||[...a].length>200||ax.test(a))&&(!/\s/.test(a)||ay.test(a))}let aA=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/,aB=/^[a-z][a-z0-9_]{0,31}$/,aC=new Set(["none","deny","instruct","overridden"]),aD=new Set(["not-detected","exempt","fired","injection","user-asked","op-requested","task-step","downgraded","scan-incomplete"]),aE=a=>"number"==typeof a&&Number.isFinite(a)&&a>=0&&a<=1,aF=a=>Math.round(100*a)/100;function aG(a){if(!an.some(b=>void 0!==a[b]))return a;let b={...a},c=a=>{delete b[a]};"string"==typeof b.evaluator&&ao.has(b.evaluator)||c("evaluator"),"string"==typeof b.jevDecision&&ap.has(b.jevDecision)||c("jevDecision");let d=void 0!==b.jevMode&&!("string"==typeof b.jevMode&&aq.has(b.jevMode));if("string"==typeof b.jevMode&&aq.has(b.jevMode)||c("jevMode"),d&&c("jevCleared"),Array.isArray(b.jevCleared)){let a=[...new Set(b.jevCleared.filter(az))].slice(0,64);b.jevCleared=a}else c("jevCleared");let e=function(a){if("string"!=typeof a)return;let b=a.trim().toLowerCase();if(0===b.length)return;let c=ar.exec(b)?.[1];if(void 0===c||c.length>40)return at;if(as.test(c))return c;let d=av.get(c)??c;return au.has(d)?d:at}(b.jevFallbackReason);void 0===e?c("jevFallbackReason"):b.jevFallbackReason=e,"number"==typeof b.jevLatencyMs&&Number.isFinite(b.jevLatencyMs)&&b.jevLatencyMs>=0?b.jevLatencyMs=Math.round(b.jevLatencyMs):c("jevLatencyMs"),"string"==typeof b.jevModel&&aw.test(b.jevModel.trim())?b.jevModel=b.jevModel.trim():c("jevModel");let f="jev"===b.evaluator?function(a){if(!Array.isArray(a))return;let b=[];for(let c of a){if(b.length>=32)break;let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.check||!aA.test(a.check)||"string"!=typeof a.verdict||!aC.has(a.verdict)||"string"!=typeof a.why||!aD.has(a.why)||!aE(a.p))return null;let b={check:a.check,verdict:a.verdict,why:a.why,p:aF(a.p)};if("string"==typeof a.policy&&az(a.policy)&&!/\s/.test(a.policy)&&/^(?:cloud|pack)\//.test(a.policy)&&(b.policy=a.policy),aE(a.exempt)&&(b.exempt=aF(a.exempt)),!0===a.watched&&(b.watched=!0),a.probes&&"object"==typeof a.probes&&!Array.isArray(a.probes)){let c={};for(let[b,d]of Object.entries(a.probes)){if(Object.keys(c).length>=8)break;aB.test(b)&&aE(d)&&(c[b]=aF(d))}Object.keys(c).length>0&&(b.probes=c)}return b}(c);a&&b.push(a)}return a.length>0&&0===b.length?void 0:b}(b.jevChecks):void 0;return void 0===f?c("jevChecks"):b.jevChecks=f,b}function aH(a){return"number"!=typeof a||Number.isNaN(a)||a<=0?864e5:Math.min(a,7776e6)}function aI(a){return"number"==typeof a&&Number.isFinite(a)?a:Date.now()}function aJ(a,b){if(0===a.length)return null;let c=Math.ceil(b/100*a.length);return a[Math.min(a.length,Math.max(1,c))-1]}class aK{counts=new Map;bump(a){this.counts.set(a,(this.counts.get(a)??0)+1)}toRecord(){return Object.fromEntries(this.counts)}}async function aL(a={}){let b=aH(a.windowMs),c=aI(a.now),d=[];try{d=(0,am.t)(c-b)}catch{d=[]}return function(a,b={}){let c=aH(b.windowMs),d=aI(b.now),e=d-c,f={windowMs:c,total:0,fallbackRate:0,fallbackReasons:{},latencyP50Ms:null,latencyP95Ms:null,clearsByPolicy:{},since:e,answered:0,fallbacks:0,notConsulted:0,noRequest:0,decisions:{allow:0,instruct:0,deny:0},modes:{observe:0,enforce:0},observeClearsByPolicy:{},models:{}},g=[],h=new aK,i=new aK,j=new aK,k=new aK;for(let b of a){var l;if("number"!=typeof b.timestamp||b.timestamp<e||b.timestamp>d)continue;let a=aG(b),c="jev-fallback"===(l=aG(a)).evaluator?"fallback":"jev"!==l.evaluator?null:Array.isArray(l.jevChecks)&&0===l.jevChecks.length?"no-request":void 0!==l.jevCleared||void 0!==l.jevLatencyMs||void 0!==l.jevModel||"deny"===l.jevDecision||"instruct"===l.jevDecision?"answered":"allow"===l.jevDecision?"no-request":"not-consulted";if(null===c)continue;if("not-consulted"===c){f.notConsulted+=1;continue}if("no-request"===c){f.noRequest+=1;continue}if(f.total+=1,a.jevMode&&(f.modes[a.jevMode]+=1),"fallback"===c){f.fallbacks+=1,h.bump(a.jevFallbackReason??"unknown");continue}f.answered+=1,a.jevDecision&&(f.decisions[a.jevDecision]+=1),void 0!==a.jevLatencyMs&&g.push(a.jevLatencyMs),a.jevModel&&k.bump(a.jevModel);let m="observe"===a.jevMode?j:i;for(let b of a.jevCleared??[])m.bump(b)}return f.fallbackReasons=h.toRecord(),f.clearsByPolicy=i.toRecord(),f.observeClearsByPolicy=j.toRecord(),f.models=k.toRecord(),f.fallbackRate=f.total>0?f.fallbacks/f.total:0,g.sort((a,b)=>a-b),f.latencyP50Ms=aJ(g,50),f.latencyP95Ms=aJ(g,95),f}(d,{windowMs:b,now:c})}var aM=a.i(89790),aN=a.i(86304),aO=a.i(15638),aP=a.i(28120),aQ=a.i(9909),aR=a.i(91609),aS=a.i(65917),aT=a.i(75534),aU=a.i(88673);let aV="display-only";function aW(a){return a?a.length>40||X(a)?{kind:"withheld"}:{kind:"id",id:a}:{kind:"default"}}function aX(a){if(!a)return{baseUrl:"",baseUrlQueryWithheld:!1};let{url:b,hadQuery:c}=S(a);return{baseUrl:b,baseUrlQueryWithheld:c}}function aY(a){return null===a?null:a.toString(8).padStart(4,"0")}function aZ(a){return"string"==typeof a?a:""}function a$(a){try{return al(ak(function(a){if(a.provider!==E||a.credentialOrigin||"string"!=typeof a.baseUrl)return a;try{return{...a,credentialOrigin:new URL(a.baseUrl).origin}}catch{return a}}(a)).endpoint)}catch{return null}}async function a_(a){if(!a)return null;try{let a=await aL();return{windowMs:a.windowMs,total:a.total,answered:a.answered,fallbacks:a.fallbacks,fallbackRate:a.fallbackRate}}catch{return null}}async function a0(){let a=ab(),b={cloud:function(){let a=!1,b=null,d=null;try{let e=(0,c.d)(),f=e.cloud?.url??e.ingest?.url??null;if(a=null!==f,null!==f)try{d=new URL(f).host}catch{d=null}let g=e.org;b=g?g.name&&g.slug?`${g.name} (${g.slug})`:g.name??g.slug??g.id??null:null}catch{}let e="no";try{let a=(0,c.R)().status;e="ok"===a?"yes":"refused"===a?"refused":"no"}catch{e="no"}return{connected:a,org:b,host:d,jev:e}}(),path:a.path,permissions:null,provider:null,baseUrl:"",baseUrlQueryWithheld:!1,accountId:"",model:{kind:"default"},endpoint:null,mode:C,timeoutMs:null,token:null,problem:null,fix:null,reviewable:null};if("ok"===a.status){let c=a.config;return{...b,status:"ok",on:!0,permissions:aY(a.mode),provider:c.provider,...aX(c.baseUrl),accountId:c.accountId??"",model:aW(c.model??""),endpoint:a$(c),mode:c.mode??C,timeoutMs:c.timeoutMs??null,token:{source:a.keySource},stats:await a_(!0),reviewable:function(a){if(!a)return null;try{let a=function(a){let b,c,d=[],f=!1;try{f=(0,aQ.Q)();let a=(0,aQ.V)().packs;for(let b of a){let a=b.enabled;d.push(...a?b.policies.filter(b=>a.includes(b.name)):b.policies)}let c=(0,aU.f)((0,aN.r)(a));b=new Set(c.policies.map(a=>a.name))}catch{}try{c=(0,aP.q)(a)}catch{c={enabledPolicies:[]}}let g=new Set(f?[]:c.enabledPolicies.map(aT.f));for(let a of aS.f)(a.alwaysOn||g.has((0,aT.f)(a.name)))&&d.push(a);try{let a=(0,aM.D)(),c=(0,aM.h)(),e=(0,aM.O)(c,a);for(let f of(e.length>0&&(b=new Set([...b??[],...e])),c))d.push((0,aM.i)(f,a))}catch{}let i=0;try{let b=(0,aP.Y)(a??process.cwd()),d=new Set((0,aP.W)(c).map(a=>(0,h.resolve)(b,a)));if(!1!==c.customPoliciesEnabled)for(let a of[(0,h.resolve)(b,".failproofai","policies"),(0,e.E)()])for(let b of(0,aO.discoverPolicyFiles)(a))d.add(b);i=d.size}catch{i=0}return{...function(a,b){let c=0,d=0;for(let e of a)c+=1,"reviewable"===(0,aR.d)(e,b).authority&&(d+=1);return{enabled:c,reviewable:d}}(d,b),customFiles:i,jevChecks:b?[...b].filter(a=>!a.startsWith("cloud:")).length:0}}(process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd());return{enabled:a.enabled,reviewable:a.reviewable,summary:function(a){let{enabled:b,reviewable:c}=a,d=a.customFiles>0?" (policies from your own files are not counted)":"";if(0===b)return`No policies are enabled here, so there is nothing for Jev to clear${d}.`;let e=1===b?"1 enabled policy is":`${b} enabled policies are`;return 0===c?`0 of ${e} reviewable${d}.`:`${c} of ${e} reviewable: Jev may clear a deny or an instruction from those, and from no others${d}.`}(a),problem:0===a.jevChecks?"Jev has no checks installed, so it asks nothing and clears nothing. To enable it: `failproofai policies add FailproofAI/jev-policies`.":0===a.enabled||a.reviewable>0||a.customFiles>0?null:"Jev can add a deny or an instruction on this machine, but it can never clear one. No enabled policy is marked reviewable — a policy pack published before this release carries no such marks — so re-take the pack (`failproofai policies add FailproofAI/policies`) to get a marked copy, or enforce this build's builtin policies, which carry them."}}catch{return null}}(!0)}}if("key-missing"===a.status){let c=a.routing;return{...b,status:"key-missing",on:!1,permissions:aY(a.mode),provider:c.provider,...aX(c.baseUrl),accountId:c.accountId??"",model:aW(c.model??""),endpoint:a$({...c,apiKey:aV}),mode:c.mode??C,timeoutMs:c.timeoutMs??null,token:null,problem:a.problem,fix:`set ${F}, or save a token here`,stats:await a_(!0)}}if("off"===a.status||"not-connected"===a.status||"key-lacks-jev"===a.status){let d=a.routing;return{...b,status:a.status,on:!1,permissions:aY(a.mode),provider:d.provider,...aX(d.baseUrl),accountId:d.accountId??"",model:aW(d.model??""),endpoint:a$({...d,apiKey:aV}),mode:d.mode??C,timeoutMs:d.timeoutMs??null,token:"off"===a.status?function(a){if(a===E)try{return"ok"===(0,c.R)().status?{source:"cloud"}:null}catch{return null}let b=ag();return"string"==typeof b?.apiKey&&""!==b.apiKey?{source:"file"}:null}(d.provider):null,problem:"off"===a.status?null:a.problem,fix:"not-connected"===a.status?"connect this machine with a key that carries jev:evaluate: failproofai config --token <key>":"key-lacks-jev"===a.status?"reconnect this machine with a key that carries jev:evaluate: failproofai config --token <key>":null,stats:null}}if("refused"===a.status){var d;let c,e=(d=ag(),c=aZ(d?.provider),{provider:D.includes(c)?c:null,baseUrl:aZ(d?.baseUrl),accountId:J.test(aZ(d?.accountId))?aZ(d?.accountId):"",model:aZ(d?.model),mode:B(d?.mode)??C});return{...b,status:"refused",on:!1,permissions:aY(a.mode),provider:e.provider,...aX(e.baseUrl),accountId:e.accountId,model:aW(e.model),endpoint:null===e.provider?null:a$({provider:e.provider,apiKey:aV,...e.baseUrl?{baseUrl:e.baseUrl}:{},...e.accountId?{accountId:e.accountId}:{},mode:e.mode}),mode:e.mode,problem:a.problem,fix:a.fix??null,stats:null}}return{...b,status:"absent",on:!1,stats:null}}(0,z.ensureServerEntryExports)([a0]),(0,b.registerServerReference)(a0,"004891b2f0596515ce7b80c59e2926bd60c96e7b55",null),a.s(["f",0,a0],41289)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js.map
|