failproofai 1.0.10 → 1.0.11-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js +4 -4
- 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.meta +8 -0
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +4 -4
- 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.meta +8 -0
- package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
- 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 +4 -4
- 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 +4 -4
- 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 +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 +2 -2
- 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 +4 -4
- 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 +3 -3
- 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 +3 -3
- 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 +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/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +4 -4
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.meta +8 -0
- package/.next/standalone/.next/server/app/index.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +13 -13
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +4 -4
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +5 -5
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +5 -5
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +5 -5
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +9 -9
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/{[externals]__0qxhecv._.js → [externals]__0d7i9ea._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__0sg9-3p._.js → [externals]__0hjaw70._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__1_9ze9b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]__1oenfmn._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ga9hs7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l3yhx4._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0moxohc._.js +22 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z2ll-a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1adacul._.js +11 -11
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1autwno._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v25n-6._.js +3 -0
- package/.next/standalone/.next/server/chunks/_09dz7xv._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3yc._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68ln._.js +2 -2
- package/.next/standalone/.next/server/chunks/_1fz8m31._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1jrv3hg._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1nx8fim._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1ogwigf._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_1q5i8mb._.js → _1q27azx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/lib_telemetry_ts_0dctyyw._.js +1 -1
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0el6rg8._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_0ol5pa3._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_04op_ou._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_1rqmk27._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dr20uz._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_1w7tiq4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04usis8._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1-bm5zf._.js → [root-of-the-server]__0502lat._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_gn5iz._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0f765xr._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01bmjsj._.js → [root-of-the-server]__0h38gzz._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hoaz1g._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1ouobn4._.js → [root-of-the-server]__0mxmwtx._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__19evfi8._.js → [root-of-the-server]__0uescqv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1484zv2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1mf3zp6._.js → [root-of-the-server]__19dutr7._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0oqrl71._.js → [root-of-the-server]__1_qv8oh._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1u6sn69._.js → [root-of-the-server]__1ab4ifb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1fbrk56._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pprgri._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1um4yxn._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1wb4yt2._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1y3n3cn._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0bqoto4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_16pa9ht._.js → _0lnpwk8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0yq5_3a._.js → _15y8myg._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1gb0ifp._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_042cgl1._.js → _1o95rf0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_1zopuov._.js → _1thr5rf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +12 -14
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9sni._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1hl81y4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-home_ts_0je3xkv._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/middleware.js +1 -1
- 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/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/{03h3b-uomi7_d.js → 0pra9i676pym1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2kj826h1w9r47.js → 1-lpi0m-hc1kb.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3ob2161ap37ul.js → 17yvyyblr_eb5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3nkc2jlgyygda.js → 1mylcr99gccyz.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2j92xul6y24_v.js → 1wozchtn2etvh.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3mjfvng11xnoo.js → 23thtelz1a-ur.js} +2 -2
- package/.next/standalone/.next/static/chunks/{1fqukzzowjflt.js → 2bc17tohgs4bs.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3u1s8dsqiean5.js → 2xq-ejo8kti18.js} +1 -1
- package/.next/standalone/.next/static/chunks/3-_pth_c9n938.js +1 -0
- package/.next/standalone/.next/static/chunks/{3i8rg2fv9nd6e.js → 3n46e45atic-m.js} +1 -1
- package/.next/standalone/.next/static/chunks/{078dofaxvjgpd.js → 3q7sndqftqhw9.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0542cuk_va8g1.js → 3sg07wnn969xq.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-11dn2pegmg9_9.js → turbopack-1opxka4dtjbc5.js} +1 -1
- package/.next/standalone/app/actions/install-hooks-web.ts +10 -2
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +17 -17
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +18 -18
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/base-server.js +1 -2
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +265 -53
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +177 -19
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +36 -17
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +14 -6
- package/.next/standalone/node_modules/next/dist/server/lib/match-next-data-pathname.js +3 -1
- package/.next/standalone/node_modules/next/dist/server/lib/node-fs-methods.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +9 -11
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/mcp/get-mcp-middleware.js +4 -2
- package/.next/standalone/node_modules/next/dist/server/next-server.js +7 -3
- package/.next/standalone/node_modules/next/dist/server/response-cache/index.js +32 -16
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +6 -1
- package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +9 -2
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +30 -29
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +18 -1
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +10 -10
- package/.next/standalone/package.json +14 -11
- package/.next/standalone/sdk/python/README.md +41 -0
- package/.next/standalone/sdk/python/docs/README.md +1 -0
- package/.next/standalone/sdk/python/docs/otel/README.md +36 -0
- package/.next/standalone/sdk/python/docs/otel/examples/agent_trace.py +30 -0
- package/.next/standalone/sdk/python/docs/otel/examples/quickstart.py +22 -0
- package/.next/standalone/sdk/python/failproofai_sdk/__init__.py +8 -0
- package/.next/standalone/sdk/python/failproofai_sdk/integrations/__init__.py +3 -0
- package/.next/standalone/sdk/python/failproofai_sdk/integrations/otel.py +189 -0
- package/.next/standalone/sdk/python/pyproject.toml +2 -1
- package/.next/standalone/sdk/python/tests/test_docs.py +16 -3
- package/.next/standalone/sdk/python/tests/test_integrations.py +1 -1
- package/.next/standalone/sdk/python/tests/test_otel.py +147 -0
- package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +4 -1
- package/.next/standalone/sdk/python/uv.lock +258 -147
- package/.next/standalone/sdk/typescript/README.md +43 -0
- package/.next/standalone/sdk/typescript/integration/ai.test.ts +9 -2
- package/.next/standalone/sdk/typescript/package-lock.json +57 -5
- package/.next/standalone/sdk/typescript/package.json +2 -0
- package/.next/standalone/sdk/typescript/src/edge/index.ts +9 -0
- package/.next/standalone/sdk/typescript/src/index.ts +2 -0
- package/.next/standalone/sdk/typescript/src/integrations/index.ts +4 -1
- package/.next/standalone/sdk/typescript/src/integrations/otel.ts +204 -0
- package/.next/standalone/sdk/typescript/test/integrations.test.ts +1 -1
- package/.next/standalone/sdk/typescript/test/otel.test.ts +125 -0
- package/.next/standalone/server.js +1 -1
- package/bin/failproofai.mjs +653 -1077
- package/dist/cli.mjs +8781 -4050
- package/dist/worker.mjs +170 -62
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +14 -11
- package/scripts/launch-facts.ts +157 -0
- package/scripts/launch-ready.ts +228 -0
- package/scripts/launch-screen.ts +202 -0
- package/scripts/launch.ts +106 -49
- package/scripts/skew-log-filter.ts +38 -0
- package/src/audit/cli-login.ts +39 -59
- package/src/audit/cli.ts +308 -228
- package/src/audit/index.ts +45 -2
- package/src/audit/schedule-cli.ts +83 -120
- package/src/audit/types.ts +31 -0
- package/src/hooks/agent-selection.ts +155 -0
- package/src/hooks/backfill-cli.ts +151 -137
- package/src/hooks/backfill-request.ts +149 -0
- package/src/hooks/cloud-connection.ts +1 -1
- package/src/hooks/cloud-enrollment-cli.ts +78 -28
- package/src/hooks/cloud-introspect.ts +3 -0
- package/src/hooks/collector-config.ts +10 -1
- package/src/hooks/config-status.ts +717 -0
- package/src/hooks/configure-wizard.ts +967 -988
- package/src/hooks/daemon-service.ts +16 -6
- package/src/hooks/did-you-mean.ts +185 -0
- package/src/hooks/flush-cli.ts +33 -7
- package/src/hooks/fp-config.ts +96 -0
- package/src/hooks/fp-home.ts +11 -0
- package/src/hooks/fp-reset.ts +102 -95
- package/src/hooks/handler.ts +4 -0
- package/src/hooks/harness-cli.ts +87 -138
- package/src/hooks/install-prompt.ts +38 -477
- package/src/hooks/integrations.ts +1 -1
- package/src/hooks/jev-cli.ts +183 -196
- package/src/hooks/manager.ts +554 -358
- package/src/hooks/onboarding-attempt.ts +11 -9
- package/src/hooks/otel-cli.ts +350 -0
- package/src/hooks/otel-output.ts +24 -0
- package/src/hooks/otel-writers.ts +215 -0
- package/src/hooks/pack-cli.ts +219 -204
- package/src/hooks/report-body.ts +50 -0
- package/src/hooks/safe-config-write.ts +4 -2
- package/src/hooks/session-pause-cli.ts +93 -73
- package/src/hooks/tui.ts +849 -389
- package/src/hooks/uninstall-cli.ts +136 -149
- package/src/hooks/untraced-note.ts +52 -0
- package/.next/standalone/.next/server/chunks/[externals]__19_pzeq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[externals]__20kzpkf._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01eqny5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ja_05._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0igxt32._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zyc_nm._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ttrwnd._.js +0 -22
- package/.next/standalone/.next/server/chunks/_0bs-v8p._.js +0 -3
- package/.next/standalone/.next/server/chunks/_185gyk9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__056wjo4._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n0xg95._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rwtwpm._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0yrsbd_._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11mayhe._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15578wp._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1m_svbe._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1q4p5b8._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +0 -6
- package/.next/standalone/.next/static/chunks/1lyg_puttohbc.js +0 -1
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → xtcpqBNBdjQVerPMkI2HI}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → xtcpqBNBdjQVerPMkI2HI}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → xtcpqBNBdjQVerPMkI2HI}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[97610,e=>{"use strict";var t=e.i(89171),i=e.i(71809),n=e.i(73634),s=e.i(73136),o=e.i(52306),r=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 o;if("tool_use"!==e.type)continue;let r=e.name,c=(n=t.cli,(r?"copilot"===n?a.COPILOT_TOOL_MAP[r]??r:"cursor"===n?a.CURSOR_TOOL_MAP[r]??r:"codex"===n?a.CODEX_TOOL_MAP[r]??r:"opencode"===n?a.OPENCODE_TOOL_MAP[r]??r:"pi"===n?a.PI_TOOL_MAP[r]??r:"hermes"===n?a.HERMES_TOOL_MAP[r]??r:"openclaw"===n?a.OPENCLAW_TOOL_MAP[r]??r:"factory"===n?a.FACTORY_TOOL_MAP[r]??r:"devin"===n?a.DEVIN_TOOL_MAP[r]??r:"antigravity"===n?a.ANTIGRAVITY_TOOL_MAP[r]??r:"goose"===n?a.GOOSE_TOOL_MAP[r]??r:r:r)??r),l=function(e,t,i){let n;if(!e||!t||"object"!=typeof t||Array.isArray(t)||("copilot"===i?n=a.COPILOT_TOOL_INPUT_MAP[e]:"opencode"===i?n=a.OPENCODE_TOOL_INPUT_MAP[e]:"pi"===i?n=a.PI_TOOL_INPUT_MAP[e]:"hermes"===i?n=a.HERMES_TOOL_INPUT_MAP[e]:"openclaw"===i?n=a.OPENCLAW_TOOL_INPUT_MAP[e]:"antigravity"===i?n=a.ANTIGRAVITY_TOOL_INPUT_MAP[e]:"goose"===i&&(n=a.GOOSE_TOOL_INPUT_MAP[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&&(o=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:r,toolInput:l??{},toolResultText:o})}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.getClaudeProjectsPath)();try{e=(0,l.readdirSync)(t,{withFileTypes:!0})}catch{return[]}return e.filter(e=>e.isDirectory()).map(e=>({name:e.name,cwd:(0,u.decodeFolderName)(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),o=(0,d.join)(s,n.name);try{let n=(0,l.statSync)(o);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:o,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.parseLogContent)(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 o=Buffer.alloc(n-t);await s.read(o,0,o.length,t),i=o.toString("utf-8")}catch{return null}finally{if(s)try{await s.close()}catch{}}let o=i.lastIndexOf("\n"),r=-1===o?"":i.slice(0,o+1),a=i.slice(o+1),l=a.trim().length>0&&(()=>{try{return JSON.parse(a),!0}catch{return!1}})()?r+a:r;if(0===l.length)return{events:[],bytesConsumed:t};let d=t+Buffer.byteLength(l,"utf-8");try{n=await (0,f.parseLogContent)(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 N=e.i(36203),w=e.i(57232);async function S(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,N.getCodexProjects)())){let{cwd:s,sessions:o}=await (0,N.getCodexSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function v(e){let t=await (0,w.getCodexSessionLog)(e.sessionId);return t?m(t.entries,{cli:"codex",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var O=e.i(55851),I=e.i(78166);async function b(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,O.getCopilotProjects)())){let{cwd:s,sessions:o}=await (0,O.getCopilotSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function T(e){let t=await (0,I.getCopilotSessionLog)(e.sessionId);return t?m(t.entries,{cli:"copilot",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var x=e.i(46413),P=e.i(72094);async function j(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,x.getCursorProjects)())){let{cwd:s,sessions:o}=await (0,x.getCursorSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function C(e){let t=await (0,P.getCursorSessionLog)(e.sessionId);return t?m(t.entries,{cli:"cursor",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var E=e.i(35435),R=e.i(99440);async function A(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,E.getOpenCodeProjects)())){let{cwd:s,sessions:o}=await (0,E.getOpenCodeSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){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 k(e){let t=await (0,R.getOpenCodeSessionLog)(e.sessionId);return t?m(t.entries,{cli:"opencode",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var M=e.i(19791),_=e.i(85116);async function $(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,M.getPiProjects)())){let{cwd:s,sessions:o}=await (0,M.getPiSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function B(e){let t=await (0,_.getPiSessionLog)(e.sessionId);return t?m(t.entries,{cli:"pi",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var D=e.i(64828),U=e.i(28898),L=e.i(3605);async function J(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,D.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.encodeFolderName)(e.cwd):e.source?(0,U.hermesProjectPath)(e.profile,e.source):`hermes:${e.profile}`,sessionId:e.sessionId,transcriptPath:`hermes://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:e.messageCount});return s}async function q(e){let t=await (0,L.getHermesSessionLog)(e.sessionId);return t?m(t.entries,{cli:"hermes",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var W=e.i(90624),z=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,W.getOpenClawSessions)()))e.mtimeMs<t||i.push({cli:"openclaw",projectName:(0,W.openClawProjectPath)(e.agentId,e.channel),sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return i}async function Y(e){let t=await (0,z.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.parseRawLines)(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),K=e.i(30441);async function X(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[],s=await (0,K.getAntigravityIndex)();for(let e of(0,G.listAntigravityTranscripts)()){if(e.mtimeMs<i)continue;let o=s.get(e.conversationId)?.cwd;(!t||o&&t.has(o))&&n.push({cli:"antigravity",projectName:o?(0,u.encodeFolderName)(o):"antigravity",sessionId:e.conversationId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes})}return n}async function Z(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.parseRawLines)(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),eo=e.i(36618);let er={claude:{cli:"claude",listTranscripts:y,streamEvents:h,streamEventsFrom:g},codex:{cli:"codex",listTranscripts:S,streamEvents:v},copilot:{cli:"copilot",listTranscripts:b,streamEvents:T},cursor:{cli:"cursor",listTranscripts:j,streamEvents:C},opencode:{cli:"opencode",listTranscripts:A,streamEvents:k},pi:{cli:"pi",listTranscripts:$,streamEvents:B},hermes:{cli:"hermes",listTranscripts:J,streamEvents:q},openclaw:{cli:"openclaw",listTranscripts:F,streamEvents:Y},factory:{cli:"factory",listTranscripts:Q,streamEvents:V},devin:{cli:"devin",listTranscripts:ei,streamEvents:en},antigravity:{cli:"antigravity",listTranscripts:X,streamEvents:Z},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,eo.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 o=n[4].trim();return{example:`cd ${s} && ${o}`}}},{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,o="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 o?"Edit"===e.toolName||"Write"===e.toolName?(n.countdown.set(o,5),null):"Read"===e.toolName&&n.countdown.has(o)?(n.countdown.delete(o),{example:`Read ${o} 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 eN(){if(eh)return eh;let e=n.BUILTIN_POLICIES.map(e=>`${e.name}|${e.fn.toString()}`).sort().join("\n");return eh=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function ew(){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 eS(e){let t=(0,ey.auditCacheDir)(),i=(0,em.createHash)("sha1").update(e).digest("hex");return(0,d.join)(t,`${i}.json`)}function ev(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),o=Buffer.alloc(s);return(0,l.readSync)(i,o,0,s,t-s),(0,em.createHash)("sha1").update(String(t)).update(n).update(o).digest("hex").slice(0,32)}catch{return null}finally{if(null!==i)try{(0,l.closeSync)(i)}catch{}}}var eO=e.i(71194);let eI="request-cut",eb=/^[A-Za-z0-9._:/@~+-]{1,200}$/;function eT(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 ex={allow:0,instruct:1,deny:2};var eP=e.i(97348),ej=e.i(49335),eC=e.i(10659);function eE(e,t){let i=e.trim(),n="string"==typeof t?t.trim():"";return n?i?`${i}. ${n}`:n:i}function eR(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()===eO.CORE_SOURCE.toLowerCase()?e[i]:void 0)}(e.policyParams,n.packId,n.name);let s=`${r.DEFAULT_POLICY_NAMESPACE}/`;if(t.startsWith(s))return e.policyParams[t.slice(s.length)]}let eA={authority:"hard",reviewedBy:[]};async function ek(e,t,i,n,s){let o,a,c=t.tool_name,l=(0,r.getPoliciesForEvent)(e,c);if((0,eP.hookLogInfo)(`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 eM(e,t,i,n,l);return e_(e,i,c,eT(s))}try{o=await eM(e,t,i,n,l,s)}catch(e){throw s.abort(),e}o.hardDenied?(s.abort(),a={kind:"not-consulted"}):(s.releaseRegistry?.(),a=await s.review);let d=function(e,t,i){let n=eT(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,o=new Set(t.asked),r=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=>o.has(e)&&r.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),o=e.filter(e=>!s.has(e.policyName)),r=o.find(e=>"deny"===e.decision);if(r)return{final:{decision:"deny",entries:[{policyName:r.policyName,reason:r.reason??""}]},decidedByJev:!1};if("deny"===i)return{final:{decision:"deny",entries:[n]},decidedByJev:!0};let a=o.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:eT(o),decidedByJev:!1}}(e,a,t.decision,c),d={evaluator:t.requestCut?"jev-fallback":"jev",...t.requestCut?{jevFallbackReason:eI}:{},jevDecision:t.decision,...a.length>0&&ex[l.final.decision]<ex[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&&eb.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}}(o.verdicts,a,s.mode);return d.cleared.length>0&&(0,eP.hookLogInfo)(`jev ${"observe"===s.mode?"would clear":"cleared"}: ${d.cleared.join(", ")}`),"jev-fallback"===d.activity.evaluator&&(0,eP.hookLogInfo)(d.activity.jevFallbackReason===eI?"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`),{...e_(e,i,c,d.final,d.decidedByJev),twoTier:{activity:d.activity,decidedByJev:d.decidedByJev,...d.decidedByJev&&"answered"===a.kind&&a.origin?{jevOrigin:a.origin}:{},...d.observeVerdict?{observeVerdict:d.observeVerdict}:{}}}}async function eM(e,t,i,n,s,o){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=eR(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,eP.hookLogWarn)(`policy "${t.name}" threw: ${n}`),t.name.startsWith(`${r.DEFAULT_POLICY_NAMESPACE}/`)&&(0,ej.trackHookEvent)((0,eC.getInstanceId)(),"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=eE(a.reason??`Blocked by policy: ${t.name}`,eR(n,t.name)?.hint);(0,eP.hookLogInfo)(`deny by "${t.name}": ${e}`);let{authority:i,reviewedBy:s}=o?o.authorityOf(t):eA;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=eE(a.reason??`Instruction from policy: ${t.name}`,eR(n,t.name)?.hint),{authority:i,reviewedBy:s}=o?o.authorityOf(t):eA;d.push({policyName:t.name,decision:"instruct",reason:e,authority:i,reviewedBy:s}),(0,eP.hookLogInfo)(`instruct by "${t.name}": ${e}`)}"allow"===a.decision&&a.reason&&d.push({policyName:t.name,decision:"allow",reason:a.reason,...eA})}return{verdicts:d,hardDenied:!1}}function e_(e,t,i,n,s=!1){if("deny"===n.decision){let[o]=n.entries;return function(e,t,i,n,s,o=!1){let r;r=i||("UserPromptSubmit"===e?"prompt":"SessionStart"===e?"session start":"SessionEnd"===e?"session end":"Stop"===e?"stop":"operation");let a=o?`Blocked ${r} by failproofai because: ${s.replace(/[.\s]+$/,"")}, as flagged by Jev semantic review`:`Blocked ${r} 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
|
+
module.exports=[97610,e=>{"use strict";var t=e.i(89171),i=e.i(71809),n=e.i(73634),s=e.i(73136),o=e.i(52306),r=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 o;if("tool_use"!==e.type)continue;let r=e.name,c=(n=t.cli,(r?"copilot"===n?a.COPILOT_TOOL_MAP[r]??r:"cursor"===n?a.CURSOR_TOOL_MAP[r]??r:"codex"===n?a.CODEX_TOOL_MAP[r]??r:"opencode"===n?a.OPENCODE_TOOL_MAP[r]??r:"pi"===n?a.PI_TOOL_MAP[r]??r:"hermes"===n?a.HERMES_TOOL_MAP[r]??r:"openclaw"===n?a.OPENCLAW_TOOL_MAP[r]??r:"factory"===n?a.FACTORY_TOOL_MAP[r]??r:"devin"===n?a.DEVIN_TOOL_MAP[r]??r:"antigravity"===n?a.ANTIGRAVITY_TOOL_MAP[r]??r:"goose"===n?a.GOOSE_TOOL_MAP[r]??r:r:r)??r),l=function(e,t,i){let n;if(!e||!t||"object"!=typeof t||Array.isArray(t)||("copilot"===i?n=a.COPILOT_TOOL_INPUT_MAP[e]:"opencode"===i?n=a.OPENCODE_TOOL_INPUT_MAP[e]:"pi"===i?n=a.PI_TOOL_INPUT_MAP[e]:"hermes"===i?n=a.HERMES_TOOL_INPUT_MAP[e]:"openclaw"===i?n=a.OPENCLAW_TOOL_INPUT_MAP[e]:"antigravity"===i?n=a.ANTIGRAVITY_TOOL_INPUT_MAP[e]:"goose"===i&&(n=a.GOOSE_TOOL_INPUT_MAP[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&&(o=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:r,toolInput:l??{},toolResultText:o})}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.getClaudeProjectsPath)();try{e=(0,l.readdirSync)(t,{withFileTypes:!0})}catch{return[]}return e.filter(e=>e.isDirectory()).map(e=>({name:e.name,cwd:(0,u.decodeFolderName)(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),o=(0,d.join)(s,n.name);try{let n=(0,l.statSync)(o);i.push({projectName:e.name,cwd:e.cwd,sessionId:t,transcriptPath:o,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.parseLogContent)(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 o=Buffer.alloc(n-t);await s.read(o,0,o.length,t),i=o.toString("utf-8")}catch{return null}finally{if(s)try{await s.close()}catch{}}let o=i.lastIndexOf("\n"),r=-1===o?"":i.slice(0,o+1),a=i.slice(o+1),l=a.trim().length>0&&(()=>{try{return JSON.parse(a),!0}catch{return!1}})()?r+a:r;if(0===l.length)return{events:[],bytesConsumed:t};let d=t+Buffer.byteLength(l,"utf-8");try{n=await (0,f.parseLogContent)(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 N=e.i(36203),w=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,N.getCodexProjects)())){let{cwd:s,sessions:o}=await (0,N.getCodexSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function S(e){let t=await (0,w.getCodexSessionLog)(e.sessionId);return t?m(t.entries,{cli:"codex",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var O=e.i(55851),I=e.i(78166);async function b(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,O.getCopilotProjects)())){let{cwd:s,sessions:o}=await (0,O.getCopilotSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function T(e){let t=await (0,I.getCopilotSessionLog)(e.sessionId);return t?m(t.entries,{cli:"copilot",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var P=e.i(46413),x=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,P.getCursorProjects)())){let{cwd:s,sessions:o}=await (0,P.getCursorSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function j(e){let t=await (0,x.getCursorSessionLog)(e.sessionId);return t?m(t.entries,{cli:"cursor",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var R=e.i(35435),E=e.i(99440);async function k(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,R.getOpenCodeProjects)())){let{cwd:s,sessions:o}=await (0,R.getOpenCodeSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){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 A(e){let t=await (0,E.getOpenCodeSessionLog)(e.sessionId);return t?m(t.entries,{cli:"opencode",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var M=e.i(19791),_=e.i(85116);async function $(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[];for(let e of(await (0,M.getPiProjects)())){let{cwd:s,sessions:o}=await (0,M.getPiSessionsByEncodedName)(e.name),r=s??"";if(!t||t.has(r))for(let t of o){let s=t.lastModified.getTime();if(s<i)continue;let o=0;try{o=(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:o})}}return n}async function B(e){let t=await (0,_.getPiSessionLog)(e.sessionId);return t?m(t.entries,{cli:"pi",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var D=e.i(64828),U=e.i(28898),L=e.i(3605);async function J(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=await (0,D.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.encodeFolderName)(e.cwd):e.source?(0,U.hermesProjectPath)(e.profile,e.source):`hermes:${e.profile}`,sessionId:e.sessionId,transcriptPath:`hermes://${e.sessionId}`,mtimeMs:e.mtimeMs,sizeBytes:e.messageCount});return s}async function q(e){let t=await (0,L.getHermesSessionLog)(e.sessionId);return t?m(t.entries,{cli:"hermes",sessionId:e.sessionId,transcriptPath:e.transcriptPath,cwd:t.cwd??""}):[]}var W=e.i(90624),z=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,W.getOpenClawSessions)()))e.mtimeMs<t||i.push({cli:"openclaw",projectName:(0,W.openClawProjectPath)(e.agentId,e.channel),sessionId:e.sessionId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});return i}async function Y(e){let t=await (0,z.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.parseRawLines)(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),K=e.i(30441);async function X(e={}){let t=e.projects?new Set(e.projects):null,i=e.sinceMs??0,n=[],s=await (0,K.getAntigravityIndex)();for(let e of(0,G.listAntigravityTranscripts)()){if(e.mtimeMs<i)continue;let o=s.get(e.conversationId)?.cwd;(!t||o&&t.has(o))&&n.push({cli:"antigravity",projectName:o?(0,u.encodeFolderName)(o):"antigravity",sessionId:e.conversationId,transcriptPath:e.transcriptPath,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes})}return n}async function Z(e){let t;try{t=await (0,c.readFile)(e.transcriptPath,"utf-8")}catch{return[]}let i=(0,f.parseRawLines)(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),eo=e.i(36618);let er={claude:{cli:"claude",listTranscripts:y,streamEvents:h,streamEventsFrom:g},codex:{cli:"codex",listTranscripts:v,streamEvents:S},copilot:{cli:"copilot",listTranscripts:b,streamEvents:T},cursor:{cli:"cursor",listTranscripts:C,streamEvents:j},opencode:{cli:"opencode",listTranscripts:k,streamEvents:A},pi:{cli:"pi",listTranscripts:$,streamEvents:B},hermes:{cli:"hermes",listTranscripts:J,streamEvents:q},openclaw:{cli:"openclaw",listTranscripts:F,streamEvents:Y},factory:{cli:"factory",listTranscripts:Q,streamEvents:V},devin:{cli:"devin",listTranscripts:ei,streamEvents:en},antigravity:{cli:"antigravity",listTranscripts:X,streamEvents:Z},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,eo.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 o=n[4].trim();return{example:`cd ${s} && ${o}`}}},{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,o="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 o?"Edit"===e.toolName||"Write"===e.toolName?(n.countdown.set(o,5),null):"Read"===e.toolName&&n.countdown.has(o)?(n.countdown.delete(o),{example:`Read ${o} 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 eN(){if(eh)return eh;let e=n.BUILTIN_POLICIES.map(e=>`${e.name}|${e.fn.toString()}`).sort().join("\n");return eh=(0,em.createHash)("sha1").update(e).digest("hex").slice(0,16)}function ew(){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.auditCacheDir)(),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),o=Buffer.alloc(s);return(0,l.readSync)(i,o,0,s,t-s),(0,em.createHash)("sha1").update(String(t)).update(n).update(o).digest("hex").slice(0,32)}catch{return null}finally{if(null!==i)try{(0,l.closeSync)(i)}catch{}}}var eO=e.i(71194);let eI="request-cut",eb=/^[A-Za-z0-9._:/@~+-]{1,200}$/;function eT(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 eP={allow:0,instruct:1,deny:2};var ex=e.i(97348),eC=e.i(49335),ej=e.i(10659);function eR(e,t){let i=e.trim(),n="string"==typeof t?t.trim():"";return n?i?`${i}. ${n}`:n:i}function eE(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()===eO.CORE_SOURCE.toLowerCase()?e[i]:void 0)}(e.policyParams,n.packId,n.name);let s=`${r.DEFAULT_POLICY_NAMESPACE}/`;if(t.startsWith(s))return e.policyParams[t.slice(s.length)]}let ek={authority:"hard",reviewedBy:[]};async function eA(e,t,i,n,s){let o,a,c=t.tool_name,l=(0,r.getPoliciesForEvent)(e,c);if((0,ex.hookLogInfo)(`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 eM(e,t,i,n,l);return e_(e,i,c,eT(s))}try{o=await eM(e,t,i,n,l,s)}catch(e){throw s.abort(),e}o.hardDenied?(s.abort(),a={kind:"not-consulted"}):(s.releaseRegistry?.(),a=await s.review);let d=function(e,t,i){let n=eT(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,o=new Set(t.asked),r=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=>o.has(e)&&r.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),o=e.filter(e=>!s.has(e.policyName)),r=o.find(e=>"deny"===e.decision);if(r)return{final:{decision:"deny",entries:[{policyName:r.policyName,reason:r.reason??""}]},decidedByJev:!1};if("deny"===i)return{final:{decision:"deny",entries:[n]},decidedByJev:!0};let a=o.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:eT(o),decidedByJev:!1}}(e,a,t.decision,c),d={evaluator:t.requestCut?"jev-fallback":"jev",...t.requestCut?{jevFallbackReason:eI}:{},jevDecision:t.decision,...a.length>0&&eP[l.final.decision]<eP[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&&eb.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}}(o.verdicts,a,s.mode);return d.cleared.length>0&&(0,ex.hookLogInfo)(`jev ${"observe"===s.mode?"would clear":"cleared"}: ${d.cleared.join(", ")}`),"jev-fallback"===d.activity.evaluator&&(0,ex.hookLogInfo)(d.activity.jevFallbackReason===eI?"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`),{...e_(e,i,c,d.final,d.decidedByJev),twoTier:{activity:d.activity,decidedByJev:d.decidedByJev,...d.decidedByJev&&"answered"===a.kind&&a.origin?{jevOrigin:a.origin}:{},...d.observeVerdict?{observeVerdict:d.observeVerdict}:{}}}}async function eM(e,t,i,n,s,o){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=eE(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,ex.hookLogWarn)(`policy "${t.name}" threw: ${n}`),t.name.startsWith(`${r.DEFAULT_POLICY_NAMESPACE}/`)&&(0,eC.trackHookEvent)((0,ej.getInstanceId)(),"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=eR(a.reason??`Blocked by policy: ${t.name}`,eE(n,t.name)?.hint);(0,ex.hookLogInfo)(`deny by "${t.name}": ${e}`);let{authority:i,reviewedBy:s}=o?o.authorityOf(t):ek;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=eR(a.reason??`Instruction from policy: ${t.name}`,eE(n,t.name)?.hint),{authority:i,reviewedBy:s}=o?o.authorityOf(t):ek;d.push({policyName:t.name,decision:"instruct",reason:e,authority:i,reviewedBy:s}),(0,ex.hookLogInfo)(`instruct by "${t.name}": ${e}`)}"allow"===a.decision&&a.reason&&d.push({policyName:t.name,decision:"allow",reason:a.reason,...ek})}return{verdicts:d,hardDenied:!1}}function e_(e,t,i,n,s=!1){if("deny"===n.decision){let[o]=n.entries;return function(e,t,i,n,s,o=!1){let r;r=i||("UserPromptSubmit"===e?"prompt":"SessionStart"===e?"session start":"SessionEnd"===e?"session end":"Stop"===e?"stop":"operation");let a=o?`Blocked ${r} by failproofai because: ${s.replace(/[.\s]+$/,"")}, as flagged by Jev semantic review`:`Blocked ${r} 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 o=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:o+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}:{exitCode:0,stdout:"",stderr:o+"\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 e$=new Set(["warn-repeated-tool-calls"].map(e=>(0,r.normalizePolicyName)(e))),eB=!1,eD=null;async function eU(){if(eB)return;eD=(0,r.getAllPolicies)(),(0,r.clearPolicies)();let e=n.BUILTIN_POLICIES.map(e=>e.name).filter(e=>!e$.has((0,r.normalizePolicyName)(e)));(0,n.registerBuiltinPolicies)(e),eB=!0}async function eL(e){eB||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(eJ(await ek("PreToolUse",i,t),"PreToolUse",n),void 0!==e.toolResultText){let s={...i,tool_response:e.toolResultText};eJ(await ek("PostToolUse",s,t),"PostToolUse",n)}return n}function eJ(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 eq(e){let t=e.indexOf("/");return t>=0?e.slice(t+1):e}function eW(e){return e.length<=80?e:e.slice(0,79)+"…"}async function ez(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=er[e.cli],o=0,r=!1,a=t?.detectorState??{};if(s.streamEventsFrom){let a=await s.streamEventsFrom(e,t?.fromByte??0);a?(i=a.events,o=a.bytesConsumed,n.cwd=a.cwd??"",r=!0):(i=await s.streamEvents(e),o=0)}else i=await s.streamEvents(e),o=0;if(0===i.length)return{result:n,bytesScanned:o,detectorState:a,resumed:r};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,eW(i.example))}try{t=await eL(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,eW(t))}}return{result:n,bytesScanned:o,detectorState:a,resumed:r}}function eF(e,t,i,n,s){e.hitsByName[t]=(e.hitsByName[t]??0)+1;let o=e.examplesByName[t]??[];o.length<3&&(o.push({timestamp:i,cwd:n,example:s}),e.examplesByName[t]=o);let r=e.rangeByName[t];r?(i<r.first&&(r.first=i),i>r.last&&(r.last=i)):e.rangeByName[t]={first:i,last:i}}async function eY(e={}){let t=Date.now();await eU();try{return await eH(e,t)}finally{eB&&(null!==eD&&((0,r.setAllPolicies)(eD),eD=null),eB=!1)}}async function eH(e,t){let c=e.clis??Array.from(a.INTEGRATION_TYPES),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.readMergedHooksConfig)().enabledPolicies??[]).map(e=>(0,r.normalizePolicyName)(e)));try{for(let e of(0,o.readInstalledPacks)().packs)for(let t of e.enabled??e.policies.map(e=>e.name))u.add((0,r.normalizePolicyName)(t))}catch{}let p=[];for(let t of c){let i,n=er[t];try{i=await n.listTranscripts({projects:e.projects,sinceMs:d})}catch{continue}p.push(...i)}let f=0,m=0,y=p.map(t=>async()=>{let i,n=null;if(!e.noCache){let e=function(e,t,i){if(0===i)return null;let n=eS(e);if(!(0,l.existsSync)(n))return null;try{let s=(0,l.readFileSync)(n,"utf-8"),o=JSON.parse(s);if(4!==o.schemaVersion||o.engineVersion!==eN()||o.detectorVersion!==ew()||!Number.isFinite(o.cachedAt)||Date.now()-o.cachedAt>2592e6||!o.result)return null;if(o.mtimeMs===t&&o.sizeBytes===i)return{kind:"hit",result:o.result};let r=o.bytesScanned;if(!Number.isFinite(r)||r<=0||r>i||!o.anchorHash||ev(e,r)!==o.anchorHash)return null;return{kind:"resume",result:o.result,fromByte:r,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{}}}(o.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 ez(t,i),o=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 o=eS(e);try{(0,l.mkdirSync)((0,ey.auditCacheDir)(),{recursive:!0});let a={schemaVersion:4,cachedAt:Date.now(),mtimeMs:t,sizeBytes:i,engineVersion:eN(),detectorVersion:ew(),result:n};if(s&&s.bytesScanned>0){let t=ev(e,s.bytesScanned);if(t){var r;a.bytesScanned=s.bytesScanned,a.anchorHash=t,r=s.detectorState,a.detectorState=JSON.stringify(r,(e,t)=>t instanceof Map?{__map:[...t.entries()]}:t)}}(0,l.writeFileSync)(o,JSON.stringify(a),{encoding:"utf-8",mode:384});try{(0,l.chmodSync)(o,384)}catch{}}catch{}}(t.transcriptPath,t.mtimeMs,t.sizeBytes,o,s.bytesScanned>0?{bytesScanned:s.bytesScanned,detectorState:s.detectorState}:void 0),o}catch{return m++,{transcriptPath:t.transcriptPath,cli:t.cli,projectName:t.projectName,cwd:"",sessionId:t.sessionId,mtimeMs:t.mtimeMs,sizeBytes:t.sizeBytes,eventsScanned:0,hitsByName:{},examplesByName:{},rangeByName:{}}}}),h=await (0,i.batchAll)(y,8),g=[];for(let e of h)"fulfilled"===e.status?g.push(e.value):f++;let N=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 o=t.rangeByName[e];o&&((!s.first||o.first<s.first)&&(s.first=o.first),(!s.last||o.last>s.last)&&(s.last=o.last)),i.set(e,s)}let s=new Map(ed.map(e=>[e.name,e])),o=[];for(let[e,a]of i){let i=s.get(e),c=!!i,l=c?null:function(e){let t=eq(e);for(let i of n.BUILTIN_POLICIES)if(i.name===e||eq(i.name)===t)return i;return null}(e),d=c?"audit-detector":"builtin",u=!c&&t.has((0,r.normalizePolicyName)(e)),p=i?.displayTitle??l?.displayTitle??i?.description??l?.description??eq(e),f=i?.impact??l?.impact??"";o.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 ${eq(e)}`})}return o.sort((e,t)=>t.hits-e.hits),o}(g,u);if(e.policies?.length){let t=new Set(e.policies.map(eq));N=N.filter(e=>t.has(eq(e.name)))}let w=N.reduce((e,t)=>e+t.hits,0),S=new Set,v=new Set,O=0;for(let e of g)Object.keys(e.hitsByName).length>0&&S.add(e.projectName),e.cwd&&v.add(e.cwd),O+=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:f,errors:m,durationMs:Date.now()-t},results:N,totals:{hits:w,projectsWithHits:S.size},projectsScanned:[...v].sort(),eventsScanned:O,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),eK=e.i(46501),eX=e.i(60526);let eZ=new Set(a.INTEGRATION_TYPES);async function e0(e){await (0,eK.initTelemetry)();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,eK.trackEvent)("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,eK.trackEvent)("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&&eZ.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.tryAcquireRun)())return(0,eK.trackEvent)("audit_run_rejected",{source:"dashboard",reason:"already_running"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});let s=(0,eG.acquireAuditLock)("dashboard");if(!s.ok)return(0,eV.finishRun)(null),(0,eK.trackEvent)("audit_run_rejected",{source:"dashboard",reason:"cross_process_lock"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});(0,eK.trackEvent)("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 o=Date.now();return(async()=>{try{let e=await eY(n),t=(0,eQ.writeDashboardCache)(n,e);(0,eK.trackEvent)("audit_run_completed",{source:"dashboard",duration_ms:Date.now()-o,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.finishRun)(t?null:"audit finished but its result could not be saved")}catch(e){(0,eK.trackEvent)("audit_run_failed",{source:"dashboard",duration_ms:Date.now()-o,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=eX.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.finishRun)(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=>{"use strict";var t=e.i(47909),i=e.i(74017),n=e.i(96250),s=e.i(59756),o=e.i(61916),r=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);e.i(52474);var g=e.i(220);let N=new t.AppRouteRouteModule({definition:{kind:i.RouteKind.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:w,workUnitAsyncStorage:S,serverHooks:v}=N;async function O(e,t,n){n.requestMeta&&(0,s.setRequestMeta)(e,n.requestMeta),N.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/audit/run/route";w=w.replace(/\/index$/,"")||"/";let S=await N.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,deploymentId:O,params:I,nextConfig:b,parsedUrl:T,isDraftMode:x,prerenderManifest:P,routerServerContext:j,isOnDemandRevalidate:C,revalidateOnlyGenerated:E,resolvedPathname:R,clientReferenceManifest:A,serverActionsManifest:k}=S,M=(0,a.normalizeAppPath)(w),_=!!(P.dynamicRoutes[M]||P.routes[R]),$=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,T,!1):t.end("This page could not be found"),null);if(_&&!x){let e=!!P.routes[R],t=P.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await $();throw new h.NoFallbackError}}let B=null;!_||N.isDev||x||(B="/index"===(B=R)?"/":B);let D=!0===N.isDev||!_,U=_&&!D;k&&A&&(0,r.setManifestsSingleton)({page:w,clientReferenceManifest:A,serverActionsManifest:k});let L=e.method||"GET",J=(0,o.getTracer)(),q=J.getActiveScopeSpan(),W=!!(null==j?void 0:j.isWrappedByNextServer),z=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,b,P,z);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let Y={params:I,previewProps:P.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts,useCacheTimeout:b.experimental.useCacheTimeout},cacheComponents:!!b.cacheComponents,validationLevel:b.experimental.instantInsights.validationLevel,supportsDynamicResponse:D,incrementalCache:F,hmrRefreshHash:(0,s.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:b.cacheLife,staticPageGenerationTimeout:b.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,i,n,s)=>N.onRequestError(e,t,n,s,j)},sharedContext:{buildId:v,deploymentId:O}},H=new c.NodeNextRequest(e),Q=new c.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(H,(0,l.signalFromNodeResponse)(t)),G=async({previousCacheEntry:i})=>{try{if(!z&&C&&E&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await N.handle(V,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let r=Y.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)(H,Q,s,o),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);r&&(t[y.NEXT_CACHE_TAGS_HEADER]=r),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=y.INFINITE_CACHE?!1!==i&&i>0?b.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.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:w,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:C})},!1,j),t}},K=async(s,r)=>{try{var a,c;let s=await N.handleResponse({req:e,nextConfig:b,cacheKey:B,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:E,responseGenerator:G,waitUntil:n.waitUntil,isMinimalMode:z});if(!_)return;if((null==s||null==(a=s.value)?void 0:a.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==s||null==(c=s.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",C?"REVALIDATED":s.isMiss?"MISS":s.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,f.fromNodeOutgoingHttpHeaders)(s.value.headers);z&&_||o.delete(y.NEXT_CACHE_TAGS_HEADER),!s.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(s.cacheControl)),await (0,p.sendResponse)(H,Q,new Response(s.value.body,{headers:o,status:s.value.status||200}));return}catch(t){if(t instanceof h.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:C})},!1,j),_)throw t;await (0,p.sendResponse)(H,Q,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:o.SpanStatusCode.ERROR}),s.setAttribute("error.type",e.toString()));let i=J.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.BaseServerSpan.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")||M,a=`${L} ${n}`;s.setAttributes({"next.route":n,"http.route":n,"next.span_name":a}),s.updateName(a),r&&r!==s&&(r.setAttribute("http.route",n),r.updateName(a))})()}};if(W&&q)await K(q,void 0);else{let t=J.getActiveScopeSpan();await J.withPropagatedContext(e.headers,()=>J.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${w}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>K(e,t)),void 0,!W)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:S})},"routeModule",0,N,"serverHooks",0,v,"workAsyncStorage",0,w,"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 o=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:o+"\n",policyName:s[0],policyNames:s,reason:n,decision:"allow"}:{exitCode:0,stdout:"",stderr:o+"\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 e$=new Set(["warn-repeated-tool-calls"].map(e=>(0,r.normalizePolicyName)(e))),eB=!1,eD=null;async function eU(){if(eB)return;eD=(0,r.getAllPolicies)(),(0,r.clearPolicies)();let e=n.BUILTIN_POLICIES.map(e=>e.name).filter(e=>!e$.has((0,r.normalizePolicyName)(e)));(0,n.registerBuiltinPolicies)(e),eB=!0}async function eL(e){eB||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(eJ(await eA("PreToolUse",i,t),"PreToolUse",n),void 0!==e.toolResultText){let s={...i,tool_response:e.toolResultText};eJ(await eA("PostToolUse",s,t),"PostToolUse",n)}return n}function eJ(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 eq(e){let t=e.indexOf("/");return t>=0?e.slice(t+1):e}function eW(e){return e.length<=80?e:e.slice(0,79)+"…"}async function ez(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=er[e.cli],o=0,r=!1,a=t?.detectorState??{};if(s.streamEventsFrom){let a=await s.streamEventsFrom(e,t?.fromByte??0);a?(i=a.events,o=a.bytesConsumed,n.cwd=a.cwd??"",r=!0):(i=await s.streamEvents(e),o=0)}else i=await s.streamEvents(e),o=0;if(0===i.length)return{result:n,bytesScanned:o,detectorState:a,resumed:r};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,eW(i.example))}try{t=await eL(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,eW(t))}}return{result:n,bytesScanned:o,detectorState:a,resumed:r}}function eF(e,t,i,n,s){e.hitsByName[t]=(e.hitsByName[t]??0)+1;let o=e.examplesByName[t]??[];o.length<3&&(o.push({timestamp:i,cwd:n,example:s}),e.examplesByName[t]=o);let r=e.rangeByName[t];r?(i<r.first&&(r.first=i),i>r.last&&(r.last=i)):e.rangeByName[t]={first:i,last:i}}async function eY(e={}){let t=Date.now();await eU();try{return await eH(e,t)}finally{eB&&(null!==eD&&((0,r.setAllPolicies)(eD),eD=null),eB=!1)}}async function eH(e,t){let c=e.clis??Array.from(a.INTEGRATION_TYPES),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.readMergedHooksConfig)().enabledPolicies??[]).map(e=>(0,r.normalizePolicyName)(e)));try{for(let e of(0,o.readInstalledPacks)().packs)for(let t of e.enabled??e.policies.map(e=>e.name))u.add((0,r.normalizePolicyName)(t))}catch{}let p=[];for(let t of c){let i,n=er[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,r.getAllPolicies)().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"),o=JSON.parse(s);if(4!==o.schemaVersion||o.engineVersion!==eN()||o.detectorVersion!==ew()||!Number.isFinite(o.cachedAt)||Date.now()-o.cachedAt>2592e6||!o.result)return null;if(o.mtimeMs===t&&o.sizeBytes===i)return{kind:"hit",result:o.result};let r=o.bytesScanned;if(!Number.isFinite(r)||r<=0||r>i||!o.anchorHash||eS(e,r)!==o.anchorHash)return null;return{kind:"resume",result:o.result,fromByte:r,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{}}}(o.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 ez(t,i),o=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 o=ev(e);try{(0,l.mkdirSync)((0,ey.auditCacheDir)(),{recursive:!0});let a={schemaVersion:4,cachedAt:Date.now(),mtimeMs:t,sizeBytes:i,engineVersion:eN(),detectorVersion:ew(),result:n};if(s&&s.bytesScanned>0){let t=eS(e,s.bytesScanned);if(t){var r;a.bytesScanned=s.bytesScanned,a.anchorHash=t,r=s.detectorState,a.detectorState=JSON.stringify(r,(e,t)=>t instanceof Map?{__map:[...t.entries()]}:t)}}(0,l.writeFileSync)(o,JSON.stringify(a),{encoding:"utf-8",mode:384});try{(0,l.chmodSync)(o,384)}catch{}}catch{}}(t.transcriptPath,t.mtimeMs,t.sizeBytes,o,s.bytesScanned>0?{bytesScanned:s.bytesScanned,detectorState:s.detectorState}:void 0),o}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,N=await (0,i.batchAll)(g,8),w=[];for(let e of N)"fulfilled"===e.status?w.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 o=t.rangeByName[e];o&&((!s.first||o.first<s.first)&&(s.first=o.first),(!s.last||o.last>s.last)&&(s.last=o.last)),i.set(e,s)}let s=new Map(ed.map(e=>[e.name,e])),o=[];for(let[e,a]of i){let i=s.get(e),c=!!i,l=c?null:function(e){let t=eq(e);for(let i of n.BUILTIN_POLICIES)if(i.name===e||eq(i.name)===t)return i;return null}(e),d=c?"audit-detector":"builtin",u=!c&&t.has((0,r.normalizePolicyName)(e)),p=i?.displayTitle??l?.displayTitle??i?.description??l?.description??eq(e),f=i?.impact??l?.impact??"";o.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 ${eq(e)}`})}return o.sort((e,t)=>t.hits-e.hits),o}(w,u);if(e.policies?.length){let t=new Set(e.policies.map(eq));v=v.filter(e=>t.has(eq(e.name)))}let S=v.reduce((e,t)=>e+t.hits,0),O=new Set,I=new Set,b=0;for(let e of w)Object.keys(e.hitsByName).length>0&&O.add(e.projectName),e.cwd&&I.add(e.cwd),b+=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:O.size},projectsScanned:[...I].sort(),eventsScanned:b,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),eK=e.i(46501),eX=e.i(60526);let eZ=new Set(a.INTEGRATION_TYPES);async function e0(e){await (0,eK.initTelemetry)();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,eK.trackEvent)("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,eK.trackEvent)("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&&eZ.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.tryAcquireRun)())return(0,eK.trackEvent)("audit_run_rejected",{source:"dashboard",reason:"already_running"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});let s=(0,eG.acquireAuditLock)("dashboard");if(!s.ok)return(0,eV.finishRun)(null),(0,eK.trackEvent)("audit_run_rejected",{source:"dashboard",reason:"cross_process_lock"}),t.NextResponse.json({error:"Audit already running",status:"already-running"},{status:409});(0,eK.trackEvent)("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 o=Date.now();return(async()=>{try{let e=await eY(n),t=(0,eQ.writeDashboardCache)(n,e);(0,eK.trackEvent)("audit_run_completed",{source:"dashboard",duration_ms:Date.now()-o,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.finishRun)(t?null:"audit finished but its result could not be saved")}catch(e){(0,eK.trackEvent)("audit_run_failed",{source:"dashboard",duration_ms:Date.now()-o,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=eX.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.finishRun)(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=>{"use strict";var t=e.i(47909),i=e.i(74017),n=e.i(96250),s=e.i(59756),o=e.i(61916),r=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 N=e.i(220);let w=new t.AppRouteRouteModule({definition:{kind:i.RouteKind.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:O}=w;async function I(e,t,n){n.requestMeta&&(0,s.setRequestMeta)(e,n.requestMeta),w.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/audit/run/route";v=v.replace(/\/index$/,"")||"/";let S=await w.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:O,deploymentId:I,params:b,nextConfig:T,parsedUrl:P,isDraftMode:x,prerenderManifest:C,routerServerContext:j,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,resolvedPathname:k,clientReferenceManifest:A,serverActionsManifest:M}=S,_=(0,a.normalizeAppPath)(v),$=!!C.routes[k]&&(w.isDev||(0,g.isRouteCacheOwner)(k,w.cacheOwner,C.routes[k])),B=!!(C.dynamicRoutes[_]||$),D=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,P,!1):t.end("This page could not be found"),null);if(B&&!x){let e=C.dynamicRoutes[_];if(e&&!1===e.fallback&&!$){if(T.adapterPath)return await D();throw new h.NoFallbackError}}let U=null;!B||w.isDev||x||(U="/index"===(U=k)?"/":U);let L=!0===w.isDev||!B,J=B&&!L;M&&A&&(0,r.setManifestsSingleton)({page:v,clientReferenceManifest:A,serverActionsManifest:M});let q=e.method||"GET",W=(0,o.getTracer)(),z=W.getActiveScopeSpan(),F=!!(null==j?void 0:j.isWrappedByNextServer),Y=!!(0,s.getRequestMeta)(e,"minimalMode"),H=(0,s.getRequestMeta)(e,"incrementalCache")||await w.getIncrementalCache(e,T,C,Y);null==H||H.resetRequestCache(),globalThis.__incrementalCache=H;let Q={params:b,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:x,supportsDynamicResponse:L,incrementalCache:H,hmrRefreshHash:(0,s.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,i,n,s)=>w.onRequestError(e,t,n,s,j)},sharedContext:{buildId:O,deploymentId:I}},V=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),K=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),X=async({previousCacheEntry:i})=>{try{if(!Y&&R&&E&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await w.handle(K,Q);e.fetchMetrics=Q.renderOpts.fetchMetrics;let o=Q.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let r=Q.renderOpts.collectedTags;if(!B)return await (0,p.sendResponse)(V,G,s,o),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);r&&(t[y.NEXT_CACHE_TAGS_HEADER]=r),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==Q.renderOpts.collectedRevalidate&&!(Q.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&Q.renderOpts.collectedRevalidate,n=void 0===Q.renderOpts.collectedExpire||Q.renderOpts.collectedExpire>=y.INFINITE_CACHE?!1!==i&&i>0?T.expireTime:void 0:Q.renderOpts.collectedExpire;return{value:{kind:N.CachedRouteKind.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 w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:R})},!1,j),t}},Z=async(s,r)=>{try{var a,c;let s=await w.handleResponse({req:e,nextConfig:T,cacheKey:U,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,responseGenerator:X,waitUntil:n.waitUntil,isMinimalMode:Y});if(!B)return;if((null==s||null==(a=s.value)?void 0:a.kind)!==N.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==s||null==(c=s.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});Y||t.setHeader("x-nextjs-cache",R?"REVALIDATED":s.isMiss?"MISS":s.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,f.fromNodeOutgoingHttpHeaders)(s.value.headers);Y&&B||o.delete(y.NEXT_CACHE_TAGS_HEADER),!s.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(s.cacheControl)),await (0,p.sendResponse)(V,G,new Response(s.value.body,{headers:o,status:s.value.status||200}));return}catch(t){if(t instanceof h.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:R})},!1,j),B)throw t;await (0,p.sendResponse)(V,G,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:o.SpanStatusCode.ERROR}),s.setAttribute("error.type",e.toString()));let i=W.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.BaseServerSpan.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=`${q} ${n}`;s.setAttributes({"next.route":n,"http.route":n,"next.span_name":a}),s.updateName(a),r&&r!==s&&(r.setAttribute("http.route",n),r.updateName(a))})()}};if(F&&z)await Z(z,void 0);else{let t=W.getActiveScopeSpan();await W.withPropagatedContext(e.headers,()=>W.trace(d.BaseServerSpan.handleRequest,{spanName:`${q} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},e=>Z(e,t)),void 0,!F)}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:S})},"routeModule",0,w,"serverHooks",0,O,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,S])}];
|
|
32
32
|
|
|
33
33
|
//# sourceMappingURL=_1ek68ln._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[16241,e=>{"use strict";var t=e.i(89171),a=e.i(6375),r=e.i(17707),i=e.i(46501),s=e.i(10659);async function n(e){await (0,i.initTelemetry)();let n={};try{n=await e.json()}catch{return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"invalid_json"}),t.NextResponse.json({code:"validation_error",message:"Invalid JSON body"},{status:400})}if("string"!=typeof n.email||!n.email.trim())return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"missing_email"}),t.NextResponse.json({code:"validation_error",message:"email is required"},{status:400});if("string"!=typeof n.code||!n.code.trim())return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"missing_code",email:n.email.trim().toLowerCase()}),t.NextResponse.json({code:"validation_error",message:"code is required"},{status:400});let o=n.email.trim().toLowerCase();try{let e=await (0,a.verifyLoginCode)(n.email,n.code);return(0,r.writeAuth)((0,r.authFromTokenResponse)(e)),(0,i.trackEvent)("audit_user_identity_linked",{source:"audit_set_reminder_auth_dialog",user_id:e.user.id,email:e.user.email,local_random_id:(0,s.getInstanceId)(),$set:{email:e.user.email,user_id:e.user.id}}),(0,i.trackEvent)("audit_otp_verified",{status:"success",source:"dashboard",user_id:e.user.id,email:e.user.email}),t.NextResponse.json({authenticated:!0,user:{id:e.user.id,email:e.user.email}},{status:200})}catch(r){if(r instanceof a.AuthApiError){(0,i.trackEvent)("audit_otp_verified",{status:"failed",source:"dashboard",email:o,error_code:r.code,http_status:r.status});let e=r.status>=200&&r.status<600?r.status:504;return t.NextResponse.json({code:r.code,message:r.message},{status:e})}let e=r instanceof Error?r.message:String(r);return(0,i.trackEvent)("audit_otp_verified",{status:"failed",source:"dashboard",email:o,error_code:"upstream_unreachable",error_message:e.slice(0,200)}),t.NextResponse.json({code:"upstream_unreachable",message:`api-server unreachable: ${e}`},{status:502})}}e.s(["POST",0,n,"dynamic",0,"force-dynamic"])},20177,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),i=e.i(59756),s=e.i(61916),n=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(26937),m=e.i(10372),R=e.i(93695);e.i(52474);var
|
|
1
|
+
module.exports=[16241,e=>{"use strict";var t=e.i(89171),a=e.i(6375),r=e.i(17707),i=e.i(46501),s=e.i(10659);async function n(e){await (0,i.initTelemetry)();let n={};try{n=await e.json()}catch{return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"invalid_json"}),t.NextResponse.json({code:"validation_error",message:"Invalid JSON body"},{status:400})}if("string"!=typeof n.email||!n.email.trim())return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"missing_email"}),t.NextResponse.json({code:"validation_error",message:"email is required"},{status:400});if("string"!=typeof n.code||!n.code.trim())return(0,i.trackEvent)("audit_otp_verified",{status:"validation_error",source:"dashboard",reason:"missing_code",email:n.email.trim().toLowerCase()}),t.NextResponse.json({code:"validation_error",message:"code is required"},{status:400});let o=n.email.trim().toLowerCase();try{let e=await (0,a.verifyLoginCode)(n.email,n.code);return(0,r.writeAuth)((0,r.authFromTokenResponse)(e)),(0,i.trackEvent)("audit_user_identity_linked",{source:"audit_set_reminder_auth_dialog",user_id:e.user.id,email:e.user.email,local_random_id:(0,s.getInstanceId)(),$set:{email:e.user.email,user_id:e.user.id}}),(0,i.trackEvent)("audit_otp_verified",{status:"success",source:"dashboard",user_id:e.user.id,email:e.user.email}),t.NextResponse.json({authenticated:!0,user:{id:e.user.id,email:e.user.email}},{status:200})}catch(r){if(r instanceof a.AuthApiError){(0,i.trackEvent)("audit_otp_verified",{status:"failed",source:"dashboard",email:o,error_code:r.code,http_status:r.status});let e=r.status>=200&&r.status<600?r.status:504;return t.NextResponse.json({code:r.code,message:r.message},{status:e})}let e=r instanceof Error?r.message:String(r);return(0,i.trackEvent)("audit_otp_verified",{status:"failed",source:"dashboard",email:o,error_code:"upstream_unreachable",error_message:e.slice(0,200)}),t.NextResponse.json({code:"upstream_unreachable",message:`api-server unreachable: ${e}`},{status:502})}}e.s(["POST",0,n,"dynamic",0,"force-dynamic"])},20177,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),i=e.i(59756),s=e.i(61916),n=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(26937),m=e.i(10372),R=e.i(93695),f=e.i(9580);e.i(52474);var g=e.i(220);let _=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/auth/login-verify/route",pathname:"/api/auth/login-verify",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/auth/login-verify/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(16241),...{}}),{workAsyncStorage:E,workUnitAsyncStorage:w,serverHooks:C}=_;async function y(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),_.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/auth/login-verify/route";E=E.replace(/\/index$/,"")||"/";let w=await _.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:y,params:x,nextConfig:A,parsedUrl:b,isDraftMode:T,prerenderManifest:N,routerServerContext:S,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:k,clientReferenceManifest:q,serverActionsManifest:I}=w,H=(0,o.normalizeAppPath)(E),M=!!N.routes[k]&&(_.isDev||(0,f.isRouteCacheOwner)(k,_.cacheOwner,N.routes[k])),j=!!(N.dynamicRoutes[H]||M),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(j&&!T){let e=N.dynamicRoutes[H];if(e&&!1===e.fallback&&!M){if(A.adapterPath)return await U();throw new R.NoFallbackError}}let D=null;!j||_.isDev||T||(D="/index"===(D=k)?"/":D);let L=!0===_.isDev||!j,F=j&&!L;I&&q&&(0,n.setManifestsSingleton)({page:E,clientReferenceManifest:q,serverActionsManifest:I});let $=e.method||"GET",K=(0,s.getTracer)(),B=K.getActiveScopeSpan(),G=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),X=(0,i.getRequestMeta)(e,"incrementalCache")||await _.getIncrementalCache(e,A,N,V);null==X||X.resetRequestCache(),globalThis.__incrementalCache=X;let W={params:x,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:L,incrementalCache:X,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>_.onRequestError(e,t,r,i,S)},sharedContext:{buildId:C,deploymentId:y}},z=new u.NodeNextRequest(e),J=new u.NodeNextResponse(t),Z=l.NextRequestAdapter.fromNodeNextRequest(z,(0,l.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:a})=>{try{if(!V&&P&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await _.handle(Z,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let s=W.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let n=W.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(z,J,i,s),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);n&&(t[m.NEXT_CACHE_TAGS_HEADER]=n),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==a&&a>0?A.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await _.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:P})},!1,S),t}},Y=async(i,n)=>{try{var o,u;let i=await _.handleResponse({req:e,nextConfig:A,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:Q,waitUntil:r.waitUntil,isMinimalMode:V});if(!j)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",P?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&j||s.delete(m.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,v.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(z,J,new Response(i.value.body,{headers:s,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await _.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:P})},!1,S),j)throw t;await (0,p.sendResponse)(z,J,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:s.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||H,o=`${$} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":o}),i.updateName(o),n&&n!==i&&(n.setAttribute("http.route",r),n.updateName(o))})()}};if(G&&B)await Y(B,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${E}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},e=>Y(e,t)),void 0,!G)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:w})},"routeModule",0,_,"serverHooks",0,C,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,w])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1fz8m31._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[20855,e=>{"use strict";var t=e.i(89171),a=e.i(17707);async function r(){let e=(0,a.readAuth)();return e?t.NextResponse.json({authenticated:!0,user:{id:e.user.id,email:e.user.email}},{status:200}):t.NextResponse.json({authenticated:!1},{status:200})}e.s(["GET",0,r,"dynamic",0,"force-dynamic"])},96889,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),R=e.i(26937),v=e.i(10372),m=e.i(93695),g=e.i(9580);e.i(52474);var f=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/auth/status/route",pathname:"/api/auth/status",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/auth/status/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(20855),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:C,serverHooks:x}=E;async function _(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/auth/status/route";w=w.replace(/\/index$/,"")||"/";let C=await E.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:x,deploymentId:_,params:A,nextConfig:y,parsedUrl:T,isDraftMode:P,prerenderManifest:N,routerServerContext:S,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,resolvedPathname:q,clientReferenceManifest:H,serverActionsManifest:I}=C,M=(0,o.normalizeAppPath)(w),k=!!N.routes[q]&&(E.isDev||(0,g.isRouteCacheOwner)(q,E.cacheOwner,N.routes[q])),U=!!(N.dynamicRoutes[M]||k),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,T,!1):t.end("This page could not be found"),null);if(U&&!P){let e=N.dynamicRoutes[M];if(e&&!1===e.fallback&&!k){if(y.adapterPath)return await D();throw new m.NoFallbackError}}let j=null;!U||E.isDev||P||(j="/index"===(j=q)?"/":j);let F=!0===E.isDev||!U,K=U&&!F;I&&H&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:H,serverActionsManifest:I});let L=e.method||"GET",$=(0,i.getTracer)(),B=$.getActiveScopeSpan(),G=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),X=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,N,V);null==X||X.resetRequestCache(),globalThis.__incrementalCache=X;let W={params:A,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,isDraftMode:P,supportsDynamicResponse:F,incrementalCache:X,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,S)},sharedContext:{buildId:x,deploymentId:_}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:a})=>{try{if(!V&&b&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await E.handle(J,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let s=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[v.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=v.INFINITE_CACHE?!1!==a&&a>0?y.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:b})},!1,S),t}},Y=async(n,s)=>{try{var o,l;let n=await E.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,responseGenerator:Q,waitUntil:r.waitUntil,isMinimalMode:V});if(!U)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",b?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),P&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);V&&U||i.delete(v.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,R.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:b})},!1,S),U)throw t;await (0,p.sendResponse)(z,Z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||M,o=`${L} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":o}),n.updateName(o),s&&s!==n&&(s.setAttribute("http.route",r),s.updateName(o))})()}};if(G&&B)await Y(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!G)}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,x,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,C])},78081,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__0d7i9ea._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(t=>e.l(t))).then(()=>t(39702)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1jrv3hg._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[19851,e=>{"use strict";var t=e.i(89171),a=e.i(6375),r=e.i(17707),n=e.i(46501);async function o(){await (0,n.initTelemetry)();let e=(0,r.readAuth)();if(!e)return(0,n.trackEvent)("audit_user_logged_out",{source:"dashboard",had_session:!1,upstream:"noop"}),t.NextResponse.json({authenticated:!1},{status:200});let o="skipped",s=null;try{await (0,a.logoutSession)(e.access_token,e.refresh_token),o="revoked"}catch(e){e instanceof a.AuthApiError&&401===e.status?o="revoked":(o="failed",s=e instanceof Error?e.message.slice(0,200):String(e).slice(0,200))}return(0,r.deleteAuth)(),(0,n.trackEvent)("audit_user_logged_out",{source:"dashboard",had_session:!0,upstream:o,upstream_error:s,user_id:e.user.id}),t.NextResponse.json({authenticated:!1,upstream:o},{status:200})}e.s(["POST",0,o,"dynamic",0,"force-dynamic"])},43488,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),o=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),R=e.i(26937),v=e.i(10372),g=e.i(93695),m=e.i(9580);e.i(52474);var f=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/auth/logout/route",pathname:"/api/auth/logout",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/auth/logout/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(19851),...{}}),{workAsyncStorage:_,workUnitAsyncStorage:w,serverHooks:C}=E;async function x(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/auth/logout/route";_=_.replace(/\/index$/,"")||"/";let w=await E.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:x,params:A,nextConfig:y,parsedUrl:T,isDraftMode:S,prerenderManifest:P,routerServerContext:b,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:k,clientReferenceManifest:q,serverActionsManifest:H}=w,I=(0,i.normalizeAppPath)(_),M=!!P.routes[k]&&(E.isDev||(0,m.isRouteCacheOwner)(k,E.cacheOwner,P.routes[k])),U=!!(P.dynamicRoutes[I]||M),D=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,T,!1):t.end("This page could not be found"),null);if(U&&!S){let e=P.dynamicRoutes[I];if(e&&!1===e.fallback&&!M){if(y.adapterPath)return await D();throw new g.NoFallbackError}}let j=null;!U||E.isDev||S||(j="/index"===(j=k)?"/":j);let F=!0===E.isDev||!U,K=U&&!F;H&&q&&(0,s.setManifestsSingleton)({page:_,clientReferenceManifest:q,serverActionsManifest:H});let L=e.method||"GET",$=(0,o.getTracer)(),B=$.getActiveScopeSpan(),G=!!(null==b?void 0:b.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),X=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,P,V);null==X||X.resetRequestCache(),globalThis.__incrementalCache=X;let W={params:A,previewProps:P.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,isDraftMode:S,supportsDynamicResponse:F,incrementalCache:X,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,b)},sharedContext:{buildId:C,deploymentId:x}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:a})=>{try{if(!V&&N&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await E.handle(J,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let s=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,n,o),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[v.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=v.INFINITE_CACHE?!1!==a&&a>0?y.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:N})},!1,b),t}},Y=async(n,s)=>{try{var i,l;let n=await E.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:Q,waitUntil:r.waitUntil,isMinimalMode:V});if(!U)return;if((null==n||null==(i=n.value)?void 0:i.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",N?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);V&&U||o.delete(v.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,R.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(n.value.body,{headers:o,status:n.value.status||200}));return}catch(t){if(t instanceof g.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:N})},!1,b),U)throw t;await (0,p.sendResponse)(z,Z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:o.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||I,i=`${L} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":i}),n.updateName(i),s&&s!==n&&(s.setAttribute("http.route",r),s.updateName(i))})()}};if(G&&B)await Y(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${_}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!G)}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:w})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,w])},78081,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__0d7i9ea._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(t=>e.l(t))).then(()=>t(39702)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1nx8fim._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[72993,e=>{"use strict";var t=e.i(89171),a=e.i(17707),r=e.i(6375),s=e.i(46501);let n=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;async function i(e){let i;await (0,s.initTelemetry)();let o=await (0,a.whoAmI)();if(!o)return(0,s.trackEvent)("audit_invite_sent",{status:"unauthorized",source:"dashboard"}),t.NextResponse.json({code:"unauthorized",message:"Sign in before sending invites."},{status:401});let u={},d=await e.text();if(d.trim().length>0)try{let e=JSON.parse(d);if(null===e||"object"!=typeof e||Array.isArray(e))return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"not_an_object",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"Request body must be a JSON object."},{status:400});u=e}catch{return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"malformed_json",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"Request body is not valid JSON."},{status:400})}if(!Array.isArray(u.to))return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"missing_to",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"`to` must be a list of email addresses."},{status:400});let l=[],c=new Set;for(let e of u.to){if("string"!=typeof e)continue;let t=e.trim().toLowerCase();t&&n.test(t)&&t!==o.me.email.toLowerCase()&&(c.has(t)||(c.add(t),l.push(t)))}if(0===l.length)return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"no_valid_recipients",user_id:o.me.id,input_count:Array.isArray(u.to)?u.to.length:0}),t.NextResponse.json({code:"validation_error",message:"Provide at least one valid email address (other than your own)."},{status:400});if(l.length>10)return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"too_many_recipients",user_id:o.me.id,input_count:l.length}),t.NextResponse.json({code:"validation_error",message:"Up to 10 recipients per invite batch. Please send the rest in a follow-up."},{status:400});"number"==typeof u.score&&Number.isFinite(u.score)&&(i=Math.max(0,Math.min(100,Math.round(u.score))));try{let e=await (0,r.sendInvites)(o.auth.access_token,l,i);return(0,s.trackEvent)("audit_invite_sent",{status:"success",source:"dashboard",user_id:o.me.id,sent_count:e.sent.length,failed_count:e.failed.length}),t.NextResponse.json(e,{status:200})}catch(a){if(a instanceof r.AuthApiError){(0,s.trackEvent)("audit_invite_sent",{status:"failed",source:"dashboard",user_id:o.me.id,error_code:a.code,http_status:a.status,recipient_count:l.length});let e=a.status>=200&&a.status<600?a.status:504;return t.NextResponse.json({code:a.code,message:a.message,...void 0!==a.retryAfterSecs?{retry_after_secs:a.retryAfterSecs}:{}},{status:e})}let e=a instanceof Error?a.name:"unknown";return(0,s.trackEvent)("audit_invite_sent",{status:"failed",source:"dashboard",user_id:o.me.id,error_code:"upstream_unreachable",error_name:e.slice(0,50),recipient_count:l.length}),t.NextResponse.json({code:"upstream_unreachable",message:"Invite service is unreachable. Please try again in a moment."},{status:502})}}e.s(["POST",0,i,"dynamic",0,"force-dynamic"])},69005,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),s=e.i(59756),n=e.i(61916),i=e.i(74677),o=e.i(69741),u=e.i(16795),d=e.i(87718),l=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(26937),m=e.i(10372),_=e.i(93695);e.i(52474);var
|
|
1
|
+
module.exports=[72993,e=>{"use strict";var t=e.i(89171),a=e.i(17707),r=e.i(6375),s=e.i(46501);let n=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;async function i(e){let i;await (0,s.initTelemetry)();let o=await (0,a.whoAmI)();if(!o)return(0,s.trackEvent)("audit_invite_sent",{status:"unauthorized",source:"dashboard"}),t.NextResponse.json({code:"unauthorized",message:"Sign in before sending invites."},{status:401});let u={},d=await e.text();if(d.trim().length>0)try{let e=JSON.parse(d);if(null===e||"object"!=typeof e||Array.isArray(e))return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"not_an_object",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"Request body must be a JSON object."},{status:400});u=e}catch{return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"malformed_json",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"Request body is not valid JSON."},{status:400})}if(!Array.isArray(u.to))return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"missing_to",user_id:o.me.id}),t.NextResponse.json({code:"validation_error",message:"`to` must be a list of email addresses."},{status:400});let l=[],c=new Set;for(let e of u.to){if("string"!=typeof e)continue;let t=e.trim().toLowerCase();t&&n.test(t)&&t!==o.me.email.toLowerCase()&&(c.has(t)||(c.add(t),l.push(t)))}if(0===l.length)return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"no_valid_recipients",user_id:o.me.id,input_count:Array.isArray(u.to)?u.to.length:0}),t.NextResponse.json({code:"validation_error",message:"Provide at least one valid email address (other than your own)."},{status:400});if(l.length>10)return(0,s.trackEvent)("audit_invite_sent",{status:"validation_error",source:"dashboard",reason:"too_many_recipients",user_id:o.me.id,input_count:l.length}),t.NextResponse.json({code:"validation_error",message:"Up to 10 recipients per invite batch. Please send the rest in a follow-up."},{status:400});"number"==typeof u.score&&Number.isFinite(u.score)&&(i=Math.max(0,Math.min(100,Math.round(u.score))));try{let e=await (0,r.sendInvites)(o.auth.access_token,l,i);return(0,s.trackEvent)("audit_invite_sent",{status:"success",source:"dashboard",user_id:o.me.id,sent_count:e.sent.length,failed_count:e.failed.length}),t.NextResponse.json(e,{status:200})}catch(a){if(a instanceof r.AuthApiError){(0,s.trackEvent)("audit_invite_sent",{status:"failed",source:"dashboard",user_id:o.me.id,error_code:a.code,http_status:a.status,recipient_count:l.length});let e=a.status>=200&&a.status<600?a.status:504;return t.NextResponse.json({code:a.code,message:a.message,...void 0!==a.retryAfterSecs?{retry_after_secs:a.retryAfterSecs}:{}},{status:e})}let e=a instanceof Error?a.name:"unknown";return(0,s.trackEvent)("audit_invite_sent",{status:"failed",source:"dashboard",user_id:o.me.id,error_code:"upstream_unreachable",error_name:e.slice(0,50),recipient_count:l.length}),t.NextResponse.json({code:"upstream_unreachable",message:"Invite service is unreachable. Please try again in a moment."},{status:502})}}e.s(["POST",0,i,"dynamic",0,"force-dynamic"])},69005,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),s=e.i(59756),n=e.i(61916),i=e.i(74677),o=e.i(69741),u=e.i(16795),d=e.i(87718),l=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(26937),m=e.i(10372),_=e.i(93695),R=e.i(9580);e.i(52474);var f=e.i(220);let g=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/audit/invite/route",pathname:"/api/audit/invite",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/audit/invite/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(72993),...{}}),{workAsyncStorage:E,workUnitAsyncStorage:w,serverHooks:y}=g;async function b(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),g.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/audit/invite/route";E=E.replace(/\/index$/,"")||"/";let w=await g.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:y,deploymentId:b,params:x,nextConfig:A,parsedUrl:C,isDraftMode:N,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:k,clientReferenceManifest:q,serverActionsManifest:j}=w,I=(0,o.normalizeAppPath)(E),H=!!S.routes[k]&&(g.isDev||(0,R.isRouteCacheOwner)(k,g.cacheOwner,S.routes[k])),M=!!(S.dynamicRoutes[I]||H),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,C,!1):t.end("This page could not be found"),null);if(M&&!N){let e=S.dynamicRoutes[I];if(e&&!1===e.fallback&&!H){if(A.adapterPath)return await U();throw new _.NoFallbackError}}let D=null;!M||g.isDev||N||(D="/index"===(D=k)?"/":D);let F=!0===g.isDev||!M,L=M&&!F;j&&q&&(0,i.setManifestsSingleton)({page:E,clientReferenceManifest:q,serverActionsManifest:j});let K=e.method||"GET",$=(0,n.getTracer)(),B=$.getActiveScopeSpan(),G=!!(null==T?void 0:T.isWrappedByNextServer),z=!!(0,s.getRequestMeta)(e,"minimalMode"),J=(0,s.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,A,S,z);null==J||J.resetRequestCache(),globalThis.__incrementalCache=J;let V={params:x,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:N,supportsDynamicResponse:F,incrementalCache:J,hmrRefreshHash:(0,s.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>g.onRequestError(e,t,r,s,T)},sharedContext:{buildId:y,deploymentId:b}},X=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),Z=d.NextRequestAdapter.fromNodeNextRequest(X,(0,d.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:a})=>{try{if(!z&&P&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await g.handle(Z,V);e.fetchMetrics=V.renderOpts.fetchMetrics;let n=V.renderOpts.pendingWaitUntil;n&&r.waitUntil&&(r.waitUntil(n),n=void 0);let i=V.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(X,W,s,n),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);i&&(t[m.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,r=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==a&&a>0?A.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:P})},!1,T),t}},Y=async(s,i)=>{try{var o,u;let s=await g.handleResponse({req:e,nextConfig:A,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:Q,waitUntil:r.waitUntil,isMinimalMode:z});if(!M)return;if((null==s||null==(o=s.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==s||null==(u=s.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",P?"REVALIDATED":s.isMiss?"MISS":s.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,h.fromNodeOutgoingHttpHeaders)(s.value.headers);z&&M||n.delete(m.NEXT_CACHE_TAGS_HEADER),!s.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,v.getCacheControlHeader)(s.cacheControl)),await (0,p.sendResponse)(X,W,new Response(s.value.body,{headers:n,status:s.value.status||200}));return}catch(t){if(t instanceof _.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:P})},!1,T),M)throw t;await (0,p.sendResponse)(X,W,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:n.SpanStatusCode.ERROR}),s.setAttribute("error.type",e.toString()));let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==l.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||I,o=`${K} ${r}`;s.setAttributes({"next.route":r,"http.route":r,"next.span_name":o}),s.updateName(o),i&&i!==s&&(i.setAttribute("http.route",r),i.updateName(o))})()}};if(G&&B)await Y(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(l.BaseServerSpan.handleRequest,{spanName:`${K} ${E}`,kind:n.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},e=>Y(e,t)),void 0,!G)}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:w})},"routeModule",0,g,"serverHooks",0,y,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,w])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1ogwigf._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[91301,e=>{e.v(e=>Promise.resolve().then(()=>e(30441)))},37352,e=>{e.v(e=>Promise.resolve().then(()=>e(36203)))},5807,e=>{e.v(e=>Promise.resolve().then(()=>e(55851)))},97452,e=>{e.v(e=>Promise.resolve().then(()=>e(46413)))},52400,e=>{e.v(e=>Promise.resolve().then(()=>e(79364)))},62998,e=>{e.v(s=>Promise.all(["server/chunks/lib_factory-projects_ts_1eo_bk-._.js"].map(s=>e.l(s))).then(()=>s(69391)))},31854,e=>{e.v(e=>Promise.resolve().then(()=>e(69164)))},67347,e=>{e.v(e=>Promise.resolve().then(()=>e(64828)))},38978,e=>{e.v(e=>Promise.resolve().then(()=>e(90624)))},82978,e=>{e.v(e=>Promise.resolve().then(()=>e(35435)))},45093,e=>{e.v(e=>Promise.resolve().then(()=>e(19791)))},78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__0h0p9dm._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(s=>e.l(s))).then(()=>s(39702)))},396,e=>{e.v(s=>Promise.all(["server/chunks/[externals]
|
|
1
|
+
module.exports=[91301,e=>{e.v(e=>Promise.resolve().then(()=>e(30441)))},37352,e=>{e.v(e=>Promise.resolve().then(()=>e(36203)))},5807,e=>{e.v(e=>Promise.resolve().then(()=>e(55851)))},97452,e=>{e.v(e=>Promise.resolve().then(()=>e(46413)))},52400,e=>{e.v(e=>Promise.resolve().then(()=>e(79364)))},62998,e=>{e.v(s=>Promise.all(["server/chunks/lib_factory-projects_ts_1eo_bk-._.js"].map(s=>e.l(s))).then(()=>s(69391)))},31854,e=>{e.v(e=>Promise.resolve().then(()=>e(69164)))},67347,e=>{e.v(e=>Promise.resolve().then(()=>e(64828)))},38978,e=>{e.v(e=>Promise.resolve().then(()=>e(90624)))},82978,e=>{e.v(e=>Promise.resolve().then(()=>e(35435)))},45093,e=>{e.v(e=>Promise.resolve().then(()=>e(19791)))},78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__0h0p9dm._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(s=>e.l(s))).then(()=>s(39702)))},396,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__1oenfmn._.js","server/chunks/src_hooks_custom-hooks-loader_ts_0lnb3n3._.js"].map(s=>e.l(s))).then(()=>s(90521)))},67918,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__1_9ze9b._.js","server/chunks/_09dz7xv._.js","server/chunks/src_hooks_custom-hooks-loader_ts_0lnb3n3._.js"].map(s=>e.l(s))).then(()=>s(22367)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=_1q27azx._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[34324,e=>{"use strict";var t=e.i(15855),
|
|
1
|
+
module.exports=[34324,e=>{"use strict";var t=e.i(15855),r=e.i(2157);e.i(50227);var o=e.i(43477);let n={mode:"oss",daemon:{configured:!1},collector:{sessions:!1,hooks:!0,hooksVerbosity:"decisions",redact:"minimal",environment:"local"},telemetry:{enabled:!0},audit:{auto:!1,intervalDays:7}};function i(){if("1"===process.env.FAILPROOFAI_TELEMETRY_DISABLED)return!1;try{return function(){try{var e;let t,n,i,s,a;return e=JSON.parse((0,r.readFileSync)((0,o.configFile)(),"utf8")),t=e.mode?.kind,n=e.daemon??{},i=e.collector??{},s=e.telemetry??{},a=e.audit??{},{mode:"cloud"===t?"cloud":"oss",daemon:{configured:!0===n.configured},collector:{sessions:!0===i.sessions,hooks:!1!==i.hooks,hooksVerbosity:"all"===i.hooks_verbosity||"off"===i.hooks_verbosity?i.hooks_verbosity:"decisions",redact:"off"===i.redact?"off":"minimal",environment:"string"==typeof i.environment?i.environment:"local",machineId:"string"==typeof i.machine_id?i.machine_id:void 0,sources:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;let t={};for(let[r,o]of Object.entries(e)){if(!o||"object"!=typeof o||Array.isArray(o))continue;let e=o.extra_paths;if(!Array.isArray(e))continue;let n=e.filter(e=>"string"==typeof e&&""!==e.trim());n.length>0&&(t[r]={extraPaths:n})}return Object.keys(t).length>0?t:void 0}(i.sources),agents:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;let t=Object.fromEntries(Object.entries(e).flatMap(([e,t])=>{if(!t||"object"!=typeof t||Array.isArray(t))return[];let r=t.sessions;return"boolean"==typeof r?[[e,{sessions:r}]]:[]}));return Object.keys(t).length?t:void 0}(i.agents),otlp:function(e){if(!(!e||"object"!=typeof e||Array.isArray(e)))return{enabled:!0===e.enabled,..."number"==typeof e.port&&Number.isInteger(e.port)?{port:e.port}:{}}}(i.otlp)},telemetry:{enabled:!1!==s.enabled},audit:{auto:!0===a.auto,intervalDays:function(e){if("number"!=typeof e||!Number.isFinite(e))return 7;let t=Math.floor(e);return t<1?7:Math.min(t,90)}(a.interval_days),reportsConsentedAt:"number"==typeof a.reports_consented_at&&Number.isFinite(a.reports_consented_at)?a.reports_consented_at:void 0},agents:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;let t=e=>Array.isArray(e)?[...new Set(e.filter(e=>"string"==typeof e&&""!==e.trim()))]:[];if(Array.isArray(e.selected))return{selected:t(e.selected),seen:t(e.seen)}}(e.agents)}}catch{return structuredClone(n)}}().telemetry.enabled}catch{return!0}}var s=e.i(93133);async function a(){try{if(!i()||globalThis.__FAILPROOFAI_POSTHOG__)return;let t=await e.A(37581),r=process.env.FAILPROOFAI_POSTHOG_KEY??"phc_Ac1Ww1GqKc0z1SyrRWbmatEeQdlOQIsDEEdP8l8JRgX",o=process.env.FAILPROOFAI_POSTHOG_HOST??"https://us.i.posthog.com";globalThis.__FAILPROOFAI_POSTHOG__=new t.PostHog(r,{host:o,flushAt:1,flushInterval:1e4,requestTimeout:1e4,fetchRetryCount:3,fetchRetryDelay:3e3});let n=!1,s=()=>{n||(n=!0,globalThis.__FAILPROOFAI_POSTHOG__?.shutdown().catch(()=>{}))};process.on("beforeExit",s),process.on("SIGTERM",s),process.on("SIGINT",s)}catch(e){console.warn("[failproofai:telemetry] init failed:",e instanceof Error?e.message:e)}}function l(e,r){if(!i())return;let o=globalThis.__FAILPROOFAI_POSTHOG__;o&&o.capture({distinctId:(0,t.getInstanceId)(),event:e,properties:{...r,$lib:"failproofai",failproofai_version:s.version,product:"failproofai-oss"}})}async function c(){let e=globalThis.__FAILPROOFAI_POSTHOG__;e&&await e.flush()}async function f(){let e=globalThis.__FAILPROOFAI_POSTHOG__;e&&await e.shutdown()}e.s(["flushTelemetry",0,c,"initTelemetry",0,a,"shutdownTelemetry",0,f,"trackEvent",0,l],2477),e.i(2477),e.s(["flushTelemetry",0,c,"initTelemetry",0,a,"trackEvent",0,l],34324)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=lib_telemetry_ts_0dctyyw._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]
|
|
1
|
+
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__0d7i9ea._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(s=>e.l(s))).then(()=>s(39702)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=node_modules_posthog-
|
|
3
|
+
//# sourceMappingURL=node_modules_posthog-node_dist_entrypoints_index_node_mjs_0ol5pa3._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]
|
|
1
|
+
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__0d7i9ea._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(s=>e.l(s))).then(()=>s(39702)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=node_modules_posthog-
|
|
3
|
+
//# sourceMappingURL=node_modules_posthog-node_dist_entrypoints_index_node_mjs_1rqmk27._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]
|
|
1
|
+
module.exports=[78081,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__0d7i9ea._.js","server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js"].map(s=>e.l(s))).then(()=>s(39702)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=node_modules_posthog-
|
|
3
|
+
//# sourceMappingURL=node_modules_posthog-node_dist_entrypoints_index_node_mjs_1w7tiq4._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[93133,(e,i,t)=>{i.exports={name:"failproofai",version:"1.0.
|
|
1
|
+
module.exports=[93133,(e,i,t)=>{i.exports={name:"failproofai",version:"1.0.11-beta.0",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.128.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.2","@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.0.16",undici:"7.29.1","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.11-beta.0","@failproofai/failproofaid-linux-arm64":"1.0.11-beta.0","@failproofai/failproofaid-darwin-x64":"1.0.11-beta.0","@failproofai/failproofaid-darwin-arm64":"1.0.11-beta.0"},failproofaidBinaries:{"linux-x64":"40b05c741f4c3c63bbf23b21cc4e200a396c07d568656a10d67a84b12fee42b8","linux-arm64":"afe688afba9e7f225d6d521c01b7d0038f1374125ede22f669ed45847a12e9b0","darwin-x64":"d8398fafe3a58abce754437f92111918d0229f966cd987be923d5dafbd5d3f84","darwin-arm64":"80108cfd087ecae5e1f2c2ba9bab77e160daceb169a0c44b5fe8b6ca519fc8dc"}}}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=package_json_%5Bjson%5D_cjs_1nxcc4v._.js.map
|