failproofai 1.0.12-beta.1 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +2 -2
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_hooks_0_em82s16zfym._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__167mipqmjprq5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0b78b0j8iyv6l._.js → [root-of-the-server]__1vofkb2oq7p7e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_1a3tubds7s7ow._.js → _0ouu886szh6yj._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1d98fyfrcaqhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1i8oid1gc7s1f.js → node_modules_html-to-image_es_index_0tqc05n832v7a.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0agdmptetetdt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0mdwgjisv4fub._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589gp4p60j._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/{1b32-afqacaen.js → 0el9n3h9_zp5m.js} +1 -1
- package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +1 -0
- package/.next/standalone/.next/static/chunks/{42e8zab314654.js → 0umzct31duk5g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{24w3x2da9sk49.js → 0wobqgosirs8p.js} +1 -1
- package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +1 -0
- package/.next/standalone/.next/static/chunks/{2-tf6_7u623kd.js → 1kduj74-715jh.js} +1 -1
- package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +1 -0
- package/.next/standalone/.next/static/chunks/{18433qz-8njv3.js → 27cavoc8paelg.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0_zfad4co-t2z.js → 2ve23a7keupjw.js} +1 -1
- package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +6 -0
- package/.next/standalone/app/actions/update-jev-config.ts +5 -3
- package/.next/standalone/app/settings/jev-panel.tsx +1 -1
- package/.next/standalone/fp-cloud-cli/CHANGELOG.md +28 -18
- package/.next/standalone/fp-cloud-cli/README.md +127 -9
- package/.next/standalone/fp-cloud-cli/fp_cli/app.py +15 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/client.py +199 -34
- package/.next/standalone/fp-cloud-cli/fp_cli/cloud_output.py +523 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/_cloud.py +45 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/_write.py +3 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/account_cmds.py +171 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/agent_cmds.py +80 -7
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/alerts_cmds.py +23 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/audits_cmds.py +2 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/contracts_cmds.py +67 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/dashboards_cmds.py +159 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/evaluators_cmds.py +380 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/events_cmds.py +14 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/fleet_cmds.py +12 -216
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/incidents_cmds.py +82 -6
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/list_cmds.py +4 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/orgs_cmds.py +17 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/policies_cmds.py +143 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/queries_cmds.py +70 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/sentiment_cmds.py +49 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/sessions_cmds.py +95 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/settings_cmds.py +2 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/usage_cmds.py +21 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/users_cmds.py +14 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/enforcement.py +7 -53
- package/.next/standalone/fp-cloud-cli/fp_cli/errors.py +3 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/evaluator_spec.py +266 -0
- package/.next/standalone/fp-cloud-cli/fp_cli/output.py +189 -152
- package/.next/standalone/fp-cloud-cli/fp_cli/theme.py +21 -24
- package/.next/standalone/fp-cloud-cli/skill/SKILL.md +124 -23
- package/.next/standalone/fp-cloud-cli/skill/agents/openai.yaml +2 -1
- package/.next/standalone/fp-cloud-cli/skill/references/commands.md +173 -22
- package/.next/standalone/fp-cloud-cli/tests/fake_cloud_smoke.py +312 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_account.py +125 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_agent.py +253 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_human_views.py +287 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_jev.py +32 -197
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_observability.py +116 -0
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_transport.py +141 -0
- package/.next/standalone/fp-cloud-cli/tests/test_commands.py +3 -3
- package/.next/standalone/fp-cloud-cli/tests/test_dashboards_agent.py +3 -3
- package/.next/standalone/fp-cloud-cli/tests/test_evaluator_authoring.py +449 -0
- package/.next/standalone/fp-cloud-cli/tests/test_facets.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_help_table_coverage.py +15 -0
- package/.next/standalone/fp-cloud-cli/tests/test_operator.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_orgs.py +1 -1
- package/.next/standalone/fp-cloud-cli/tests/test_output.py +37 -37
- package/.next/standalone/fp-cloud-cli/tests/test_round4_behaviour.py +144 -0
- package/.next/standalone/fp-cloud-cli/tests/test_screen_language.py +80 -0
- package/.next/standalone/fp-cloud-cli/tests/test_session_reevaluate.py +33 -0
- package/.next/standalone/fp-cloud-cli/tests/test_staging_parity.py +198 -0
- package/.next/standalone/fp-cloud-cli/tests/test_whoami.py +1 -1
- package/.next/standalone/hermes-plugin/__init__.py +11 -0
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/package.json +11 -10
- package/.next/standalone/sdk/python/uv.lock +31 -8
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +68 -176
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package.json +2 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +98 -115
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +149 -171
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +2 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +25 -25
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +10 -10
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package-lock.json +7 -7
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +1760 -638
- package/dist/worker.mjs +426 -76
- package/hermes-plugin/__init__.py +11 -0
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +11 -10
- package/src/audit/open-browser.ts +24 -7
- package/src/hooks/agent-roster.ts +9 -1
- package/src/hooks/agent-skill.ts +206 -0
- package/src/hooks/cloud-connection.ts +27 -51
- package/src/hooks/cloud-introspect.ts +5 -2
- package/src/hooks/cloud-login.ts +248 -0
- package/src/hooks/cloud-managed-policies.ts +54 -4
- package/src/hooks/codex-system-hooks.ts +10 -4
- package/src/hooks/config-status.ts +9 -3
- package/src/hooks/configure-wizard.ts +356 -32
- package/src/hooks/delivery-health.ts +47 -2
- package/src/hooks/effective-reviewers.ts +14 -0
- package/src/hooks/fp-config.ts +19 -0
- package/src/hooks/fp-home.ts +1 -1
- package/src/hooks/handler.ts +43 -5
- package/src/hooks/hook-activity-store.ts +7 -1
- package/src/hooks/integrations.ts +18 -3
- package/src/hooks/jev-activity.ts +117 -1
- package/src/hooks/jev-cli.ts +7 -9
- package/src/hooks/manager.ts +80 -46
- package/src/hooks/policy-evaluator.ts +17 -0
- package/src/hooks/policy-reviewability.ts +4 -2
- package/src/hooks/semantic/cloud-jev.ts +219 -28
- package/src/hooks/semantic/combine.ts +26 -1
- package/src/hooks/semantic/intent.ts +127 -24
- package/src/hooks/semantic/jev-client.ts +1 -1
- package/src/hooks/semantic/jev-config.ts +6 -27
- package/src/hooks/semantic/jev-review.ts +111 -4
- package/src/hooks/tui.ts +280 -0
- package/src/hooks/uninstall-cli.ts +12 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0588st-tpiuia._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_128ebxr83nk6g._.js +0 -3
- package/.next/standalone/.next/static/chunks/0jutamwqz8pg5.js +0 -1
- package/.next/standalone/.next/static/chunks/114hbolvrv94e.js +0 -1
- package/.next/standalone/.next/static/chunks/1p-hsi58i-6h0.js +0 -6
- package/.next/standalone/.next/static/chunks/3-pku9qwv1yfu.js +0 -1
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[86017,91997,a=>{let b=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],c=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a);a.s(["X",0,["PreToolUse","PostToolUse","PreInvocation","Stop"],"m",0,["user","project"],"I",0,c,"p",0,{session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},"W",0,["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],"L",0,["user","project"],"d",0,["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],"w",0,["user","project"],"s",0,["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],"Y",0,["user","project"],"D",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],"c",0,["user","project"],"n",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],"B",0,["user","project"],"Z",0,"__failproofai_hook__","i",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],"x",0,["user","project"],"y",0,["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],"M",0,["user"],"F",0,["user","project","local"],"z",0,b,"P",0,["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],"E",0,["user"],"e",0,["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],"O",0,["user","project"],"J",0,["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],"G",0,["user","project"]],91997);let d=/^agt_[0-9a-f]{16,32}$/,e=new Set(b);a.s(["i",0,function(a,b){return void 0===a||!!(!(!b||"object"!=typeof b||Array.isArray(b))&&Object.keys(b).every(a=>"integration"===a||"instanceId"===a)&&"string"==typeof b.integration&&e.has(b.integration)&&"string"==typeof b.instanceId&&d.test(b.instanceId))&&a.some(a=>a.integration===b.integration&&(void 0===a.instanceId||a.instanceId===b.instanceId))},"P",0,function(a,b){if(null==a)return;if(b<3||!Array.isArray(a)||a.length<1||a.length>32)throw Error("invalid agentTargets in cloud-managed active manifest");let c=new Set;return a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"integration"!==a&&"instanceId"!==a)||"string"!=typeof a.integration||!e.has(a.integration)||void 0!==a.instanceId&&("string"!=typeof a.instanceId||!d.test(a.instanceId)))throw Error("invalid agentTargets in cloud-managed active manifest");let b=`${a.integration}\0${a.instanceId??""}`;if(c.has(b))throw Error("duplicate agentTargets in cloud-managed active manifest");return c.add(b),{integration:a.integration,...void 0!==a.instanceId?{instanceId:a.instanceId}:{}}})}],86017)},86304,91609,89790,68561,48630,9909,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(12072),f=a.i(75818),g=a.i(86017);a.i(10695);let h=new Set(["destructive-deletion","production-infra-change","git-history-rewrite","push-to-protected-branch","commit-on-protected-branch","secret-exposure","credential-exfiltration","remote-code-execution","privilege-escalation","database-destruction","read-outside-workspace","agent-config-tampering","system-modification","env-secrets-dump","external-destructive-action","external-data-egress"]),i=new Set,j=a=>"string"==typeof a&&a.length>0;function k(a){let b={};("hard"===a.authority||"reviewable"===a.authority)&&(b.authority=a.authority);let c=a.reviewedBy;return Array.isArray(c)&&c.length>0&&c.every(j)&&(b.reviewedBy=[...c]),b}a.s(["g",0,h,"i",0,k,"d",0,function(a,b=i,c){let d=a?.authority==="reviewable";if(!a||"hard"==(!0!==a.alwaysOn&&"reviewable"===a.authority&&Array.isArray(a.reviewedBy)&&a.reviewedBy.filter(a=>"string"==typeof a&&a.length>0).length>0?"reviewable":"hard")){var e;return d?{authority:"hard",downgraded:!0===(e=a).alwaysOn?"it is alwaysOn, and the self-protection guard is never reviewable":Array.isArray(e.reviewedBy)&&0!==e.reviewedBy.length?"reviewedBy is not a list of semantic policy names":"reviewedBy does not name any semantic policy"}:{authority:"hard"}}let f=a.reviewedBy;if(!f.every(j))return{authority:"hard",downgraded:"reviewedBy is not a list of semantic policy names"};let g=f.filter(a=>!b.has(a));return 0!==b.size||g.some(a=>c?.has(a))?g.length>0?{authority:"hard",downgraded:`reviewedBy names ${g.map(a=>(function(a,b,c){let d=JSON.stringify(a),e=c?.get(a);if(e)return`${d}, which packs ${e.join(" and ")} declare differently, so it is asked for neither`;if(b===h)return`${d}, which is not a semantic policy in this build`;let f=[...b].sort(),g=f.length>6?`${f.slice(0,6).join(", ")} and ${f.length-6} more`:f.join(", ");return`${d}, which is not among the Jev checks it is judged against (${g})`})(a,b,c)).join("; ")}`}:{authority:"reviewable",reviewedBy:[...new Set(f)]}:{authority:"hard"}}],91609);let l=[1,2,3],m=/^[a-f0-9]{64}$/,n=/^[A-Za-z0-9._-]{1,128}$/;function o(){return process.env.FAILPROOFAI_CLOUD_POLICY_DIR??(0,f.I)()}function p(a,b){if(!b||(0,d.isAbsolute)(b))throw Error(`unsafe managed policy path ${JSON.stringify(b)}`);let e=(0,d.resolve)(a,b),f=(0,d.relative)(a,e);if(f.startsWith("..")||(0,d.isAbsolute)(f))throw Error(`managed policy path escapes its root: ${JSON.stringify(b)}`);let g=(0,c.realpathSync)(a),h=(0,c.realpathSync)(e),i=(0,d.relative)(g,h);if(i.startsWith("..")||(0,d.isAbsolute)(i))throw Error(`managed policy symlink escapes its root: ${JSON.stringify(b)}`);return h}let q=null;function r(){if(function(){try{let a=JSON.parse((0,c.readFileSync)((0,f.y)(),"utf8"));if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.mode;return!!b&&"object"==typeof b&&!Array.isArray(b)&&"oss"===b.kind}catch{return!1}}()){q=null;return}let a=(0,d.resolve)(o(),"active.json"),b=function(a){try{let b=(0,c.statSync)(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.mode}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}(a);if(null===b){q=null;return}if(q&&q.path===a&&q.version===b)return q.value;let e=JSON.parse((0,c.readFileSync)(a,"utf8"));return q={path:a,version:b,value:e},e}let s=/^cloud:[^/]+\/./;function t(a,b){return"reviewable"!==a.authority?a.authority?{authority:a.authority}:{}:"observe"===a.effect||"observe"!==b&&"enforce"!==b?{authority:"hard"}:{authority:"reviewable",reviewedBy:(a.reviewedBy??[]).map(b=>{var c;return s.test(b)?b:(c=a.id,`cloud:${c}/${b}`)})}}a.s(["i",0,t,"O",0,function(a,b){let c=[];for(let d of a){let a=t(d,b);"reviewable"===a.authority&&c.push(...a.reviewedBy??[])}return c},"m",0,function(a=null){return function(a){let d,e=o();try{d=r()}catch(a){throw Error(`failed to read cloud-managed active manifest: ${a instanceof Error?a.message:String(a)}`)}if(void 0===d)return[];let f=function(a){if(!a||"object"!=typeof a)throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)} (supported: ${l.join(", ")})`);let b=a.deployment??a.generation;if(!Number.isSafeInteger(b)||(b??-1)<0)throw Error("active manifest deployment is invalid");if(!Array.isArray(a.policies))throw Error("active manifest policies is not an array");let c=a.policies.map(a=>({...a,version:a.version??a.revision}));return{schemaVersion:a.schemaVersion,deployment:b,policies:c}}(d),h=f.policies.filter(b=>a((0,g.P)(b.agentTargets,f.schemaVersion))),i=new Set;return h.map(a=>{if(!n.test(a.id)||"."===a.id||".."===a.id)throw Error(`unsafe cloud-managed policy id ${JSON.stringify(a.id)}`);if(!Number.isSafeInteger(a.version)||a.version<0)throw Error(`invalid version for cloud-managed policy ${a.id}`);if(!m.test(a.sha256))throw Error(`invalid SHA-256 for cloud-managed policy ${a.id}`);if(i.has(a.id))throw Error(`duplicate cloud-managed policy id ${a.id}`);i.add(a.id);let d=p(e,a.path),h=(0,c.readFileSync)(d),j=(0,b.createHash)("sha256").update(h).digest("hex");if(j!==a.sha256)throw Error(`cloud-managed policy ${a.id} failed integrity verification: expected ${a.sha256}, got ${j}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for cloud-managed policy ${a.id}`);return{id:a.id,version:a.version,effect:a.effect??"enforce",sha256:a.sha256,path:d,deployment:f.deployment,...(0,g.P)(a.agentTargets,f.schemaVersion)?{agentTargets:(0,g.P)(a.agentTargets,f.schemaVersion)}:{},...k(a)}})}(b=>(0,g.i)(b,a))},"D",0,function(){try{var a;return a=function(){let a=r();if(void 0===a)return null;if(!a||"object"!=typeof a||Array.isArray(a))throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)}`);return a}()?.jevMode,"off"===a||"observe"===a||"enforce"===a?a:null}catch{return null}},"t",0,p],89790);let u=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,v=/^(?:0|[1-9]\d*)$/;function w(a){if("string"!=typeof a)return null;let b=u.exec(a);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:void 0===b[4]?[]:b[4].split(".").map(a=>v.test(a)?Number(a):a)}:null}let x=(a,b)=>a<b?-1:+(a>b);function y(a,b){let c=w(a),d=w(b);return c&&d?x(c.major,d.major)||x(c.minor,d.minor)||x(c.patch,d.patch)||function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;for(let c=0;c<Math.min(a.length,b.length);c++){let d=a[c],e=b[c];if(d===e)continue;let f="number"==typeof d,g="number"==typeof e;if(f!==g)return f?-1:1;if(f&&g)return x(d,e);return d<e?-1:1}return x(a.length,b.length)}(c.prerelease,d.prerelease):null}a.s(["f",0,y],68561);let z=["always","protected_branch","in_git_repo","has_paths","paths_outside_project","system_or_root_paths"];function A(a){return"string"==typeof a&&z.includes(a)}a.s(["B",0,z,"M",0,A],48630);let B=[1],C=/^[a-f0-9]{64}$/,D=/^[A-Za-z0-9._-]{1,64}\/[A-Za-z0-9._-]{1,64}$/,E=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/,F=/^[0-9a-f]{7,40}$/,G=/^[A-Za-z0-9._-]{1,128}$/,H=/^[a-z][a-z0-9_]{0,31}$/,I=new Set(["exempt","user_asked"]),J=new Set(["shell","write","read","network","other"]);function K(){return process.env.FAILPROOFAI_PACK_DIR??(0,f.n)()}function L(a){if("string"!=typeof a.id||!D.test(a.id))throw Error(`unsafe pack id ${JSON.stringify(a.id)}`);if("string"!=typeof a.version||!E.test(a.version))throw Error(`invalid version for pack ${a.id}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for pack ${a.id}`);let b="string"==typeof a.commit&&F.test(a.commit.trim().toLowerCase())?a.commit.trim().toLowerCase():void 0;return{id:a.id,version:a.version,effect:a.effect??"enforce",...b?{commit:b}:{}}}function M(){return process.env.FAILPROOFAI_PACK_DIR?(0,d.resolve)(process.env.FAILPROOFAI_PACK_DIR,"installed.json"):(0,f.v)()}let N=new Set(["string","number","boolean","string[]","pattern[]"]);function O(a,b,c,d){let e=`${a} policy #${c}`;if(!b||"object"!=typeof b)throw Error(`${e} is not an object`);let f=b.name;if("string"!=typeof f||!G.test(f))throw Error(`${e} has an unsafe name ${JSON.stringify(f)}`);if("alwaysOn"in b)throw Error(`${e} declares alwaysOn, which packs may not set`);if("string"!=typeof b.description||0===b.description.length)throw Error(`${e} is missing a description`);if("string"!=typeof b.category||0===b.category.length)throw Error(`${e} is missing a category`);if("boolean"!=typeof b.defaultEnabled)throw Error(`${e} is missing defaultEnabled`);if(!b.match||"object"!=typeof b.match)throw Error(`${e} is missing a match`);let g=b.match;for(let a of["events","toolNames"]){let b=g[a];if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a||0===a.length)))throw Error(`${e} has a match.${a} that is not a list of names`)}let h=k(b),i=["authority","reviewedBy"].filter(a=>a in b&&!(a in h));if("params"in b){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"params is not an object";for(let[b,c]of Object.entries(a)){if(0===b.length)return"params has an empty parameter name";if(!c||"object"!=typeof c||Array.isArray(c))return`params.${b} is not an object`;if("string"!=typeof c.type||!N.has(c.type))return`params.${b} has type ${JSON.stringify(c.type)}, which is not one of ${[...N].join(", ")}`;if("string"!=typeof c.description||0===c.description.length)return`params.${b} is missing a description`;if(!("default"in c))return`params.${b} is missing a default`}}(b.params);a&&(d?.push(`${e} declares a params schema that was dropped: ${a}`),i.push("params"))}return i.length>0?Object.fromEntries(Object.entries(b).filter(([a])=>!i.includes(a))):b}function P(a,b,c=e.version){if(void 0===b)return{kind:"satisfied"};let d=y(c,b);return null===d?{kind:"unreadable",reason:`pack ${a} declares minCliVersion ${JSON.stringify(b)}, which is not a version this CLI can compare against its own (${c}) — the requirement was ignored`}:d<0?{kind:"too-old",reason:`pack ${a} needs failproofai ${String(b)} or newer and this is ${c} — run \`npm i -g "failproofai@>=${String(b)}" && failproofai update\``}:{kind:"satisfied",declared:b}}function Q(a,b,c,d){if("string"!=typeof c||0===c.length)throw Error(`${a} is missing ${b}`);if(c.length>d)throw Error(`${a} has a ${b} of ${c.length} characters, over the ${d}-character cap`);return c}function R(a,b,c){let d;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${a} is not an object`);if(null!==c)d=c;else{if("string"!=typeof b.id||!H.test(b.id))throw Error(`${a} has an unsafe id ${JSON.stringify(b.id)}`);if(I.has(b.id))throw Error(`${a} uses the reserved probe id ${JSON.stringify(b.id)}`);d=b.id}let e=Q(a,"instructions",b.instructions,600);if(void 0===b.criteria)return{id:d,instructions:e};if(!b.criteria||"object"!=typeof b.criteria||Array.isArray(b.criteria))throw Error(`${a} has criteria that is not an object`);let f=b.criteria;return{id:d,instructions:e,criteria:{true:Q(a,"criteria.true",f.true,300),false:Q(a,"criteria.false",f.false,300)}}}function S(a,b,c){let d=`${a} semantic policy #${c}`;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${d} is not an object`);let e=b.name;if("string"!=typeof e||!G.test(e))throw Error(`${d} has an unsafe name ${JSON.stringify(e)}`);if("alwaysOn"in b)throw Error(`${d} declares alwaysOn, which packs may not set`);let f=Q(`${a} semantic policy ${e}`,"title",b.title,120),g=`${a} semantic policy ${e}`;if(!Array.isArray(b.appliesTo)||0===b.appliesTo.length)throw Error(`${g} has no appliesTo tool classes`);let h=b.appliesTo.find(a=>"string"!=typeof a||!J.has(a));if(void 0!==h)throw Error(`${g} applies to ${JSON.stringify(h)}, which is not a tool class (${[...J].join(", ")})`);if("deny"!==b.mode&&"instruct"!==b.mode)throw Error(`${g} has mode ${JSON.stringify(b.mode)}, which must be "deny" or "instruct"`);if("boolean"!=typeof b.userCanOverride)throw Error(`${g} is missing userCanOverride, which has no default`);if(!Array.isArray(b.probes)||0===b.probes.length)throw Error(`${g} declares no probes`);if(b.probes.length>6)throw Error(`${g} declares ${b.probes.length} probes, over the cap of 6`);let i=b.probes.map((a,b)=>R(`${g} probe #${b}`,a,null)),j=new Set;for(let a of i){if(j.has(a.id))throw Error(`${g} declares probe ${a.id} twice`);j.add(a.id)}let k=void 0===b.exempt?void 0:R(`${g} exempt`,b.exempt,"exempt");if(void 0!==b.precondition&&!A(b.precondition))throw Error(`${g} names precondition ${JSON.stringify(b.precondition)}, which this build does not have (${z.join(", ")})`);let l=Q(g,"guidance",b.guidance,600);return{name:e,title:f,appliesTo:b.appliesTo,mode:b.mode,userCanOverride:b.userCanOverride,probes:i,...k?{exempt:k}:{},...void 0!==b.precondition?{precondition:b.precondition}:{},guidance:l}}function T(a){return a instanceof Error?a.message:String(a)}function U(a){return/^github:FailproofAI\//i.test(a.source??"")}function V(a,b){return h.has(b)&&!U(a)}a.s(["P",0,24,"r",0,F,"T",0,P,"Q",0,function(){try{let a=JSON.parse((0,c.readFileSync)(M(),"utf8"));if(!Array.isArray(a.packs))return!1;return a.packs.some(a=>!!a&&"object"==typeof a&&Array.isArray(a.policies)&&a.policies.length>0)}catch{return!1}},"E",0,function(a){return a.semantic??[]},"N",0,K,"$",0,L,"Z",0,O,"U",0,S,"V",0,function(){let a,d=M();if(!(0,c.existsSync)(d))return{packs:[],errors:[]};try{a=JSON.parse((0,c.readFileSync)(d,"utf8"))}catch(a){return{packs:[],errors:[{id:null,reason:`unreadable pack manifest: ${T(a)}`}]}}if(!a||"object"!=typeof a)return{packs:[],errors:[{id:null,reason:"pack manifest is not an object"}]};let e=a;if(!B.includes(e.schemaVersion))return{packs:[],errors:[{id:null,reason:`unsupported pack manifest schema ${String(e.schemaVersion)} (supported: ${B.join(", ")})`}]};if(!Array.isArray(e.packs))return{packs:[],errors:[{id:null,reason:"pack manifest packs is not an array"}]};let f=K(),g=[],h=[],i=[],j=new Set;for(let a of e.packs){let d=a&&"object"==typeof a&&"string"==typeof a.id?a.id:null,e=[];try{let d=function(a,d,e){if(!d||"object"!=typeof d)throw Error("pack entry is not an object");let f=L(d);if("string"!=typeof d.source||0===d.source.length)throw Error(`pack ${d.id} has no source`);if("string"!=typeof d.sha256||!C.test(d.sha256))throw Error(`invalid SHA-256 for pack ${d.id}`);let g=f.effect,h=P(f.id,d.minCliVersion);if("too-old"===h.kind)throw Error(h.reason);"unreadable"===h.kind&&e.push(h.reason);let i=p(a,d.entry),j=(0,b.createHash)("sha256").update((0,c.readFileSync)(i)).digest("hex");if(j!==d.sha256)throw Error(`pack ${d.id} failed integrity verification: expected ${d.sha256}, got ${j}`);if(!Array.isArray(d.policies))throw Error(`pack ${d.id} policies is not an array`);let k=d.policies.map((a,b)=>O(d.id,a,b,e)),l=new Set;for(let a of k){if(l.has(a.name))throw Error(`pack ${d.id} declares ${a.name} twice`);l.add(a.name)}let m=null;if(void 0!==d.enabled){if(!Array.isArray(d.enabled)||d.enabled.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} enabled is not an array of names`);m=d.enabled.filter(a=>l.has(a))}let n=null;if(void 0!==d.clis){if(!Array.isArray(d.clis)||d.clis.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} clis is not an array of agent names`);n=d.clis}return{clis:n,id:f.id,version:f.version,source:d.source,path:i,sha256:d.sha256,effect:g,policies:k,semantic:function(a,b,c){if(void 0===b)return[];if(!Array.isArray(b))return c.push(`pack ${a} semantic is not an array, so none of it was loaded`),[];let d=[],e=new Set;for(let[f,g]of b.entries()){if(d.length>=24){c.push(`pack ${a} declares more than 24 semantic policies; the ${b.length-24} past that cap were dropped`);break}try{let b=S(a,g,f);if(e.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);e.add(b.name),d.push(b)}catch(a){c.push(T(a))}}return d}(f.id,d.semantic,e),..."satisfied"===h.kind&&h.declared?{minCliVersion:h.declared}:{},enabled:m}}(f,a,e);if(j.has(d.id))throw Error(`duplicate pack id ${d.id}`);j.add(d.id),g.push(d),i.push(...e)}catch(c){let b=a&&("observe"===a.effect||"enforce"===a.effect)?a.effect:"enforce";h.push({id:d,reason:T(c),effect:b,...Array.isArray(a?.policies)?{declared:function(a){let b=[];for(let c of a)c&&"object"==typeof c&&"string"==typeof c.name&&c.match&&"object"==typeof c.match&&b.push(c);return b}(a.policies)}:{},...Array.isArray(a?.policies)&&0===a.policies.length?{semanticOnly:!0}:{},...Array.isArray(a?.clis)&&a.clis.every(a=>"string"==typeof a)?{clis:a.clis}:{}})}}return{packs:g,errors:h,...i.length>0?{warnings:i}:{}}},"M",0,function(a){return a.exempt?[...a.probes,a.exempt]:a.probes}],9909),a.s(["v",0,function(a){let b=new Map,c=new Map;for(let d of a)for(let a of d.semantic??[]){if(V(d,a.name))continue;let e=function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(null!==b&&"object"==typeof b){let c=Object.entries(b).filter(([,a])=>void 0!==a).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)??"null"}(a),f=b.get(a.name);if(void 0===f){b.set(a.name,{form:e,ids:[d.id]});continue}f.ids.push(d.id),f.form!==e&&c.set(a.name,f.ids)}return c},"g",0,U,"B",0,V,"r",0,function(a,b){return a.filter(a=>"observe"!==a.effect&&!(b&&Array.isArray(a.clis)&&a.clis.length>0&&!a.clis.includes(b)))}],86304)},10695,a=>{var b=a.i(2157),c=a.i(50227),d=a.i(75818);let e={info:0,warn:1,error:2},f=(0,d.A)(),g=!1,h="warn",i=!1,j=f;function k(a){return!function(){if(g)return;g=!0;let a=(process.env.FAILPROOFAI_LOG_LEVEL??"").toLowerCase();("info"===a||"warn"===a||"error"===a)&&(h=a);let b=(process.env.FAILPROOFAI_HOOK_LOG_FILE??"").trim();b&&(i=!0,"1"!==b&&"true"!==b&&(j=b))}(),e[a]>=e[h]}function l(a,b){process.stderr.write(`[failproofai:hook] ${a} ${b}
|
|
1
|
+
(()=>{"use strict";module.exports=[86017,91997,a=>{let b=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],c=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a);a.s(["X",0,["PreToolUse","PostToolUse","PreInvocation","Stop"],"m",0,["user","project"],"I",0,c,"p",0,{session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},"W",0,["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],"L",0,["user","project"],"d",0,["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],"w",0,["user","project"],"s",0,["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],"Y",0,["user","project"],"D",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],"c",0,["user","project"],"n",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],"B",0,["user","project"],"Z",0,"__failproofai_hook__","i",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],"x",0,["user","project"],"y",0,["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],"M",0,["user"],"F",0,["user","project","local"],"z",0,b,"P",0,["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],"E",0,["user"],"e",0,["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],"O",0,["user","project"],"J",0,["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],"G",0,["user","project"]],91997);let d=/^agt_[0-9a-f]{16,32}$/,e=new Set(b);a.s(["f",0,function(a,b){if(null==a)return;if(b<3||!Array.isArray(a)||a.length<1||a.length>32)throw Error("invalid agentTargets in cloud-managed active manifest");let c=new Set;return a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"integration"!==a&&"instanceId"!==a)||"string"!=typeof a.integration||!e.has(a.integration)||void 0!==a.instanceId&&("string"!=typeof a.instanceId||!d.test(a.instanceId)))throw Error("invalid agentTargets in cloud-managed active manifest");let b=`${a.integration}\0${a.instanceId??""}`;if(c.has(b))throw Error("duplicate agentTargets in cloud-managed active manifest");return c.add(b),{integration:a.integration,...void 0!==a.instanceId?{instanceId:a.instanceId}:{}}})}],86017)},86304,91609,89790,68561,48630,9909,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(12072),f=a.i(75818),g=a.i(86017);a.i(10695);let h=new Set(["destructive-deletion","production-infra-change","git-history-rewrite","push-to-protected-branch","commit-on-protected-branch","secret-exposure","credential-exfiltration","remote-code-execution","privilege-escalation","database-destruction","read-outside-workspace","agent-config-tampering","system-modification","env-secrets-dump","external-destructive-action","external-data-egress"]),i=new Set,j=a=>"string"==typeof a&&a.length>0;function k(a){let b={};("hard"===a.authority||"reviewable"===a.authority)&&(b.authority=a.authority);let c=a.reviewedBy;return Array.isArray(c)&&c.length>0&&c.every(j)&&(b.reviewedBy=[...c]),b}a.s(["g",0,h,"i",0,k,"d",0,function(a,b=i,c){let d=a?.authority==="reviewable";if(!a||"hard"==(!0!==a.alwaysOn&&"reviewable"===a.authority&&Array.isArray(a.reviewedBy)&&a.reviewedBy.filter(a=>"string"==typeof a&&a.length>0).length>0?"reviewable":"hard")){var e;return d?{authority:"hard",downgraded:!0===(e=a).alwaysOn?"it is alwaysOn, and the self-protection guard is never reviewable":Array.isArray(e.reviewedBy)&&0!==e.reviewedBy.length?"reviewedBy is not a list of semantic policy names":"reviewedBy does not name any semantic policy"}:{authority:"hard"}}let f=a.reviewedBy;if(!f.every(j))return{authority:"hard",downgraded:"reviewedBy is not a list of semantic policy names"};let g=f.filter(a=>!b.has(a));return 0!==b.size||g.some(a=>c?.has(a))?g.length>0?{authority:"hard",downgraded:`reviewedBy names ${g.map(a=>(function(a,b,c){let d=JSON.stringify(a),e=c?.get(a);if(e)return`${d}, which packs ${e.join(" and ")} declare differently, so it is asked for neither`;if(b===h)return`${d}, which is not a semantic policy in this build`;let f=[...b].sort(),g=f.length>6?`${f.slice(0,6).join(", ")} and ${f.length-6} more`:f.join(", ");return`${d}, which is not among the Jev checks it is judged against (${g})`})(a,b,c)).join("; ")}`}:{authority:"reviewable",reviewedBy:[...new Set(f)]}:{authority:"hard"}}],91609);let l=[1,2,3],m=/^[a-f0-9]{64}$/,n=/^[A-Za-z0-9._-]{1,128}$/;function o(){return process.env.FAILPROOFAI_CLOUD_POLICY_DIR??(0,f.I)()}function p(a,b){if(!b||(0,d.isAbsolute)(b))throw Error(`unsafe managed policy path ${JSON.stringify(b)}`);let e=(0,d.resolve)(a,b),f=(0,d.relative)(a,e);if(f.startsWith("..")||(0,d.isAbsolute)(f))throw Error(`managed policy path escapes its root: ${JSON.stringify(b)}`);let g=(0,c.realpathSync)(a),h=(0,c.realpathSync)(e),i=(0,d.relative)(g,h);if(i.startsWith("..")||(0,d.isAbsolute)(i))throw Error(`managed policy symlink escapes its root: ${JSON.stringify(b)}`);return h}let q=null;function r(){if(function(){try{let a=JSON.parse((0,c.readFileSync)((0,f.y)(),"utf8"));if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.mode;return!!b&&"object"==typeof b&&!Array.isArray(b)&&"oss"===b.kind}catch{return!1}}()){q=null;return}let a=(0,d.resolve)(o(),"active.json"),b=function(a){try{let b=(0,c.statSync)(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.mode}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}(a);if(null===b){q=null;return}if(q&&q.path===a&&q.version===b)return q.value;let e=JSON.parse((0,c.readFileSync)(a,"utf8"));return q={path:a,version:b,value:e},e}let s=/^cloud:[^/]+\/./;function t(a,b){return"reviewable"!==a.authority?a.authority?{authority:a.authority}:{}:"observe"===a.effect||"observe"!==b&&"enforce"!==b?{authority:"hard"}:{authority:"reviewable",reviewedBy:(a.reviewedBy??[]).map(b=>{var c;return s.test(b)?b:(c=a.id,`cloud:${c}/${b}`)})}}a.s(["i",0,t,"O",0,function(a,b){let c=[];for(let d of a){let a=t(d,b);"reviewable"===a.authority&&c.push(...a.reviewedBy??[])}return c},"h",0,function(){return function(a){let d,e=o();try{d=r()}catch(a){throw Error(`failed to read cloud-managed active manifest: ${a instanceof Error?a.message:String(a)}`)}if(void 0===d)return[];let f=function(a){if(!a||"object"!=typeof a)throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)} (supported: ${l.join(", ")})`);let b=a.deployment??a.generation;if(!Number.isSafeInteger(b)||(b??-1)<0)throw Error("active manifest deployment is invalid");if(!Array.isArray(a.policies))throw Error("active manifest policies is not an array");let c=a.policies.map(a=>({...a,version:a.version??a.revision}));return{schemaVersion:a.schemaVersion,deployment:b,policies:c}}(d),h=f.policies.filter(b=>a((0,g.f)(b.agentTargets,f.schemaVersion))),i=new Set;return h.map(a=>{if(!n.test(a.id)||"."===a.id||".."===a.id)throw Error(`unsafe cloud-managed policy id ${JSON.stringify(a.id)}`);if(!Number.isSafeInteger(a.version)||a.version<0)throw Error(`invalid version for cloud-managed policy ${a.id}`);if(!m.test(a.sha256))throw Error(`invalid SHA-256 for cloud-managed policy ${a.id}`);if(i.has(a.id))throw Error(`duplicate cloud-managed policy id ${a.id}`);i.add(a.id);let d=p(e,a.path),h=(0,c.readFileSync)(d),j=(0,b.createHash)("sha256").update(h).digest("hex");if(j!==a.sha256)throw Error(`cloud-managed policy ${a.id} failed integrity verification: expected ${a.sha256}, got ${j}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for cloud-managed policy ${a.id}`);return{id:a.id,version:a.version,effect:a.effect??"enforce",sha256:a.sha256,path:d,deployment:f.deployment,...(0,g.f)(a.agentTargets,f.schemaVersion)?{agentTargets:(0,g.f)(a.agentTargets,f.schemaVersion)}:{},...k(a)}})}(()=>!0)},"D",0,function(){try{var a;return a=function(){let a=r();if(void 0===a)return null;if(!a||"object"!=typeof a||Array.isArray(a))throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)}`);return a}()?.jevMode,"off"===a||"observe"===a||"enforce"===a?a:null}catch{return null}},"t",0,p],89790);let u=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,v=/^(?:0|[1-9]\d*)$/;function w(a){if("string"!=typeof a)return null;let b=u.exec(a);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:void 0===b[4]?[]:b[4].split(".").map(a=>v.test(a)?Number(a):a)}:null}let x=(a,b)=>a<b?-1:+(a>b);function y(a,b){let c=w(a),d=w(b);return c&&d?x(c.major,d.major)||x(c.minor,d.minor)||x(c.patch,d.patch)||function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;for(let c=0;c<Math.min(a.length,b.length);c++){let d=a[c],e=b[c];if(d===e)continue;let f="number"==typeof d,g="number"==typeof e;if(f!==g)return f?-1:1;if(f&&g)return x(d,e);return d<e?-1:1}return x(a.length,b.length)}(c.prerelease,d.prerelease):null}a.s(["f",0,y],68561);let z=["always","protected_branch","in_git_repo","has_paths","paths_outside_project","system_or_root_paths"];function A(a){return"string"==typeof a&&z.includes(a)}a.s(["B",0,z,"M",0,A],48630);let B=[1],C=/^[a-f0-9]{64}$/,D=/^[A-Za-z0-9._-]{1,64}\/[A-Za-z0-9._-]{1,64}$/,E=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/,F=/^[0-9a-f]{7,40}$/,G=/^[A-Za-z0-9._-]{1,128}$/,H=/^[a-z][a-z0-9_]{0,31}$/,I=new Set(["exempt","user_asked"]),J=new Set(["shell","write","read","network","other"]);function K(){return process.env.FAILPROOFAI_PACK_DIR??(0,f.n)()}function L(a){if("string"!=typeof a.id||!D.test(a.id))throw Error(`unsafe pack id ${JSON.stringify(a.id)}`);if("string"!=typeof a.version||!E.test(a.version))throw Error(`invalid version for pack ${a.id}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for pack ${a.id}`);let b="string"==typeof a.commit&&F.test(a.commit.trim().toLowerCase())?a.commit.trim().toLowerCase():void 0;return{id:a.id,version:a.version,effect:a.effect??"enforce",...b?{commit:b}:{}}}function M(){return process.env.FAILPROOFAI_PACK_DIR?(0,d.resolve)(process.env.FAILPROOFAI_PACK_DIR,"installed.json"):(0,f.v)()}let N=new Set(["string","number","boolean","string[]","pattern[]"]);function O(a,b,c,d){let e=`${a} policy #${c}`;if(!b||"object"!=typeof b)throw Error(`${e} is not an object`);let f=b.name;if("string"!=typeof f||!G.test(f))throw Error(`${e} has an unsafe name ${JSON.stringify(f)}`);if("alwaysOn"in b)throw Error(`${e} declares alwaysOn, which packs may not set`);if("string"!=typeof b.description||0===b.description.length)throw Error(`${e} is missing a description`);if("string"!=typeof b.category||0===b.category.length)throw Error(`${e} is missing a category`);if("boolean"!=typeof b.defaultEnabled)throw Error(`${e} is missing defaultEnabled`);if(!b.match||"object"!=typeof b.match)throw Error(`${e} is missing a match`);let g=b.match;for(let a of["events","toolNames"]){let b=g[a];if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a||0===a.length)))throw Error(`${e} has a match.${a} that is not a list of names`)}let h=k(b),i=["authority","reviewedBy"].filter(a=>a in b&&!(a in h));if("params"in b){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"params is not an object";for(let[b,c]of Object.entries(a)){if(0===b.length)return"params has an empty parameter name";if(!c||"object"!=typeof c||Array.isArray(c))return`params.${b} is not an object`;if("string"!=typeof c.type||!N.has(c.type))return`params.${b} has type ${JSON.stringify(c.type)}, which is not one of ${[...N].join(", ")}`;if("string"!=typeof c.description||0===c.description.length)return`params.${b} is missing a description`;if(!("default"in c))return`params.${b} is missing a default`}}(b.params);a&&(d?.push(`${e} declares a params schema that was dropped: ${a}`),i.push("params"))}return i.length>0?Object.fromEntries(Object.entries(b).filter(([a])=>!i.includes(a))):b}function P(a,b,c=e.version){if(void 0===b)return{kind:"satisfied"};let d=y(c,b);return null===d?{kind:"unreadable",reason:`pack ${a} declares minCliVersion ${JSON.stringify(b)}, which is not a version this CLI can compare against its own (${c}) — the requirement was ignored`}:d<0?{kind:"too-old",reason:`pack ${a} needs failproofai ${String(b)} or newer and this is ${c} — run \`npm i -g "failproofai@>=${String(b)}" && failproofai update\``}:{kind:"satisfied",declared:b}}function Q(a,b,c,d){if("string"!=typeof c||0===c.length)throw Error(`${a} is missing ${b}`);if(c.length>d)throw Error(`${a} has a ${b} of ${c.length} characters, over the ${d}-character cap`);return c}function R(a,b,c){let d;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${a} is not an object`);if(null!==c)d=c;else{if("string"!=typeof b.id||!H.test(b.id))throw Error(`${a} has an unsafe id ${JSON.stringify(b.id)}`);if(I.has(b.id))throw Error(`${a} uses the reserved probe id ${JSON.stringify(b.id)}`);d=b.id}let e=Q(a,"instructions",b.instructions,600);if(void 0===b.criteria)return{id:d,instructions:e};if(!b.criteria||"object"!=typeof b.criteria||Array.isArray(b.criteria))throw Error(`${a} has criteria that is not an object`);let f=b.criteria;return{id:d,instructions:e,criteria:{true:Q(a,"criteria.true",f.true,300),false:Q(a,"criteria.false",f.false,300)}}}function S(a,b,c){let d=`${a} semantic policy #${c}`;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${d} is not an object`);let e=b.name;if("string"!=typeof e||!G.test(e))throw Error(`${d} has an unsafe name ${JSON.stringify(e)}`);if("alwaysOn"in b)throw Error(`${d} declares alwaysOn, which packs may not set`);let f=Q(`${a} semantic policy ${e}`,"title",b.title,120),g=`${a} semantic policy ${e}`;if(!Array.isArray(b.appliesTo)||0===b.appliesTo.length)throw Error(`${g} has no appliesTo tool classes`);let h=b.appliesTo.find(a=>"string"!=typeof a||!J.has(a));if(void 0!==h)throw Error(`${g} applies to ${JSON.stringify(h)}, which is not a tool class (${[...J].join(", ")})`);if("deny"!==b.mode&&"instruct"!==b.mode)throw Error(`${g} has mode ${JSON.stringify(b.mode)}, which must be "deny" or "instruct"`);if("boolean"!=typeof b.userCanOverride)throw Error(`${g} is missing userCanOverride, which has no default`);if(!Array.isArray(b.probes)||0===b.probes.length)throw Error(`${g} declares no probes`);if(b.probes.length>6)throw Error(`${g} declares ${b.probes.length} probes, over the cap of 6`);let i=b.probes.map((a,b)=>R(`${g} probe #${b}`,a,null)),j=new Set;for(let a of i){if(j.has(a.id))throw Error(`${g} declares probe ${a.id} twice`);j.add(a.id)}let k=void 0===b.exempt?void 0:R(`${g} exempt`,b.exempt,"exempt");if(void 0!==b.precondition&&!A(b.precondition))throw Error(`${g} names precondition ${JSON.stringify(b.precondition)}, which this build does not have (${z.join(", ")})`);let l=Q(g,"guidance",b.guidance,600);return{name:e,title:f,appliesTo:b.appliesTo,mode:b.mode,userCanOverride:b.userCanOverride,probes:i,...k?{exempt:k}:{},...void 0!==b.precondition?{precondition:b.precondition}:{},guidance:l}}function T(a){return a instanceof Error?a.message:String(a)}function U(a){return/^github:FailproofAI\//i.test(a.source??"")}function V(a,b){return h.has(b)&&!U(a)}a.s(["P",0,24,"r",0,F,"T",0,P,"Q",0,function(){try{let a=JSON.parse((0,c.readFileSync)(M(),"utf8"));if(!Array.isArray(a.packs))return!1;return a.packs.some(a=>!!a&&"object"==typeof a&&Array.isArray(a.policies)&&a.policies.length>0)}catch{return!1}},"E",0,function(a){return a.semantic??[]},"N",0,K,"$",0,L,"Z",0,O,"U",0,S,"V",0,function(){let a,d=M();if(!(0,c.existsSync)(d))return{packs:[],errors:[]};try{a=JSON.parse((0,c.readFileSync)(d,"utf8"))}catch(a){return{packs:[],errors:[{id:null,reason:`unreadable pack manifest: ${T(a)}`}]}}if(!a||"object"!=typeof a)return{packs:[],errors:[{id:null,reason:"pack manifest is not an object"}]};let e=a;if(!B.includes(e.schemaVersion))return{packs:[],errors:[{id:null,reason:`unsupported pack manifest schema ${String(e.schemaVersion)} (supported: ${B.join(", ")})`}]};if(!Array.isArray(e.packs))return{packs:[],errors:[{id:null,reason:"pack manifest packs is not an array"}]};let f=K(),g=[],h=[],i=[],j=new Set;for(let a of e.packs){let d=a&&"object"==typeof a&&"string"==typeof a.id?a.id:null,e=[];try{let d=function(a,d,e){if(!d||"object"!=typeof d)throw Error("pack entry is not an object");let f=L(d);if("string"!=typeof d.source||0===d.source.length)throw Error(`pack ${d.id} has no source`);if("string"!=typeof d.sha256||!C.test(d.sha256))throw Error(`invalid SHA-256 for pack ${d.id}`);let g=f.effect,h=P(f.id,d.minCliVersion);if("too-old"===h.kind)throw Error(h.reason);"unreadable"===h.kind&&e.push(h.reason);let i=p(a,d.entry),j=(0,b.createHash)("sha256").update((0,c.readFileSync)(i)).digest("hex");if(j!==d.sha256)throw Error(`pack ${d.id} failed integrity verification: expected ${d.sha256}, got ${j}`);if(!Array.isArray(d.policies))throw Error(`pack ${d.id} policies is not an array`);let k=d.policies.map((a,b)=>O(d.id,a,b,e)),l=new Set;for(let a of k){if(l.has(a.name))throw Error(`pack ${d.id} declares ${a.name} twice`);l.add(a.name)}let m=null;if(void 0!==d.enabled){if(!Array.isArray(d.enabled)||d.enabled.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} enabled is not an array of names`);m=d.enabled.filter(a=>l.has(a))}let n=null;if(void 0!==d.clis){if(!Array.isArray(d.clis)||d.clis.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} clis is not an array of agent names`);n=d.clis}return{clis:n,id:f.id,version:f.version,source:d.source,path:i,sha256:d.sha256,effect:g,policies:k,semantic:function(a,b,c){if(void 0===b)return[];if(!Array.isArray(b))return c.push(`pack ${a} semantic is not an array, so none of it was loaded`),[];let d=[],e=new Set;for(let[f,g]of b.entries()){if(d.length>=24){c.push(`pack ${a} declares more than 24 semantic policies; the ${b.length-24} past that cap were dropped`);break}try{let b=S(a,g,f);if(e.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);e.add(b.name),d.push(b)}catch(a){c.push(T(a))}}return d}(f.id,d.semantic,e),..."satisfied"===h.kind&&h.declared?{minCliVersion:h.declared}:{},enabled:m}}(f,a,e);if(j.has(d.id))throw Error(`duplicate pack id ${d.id}`);j.add(d.id),g.push(d),i.push(...e)}catch(c){let b=a&&("observe"===a.effect||"enforce"===a.effect)?a.effect:"enforce";h.push({id:d,reason:T(c),effect:b,...Array.isArray(a?.policies)?{declared:function(a){let b=[];for(let c of a)c&&"object"==typeof c&&"string"==typeof c.name&&c.match&&"object"==typeof c.match&&b.push(c);return b}(a.policies)}:{},...Array.isArray(a?.policies)&&0===a.policies.length?{semanticOnly:!0}:{},...Array.isArray(a?.clis)&&a.clis.every(a=>"string"==typeof a)?{clis:a.clis}:{}})}}return{packs:g,errors:h,...i.length>0?{warnings:i}:{}}},"M",0,function(a){return a.exempt?[...a.probes,a.exempt]:a.probes}],9909),a.s(["v",0,function(a){let b=new Map,c=new Map;for(let d of a)for(let a of d.semantic??[]){if(V(d,a.name))continue;let e=function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(null!==b&&"object"==typeof b){let c=Object.entries(b).filter(([,a])=>void 0!==a).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)??"null"}(a),f=b.get(a.name);if(void 0===f){b.set(a.name,{form:e,ids:[d.id]});continue}f.ids.push(d.id),f.form!==e&&c.set(a.name,f.ids)}return c},"g",0,U,"B",0,V,"r",0,function(a,b){return a.filter(a=>"observe"!==a.effect&&!(b&&Array.isArray(a.clis)&&a.clis.length>0&&!a.clis.includes(b)))}],86304)},10695,a=>{var b=a.i(2157),c=a.i(50227),d=a.i(75818);let e={info:0,warn:1,error:2},f=(0,d.A)(),g=!1,h="warn",i=!1,j=f;function k(a){return!function(){if(g)return;g=!0;let a=(process.env.FAILPROOFAI_LOG_LEVEL??"").toLowerCase();("info"===a||"warn"===a||"error"===a)&&(h=a);let b=(process.env.FAILPROOFAI_HOOK_LOG_FILE??"").trim();b&&(i=!0,"1"!==b&&"true"!==b&&(j=b))}(),e[a]>=e[h]}function l(a,b){process.stderr.write(`[failproofai:hook] ${a} ${b}
|
|
2
2
|
`)}function m(a,d){if(i)try{(0,b.existsSync)(j)||(0,b.mkdirSync)(j,{recursive:!0});let e=(0,c.join)(j,"hooks.log");try{if((0,b.statSync)(e).size>=524288){let a=`hooks-${Date.now()}.log`;(0,b.renameSync)(e,(0,c.join)(j,a))}}catch{}let f=new Date().toISOString(),g=`[${f}] ${a} ${d}
|
|
3
3
|
`;(0,b.appendFileSync)(e,g,"utf-8")}catch{}}a.s(["F",0,function(a){k("error")&&(l("ERROR",a),m("ERROR",a))},"g",0,function(a){k("warn")&&(l("WARN",a),m("WARN",a))}])}]})();
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[86017,91997,a=>{let b=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],c=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a);a.s(["X",0,["PreToolUse","PostToolUse","PreInvocation","Stop"],"m",0,["user","project"],"I",0,c,"p",0,{session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},"W",0,["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],"L",0,["user","project"],"d",0,["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],"w",0,["user","project"],"s",0,["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],"Y",0,["user","project"],"D",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],"c",0,["user","project"],"n",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],"B",0,["user","project"],"Z",0,"__failproofai_hook__","i",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],"x",0,["user","project"],"y",0,["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],"M",0,["user"],"F",0,["user","project","local"],"z",0,b,"P",0,["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],"E",0,["user"],"e",0,["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],"O",0,["user","project"],"J",0,["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],"G",0,["user","project"]],91997);let d=/^agt_[0-9a-f]{16,32}$/,e=new Set(b);a.s(["i",0,function(a,b){return void 0===a||!!(!(!b||"object"!=typeof b||Array.isArray(b))&&Object.keys(b).every(a=>"integration"===a||"instanceId"===a)&&"string"==typeof b.integration&&e.has(b.integration)&&"string"==typeof b.instanceId&&d.test(b.instanceId))&&a.some(a=>a.integration===b.integration&&(void 0===a.instanceId||a.instanceId===b.instanceId))},"P",0,function(a,b){if(null==a)return;if(b<3||!Array.isArray(a)||a.length<1||a.length>32)throw Error("invalid agentTargets in cloud-managed active manifest");let c=new Set;return a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"integration"!==a&&"instanceId"!==a)||"string"!=typeof a.integration||!e.has(a.integration)||void 0!==a.instanceId&&("string"!=typeof a.instanceId||!d.test(a.instanceId)))throw Error("invalid agentTargets in cloud-managed active manifest");let b=`${a.integration}\0${a.instanceId??""}`;if(c.has(b))throw Error("duplicate agentTargets in cloud-managed active manifest");return c.add(b),{integration:a.integration,...void 0!==a.instanceId?{instanceId:a.instanceId}:{}}})}],86017)},86304,91609,89790,68561,48630,9909,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(12072),f=a.i(75818),g=a.i(86017);a.i(10695);let h=new Set(["destructive-deletion","production-infra-change","git-history-rewrite","push-to-protected-branch","commit-on-protected-branch","secret-exposure","credential-exfiltration","remote-code-execution","privilege-escalation","database-destruction","read-outside-workspace","agent-config-tampering","system-modification","env-secrets-dump","external-destructive-action","external-data-egress"]),i=new Set,j=a=>"string"==typeof a&&a.length>0;function k(a){let b={};("hard"===a.authority||"reviewable"===a.authority)&&(b.authority=a.authority);let c=a.reviewedBy;return Array.isArray(c)&&c.length>0&&c.every(j)&&(b.reviewedBy=[...c]),b}a.s(["g",0,h,"i",0,k,"d",0,function(a,b=i,c){let d=a?.authority==="reviewable";if(!a||"hard"==(!0!==a.alwaysOn&&"reviewable"===a.authority&&Array.isArray(a.reviewedBy)&&a.reviewedBy.filter(a=>"string"==typeof a&&a.length>0).length>0?"reviewable":"hard")){var e;return d?{authority:"hard",downgraded:!0===(e=a).alwaysOn?"it is alwaysOn, and the self-protection guard is never reviewable":Array.isArray(e.reviewedBy)&&0!==e.reviewedBy.length?"reviewedBy is not a list of semantic policy names":"reviewedBy does not name any semantic policy"}:{authority:"hard"}}let f=a.reviewedBy;if(!f.every(j))return{authority:"hard",downgraded:"reviewedBy is not a list of semantic policy names"};let g=f.filter(a=>!b.has(a));return 0!==b.size||g.some(a=>c?.has(a))?g.length>0?{authority:"hard",downgraded:`reviewedBy names ${g.map(a=>(function(a,b,c){let d=JSON.stringify(a),e=c?.get(a);if(e)return`${d}, which packs ${e.join(" and ")} declare differently, so it is asked for neither`;if(b===h)return`${d}, which is not a semantic policy in this build`;let f=[...b].sort(),g=f.length>6?`${f.slice(0,6).join(", ")} and ${f.length-6} more`:f.join(", ");return`${d}, which is not among the Jev checks it is judged against (${g})`})(a,b,c)).join("; ")}`}:{authority:"reviewable",reviewedBy:[...new Set(f)]}:{authority:"hard"}}],91609);let l=[1,2,3],m=/^[a-f0-9]{64}$/,n=/^[A-Za-z0-9._-]{1,128}$/;function o(){return process.env.FAILPROOFAI_CLOUD_POLICY_DIR??(0,f.I)()}function p(a,b){if(!b||(0,d.isAbsolute)(b))throw Error(`unsafe managed policy path ${JSON.stringify(b)}`);let e=(0,d.resolve)(a,b),f=(0,d.relative)(a,e);if(f.startsWith("..")||(0,d.isAbsolute)(f))throw Error(`managed policy path escapes its root: ${JSON.stringify(b)}`);let g=(0,c.realpathSync)(a),h=(0,c.realpathSync)(e),i=(0,d.relative)(g,h);if(i.startsWith("..")||(0,d.isAbsolute)(i))throw Error(`managed policy symlink escapes its root: ${JSON.stringify(b)}`);return h}let q=null;function r(){if(function(){try{let a=JSON.parse((0,c.readFileSync)((0,f.y)(),"utf8"));if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.mode;return!!b&&"object"==typeof b&&!Array.isArray(b)&&"oss"===b.kind}catch{return!1}}()){q=null;return}let a=(0,d.resolve)(o(),"active.json"),b=function(a){try{let b=(0,c.statSync)(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.mode}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}(a);if(null===b){q=null;return}if(q&&q.path===a&&q.version===b)return q.value;let e=JSON.parse((0,c.readFileSync)(a,"utf8"));return q={path:a,version:b,value:e},e}let s=/^cloud:[^/]+\/./;function t(a,b){return"reviewable"!==a.authority?a.authority?{authority:a.authority}:{}:"observe"===a.effect||"observe"!==b&&"enforce"!==b?{authority:"hard"}:{authority:"reviewable",reviewedBy:(a.reviewedBy??[]).map(b=>{var c;return s.test(b)?b:(c=a.id,`cloud:${c}/${b}`)})}}a.s(["i",0,t,"O",0,function(a,b){let c=[];for(let d of a){let a=t(d,b);"reviewable"===a.authority&&c.push(...a.reviewedBy??[])}return c},"m",0,function(a=null){return function(a){let d,e=o();try{d=r()}catch(a){throw Error(`failed to read cloud-managed active manifest: ${a instanceof Error?a.message:String(a)}`)}if(void 0===d)return[];let f=function(a){if(!a||"object"!=typeof a)throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)} (supported: ${l.join(", ")})`);let b=a.deployment??a.generation;if(!Number.isSafeInteger(b)||(b??-1)<0)throw Error("active manifest deployment is invalid");if(!Array.isArray(a.policies))throw Error("active manifest policies is not an array");let c=a.policies.map(a=>({...a,version:a.version??a.revision}));return{schemaVersion:a.schemaVersion,deployment:b,policies:c}}(d),h=f.policies.filter(b=>a((0,g.P)(b.agentTargets,f.schemaVersion))),i=new Set;return h.map(a=>{if(!n.test(a.id)||"."===a.id||".."===a.id)throw Error(`unsafe cloud-managed policy id ${JSON.stringify(a.id)}`);if(!Number.isSafeInteger(a.version)||a.version<0)throw Error(`invalid version for cloud-managed policy ${a.id}`);if(!m.test(a.sha256))throw Error(`invalid SHA-256 for cloud-managed policy ${a.id}`);if(i.has(a.id))throw Error(`duplicate cloud-managed policy id ${a.id}`);i.add(a.id);let d=p(e,a.path),h=(0,c.readFileSync)(d),j=(0,b.createHash)("sha256").update(h).digest("hex");if(j!==a.sha256)throw Error(`cloud-managed policy ${a.id} failed integrity verification: expected ${a.sha256}, got ${j}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for cloud-managed policy ${a.id}`);return{id:a.id,version:a.version,effect:a.effect??"enforce",sha256:a.sha256,path:d,deployment:f.deployment,...(0,g.P)(a.agentTargets,f.schemaVersion)?{agentTargets:(0,g.P)(a.agentTargets,f.schemaVersion)}:{},...k(a)}})}(b=>(0,g.i)(b,a))},"D",0,function(){try{var a;return a=function(){let a=r();if(void 0===a)return null;if(!a||"object"!=typeof a||Array.isArray(a))throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)}`);return a}()?.jevMode,"off"===a||"observe"===a||"enforce"===a?a:null}catch{return null}},"t",0,p],89790);let u=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,v=/^(?:0|[1-9]\d*)$/;function w(a){if("string"!=typeof a)return null;let b=u.exec(a);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:void 0===b[4]?[]:b[4].split(".").map(a=>v.test(a)?Number(a):a)}:null}let x=(a,b)=>a<b?-1:+(a>b);function y(a,b){let c=w(a),d=w(b);return c&&d?x(c.major,d.major)||x(c.minor,d.minor)||x(c.patch,d.patch)||function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;for(let c=0;c<Math.min(a.length,b.length);c++){let d=a[c],e=b[c];if(d===e)continue;let f="number"==typeof d,g="number"==typeof e;if(f!==g)return f?-1:1;if(f&&g)return x(d,e);return d<e?-1:1}return x(a.length,b.length)}(c.prerelease,d.prerelease):null}a.s(["f",0,y],68561);let z=["always","protected_branch","in_git_repo","has_paths","paths_outside_project","system_or_root_paths"];function A(a){return"string"==typeof a&&z.includes(a)}a.s(["B",0,z,"M",0,A],48630);let B=[1],C=/^[a-f0-9]{64}$/,D=/^[A-Za-z0-9._-]{1,64}\/[A-Za-z0-9._-]{1,64}$/,E=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/,F=/^[0-9a-f]{7,40}$/,G=/^[A-Za-z0-9._-]{1,128}$/,H=/^[a-z][a-z0-9_]{0,31}$/,I=new Set(["exempt","user_asked"]),J=new Set(["shell","write","read","network","other"]);function K(){return process.env.FAILPROOFAI_PACK_DIR??(0,f.n)()}function L(a){if("string"!=typeof a.id||!D.test(a.id))throw Error(`unsafe pack id ${JSON.stringify(a.id)}`);if("string"!=typeof a.version||!E.test(a.version))throw Error(`invalid version for pack ${a.id}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for pack ${a.id}`);let b="string"==typeof a.commit&&F.test(a.commit.trim().toLowerCase())?a.commit.trim().toLowerCase():void 0;return{id:a.id,version:a.version,effect:a.effect??"enforce",...b?{commit:b}:{}}}function M(){return process.env.FAILPROOFAI_PACK_DIR?(0,d.resolve)(process.env.FAILPROOFAI_PACK_DIR,"installed.json"):(0,f.v)()}let N=new Set(["string","number","boolean","string[]","pattern[]"]);function O(a,b,c,d){let e=`${a} policy #${c}`;if(!b||"object"!=typeof b)throw Error(`${e} is not an object`);let f=b.name;if("string"!=typeof f||!G.test(f))throw Error(`${e} has an unsafe name ${JSON.stringify(f)}`);if("alwaysOn"in b)throw Error(`${e} declares alwaysOn, which packs may not set`);if("string"!=typeof b.description||0===b.description.length)throw Error(`${e} is missing a description`);if("string"!=typeof b.category||0===b.category.length)throw Error(`${e} is missing a category`);if("boolean"!=typeof b.defaultEnabled)throw Error(`${e} is missing defaultEnabled`);if(!b.match||"object"!=typeof b.match)throw Error(`${e} is missing a match`);let g=b.match;for(let a of["events","toolNames"]){let b=g[a];if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a||0===a.length)))throw Error(`${e} has a match.${a} that is not a list of names`)}let h=k(b),i=["authority","reviewedBy"].filter(a=>a in b&&!(a in h));if("params"in b){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"params is not an object";for(let[b,c]of Object.entries(a)){if(0===b.length)return"params has an empty parameter name";if(!c||"object"!=typeof c||Array.isArray(c))return`params.${b} is not an object`;if("string"!=typeof c.type||!N.has(c.type))return`params.${b} has type ${JSON.stringify(c.type)}, which is not one of ${[...N].join(", ")}`;if("string"!=typeof c.description||0===c.description.length)return`params.${b} is missing a description`;if(!("default"in c))return`params.${b} is missing a default`}}(b.params);a&&(d?.push(`${e} declares a params schema that was dropped: ${a}`),i.push("params"))}return i.length>0?Object.fromEntries(Object.entries(b).filter(([a])=>!i.includes(a))):b}function P(a,b,c=e.version){if(void 0===b)return{kind:"satisfied"};let d=y(c,b);return null===d?{kind:"unreadable",reason:`pack ${a} declares minCliVersion ${JSON.stringify(b)}, which is not a version this CLI can compare against its own (${c}) — the requirement was ignored`}:d<0?{kind:"too-old",reason:`pack ${a} needs failproofai ${String(b)} or newer and this is ${c} — run \`npm i -g "failproofai@>=${String(b)}" && failproofai update\``}:{kind:"satisfied",declared:b}}function Q(a,b,c,d){if("string"!=typeof c||0===c.length)throw Error(`${a} is missing ${b}`);if(c.length>d)throw Error(`${a} has a ${b} of ${c.length} characters, over the ${d}-character cap`);return c}function R(a,b,c){let d;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${a} is not an object`);if(null!==c)d=c;else{if("string"!=typeof b.id||!H.test(b.id))throw Error(`${a} has an unsafe id ${JSON.stringify(b.id)}`);if(I.has(b.id))throw Error(`${a} uses the reserved probe id ${JSON.stringify(b.id)}`);d=b.id}let e=Q(a,"instructions",b.instructions,600);if(void 0===b.criteria)return{id:d,instructions:e};if(!b.criteria||"object"!=typeof b.criteria||Array.isArray(b.criteria))throw Error(`${a} has criteria that is not an object`);let f=b.criteria;return{id:d,instructions:e,criteria:{true:Q(a,"criteria.true",f.true,300),false:Q(a,"criteria.false",f.false,300)}}}function S(a,b,c){let d=`${a} semantic policy #${c}`;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${d} is not an object`);let e=b.name;if("string"!=typeof e||!G.test(e))throw Error(`${d} has an unsafe name ${JSON.stringify(e)}`);if("alwaysOn"in b)throw Error(`${d} declares alwaysOn, which packs may not set`);let f=Q(`${a} semantic policy ${e}`,"title",b.title,120),g=`${a} semantic policy ${e}`;if(!Array.isArray(b.appliesTo)||0===b.appliesTo.length)throw Error(`${g} has no appliesTo tool classes`);let h=b.appliesTo.find(a=>"string"!=typeof a||!J.has(a));if(void 0!==h)throw Error(`${g} applies to ${JSON.stringify(h)}, which is not a tool class (${[...J].join(", ")})`);if("deny"!==b.mode&&"instruct"!==b.mode)throw Error(`${g} has mode ${JSON.stringify(b.mode)}, which must be "deny" or "instruct"`);if("boolean"!=typeof b.userCanOverride)throw Error(`${g} is missing userCanOverride, which has no default`);if(!Array.isArray(b.probes)||0===b.probes.length)throw Error(`${g} declares no probes`);if(b.probes.length>6)throw Error(`${g} declares ${b.probes.length} probes, over the cap of 6`);let i=b.probes.map((a,b)=>R(`${g} probe #${b}`,a,null)),j=new Set;for(let a of i){if(j.has(a.id))throw Error(`${g} declares probe ${a.id} twice`);j.add(a.id)}let k=void 0===b.exempt?void 0:R(`${g} exempt`,b.exempt,"exempt");if(void 0!==b.precondition&&!A(b.precondition))throw Error(`${g} names precondition ${JSON.stringify(b.precondition)}, which this build does not have (${z.join(", ")})`);let l=Q(g,"guidance",b.guidance,600);return{name:e,title:f,appliesTo:b.appliesTo,mode:b.mode,userCanOverride:b.userCanOverride,probes:i,...k?{exempt:k}:{},...void 0!==b.precondition?{precondition:b.precondition}:{},guidance:l}}function T(a){return a instanceof Error?a.message:String(a)}function U(a){return/^github:FailproofAI\//i.test(a.source??"")}function V(a,b){return h.has(b)&&!U(a)}a.s(["P",0,24,"r",0,F,"T",0,P,"Q",0,function(){try{let a=JSON.parse((0,c.readFileSync)(M(),"utf8"));if(!Array.isArray(a.packs))return!1;return a.packs.some(a=>!!a&&"object"==typeof a&&Array.isArray(a.policies)&&a.policies.length>0)}catch{return!1}},"E",0,function(a){return a.semantic??[]},"N",0,K,"$",0,L,"Z",0,O,"U",0,S,"V",0,function(){let a,d=M();if(!(0,c.existsSync)(d))return{packs:[],errors:[]};try{a=JSON.parse((0,c.readFileSync)(d,"utf8"))}catch(a){return{packs:[],errors:[{id:null,reason:`unreadable pack manifest: ${T(a)}`}]}}if(!a||"object"!=typeof a)return{packs:[],errors:[{id:null,reason:"pack manifest is not an object"}]};let e=a;if(!B.includes(e.schemaVersion))return{packs:[],errors:[{id:null,reason:`unsupported pack manifest schema ${String(e.schemaVersion)} (supported: ${B.join(", ")})`}]};if(!Array.isArray(e.packs))return{packs:[],errors:[{id:null,reason:"pack manifest packs is not an array"}]};let f=K(),g=[],h=[],i=[],j=new Set;for(let a of e.packs){let d=a&&"object"==typeof a&&"string"==typeof a.id?a.id:null,e=[];try{let d=function(a,d,e){if(!d||"object"!=typeof d)throw Error("pack entry is not an object");let f=L(d);if("string"!=typeof d.source||0===d.source.length)throw Error(`pack ${d.id} has no source`);if("string"!=typeof d.sha256||!C.test(d.sha256))throw Error(`invalid SHA-256 for pack ${d.id}`);let g=f.effect,h=P(f.id,d.minCliVersion);if("too-old"===h.kind)throw Error(h.reason);"unreadable"===h.kind&&e.push(h.reason);let i=p(a,d.entry),j=(0,b.createHash)("sha256").update((0,c.readFileSync)(i)).digest("hex");if(j!==d.sha256)throw Error(`pack ${d.id} failed integrity verification: expected ${d.sha256}, got ${j}`);if(!Array.isArray(d.policies))throw Error(`pack ${d.id} policies is not an array`);let k=d.policies.map((a,b)=>O(d.id,a,b,e)),l=new Set;for(let a of k){if(l.has(a.name))throw Error(`pack ${d.id} declares ${a.name} twice`);l.add(a.name)}let m=null;if(void 0!==d.enabled){if(!Array.isArray(d.enabled)||d.enabled.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} enabled is not an array of names`);m=d.enabled.filter(a=>l.has(a))}let n=null;if(void 0!==d.clis){if(!Array.isArray(d.clis)||d.clis.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} clis is not an array of agent names`);n=d.clis}return{clis:n,id:f.id,version:f.version,source:d.source,path:i,sha256:d.sha256,effect:g,policies:k,semantic:function(a,b,c){if(void 0===b)return[];if(!Array.isArray(b))return c.push(`pack ${a} semantic is not an array, so none of it was loaded`),[];let d=[],e=new Set;for(let[f,g]of b.entries()){if(d.length>=24){c.push(`pack ${a} declares more than 24 semantic policies; the ${b.length-24} past that cap were dropped`);break}try{let b=S(a,g,f);if(e.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);e.add(b.name),d.push(b)}catch(a){c.push(T(a))}}return d}(f.id,d.semantic,e),..."satisfied"===h.kind&&h.declared?{minCliVersion:h.declared}:{},enabled:m}}(f,a,e);if(j.has(d.id))throw Error(`duplicate pack id ${d.id}`);j.add(d.id),g.push(d),i.push(...e)}catch(c){let b=a&&("observe"===a.effect||"enforce"===a.effect)?a.effect:"enforce";h.push({id:d,reason:T(c),effect:b,...Array.isArray(a?.policies)?{declared:function(a){let b=[];for(let c of a)c&&"object"==typeof c&&"string"==typeof c.name&&c.match&&"object"==typeof c.match&&b.push(c);return b}(a.policies)}:{},...Array.isArray(a?.policies)&&0===a.policies.length?{semanticOnly:!0}:{},...Array.isArray(a?.clis)&&a.clis.every(a=>"string"==typeof a)?{clis:a.clis}:{}})}}return{packs:g,errors:h,...i.length>0?{warnings:i}:{}}},"M",0,function(a){return a.exempt?[...a.probes,a.exempt]:a.probes}],9909),a.s(["v",0,function(a){let b=new Map,c=new Map;for(let d of a)for(let a of d.semantic??[]){if(V(d,a.name))continue;let e=function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(null!==b&&"object"==typeof b){let c=Object.entries(b).filter(([,a])=>void 0!==a).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)??"null"}(a),f=b.get(a.name);if(void 0===f){b.set(a.name,{form:e,ids:[d.id]});continue}f.ids.push(d.id),f.form!==e&&c.set(a.name,f.ids)}return c},"g",0,U,"B",0,V,"r",0,function(a,b){return a.filter(a=>"observe"!==a.effect&&!(b&&Array.isArray(a.clis)&&a.clis.length>0&&!a.clis.includes(b)))}],86304)},10695,a=>{var b=a.i(2157),c=a.i(50227),d=a.i(75818);let e={info:0,warn:1,error:2},f=(0,d.A)(),g=!1,h="warn",i=!1,j=f;function k(a){return!function(){if(g)return;g=!0;let a=(process.env.FAILPROOFAI_LOG_LEVEL??"").toLowerCase();("info"===a||"warn"===a||"error"===a)&&(h=a);let b=(process.env.FAILPROOFAI_HOOK_LOG_FILE??"").trim();b&&(i=!0,"1"!==b&&"true"!==b&&(j=b))}(),e[a]>=e[h]}function l(a,b){process.stderr.write(`[failproofai:hook] ${a} ${b}
|
|
1
|
+
(()=>{"use strict";module.exports=[86017,91997,a=>{let b=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],c=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a);a.s(["X",0,["PreToolUse","PostToolUse","PreInvocation","Stop"],"m",0,["user","project"],"I",0,c,"p",0,{session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},"W",0,["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],"L",0,["user","project"],"d",0,["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],"w",0,["user","project"],"s",0,["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],"Y",0,["user","project"],"D",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],"c",0,["user","project"],"n",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],"B",0,["user","project"],"Z",0,"__failproofai_hook__","i",0,["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],"x",0,["user","project"],"y",0,["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],"M",0,["user"],"F",0,["user","project","local"],"z",0,b,"P",0,["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],"E",0,["user"],"e",0,["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],"O",0,["user","project"],"J",0,["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],"G",0,["user","project"]],91997);let d=/^agt_[0-9a-f]{16,32}$/,e=new Set(b);a.s(["f",0,function(a,b){if(null==a)return;if(b<3||!Array.isArray(a)||a.length<1||a.length>32)throw Error("invalid agentTargets in cloud-managed active manifest");let c=new Set;return a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"integration"!==a&&"instanceId"!==a)||"string"!=typeof a.integration||!e.has(a.integration)||void 0!==a.instanceId&&("string"!=typeof a.instanceId||!d.test(a.instanceId)))throw Error("invalid agentTargets in cloud-managed active manifest");let b=`${a.integration}\0${a.instanceId??""}`;if(c.has(b))throw Error("duplicate agentTargets in cloud-managed active manifest");return c.add(b),{integration:a.integration,...void 0!==a.instanceId?{instanceId:a.instanceId}:{}}})}],86017)},86304,91609,89790,68561,48630,9909,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(12072),f=a.i(75818),g=a.i(86017);a.i(10695);let h=new Set(["destructive-deletion","production-infra-change","git-history-rewrite","push-to-protected-branch","commit-on-protected-branch","secret-exposure","credential-exfiltration","remote-code-execution","privilege-escalation","database-destruction","read-outside-workspace","agent-config-tampering","system-modification","env-secrets-dump","external-destructive-action","external-data-egress"]),i=new Set,j=a=>"string"==typeof a&&a.length>0;function k(a){let b={};("hard"===a.authority||"reviewable"===a.authority)&&(b.authority=a.authority);let c=a.reviewedBy;return Array.isArray(c)&&c.length>0&&c.every(j)&&(b.reviewedBy=[...c]),b}a.s(["g",0,h,"i",0,k,"d",0,function(a,b=i,c){let d=a?.authority==="reviewable";if(!a||"hard"==(!0!==a.alwaysOn&&"reviewable"===a.authority&&Array.isArray(a.reviewedBy)&&a.reviewedBy.filter(a=>"string"==typeof a&&a.length>0).length>0?"reviewable":"hard")){var e;return d?{authority:"hard",downgraded:!0===(e=a).alwaysOn?"it is alwaysOn, and the self-protection guard is never reviewable":Array.isArray(e.reviewedBy)&&0!==e.reviewedBy.length?"reviewedBy is not a list of semantic policy names":"reviewedBy does not name any semantic policy"}:{authority:"hard"}}let f=a.reviewedBy;if(!f.every(j))return{authority:"hard",downgraded:"reviewedBy is not a list of semantic policy names"};let g=f.filter(a=>!b.has(a));return 0!==b.size||g.some(a=>c?.has(a))?g.length>0?{authority:"hard",downgraded:`reviewedBy names ${g.map(a=>(function(a,b,c){let d=JSON.stringify(a),e=c?.get(a);if(e)return`${d}, which packs ${e.join(" and ")} declare differently, so it is asked for neither`;if(b===h)return`${d}, which is not a semantic policy in this build`;let f=[...b].sort(),g=f.length>6?`${f.slice(0,6).join(", ")} and ${f.length-6} more`:f.join(", ");return`${d}, which is not among the Jev checks it is judged against (${g})`})(a,b,c)).join("; ")}`}:{authority:"reviewable",reviewedBy:[...new Set(f)]}:{authority:"hard"}}],91609);let l=[1,2,3],m=/^[a-f0-9]{64}$/,n=/^[A-Za-z0-9._-]{1,128}$/;function o(){return process.env.FAILPROOFAI_CLOUD_POLICY_DIR??(0,f.I)()}function p(a,b){if(!b||(0,d.isAbsolute)(b))throw Error(`unsafe managed policy path ${JSON.stringify(b)}`);let e=(0,d.resolve)(a,b),f=(0,d.relative)(a,e);if(f.startsWith("..")||(0,d.isAbsolute)(f))throw Error(`managed policy path escapes its root: ${JSON.stringify(b)}`);let g=(0,c.realpathSync)(a),h=(0,c.realpathSync)(e),i=(0,d.relative)(g,h);if(i.startsWith("..")||(0,d.isAbsolute)(i))throw Error(`managed policy symlink escapes its root: ${JSON.stringify(b)}`);return h}let q=null;function r(){if(function(){try{let a=JSON.parse((0,c.readFileSync)((0,f.y)(),"utf8"));if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.mode;return!!b&&"object"==typeof b&&!Array.isArray(b)&&"oss"===b.kind}catch{return!1}}()){q=null;return}let a=(0,d.resolve)(o(),"active.json"),b=function(a){try{let b=(0,c.statSync)(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.mode}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}(a);if(null===b){q=null;return}if(q&&q.path===a&&q.version===b)return q.value;let e=JSON.parse((0,c.readFileSync)(a,"utf8"));return q={path:a,version:b,value:e},e}let s=/^cloud:[^/]+\/./;function t(a,b){return"reviewable"!==a.authority?a.authority?{authority:a.authority}:{}:"observe"===a.effect||"observe"!==b&&"enforce"!==b?{authority:"hard"}:{authority:"reviewable",reviewedBy:(a.reviewedBy??[]).map(b=>{var c;return s.test(b)?b:(c=a.id,`cloud:${c}/${b}`)})}}a.s(["i",0,t,"O",0,function(a,b){let c=[];for(let d of a){let a=t(d,b);"reviewable"===a.authority&&c.push(...a.reviewedBy??[])}return c},"h",0,function(){return function(a){let d,e=o();try{d=r()}catch(a){throw Error(`failed to read cloud-managed active manifest: ${a instanceof Error?a.message:String(a)}`)}if(void 0===d)return[];let f=function(a){if(!a||"object"!=typeof a)throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)} (supported: ${l.join(", ")})`);let b=a.deployment??a.generation;if(!Number.isSafeInteger(b)||(b??-1)<0)throw Error("active manifest deployment is invalid");if(!Array.isArray(a.policies))throw Error("active manifest policies is not an array");let c=a.policies.map(a=>({...a,version:a.version??a.revision}));return{schemaVersion:a.schemaVersion,deployment:b,policies:c}}(d),h=f.policies.filter(b=>a((0,g.f)(b.agentTargets,f.schemaVersion))),i=new Set;return h.map(a=>{if(!n.test(a.id)||"."===a.id||".."===a.id)throw Error(`unsafe cloud-managed policy id ${JSON.stringify(a.id)}`);if(!Number.isSafeInteger(a.version)||a.version<0)throw Error(`invalid version for cloud-managed policy ${a.id}`);if(!m.test(a.sha256))throw Error(`invalid SHA-256 for cloud-managed policy ${a.id}`);if(i.has(a.id))throw Error(`duplicate cloud-managed policy id ${a.id}`);i.add(a.id);let d=p(e,a.path),h=(0,c.readFileSync)(d),j=(0,b.createHash)("sha256").update(h).digest("hex");if(j!==a.sha256)throw Error(`cloud-managed policy ${a.id} failed integrity verification: expected ${a.sha256}, got ${j}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for cloud-managed policy ${a.id}`);return{id:a.id,version:a.version,effect:a.effect??"enforce",sha256:a.sha256,path:d,deployment:f.deployment,...(0,g.f)(a.agentTargets,f.schemaVersion)?{agentTargets:(0,g.f)(a.agentTargets,f.schemaVersion)}:{},...k(a)}})}(()=>!0)},"D",0,function(){try{var a;return a=function(){let a=r();if(void 0===a)return null;if(!a||"object"!=typeof a||Array.isArray(a))throw Error("active manifest is not an object");if(!l.includes(a.schemaVersion))throw Error(`unsupported active manifest schema ${String(a.schemaVersion)}`);return a}()?.jevMode,"off"===a||"observe"===a||"enforce"===a?a:null}catch{return null}},"t",0,p],89790);let u=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,v=/^(?:0|[1-9]\d*)$/;function w(a){if("string"!=typeof a)return null;let b=u.exec(a);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3]),prerelease:void 0===b[4]?[]:b[4].split(".").map(a=>v.test(a)?Number(a):a)}:null}let x=(a,b)=>a<b?-1:+(a>b);function y(a,b){let c=w(a),d=w(b);return c&&d?x(c.major,d.major)||x(c.minor,d.minor)||x(c.patch,d.patch)||function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;for(let c=0;c<Math.min(a.length,b.length);c++){let d=a[c],e=b[c];if(d===e)continue;let f="number"==typeof d,g="number"==typeof e;if(f!==g)return f?-1:1;if(f&&g)return x(d,e);return d<e?-1:1}return x(a.length,b.length)}(c.prerelease,d.prerelease):null}a.s(["f",0,y],68561);let z=["always","protected_branch","in_git_repo","has_paths","paths_outside_project","system_or_root_paths"];function A(a){return"string"==typeof a&&z.includes(a)}a.s(["B",0,z,"M",0,A],48630);let B=[1],C=/^[a-f0-9]{64}$/,D=/^[A-Za-z0-9._-]{1,64}\/[A-Za-z0-9._-]{1,64}$/,E=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/,F=/^[0-9a-f]{7,40}$/,G=/^[A-Za-z0-9._-]{1,128}$/,H=/^[a-z][a-z0-9_]{0,31}$/,I=new Set(["exempt","user_asked"]),J=new Set(["shell","write","read","network","other"]);function K(){return process.env.FAILPROOFAI_PACK_DIR??(0,f.n)()}function L(a){if("string"!=typeof a.id||!D.test(a.id))throw Error(`unsafe pack id ${JSON.stringify(a.id)}`);if("string"!=typeof a.version||!E.test(a.version))throw Error(`invalid version for pack ${a.id}`);if(void 0!==a.effect&&"enforce"!==a.effect&&"observe"!==a.effect)throw Error(`unknown effect ${JSON.stringify(a.effect)} for pack ${a.id}`);let b="string"==typeof a.commit&&F.test(a.commit.trim().toLowerCase())?a.commit.trim().toLowerCase():void 0;return{id:a.id,version:a.version,effect:a.effect??"enforce",...b?{commit:b}:{}}}function M(){return process.env.FAILPROOFAI_PACK_DIR?(0,d.resolve)(process.env.FAILPROOFAI_PACK_DIR,"installed.json"):(0,f.v)()}let N=new Set(["string","number","boolean","string[]","pattern[]"]);function O(a,b,c,d){let e=`${a} policy #${c}`;if(!b||"object"!=typeof b)throw Error(`${e} is not an object`);let f=b.name;if("string"!=typeof f||!G.test(f))throw Error(`${e} has an unsafe name ${JSON.stringify(f)}`);if("alwaysOn"in b)throw Error(`${e} declares alwaysOn, which packs may not set`);if("string"!=typeof b.description||0===b.description.length)throw Error(`${e} is missing a description`);if("string"!=typeof b.category||0===b.category.length)throw Error(`${e} is missing a category`);if("boolean"!=typeof b.defaultEnabled)throw Error(`${e} is missing defaultEnabled`);if(!b.match||"object"!=typeof b.match)throw Error(`${e} is missing a match`);let g=b.match;for(let a of["events","toolNames"]){let b=g[a];if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a||0===a.length)))throw Error(`${e} has a match.${a} that is not a list of names`)}let h=k(b),i=["authority","reviewedBy"].filter(a=>a in b&&!(a in h));if("params"in b){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"params is not an object";for(let[b,c]of Object.entries(a)){if(0===b.length)return"params has an empty parameter name";if(!c||"object"!=typeof c||Array.isArray(c))return`params.${b} is not an object`;if("string"!=typeof c.type||!N.has(c.type))return`params.${b} has type ${JSON.stringify(c.type)}, which is not one of ${[...N].join(", ")}`;if("string"!=typeof c.description||0===c.description.length)return`params.${b} is missing a description`;if(!("default"in c))return`params.${b} is missing a default`}}(b.params);a&&(d?.push(`${e} declares a params schema that was dropped: ${a}`),i.push("params"))}return i.length>0?Object.fromEntries(Object.entries(b).filter(([a])=>!i.includes(a))):b}function P(a,b,c=e.version){if(void 0===b)return{kind:"satisfied"};let d=y(c,b);return null===d?{kind:"unreadable",reason:`pack ${a} declares minCliVersion ${JSON.stringify(b)}, which is not a version this CLI can compare against its own (${c}) — the requirement was ignored`}:d<0?{kind:"too-old",reason:`pack ${a} needs failproofai ${String(b)} or newer and this is ${c} — run \`npm i -g "failproofai@>=${String(b)}" && failproofai update\``}:{kind:"satisfied",declared:b}}function Q(a,b,c,d){if("string"!=typeof c||0===c.length)throw Error(`${a} is missing ${b}`);if(c.length>d)throw Error(`${a} has a ${b} of ${c.length} characters, over the ${d}-character cap`);return c}function R(a,b,c){let d;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${a} is not an object`);if(null!==c)d=c;else{if("string"!=typeof b.id||!H.test(b.id))throw Error(`${a} has an unsafe id ${JSON.stringify(b.id)}`);if(I.has(b.id))throw Error(`${a} uses the reserved probe id ${JSON.stringify(b.id)}`);d=b.id}let e=Q(a,"instructions",b.instructions,600);if(void 0===b.criteria)return{id:d,instructions:e};if(!b.criteria||"object"!=typeof b.criteria||Array.isArray(b.criteria))throw Error(`${a} has criteria that is not an object`);let f=b.criteria;return{id:d,instructions:e,criteria:{true:Q(a,"criteria.true",f.true,300),false:Q(a,"criteria.false",f.false,300)}}}function S(a,b,c){let d=`${a} semantic policy #${c}`;if(!b||"object"!=typeof b||Array.isArray(b))throw Error(`${d} is not an object`);let e=b.name;if("string"!=typeof e||!G.test(e))throw Error(`${d} has an unsafe name ${JSON.stringify(e)}`);if("alwaysOn"in b)throw Error(`${d} declares alwaysOn, which packs may not set`);let f=Q(`${a} semantic policy ${e}`,"title",b.title,120),g=`${a} semantic policy ${e}`;if(!Array.isArray(b.appliesTo)||0===b.appliesTo.length)throw Error(`${g} has no appliesTo tool classes`);let h=b.appliesTo.find(a=>"string"!=typeof a||!J.has(a));if(void 0!==h)throw Error(`${g} applies to ${JSON.stringify(h)}, which is not a tool class (${[...J].join(", ")})`);if("deny"!==b.mode&&"instruct"!==b.mode)throw Error(`${g} has mode ${JSON.stringify(b.mode)}, which must be "deny" or "instruct"`);if("boolean"!=typeof b.userCanOverride)throw Error(`${g} is missing userCanOverride, which has no default`);if(!Array.isArray(b.probes)||0===b.probes.length)throw Error(`${g} declares no probes`);if(b.probes.length>6)throw Error(`${g} declares ${b.probes.length} probes, over the cap of 6`);let i=b.probes.map((a,b)=>R(`${g} probe #${b}`,a,null)),j=new Set;for(let a of i){if(j.has(a.id))throw Error(`${g} declares probe ${a.id} twice`);j.add(a.id)}let k=void 0===b.exempt?void 0:R(`${g} exempt`,b.exempt,"exempt");if(void 0!==b.precondition&&!A(b.precondition))throw Error(`${g} names precondition ${JSON.stringify(b.precondition)}, which this build does not have (${z.join(", ")})`);let l=Q(g,"guidance",b.guidance,600);return{name:e,title:f,appliesTo:b.appliesTo,mode:b.mode,userCanOverride:b.userCanOverride,probes:i,...k?{exempt:k}:{},...void 0!==b.precondition?{precondition:b.precondition}:{},guidance:l}}function T(a){return a instanceof Error?a.message:String(a)}function U(a){return/^github:FailproofAI\//i.test(a.source??"")}function V(a,b){return h.has(b)&&!U(a)}a.s(["P",0,24,"r",0,F,"T",0,P,"Q",0,function(){try{let a=JSON.parse((0,c.readFileSync)(M(),"utf8"));if(!Array.isArray(a.packs))return!1;return a.packs.some(a=>!!a&&"object"==typeof a&&Array.isArray(a.policies)&&a.policies.length>0)}catch{return!1}},"E",0,function(a){return a.semantic??[]},"N",0,K,"$",0,L,"Z",0,O,"U",0,S,"V",0,function(){let a,d=M();if(!(0,c.existsSync)(d))return{packs:[],errors:[]};try{a=JSON.parse((0,c.readFileSync)(d,"utf8"))}catch(a){return{packs:[],errors:[{id:null,reason:`unreadable pack manifest: ${T(a)}`}]}}if(!a||"object"!=typeof a)return{packs:[],errors:[{id:null,reason:"pack manifest is not an object"}]};let e=a;if(!B.includes(e.schemaVersion))return{packs:[],errors:[{id:null,reason:`unsupported pack manifest schema ${String(e.schemaVersion)} (supported: ${B.join(", ")})`}]};if(!Array.isArray(e.packs))return{packs:[],errors:[{id:null,reason:"pack manifest packs is not an array"}]};let f=K(),g=[],h=[],i=[],j=new Set;for(let a of e.packs){let d=a&&"object"==typeof a&&"string"==typeof a.id?a.id:null,e=[];try{let d=function(a,d,e){if(!d||"object"!=typeof d)throw Error("pack entry is not an object");let f=L(d);if("string"!=typeof d.source||0===d.source.length)throw Error(`pack ${d.id} has no source`);if("string"!=typeof d.sha256||!C.test(d.sha256))throw Error(`invalid SHA-256 for pack ${d.id}`);let g=f.effect,h=P(f.id,d.minCliVersion);if("too-old"===h.kind)throw Error(h.reason);"unreadable"===h.kind&&e.push(h.reason);let i=p(a,d.entry),j=(0,b.createHash)("sha256").update((0,c.readFileSync)(i)).digest("hex");if(j!==d.sha256)throw Error(`pack ${d.id} failed integrity verification: expected ${d.sha256}, got ${j}`);if(!Array.isArray(d.policies))throw Error(`pack ${d.id} policies is not an array`);let k=d.policies.map((a,b)=>O(d.id,a,b,e)),l=new Set;for(let a of k){if(l.has(a.name))throw Error(`pack ${d.id} declares ${a.name} twice`);l.add(a.name)}let m=null;if(void 0!==d.enabled){if(!Array.isArray(d.enabled)||d.enabled.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} enabled is not an array of names`);m=d.enabled.filter(a=>l.has(a))}let n=null;if(void 0!==d.clis){if(!Array.isArray(d.clis)||d.clis.some(a=>"string"!=typeof a))throw Error(`pack ${d.id} clis is not an array of agent names`);n=d.clis}return{clis:n,id:f.id,version:f.version,source:d.source,path:i,sha256:d.sha256,effect:g,policies:k,semantic:function(a,b,c){if(void 0===b)return[];if(!Array.isArray(b))return c.push(`pack ${a} semantic is not an array, so none of it was loaded`),[];let d=[],e=new Set;for(let[f,g]of b.entries()){if(d.length>=24){c.push(`pack ${a} declares more than 24 semantic policies; the ${b.length-24} past that cap were dropped`);break}try{let b=S(a,g,f);if(e.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);e.add(b.name),d.push(b)}catch(a){c.push(T(a))}}return d}(f.id,d.semantic,e),..."satisfied"===h.kind&&h.declared?{minCliVersion:h.declared}:{},enabled:m}}(f,a,e);if(j.has(d.id))throw Error(`duplicate pack id ${d.id}`);j.add(d.id),g.push(d),i.push(...e)}catch(c){let b=a&&("observe"===a.effect||"enforce"===a.effect)?a.effect:"enforce";h.push({id:d,reason:T(c),effect:b,...Array.isArray(a?.policies)?{declared:function(a){let b=[];for(let c of a)c&&"object"==typeof c&&"string"==typeof c.name&&c.match&&"object"==typeof c.match&&b.push(c);return b}(a.policies)}:{},...Array.isArray(a?.policies)&&0===a.policies.length?{semanticOnly:!0}:{},...Array.isArray(a?.clis)&&a.clis.every(a=>"string"==typeof a)?{clis:a.clis}:{}})}}return{packs:g,errors:h,...i.length>0?{warnings:i}:{}}},"M",0,function(a){return a.exempt?[...a.probes,a.exempt]:a.probes}],9909),a.s(["v",0,function(a){let b=new Map,c=new Map;for(let d of a)for(let a of d.semantic??[]){if(V(d,a.name))continue;let e=function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(null!==b&&"object"==typeof b){let c=Object.entries(b).filter(([,a])=>void 0!==a).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)??"null"}(a),f=b.get(a.name);if(void 0===f){b.set(a.name,{form:e,ids:[d.id]});continue}f.ids.push(d.id),f.form!==e&&c.set(a.name,f.ids)}return c},"g",0,U,"B",0,V,"r",0,function(a,b){return a.filter(a=>"observe"!==a.effect&&!(b&&Array.isArray(a.clis)&&a.clis.length>0&&!a.clis.includes(b)))}],86304)},10695,a=>{var b=a.i(2157),c=a.i(50227),d=a.i(75818);let e={info:0,warn:1,error:2},f=(0,d.A)(),g=!1,h="warn",i=!1,j=f;function k(a){return!function(){if(g)return;g=!0;let a=(process.env.FAILPROOFAI_LOG_LEVEL??"").toLowerCase();("info"===a||"warn"===a||"error"===a)&&(h=a);let b=(process.env.FAILPROOFAI_HOOK_LOG_FILE??"").trim();b&&(i=!0,"1"!==b&&"true"!==b&&(j=b))}(),e[a]>=e[h]}function l(a,b){process.stderr.write(`[failproofai:hook] ${a} ${b}
|
|
2
2
|
`)}function m(a,d){if(i)try{(0,b.existsSync)(j)||(0,b.mkdirSync)(j,{recursive:!0});let e=(0,c.join)(j,"hooks.log");try{if((0,b.statSync)(e).size>=524288){let a=`hooks-${Date.now()}.log`;(0,b.renameSync)(e,(0,c.join)(j,a))}}catch{}let f=new Date().toISOString(),g=`[${f}] ${a} ${d}
|
|
3
3
|
`;(0,b.appendFileSync)(e,g,"utf-8")}catch{}}a.s(["F",0,function(a){k("error")&&(l("ERROR",a),m("ERROR",a))},"g",0,function(a){k("warn")&&(l("WARN",a),m("WARN",a))}])}]})();
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[21572,a=>{"use strict";var b=a.i(2157),c=a.i(50227);a.i(8674);var d=a.i(75818);let e={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 f(){let a={};try{let c=JSON.parse((0,b.readFileSync)((0,d.y)(),"utf8"));c&&"object"==typeof c&&!Array.isArray(c)&&(a=c)}catch{}return{raw:a,config:g()}}function g(){try{var a;let c,e,f,g,h;return a=JSON.parse((0,b.readFileSync)((0,d.y)(),"utf8")),c=a.mode?.kind,e=a.daemon??{},f=a.collector??{},g=a.telemetry??{},h=a.audit??{},{mode:"cloud"===c?"cloud":"oss",daemon:{configured:!0===e.configured},collector:{sessions:!0===f.sessions,hooks:!1!==f.hooks,hooksVerbosity:"all"===f.hooks_verbosity||"off"===f.hooks_verbosity?f.hooks_verbosity:"decisions",redact:"off"===f.redact?"off":"minimal",environment:"string"==typeof f.environment?f.environment:"local",machineId:"string"==typeof f.machine_id?f.machine_id:void 0,sources:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.extra_paths;if(!Array.isArray(a))continue;let e=a.filter(a=>"string"==typeof a&&""!==a.trim());e.length>0&&(b[c]={extraPaths:e})}return Object.keys(b).length>0?b:void 0}(f.sources),agents:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b=Object.fromEntries(Object.entries(a).flatMap(([a,b])=>{if(!b||"object"!=typeof b||Array.isArray(b))return[];let c=b.sessions;return"boolean"==typeof c?[[a,{sessions:c}]]:[]}));return Object.keys(b).length?b:void 0}(f.agents),otlp:function(a){if(!(!a||"object"!=typeof a||Array.isArray(a)))return{enabled:!0===a.enabled,..."number"==typeof a.port&&Number.isInteger(a.port)?{port:a.port}:{}}}(f.otlp)},telemetry:{enabled:!1!==g.enabled},audit:{auto:!0===h.auto,intervalDays:function(a){if("number"!=typeof a||!Number.isFinite(a))return 7;let b=Math.floor(a);return b<1?7:Math.min(b,90)}(h.interval_days),reportsConsentedAt:"number"==typeof h.reports_consented_at&&Number.isFinite(h.reports_consented_at)?h.reports_consented_at:void 0},agents:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b=a=>Array.isArray(a)?[...new Set(a.filter(a=>"string"==typeof a&&""!==a.trim()))]:[];if(Array.isArray(a.selected))return{selected:b(a.selected),seen:b(a.seen)}}(a.agents)}}catch{return structuredClone(e)}}let h=[["mode","kind"],["daemon","configured"],["collector","sessions"],["collector","hooks"],["collector","hooks_verbosity"],["collector","redact"],["collector","environment"],["collector","machine_id"],["collector","sources","*","extra_paths"],["collector","agents","*","sessions"],["collector","otlp","enabled"],["collector","otlp","port"],["telemetry","enabled"],["audit","auto"],["audit","interval_days"],["audit","reports_consented_at"],["agents","selected"],["agents","seen"]],i=a=>"object"==typeof a&&null!==a&&!Array.isArray(a);function j(a){{let b=a.cloud,c=a.ingest,d=a.auth,e={};if("number"==typeof a.connectedAt&&Number.isSafeInteger(a.connectedAt)&&a.connectedAt>=0&&(e.connectedAt=a.connectedAt),b&&"string"==typeof b.url&&"string"==typeof b.machine_id&&"string"==typeof b.token&&b.url&&b.token){let a="string"==typeof b.machine_label&&b.machine_label?b.machine_label:void 0;e.cloud={url:b.url,machineId:b.machine_id,token:b.token,machineLabel:a}}let f=a.org;if(f){let a=a=>"string"==typeof a&&a?a:void 0,b="number"==typeof f.since&&Number.isSafeInteger(f.since)&&f.since>=0?f.since:void 0,c={id:a(f.id),slug:a(f.slug),name:a(f.name),...void 0!==b?{since:b}:{}};(c.id||c.slug||c.name||void 0!==b)&&(e.org=c)}c&&"string"==typeof c.url&&"string"==typeof c.key&&c.url&&c.key&&(e.ingest={url:c.url,key:c.key});let g=
|
|
1
|
+
module.exports=[21572,a=>{"use strict";var b=a.i(2157),c=a.i(50227);a.i(8674);var d=a.i(75818);let e={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 f(){let a={};try{let c=JSON.parse((0,b.readFileSync)((0,d.y)(),"utf8"));c&&"object"==typeof c&&!Array.isArray(c)&&(a=c)}catch{}return{raw:a,config:g()}}function g(){try{var a;let c,e,f,g,h;return a=JSON.parse((0,b.readFileSync)((0,d.y)(),"utf8")),c=a.mode?.kind,e=a.daemon??{},f=a.collector??{},g=a.telemetry??{},h=a.audit??{},{mode:"cloud"===c?"cloud":"oss",daemon:{configured:!0===e.configured},collector:{sessions:!0===f.sessions,hooks:!1!==f.hooks,hooksVerbosity:"all"===f.hooks_verbosity||"off"===f.hooks_verbosity?f.hooks_verbosity:"decisions",redact:"off"===f.redact?"off":"minimal",environment:"string"==typeof f.environment?f.environment:"local",machineId:"string"==typeof f.machine_id?f.machine_id:void 0,sources:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.extra_paths;if(!Array.isArray(a))continue;let e=a.filter(a=>"string"==typeof a&&""!==a.trim());e.length>0&&(b[c]={extraPaths:e})}return Object.keys(b).length>0?b:void 0}(f.sources),agents:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b=Object.fromEntries(Object.entries(a).flatMap(([a,b])=>{if(!b||"object"!=typeof b||Array.isArray(b))return[];let c=b.sessions;return"boolean"==typeof c?[[a,{sessions:c}]]:[]}));return Object.keys(b).length?b:void 0}(f.agents),otlp:function(a){if(!(!a||"object"!=typeof a||Array.isArray(a)))return{enabled:!0===a.enabled,..."number"==typeof a.port&&Number.isInteger(a.port)?{port:a.port}:{}}}(f.otlp)},telemetry:{enabled:!1!==g.enabled},audit:{auto:!0===h.auto,intervalDays:function(a){if("number"!=typeof a||!Number.isFinite(a))return 7;let b=Math.floor(a);return b<1?7:Math.min(b,90)}(h.interval_days),reportsConsentedAt:"number"==typeof h.reports_consented_at&&Number.isFinite(h.reports_consented_at)?h.reports_consented_at:void 0},agents:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b=a=>Array.isArray(a)?[...new Set(a.filter(a=>"string"==typeof a&&""!==a.trim()))]:[];if(Array.isArray(a.selected))return{selected:b(a.selected),seen:b(a.seen)}}(a.agents)}}catch{return structuredClone(e)}}let h=[["mode","kind"],["daemon","configured"],["collector","sessions"],["collector","hooks"],["collector","hooks_verbosity"],["collector","redact"],["collector","environment"],["collector","machine_id"],["collector","sources","*","extra_paths"],["collector","agents","*","sessions"],["collector","otlp","enabled"],["collector","otlp","port"],["telemetry","enabled"],["audit","auto"],["audit","interval_days"],["audit","reports_consented_at"],["agents","selected"],["agents","seen"]],i=a=>"object"==typeof a&&null!==a&&!Array.isArray(a);function j(){try{return k(JSON.parse((0,b.readFileSync)((0,d.L)(),"utf8")))}catch{return{}}}function k(a){{let b=a.cloud,c=a.ingest,d=a.auth,e={};if("number"==typeof a.connectedAt&&Number.isSafeInteger(a.connectedAt)&&a.connectedAt>=0&&(e.connectedAt=a.connectedAt),b&&"string"==typeof b.url&&"string"==typeof b.machine_id&&"string"==typeof b.token&&b.url&&b.token){let a="string"==typeof b.machine_label&&b.machine_label?b.machine_label:void 0;e.cloud={url:b.url,machineId:b.machine_id,token:b.token,machineLabel:a}}let f=a.org;if(f){let a=a=>"string"==typeof a&&a?a:void 0,b="number"==typeof f.since&&Number.isSafeInteger(f.since)&&f.since>=0?f.since:void 0,c={id:a(f.id),slug:a(f.slug),name:a(f.name),...void 0!==b?{since:b}:{}};(c.id||c.slug||c.name||void 0!==b)&&(e.org=c)}c&&"string"==typeof c.url&&"string"==typeof c.key&&c.url&&c.key&&(e.ingest={url:c.url,key:c.key});let g=l(a.jev);return g&&(e.jev=g),d&&(e.auth={baseUrl:"string"==typeof d.base_url?d.base_url:void 0,sessionToken:"string"==typeof d.session_token?d.session_token:void 0,expiresAt:"number"==typeof d.expires_at?d.expires_at:void 0,email:"string"==typeof d.email?d.email:void 0}),e}}function l(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let{url:b,key:c}=a;return"string"==typeof b&&b&&"string"==typeof c&&c?{url:b,key:c}:null}function m(a){if(!a)return null;try{let b=new URL(a).origin;return"null"===b?null:b}catch{return null}}a.s(["H",0,"Jev mode is managed by FailproofAI Cloud on this machine: enforce while a Jev policy is deployed here, off when none is.","M",0,function(){try{let a=j().cloud;return!!(a?.url&&a.machineId)}catch{return!1}},"s",0,g,"d",0,j,"R",0,function(){let a,e,f,g=(0,d.L)();try{a=(0,b.openSync)(g,b.constants.O_RDONLY|(b.constants.O_NONBLOCK??0))}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return{status:"absent",path:g,connected:!1};return{status:"refused",path:g,mode:null,reason:"unreadable",problem:`cannot open ${g} (${a??"error"})`}}try{let d=(0,b.fstatSync)(a);if(!d.isFile())return{status:"refused",path:g,mode:null,reason:"unreadable",problem:`${g} is not a regular file`};let f="win32"!==process.platform,h=511&d.mode;if(f&&(63&h)!=0)return{status:"refused",path:g,mode:h,reason:"too-open",problem:`${g} is ${h.toString(8).padStart(4,"0")}; it holds the key Jev sends to FailproofAI Cloud, so it must be owner-only (chmod 600 ${g})`,fix:`chmod 600 ${g}`};{let a=null;try{let d=511&(0,b.statSync)((0,c.dirname)(g)).mode;(18&d)!=0&&(a=d)}catch{}if(null!==a)return{status:"refused",path:g,mode:h,reason:"too-open",problem:`its directory ${(0,c.dirname)(g)} is ${a.toString(8).padStart(4,"0")} — other users can write there, so they can put their own credentials in its place; it must be owner-only (chmod 700 ${(0,c.dirname)(g)})`,fix:`chmod 700 ${(0,c.dirname)(g)}`}}if(d.size>65536)return{status:"refused",path:g,mode:h,reason:"too-large",problem:`${g} is larger than 65536 bytes`};let i=Buffer.alloc(d.size),j=0;for(;j<i.length;){let c=(0,b.readSync)(a,i,j,i.length-j,j);if(0===c)break;j+=c}e=i.subarray(0,j).toString("utf8")}catch(a){return{status:"refused",path:g,mode:null,reason:"unreadable",problem:`cannot read ${g} (${a.code??"error"})`}}finally{try{(0,b.closeSync)(a)}catch{}}try{f=JSON.parse(e)}catch{return{status:"refused",path:g,mode:null,reason:"not-json",problem:`${g} is not valid JSON`}}if(!f||"object"!=typeof f||Array.isArray(f))return{status:"refused",path:g,mode:null,reason:"not-json",problem:`${g} does not hold a JSON object`};let h=f,i=k(h),j=[i.cloud?{origin:m(i.cloud.url),key:i.cloud.token}:null,i.ingest?{origin:m(i.ingest.url),key:i.ingest.key}:null].filter(a=>null!==a&&null!==a.origin),n=j.length>0,o=l(h.jev);if(!o)return{status:"absent",path:g,connected:n};let p=m(o.url);return null!==p&&j.some(a=>a.origin===p&&a.key===o.key)?{status:"ok",path:g,credential:o}:{status:"absent",path:g,connected:n,orphaned:!0}},"t",0,function(a){var e,g;let{raw:j,config:k}=f(),l={mode:a.mode??k.mode,daemon:{...k.daemon,...a.daemon},collector:{...k.collector,...a.collector},telemetry:{...k.telemetry,...a.telemetry},audit:{...k.audit,...a.audit},agents:void 0===a.agents?k.agents:a.agents??void 0},m=l.collector,n={mode:{kind:l.mode},daemon:{configured:l.daemon.configured},collector:{sessions:m.sessions,hooks:m.hooks,hooks_verbosity:m.hooksVerbosity,redact:m.redact,environment:m.environment,...m.machineId?{machine_id:m.machineId}:{},...m.agents?{agents:m.agents}:{},...m.otlp?{otlp:m.otlp}:{},...Object.entries(m.sources??{}).some(([,a])=>a.extraPaths?.length)?{sources:Object.fromEntries(Object.entries(m.sources??{}).filter(([,a])=>a.extraPaths?.length).map(([a,b])=>[a,{extra_paths:b.extraPaths}]))}:{}},...l.telemetry.enabled?{}:{telemetry:{enabled:!1}},audit:{auto:l.audit.auto,interval_days:l.audit.intervalDays,...void 0===l.audit.reportsConsentedAt?{}:{reports_consented_at:l.audit.reportsConsentedAt}},...l.agents?{agents:{selected:l.agents.selected,seen:l.agents.seen}}:{}},o=structuredClone(j??f().raw);for(let a of h)!function a(b,c){let[d,...e]=c;if(void 0!==d)for(let c of"*"===d?Object.keys(b):[d]){if(0===e.length){delete b[c];continue}let d=b[c];i(d)&&(a(d,e),0===Object.keys(d).length&&delete b[c])}}(o,a);return!function a(b,c){for(let[d,e]of Object.entries(c)){let c=b[d];i(c)&&i(e)?a(c,e):b[d]=e}}(o,n),e=(0,d.y)(),g=`${JSON.stringify(o,null,2)}
|
|
2
2
|
`,(0,b.mkdirSync)((0,c.dirname)(e),{recursive:!0}),(0,b.writeFileSync)(e,g,"utf8"),l}])}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=src_hooks_fp-config_ts_04t589gp4p60j._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[31934,a=>{"use strict";a.i(74533),a.i(60526),a.i(66680),a.i(2157),a.i(50227),a.i(91997),a.i(9909),a.i(
|
|
1
|
+
module.exports=[31934,a=>{"use strict";a.i(74533),a.i(60526),a.i(66680),a.i(2157),a.i(50227),a.i(91997),a.i(9909),a.i(41863),a.i(88673);var b=a.i(17280);a.i(15638),a.i(86304),a.i(91609),a.i(1459),b.v,b.Z,b.U,process.env.FAILPROOFAI_GITHUB_API,process.env.FAILPROOFAI_GITHUB_UPLOADS,process.env.FAILPROOFAI_GITHUB_GIT,a.s(["parseReleaseBody",0,function(a){let b="string"==typeof a?a:"",c={},d=/(\d+)\s+policies,\s*(\d+)\s+on by default/.exec(b);d&&(c.policies=Number(d[1]),c.defaultOn=Number(d[2]));let e=/(?:^|\n)\s*commit\s+([0-9a-f]{7,40})\b/i.exec(b);return e&&(c.commit=e[1].toLowerCase()),c}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_hooks_pack-cli_ts_0t7me658zqmh_._.js.map
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/0cz1d0mv5g_q7.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/D7LY1YSrw96ZxKSpxxrFw/_buildManifest.js",
|
|
11
|
+
"static/D7LY1YSrw96ZxKSpxxrFw/_ssgManifest.js",
|
|
12
|
+
"static/D7LY1YSrw96ZxKSpxxrFw/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/2ojf3r8g4tn7s.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/26c4gmdpsthv6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2ojf3r8g4tn7s.js"/><script src="/_next/static/chunks/2tjfp9dirxnku.js" async=""></script><script src="/_next/static/chunks/165ezyyx0j1ft.js" async=""></script><script src="/_next/static/chunks/063al_q720fkj.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/2_sj5ssr_m_wm.js" async=""></script><script src="/_next/static/chunks/2j5zpvs3pd7mw.js" async=""></script><script src="/_next/static/chunks/0jutamwqz8pg5.js" async=""></script><script src="/_next/static/chunks/32s3y34p0t2pe.js" async=""></script><script src="/_next/static/chunks/42e8zab314654.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Failproof AI - Hooks & Project Monitor</title><meta name="description" content="Open-source hooks, policies, and project visualization for Claude Code & Agents SDK"/><link rel="icon" href="/icon.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><header class="app-header"><a href="https://github.com/failproofai/failproofai" target="_blank" rel="noopener noreferrer" class="h-brand" style="flex:none" aria-label="failproof ai · GitHub"><img src="/logo.svg" alt="failproof_ai" style="height:18px;display:block;flex-shrink:0"/></a><nav class="tabs" style="border:none;padding:0;gap:0"><a class="tab" href="/projects">projects</a><a class="tab" href="/policies">policies</a><a class="tab" href="/audit">audit</a></nav><div style="flex:1"></div><div class="h-meta"><span class="h-version">v<!-- -->1.0.12-beta.1</span></div><div class="h-actions"><div class="inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5"><button title="Refresh" class="inline-flex items-center justify-center rounded-md p-1.5 transition-colors text-muted-foreground hover:text-foreground hover:bg-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw w-3.5 h-3.5" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button><div class="w-px h-4 bg-border"></div><div class="inline-flex items-center gap-0.5" role="group" aria-label="Auto-refresh interval"><button aria-pressed="true" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors bg-background text-foreground shadow-sm">Off</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">5s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">10s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">30s</button></div></div><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><a class="h-icon-btn" aria-label="settings" title="settings" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-3.5 h-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><div class="relative"><button class="justify-center rounded-md text-sm font-medium transition-[background-color,color,box-shadow,border-color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:opacity-50 disabled:pointer-events-none hover:bg-muted h-9 px-3 relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground" type="button" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-branch h-4 w-4" aria-hidden="true"><path d="M15 6a9 9 0 0 0-9 9V3"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle></svg><span class="hidden sm:inline text-xs whitespace-nowrap">Reach Us</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3 w-3 transition-transform" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></header><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-4 right-4 z-50 flex flex-col gap-2"></div><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2ojf3r8g4tn7s.js","static/chunks/2tjfp9dirxnku.js","static/chunks/165ezyyx0j1ft.js","static/chunks/063al_q720fkj.js"],"runtimeModuleIds":[94553]});</script><script src="/_next/static/chunks/2ojf3r8g4tn7s.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/2_sj5ssr_m_wm.js\"\n3:\"/_next/static/chunks/2j5zpvs3pd7mw.js\"\n4:\"/_next/static/chunks/0jutamwqz8pg5.js\"\n5:I[12344,[\"$2\",\"$3\",\"$4\"],\"PostHogProvider\"]\n6:\"GlobalErrorListeners\"\n7:I[97917,[\"$2\",\"$3\",\"$4\"],\"$6\"]\n8:\"AutoRefreshProvider\"\n9:I[85881,[\"$2\",\"$3\",\"$4\"],\"$8\"]\na:I[63780,[\"$2\",\"$3\",\"$4\"],\"Navbar\"]\nb:I[39756,[\"$2\",\"$3\",\"$4\"],\"default\"]\nc:\"/_next/static/chunks/32s3y34p0t2pe.js\"\nd:I[8821,[\"$2\",\"$3\",\"$4\",\"$c\"],\"default\"]\ne:I[37457,[\"$2\",\"$3\",\"$4\"],\"default\"]\nf:I[55574,[\"$2\",\"$3\",\"$4\"],\"Toaster\"]\n13:I[97367,[\"$2\",\"$3\",\"$4\"],\"OutletBoundary\"]\n14:\"$Sreact.suspense\"\n16:\"ViewportBoundary\"\n17:I[97367,[\"$2\",\"$3\",\"$4\"],\"$16\"]\n19:\"MetadataBoundary\"\n1a:I[97367,[\"$2\",\"$3\",\"$4\"],\"$19\"]\n1c:\"/_next/static/chunks/42e8zab314654.js\"\n1d:I[53348,[\"$2\",\"$3\",\"$4\",\"$1c\"],\"default\"]\n:HL[\"/_next/static/chunks/26c4gmdpsthv6.css\",\"style\"]\n11:X\n"])</script><script>self.__next_f.push([1,"12:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"10:[[\"children\",{\"s\":\"/_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$11\"},\"c\":\"$Q12\"}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/26c4gmdpsthv6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2_sj5ssr_m_wm.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2j5zpvs3pd7mw.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0jutamwqz8pg5.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L7\",null,{}],[\"$\",\"$L9\",null,{\"children\":[[\"$\",\"$La\",null,{\"disabledPages\":[]}],[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$d\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/32s3y34p0t2pe.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"$Lf\",null,{}]]}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q10\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"$L1a\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1b\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1d\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/26c4gmdpsthv6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"xq8UgF5yFxty1VWxY2hyn\"}\n"])</script><script>self.__next_f.push([1,"11:C\n18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1e:I[27201,[\"$2\",\"$3\",\"$4\"],\"IconMark\"]\n15:null\n1b:[[\"$\",\"title\",\"0\",{\"children\":\"Failproof AI - Hooks \u0026 Project Monitor\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source hooks, policies, and project visualization for Claude Code \u0026 Agents SDK\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg\"}],[\"$\",\"$L1e\",\"3\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/26c4gmdpsthv6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2ojf3r8g4tn7s.js"/><script src="/_next/static/chunks/2tjfp9dirxnku.js" async=""></script><script src="/_next/static/chunks/165ezyyx0j1ft.js" async=""></script><script src="/_next/static/chunks/063al_q720fkj.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/2_sj5ssr_m_wm.js" async=""></script><script src="/_next/static/chunks/2j5zpvs3pd7mw.js" async=""></script><script src="/_next/static/chunks/12rug3jilwqzs.js" async=""></script><script src="/_next/static/chunks/32s3y34p0t2pe.js" async=""></script><script src="/_next/static/chunks/0umzct31duk5g.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Failproof AI - Hooks & Project Monitor</title><meta name="description" content="Open-source hooks, policies, and project visualization for Claude Code & Agents SDK"/><link rel="icon" href="/icon.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><header class="app-header"><a href="https://github.com/failproofai/failproofai" target="_blank" rel="noopener noreferrer" class="h-brand" style="flex:none" aria-label="failproof ai · GitHub"><img src="/logo.svg" alt="failproof_ai" style="height:18px;display:block;flex-shrink:0"/></a><nav class="tabs" style="border:none;padding:0;gap:0"><a class="tab" href="/projects">projects</a><a class="tab" href="/policies">policies</a><a class="tab" href="/audit">audit</a></nav><div style="flex:1"></div><div class="h-meta"><span class="h-version">v<!-- -->1.0.12</span></div><div class="h-actions"><div class="inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5"><button title="Refresh" class="inline-flex items-center justify-center rounded-md p-1.5 transition-colors text-muted-foreground hover:text-foreground hover:bg-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw w-3.5 h-3.5" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button><div class="w-px h-4 bg-border"></div><div class="inline-flex items-center gap-0.5" role="group" aria-label="Auto-refresh interval"><button aria-pressed="true" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors bg-background text-foreground shadow-sm">Off</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">5s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">10s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">30s</button></div></div><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><a class="h-icon-btn" aria-label="settings" title="settings" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-3.5 h-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><div class="relative"><button class="justify-center rounded-md text-sm font-medium transition-[background-color,color,box-shadow,border-color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:opacity-50 disabled:pointer-events-none hover:bg-muted h-9 px-3 relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground" type="button" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-branch h-4 w-4" aria-hidden="true"><path d="M15 6a9 9 0 0 0-9 9V3"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle></svg><span class="hidden sm:inline text-xs whitespace-nowrap">Reach Us</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3 w-3 transition-transform" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></header><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-4 right-4 z-50 flex flex-col gap-2"></div><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2ojf3r8g4tn7s.js","static/chunks/2tjfp9dirxnku.js","static/chunks/165ezyyx0j1ft.js","static/chunks/063al_q720fkj.js"],"runtimeModuleIds":[94553]});</script><script src="/_next/static/chunks/2ojf3r8g4tn7s.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/2_sj5ssr_m_wm.js\"\n3:\"/_next/static/chunks/2j5zpvs3pd7mw.js\"\n4:\"/_next/static/chunks/12rug3jilwqzs.js\"\n5:I[12344,[\"$2\",\"$3\",\"$4\"],\"PostHogProvider\"]\n6:\"GlobalErrorListeners\"\n7:I[97917,[\"$2\",\"$3\",\"$4\"],\"$6\"]\n8:\"AutoRefreshProvider\"\n9:I[85881,[\"$2\",\"$3\",\"$4\"],\"$8\"]\na:I[63780,[\"$2\",\"$3\",\"$4\"],\"Navbar\"]\nb:I[39756,[\"$2\",\"$3\",\"$4\"],\"default\"]\nc:\"/_next/static/chunks/32s3y34p0t2pe.js\"\nd:I[8821,[\"$2\",\"$3\",\"$4\",\"$c\"],\"default\"]\ne:I[37457,[\"$2\",\"$3\",\"$4\"],\"default\"]\nf:I[55574,[\"$2\",\"$3\",\"$4\"],\"Toaster\"]\n13:I[97367,[\"$2\",\"$3\",\"$4\"],\"OutletBoundary\"]\n14:\"$Sreact.suspense\"\n16:\"ViewportBoundary\"\n17:I[97367,[\"$2\",\"$3\",\"$4\"],\"$16\"]\n19:\"MetadataBoundary\"\n1a:I[97367,[\"$2\",\"$3\",\"$4\"],\"$19\"]\n1c:\"/_next/static/chunks/0umzct31duk5g.js\"\n1d:I[53348,[\"$2\",\"$3\",\"$4\",\"$1c\"],\"default\"]\n:HL[\"/_next/static/chunks/26c4gmdpsthv6.css\",\"style\"]\n11:X\n"])</script><script>self.__next_f.push([1,"12:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"10:[[\"children\",{\"s\":\"/_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$11\"},\"c\":\"$Q12\"}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/26c4gmdpsthv6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2_sj5ssr_m_wm.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2j5zpvs3pd7mw.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/12rug3jilwqzs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L7\",null,{}],[\"$\",\"$L9\",null,{\"children\":[[\"$\",\"$La\",null,{\"disabledPages\":[]}],[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$d\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/32s3y34p0t2pe.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"$Lf\",null,{}]]}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q10\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"$L1a\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1b\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1d\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/26c4gmdpsthv6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"D7LY1YSrw96ZxKSpxxrFw\"}\n"])</script><script>self.__next_f.push([1,"11:C\n18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1e:I[27201,[\"$2\",\"$3\",\"$4\"],\"IconMark\"]\n15:null\n1b:[[\"$\",\"title\",\"0\",{\"children\":\"Failproof AI - Hooks \u0026 Project Monitor\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source hooks, policies, and project visualization for Claude Code \u0026 Agents SDK\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg\"}],[\"$\",\"$L1e\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2ojf3r8g4tn7s.js"/><script src="/_next/static/chunks/2tjfp9dirxnku.js" async=""></script><script src="/_next/static/chunks/165ezyyx0j1ft.js" async=""></script><script src="/_next/static/chunks/063al_q720fkj.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2ojf3r8g4tn7s.js"/><script src="/_next/static/chunks/2tjfp9dirxnku.js" async=""></script><script src="/_next/static/chunks/165ezyyx0j1ft.js" async=""></script><script src="/_next/static/chunks/063al_q720fkj.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0el9n3h9_zp5m.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2ojf3r8g4tn7s.js","static/chunks/2tjfp9dirxnku.js","static/chunks/165ezyyx0j1ft.js","static/chunks/063al_q720fkj.js"],"runtimeModuleIds":[94553]});</script><script src="/_next/static/chunks/2ojf3r8g4tn7s.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0el9n3h9_zp5m.js\"\n3:I[39756,[\"$2\"],\"default\"]\n4:I[37457,[\"$2\"],\"default\"]\n7:I[97367,[\"$2\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[97367,[\"$2\"],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[97367,[\"$2\"],\"$d\"]\n10:I[53348,[\"$2\"],\"default\"]\n5:X\n"])</script><script>self.__next_f.push([1,"6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$5\"},\"c\":\"$Q6\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"D7LY1YSrw96ZxKSpxxrFw\"}\n"])</script><script>self.__next_f.push([1,"5:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\nf:[]\n"])</script></body></html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"previewModeId": "
|
|
3
|
-
"previewModeSigningKey": "
|
|
4
|
-
"previewModeEncryptionKey": "
|
|
2
|
+
"previewModeId": "7eb2d15ab0e132d63d0a62c970e98c65",
|
|
3
|
+
"previewModeSigningKey": "3f7375dd367a7ab743c1bc232e85dd82ddf2d0b16b06394532981114ef049b07",
|
|
4
|
+
"previewModeEncryptionKey": "ed2cbc91eac3dd69a141c1972d73e9748783886abc48c50d451c05bb6186e5cf"
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"0085028ebdcdc7b05442823936e8301df482a2a84a\": {\n \"workers\": {\n \"app/_global-error/page\": {\n \"moduleId\": 39027,\n \"async\": false\n },\n \"app/_not-found/page\": {\n \"moduleId\": 37985,\n \"async\": false\n },\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false\n },\n \"app/page\": {\n \"moduleId\": 24190,\n \"async\": false\n },\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n },\n \"app/project/[name]/page\": {\n \"moduleId\": 165,\n \"async\": false\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false\n },\n \"app/projects/page\": {\n \"moduleId\": 26035,\n \"async\": false\n },\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-telemetry-config.ts\",\n \"exportedName\": \"getTelemetryConfig\"\n },\n \"0091bd421e245b66ac576aa06dd709cb3deae97af4\": {\n \"workers\": {\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-audit-result.ts\",\n \"exportedName\": \"getAuditResultAction\"\n },\n \"40e2a4ec3741f9b54515cf8cdbaf2b096a2af377e4\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"getHookActivityAction\"\n },\n \"60ee72ce0b206ad2278e6b42ce4bf3e99600218213\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"searchHookActivityAction\"\n },\n \"00fc87b479815613ad45f02863e93f0d8a6ced2069\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-active-pauses.ts\",\n \"exportedName\": \"getActivePausesAction\"\n },\n \"00c31833e34ccfe367d76278bf16e044588ba8371d\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-hooks-config.ts\",\n \"exportedName\": \"getHooksConfigAction\"\n },\n \"603b75ff3dbe4e43832dd3ddbef359119e4a8b06c5\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-hooks-config.ts\",\n \"exportedName\": \"toggleCustomPolicyAction\"\n },\n \"0037690a8564928273cada82d77295b4f50152838f\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addBundledPackWebAction\"\n },\n \"604e2cd15d56852adee4fc29ee31f2cd0b7c4d4b57\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addPackWebAction\"\n },\n \"40f2551cddefdb953206c4e2a7294508b0d7876997\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"previewPackWebAction\"\n },\n \"40be009d7facad11902ceab2c59ec692574248e9f8\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"removePackWebAction\"\n },\n \"706e167df729ed5d3b7a202dc1778758b4ef691596\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"togglePackPolicyAction\"\n },\n \"607d8a4ef997a09194cf366a1b64e762b7ae7058c8\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"installHooksWebAction\"\n },\n \"60f7e5f0fe8a961f50fadc68aaabf08529a4152b6a\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"removeHooksWebAction\"\n },\n \"601ba8a1e741d54ee7d7b728a3b9ddf16775cbc363\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-policy-params.ts\",\n \"exportedName\": \"updatePolicyParamsAction\"\n },\n \"00c79e28570789986ae1d50a53934e133a5014d54d\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-scheduled-audit.ts\",\n \"exportedName\": \"getScheduledAuditAction\"\n },\n \"003a559f3d271119cc52526aa453f876d1d33ecbb1\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/get-jev-config.ts\",\n \"exportedName\": \"getJevSettingsAction\"\n },\n \"003c53cd5bbc001efc897ca1e19975148a294a401a\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"removeJevConfigAction\"\n },\n \"40367a3711a2809830da9a7bf2292a6bab38bad6fb\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"saveJevConfigAction\"\n },\n \"40ae43c5364070e504c861c3f03c46b201475b3b02\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"setJevModeAction\"\n },\n \"402be197203adadba7b4918e1995fadf9787341405\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAutoAuditAction\"\n },\n \"40c5ba9abd08f8d813424658db6c2d084e92bc7b66\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAuditIntervalAction\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"vhZlFfdrpaR9qBK+mJtM1PxFTqMtF1cl0XT/ibjyejs=\"\n}"
|