failproofai 0.0.13 → 0.0.14-beta.1
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/.codex/hooks.json +6 -6
- package/.next/standalone/.cursor/hooks.json +6 -6
- package/.next/standalone/.factory/hooks.json +112 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.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 +7 -7
- 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 +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.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 +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- 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/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/standalone/.next/server/app/api/audit/run/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/reminder/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 +2 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js.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 +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js +1 -1
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +3 -2
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +5 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +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/chunks/[root-of-the-server]__0--lkk6._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-219ec._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04_h-a5._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06cuf1y._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08w4wmd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g6bbuw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jllheg._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jnjf2t._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q-v9z2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q0qzx1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q2nbsl._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rv7m0k._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16le-kd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__17g9wh7._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1d9qen3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ffkmds._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1fwl2mz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1legmza._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1mrihkj._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1myjm-d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qb590j._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qxztj-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1shcqgr._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xuedea._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_1z062h5._.js → _1vslkoe._.js} +2 -2
- package/.next/standalone/.next/server/chunks/lib_factory-projects_ts_1eo_bk-._.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_openclaw-projects_ts_0gc-p24._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_17k9e3w.js +24 -12
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00cz9as._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__015_i4t._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__030k0c6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03lv-pe._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__042d3cd._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05r_17v._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09q1168._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__108slqn._.js → [root-of-the-server]__0brjczq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e2l3c1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hci7t3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hdsupo._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p84xee._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qeuy9c._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s89hoe._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__07iom4f._.js → [root-of-the-server]__0wp9w6i._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ynf7tx._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__170799-._.js +12 -9
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__17ai7sy._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1d8omgc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1nq7ivq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1tkjqka._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_05whahf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0_9_ytf._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_11_p9y8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0ul5rf_._.js → _1_ozgif._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1p0-leb._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_087bt9w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_1fvisnp._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_209u41o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/lib_0xkhw_v._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_antigravity-projects_ts_0_6zf11._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_devin-projects_ts_0a64qdy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_factory-projects_ts_1uyaahq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_goose-projects_ts_0zkscri._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_openclaw-projects_ts_0qxq3bp._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_13p7zob.js → node_modules_html-to-image_es_index_12rjfea.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_1ezd2jf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_1tnuifj._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +10 -10
- package/.next/standalone/.next/static/chunks/{13f1kmjea-0md.js → 02jcotghcxrbu.js} +1 -1
- package/.next/standalone/.next/static/chunks/{30ysv-_8jj052.js → 0d5lypu1zs21r.js} +1 -1
- package/.next/standalone/.next/static/chunks/0emg30_6svycu.js +1 -0
- package/.next/standalone/.next/static/chunks/0o9wpnze1ey8y.js +6 -0
- package/.next/standalone/.next/static/chunks/{05apzuand0c22.js → 1359o5785rmve.js} +2 -2
- package/.next/standalone/.next/static/chunks/20tuctw38jbgw.js +1 -0
- package/.next/standalone/.next/static/chunks/{0vc0eak148vo6.js → 2ldhnaweu9ew3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{23c7v2svx90dp.js → 2vav_x0_336ds.js} +1 -1
- package/.next/standalone/.next/static/chunks/3-ogr79xqbw0h.js +1 -0
- package/.next/standalone/.next/static/chunks/36j05kb2x323i.css +2 -0
- package/.next/standalone/.next/static/chunks/3cg7x0joi2b98.js +1 -0
- package/.next/standalone/.next/static/chunks/{36wdtkgdf0zrd.js → 3k87p-tijud-4.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2cejn75gug3j8.js → 3kmaqcp7rldad.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0vavqo2d-tlt3.js → turbopack-10hj8t5pf33tu.js} +1 -1
- package/.next/standalone/.opencode/plugins/failproofai.mjs +30 -11
- package/.next/standalone/app/api/audit/run/route.ts +2 -0
- package/.next/standalone/app/audit/_components/empty-state.tsx +1 -1
- package/.next/standalone/app/components/global-error-listeners.tsx +27 -0
- package/.next/standalone/app/globals.css +25 -1
- package/.next/standalone/app/policies/hooks-client.tsx +2 -4
- package/.next/standalone/app/project/[name]/page.tsx +30 -10
- package/.next/standalone/app/project/[name]/session/[sessionId]/page.tsx +71 -21
- package/.next/standalone/assets/logos/antigravity.svg +1 -0
- package/.next/standalone/assets/logos/devin.svg +1 -0
- package/.next/standalone/assets/logos/factory-dark.png +0 -0
- package/.next/standalone/assets/logos/factory-light.png +0 -0
- package/.next/standalone/assets/logos/goose-dark.svg +1 -0
- package/.next/standalone/assets/logos/goose-light.svg +1 -0
- package/.next/standalone/assets/logos/openclaw.svg +22 -0
- package/.next/standalone/ci/cli-integration/Dockerfile +47 -0
- package/.next/standalone/ci/cli-integration/README.md +69 -0
- package/.next/standalone/ci/cli-integration/canary-policies.mjs +45 -0
- package/.next/standalone/ci/cli-integration/capture-tokens.sh +48 -0
- package/.next/standalone/ci/cli-integration/inject-tokens.sh +44 -0
- package/.next/standalone/ci/cli-integration/install-clis.sh +91 -0
- package/.next/standalone/ci/cli-integration/probe-cli.sh +208 -0
- package/.next/standalone/ci/cli-integration/report.js +74 -0
- package/.next/standalone/ci/cli-integration/run.sh +107 -0
- package/.next/standalone/components/navbar.tsx +5 -11
- package/.next/standalone/components/reach-developers.tsx +2 -2
- package/.next/standalone/docker-hook-sync/Dockerfile +8 -4
- package/.next/standalone/lib/antigravity-projects.ts +224 -0
- package/.next/standalone/lib/antigravity-sessions.ts +283 -0
- package/.next/standalone/lib/cli-registry.ts +26 -6
- package/.next/standalone/lib/devin-projects.ts +141 -0
- package/.next/standalone/lib/devin-sessions.ts +343 -0
- package/.next/standalone/lib/download-session.ts +56 -5
- package/.next/standalone/lib/error-origin.ts +67 -0
- package/.next/standalone/lib/factory-projects.ts +109 -0
- package/.next/standalone/lib/factory-sessions.ts +312 -0
- package/.next/standalone/lib/goose-projects.ts +148 -0
- package/.next/standalone/lib/goose-sessions.ts +296 -0
- package/.next/standalone/lib/install-check.ts +231 -0
- package/.next/standalone/lib/openclaw-projects.ts +182 -0
- package/.next/standalone/lib/openclaw-sessions.ts +284 -0
- package/.next/standalone/lib/projects.ts +33 -9
- package/.next/standalone/lib/telemetry-sanitize.ts +43 -0
- package/.next/standalone/openclaw-plugin/index.js +223 -0
- package/.next/standalone/openclaw-plugin/openclaw.plugin.json +6 -0
- package/.next/standalone/openclaw-plugin/package.json +12 -0
- package/.next/standalone/package.json +2 -3
- package/.next/standalone/server.js +1 -1
- package/README.md +94 -62
- package/bin/failproofai.mjs +98 -30
- package/dist/cli.mjs +12499 -9243
- package/lib/antigravity-projects.ts +224 -0
- package/lib/antigravity-sessions.ts +283 -0
- package/lib/cli-registry.ts +26 -6
- package/lib/devin-projects.ts +141 -0
- package/lib/devin-sessions.ts +343 -0
- package/lib/download-session.ts +56 -5
- package/lib/error-origin.ts +67 -0
- package/lib/factory-projects.ts +109 -0
- package/lib/factory-sessions.ts +312 -0
- package/lib/goose-projects.ts +148 -0
- package/lib/goose-sessions.ts +296 -0
- package/lib/install-check.ts +231 -0
- package/lib/openclaw-projects.ts +182 -0
- package/lib/openclaw-sessions.ts +284 -0
- package/lib/projects.ts +33 -9
- package/lib/telemetry-sanitize.ts +43 -0
- package/openclaw-plugin/index.js +223 -0
- package/openclaw-plugin/openclaw.plugin.json +6 -0
- package/openclaw-plugin/package.json +12 -0
- package/package.json +2 -3
- package/scripts/dev-hook.mjs +292 -0
- package/scripts/install-diagnosis.mjs +5 -8
- package/scripts/install-telemetry.mjs +12 -4
- package/scripts/launch.ts +4 -8
- package/scripts/sync-agent-cli-harnesses-prompt.md +7 -10
- package/scripts/translate-docs/cli.ts +120 -53
- package/scripts/translate-docs/config.ts +57 -13
- package/scripts/translate-docs/mdx-translator.ts +177 -28
- package/scripts/translate-docs/mintlify-nav.ts +91 -10
- package/scripts/translate-docs/readme-translator.ts +13 -5
- package/scripts/translate-docs/translator.ts +38 -2
- package/scripts/translate-docs/types.ts +3 -0
- package/scripts/validate-mdx.ts +12 -4
- package/src/audit/cli-adapters/antigravity.ts +87 -0
- package/src/audit/cli-adapters/devin.ts +53 -0
- package/src/audit/cli-adapters/factory.ts +75 -0
- package/src/audit/cli-adapters/goose.ts +53 -0
- package/src/audit/cli-adapters/index.ts +30 -6
- package/src/audit/cli-adapters/openclaw.ts +56 -0
- package/src/audit/cli.ts +83 -8
- package/src/audit/report.ts +1 -1
- package/src/audit/types.ts +1 -1
- package/src/hooks/builtin-policies.ts +5 -5
- package/src/hooks/configure-wizard.ts +356 -0
- package/src/hooks/handler.ts +283 -218
- package/src/hooks/hook-telemetry.ts +43 -3
- package/src/hooks/install-prompt.ts +92 -173
- package/src/hooks/integrations.ts +739 -138
- package/src/hooks/manager.ts +46 -2
- package/src/hooks/policy-evaluator.ts +301 -121
- package/src/hooks/policy-presets.ts +71 -0
- package/src/hooks/resolve-cwd.ts +1 -1
- package/src/hooks/resolve-permission-mode.ts +1 -5
- package/src/hooks/resolve-transcript-path.ts +25 -7
- package/src/hooks/tool-name-canonicalize.ts +36 -3
- package/src/hooks/tui.ts +578 -0
- package/src/hooks/types.ts +447 -109
- package/.next/standalone/.gemini/settings.json +0 -147
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cag8qd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cefjd9._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ekj92q._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12v-lma._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__136y39g._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h8pzr._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hgv_75._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04bqvos._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dqgs96._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0q5rfxg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qukut7._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ql-mch._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_11v0g3z._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/lib_gemini-projects_ts_1c7bgx-._.js +0 -3
- package/.next/standalone/.next/static/chunks/0fa7j157kg9_d.js +0 -1
- package/.next/standalone/.next/static/chunks/0nrah-qv6smeg.js +0 -6
- package/.next/standalone/.next/static/chunks/0wtagd8a5gwq-.js +0 -1
- package/.next/standalone/.next/static/chunks/1c8i78p7t1i-5.js +0 -1
- package/.next/standalone/.next/static/chunks/25qr0e6ez0ei0.js +0 -1
- package/.next/standalone/.next/static/chunks/25s52un3k_wht.css +0 -2
- package/.next/standalone/assets/logos/gemini-dark.svg +0 -13
- package/.next/standalone/assets/logos/gemini-light.svg +0 -13
- package/.next/standalone/lib/gemini-projects.ts +0 -243
- package/.next/standalone/lib/gemini-sessions.ts +0 -365
- package/lib/gemini-projects.ts +0 -243
- package/lib/gemini-sessions.ts +0 -365
- package/scripts/postinstall.mjs +0 -243
- package/scripts/preuninstall.mjs +0 -131
- package/src/audit/cli-adapters/gemini.ts +0 -51
- package/src/hooks/first-run-nudge.ts +0 -146
- /package/.next/standalone/.next/static/{kmzdjTLVs6LqsfyOaUf69 → LkN-JjmhKGmL-WklH7WVi}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{kmzdjTLVs6LqsfyOaUf69 → LkN-JjmhKGmL-WklH7WVi}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{kmzdjTLVs6LqsfyOaUf69 → LkN-JjmhKGmL-WklH7WVi}/_ssgManifest.js +0 -0
package/bin/failproofai.mjs
CHANGED
|
@@ -36,6 +36,9 @@ const args = process.argv.slice(2);
|
|
|
36
36
|
|
|
37
37
|
// Normalize 'p' → 'policies' (shorthand alias)
|
|
38
38
|
if (args[0] === "p") args[0] = "policies";
|
|
39
|
+
// Normalize 'configure' / 'setup' → 'config' (aliases), so every later check
|
|
40
|
+
// (SUBCOMMANDS, dispatch) mentions only the canonical name.
|
|
41
|
+
if (args[0] === "configure" || args[0] === "setup") args[0] = "config";
|
|
39
42
|
|
|
40
43
|
// Lightweight telemetry helper for CLI lifecycle events. Lazy-loads to avoid
|
|
41
44
|
// pulling in the hook-telemetry / telemetry-id modules on the fast --hook path.
|
|
@@ -65,7 +68,7 @@ const hookIdx = args.indexOf("--hook");
|
|
|
65
68
|
if (hookIdx >= 0) {
|
|
66
69
|
if (!args[hookIdx + 1]) {
|
|
67
70
|
console.error("Error: Missing event type after --hook");
|
|
68
|
-
console.error("Usage: failproofai --hook <event> [--cli <claude|codex|copilot|cursor|opencode|pi|
|
|
71
|
+
console.error("Usage: failproofai --hook <event> [--cli <claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose>]");
|
|
69
72
|
process.exit(1);
|
|
70
73
|
}
|
|
71
74
|
const eventType = args[hookIdx + 1];
|
|
@@ -81,14 +84,20 @@ if (hookIdx >= 0) {
|
|
|
81
84
|
|| cliArg === "cursor"
|
|
82
85
|
|| cliArg === "opencode"
|
|
83
86
|
|| cliArg === "pi"
|
|
84
|
-
|| cliArg === "gemini"
|
|
85
87
|
|| cliArg === "hermes"
|
|
88
|
+
|| cliArg === "openclaw"
|
|
89
|
+
|| cliArg === "factory"
|
|
90
|
+
|| cliArg === "devin"
|
|
91
|
+
|| cliArg === "antigravity"
|
|
92
|
+
|| cliArg === "goose"
|
|
86
93
|
)
|
|
87
94
|
? cliArg
|
|
88
95
|
: "claude";
|
|
89
96
|
try {
|
|
90
97
|
const { handleHookEvent } = await import("../src/hooks/handler");
|
|
91
98
|
const exitCode = await handleHookEvent(eventType, cli);
|
|
99
|
+
// handleHookEvent already flushes its own telemetry before returning; this
|
|
100
|
+
// is the normal, reliable exit.
|
|
92
101
|
process.exit(exitCode);
|
|
93
102
|
} catch (err) {
|
|
94
103
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -97,6 +106,13 @@ if (hookIdx >= 0) {
|
|
|
97
106
|
cli,
|
|
98
107
|
error_type: err instanceof Error ? err.name : "unknown",
|
|
99
108
|
});
|
|
109
|
+
// handleHookEvent threw before its own flush ran, so any events it fired
|
|
110
|
+
// with `void trackHookEvent(...)` are still in flight — drain them (plus the
|
|
111
|
+
// hook_dispatch_error above) before exiting so they aren't dropped.
|
|
112
|
+
try {
|
|
113
|
+
const { flushHookTelemetry } = await import("../src/hooks/hook-telemetry");
|
|
114
|
+
await flushHookTelemetry();
|
|
115
|
+
} catch {}
|
|
100
116
|
console.error(`Unexpected error: ${msg}`);
|
|
101
117
|
process.exit(2);
|
|
102
118
|
}
|
|
@@ -108,8 +124,18 @@ if (hookIdx >= 0) {
|
|
|
108
124
|
* Error → unexpected; shows message only, exits 2
|
|
109
125
|
*/
|
|
110
126
|
async function runCli() {
|
|
127
|
+
// Report a fresh install / upgrade. Deliberately here rather than at module
|
|
128
|
+
// scope: everything above this point is the --hook fast path, which runs on
|
|
129
|
+
// every tool call. No-ops after the first run on a given version.
|
|
130
|
+
try {
|
|
131
|
+
const { maybeReportInstall } = await import("../lib/install-check");
|
|
132
|
+
await maybeReportInstall(version);
|
|
133
|
+
} catch {
|
|
134
|
+
// never block a command on reporting
|
|
135
|
+
}
|
|
136
|
+
|
|
111
137
|
// --help / -h (only when not inside a subcommand that handles its own --help)
|
|
112
|
-
const SUBCOMMANDS = ["policies", "policy", "auth", "audit"];
|
|
138
|
+
const SUBCOMMANDS = ["policies", "policy", "auth", "audit", "config"];
|
|
113
139
|
if ((args.includes("--help") || args.includes("-h")) && !SUBCOMMANDS.includes(args[0])) {
|
|
114
140
|
const extraArgs = args.filter((a) => a !== "--help" && a !== "-h");
|
|
115
141
|
if (extraArgs.length > 0) {
|
|
@@ -123,6 +149,7 @@ USAGE
|
|
|
123
149
|
|
|
124
150
|
COMMANDS
|
|
125
151
|
(no args) Launch the policy dashboard
|
|
152
|
+
config Interactive setup — pick scope, agents & policies
|
|
126
153
|
|
|
127
154
|
policy add <name> Enable a single policy (see \`policy --help\`)
|
|
128
155
|
policy remove <name> Disable a single policy
|
|
@@ -130,18 +157,18 @@ COMMANDS
|
|
|
130
157
|
policies, p List all available policies and their status
|
|
131
158
|
policies --install, -i Enable policies in agent CLI settings
|
|
132
159
|
[names...] Specific policy names to enable
|
|
133
|
-
--cli claude|codex|copilot|cursor|opencode|pi|
|
|
160
|
+
--cli claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose
|
|
134
161
|
Agent CLI(s) to install for; space-separated
|
|
135
|
-
(e.g. --cli claude codex copilot cursor opencode pi
|
|
162
|
+
(e.g. --cli claude codex copilot cursor opencode pi hermes openclaw factory devin antigravity goose) or repeated.
|
|
136
163
|
Default: detect installed CLIs and prompt.
|
|
137
164
|
--scope user|project|local Config scope to write to (default: user)
|
|
138
|
-
(Codex / Copilot / Cursor / OpenCode / Pi
|
|
165
|
+
(Codex / Copilot / Cursor / OpenCode / Pi support user|project only)
|
|
139
166
|
--beta Include beta policies
|
|
140
167
|
--custom, -c <path> Path to a JS file of custom policies
|
|
141
168
|
|
|
142
169
|
policies --uninstall, -u Disable policies or remove hooks
|
|
143
170
|
[names...] Specific policy names to disable
|
|
144
|
-
--cli claude|codex|copilot|cursor|opencode|pi|
|
|
171
|
+
--cli claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose
|
|
145
172
|
Agent CLI(s) to uninstall from
|
|
146
173
|
--scope user|project|local|all Config scope to remove from (default: user)
|
|
147
174
|
--beta Remove only beta policies
|
|
@@ -176,8 +203,9 @@ EXAMPLES
|
|
|
176
203
|
failproofai policies --install --cli cursor --scope project
|
|
177
204
|
failproofai policies --install --cli opencode --scope project
|
|
178
205
|
failproofai policies --install --cli pi --scope project
|
|
179
|
-
failproofai policies --install --cli
|
|
180
|
-
failproofai policies --install --cli
|
|
206
|
+
failproofai policies --install --cli factory --scope project
|
|
207
|
+
failproofai policies --install --cli devin --scope project
|
|
208
|
+
failproofai policies --install --cli claude codex copilot cursor opencode pi hermes openclaw factory devin antigravity goose
|
|
181
209
|
failproofai policies --install --custom ./my-policies.js
|
|
182
210
|
failproofai policies -i -c ./my-policies.js
|
|
183
211
|
failproofai policies --uninstall block-sudo
|
|
@@ -186,13 +214,12 @@ EXAMPLES
|
|
|
186
214
|
failproofai policies --uninstall --cli cursor
|
|
187
215
|
failproofai policies --uninstall --cli opencode
|
|
188
216
|
failproofai policies --uninstall --cli pi
|
|
189
|
-
failproofai policies --uninstall --cli gemini
|
|
190
217
|
failproofai policies --uninstall --custom
|
|
191
218
|
|
|
192
219
|
LINKS
|
|
193
220
|
⭐ Star us: https://github.com/failproofai/failproofai
|
|
194
221
|
📖 Docs: https://docs.befailproof.ai/introduction
|
|
195
|
-
💬 Discord: https://discord.
|
|
222
|
+
💬 Discord: https://discord.befailproof.ai/
|
|
196
223
|
`.trimStart());
|
|
197
224
|
process.exit(0);
|
|
198
225
|
}
|
|
@@ -226,20 +253,20 @@ USAGE
|
|
|
226
253
|
|
|
227
254
|
OPTIONS (install)
|
|
228
255
|
[names...] Specific policy names to enable (omit for interactive)
|
|
229
|
-
--cli claude|codex|copilot|cursor|opencode|pi|
|
|
256
|
+
--cli claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose
|
|
230
257
|
Agent CLI(s) to install for; space-separated
|
|
231
|
-
(e.g. --cli claude codex copilot cursor opencode pi
|
|
258
|
+
(e.g. --cli claude codex copilot cursor opencode pi hermes openclaw factory devin antigravity goose) or repeated.
|
|
232
259
|
Omit to detect installed CLIs and prompt (or
|
|
233
260
|
auto-pick if only one is found).
|
|
234
261
|
--scope user|project|local Config scope to write to (default: user)
|
|
235
|
-
(Codex / Copilot / Cursor / OpenCode / Pi
|
|
262
|
+
(Codex / Copilot / Cursor / OpenCode / Pi support user|project only)
|
|
236
263
|
--beta Include beta policies
|
|
237
264
|
--custom, -c <path> Path to a JS file of custom policies
|
|
238
265
|
(skips interactive prompt; validates file first)
|
|
239
266
|
|
|
240
267
|
OPTIONS (uninstall)
|
|
241
268
|
[names...] Specific policy names to disable (omit to remove hooks)
|
|
242
|
-
--cli claude|codex|copilot|cursor|opencode|pi|
|
|
269
|
+
--cli claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose
|
|
243
270
|
Agent CLI(s) to uninstall from
|
|
244
271
|
--scope user|project|local|all Config scope to remove from (default: user)
|
|
245
272
|
--beta Remove only beta policies
|
|
@@ -254,8 +281,9 @@ EXAMPLES
|
|
|
254
281
|
failproofai policies --install --cli cursor --scope project
|
|
255
282
|
failproofai policies --install --cli opencode --scope project
|
|
256
283
|
failproofai policies --install --cli pi --scope project
|
|
257
|
-
failproofai policies --install --cli
|
|
258
|
-
failproofai policies --install --cli
|
|
284
|
+
failproofai policies --install --cli factory --scope project
|
|
285
|
+
failproofai policies --install --cli devin --scope project
|
|
286
|
+
failproofai policies --install --cli claude codex copilot cursor opencode pi hermes openclaw factory devin antigravity goose
|
|
259
287
|
failproofai policies --install --custom ./my-policies.js
|
|
260
288
|
failproofai policies -i -c ./my-policies.js
|
|
261
289
|
failproofai policies --uninstall block-sudo
|
|
@@ -296,7 +324,7 @@ EXAMPLES
|
|
|
296
324
|
// --cli claude codex copilot
|
|
297
325
|
// --cli claude --cli codex
|
|
298
326
|
// Values are consumed greedily until the next flag or end of argv.
|
|
299
|
-
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "
|
|
327
|
+
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
|
|
300
328
|
const cliFlagValues = [];
|
|
301
329
|
const cliConsumedIdxs = new Set();
|
|
302
330
|
const cliFlagIdxs = subArgs.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
|
|
@@ -313,7 +341,7 @@ EXAMPLES
|
|
|
313
341
|
consumed++;
|
|
314
342
|
}
|
|
315
343
|
if (consumed === 0) {
|
|
316
|
-
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi
|
|
344
|
+
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi hermes openclaw (or any subset)");
|
|
317
345
|
}
|
|
318
346
|
}
|
|
319
347
|
|
|
@@ -385,7 +413,7 @@ EXAMPLES
|
|
|
385
413
|
}
|
|
386
414
|
|
|
387
415
|
// --cli accepts one or more space-separated values; same parser as install.
|
|
388
|
-
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "
|
|
416
|
+
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
|
|
389
417
|
const cliFlagValues = [];
|
|
390
418
|
const cliConsumedIdxs = new Set();
|
|
391
419
|
const cliFlagIdxs = subArgs.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
|
|
@@ -402,7 +430,7 @@ EXAMPLES
|
|
|
402
430
|
consumed++;
|
|
403
431
|
}
|
|
404
432
|
if (consumed === 0) {
|
|
405
|
-
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi
|
|
433
|
+
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi hermes openclaw (or any subset)");
|
|
406
434
|
}
|
|
407
435
|
}
|
|
408
436
|
|
|
@@ -511,7 +539,7 @@ USAGE
|
|
|
511
539
|
failproofai policy remove <name> Disable one policy
|
|
512
540
|
|
|
513
541
|
OPTIONS
|
|
514
|
-
--cli claude|codex|copilot|cursor|opencode|pi|
|
|
542
|
+
--cli claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose
|
|
515
543
|
Agent CLI(s) to apply to; space-separated or repeated.
|
|
516
544
|
Omit to detect installed CLIs and prompt.
|
|
517
545
|
--scope user|project|local Config scope (default: user)
|
|
@@ -549,7 +577,7 @@ EXAMPLES
|
|
|
549
577
|
}
|
|
550
578
|
|
|
551
579
|
// --cli accepts one or more space-separated values, optionally repeated.
|
|
552
|
-
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "
|
|
580
|
+
const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
|
|
553
581
|
const cliFlagValues = [];
|
|
554
582
|
const cliConsumedIdxs = new Set();
|
|
555
583
|
const cliFlagIdxs = rest.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
|
|
@@ -564,7 +592,7 @@ EXAMPLES
|
|
|
564
592
|
consumed++;
|
|
565
593
|
}
|
|
566
594
|
if (consumed === 0) {
|
|
567
|
-
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi
|
|
595
|
+
throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi hermes openclaw (or any subset)");
|
|
568
596
|
}
|
|
569
597
|
}
|
|
570
598
|
|
|
@@ -652,6 +680,42 @@ EXAMPLES
|
|
|
652
680
|
process.exit(0);
|
|
653
681
|
}
|
|
654
682
|
|
|
683
|
+
// config — the interactive setup launcher (scope, agents, policies).
|
|
684
|
+
// `configure` and `setup` are canonicalized to "config" up top. Running it
|
|
685
|
+
// explicitly does NOT run the post-setup audit (that only fires on first-run
|
|
686
|
+
// onboarding via bare `failproofai`).
|
|
687
|
+
if (args[0] === "config") {
|
|
688
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
689
|
+
console.log(`
|
|
690
|
+
failproofai config — interactive setup
|
|
691
|
+
|
|
692
|
+
USAGE
|
|
693
|
+
failproofai config Guided setup: choose scope, agents, and policies
|
|
694
|
+
failproofai configure Alias for config
|
|
695
|
+
failproofai setup Alias for config
|
|
696
|
+
|
|
697
|
+
WHAT IT DOES
|
|
698
|
+
Walks you through 4 quick steps and writes everything for you:
|
|
699
|
+
1. Where — global (all projects) or just this project
|
|
700
|
+
2. Assistants — which agent CLIs to protect (Claude, Codex, ...)
|
|
701
|
+
3. Policies — presets (combine any), Everything, or a custom pick
|
|
702
|
+
4. Review — confirms the exact files it will change, then applies
|
|
703
|
+
|
|
704
|
+
Prefer flags? See \`failproofai policies --help\`.
|
|
705
|
+
`.trimStart());
|
|
706
|
+
process.exit(0);
|
|
707
|
+
}
|
|
708
|
+
lastSubcommand = "config";
|
|
709
|
+
const { runConfigureWizard } = await import("../src/hooks/configure-wizard");
|
|
710
|
+
const result = await runConfigureWizard();
|
|
711
|
+
await track("cli_configure_invoked", {
|
|
712
|
+
applied: result.applied,
|
|
713
|
+
scope: result.scope ?? null,
|
|
714
|
+
cli_count: result.clis?.length ?? 0,
|
|
715
|
+
});
|
|
716
|
+
process.exit(0);
|
|
717
|
+
}
|
|
718
|
+
|
|
655
719
|
// Unknown flag guard — must appear after all known-flag branches
|
|
656
720
|
const knownFlags = ["--version", "-v", "--help", "-h", "--hook"];
|
|
657
721
|
const unknownFlag = args.find(a => a.startsWith("-") && !knownFlags.includes(a));
|
|
@@ -693,18 +757,22 @@ EXAMPLES
|
|
|
693
757
|
);
|
|
694
758
|
}
|
|
695
759
|
|
|
696
|
-
// First-run
|
|
697
|
-
//
|
|
760
|
+
// First-run onboarding — on the first bare `failproofai` invocation, run the
|
|
761
|
+
// configure wizard (which also fires the post-setup audit) BEFORE the
|
|
762
|
+
// dashboard. Unlike before, we then fall through to launch the dashboard, so a
|
|
763
|
+
// fresh user gets: setup → audit → dashboard, and every later `failproofai`
|
|
764
|
+
// goes straight to the dashboard. Best-effort: any error must not block launch.
|
|
698
765
|
if (args.length === 0) {
|
|
699
766
|
try {
|
|
700
|
-
const {
|
|
701
|
-
await
|
|
767
|
+
const { maybeFirstRunConfigure } = await import("../src/hooks/configure-wizard");
|
|
768
|
+
await maybeFirstRunConfigure();
|
|
702
769
|
} catch {
|
|
703
|
-
//
|
|
770
|
+
// First-run onboarding is non-critical; fall through to the dashboard.
|
|
704
771
|
}
|
|
705
772
|
}
|
|
706
773
|
|
|
707
|
-
// Dashboard launch — always production mode
|
|
774
|
+
// Dashboard launch — always production mode. Runs on every bare `failproofai`
|
|
775
|
+
// (after first-run onboarding, if any).
|
|
708
776
|
const { launch } = await import("../scripts/launch");
|
|
709
777
|
launch("start");
|
|
710
778
|
}
|