failproofai 1.0.12-beta.1 → 1.0.12
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 +3 -3
- 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/server-reference-manifest.json +1 -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/server-reference-manifest.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- 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/server-reference-manifest.json +1 -1
- 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/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +2 -2
- 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/server-reference-manifest.json +1 -1
- 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/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.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/server-reference-manifest.json +1 -1
- 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/server-reference-manifest.json +8 -8
- 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/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_hooks_0_em82s16zfym._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__167mipqmjprq5._.js +3 -0
- 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]__1avi2kypusyb_._.js +1 -1
- 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]__0b78b0j8iyv6l._.js → [root-of-the-server]__1vofkb2oq7p7e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_1a3tubds7s7ow._.js → _0ouu886szh6yj._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1d98fyfrcaqhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- 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 +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1i8oid1gc7s1f.js → node_modules_html-to-image_es_index_0tqc05n832v7a.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0agdmptetetdt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0mdwgjisv4fub._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589gp4p60j._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- 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/{1b32-afqacaen.js → 0el9n3h9_zp5m.js} +1 -1
- package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +1 -0
- package/.next/standalone/.next/static/chunks/{42e8zab314654.js → 0umzct31duk5g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{24w3x2da9sk49.js → 0wobqgosirs8p.js} +1 -1
- package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +1 -0
- package/.next/standalone/.next/static/chunks/{2-tf6_7u623kd.js → 1kduj74-715jh.js} +1 -1
- package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +1 -0
- package/.next/standalone/.next/static/chunks/{18433qz-8njv3.js → 27cavoc8paelg.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0_zfad4co-t2z.js → 2ve23a7keupjw.js} +1 -1
- package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +6 -0
- package/.next/standalone/app/actions/update-jev-config.ts +5 -3
- package/.next/standalone/app/settings/jev-panel.tsx +1 -1
- package/.next/standalone/fp-cloud-cli/CHANGELOG.md +28 -18
- package/.next/standalone/fp-cloud-cli/README.md +127 -9
- package/.next/standalone/fp-cloud-cli/fp_cli/app.py +15 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/client.py +199 -34
- package/.next/standalone/fp-cloud-cli/fp_cli/cloud_output.py +523 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/_cloud.py +45 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/_write.py +3 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/account_cmds.py +171 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/agent_cmds.py +80 -7
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/alerts_cmds.py +23 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/audits_cmds.py +2 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/contracts_cmds.py +67 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/dashboards_cmds.py +159 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/evaluators_cmds.py +380 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/events_cmds.py +14 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/fleet_cmds.py +12 -216
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/incidents_cmds.py +82 -6
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/list_cmds.py +4 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/orgs_cmds.py +17 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/policies_cmds.py +143 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/queries_cmds.py +70 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/sentiment_cmds.py +49 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/sessions_cmds.py +95 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/settings_cmds.py +2 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/usage_cmds.py +21 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/users_cmds.py +14 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/enforcement.py +7 -53
- package/.next/standalone/fp-cloud-cli/fp_cli/errors.py +3 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/evaluator_spec.py +266 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/output.py +189 -152
- package/.next/standalone/fp-cloud-cli/fp_cli/theme.py +21 -24
- package/.next/standalone/fp-cloud-cli/skill/SKILL.md +124 -23
- package/.next/standalone/fp-cloud-cli/skill/agents/openai.yaml +2 -1
- package/.next/standalone/fp-cloud-cli/skill/references/commands.md +173 -22
- package/.next/standalone/fp-cloud-cli/tests/fake_cloud_smoke.py +312 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_account.py +125 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_agent.py +253 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_human_views.py +287 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_jev.py +32 -197
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_observability.py +116 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_transport.py +141 -0
- package/.next/standalone/fp-cloud-cli/tests/test_commands.py +3 -3
- package/.next/standalone/fp-cloud-cli/tests/test_dashboards_agent.py +3 -3
- package/.next/standalone/fp-cloud-cli/tests/test_evaluator_authoring.py +449 -0
- package/.next/standalone/fp-cloud-cli/tests/test_facets.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_help_table_coverage.py +15 -0
- package/.next/standalone/fp-cloud-cli/tests/test_operator.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_orgs.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_output.py +37 -37
- package/.next/standalone/fp-cloud-cli/tests/test_round4_behaviour.py +144 -0
- package/.next/standalone/fp-cloud-cli/tests/test_screen_language.py +80 -0
- package/.next/standalone/fp-cloud-cli/tests/test_session_reevaluate.py +33 -0
- package/.next/standalone/fp-cloud-cli/tests/test_staging_parity.py +198 -0
- package/.next/standalone/fp-cloud-cli/tests/test_whoami.py +1 -1
- package/.next/standalone/hermes-plugin/__init__.py +11 -0
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/package.json +11 -10
- package/.next/standalone/sdk/python/uv.lock +31 -8
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +68 -176
- 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 +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +98 -115
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package.json +1 -1
- 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 +149 -171
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +2 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +25 -25
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +10 -10
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +1760 -638
- package/dist/worker.mjs +426 -76
- package/hermes-plugin/__init__.py +11 -0
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +11 -10
- package/src/audit/open-browser.ts +24 -7
- package/src/hooks/agent-roster.ts +9 -1
- package/src/hooks/agent-skill.ts +206 -0
- package/src/hooks/cloud-connection.ts +27 -51
- package/src/hooks/cloud-introspect.ts +5 -2
- package/src/hooks/cloud-login.ts +248 -0
- package/src/hooks/cloud-managed-policies.ts +54 -4
- package/src/hooks/codex-system-hooks.ts +10 -4
- package/src/hooks/config-status.ts +9 -3
- package/src/hooks/configure-wizard.ts +356 -32
- package/src/hooks/delivery-health.ts +47 -2
- package/src/hooks/effective-reviewers.ts +14 -0
- package/src/hooks/fp-config.ts +19 -0
- package/src/hooks/fp-home.ts +1 -1
- package/src/hooks/handler.ts +43 -5
- package/src/hooks/hook-activity-store.ts +7 -1
- package/src/hooks/integrations.ts +18 -3
- package/src/hooks/jev-activity.ts +117 -1
- package/src/hooks/jev-cli.ts +7 -9
- package/src/hooks/manager.ts +80 -46
- package/src/hooks/policy-evaluator.ts +17 -0
- package/src/hooks/policy-reviewability.ts +4 -2
- package/src/hooks/semantic/cloud-jev.ts +219 -28
- package/src/hooks/semantic/combine.ts +26 -1
- package/src/hooks/semantic/intent.ts +127 -24
- package/src/hooks/semantic/jev-client.ts +1 -1
- package/src/hooks/semantic/jev-config.ts +6 -27
- package/src/hooks/semantic/jev-review.ts +111 -4
- package/src/hooks/tui.ts +280 -0
- package/src/hooks/uninstall-cli.ts +12 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0588st-tpiuia._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_128ebxr83nk6g._.js +0 -3
- package/.next/standalone/.next/static/chunks/0jutamwqz8pg5.js +0 -1
- package/.next/standalone/.next/static/chunks/114hbolvrv94e.js +0 -1
- package/.next/standalone/.next/static/chunks/1p-hsi58i-6h0.js +0 -6
- package/.next/standalone/.next/static/chunks/3-pku9qwv1yfu.js +0 -1
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
-
globalThis.__RSC_MANIFEST["/settings/page"] = {"moduleLoading":{"prefix":""},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/contexts/PostHogContext.tsx":{"id":12344,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/app/components/global-error-listeners.tsx":{"id":97917,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/contexts/AutoRefreshContext.tsx":{"id":85881,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/components/navbar.tsx":{"id":63780,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/app/components/toast.tsx":{"id":55574,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js"],"async":false},"[project]/app/error.tsx":{"id":8821,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js","/_next/static/chunks/32s3y34p0t2pe.js"],"async":false},"[project]/app/global-error.tsx":{"id":53348,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js","/_next/static/chunks/42e8zab314654.js"],"async":false},"[project]/app/settings/jev-panel.tsx":{"id":2917,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js","/_next/static/chunks/24w3x2da9sk49.js"],"async":false},"[project]/app/settings/settings-client.tsx":{"id":93237,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/0jutamwqz8pg5.js","/_next/static/chunks/24w3x2da9sk49.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"12344":{"*":{"id":10765,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"97917":{"*":{"id":45550,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"85881":{"*":{"id":6236,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"63780":{"*":{"id":10815,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"55574":{"*":{"id":18952,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"8821":{"*":{"id":78141,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/app_209u41o446my6._.js"],"async":false}},"53348":{"*":{"id":3171,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js"],"async":false}},"2917":{"*":{"id":4614,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/lib_format-duration_ts_09vnd_qdginp7._.js","server/chunks/ssr/app_settings_02tf1h47jmhhd._.js","server/chunks/ssr/_00e4_rvim31u_._.js"],"async":false}},"93237":{"*":{"id":41857,"name":"*","chunks":["server/chunks/ssr/_128ebxr83nk6g._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/lib_format-duration_ts_09vnd_qdginp7._.js","server/chunks/ssr/app_settings_02tf1h47jmhhd._.js","server/chunks/ssr/_00e4_rvim31u_._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"12344":{"*":{"id":92036,"name":"*","chunks":[],"async":false}},"97917":{"*":{"id":16336,"name":"*","chunks":[],"async":false}},"85881":{"*":{"id":54950,"name":"*","chunks":[],"async":false}},"63780":{"*":{"id":42976,"name":"*","chunks":[],"async":false}},"55574":{"*":{"id":33711,"name":"*","chunks":[],"async":false}},"8821":{"*":{"id":50757,"name":"*","chunks":[],"async":false}},"53348":{"*":{"id":53128,"name":"*","chunks":[],"async":false}},"2917":{"*":{"id":41804,"name":"*","chunks":[],"async":false}},"93237":{"*":{"id":30575,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/layout":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/error":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/global-error":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/settings/page":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false},{"path":"static/chunks/0u64yey446k4f.css","inlined":false},{"path":"static/chunks/2qv4hshejedtx.css","inlined":false}]},"entryJSFiles":{"[project]/app/layout":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/0jutamwqz8pg5.js"],"[project]/app/error":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/0jutamwqz8pg5.js","static/chunks/32s3y34p0t2pe.js"],"[project]/app/global-error":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/0jutamwqz8pg5.js","static/chunks/42e8zab314654.js"],"[project]/app/settings/page":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/0jutamwqz8pg5.js","static/chunks/24w3x2da9sk49.js"]}};
|
|
2
|
+
globalThis.__RSC_MANIFEST["/settings/page"] = {"moduleLoading":{"prefix":""},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/contexts/PostHogContext.tsx":{"id":12344,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/app/components/global-error-listeners.tsx":{"id":97917,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/contexts/AutoRefreshContext.tsx":{"id":85881,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/components/navbar.tsx":{"id":63780,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/app/components/toast.tsx":{"id":55574,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js"],"async":false},"[project]/app/error.tsx":{"id":8821,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js","/_next/static/chunks/32s3y34p0t2pe.js"],"async":false},"[project]/app/global-error.tsx":{"id":53348,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js","/_next/static/chunks/0umzct31duk5g.js"],"async":false},"[project]/app/settings/jev-panel.tsx":{"id":2917,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js","/_next/static/chunks/0wobqgosirs8p.js"],"async":false},"[project]/app/settings/settings-client.tsx":{"id":93237,"name":"*","chunks":["/_next/static/chunks/2_sj5ssr_m_wm.js","/_next/static/chunks/2j5zpvs3pd7mw.js","/_next/static/chunks/12rug3jilwqzs.js","/_next/static/chunks/0wobqgosirs8p.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"12344":{"*":{"id":10765,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"97917":{"*":{"id":45550,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"85881":{"*":{"id":6236,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"63780":{"*":{"id":10815,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"55574":{"*":{"id":18952,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js"],"async":false}},"8821":{"*":{"id":78141,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/app_209u41o446my6._.js"],"async":false}},"53348":{"*":{"id":3171,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js"],"async":false}},"2917":{"*":{"id":4614,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/lib_format-duration_ts_09vnd_qdginp7._.js","server/chunks/ssr/app_settings_02tf1h47jmhhd._.js","server/chunks/ssr/_00e4_rvim31u_._.js"],"async":false}},"93237":{"*":{"id":41857,"name":"*","chunks":["server/chunks/ssr/_1d98fyfrcaqhy._.js","server/chunks/ssr/[root-of-the-server]__1vxwetblyf8vp._.js","server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js","server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js","server/chunks/ssr/lib_utils_ts_0az0sfq5wo-3f._.js","server/chunks/ssr/node_modules_09s4n108bqreq._.js","server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js","server/chunks/ssr/_1djqs9i27e4kg._.js","server/chunks/ssr/node_modules_0dad4au22rq0p._.js","server/chunks/ssr/lib_format-duration_ts_09vnd_qdginp7._.js","server/chunks/ssr/app_settings_02tf1h47jmhhd._.js","server/chunks/ssr/_00e4_rvim31u_._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"12344":{"*":{"id":92036,"name":"*","chunks":[],"async":false}},"97917":{"*":{"id":16336,"name":"*","chunks":[],"async":false}},"85881":{"*":{"id":54950,"name":"*","chunks":[],"async":false}},"63780":{"*":{"id":42976,"name":"*","chunks":[],"async":false}},"55574":{"*":{"id":33711,"name":"*","chunks":[],"async":false}},"8821":{"*":{"id":50757,"name":"*","chunks":[],"async":false}},"53348":{"*":{"id":53128,"name":"*","chunks":[],"async":false}},"2917":{"*":{"id":41804,"name":"*","chunks":[],"async":false}},"93237":{"*":{"id":30575,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/layout":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/error":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/global-error":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false}],"[project]/app/settings/page":[{"path":"static/chunks/26c4gmdpsthv6.css","inlined":false},{"path":"static/chunks/0u64yey446k4f.css","inlined":false},{"path":"static/chunks/2qv4hshejedtx.css","inlined":false}]},"entryJSFiles":{"[project]/app/layout":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/12rug3jilwqzs.js"],"[project]/app/error":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/12rug3jilwqzs.js","static/chunks/32s3y34p0t2pe.js"],"[project]/app/global-error":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/12rug3jilwqzs.js","static/chunks/0umzct31duk5g.js"],"[project]/app/settings/page":["static/chunks/2_sj5ssr_m_wm.js","static/chunks/2j5zpvs3pd7mw.js","static/chunks/12rug3jilwqzs.js","static/chunks/0wobqgosirs8p.js"]}};
|
|
3
3
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[[17694,e=>{var t=e.i(32127);e.s(["f",0,function(){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return!1;try{return(0,t.f)().telemetry.enabled}catch{return!0}}])},10659,e=>{let t;var i=e.i(2157),a=e.i(50227),r=e.i(60526),n=e.i(66680);e.i(74533);var s=e.i(79857);let o=a.default.join(r.default.homedir(),".failproofai"),l=a.default.join(o,"instance-id");function
|
|
1
|
+
module.exports=[[17694,e=>{var t=e.i(32127);e.s(["f",0,function(){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return!1;try{return(0,t.f)().telemetry.enabled}catch{return!0}}])},10659,e=>{let t;var i=e.i(2157),a=e.i(50227),r=e.i(60526),n=e.i(66680);e.i(74533);var s=e.i(79857);let o=a.default.join(r.default.homedir(),".failproofai"),l=a.default.join(o,"instance-id");function c(e){return n.default.createHmac("sha256","failproofai-telemetry-v1").update(e).digest("hex")}function d(e){let t;try{if(t=(0,s.z)(),i.default.readFileSync(t,"utf-8").trim()===e)return}catch{try{t=(0,s.z)()}catch{return}}try{i.default.mkdirSync(a.default.dirname(t),{recursive:!0});let r=`${t}.${process.pid}.tmp`;i.default.writeFileSync(r,e,{encoding:"utf-8",mode:384}),i.default.renameSync(r,t)}catch{}}e.s(["f",0,function(){if(t)return t;let e=function(){try{for(let e of(r.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let t=i.default.readFileSync(e,"utf-8").trim();if(t)return t}catch{}}catch{}}();if(e)return d(t=c(e)),t;let a=[r.default.hostname(),r.default.homedir(),r.default.platform(),r.default.arch(),r.default.cpus()[0]?.model??""].join(":");return a?d(t=c(a)):d(t=function(){try{let e=i.default.readFileSync(l,"utf-8").trim();if(e)return e}catch{}let e=n.default.randomUUID();try{i.default.mkdirSync(o,{recursive:!0}),i.default.writeFileSync(l,e,"utf-8")}catch{}return e}()),t}])},28067,e=>{e.s(["_",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX","W",0,"failproofai-oss"])}],24214,(e,t,i)=>{t.exports={name:"failproofai",version:"1.0.12",description:"Observability and enforcement for AI agent harnesses. 40 built-in policies hooked into 12 of them — Claude Code, Codex, Cursor, Hermes, OpenClaw and more — blocking the tool call before it runs. Local dashboard included, no account needed.",bin:{failproofai:"./dist/cli.mjs",failproofaid:"./bin/failproofaid-shim.mjs"},files:["bin/","src/","scripts/","lib/","pi-extension/","hermes-plugin/","openclaw-plugin/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node --external sql.js && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"","build:worker":"bun build --target=node --format=esm --outfile=dist/worker.mjs bin/failproofai-worker.mjs --external posthog-node --external sql.js",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun run build:worker && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate","validate:mdx":"bun scripts/validate-mdx.ts","docs:audit":"bun scripts/docs-audit.ts","build:pack":"bun scripts/build-policy-pack.mjs"},keywords:["agent-observability","llm-observability","agent-tracing","agent-monitoring","agent-harness","guardrails","enforcement","policies","evals","ai-agent","autonomous-agent","agent-reliability","failure-prevention","claude-code","codex","hermes","openclaw","cli","local-first","hooks"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/FailproofAI/failproofai",repository:{type:"git",url:"https://github.com/FailproofAI/failproofai.git"},bugs:{url:"https://github.com/FailproofAI/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@anthropic-ai/sdk":"^0.135.0","@mdx-js/mdx":"^3.1.1","@tailwindcss/postcss":"^4.3.1","@tanstack/react-virtual":"^3.14.10","@testing-library/jest-dom":"^7.0.0","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.5","@types/node":"26.6.5","@types/react":"19.3.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.1.0",clsx:"^2.1.1",eslint:"^10.9.0","eslint-config-next":"^16.3.2",jsdom:"^30.0.1","lucide-react":"^1.33.0",next:"^16.3.8",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.3.1",typescript:"6.0.3",vitest:"^5.0.0"},dependencies:{"html-to-image":"^1.11.13","jsonc-parser":"^3.3.1","posthog-node":"^5.50.0","smol-toml":"^1.9.1","sql.js":"^1.14.1",yaml:"^2.9.0"},overrides:{nanoid:"3.3.18",postcss:"8.5.26","eslint-plugin-react-hooks":"7.0.1",vite:"8.1.6",undici:"7.30.1",zod:"4.6.6","brace-expansion":"5.0.12",sharp:"0.35.5","source-map-js":"1.2.2",browserslist:"4.28.8"},optionalDependencies:{"@failproofai/failproofaid-linux-x64":"1.0.12","@failproofai/failproofaid-linux-arm64":"1.0.12","@failproofai/failproofaid-darwin-x64":"1.0.12","@failproofai/failproofaid-darwin-arm64":"1.0.12"},failproofaidBinaries:{"linux-x64":"3b379ce2b03dd8a74393daed2c3120309f591fe6433e0c939d70c7b20da55be7","linux-arm64":"bd77d7fee68dc2723fb57cc9c7fcf957b7e939c797e61b099c412263880aa16e","darwin-x64":"fce3faab9406b1c2267955f0e07d04ef7a2b7a0b007e12ecd144fcfef563ebc8","darwin-arm64":"765732f8f64aa3d3dbd98e93b1aba71fc02956f65baeb73b08447b37fac3a17b"}}}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0tovk6q0miud6._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[[17694,e=>{var t=e.i(32127);e.s(["f",0,function(){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return!1;try{return(0,t.f)().telemetry.enabled}catch{return!0}}])},10659,e=>{let t;var i=e.i(2157),a=e.i(50227),r=e.i(60526),n=e.i(66680);e.i(74533);var s=e.i(79857);let o=a.default.join(r.default.homedir(),".failproofai"),l=a.default.join(o,"instance-id");function
|
|
1
|
+
module.exports=[[17694,e=>{var t=e.i(32127);e.s(["f",0,function(){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return!1;try{return(0,t.f)().telemetry.enabled}catch{return!0}}])},10659,e=>{let t;var i=e.i(2157),a=e.i(50227),r=e.i(60526),n=e.i(66680);e.i(74533);var s=e.i(79857);let o=a.default.join(r.default.homedir(),".failproofai"),l=a.default.join(o,"instance-id");function c(e){return n.default.createHmac("sha256","failproofai-telemetry-v1").update(e).digest("hex")}function d(e){let t;try{if(t=(0,s.z)(),i.default.readFileSync(t,"utf-8").trim()===e)return}catch{try{t=(0,s.z)()}catch{return}}try{i.default.mkdirSync(a.default.dirname(t),{recursive:!0});let r=`${t}.${process.pid}.tmp`;i.default.writeFileSync(r,e,{encoding:"utf-8",mode:384}),i.default.renameSync(r,t)}catch{}}e.s(["f",0,function(){if(t)return t;let e=function(){try{for(let e of(r.default.platform(),["/etc/machine-id","/var/lib/dbus/machine-id"]))try{let t=i.default.readFileSync(e,"utf-8").trim();if(t)return t}catch{}}catch{}}();if(e)return d(t=c(e)),t;let a=[r.default.hostname(),r.default.homedir(),r.default.platform(),r.default.arch(),r.default.cpus()[0]?.model??""].join(":");return a?d(t=c(a)):d(t=function(){try{let e=i.default.readFileSync(l,"utf-8").trim();if(e)return e}catch{}let e=n.default.randomUUID();try{i.default.mkdirSync(o,{recursive:!0}),i.default.writeFileSync(l,e,"utf-8")}catch{}return e}()),t}])},28067,e=>{e.s(["_",0,"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX","W",0,"failproofai-oss"])}],24214,(e,t,i)=>{t.exports={name:"failproofai",version:"1.0.12",description:"Observability and enforcement for AI agent harnesses. 40 built-in policies hooked into 12 of them — Claude Code, Codex, Cursor, Hermes, OpenClaw and more — blocking the tool call before it runs. Local dashboard included, no account needed.",bin:{failproofai:"./dist/cli.mjs",failproofaid:"./bin/failproofaid-shim.mjs"},files:["bin/","src/","scripts/","lib/","pi-extension/","hermes-plugin/","openclaw-plugin/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node --external sql.js && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"","build:worker":"bun build --target=node --format=esm --outfile=dist/worker.mjs bin/failproofai-worker.mjs --external posthog-node --external sql.js",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun run build:worker && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate","validate:mdx":"bun scripts/validate-mdx.ts","docs:audit":"bun scripts/docs-audit.ts","build:pack":"bun scripts/build-policy-pack.mjs"},keywords:["agent-observability","llm-observability","agent-tracing","agent-monitoring","agent-harness","guardrails","enforcement","policies","evals","ai-agent","autonomous-agent","agent-reliability","failure-prevention","claude-code","codex","hermes","openclaw","cli","local-first","hooks"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/FailproofAI/failproofai",repository:{type:"git",url:"https://github.com/FailproofAI/failproofai.git"},bugs:{url:"https://github.com/FailproofAI/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@anthropic-ai/sdk":"^0.135.0","@mdx-js/mdx":"^3.1.1","@tailwindcss/postcss":"^4.3.1","@tanstack/react-virtual":"^3.14.10","@testing-library/jest-dom":"^7.0.0","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.5","@types/node":"26.6.5","@types/react":"19.3.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.1.0",clsx:"^2.1.1",eslint:"^10.9.0","eslint-config-next":"^16.3.2",jsdom:"^30.0.1","lucide-react":"^1.33.0",next:"^16.3.8",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.3.1",typescript:"6.0.3",vitest:"^5.0.0"},dependencies:{"html-to-image":"^1.11.13","jsonc-parser":"^3.3.1","posthog-node":"^5.50.0","smol-toml":"^1.9.1","sql.js":"^1.14.1",yaml:"^2.9.0"},overrides:{nanoid:"3.3.18",postcss:"8.5.26","eslint-plugin-react-hooks":"7.0.1",vite:"8.1.6",undici:"7.30.1",zod:"4.6.6","brace-expansion":"5.0.12",sharp:"0.35.5","source-map-js":"1.2.2",browserslist:"4.28.8"},optionalDependencies:{"@failproofai/failproofaid-linux-x64":"1.0.12","@failproofai/failproofaid-linux-arm64":"1.0.12","@failproofai/failproofaid-darwin-x64":"1.0.12","@failproofai/failproofaid-darwin-arm64":"1.0.12"},failproofaidBinaries:{"linux-x64":"3b379ce2b03dd8a74393daed2c3120309f591fe6433e0c939d70c7b20da55be7","linux-arm64":"bd77d7fee68dc2723fb57cc9c7fcf957b7e939c797e61b099c412263880aa16e","darwin-x64":"fce3faab9406b1c2267955f0e07d04ef7a2b7a0b007e12ecd144fcfef563ebc8","darwin-arm64":"765732f8f64aa3d3dbd98e93b1aba71fc02956f65baeb73b08447b37fac3a17b"}}}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0trp3ycqv17cl._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[97610,e=>{var t=e.i(89171),i=e.i(71809),n=e.i(73634),s=e.i(73136),r=e.i(52306),o=e.i(38791),a=e.i(38441),c=e.i(12714),l=e.i(2157),d=e.i(50227),u=e.i(81580);let p=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;var f=e.i(54214);function m(e,t){let i=[];for(let s of e)if("assistant"===s.type)for(let e of s.message.content){var n;let r;if("tool_use"!==e.type)continue;let o=e.name,c=(n=t.cli,(o?"copilot"===n?a.s[o]??o:"cursor"===n?a.D[o]??o:"codex"===n?a.j[o]??o:"opencode"===n?a.A[o]??o:"pi"===n?a.S[o]??o:"hermes"===n?a.C[o]??o:"openclaw"===n?a.e[o]??o:"factory"===n?a.r[o]??o:"devin"===n?a.u[o]??o:"antigravity"===n?a.I[o]??o:"goose"===n?a.K[o]??o:o:o)??o),l=function(e,t,i){let n;if(!e||!t||"object"!=typeof t||Array.isArray(t)||("copilot"===i?n=a.U[e]:"opencode"===i?n=a.k[e]:"pi"===i?n=a.V[e]:"hermes"===i?n=a.z[e]:"openclaw"===i?n=a.v[e]:"antigravity"===i?n=a.H[e]:"goose"===i&&(n=a.M[e]),!n))return t;let s={};for(let[e,i]of Object.entries(t))s[n[e]??e]=i;return s}(c,e.input,t.cli);e.result?.content&&(r=function(e){let t=Buffer.from(e,"utf-8");if(t.byteLength<=65536)return e;let i=65536;for(;i>0&&(192&t[i])==128;)i--;return t.subarray(0,i).toString("utf-8")}(e.result.content)),i.push({cli:t.cli,sessionId:t.sessionId,transcriptPath:t.transcriptPath,cwd:t.cwd,timestamp:s.timestamp,toolName:c,rawToolName:o,toolInput:l??{},toolResultText:r})}return i}async function y(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of function(){let e,t=(0,u.n)();try{e=(0,l.readdirSync)(t,{withFileTypes:!0})}catch{return[]}return e.filter(e=>e.isDirectory()).map(e=>({name:e.name,cwd:(0,u.b)(e.name),path:(0,d.join)(t,e.name)}))}()){let s;if(!t||t.has(e.cwd)){try{s=function(e){let t,i=[];try{t=(0,l.readdirSync)(e.path,{withFileTypes:!0})}catch{return i}for(let n of t)if(n.isFile()&&n.name.endsWith(".jsonl")){let t=n.name.slice(0,-6);if(!p.test(t))continue;let s=(0,d.join)(e.path,n.name);try{let n=(0,l.statSync)(s);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:s,mtimeMs:n.mtimeMs,sizeBytes:n.size,isSubagent:!1})}catch{}}else if(n.isDirectory()&&p.test(n.name)){let t,s=(0,d.join)(e.path,n.name,"subagents");if(!(0,l.existsSync)(s))continue;try{t=(0,l.readdirSync)(s,{withFileTypes:!0})}catch{continue}for(let n of t){if(!n.isFile()||!n.name.endsWith(".jsonl"))continue;let t=n.name.slice(0,-6),r=(0,d.join)(s,n.name);try{let n=(0,l.statSync)(r);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:r,mtimeMs:n.mtimeMs,sizeBytes:n.size,isSubagent:!0})}catch{}}}return i}(e)}catch{continue}for(let t of s)t.mtimeMs<i||n.push({cli:"claude",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.transcriptPath,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes})}}return n}async function h(e){let t,i;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}try{i=await (0,f.j)(t,"session")}catch{return[]}let n="";for(let e of t.split("\n",50))if(e.trim())try{let t=JSON.parse(e);if("string"==typeof t.cwd&&t.cwd.length>0){n=t.cwd;break}}catch{}return m(i,{cli:"claude",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:n})}async function g(e,t){let i,n;if(!Number.isFinite(t)||t<0)return null;let s=null;try{s=await (0,c.open)(e.transcriptPath,"r");let{size:n}=await s.stat();if(t>n)return null;if(t===n)return{events:[],bytesConsumed:t};let r=Buffer.alloc(n-t);await s.read(r,0,r.length,t),i=r.toString("utf-8")}catch{return null}finally{if(s)try{await s.close()}catch{}}let r=i.lastIndexOf("\n"),o=-1===r?"":i.slice(0,r+1),a=i.slice(r+1),l=a.trim().length>0&&(()=>{try{return JSON.parse(a),!0}catch{return!1}})()?o+a:o;if(0===l.length)return{events:[],bytesConsumed:t};let d=t+Buffer.byteLength(l,"utf-8");try{n=await (0,f.j)(l,"session")}catch{return null}let u="";for(let e of l.split("\n",50))if(e.trim())try{let t=JSON.parse(e);if("string"==typeof t.cwd&&t.cwd.length>0){u=t.cwd;break}}catch{}return{events:m(n,{cli:"claude",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:u}),bytesConsumed:d,cwd:u||void 0}}var w=e.i(36203),N=e.i(57232);async function v(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,w.getCodexProjects)())){let{cwd:s,sessions:r}=await (0,w.getCodexSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"codex",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function S(e){let t=await (0,N.getCodexSessionLog)(e.sessionId);return t?m(t.entries,{cli:"codex",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var b=e.i(55851),x=e.i(78166);async function j(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,b.getCopilotProjects)())){let{cwd:s,sessions:r}=await (0,b.getCopilotSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"copilot",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function O(e){let t=await (0,x.getCopilotSessionLog)(e.sessionId);return t?m(t.entries,{cli:"copilot",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var I=e.i(46413),C=e.i(72094);async function $(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,I.getCursorProjects)())){let{cwd:s,sessions:r}=await (0,I.getCursorSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"cursor",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function T(e){let t=await (0,C.getCursorSessionLog)(e.sessionId);return t?m(t.entries,{cli:"cursor",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var k=e.i(35435),P=e.i(99440);async function M(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,k.getOpenCodeProjects)())){let{cwd:s,sessions:r}=await (0,k.getOpenCodeSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();!(s<i)&&t.sessionId&&n.push({cli:"opencode",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:0})}}return n}async function R(e){let t=await (0,P.getOpenCodeSessionLog)(e.sessionId);return t?m(t.entries,{cli:"opencode",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var B=e.i(19791),E=e.i(85116);async function A(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,B.getPiProjects)())){let{cwd:s,sessions:r}=await (0,B.getPiSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"pi",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function D(e){let t=await (0,E.getPiSessionLog)(e.sessionId);return t?m(t.entries,{cli:"pi",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var _=e.i(64828),U=e.i(28898),J=e.i(3605);async function z(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,_.getHermesSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!(e.messageCount<=0)||e.hasMessages)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"hermes",projectName:e.cwd?(0,u.f)(e.cwd):e.source?(0,U.S)(e.profile,e.source):`hermes:${e.profile}`,sessionId:e.sessionId,transcriptPath:`hermes://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:e.messageCount});return s}async function W(e){let t=await (0,J.getHermesSessionLog)(e.sessionId);return t?m(t.entries,{cli:"hermes",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var q=e.i(90624),Y=e.i(64199);async function F(e={}){if(e.projects&&e.projects.length>0)return[];let t=e.sinceMs??0,i=[];for(let e of(await (0,q.getOpenClawSessions)()))e.mtimeMs<t||i.push({cli:"openclaw",projectName:(0,q.openClawProjectPath)(e.agentId,e.channel),sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return i}async function L(e){let t=await (0,Y.getOpenClawSessionLog)(e.sessionId);return t?m(t.entries,{cli:"openclaw",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var H=e.i(28246);async function Q(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(0,H.listFactoryTranscripts)())!(e.mtimeMs<i)&&(!t||t.has(e.cwd))&&n.push({cli:"factory",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return n}async function V(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.V)(t,"session"),n=(0,H.factoryLinesToLogEntries)(i,"session"),s="";for(let e of i)if(e&&"object"==typeof e&&"session_start"===e.type){let t=e.cwd;if("string"==typeof t&&t.length>0){s=t;break}}return m(n,{cli:"factory",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:s})}var G=e.i(93114),Z=e.i(30441);async function K(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[],s=await (0,Z.getAntigravityIndex)();for(let e of(0,G.listAntigravityTranscripts)()){if(e.mtimeMs<i)continue;let r=s.get(e.conversationId)?.cwd;(!t||r&&t.has(r))&&n.push({cli:"antigravity",projectName:r?(0,u.f)(r):"antigravity",sessionId:e.conversationId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes})}return n}async function X(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.V)(t,"session"),n=(0,G.antigravityLinesToLogEntries)(i,"session"),s="";for(let e of i){if(!e||"object"!=typeof e)continue;let t=e.tool_calls;if(Array.isArray(t)){for(let e of t){let t=e&&"object"==typeof e?e.args:void 0,i=t&&"object"==typeof t?t.Cwd:void 0;if("string"==typeof i&&i.length>0){s=i;break}}if(s)break}}return m(n,{cli:"antigravity",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:s})}var ee=e.i(79364),et=e.i(40375);async function ei(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,ee.getDevinSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"devin",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:`devin-db://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:0});return s}async function en(e){let t=await (0,et.getDevinSessionLog)(e.sessionId);return t?m(t.entries,{cli:"devin",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var es=e.i(69164),er=e.i(36618);let eo={claude:{cli:"claude",listTranscripts:y,streamEvents:h,streamEventsFrom:g},codex:{cli:"codex",listTranscripts:v,streamEvents:S},copilot:{cli:"copilot",listTranscripts:j,streamEvents:O},cursor:{cli:"cursor",listTranscripts:$,streamEvents:T},opencode:{cli:"opencode",listTranscripts:M,streamEvents:R},pi:{cli:"pi",listTranscripts:A,streamEvents:D},hermes:{cli:"hermes",listTranscripts:z,streamEvents:W},openclaw:{cli:"openclaw",listTranscripts:F,streamEvents:L},factory:{cli:"factory",listTranscripts:Q,streamEvents:V},devin:{cli:"devin",listTranscripts:ei,streamEvents:en},antigravity:{cli:"antigravity",listTranscripts:K,streamEvents:X},goose:{cli:"goose",listTranscripts:async function(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,es.getGooseSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"goose",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:`goose-db://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:0});return s},streamEvents:async function(e){let t=await (0,er.getGooseSessionLog)(e.sessionId);return t?m(t.entries,{cli:"goose",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}}},ea=/\.(?:ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|swift|rb|php|c|h|cc|cpp|hpp|cs|scala|sh|bash|zsh|json|yaml|yml|toml|md|txt|sql|html|css|scss|sass)$/i,ec=["/","/home","/usr","/etc","/var","/opt","/Users"],el="rereadAfterEdit",ed=[{name:"redundant-cd-cwd",description:"Bash commands prefixed with `cd <cwd> && …` even though commands already run in cwd.",category:"Wasteful",severity:"info",displayTitle:"Prepended cd <cwd> before commands",impact:"Pure waste — your agent's shell already runs in `cwd`.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t||!e.cwd)return null;let i=t.trimStart(),n=/^cd\s+(?:"([^"]+)"|'([^']+)'|(\S+))\s*&&\s*([\s\S]+)$/.exec(i);if(!n)return null;let s=(n[1]??n[2]??n[3]??"").replace(/\/+$/,"");if(s!==e.cwd.replace(/\/+$/,""))return null;let r=n[4].trim();return{example:`cd ${s} && ${r}`}}},{name:"prefer-edit-over-read-cat",description:"Bash `cat`/`head`/`tail`/`less`/`more` on a single source file — use Read.",category:"Wasteful",severity:"info",displayTitle:"Used `cat`/`head`/`tail` on a source file",impact:"Burns tokens; the Read tool returns content directly without going through Bash output.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim();if(/[|<>;&`$()]/.test(i))return null;let n=/^(cat|head|tail|less|more)\s+(?:-\S+\s+)*(?:"([^"]+)"|'([^']+)'|(\S+))\s*$/.exec(i);if(!n)return null;let s=n[2]??n[3]??n[4]??"";return!s||/(?:^|\/)\.env(?:\..+)?$/.test(s)||!ea.test(s)?null:{example:i}}},{name:"prefer-edit-over-sed-awk",description:"Bash `sed -i`/`awk` in-place edits — use Edit.",category:"Wasteful",severity:"info",displayTitle:"Used sed -i or awk for an in-place edit",impact:"Edit tool is safer and produces a diff the agent can verify.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim();return/(?:^|\s|;|&&|\|\|)sed\b[^|]*\s-i(?=\b|['"])/.test(i)||/(?:^|\s|;|&&|\|\|)awk\b[^|]*\s>\s*\S+/.test(i)&&!/\|/.test(i)?{example:i}:null}},{name:"prefer-write-over-heredoc",description:"Bash heredoc / `echo > file` writing multi-line content — use Write.",category:"Wasteful",severity:"info",displayTitle:"Used heredoc / `echo > file` to write a multi-line file",impact:"Write tool handles escaping and is verifiable.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;return"string"!=typeof t?null:/<<-?\s*['"]?[A-Za-z_][A-Za-z0-9_]*['"]?\s*>\s*\S/.test(t)||/(?:^|\s|;|&&|\|\|)(?:echo|printf)\s+["'][^"']*\n[^"']*["']\s*>\s*\S/.test(t)?{example:t.replace(/\s+/g," ").trim().slice(0,160)}:null}},{name:"sleep-polling-loop",description:"Bash long `sleep` or while-sleep polling loops.",category:"Wasteful",severity:"info",displayTitle:"Used a long sleep or while-sleep polling loop",impact:"Burns wall-clock; better to wait for an explicit signal.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;if(/\bwhile\b[\s\S]*?\bsleep\b[\s\S]*?\bdone\b/.test(t))return{example:t.replace(/\s+/g," ").trim().slice(0,160)};let i=/\bsleep\s+(\d+(?:\.\d+)?)(m|h|d)?\b/.exec(t);if(i){let e=parseFloat(i[1]),n=i[2]??"s";if(("m"===n?60*e:"h"===n?3600*e:"d"===n?86400*e:e)>=30)return{example:t.replace(/\s+/g," ").trim().slice(0,160)}}return null}},{name:"find-from-root",description:"Bash `find` against `/`, `/home`, `/usr`, etc. — scope to cwd instead.",category:"Risky",severity:"warn",displayTitle:"Ran find from /, /home, /usr, etc.",impact:"Filesystem-wide finds exhaust resources and rarely return useful results.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim(),n=/(?:^|[\s;|&])find\s+(?:-\S+\s+)*("[^"]+"|'[^']+'|\S+)/.exec(i);if(!n)return null;let s=n[1].replace(/^["']|["']$/g,"").replace(/\/+$/,"")||"/";return ec.includes(s)?{example:i.slice(0,160)}:null}},{name:"git-commit-no-verify",description:"git commit invoked with --no-verify / -n, skipping hooks.",category:"Risky",severity:"warn",displayTitle:"Committed with --no-verify",impact:"Skips pre-commit hooks that exist to catch broken or unsafe code.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;return"string"!=typeof t?null:/\bgit\s+commit\b/.test(t)&&(/\s--no-verify\b/.test(t)||/\s-n\b/.test(t))?{example:t.replace(/\s+/g," ").trim().slice(0,160)}:null}},{name:"reread-after-edit",description:"Read of a file that was just Edit'd or Write'n in the same session.",category:"Wasteful",severity:"info",displayTitle:"Re-read a file it just edited",impact:"Edit/Write already returned the updated content; the second Read is wasted tokens.",detect(e,t){let i,n=((i=t[el])||(i={countdown:new Map},t[el]=i),i),s=e.toolInput.file_path,r="string"==typeof s?s:null;for(let[e,t]of n.countdown)t<=1?n.countdown.delete(e):n.countdown.set(e,t-1);return r?"Edit"===e.toolName||"Write"===e.toolName?(n.countdown.set(r,5),null):"Read"===e.toolName&&n.countdown.has(r)?(n.countdown.delete(r),{example:`Read ${r} immediately after Edit/Write`}):null:null}}],eu=["cowboy","explorer","ghost","optimist","hammer","architect"],ep={explorer:.38,architect:.33,hammer:.11,cowboy:.11,optimist:.07,ghost:.01,precision:0,goldfish:0},ef={optimist:0,cowboy:0,explorer:0,goldfish:0,architect:0,precision:0,hammer:0,ghost:0};for(let e of eu)ef[e]=Math.max(ep[e],.05);var em=e.i(66680),ey=e.i(79857);let eh=null,eg=null;function ew(){if(eh)return eh;let e=n.H.map(e=>`${e.name}|${e.fn.toString()}`).sort().join("\n");return eh=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function eN(){if(eg)return eg;let e=ed.map(e=>`${e.name}|${e.detect.toString()}`).sort().join("\n");return eg=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function ev(e){let t=(0,ey.r)(),i=(0,em.createHash)("sha1").update(e).digest("hex");return(0,d.join)(t,`${i}.json`)}function eS(e,t){if(t<=0)return null;let i=null;try{i=(0,l.openSync)(e,"r");let n=Buffer.alloc(Math.min(4096,t));(0,l.readSync)(i,n,0,n.length,0);let s=Math.min(4096,t),r=Buffer.alloc(s);return(0,l.readSync)(i,r,0,s,t-s),(0,em.createHash)("sha1").update(String(t)).update(n).update(r).digest("hex").slice(0,32)}catch{return null}finally{if(null!==i)try{(0,l.closeSync)(i)}catch{}}}var eb=e.i(71194);let ex="request-cut",ej=/^[A-Za-z0-9._:/@~+-]{1,200}$/;function eO(e){let t=e.find(e=>"deny"===e.decision);if(t)return{decision:"deny",entries:[{policyName:t.policyName,reason:t.reason??""}]};let i=e.filter(e=>"instruct"===e.decision);return i.length>0?{decision:"instruct",entries:i.map(e=>({policyName:e.policyName,reason:e.reason??""}))}:{decision:"allow",entries:e.filter(e=>"allow"===e.decision&&e.reason).map(e=>({policyName:e.policyName,reason:e.reason}))}}let eI={allow:0,instruct:1,deny:2};var eC=e.i(97348),e$=e.i(49335),eT=e.i(10659);function ek(e,t){let i=e.trim(),n="string"==typeof t?t.trim():"";return n?i?`${i}. ${n}`:n:i}function eP(e,t){if(!e?.policyParams)return;let i=e.policyParams[t];if(i)return i;let n=function(e){if(!e.startsWith("pack/"))return null;let t=e.slice(5),i=t.lastIndexOf("/");if(i<=0)return null;let n=t.slice(0,i),s=n.lastIndexOf("@");return{packId:s>0?n.slice(0,s):n,name:t.slice(i+1)}}(t);if(n)return function(e,t,i){if(!e)return;let n=e[`pack/${t}/${i}`];return n||(t.toLowerCase()===eb.w.toLowerCase()?e[i]:void 0)}(e.policyParams,n.packId,n.name);let s=`${o.l}/`;if(t.startsWith(s))return e.policyParams[t.slice(s.length)]}let eM={authority:"hard",reviewedBy:[]};async function eR(e,t,i,n,s){let r,a,c=t.tool_name,l=(0,o.w)(e,c);if((0,eC.Q)(`evaluating ${l.length} policies for ${e}`),!s){if(0===l.length)return{exitCode:0,stdout:"",stderr:"",policyName:null,reason:null,decision:"allow"};let{verdicts:s}=await eB(e,t,i,n,l);return eE(e,i,c,eO(s))}try{r=await eB(e,t,i,n,l,s)}catch(e){throw s.abort(),e}r.hardDenied?(s.abort(),a={kind:"not-consulted"}):(s.releaseRegistry?.(),a=await s.review);let d=function(e,t,i){let n=eO(e);if("not-consulted"===t.kind)return{final:n,cleared:[],decidedByJev:!1,activity:{evaluator:"jev",jevMode:i}};if("fallback"===t.kind)return{final:n,cleared:[],decidedByJev:!1,activity:{evaluator:"jev-fallback",jevFallbackReason:t.reason,...null!==t.latencyMs?{jevLatencyMs:t.latencyMs}:{},...t.model?{jevModel:t.model}:{},jevMode:i}};let s=t.injectionAsked&&!t.injected&&!t.requestCut,r=new Set(t.asked),o=new Set(t.notDenied),a=s&&!t.unclearableWarned?e.filter(e=>"allow"!==e.decision&&"reviewable"===e.authority&&0!==e.reviewedBy.length&&e.reviewedBy.every(e=>r.has(e)&&o.has(e))).map(e=>e.policyName):[],c={policyName:t.policyName,reason:t.reason??`Flagged by semantic review (${t.policyName})`},l=function(e,t,i,n){let s=new Set(t),r=e.filter(e=>!s.has(e.policyName)),o=r.find(e=>"deny"===e.decision);if(o)return{final:{decision:"deny",entries:[{policyName:o.policyName,reason:o.reason??""}]},decidedByJev:!1};if("deny"===i)return{final:{decision:"deny",entries:[n]},decidedByJev:!0};let a=r.filter(e=>"instruct"===e.decision).map(e=>({policyName:e.policyName,reason:e.reason??""}));return("instruct"===i&&a.push(n),a.length>0)?{final:{decision:"instruct",entries:a},decidedByJev:a[0]===n}:{final:eO(r),decidedByJev:!1}}(e,a,t.decision,c),d={evaluator:t.requestCut?"jev-fallback":"jev",...t.requestCut?{jevFallbackReason:ex}:{},jevDecision:t.decision,...a.length>0&&eI[l.final.decision]<eI[n.decision]?{jevCleared:a}:{},...null!==t.latencyMs?{jevLatencyMs:t.latencyMs}:{},...t.model?{jevModel:t.model}:{},jevMode:i};if("observe"===i){let e="deny"===t.decision||"instruct"===t.decision?{policyName:c.policyName,decision:t.decision,reason:c.reason,version:t.model&&ej.test(t.model)?t.model:"jev"}:void 0;return{final:n,cleared:a,decidedByJev:!1,activity:d,...e?{observeVerdict:e}:{}}}return{...l,cleared:a,activity:d}}(r.verdicts,a,s.mode);return d.cleared.length>0&&(0,eC.Q)(`jev ${"observe"===s.mode?"would clear":"cleared"}: ${d.cleared.join(", ")}`),"jev-fallback"===d.activity.evaluator&&(0,eC.Q)(d.activity.jevFallbackReason===ex?"jev could not be shown the whole call; it cleared nothing, and the call was not allowed on a partial read":`jev unavailable (${d.activity.jevFallbackReason}); the regex result decided this call`),{...eE(e,i,c,d.final,d.decidedByJev),twoTier:{activity:d.activity,decidedByJev:d.decidedByJev,...(d.decidedByJev||d.observeVerdict)&&"answered"===a.kind&&a.origin?{jevOrigin:a.origin}:{},...d.observeVerdict?{observeVerdict:d.observeVerdict}:{}}}}async function eB(e,t,i,n,s,r){let a=t.tool_name,c=t.tool_input,l={eventType:e,payload:t,toolName:a,toolInput:c,session:i,cli:i?.cli},d=[];for(let t of s){let s,a,c=t.params,u=eP(n,t.name)??{};if(c){let e={};for(let[t,i]of Object.entries(c))e[t]=t in u?u[t]:i.default;s={...l,params:e}}else s={...l,params:u};try{a=await t.fn(s)}catch(s){let n=s instanceof Error?s.message:String(s);(0,eC.g)(`policy "${t.name}" threw: ${n}`),t.name.startsWith(`${o.l}/`)&&(0,e$.f)((0,eT.f)(),"policy_evaluation_error",{policy_name:t.name,event_type:e,cli:i?.cli??null,error_type:s instanceof Error?s.name:"unknown"});continue}if("deny"===a.decision){let e=ek(a.reason??`Blocked by policy: ${t.name}`,eP(n,t.name)?.hint);(0,eC.Q)(`deny by "${t.name}": ${e}`);let{authority:i,reviewedBy:s}=r?r.authorityOf(t):eM;if(d.push({policyName:t.name,decision:"deny",reason:e,authority:i,reviewedBy:s}),"hard"===i)return{verdicts:d,hardDenied:!0};continue}if("instruct"===a.decision){let e=ek(a.reason??`Instruction from policy: ${t.name}`,eP(n,t.name)?.hint),{authority:i,reviewedBy:s}=r?r.authorityOf(t):eM;d.push({policyName:t.name,decision:"instruct",reason:e,authority:i,reviewedBy:s}),(0,eC.Q)(`instruct by "${t.name}": ${e}`)}"allow"===a.decision&&a.reason&&d.push({policyName:t.name,decision:"allow",reason:a.reason,...eM})}return{verdicts:d,hardDenied:!1}}function eE(e,t,i,n,s=!1){if("deny"===n.decision){let[r]=n.entries;return function(e,t,i,n,s,r=!1){let o;o=i||("UserPromptSubmit"===e?"prompt":"SessionStart"===e?"session start":"SessionEnd"===e?"session end":"Stop"===e?"stop":"operation");let a=r?`Blocked ${o} by failproofai because: ${s.replace(/[.\s]+$/,"")}, as flagged by Jev semantic review`:`Blocked ${o} by failproofai because: ${s}, as per the policy configured by the user`;if(t?.cli==="cursor")return"Stop"===e||"SubagentStop"===e?{exitCode:0,stdout:JSON.stringify({followup_message:`MANDATORY ACTION REQUIRED from failproofai (policy: ${n}): ${s}
|
|
1
|
+
(()=>{"use strict";module.exports=[97610,e=>{var t=e.i(89171),i=e.i(71809),n=e.i(73634),s=e.i(73136),r=e.i(52306),o=e.i(38791),a=e.i(38441),c=e.i(12714),l=e.i(2157),d=e.i(50227),u=e.i(81580);let p=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;var f=e.i(54214);function m(e,t){let i=[];for(let s of e)if("assistant"===s.type)for(let e of s.message.content){var n;let r;if("tool_use"!==e.type)continue;let o=e.name,c=(n=t.cli,(o?"copilot"===n?a.s[o]??o:"cursor"===n?a.D[o]??o:"codex"===n?a.j[o]??o:"opencode"===n?a.A[o]??o:"pi"===n?a.S[o]??o:"hermes"===n?a.C[o]??o:"openclaw"===n?a.e[o]??o:"factory"===n?a.r[o]??o:"devin"===n?a.u[o]??o:"antigravity"===n?a.I[o]??o:"goose"===n?a.K[o]??o:o:o)??o),l=function(e,t,i){let n;if(!e||!t||"object"!=typeof t||Array.isArray(t)||("copilot"===i?n=a.U[e]:"opencode"===i?n=a.k[e]:"pi"===i?n=a.V[e]:"hermes"===i?n=a.z[e]:"openclaw"===i?n=a.v[e]:"antigravity"===i?n=a.H[e]:"goose"===i&&(n=a.M[e]),!n))return t;let s={};for(let[e,i]of Object.entries(t))s[n[e]??e]=i;return s}(c,e.input,t.cli);e.result?.content&&(r=function(e){let t=Buffer.from(e,"utf-8");if(t.byteLength<=65536)return e;let i=65536;for(;i>0&&(192&t[i])==128;)i--;return t.subarray(0,i).toString("utf-8")}(e.result.content)),i.push({cli:t.cli,sessionId:t.sessionId,transcriptPath:t.transcriptPath,cwd:t.cwd,timestamp:s.timestamp,toolName:c,rawToolName:o,toolInput:l??{},toolResultText:r})}return i}async function y(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of function(){let e,t=(0,u.n)();try{e=(0,l.readdirSync)(t,{withFileTypes:!0})}catch{return[]}return e.filter(e=>e.isDirectory()).map(e=>({name:e.name,cwd:(0,u.b)(e.name),path:(0,d.join)(t,e.name)}))}()){let s;if(!t||t.has(e.cwd)){try{s=function(e){let t,i=[];try{t=(0,l.readdirSync)(e.path,{withFileTypes:!0})}catch{return i}for(let n of t)if(n.isFile()&&n.name.endsWith(".jsonl")){let t=n.name.slice(0,-6);if(!p.test(t))continue;let s=(0,d.join)(e.path,n.name);try{let n=(0,l.statSync)(s);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:s,mtimeMs:n.mtimeMs,sizeBytes:n.size,isSubagent:!1})}catch{}}else if(n.isDirectory()&&p.test(n.name)){let t,s=(0,d.join)(e.path,n.name,"subagents");if(!(0,l.existsSync)(s))continue;try{t=(0,l.readdirSync)(s,{withFileTypes:!0})}catch{continue}for(let n of t){if(!n.isFile()||!n.name.endsWith(".jsonl"))continue;let t=n.name.slice(0,-6),r=(0,d.join)(s,n.name);try{let n=(0,l.statSync)(r);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:r,mtimeMs:n.mtimeMs,sizeBytes:n.size,isSubagent:!0})}catch{}}}return i}(e)}catch{continue}for(let t of s)t.mtimeMs<i||n.push({cli:"claude",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.transcriptPath,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes})}}return n}async function h(e){let t,i;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}try{i=await (0,f.j)(t,"session")}catch{return[]}let n="";for(let e of t.split("\n",50))if(e.trim())try{let t=JSON.parse(e);if("string"==typeof t.cwd&&t.cwd.length>0){n=t.cwd;break}}catch{}return m(i,{cli:"claude",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:n})}async function g(e,t){let i,n;if(!Number.isFinite(t)||t<0)return null;let s=null;try{s=await (0,c.open)(e.transcriptPath,"r");let{size:n}=await s.stat();if(t>n)return null;if(t===n)return{events:[],bytesConsumed:t};let r=Buffer.alloc(n-t);await s.read(r,0,r.length,t),i=r.toString("utf-8")}catch{return null}finally{if(s)try{await s.close()}catch{}}let r=i.lastIndexOf("\n"),o=-1===r?"":i.slice(0,r+1),a=i.slice(r+1),l=a.trim().length>0&&(()=>{try{return JSON.parse(a),!0}catch{return!1}})()?o+a:o;if(0===l.length)return{events:[],bytesConsumed:t};let d=t+Buffer.byteLength(l,"utf-8");try{n=await (0,f.j)(l,"session")}catch{return null}let u="";for(let e of l.split("\n",50))if(e.trim())try{let t=JSON.parse(e);if("string"==typeof t.cwd&&t.cwd.length>0){u=t.cwd;break}}catch{}return{events:m(n,{cli:"claude",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:u}),bytesConsumed:d,cwd:u||void 0}}var w=e.i(36203),N=e.i(57232);async function v(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,w.getCodexProjects)())){let{cwd:s,sessions:r}=await (0,w.getCodexSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"codex",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function S(e){let t=await (0,N.getCodexSessionLog)(e.sessionId);return t?m(t.entries,{cli:"codex",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var b=e.i(55851),x=e.i(78166);async function j(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,b.getCopilotProjects)())){let{cwd:s,sessions:r}=await (0,b.getCopilotSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"copilot",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function O(e){let t=await (0,x.getCopilotSessionLog)(e.sessionId);return t?m(t.entries,{cli:"copilot",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var I=e.i(46413),k=e.i(72094);async function C(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,I.getCursorProjects)())){let{cwd:s,sessions:r}=await (0,I.getCursorSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"cursor",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function $(e){let t=await (0,k.getCursorSessionLog)(e.sessionId);return t?m(t.entries,{cli:"cursor",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var T=e.i(35435),P=e.i(99440);async function M(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,T.getOpenCodeProjects)())){let{cwd:s,sessions:r}=await (0,T.getOpenCodeSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();!(s<i)&&t.sessionId&&n.push({cli:"opencode",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:0})}}return n}async function R(e){let t=await (0,P.getOpenCodeSessionLog)(e.sessionId);return t?m(t.entries,{cli:"opencode",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var B=e.i(19791),E=e.i(85116);async function A(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,B.getPiProjects)())){let{cwd:s,sessions:r}=await (0,B.getPiSessionsByEncodedName)(e.name),o=s??"";if(!t||t.has(o))for(let t of r){let s=t.lastModified.getTime();if(s<i)continue;let r=0;try{r=(0,l.statSync)(t.path).size}catch{}t.sessionId&&n.push({cli:"pi",projectName:e.name,sessionId:t.sessionId,transcriptPath:t.path,mtimeMs:s,sizeBytes:r})}}return n}async function D(e){let t=await (0,E.getPiSessionLog)(e.sessionId);return t?m(t.entries,{cli:"pi",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var _=e.i(64828),U=e.i(28898),J=e.i(3605);async function z(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,_.getHermesSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!(e.messageCount<=0)||e.hasMessages)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"hermes",projectName:e.cwd?(0,u.f)(e.cwd):e.source?(0,U.S)(e.profile,e.source):`hermes:${e.profile}`,sessionId:e.sessionId,transcriptPath:`hermes://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:e.messageCount});return s}async function W(e){let t=await (0,J.getHermesSessionLog)(e.sessionId);return t?m(t.entries,{cli:"hermes",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var q=e.i(90624),Y=e.i(64199);async function F(e={}){if(e.projects&&e.projects.length>0)return[];let t=e.sinceMs??0,i=[];for(let e of(await (0,q.getOpenClawSessions)()))e.mtimeMs<t||i.push({cli:"openclaw",projectName:(0,q.openClawProjectPath)(e.agentId,e.channel),sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return i}async function L(e){let t=await (0,Y.getOpenClawSessionLog)(e.sessionId);return t?m(t.entries,{cli:"openclaw",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var H=e.i(28246);async function Q(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(0,H.listFactoryTranscripts)())!(e.mtimeMs<i)&&(!t||t.has(e.cwd))&&n.push({cli:"factory",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return n}async function V(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.V)(t,"session"),n=(0,H.factoryLinesToLogEntries)(i,"session"),s="";for(let e of i)if(e&&"object"==typeof e&&"session_start"===e.type){let t=e.cwd;if("string"==typeof t&&t.length>0){s=t;break}}return m(n,{cli:"factory",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:s})}var G=e.i(93114),Z=e.i(30441);async function K(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[],s=await (0,Z.getAntigravityIndex)();for(let e of(0,G.listAntigravityTranscripts)()){if(e.mtimeMs<i)continue;let r=s.get(e.conversationId)?.cwd;(!t||r&&t.has(r))&&n.push({cli:"antigravity",projectName:r?(0,u.f)(r):"antigravity",sessionId:e.conversationId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes})}return n}async function X(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.V)(t,"session"),n=(0,G.antigravityLinesToLogEntries)(i,"session"),s="";for(let e of i){if(!e||"object"!=typeof e)continue;let t=e.tool_calls;if(Array.isArray(t)){for(let e of t){let t=e&&"object"==typeof e?e.args:void 0,i=t&&"object"==typeof t?t.Cwd:void 0;if("string"==typeof i&&i.length>0){s=i;break}}if(s)break}}return m(n,{cli:"antigravity",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:s})}var ee=e.i(79364),et=e.i(40375);async function ei(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,ee.getDevinSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"devin",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:`devin-db://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:0});return s}async function en(e){let t=await (0,et.getDevinSessionLog)(e.sessionId);return t?m(t.entries,{cli:"devin",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var es=e.i(69164),er=e.i(36618);let eo={claude:{cli:"claude",listTranscripts:y,streamEvents:h,streamEventsFrom:g},codex:{cli:"codex",listTranscripts:v,streamEvents:S},copilot:{cli:"copilot",listTranscripts:j,streamEvents:O},cursor:{cli:"cursor",listTranscripts:C,streamEvents:$},opencode:{cli:"opencode",listTranscripts:M,streamEvents:R},pi:{cli:"pi",listTranscripts:A,streamEvents:D},hermes:{cli:"hermes",listTranscripts:z,streamEvents:W},openclaw:{cli:"openclaw",listTranscripts:F,streamEvents:L},factory:{cli:"factory",listTranscripts:Q,streamEvents:V},devin:{cli:"devin",listTranscripts:ei,streamEvents:en},antigravity:{cli:"antigravity",listTranscripts:K,streamEvents:X},goose:{cli:"goose",listTranscripts:async function(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,es.getGooseSessions)(),s=[];for(let e of n)!(e.mtimeMs<i)&&(!t||e.cwd&&t.has(e.cwd))&&s.push({cli:"goose",projectName:e.projectName,sessionId:e.sessionId,transcriptPath:`goose-db://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:0});return s},streamEvents:async function(e){let t=await (0,er.getGooseSessionLog)(e.sessionId);return t?m(t.entries,{cli:"goose",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}}},ea=/\.(?:ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|swift|rb|php|c|h|cc|cpp|hpp|cs|scala|sh|bash|zsh|json|yaml|yml|toml|md|txt|sql|html|css|scss|sass)$/i,ec=["/","/home","/usr","/etc","/var","/opt","/Users"],el="rereadAfterEdit",ed=[{name:"redundant-cd-cwd",description:"Bash commands prefixed with `cd <cwd> && …` even though commands already run in cwd.",category:"Wasteful",severity:"info",displayTitle:"Prepended cd <cwd> before commands",impact:"Pure waste — your agent's shell already runs in `cwd`.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t||!e.cwd)return null;let i=t.trimStart(),n=/^cd\s+(?:"([^"]+)"|'([^']+)'|(\S+))\s*&&\s*([\s\S]+)$/.exec(i);if(!n)return null;let s=(n[1]??n[2]??n[3]??"").replace(/\/+$/,"");if(s!==e.cwd.replace(/\/+$/,""))return null;let r=n[4].trim();return{example:`cd ${s} && ${r}`}}},{name:"prefer-edit-over-read-cat",description:"Bash `cat`/`head`/`tail`/`less`/`more` on a single source file — use Read.",category:"Wasteful",severity:"info",displayTitle:"Used `cat`/`head`/`tail` on a source file",impact:"Burns tokens; the Read tool returns content directly without going through Bash output.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim();if(/[|<>;&`$()]/.test(i))return null;let n=/^(cat|head|tail|less|more)\s+(?:-\S+\s+)*(?:"([^"]+)"|'([^']+)'|(\S+))\s*$/.exec(i);if(!n)return null;let s=n[2]??n[3]??n[4]??"";return!s||/(?:^|\/)\.env(?:\..+)?$/.test(s)||!ea.test(s)?null:{example:i}}},{name:"prefer-edit-over-sed-awk",description:"Bash `sed -i`/`awk` in-place edits — use Edit.",category:"Wasteful",severity:"info",displayTitle:"Used sed -i or awk for an in-place edit",impact:"Edit tool is safer and produces a diff the agent can verify.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim();return/(?:^|\s|;|&&|\|\|)sed\b[^|]*\s-i(?=\b|['"])/.test(i)||/(?:^|\s|;|&&|\|\|)awk\b[^|]*\s>\s*\S+/.test(i)&&!/\|/.test(i)?{example:i}:null}},{name:"prefer-write-over-heredoc",description:"Bash heredoc / `echo > file` writing multi-line content — use Write.",category:"Wasteful",severity:"info",displayTitle:"Used heredoc / `echo > file` to write a multi-line file",impact:"Write tool handles escaping and is verifiable.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;return"string"!=typeof t?null:/<<-?\s*['"]?[A-Za-z_][A-Za-z0-9_]*['"]?\s*>\s*\S/.test(t)||/(?:^|\s|;|&&|\|\|)(?:echo|printf)\s+["'][^"']*\n[^"']*["']\s*>\s*\S/.test(t)?{example:t.replace(/\s+/g," ").trim().slice(0,160)}:null}},{name:"sleep-polling-loop",description:"Bash long `sleep` or while-sleep polling loops.",category:"Wasteful",severity:"info",displayTitle:"Used a long sleep or while-sleep polling loop",impact:"Burns wall-clock; better to wait for an explicit signal.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;if(/\bwhile\b[\s\S]*?\bsleep\b[\s\S]*?\bdone\b/.test(t))return{example:t.replace(/\s+/g," ").trim().slice(0,160)};let i=/\bsleep\s+(\d+(?:\.\d+)?)(m|h|d)?\b/.exec(t);if(i){let e=parseFloat(i[1]),n=i[2]??"s";if(("m"===n?60*e:"h"===n?3600*e:"d"===n?86400*e:e)>=30)return{example:t.replace(/\s+/g," ").trim().slice(0,160)}}return null}},{name:"find-from-root",description:"Bash `find` against `/`, `/home`, `/usr`, etc. — scope to cwd instead.",category:"Risky",severity:"warn",displayTitle:"Ran find from /, /home, /usr, etc.",impact:"Filesystem-wide finds exhaust resources and rarely return useful results.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;if("string"!=typeof t)return null;let i=t.trim(),n=/(?:^|[\s;|&])find\s+(?:-\S+\s+)*("[^"]+"|'[^']+'|\S+)/.exec(i);if(!n)return null;let s=n[1].replace(/^["']|["']$/g,"").replace(/\/+$/,"")||"/";return ec.includes(s)?{example:i.slice(0,160)}:null}},{name:"git-commit-no-verify",description:"git commit invoked with --no-verify / -n, skipping hooks.",category:"Risky",severity:"warn",displayTitle:"Committed with --no-verify",impact:"Skips pre-commit hooks that exist to catch broken or unsafe code.",detect(e){if("Bash"!==e.toolName)return null;let t=e.toolInput.command;return"string"!=typeof t?null:/\bgit\s+commit\b/.test(t)&&(/\s--no-verify\b/.test(t)||/\s-n\b/.test(t))?{example:t.replace(/\s+/g," ").trim().slice(0,160)}:null}},{name:"reread-after-edit",description:"Read of a file that was just Edit'd or Write'n in the same session.",category:"Wasteful",severity:"info",displayTitle:"Re-read a file it just edited",impact:"Edit/Write already returned the updated content; the second Read is wasted tokens.",detect(e,t){let i,n=((i=t[el])||(i={countdown:new Map},t[el]=i),i),s=e.toolInput.file_path,r="string"==typeof s?s:null;for(let[e,t]of n.countdown)t<=1?n.countdown.delete(e):n.countdown.set(e,t-1);return r?"Edit"===e.toolName||"Write"===e.toolName?(n.countdown.set(r,5),null):"Read"===e.toolName&&n.countdown.has(r)?(n.countdown.delete(r),{example:`Read ${r} immediately after Edit/Write`}):null:null}}],eu=["cowboy","explorer","ghost","optimist","hammer","architect"],ep={explorer:.38,architect:.33,hammer:.11,cowboy:.11,optimist:.07,ghost:.01,precision:0,goldfish:0},ef={optimist:0,cowboy:0,explorer:0,goldfish:0,architect:0,precision:0,hammer:0,ghost:0};for(let e of eu)ef[e]=Math.max(ep[e],.05);var em=e.i(66680),ey=e.i(79857);let eh=null,eg=null;function ew(){if(eh)return eh;let e=n.H.map(e=>`${e.name}|${e.fn.toString()}`).sort().join("\n");return eh=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function eN(){if(eg)return eg;let e=ed.map(e=>`${e.name}|${e.detect.toString()}`).sort().join("\n");return eg=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function ev(e){let t=(0,ey.r)(),i=(0,em.createHash)("sha1").update(e).digest("hex");return(0,d.join)(t,`${i}.json`)}function eS(e,t){if(t<=0)return null;let i=null;try{i=(0,l.openSync)(e,"r");let n=Buffer.alloc(Math.min(4096,t));(0,l.readSync)(i,n,0,n.length,0);let s=Math.min(4096,t),r=Buffer.alloc(s);return(0,l.readSync)(i,r,0,s,t-s),(0,em.createHash)("sha1").update(String(t)).update(n).update(r).digest("hex").slice(0,32)}catch{return null}finally{if(null!==i)try{(0,l.closeSync)(i)}catch{}}}var eb=e.i(71194);let ex="request-cut",ej=/^[A-Za-z0-9._:/@~+-]{1,200}$/;function eO(e){let t=e.find(e=>"deny"===e.decision);if(t)return{decision:"deny",entries:[{policyName:t.policyName,reason:t.reason??""}]};let i=e.filter(e=>"instruct"===e.decision);return i.length>0?{decision:"instruct",entries:i.map(e=>({policyName:e.policyName,reason:e.reason??""}))}:{decision:"allow",entries:e.filter(e=>"allow"===e.decision&&e.reason).map(e=>({policyName:e.policyName,reason:e.reason}))}}let eI={allow:0,instruct:1,deny:2};var ek=e.i(97348),eC=e.i(49335),e$=e.i(10659);function eT(e,t){let i=e.trim(),n="string"==typeof t?t.trim():"";return n?i?`${i}. ${n}`:n:i}function eP(e,t){if(!e?.policyParams)return;let i=e.policyParams[t];if(i)return i;let n=function(e){if(!e.startsWith("pack/"))return null;let t=e.slice(5),i=t.lastIndexOf("/");if(i<=0)return null;let n=t.slice(0,i),s=n.lastIndexOf("@");return{packId:s>0?n.slice(0,s):n,name:t.slice(i+1)}}(t);if(n)return function(e,t,i){if(!e)return;let n=e[`pack/${t}/${i}`];return n||(t.toLowerCase()===eb.w.toLowerCase()?e[i]:void 0)}(e.policyParams,n.packId,n.name);let s=`${o.l}/`;if(t.startsWith(s))return e.policyParams[t.slice(s.length)]}let eM={authority:"hard",reviewedBy:[]};async function eR(e,t,i,n,s){let r,a,c=t.tool_name,l=(0,o.w)(e,c);if((0,ek.Q)(`evaluating ${l.length} policies for ${e}`),!s){if(0===l.length)return{exitCode:0,stdout:"",stderr:"",policyName:null,reason:null,decision:"allow"};let{verdicts:s}=await eB(e,t,i,n,l);return eE(e,i,c,eO(s))}try{r=await eB(e,t,i,n,l,s)}catch(e){throw s.abort(),e}if(r.hardDenied?(s.abort(),a={kind:"not-consulted"}):(s.releaseRegistry?.(),a=await s.review),"answered"===a.kind&&0===a.asked.length&&"allow"===a.decision&&!a.observedAsked?.length||"not-consulted"===a.kind&&s.cloud)return eE(e,i,c,eO(r.verdicts));let d=function(e,t,i){let n=eO(e);if("not-consulted"===t.kind)return{final:n,cleared:[],decidedByJev:!1,activity:{evaluator:"jev",jevMode:i}};if("fallback"===t.kind)return{final:n,cleared:[],decidedByJev:!1,activity:{evaluator:"jev-fallback",jevFallbackReason:t.reason,...null!==t.latencyMs?{jevLatencyMs:t.latencyMs}:{},...t.model?{jevModel:t.model}:{},jevMode:i}};let s=t.injectionAsked&&!t.injected&&!t.requestCut,r=new Set(t.asked),o=new Set(t.notDenied),a=s&&!t.unclearableWarned?e.filter(e=>"allow"!==e.decision&&"reviewable"===e.authority&&0!==e.reviewedBy.length&&e.reviewedBy.every(e=>r.has(e)&&o.has(e))).map(e=>e.policyName):[],c={policyName:t.policyName,reason:t.reason??`Flagged by semantic review (${t.policyName})`},l=function(e,t,i,n){let s=new Set(t),r=e.filter(e=>!s.has(e.policyName)),o=r.find(e=>"deny"===e.decision);if(o)return{final:{decision:"deny",entries:[{policyName:o.policyName,reason:o.reason??""}]},decidedByJev:!1};if("deny"===i)return{final:{decision:"deny",entries:[n]},decidedByJev:!0};let a=r.filter(e=>"instruct"===e.decision).map(e=>({policyName:e.policyName,reason:e.reason??""}));return("instruct"===i&&a.push(n),a.length>0)?{final:{decision:"instruct",entries:a},decidedByJev:a[0]===n}:{final:eO(r),decidedByJev:!1}}(e,a,t.decision,c),d={evaluator:t.requestCut?"jev-fallback":"jev",...t.requestCut?{jevFallbackReason:ex}:{},jevDecision:t.decision,...a.length>0&&eI[l.final.decision]<eI[n.decision]?{jevCleared:a}:{},...null!==t.latencyMs?{jevLatencyMs:t.latencyMs}:{},...t.model?{jevModel:t.model}:{},jevMode:i,...t.checks?{jevChecks:[...t.checks]}:{}};if("observe"===i){let e="deny"===t.decision||"instruct"===t.decision?{policyName:c.policyName,decision:t.decision,reason:c.reason,version:t.model&&ej.test(t.model)?t.model:"jev"}:void 0;return{final:n,cleared:a,decidedByJev:!1,activity:d,...e?{observeVerdict:e}:{}}}return{...l,cleared:a,activity:d}}(r.verdicts,a,s.mode);return d.cleared.length>0&&(0,ek.Q)(`jev ${"observe"===s.mode?"would clear":"cleared"}: ${d.cleared.join(", ")}`),"jev-fallback"===d.activity.evaluator&&(0,ek.Q)(d.activity.jevFallbackReason===ex?"jev could not be shown the whole call; it cleared nothing, and the call was not allowed on a partial read":`jev unavailable (${d.activity.jevFallbackReason}); the regex result decided this call`),{...eE(e,i,c,d.final,d.decidedByJev),twoTier:{activity:d.activity,decidedByJev:d.decidedByJev,...(d.decidedByJev||d.observeVerdict)&&"answered"===a.kind&&a.origin?{jevOrigin:a.origin}:{},...d.observeVerdict?{observeVerdict:d.observeVerdict}:{},..."answered"===a.kind&&a.observedCloud?.length?{observedCloud:a.observedCloud}:{}}}}async function eB(e,t,i,n,s,r){let a=t.tool_name,c=t.tool_input,l={eventType:e,payload:t,toolName:a,toolInput:c,session:i,cli:i?.cli},d=[];for(let t of s){let s,a,c=t.params,u=eP(n,t.name)??{};if(c){let e={};for(let[t,i]of Object.entries(c))e[t]=t in u?u[t]:i.default;s={...l,params:e}}else s={...l,params:u};try{a=await t.fn(s)}catch(s){let n=s instanceof Error?s.message:String(s);(0,ek.g)(`policy "${t.name}" threw: ${n}`),t.name.startsWith(`${o.l}/`)&&(0,eC.f)((0,e$.f)(),"policy_evaluation_error",{policy_name:t.name,event_type:e,cli:i?.cli??null,error_type:s instanceof Error?s.name:"unknown"});continue}if("deny"===a.decision){let e=eT(a.reason??`Blocked by policy: ${t.name}`,eP(n,t.name)?.hint);(0,ek.Q)(`deny by "${t.name}": ${e}`);let{authority:i,reviewedBy:s}=r?r.authorityOf(t):eM;if(d.push({policyName:t.name,decision:"deny",reason:e,authority:i,reviewedBy:s}),"hard"===i)return{verdicts:d,hardDenied:!0};continue}if("instruct"===a.decision){let e=eT(a.reason??`Instruction from policy: ${t.name}`,eP(n,t.name)?.hint),{authority:i,reviewedBy:s}=r?r.authorityOf(t):eM;d.push({policyName:t.name,decision:"instruct",reason:e,authority:i,reviewedBy:s}),(0,ek.Q)(`instruct by "${t.name}": ${e}`)}"allow"===a.decision&&a.reason&&d.push({policyName:t.name,decision:"allow",reason:a.reason,...eM})}return{verdicts:d,hardDenied:!1}}function eE(e,t,i,n,s=!1){if("deny"===n.decision){let[r]=n.entries;return function(e,t,i,n,s,r=!1){let o;o=i||("UserPromptSubmit"===e?"prompt":"SessionStart"===e?"session start":"SessionEnd"===e?"session end":"Stop"===e?"stop":"operation");let a=r?`Blocked ${o} by failproofai because: ${s.replace(/[.\s]+$/,"")}, as flagged by Jev semantic review`:`Blocked ${o} by failproofai because: ${s}, as per the policy configured by the user`;if(t?.cli==="cursor")return"Stop"===e||"SubagentStop"===e?{exitCode:0,stdout:JSON.stringify({followup_message:`MANDATORY ACTION REQUIRED from failproofai (policy: ${n}): ${s}
|
|
2
2
|
|
|
3
3
|
You MUST complete the above action NOW. Do NOT ask the user for confirmation — execute the required action, then attempt to finish your task again.`}),stderr:"",policyName:n,reason:s,decision:"deny"}:"UserPromptSubmit"===e?{exitCode:0,stdout:JSON.stringify({continue:!1,user_message:a}),stderr:"",policyName:n,reason:s,decision:"deny"}:{exitCode:0,stdout:JSON.stringify({permission:"deny",user_message:a,agent_message:a}),stderr:"",policyName:n,reason:s,decision:"deny"};if(t?.cli==="pi")return"Stop"===e?{exitCode:0,stdout:JSON.stringify({permission:"deny",reason:`MANDATORY ACTION REQUIRED from failproofai (policy: ${n}): ${s}
|
|
4
4
|
|
|
@@ -28,6 +28,6 @@ You MUST complete the above action(s) NOW. Do NOT ask the user for confirmation
|
|
|
28
28
|
|
|
29
29
|
You MUST complete the above action(s) NOW. Do NOT ask the user for confirmation — execute the required action(s), then attempt to finish your task again.`}),stderr:"",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}return{exitCode:0,stdout:"",stderr:i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n")+"\n",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}if(t?.cli==="goose")return{exitCode:0,stdout:"",stderr:i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n")+"\n",policyName:s[0],policyNames:s,reason:n,decision:"instruct"};if("Stop"===e||"SubagentStop"===e){let e=1===s.length?`policy: ${s[0]}`:`policies: ${s.join(", ")}`,i=`MANDATORY ACTION REQUIRED from failproofai (${e}): ${n}
|
|
30
30
|
|
|
31
|
-
You MUST complete the above action(s) NOW. Do NOT ask the user for confirmation — execute the required action(s), then attempt to finish your task again.`;return t?.cli==="copilot"?{exitCode:0,stdout:JSON.stringify({decision:"block",reason:i}),stderr:"",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}:{exitCode:2,stdout:"",stderr:i,policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}return{exitCode:0,stdout:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:`Instruction from failproofai: ${n}`}}),stderr:"",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}(e,t,n.entries):n.entries.length>0?function(e,t,i){let n=i.map(e=>e.reason).join("\n"),s=i.map(e=>e.policyName);if(t?.cli==="cursor"){let e={permission:"allow",additional_context:`Note from failproofai: ${n}`},t=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify(e),stderr:t+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}if(t?.cli==="pi"){let e={permission:"allow",reason:`Note from failproofai: ${n}`},t=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify(e),stderr:t+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}if(t?.cli==="openclaw"){let e=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify({permission:"allow",reason:`Note from failproofai: ${n}`}),stderr:e+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}let r=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return"PreToolUse"===e||"PostToolUse"===e||"UserPromptSubmit"===e||"PermissionRequest"===e?{exitCode:0,stdout:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:`Note from failproofai: ${n}`}}),stderr:r+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}:{exitCode:0,stdout:"",stderr:r+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}(e,t,n.entries):{exitCode:0,stdout:"",stderr:"",policyName:null,reason:null,decision:"allow"}}let eA=new Set(["warn-repeated-tool-calls"].map(e=>(0,o.o)(e))),eD=!1,e_=null;async function eU(){if(eD)return;e_=(0,o.Z)(),(0,o.G)();let e=n.H.map(e=>e.name).filter(e=>!eA.has((0,o.o)(e)));(0,n.k)(e),eD=!0}async function eJ(e){eD||await eU();let t={sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:e.cwd,cli:e.cli},i={tool_name:e.toolName,tool_input:e.toolInput,session_id:e.sessionId,cwd:e.cwd,transcript_path:e.transcriptPath},n=[];if(ez(await eR("PreToolUse",i,t),"PreToolUse",n),void 0!==e.toolResultText){let s={...i,tool_response:e.toolResultText};ez(await eR("PostToolUse",s,t),"PostToolUse",n)}return n}function ez(e,t,i){for(let n of e.policyNames&&e.policyNames.length>0?e.policyNames:e.policyName?[e.policyName]:[])i.push({policyName:n,decision:e.decision,reason:e.reason,eventType:t})}function eW(e){let t=e.indexOf("/");return t>=0?e.slice(t+1):e}function eq(e){return e.length<=80?e:e.slice(0,79)+"…"}async function eY(e,t){let i,n={transcriptPath:e.transcriptPath,cli:e.cli,projectName:e.projectName,sessionId:e.sessionId,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes,cwd:"",eventsScanned:0,hitsByName:{},examplesByName:{},rangeByName:{}},s=eo[e.cli],r=0,o=!1,a=t?.detectorState??{};if(s.streamEventsFrom){let a=await s.streamEventsFrom(e,t?.fromByte??0);a?(i=a.events,r=a.bytesConsumed,n.cwd=a.cwd??"",o=!0):(i=await s.streamEvents(e),r=0)}else i=await s.streamEvents(e),r=0;if(0===i.length)return{result:n,bytesScanned:r,detectorState:a,resumed:o};for(let e of(n.eventsScanned=i.length,n.cwd=n.cwd||i[0].cwd||"",i)){let t;for(let t of ed){let i=t.detect(e,a);i&&eF(n,t.name,e.timestamp,e.cwd,eq(i.example))}try{t=await eJ(e)}catch{continue}for(let i of t){let t=function(e,t){if("Bash"===t.toolName){let e=t.toolInput.command;if("string"==typeof e)return e.replace(/\s+/g," ")}let i=t.toolInput.file_path;return"string"==typeof i?`${t.toolName} ${i}`:`${t.toolName}`}(i.policyName,e);eF(n,i.policyName,e.timestamp,e.cwd,eq(t))}}return{result:n,bytesScanned:r,detectorState:a,resumed:o}}function eF(e,t,i,n,s){e.hitsByName[t]=(e.hitsByName[t]??0)+1;let r=e.examplesByName[t]??[];r.length<3&&(r.push({timestamp:i,cwd:n,example:s}),e.examplesByName[t]=r);let o=e.rangeByName[t];o?(i<o.first&&(o.first=i),i>o.last&&(o.last=i)):e.rangeByName[t]={first:i,last:i}}async function eL(e={}){let t=Date.now();await eU();try{return await eH(e,t)}finally{eD&&(null!==e_&&((0,o.c)(e_),e_=null),eD=!1)}}async function eH(e,t){let c=e.clis??Array.from(a._),d=function(e){if(!e)return;let t=/^(\d+)\s*([dhm])$/i.exec(e.trim());if(t){let e=parseInt(t[1],10),i=t[2].toLowerCase();return Date.now()-e*("d"===i?864e5:"h"===i?36e5:6e4)}let i=Date.parse(e);if(!Number.isNaN(i))return i;throw Error(`Invalid --since value: "${e}" (expected e.g. "7d", "30d", or "2026-04-01")`)}(e.since),u=new Set(((0,s.f)().enabledPolicies??[]).map(e=>(0,o.o)(e)));try{for(let e of(0,r.f)().packs)for(let t of e.enabled??e.policies.map(e=>e.name))u.add((0,o.o)(t))}catch{}let p=[];for(let t of c){let i,n=eo[t];try{i=await n.listTranscripts({projects:e.projects,sinceMs:d})}catch{continue}p.push(...i)}let f=t=>{try{e.onProgress?.(t)}catch{}};if(e.onProgress){let e=new Map;for(let t of p)e.set(t.cli,(e.get(t.cli)??0)+1);f({kind:"discovered",agents:c.map(t=>({cli:t,transcripts:e.get(t)??0})),policies:(0,o.Z)().filter(e=>{let t=e.match.events;return!t||0===t.length||t.includes("PreToolUse")||t.includes("PostToolUse")}).length})}let m=0,y=0,h=p.map(t=>async()=>{let i,n=null;if(!e.noCache){let e=function(e,t,i){if(0===i)return null;let n=ev(e);if(!(0,l.existsSync)(n))return null;try{let s=(0,l.readFileSync)(n,"utf-8"),r=JSON.parse(s);if(4!==r.schemaVersion||r.engineVersion!==ew()||r.detectorVersion!==eN()||!Number.isFinite(r.cachedAt)||Date.now()-r.cachedAt>2592e6||!r.result)return null;if(r.mtimeMs===t&&r.sizeBytes===i)return{kind:"hit",result:r.result};let o=r.bytesScanned;if(!Number.isFinite(o)||o<=0||o>i||!r.anchorHash||eS(e,o)!==r.anchorHash)return null;return{kind:"resume",result:r.result,fromByte:o,detectorState:function(e){if(!e)return{};try{return JSON.parse(e,(e,t)=>t&&"object"==typeof t&&Array.isArray(t.__map)?new Map(t.__map):t)}catch{return{}}}(r.detectorState)}}catch{return null}}(t.transcriptPath,t.mtimeMs,t.sizeBytes);if(e?.kind==="hit")return e.result;i=e?.kind==="resume"?{fromByte:e.fromByte,detectorState:e.detectorState}:void 0,n=e?.kind==="resume"?e.result:null}try{let s=await eY(t,i),r=n&&s.resumed?function(e,t){let i={...e,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes,cwd:e.cwd||t.cwd||"",eventsScanned:(e.eventsScanned??0)+(t.eventsScanned??0),hitsByName:{...e.hitsByName},examplesByName:{},rangeByName:{...e.rangeByName}};for(let[t,n]of Object.entries(e.examplesByName))i.examplesByName[t]=[...n];for(let[e,n]of Object.entries(t.hitsByName))i.hitsByName[e]=(i.hitsByName[e]??0)+n;for(let[e,n]of Object.entries(t.examplesByName)){let t=i.examplesByName[e]??[];for(let e of n){if(t.length>=3)break;t.push(e)}i.examplesByName[e]=t}for(let[e,n]of Object.entries(t.rangeByName)){let t=i.rangeByName[e];t?(n.first<t.first&&(t.first=n.first),n.last>t.last&&(t.last=n.last)):i.rangeByName[e]={...n}}return i}(n,s.result):s.result;return e.noCache||function(e,t,i,n,s){if(0===i)return;let r=ev(e);try{(0,l.mkdirSync)((0,ey.r)(),{recursive:!0});let a={schemaVersion:4,cachedAt:Date.now(),mtimeMs:t,sizeBytes:i,engineVersion:ew(),detectorVersion:eN(),result:n};if(s&&s.bytesScanned>0){let t=eS(e,s.bytesScanned);if(t){var o;a.bytesScanned=s.bytesScanned,a.anchorHash=t,o=s.detectorState,a.detectorState=JSON.stringify(o,(e,t)=>t instanceof Map?{__map:[...t.entries()]}:t)}}(0,l.writeFileSync)(r,JSON.stringify(a),{encoding:"utf-8",mode:384});try{(0,l.chmodSync)(r,384)}catch{}}catch{}}(t.transcriptPath,t.mtimeMs,t.sizeBytes,r,s.bytesScanned>0?{bytesScanned:s.bytesScanned,detectorState:s.detectorState}:void 0),r}catch{return y++,{transcriptPath:t.transcriptPath,cli:t.cli,projectName:t.projectName,cwd:"",sessionId:t.sessionId,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes,eventsScanned:0,hitsByName:{},examplesByName:{},rangeByName:{}}}}),g=e.onProgress?h.map((e,t)=>async()=>{let i={};try{let t=await e();return i=t.hitsByName,t}finally{f({kind:"transcript",cli:p[t].cli,hitsByName:i})}}):h,w=await (0,i.f)(g,8),N=[];for(let e of w)"fulfilled"===e.status?N.push(e.value):m++;let v=function(e,t){let i=new Map;for(let t of e)for(let[e,n]of Object.entries(t.hitsByName)){let s=i.get(e)??{hits:0,projects:new Set,examples:[]};for(let i of(s.hits+=n,s.projects.add(t.projectName),t.examplesByName[e]??[]))s.examples.length<3&&s.examples.push({...i,sessionId:t.sessionId});let r=t.rangeByName[e];r&&((!s.first||r.first<s.first)&&(s.first=r.first),(!s.last||r.last>s.last)&&(s.last=r.last)),i.set(e,s)}let s=new Map(ed.map(e=>[e.name,e])),r=[];for(let[e,a]of i){let i=s.get(e),c=!!i,l=c?null:function(e){let t=eW(e);for(let i of n.H)if(i.name===e||eW(i.name)===t)return i;return null}(e),d=c?"audit-detector":"builtin",u=!c&&t.has((0,o.o)(e)),p=i?.displayTitle??l?.displayTitle??i?.description??l?.description??eW(e),f=i?.impact??l?.impact??"";r.push({name:e,source:d,category:i?.category??l?.category??"Custom",severity:c?i?.severity??"info":function(e){let t,i=(t=e.indexOf("/"))>=0?e.slice(t+1):e;return i.startsWith("sanitize-")?"sanitize":i.startsWith("block-")?"deny":i.startsWith("warn-")||i.startsWith("protect-")||i.startsWith("prefer-")||i.startsWith("require-")?"warn":"deny"}(e),hits:a.hits,projects:a.projects.size,firstSeen:a.first,lastSeen:a.last,examples:a.examples,displayTitle:p,impact:f,enabledInConfig:u,installHint:"audit-detector"===d?"Audit-only — `failproofai audit` will keep tracking these.":u?"Already enforced — failproofai is blocking these in real time.":`Enable in one command: failproofai policies --install ${eW(e)}`})}return r.sort((e,t)=>t.hits-e.hits),r}(N,u);if(e.policies?.length){let t=new Set(e.policies.map(eW));v=v.filter(e=>t.has(eW(e.name)))}let S=v.reduce((e,t)=>e+t.hits,0),b=new Set,x=new Set,j=0;for(let e of N)Object.keys(e.hitsByName).length>0&&b.add(e.projectName),e.cwd&&x.add(e.cwd),j+=e.eventsScanned??0;return{version:2,scannedAt:new Date(t).toISOString(),scope:{cli:c,projects:e.projects??"all",since:e.since??null},transcripts:{scanned:p.length,skipped:m,errors:y,durationMs:Date.now()-t},results:v,totals:{hits:S,projectsWithHits:b.size},projectsScanned:[...x].sort(),eventsScanned:j,enabledBuiltinNames:[...u].map(e=>e.includes("/")?e.slice(e.indexOf("/")+1):e)}}var eQ=e.i(47756),eV=e.i(48480),eG=e.i(29095),eZ=e.i(46501),eK=e.i(60526);let eX=new Set(a._);async function e0(e){await (0,eZ.u)();let i={};try{let n=await e.text();if(n.trim().length>0){let e=JSON.parse(n);if(null===e||"object"!=typeof e||Array.isArray(e))return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"non_object_body"}),t.NextResponse.json({error:"Request body must be a JSON object"},{status:400});i=e}}catch{return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"invalid_json"}),t.NextResponse.json({error:"Invalid JSON body"},{status:400})}let n=function(e){let t={};if("string"==typeof e.since&&e.since.trim()&&(t.since=e.since.trim()),Array.isArray(e.cli)&&e.cli.length>0){let i=e.cli.filter(e=>"string"==typeof e&&eX.has(e));i.length>0&&(t.clis=i)}return Array.isArray(e.project)&&e.project.length>0&&(t.projects=e.project.filter(e=>"string"==typeof e)),Array.isArray(e.policy)&&e.policy.length>0&&(t.policies=e.policy.filter(e=>"string"==typeof e)),!0===e.noCache&&(t.noCache=!0),t}(i);if(!(0,eV.O)())return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"already_running"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});let s=(0,eG.R)("dashboard");if(!s.ok)return(0,eV.w)(null),(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"cross_process_lock"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});(0,eZ.z)("audit_run_started",{source:"dashboard",since:n.since??null,no_cache:!0===n.noCache,cli_count:n.clis?.length??0,project_count:n.projects?.length??0});let r=Date.now();return(async()=>{try{let e=await eL(n),t=(0,eQ.T)(n,e);(0,eZ.z)("audit_run_completed",{source:"dashboard",duration_ms:Date.now()-r,events_scanned:e.eventsScanned,sessions_scanned:e.transcripts.scanned,projects_scanned:e.projectsScanned.length,findings:e.results.length,total_hits:e.totals.hits,persisted:t}),(0,eV.w)(t?null:"audit finished but its result could not be saved")}catch(e){(0,eZ.z)("audit_run_failed",{source:"dashboard",duration_ms:Date.now()-r,error_type:e instanceof Error?e.name:"unknown",error_message:function(e){let t;try{t=e instanceof Error?e.message:String(e)}catch{return"unknown"}if(!t)return"";let i="";try{i=eK.default.homedir()}catch{}return i&&i.length>1&&(t=t.split(i).join("~")),t.length>300&&(t=t.slice(0,300)+"…"),t}(e)}),(0,eV.w)(e instanceof Error?e.message:String(e))}finally{s.lock.release()}})(),t.NextResponse.json({status:"started"},{status:202})}e.s(["POST",0,e0,"dynamic",0,"force-dynamic"],97610)},89498,e=>{var t=e.i(47909),i=e.i(74017),n=e.i(96250),s=e.i(59756),r=e.i(61916),o=e.i(74677),a=e.i(69741),c=e.i(16795),l=e.i(87718),d=e.i(95169),u=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(26937),y=e.i(10372),h=e.i(93695),g=e.i(9580);e.i(52474);var w=e.i(220);let N=new t.AppRouteRouteModule({definition:{kind:i.f.APP_ROUTE,page:"/api/audit/run/route",pathname:"/api/audit/run",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/audit/run/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(97610),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:S,serverHooks:b}=N;async function x(e,t,n){n.requestMeta&&(0,s.R)(e,n.requestMeta),N.isDev&&(0,s.i)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/audit/run/route";v=v.replace(/\/index$/,"")||"/";let S=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:b,deploymentId:x,params:j,nextConfig:O,parsedUrl:I,isDraftMode:C,prerenderManifest:$,routerServerContext:T,isOnDemandRevalidate:k,revalidateOnlyGenerated:P,resolvedPathname:M,clientReferenceManifest:R,serverActionsManifest:B,previewProps:E}=S,A=(0,a.f)(v),D=!!$.routes[M]&&(N.isDev||(0,g.f)(M,N.cacheOwner,$.routes[M])),_=!!($.dynamicRoutes[A]||D),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,I,!1):t.end("This page could not be found"),null);if(_&&!C){let e=$.dynamicRoutes[A];if(e&&!1===e.fallback&&!D){if(O.adapterPath)return await U();throw new h.NoFallbackError}}let J=null;!_||N.isDev||C||(J="/index"===(J=M)?"/":J),B&&R&&(0,o.f)({page:v,clientReferenceManifest:R,serverActionsManifest:B});let z=e.method||"GET",W=(0,r.v)(),q=W.getActiveScopeSpan(),Y=!!(null==T?void 0:T.isWrappedByNextServer),F=!!(0,s.w)(e,"minimalMode"),L=(0,s.w)(e,"incrementalCache")||await N.getIncrementalCache(e,O,E,$,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let H={params:j,previewProps:E,renderOpts:{experimental:{authInterrupts:!!O.experimental.authInterrupts,useCacheTimeout:O.experimental.useCacheTimeout,durableUseCacheEntries:!!O.experimental.durableUseCacheEntries},cacheComponents:!!O.cacheComponents,validationLevel:O.experimental.instantInsights.validationLevel,isDraftMode:C,incrementalCache:L,hmrRefreshHash:(0,s.w)(e,"hmrRefreshHash"),cacheLifeProfiles:O.cacheLife,staticPageGenerationTimeout:O.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0},sharedContext:{buildId:b,deploymentId:x}},Q=new c.x(e),V=new c.e(t),G=l.k.fromNodeNextRequest(Q,(0,l.t)(t)),Z=async({previousCacheEntry:i})=>{try{if(!F&&k&&P&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=null===J?await N.handle(G,H):await N.prerender(G,H);e.fetchMetrics=H.renderOpts.fetchMetrics;let r=H.renderOpts.pendingWaitUntil;r&&n.waitUntil&&(n.waitUntil(r),r=void 0);let o=H.renderOpts.collectedTags;if(!_)return await (0,p.f)(Q,V,s,r),null;{let e=await s.blob(),t=(0,f.S)(s.headers);o&&(t[y.M]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==H.renderOpts.collectedRevalidate&&!(H.renderOpts.collectedRevalidate>=y.Q)&&H.renderOpts.collectedRevalidate,n=void 0===H.renderOpts.collectedExpire||H.renderOpts.collectedExpire>=y.Q?!1!==i&&i>0?O.expireTime:void 0:H.renderOpts.collectedExpire;return{value:{kind:w.x.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:i,expire:n}}}}catch(t){throw(null==i?void 0:i.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.f)({isStaticGeneration:null!==J,isOnDemandRevalidate:k})},!1,T),t}},K=async(s,o)=>{try{var a,c;let s=await N.handleResponse({req:e,nextConfig:O,cacheKey:J,routeKind:i.f.APP_ROUTE,isFallback:!1,previewProps:E,prerenderManifest:$,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:P,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:F});if(null!==s&&"error"in s)throw s.error;if(!_)return;if((null==s||null==(a=s.value)?void 0:a.kind)!==w.x.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==s||null==(c=s.value)?void 0:c.kind}`);F||t.setHeader("x-nextjs-cache",k?"REVALIDATED":s.isMiss?"MISS":s.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let r=(0,f.G)(s.value.headers);F&&_||r.delete(y.M),!s.cacheControl||t.getHeader("Cache-Control")||r.get("Cache-Control")||r.set("Cache-Control",(0,m.f)(s.cacheControl)),await (0,p.f)(Q,V,new Response(s.value.body,{headers:r,status:s.value.status||200}));return}catch(i){if(i instanceof h.NoFallbackError||await N.onRequestError(e,i,{routerKind:"App Router",routePath:A,routeType:"route",revalidateReason:(0,u.f)({isStaticGeneration:null!==J,isOnDemandRevalidate:k})},!1,T),_)throw i;if(t.headersSent){if(s){let e=i instanceof Error?i:Error("Unknown app route error");s.recordException(e),s.setStatus({code:r.J.ERROR,message:e.message}),s.setAttribute("error.type",e.name)}t.writableEnded||t.destroyed||t.end()}else await (0,p.f)(Q,V,new Response(null,{status:500}));return}finally{(()=>{if(!s)return;let e=t.statusCode;s.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(s.setStatus({code:r.J.ERROR}),s.setAttribute("error.type",e.toString()));let i=W.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.q.handleRequest)return console.warn(`Unexpected root span type '${i.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=i.get("next.route")||A,a=`${z} ${n}`;s.setAttributes({"next.route":n,"http.route":n,"next.span_name":a}),s.updateName(a),o&&o!==s&&(o.setAttribute("http.route",n),o.updateName(a))})()}};if(Y&&q)await K(q,void 0);else{let t=W.getActiveScopeSpan();await W.withPropagatedContext(e.headers,()=>W.trace(d.q.handleRequest,{spanName:`${z} ${v}`,kind:r.C.SERVER,attributes:{"http.method":z,"http.target":e.url}},e=>K(e,t)),void 0,!Y)}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,n.f)({workAsyncStorage:v,workUnitAsyncStorage:S})},"routeModule",0,N,"serverHooks",0,b,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,S])}]})();
|
|
31
|
+
You MUST complete the above action(s) NOW. Do NOT ask the user for confirmation — execute the required action(s), then attempt to finish your task again.`;return t?.cli==="copilot"?{exitCode:0,stdout:JSON.stringify({decision:"block",reason:i}),stderr:"",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}:{exitCode:2,stdout:"",stderr:i,policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}return{exitCode:0,stdout:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:`Instruction from failproofai: ${n}`}}),stderr:"",policyName:s[0],policyNames:s,reason:n,decision:"instruct"}}(e,t,n.entries):n.entries.length>0?function(e,t,i){let n=i.map(e=>e.reason).join("\n"),s=i.map(e=>e.policyName);if(t?.cli==="cursor"){let e={permission:"allow",additional_context:`Note from failproofai: ${n}`},t=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify(e),stderr:t+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}if(t?.cli==="pi"){let e={permission:"allow",reason:`Note from failproofai: ${n}`},t=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify(e),stderr:t+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}if(t?.cli==="openclaw"){let e=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return{exitCode:0,stdout:JSON.stringify({permission:"allow",reason:`Note from failproofai: ${n}`}),stderr:e+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}let r=i.map(e=>`[failproofai] ${e.policyName}: ${e.reason}`).join("\n");return"PreToolUse"===e||"PostToolUse"===e||"UserPromptSubmit"===e||"PermissionRequest"===e?{exitCode:0,stdout:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:`Note from failproofai: ${n}`}}),stderr:r+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}:{exitCode:0,stdout:"",stderr:r+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}}(e,t,n.entries):{exitCode:0,stdout:"",stderr:"",policyName:null,reason:null,decision:"allow"}}let eA=new Set(["warn-repeated-tool-calls"].map(e=>(0,o.o)(e))),eD=!1,e_=null;async function eU(){if(eD)return;e_=(0,o.Z)(),(0,o.G)();let e=n.H.map(e=>e.name).filter(e=>!eA.has((0,o.o)(e)));(0,n.k)(e),eD=!0}async function eJ(e){eD||await eU();let t={sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:e.cwd,cli:e.cli},i={tool_name:e.toolName,tool_input:e.toolInput,session_id:e.sessionId,cwd:e.cwd,transcript_path:e.transcriptPath},n=[];if(ez(await eR("PreToolUse",i,t),"PreToolUse",n),void 0!==e.toolResultText){let s={...i,tool_response:e.toolResultText};ez(await eR("PostToolUse",s,t),"PostToolUse",n)}return n}function ez(e,t,i){for(let n of e.policyNames&&e.policyNames.length>0?e.policyNames:e.policyName?[e.policyName]:[])i.push({policyName:n,decision:e.decision,reason:e.reason,eventType:t})}function eW(e){let t=e.indexOf("/");return t>=0?e.slice(t+1):e}function eq(e){return e.length<=80?e:e.slice(0,79)+"…"}async function eY(e,t){let i,n={transcriptPath:e.transcriptPath,cli:e.cli,projectName:e.projectName,sessionId:e.sessionId,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes,cwd:"",eventsScanned:0,hitsByName:{},examplesByName:{},rangeByName:{}},s=eo[e.cli],r=0,o=!1,a=t?.detectorState??{};if(s.streamEventsFrom){let a=await s.streamEventsFrom(e,t?.fromByte??0);a?(i=a.events,r=a.bytesConsumed,n.cwd=a.cwd??"",o=!0):(i=await s.streamEvents(e),r=0)}else i=await s.streamEvents(e),r=0;if(0===i.length)return{result:n,bytesScanned:r,detectorState:a,resumed:o};for(let e of(n.eventsScanned=i.length,n.cwd=n.cwd||i[0].cwd||"",i)){let t;for(let t of ed){let i=t.detect(e,a);i&&eF(n,t.name,e.timestamp,e.cwd,eq(i.example))}try{t=await eJ(e)}catch{continue}for(let i of t){let t=function(e,t){if("Bash"===t.toolName){let e=t.toolInput.command;if("string"==typeof e)return e.replace(/\s+/g," ")}let i=t.toolInput.file_path;return"string"==typeof i?`${t.toolName} ${i}`:`${t.toolName}`}(i.policyName,e);eF(n,i.policyName,e.timestamp,e.cwd,eq(t))}}return{result:n,bytesScanned:r,detectorState:a,resumed:o}}function eF(e,t,i,n,s){e.hitsByName[t]=(e.hitsByName[t]??0)+1;let r=e.examplesByName[t]??[];r.length<3&&(r.push({timestamp:i,cwd:n,example:s}),e.examplesByName[t]=r);let o=e.rangeByName[t];o?(i<o.first&&(o.first=i),i>o.last&&(o.last=i)):e.rangeByName[t]={first:i,last:i}}async function eL(e={}){let t=Date.now();await eU();try{return await eH(e,t)}finally{eD&&(null!==e_&&((0,o.c)(e_),e_=null),eD=!1)}}async function eH(e,t){let c=e.clis??Array.from(a._),d=function(e){if(!e)return;let t=/^(\d+)\s*([dhm])$/i.exec(e.trim());if(t){let e=parseInt(t[1],10),i=t[2].toLowerCase();return Date.now()-e*("d"===i?864e5:"h"===i?36e5:6e4)}let i=Date.parse(e);if(!Number.isNaN(i))return i;throw Error(`Invalid --since value: "${e}" (expected e.g. "7d", "30d", or "2026-04-01")`)}(e.since),u=new Set(((0,s.f)().enabledPolicies??[]).map(e=>(0,o.o)(e)));try{for(let e of(0,r.f)().packs)for(let t of e.enabled??e.policies.map(e=>e.name))u.add((0,o.o)(t))}catch{}let p=[];for(let t of c){let i,n=eo[t];try{i=await n.listTranscripts({projects:e.projects,sinceMs:d})}catch{continue}p.push(...i)}let f=t=>{try{e.onProgress?.(t)}catch{}};if(e.onProgress){let e=new Map;for(let t of p)e.set(t.cli,(e.get(t.cli)??0)+1);f({kind:"discovered",agents:c.map(t=>({cli:t,transcripts:e.get(t)??0})),policies:(0,o.Z)().filter(e=>{let t=e.match.events;return!t||0===t.length||t.includes("PreToolUse")||t.includes("PostToolUse")}).length})}let m=0,y=0,h=p.map(t=>async()=>{let i,n=null;if(!e.noCache){let e=function(e,t,i){if(0===i)return null;let n=ev(e);if(!(0,l.existsSync)(n))return null;try{let s=(0,l.readFileSync)(n,"utf-8"),r=JSON.parse(s);if(4!==r.schemaVersion||r.engineVersion!==ew()||r.detectorVersion!==eN()||!Number.isFinite(r.cachedAt)||Date.now()-r.cachedAt>2592e6||!r.result)return null;if(r.mtimeMs===t&&r.sizeBytes===i)return{kind:"hit",result:r.result};let o=r.bytesScanned;if(!Number.isFinite(o)||o<=0||o>i||!r.anchorHash||eS(e,o)!==r.anchorHash)return null;return{kind:"resume",result:r.result,fromByte:o,detectorState:function(e){if(!e)return{};try{return JSON.parse(e,(e,t)=>t&&"object"==typeof t&&Array.isArray(t.__map)?new Map(t.__map):t)}catch{return{}}}(r.detectorState)}}catch{return null}}(t.transcriptPath,t.mtimeMs,t.sizeBytes);if(e?.kind==="hit")return e.result;i=e?.kind==="resume"?{fromByte:e.fromByte,detectorState:e.detectorState}:void 0,n=e?.kind==="resume"?e.result:null}try{let s=await eY(t,i),r=n&&s.resumed?function(e,t){let i={...e,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes,cwd:e.cwd||t.cwd||"",eventsScanned:(e.eventsScanned??0)+(t.eventsScanned??0),hitsByName:{...e.hitsByName},examplesByName:{},rangeByName:{...e.rangeByName}};for(let[t,n]of Object.entries(e.examplesByName))i.examplesByName[t]=[...n];for(let[e,n]of Object.entries(t.hitsByName))i.hitsByName[e]=(i.hitsByName[e]??0)+n;for(let[e,n]of Object.entries(t.examplesByName)){let t=i.examplesByName[e]??[];for(let e of n){if(t.length>=3)break;t.push(e)}i.examplesByName[e]=t}for(let[e,n]of Object.entries(t.rangeByName)){let t=i.rangeByName[e];t?(n.first<t.first&&(t.first=n.first),n.last>t.last&&(t.last=n.last)):i.rangeByName[e]={...n}}return i}(n,s.result):s.result;return e.noCache||function(e,t,i,n,s){if(0===i)return;let r=ev(e);try{(0,l.mkdirSync)((0,ey.r)(),{recursive:!0});let a={schemaVersion:4,cachedAt:Date.now(),mtimeMs:t,sizeBytes:i,engineVersion:ew(),detectorVersion:eN(),result:n};if(s&&s.bytesScanned>0){let t=eS(e,s.bytesScanned);if(t){var o;a.bytesScanned=s.bytesScanned,a.anchorHash=t,o=s.detectorState,a.detectorState=JSON.stringify(o,(e,t)=>t instanceof Map?{__map:[...t.entries()]}:t)}}(0,l.writeFileSync)(r,JSON.stringify(a),{encoding:"utf-8",mode:384});try{(0,l.chmodSync)(r,384)}catch{}}catch{}}(t.transcriptPath,t.mtimeMs,t.sizeBytes,r,s.bytesScanned>0?{bytesScanned:s.bytesScanned,detectorState:s.detectorState}:void 0),r}catch{return y++,{transcriptPath:t.transcriptPath,cli:t.cli,projectName:t.projectName,cwd:"",sessionId:t.sessionId,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes,eventsScanned:0,hitsByName:{},examplesByName:{},rangeByName:{}}}}),g=e.onProgress?h.map((e,t)=>async()=>{let i={};try{let t=await e();return i=t.hitsByName,t}finally{f({kind:"transcript",cli:p[t].cli,hitsByName:i})}}):h,w=await (0,i.f)(g,8),N=[];for(let e of w)"fulfilled"===e.status?N.push(e.value):m++;let v=function(e,t){let i=new Map;for(let t of e)for(let[e,n]of Object.entries(t.hitsByName)){let s=i.get(e)??{hits:0,projects:new Set,examples:[]};for(let i of(s.hits+=n,s.projects.add(t.projectName),t.examplesByName[e]??[]))s.examples.length<3&&s.examples.push({...i,sessionId:t.sessionId});let r=t.rangeByName[e];r&&((!s.first||r.first<s.first)&&(s.first=r.first),(!s.last||r.last>s.last)&&(s.last=r.last)),i.set(e,s)}let s=new Map(ed.map(e=>[e.name,e])),r=[];for(let[e,a]of i){let i=s.get(e),c=!!i,l=c?null:function(e){let t=eW(e);for(let i of n.H)if(i.name===e||eW(i.name)===t)return i;return null}(e),d=c?"audit-detector":"builtin",u=!c&&t.has((0,o.o)(e)),p=i?.displayTitle??l?.displayTitle??i?.description??l?.description??eW(e),f=i?.impact??l?.impact??"";r.push({name:e,source:d,category:i?.category??l?.category??"Custom",severity:c?i?.severity??"info":function(e){let t,i=(t=e.indexOf("/"))>=0?e.slice(t+1):e;return i.startsWith("sanitize-")?"sanitize":i.startsWith("block-")?"deny":i.startsWith("warn-")||i.startsWith("protect-")||i.startsWith("prefer-")||i.startsWith("require-")?"warn":"deny"}(e),hits:a.hits,projects:a.projects.size,firstSeen:a.first,lastSeen:a.last,examples:a.examples,displayTitle:p,impact:f,enabledInConfig:u,installHint:"audit-detector"===d?"Audit-only — `failproofai audit` will keep tracking these.":u?"Already enforced — failproofai is blocking these in real time.":`Enable in one command: failproofai policies --install ${eW(e)}`})}return r.sort((e,t)=>t.hits-e.hits),r}(N,u);if(e.policies?.length){let t=new Set(e.policies.map(eW));v=v.filter(e=>t.has(eW(e.name)))}let S=v.reduce((e,t)=>e+t.hits,0),b=new Set,x=new Set,j=0;for(let e of N)Object.keys(e.hitsByName).length>0&&b.add(e.projectName),e.cwd&&x.add(e.cwd),j+=e.eventsScanned??0;return{version:2,scannedAt:new Date(t).toISOString(),scope:{cli:c,projects:e.projects??"all",since:e.since??null},transcripts:{scanned:p.length,skipped:m,errors:y,durationMs:Date.now()-t},results:v,totals:{hits:S,projectsWithHits:b.size},projectsScanned:[...x].sort(),eventsScanned:j,enabledBuiltinNames:[...u].map(e=>e.includes("/")?e.slice(e.indexOf("/")+1):e)}}var eQ=e.i(47756),eV=e.i(48480),eG=e.i(29095),eZ=e.i(46501),eK=e.i(60526);let eX=new Set(a._);async function e0(e){await (0,eZ.u)();let i={};try{let n=await e.text();if(n.trim().length>0){let e=JSON.parse(n);if(null===e||"object"!=typeof e||Array.isArray(e))return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"non_object_body"}),t.NextResponse.json({error:"Request body must be a JSON object"},{status:400});i=e}}catch{return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"invalid_json"}),t.NextResponse.json({error:"Invalid JSON body"},{status:400})}let n=function(e){let t={};if("string"==typeof e.since&&e.since.trim()&&(t.since=e.since.trim()),Array.isArray(e.cli)&&e.cli.length>0){let i=e.cli.filter(e=>"string"==typeof e&&eX.has(e));i.length>0&&(t.clis=i)}return Array.isArray(e.project)&&e.project.length>0&&(t.projects=e.project.filter(e=>"string"==typeof e)),Array.isArray(e.policy)&&e.policy.length>0&&(t.policies=e.policy.filter(e=>"string"==typeof e)),!0===e.noCache&&(t.noCache=!0),t}(i);if(!(0,eV.O)())return(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"already_running"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});let s=(0,eG.R)("dashboard");if(!s.ok)return(0,eV.w)(null),(0,eZ.z)("audit_run_rejected",{source:"dashboard",reason:"cross_process_lock"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});(0,eZ.z)("audit_run_started",{source:"dashboard",since:n.since??null,no_cache:!0===n.noCache,cli_count:n.clis?.length??0,project_count:n.projects?.length??0});let r=Date.now();return(async()=>{try{let e=await eL(n),t=(0,eQ.T)(n,e);(0,eZ.z)("audit_run_completed",{source:"dashboard",duration_ms:Date.now()-r,events_scanned:e.eventsScanned,sessions_scanned:e.transcripts.scanned,projects_scanned:e.projectsScanned.length,findings:e.results.length,total_hits:e.totals.hits,persisted:t}),(0,eV.w)(t?null:"audit finished but its result could not be saved")}catch(e){(0,eZ.z)("audit_run_failed",{source:"dashboard",duration_ms:Date.now()-r,error_type:e instanceof Error?e.name:"unknown",error_message:function(e){let t;try{t=e instanceof Error?e.message:String(e)}catch{return"unknown"}if(!t)return"";let i="";try{i=eK.default.homedir()}catch{}return i&&i.length>1&&(t=t.split(i).join("~")),t.length>300&&(t=t.slice(0,300)+"…"),t}(e)}),(0,eV.w)(e instanceof Error?e.message:String(e))}finally{s.lock.release()}})(),t.NextResponse.json({status:"started"},{status:202})}e.s(["POST",0,e0,"dynamic",0,"force-dynamic"],97610)},89498,e=>{var t=e.i(47909),i=e.i(74017),n=e.i(96250),s=e.i(59756),r=e.i(61916),o=e.i(74677),a=e.i(69741),c=e.i(16795),l=e.i(87718),d=e.i(95169),u=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(26937),y=e.i(10372),h=e.i(93695),g=e.i(9580);e.i(52474);var w=e.i(220);let N=new t.AppRouteRouteModule({definition:{kind:i.f.APP_ROUTE,page:"/api/audit/run/route",pathname:"/api/audit/run",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/audit/run/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(97610),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:S,serverHooks:b}=N;async function x(e,t,n){n.requestMeta&&(0,s.R)(e,n.requestMeta),N.isDev&&(0,s.i)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/audit/run/route";v=v.replace(/\/index$/,"")||"/";let S=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:b,deploymentId:x,params:j,nextConfig:O,parsedUrl:I,isDraftMode:k,prerenderManifest:C,routerServerContext:$,isOnDemandRevalidate:T,revalidateOnlyGenerated:P,resolvedPathname:M,clientReferenceManifest:R,serverActionsManifest:B,previewProps:E}=S,A=(0,a.f)(v),D=!!C.routes[M]&&(N.isDev||(0,g.f)(M,N.cacheOwner,C.routes[M])),_=!!(C.dynamicRoutes[A]||D),U=async()=>((null==$?void 0:$.render404)?await $.render404(e,t,I,!1):t.end("This page could not be found"),null);if(_&&!k){let e=C.dynamicRoutes[A];if(e&&!1===e.fallback&&!D){if(O.adapterPath)return await U();throw new h.NoFallbackError}}let J=null;!_||N.isDev||k||(J="/index"===(J=M)?"/":J),B&&R&&(0,o.f)({page:v,clientReferenceManifest:R,serverActionsManifest:B});let z=e.method||"GET",W=(0,r.v)(),q=W.getActiveScopeSpan(),Y=!!(null==$?void 0:$.isWrappedByNextServer),F=!!(0,s.w)(e,"minimalMode"),L=(0,s.w)(e,"incrementalCache")||await N.getIncrementalCache(e,O,E,C,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let H={params:j,previewProps:E,renderOpts:{experimental:{authInterrupts:!!O.experimental.authInterrupts,useCacheTimeout:O.experimental.useCacheTimeout,durableUseCacheEntries:!!O.experimental.durableUseCacheEntries},cacheComponents:!!O.cacheComponents,validationLevel:O.experimental.instantInsights.validationLevel,isDraftMode:k,incrementalCache:L,hmrRefreshHash:(0,s.w)(e,"hmrRefreshHash"),cacheLifeProfiles:O.cacheLife,staticPageGenerationTimeout:O.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0},sharedContext:{buildId:b,deploymentId:x}},Q=new c.x(e),V=new c.e(t),G=l.k.fromNodeNextRequest(Q,(0,l.t)(t)),Z=async({previousCacheEntry:i})=>{try{if(!F&&T&&P&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=null===J?await N.handle(G,H):await N.prerender(G,H);e.fetchMetrics=H.renderOpts.fetchMetrics;let r=H.renderOpts.pendingWaitUntil;r&&n.waitUntil&&(n.waitUntil(r),r=void 0);let o=H.renderOpts.collectedTags;if(!_)return await (0,p.f)(Q,V,s,r),null;{let e=await s.blob(),t=(0,f.S)(s.headers);o&&(t[y.M]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==H.renderOpts.collectedRevalidate&&!(H.renderOpts.collectedRevalidate>=y.Q)&&H.renderOpts.collectedRevalidate,n=void 0===H.renderOpts.collectedExpire||H.renderOpts.collectedExpire>=y.Q?!1!==i&&i>0?O.expireTime:void 0:H.renderOpts.collectedExpire;return{value:{kind:w.x.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:i,expire:n}}}}catch(t){throw(null==i?void 0:i.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.f)({isStaticGeneration:null!==J,isOnDemandRevalidate:T})},!1,$),t}},K=async(s,o)=>{try{var a,c;let s=await N.handleResponse({req:e,nextConfig:O,cacheKey:J,routeKind:i.f.APP_ROUTE,isFallback:!1,previewProps:E,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:P,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:F});if(null!==s&&"error"in s)throw s.error;if(!_)return;if((null==s||null==(a=s.value)?void 0:a.kind)!==w.x.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==s||null==(c=s.value)?void 0:c.kind}`);F||t.setHeader("x-nextjs-cache",T?"REVALIDATED":s.isMiss?"MISS":s.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let r=(0,f.G)(s.value.headers);F&&_||r.delete(y.M),!s.cacheControl||t.getHeader("Cache-Control")||r.get("Cache-Control")||r.set("Cache-Control",(0,m.f)(s.cacheControl)),await (0,p.f)(Q,V,new Response(s.value.body,{headers:r,status:s.value.status||200}));return}catch(i){if(i instanceof h.NoFallbackError||await N.onRequestError(e,i,{routerKind:"App Router",routePath:A,routeType:"route",revalidateReason:(0,u.f)({isStaticGeneration:null!==J,isOnDemandRevalidate:T})},!1,$),_)throw i;if(t.headersSent){if(s){let e=i instanceof Error?i:Error("Unknown app route error");s.recordException(e),s.setStatus({code:r.J.ERROR,message:e.message}),s.setAttribute("error.type",e.name)}t.writableEnded||t.destroyed||t.end()}else await (0,p.f)(Q,V,new Response(null,{status:500}));return}finally{(()=>{if(!s)return;let e=t.statusCode;s.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(s.setStatus({code:r.J.ERROR}),s.setAttribute("error.type",e.toString()));let i=W.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.q.handleRequest)return console.warn(`Unexpected root span type '${i.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=i.get("next.route")||A,a=`${z} ${n}`;s.setAttributes({"next.route":n,"http.route":n,"next.span_name":a}),s.updateName(a),o&&o!==s&&(o.setAttribute("http.route",n),o.updateName(a))})()}};if(Y&&q)await K(q,void 0);else{let t=W.getActiveScopeSpan();await W.withPropagatedContext(e.headers,()=>W.trace(d.q.handleRequest,{spanName:`${z} ${v}`,kind:r.C.SERVER,attributes:{"http.method":z,"http.target":e.url}},e=>K(e,t)),void 0,!Y)}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,n.f)({workAsyncStorage:v,workUnitAsyncStorage:S})},"routeModule",0,N,"serverHooks",0,b,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,S])}]})();
|
|
32
32
|
|
|
33
33
|
//# sourceMappingURL=_1ek68lnh2daur._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[93133,(e,i,t)=>{i.exports={name:"failproofai",version:"1.0.12
|
|
1
|
+
module.exports=[93133,(e,i,t)=>{i.exports={name:"failproofai",version:"1.0.12",description:"Observability and enforcement for AI agent harnesses. 40 built-in policies hooked into 12 of them — Claude Code, Codex, Cursor, Hermes, OpenClaw and more — blocking the tool call before it runs. Local dashboard included, no account needed.",bin:{failproofai:"./dist/cli.mjs",failproofaid:"./bin/failproofaid-shim.mjs"},files:["bin/","src/","scripts/","lib/","pi-extension/","hermes-plugin/","openclaw-plugin/",".next/standalone/","dist/","README.md"],engines:{node:">=20.9.0",bun:">=1.3.0"},scripts:{predev:"bun run build:cli && bun link",dev:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/dev.ts --port 8020","build:cli":"bun build --target=node --format=esm --outfile=dist/cli.mjs bin/failproofai.mjs --external posthog-node --external sql.js && node -e \"const fs=require('fs');const c=fs.readFileSync('dist/cli.mjs','utf8');fs.writeFileSync('dist/cli.mjs',c.replace('#!/usr/bin/env bun','#!/usr/bin/env node').replace('// @bun\\n',''))\"","build:worker":"bun build --target=node --format=esm --outfile=dist/worker.mjs bin/failproofai-worker.mjs --external posthog-node --external sql.js",build:"bun build --target=node --format=cjs --outfile=dist/index.js src/index.ts && bun run build:cli && bun run build:worker && bun --bun next build && node -e \"const {cpSync}=require('fs');cpSync('.next/static','.next/standalone/.next/static',{recursive:true});\" && node scripts/prune-standalone.mjs",prestart:"bun run build:cli && bun link",start:"FAILPROOFAI_TELEMETRY_DISABLED=1 bun scripts/start.ts",test:"vitest","test:run":"vitest run",lint:"eslint . --config eslint.config.mjs",prepare:"bun run build","test:e2e":"vitest run --config vitest.config.e2e.mts","test:e2e:watch":"vitest --config vitest.config.e2e.mts",translate:"bun scripts/translate-docs/cli.ts","translate:readme":"bun scripts/translate-docs/cli.ts --readme-only","translate:docs":"bun scripts/translate-docs/cli.ts --docs-only","translate:dry-run":"bun scripts/translate-docs/cli.ts --dry-run","translate:validate":"bun scripts/translate-docs/cli.ts --validate","validate:mdx":"bun scripts/validate-mdx.ts","docs:audit":"bun scripts/docs-audit.ts","build:pack":"bun scripts/build-policy-pack.mjs"},keywords:["agent-observability","llm-observability","agent-tracing","agent-monitoring","agent-harness","guardrails","enforcement","policies","evals","ai-agent","autonomous-agent","agent-reliability","failure-prevention","claude-code","codex","hermes","openclaw","cli","local-first","hooks"],author:"ExosphereHost Inc. <failproofai@exosphere.host>",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/FailproofAI/failproofai",repository:{type:"git",url:"https://github.com/FailproofAI/failproofai.git"},bugs:{url:"https://github.com/FailproofAI/failproofai/issues"},publishConfig:{access:"public"},devDependencies:{"@anthropic-ai/sdk":"^0.135.0","@mdx-js/mdx":"^3.1.1","@tailwindcss/postcss":"^4.3.1","@tanstack/react-virtual":"^3.14.10","@testing-library/jest-dom":"^7.0.0","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.5","@types/node":"26.6.5","@types/react":"19.3.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.1.0",clsx:"^2.1.1",eslint:"^10.9.0","eslint-config-next":"^16.3.2",jsdom:"^30.0.1","lucide-react":"^1.33.0",next:"^16.3.8",react:"^19.2.4","react-dom":"^19.2.4","tailwind-merge":"^3.4.0",tailwindcss:"^4.3.1",typescript:"6.0.3",vitest:"^5.0.0"},dependencies:{"html-to-image":"^1.11.13","jsonc-parser":"^3.3.1","posthog-node":"^5.50.0","smol-toml":"^1.9.1","sql.js":"^1.14.1",yaml:"^2.9.0"},overrides:{nanoid:"3.3.18",postcss:"8.5.26","eslint-plugin-react-hooks":"7.0.1",vite:"8.1.6",undici:"7.30.1",zod:"4.6.6","brace-expansion":"5.0.12",sharp:"0.35.5","source-map-js":"1.2.2",browserslist:"4.28.8"},optionalDependencies:{"@failproofai/failproofaid-linux-x64":"1.0.12","@failproofai/failproofaid-linux-arm64":"1.0.12","@failproofai/failproofaid-darwin-x64":"1.0.12","@failproofai/failproofaid-darwin-arm64":"1.0.12"},failproofaidBinaries:{"linux-x64":"3b379ce2b03dd8a74393daed2c3120309f591fe6433e0c939d70c7b20da55be7","linux-arm64":"bd77d7fee68dc2723fb57cc9c7fcf957b7e939c797e61b099c412263880aa16e","darwin-x64":"fce3faab9406b1c2267955f0e07d04ef7a2b7a0b007e12ecd144fcfef563ebc8","darwin-arm64":"765732f8f64aa3d3dbd98e93b1aba71fc02956f65baeb73b08447b37fac3a17b"}}}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=package_json_%5Bjson%5D_cjs_1nxcc4vkpxxu7._.js.map
|