failproofai 0.0.13-beta.2 → 0.0.14-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.factory/hooks.json +112 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- 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/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/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/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/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 +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/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/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/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]__0xuaoik._.js +3 -3
- 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]__1rlmypf._.js → [root-of-the-server]__07qfsfa._.js} +2 -2
- 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]__0e2l3c1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__09u1pcy._.js → [root-of-the-server]__0ge8e7w._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h12me5._.js +1 -1
- 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]__0ynf7tx._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11rtg6s._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__14dd6h8._.js +1 -1
- 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]__1dky4g0._.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/[root-of-the-server]__212nf49._.js +1 -1
- 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_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_09fe3kb.js → node_modules_html-to-image_es_index_0g5r64e.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-uvagv.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03c7gi5.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09p-8om.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0v-kfiu.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xrgzyz.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1806lsc.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1j6dd-e.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1sa65r-.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 +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/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +10 -10
- package/.next/standalone/.next/static/chunks/003uz088wbmz7.js +1 -0
- package/.next/standalone/.next/static/chunks/{0l2n5ftar65ox.js → 0405htbxay9vd.js} +1 -1
- package/.next/standalone/.next/static/chunks/0iinhn4417nk1.js +1 -0
- package/.next/standalone/.next/static/chunks/1374x9bv_s_vg.js +6 -0
- package/.next/standalone/.next/static/chunks/{06cw8nbn5c4_r.js → 17sdztgbcc0fi.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0i0joc040j999.js → 2m_tbl39fcedn.js} +1 -1
- package/.next/standalone/.next/static/chunks/{25qvspmcbb_5y.js → 2o3ql0n5owqsw.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2a-k91nsa1lgf.js → 2ufuwhv03yvtb.js} +1 -1
- package/.next/standalone/.next/static/chunks/35-90m9py64d4.js +1 -0
- package/.next/standalone/.next/static/chunks/3r--yyjkp9_7b.css +2 -0
- package/.next/standalone/.next/static/chunks/{23t-i9s-q--nu.js → 43weu8f59tlix.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2oz8ok8fzxaj3.js → 454dyizqik6t9.js} +2 -2
- 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/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/components/navbar.tsx +5 -11
- package/.next/standalone/components/reach-developers.tsx +1 -1
- 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/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/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 +4 -3
- package/.next/standalone/server.js +1 -1
- package/README.md +105 -57
- package/bin/failproofai.mjs +87 -29
- package/dist/cli.mjs +12803 -9809
- 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/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/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 +4 -3
- package/scripts/launch.ts +4 -8
- package/scripts/postinstall.mjs +3 -4
- package/scripts/sync-agent-cli-harnesses-prompt.md +7 -10
- package/scripts/translate-docs/cli.ts +73 -52
- package/scripts/translate-docs/config.ts +57 -13
- package/scripts/translate-docs/mdx-translator.ts +51 -31
- package/scripts/translate-docs/mintlify-nav.ts +91 -10
- package/scripts/translate-docs/types.ts +3 -0
- 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 +44 -1
- 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/1c8i78p7t1i-5.js +0 -1
- package/.next/standalone/.next/static/chunks/1sg8kx5szx42y.js +0 -6
- package/.next/standalone/.next/static/chunks/25s52un3k_wht.css +0 -2
- package/.next/standalone/.next/static/chunks/2rkvn4znvuy4o.js +0 -1
- 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/src/audit/cli-adapters/gemini.ts +0 -51
- package/src/hooks/first-run-nudge.ts +0 -146
- /package/.next/standalone/.next/static/{HgG0mizCfOM3XyN1EW-sL → MNJWFb2jLRrxRKGFNK6Hy}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{HgG0mizCfOM3XyN1EW-sL → MNJWFb2jLRrxRKGFNK6Hy}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{HgG0mizCfOM3XyN1EW-sL → MNJWFb2jLRrxRKGFNK6Hy}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curated policy bundles for the `failproofai config` wizard.
|
|
3
|
+
*
|
|
4
|
+
* Presets are resolved against BUILTIN_POLICIES by category (+ optional extras)
|
|
5
|
+
* so that adding a new builtin to an existing category automatically flows into
|
|
6
|
+
* the matching preset — the wizard stays in sync with the policy catalog with no
|
|
7
|
+
* manual list maintenance. Order here is the order shown in the wizard (before
|
|
8
|
+
* the "Everything" and "Custom…" entries).
|
|
9
|
+
*/
|
|
10
|
+
import { BUILTIN_POLICIES } from "./builtin-policies";
|
|
11
|
+
|
|
12
|
+
export interface PolicyPreset {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
description: string;
|
|
16
|
+
/** Categories whose (non-beta) policies are included in this preset. */
|
|
17
|
+
categories: string[];
|
|
18
|
+
/** Extra policy names to include beyond the category members. */
|
|
19
|
+
extra?: string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const POLICY_PRESETS: PolicyPreset[] = [
|
|
23
|
+
{
|
|
24
|
+
id: "secrets",
|
|
25
|
+
label: "Secrets & data",
|
|
26
|
+
description:
|
|
27
|
+
"Redact secrets in tool output, block .env & secret-file writes, keep reads inside the repo",
|
|
28
|
+
categories: ["Sanitize", "Environment"],
|
|
29
|
+
extra: ["block-secrets-write"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "git",
|
|
33
|
+
label: "Git safety",
|
|
34
|
+
description: "Block force-push & pushes to main, warn on history-rewriting git ops",
|
|
35
|
+
categories: ["Git"],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "ship",
|
|
39
|
+
label: "Ship discipline",
|
|
40
|
+
description:
|
|
41
|
+
"Don't let the agent finish until changes are committed, pushed, PR'd and CI is green",
|
|
42
|
+
categories: ["Workflow"],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "infra",
|
|
46
|
+
label: "Cloud & infra",
|
|
47
|
+
description: "Block kubectl / terraform / aws / gcloud / az / helm / gh pipeline commands",
|
|
48
|
+
categories: ["Infra Commands"],
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
/** Resolve a preset id to the concrete list of non-beta builtin policy names it
|
|
53
|
+
* enables. (Beta policies are wizard-excluded by design; reintroduce an
|
|
54
|
+
* includeBeta flag here if a `--beta` wizard path ever lands.) */
|
|
55
|
+
export function resolvePreset(id: string): string[] {
|
|
56
|
+
const preset = POLICY_PRESETS.find((p) => p.id === id);
|
|
57
|
+
if (!preset) return [];
|
|
58
|
+
const cats = new Set(preset.categories);
|
|
59
|
+
const fromCategories = BUILTIN_POLICIES.filter(
|
|
60
|
+
(p) => !p.beta && cats.has(p.category),
|
|
61
|
+
).map((p) => p.name);
|
|
62
|
+
const extras = (preset.extra ?? []).filter((name) =>
|
|
63
|
+
BUILTIN_POLICIES.some((p) => p.name === name && !p.beta),
|
|
64
|
+
);
|
|
65
|
+
return [...new Set([...fromCategories, ...extras])];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Every non-beta builtin policy (the "Everything" option). */
|
|
69
|
+
export function resolveEverything(): string[] {
|
|
70
|
+
return BUILTIN_POLICIES.filter((p) => !p.beta).map((p) => p.name);
|
|
71
|
+
}
|
package/src/hooks/resolve-cwd.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* the dashboard renders an em-dash, and `readMergedHooksConfig(cwd)` /
|
|
14
14
|
* `loadAllCustomHooks({ sessionCwd })` skip project-scope discovery.
|
|
15
15
|
*
|
|
16
|
-
* • Claude / Codex / Copilot /
|
|
16
|
+
* • Claude / Codex / Copilot / Pi / OpenCode: stdin's top-level
|
|
17
17
|
* `cwd` is reliable for every event; passthrough.
|
|
18
18
|
*
|
|
19
19
|
* Mirrors the dispatch pattern of `resolve-permission-mode.ts` and
|
|
@@ -32,10 +32,6 @@
|
|
|
32
32
|
* `tool_call` handlers always run with the same authority. Falls back to
|
|
33
33
|
* "default" via the same final branch as Copilot/Cursor.
|
|
34
34
|
*
|
|
35
|
-
* • Gemini CLI: hook payload doesn't carry a permission-mode field today.
|
|
36
|
-
* Falls back to "default" via the same final branch as Copilot/Cursor/
|
|
37
|
-
* OpenCode/Pi. Revisit when Gemini's hook protocol exposes a per-session
|
|
38
|
-
* authority signal (the docs as of 2026-04-13 do not).
|
|
39
35
|
*/
|
|
40
36
|
import { readFileSync } from "node:fs";
|
|
41
37
|
import { findCodexTranscript } from "../../lib/codex-sessions";
|
|
@@ -54,7 +50,7 @@ export function resolvePermissionMode(
|
|
|
54
50
|
return resolveCodexMode(sessionId) ?? "default";
|
|
55
51
|
}
|
|
56
52
|
|
|
57
|
-
// copilot, cursor, opencode, pi,
|
|
53
|
+
// copilot, cursor, opencode, pi, unknown integrations, or codex without a sessionId
|
|
58
54
|
return "default";
|
|
59
55
|
}
|
|
60
56
|
|
|
@@ -22,10 +22,6 @@
|
|
|
22
22
|
* • Pi: shim doesn't forward transcript_path. Discover at
|
|
23
23
|
* ~/.pi/agent/sessions/<encodedCwd>/<isoTimestamp>_<sessionId>.jsonl.
|
|
24
24
|
*
|
|
25
|
-
* • Gemini: docs say stdin carries transcript_path, but coverage is uneven
|
|
26
|
-
* across versions. Trust stdin first; fall back to discovery under
|
|
27
|
-
* ~/.gemini/tmp/<projectHash>/chats/<sessionId>.json.
|
|
28
|
-
*
|
|
29
25
|
* Mirrors the dispatch pattern of `resolve-permission-mode.ts`. Each
|
|
30
26
|
* `find*Transcript` helper performs its own existsSync + path-traversal
|
|
31
27
|
* containment check, so passing in a malformed sessionId is safe (returns
|
|
@@ -35,7 +31,8 @@ import { findCodexTranscript } from "../../lib/codex-sessions";
|
|
|
35
31
|
import { findCopilotTranscript } from "../../lib/copilot-sessions";
|
|
36
32
|
import { findCursorTranscript } from "../../lib/cursor-sessions";
|
|
37
33
|
import { findPiTranscript } from "../../lib/pi-sessions";
|
|
38
|
-
import {
|
|
34
|
+
import { findFactoryTranscript } from "../../lib/factory-sessions";
|
|
35
|
+
import { findAntigravityTranscript } from "../../lib/antigravity-sessions";
|
|
39
36
|
import type { IntegrationType } from "./types";
|
|
40
37
|
|
|
41
38
|
export function resolveTranscriptPath(
|
|
@@ -59,14 +56,35 @@ export function resolveTranscriptPath(
|
|
|
59
56
|
return findCursorTranscript(sessionId) ?? undefined;
|
|
60
57
|
case "pi":
|
|
61
58
|
return findPiTranscript(sessionId) ?? undefined;
|
|
62
|
-
case "
|
|
63
|
-
|
|
59
|
+
case "factory":
|
|
60
|
+
// Factory writes real JSONL at
|
|
61
|
+
// ~/.factory/sessions/<encoded-cwd>/<sessionId>.jsonl (Claude-style).
|
|
62
|
+
return findFactoryTranscript(sessionId) ?? undefined;
|
|
63
|
+
case "antigravity":
|
|
64
|
+
// Antigravity writes real JSONL at ~/.gemini/antigravity-cli/brain/
|
|
65
|
+
// <conversationId>/.system_generated/logs/transcript_full.jsonl.
|
|
66
|
+
return findAntigravityTranscript(sessionId) ?? undefined;
|
|
67
|
+
case "devin":
|
|
68
|
+
// Devin keeps sessions in SQLite (~/.local/share/devin/cli/sessions.db);
|
|
69
|
+
// there is no on-disk transcript file, so hand back a virtual path (like
|
|
70
|
+
// opencode) — audit/download read the DB directly.
|
|
71
|
+
return `devin-db://${sessionId}`;
|
|
72
|
+
case "goose":
|
|
73
|
+
// Goose keeps sessions in SQLite (~/.local/share/goose/sessions/sessions.db);
|
|
74
|
+
// its live-hook payload carries no transcript file, so hand back a virtual
|
|
75
|
+
// path (like devin) — audit/download read the DB directly.
|
|
76
|
+
return `goose-db://${sessionId}`;
|
|
64
77
|
case "opencode":
|
|
65
78
|
return `opencode-db://${sessionId}`;
|
|
66
79
|
case "hermes":
|
|
67
80
|
// Hermes live-hook payloads carry no transcript file; the audit path
|
|
68
81
|
// reads sessions straight from ~/.hermes/state.db (see hermes-sessions.ts).
|
|
69
82
|
return undefined;
|
|
83
|
+
case "openclaw":
|
|
84
|
+
// OpenClaw's plugin shim forwards transcript_path in stdin (handled by the
|
|
85
|
+
// early return above); its audit path reads the real JSONL sessions
|
|
86
|
+
// directly via lib/openclaw-sessions.ts, so no discovery is needed here.
|
|
87
|
+
return undefined;
|
|
70
88
|
default:
|
|
71
89
|
return undefined;
|
|
72
90
|
}
|
|
@@ -9,14 +9,22 @@ import type { IntegrationType } from "./types";
|
|
|
9
9
|
import {
|
|
10
10
|
CODEX_TOOL_MAP,
|
|
11
11
|
COPILOT_TOOL_MAP,
|
|
12
|
+
COPILOT_TOOL_INPUT_MAP,
|
|
12
13
|
CURSOR_TOOL_MAP,
|
|
13
14
|
OPENCODE_TOOL_MAP,
|
|
14
15
|
OPENCODE_TOOL_INPUT_MAP,
|
|
15
16
|
PI_TOOL_MAP,
|
|
16
17
|
PI_TOOL_INPUT_MAP,
|
|
17
|
-
GEMINI_TOOL_MAP,
|
|
18
18
|
HERMES_TOOL_MAP,
|
|
19
19
|
HERMES_TOOL_INPUT_MAP,
|
|
20
|
+
OPENCLAW_TOOL_MAP,
|
|
21
|
+
OPENCLAW_TOOL_INPUT_MAP,
|
|
22
|
+
FACTORY_TOOL_MAP,
|
|
23
|
+
DEVIN_TOOL_MAP,
|
|
24
|
+
ANTIGRAVITY_TOOL_MAP,
|
|
25
|
+
ANTIGRAVITY_TOOL_INPUT_MAP,
|
|
26
|
+
GOOSE_TOOL_MAP,
|
|
27
|
+
GOOSE_TOOL_INPUT_MAP,
|
|
20
28
|
} from "./types";
|
|
21
29
|
|
|
22
30
|
/**
|
|
@@ -32,10 +40,22 @@ export function canonicalizeToolName(
|
|
|
32
40
|
if (cli === "copilot") return COPILOT_TOOL_MAP[raw] ?? raw;
|
|
33
41
|
if (cli === "cursor") return CURSOR_TOOL_MAP[raw] ?? raw;
|
|
34
42
|
if (cli === "codex") return CODEX_TOOL_MAP[raw] ?? raw;
|
|
35
|
-
if (cli === "gemini") return GEMINI_TOOL_MAP[raw] ?? raw;
|
|
36
43
|
if (cli === "opencode") return OPENCODE_TOOL_MAP[raw] ?? raw;
|
|
37
44
|
if (cli === "pi") return PI_TOOL_MAP[raw] ?? raw;
|
|
38
45
|
if (cli === "hermes") return HERMES_TOOL_MAP[raw] ?? raw;
|
|
46
|
+
if (cli === "openclaw") return OPENCLAW_TOOL_MAP[raw] ?? raw;
|
|
47
|
+
// Factory droid: Execute→Bash, Create→Write, FetchUrl→WebFetch, … (verified
|
|
48
|
+
// live against droid v0.171.0). tool_input keys are already canonical.
|
|
49
|
+
if (cli === "factory") return FACTORY_TOOL_MAP[raw] ?? raw;
|
|
50
|
+
// Devin CLI: exec→Bash (verified live against devin v3000.1.27).
|
|
51
|
+
// tool_input.command is already canonical.
|
|
52
|
+
if (cli === "devin") return DEVIN_TOOL_MAP[raw] ?? raw;
|
|
53
|
+
// Antigravity CLI: run_command→Bash (verified agy v1.1.2), view_file→Read, …
|
|
54
|
+
// (best-effort). tool_input keys are PascalCase → ANTIGRAVITY_TOOL_INPUT_MAP.
|
|
55
|
+
if (cli === "antigravity") return ANTIGRAVITY_TOOL_MAP[raw] ?? raw;
|
|
56
|
+
// Goose: shell→Bash, write/edit/view→file ops, todo__todo_write→TodoWrite, …
|
|
57
|
+
// (verified live against goose v1.43.0). Handles bare + `<ext>__<tool>` names.
|
|
58
|
+
if (cli === "goose") return GOOSE_TOOL_MAP[raw] ?? raw;
|
|
39
59
|
return raw;
|
|
40
60
|
}
|
|
41
61
|
|
|
@@ -57,11 +77,24 @@ export function canonicalizeToolInput(
|
|
|
57
77
|
return rawInput;
|
|
58
78
|
}
|
|
59
79
|
let perToolMap: Record<string, string> | undefined;
|
|
60
|
-
|
|
80
|
+
// Copilot file tools deliver `path` (+ Write's `file_text`, Edit's
|
|
81
|
+
// `old_str`/`new_str`); map to canonical keys so path/content builtins fire
|
|
82
|
+
// (verified live against Copilot CLI 1.0.71).
|
|
83
|
+
if (cli === "copilot") perToolMap = COPILOT_TOOL_INPUT_MAP[toolName];
|
|
84
|
+
else if (cli === "opencode") perToolMap = OPENCODE_TOOL_INPUT_MAP[toolName];
|
|
61
85
|
else if (cli === "pi") perToolMap = PI_TOOL_INPUT_MAP[toolName];
|
|
62
86
|
// Hermes read_file/write_file/patch deliver the file path as `path`; map it to
|
|
63
87
|
// `file_path` so path/content builtins fire (verified against a live state.db).
|
|
64
88
|
else if (cli === "hermes") perToolMap = HERMES_TOOL_INPUT_MAP[toolName];
|
|
89
|
+
// OpenClaw file tools (read/write/edit) deliver the path as `path`; exec
|
|
90
|
+
// already delivers `command`. Map path → file_path so path builtins fire.
|
|
91
|
+
else if (cli === "openclaw") perToolMap = OPENCLAW_TOOL_INPUT_MAP[toolName];
|
|
92
|
+
// Antigravity's run_command args are PascalCase (`CommandLine`, `Cwd`); map
|
|
93
|
+
// to `command`/`cwd` so Bash builtins fire (verified agy v1.1.2).
|
|
94
|
+
else if (cli === "antigravity") perToolMap = ANTIGRAVITY_TOOL_INPUT_MAP[toolName];
|
|
95
|
+
// Goose file tools (write/edit/view) deliver the path as `path`, read_image as
|
|
96
|
+
// `source`; map to `file_path` so path builtins fire (verified goose v1.43.0).
|
|
97
|
+
else if (cli === "goose") perToolMap = GOOSE_TOOL_INPUT_MAP[toolName];
|
|
65
98
|
if (!perToolMap) return rawInput;
|
|
66
99
|
const out: Record<string, unknown> = {};
|
|
67
100
|
for (const [k, v] of Object.entries(rawInput as Record<string, unknown>)) {
|