failproofai 0.0.6-beta.3 → 0.0.6-beta.4
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 +3 -3
- package/.next/standalone/.next/required-server-files.json +7 -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 +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
- 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 +11 -11
- 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/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +16 -16
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
- 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.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/chunks/[root-of-the-server]__0g72weg._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0kyh86x._.js → [root-of-the-server]__0om-5pe._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__096k.db._.js → [root-of-the-server]__111.vxi._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +2 -2
- 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 +9 -9
- package/.next/standalone/.next/static/chunks/{01pmw1-asbek~.js → 02dqjyv6_9mhq.js} +2 -2
- package/.next/standalone/.next/static/chunks/{051m32nx~n5yr.js → 070orfsl6.xal.js} +1 -1
- package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
- package/.next/standalone/.next/static/chunks/{0mazj-p-~2kc6.js → 0o547jv-k_k35.js} +1 -1
- package/.next/standalone/.next/static/chunks/0pk2h2.mjxy.m.js +6 -0
- package/.next/standalone/.next/static/chunks/{0l-mu4okl-cj1.js → 0rcwkbh24w38b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0-dm_9a6nsc2l.js → 140xx_tfr~lm_.js} +1 -1
- package/.next/standalone/.next/static/chunks/{156zca6aewyr-.js → 169_e4dq~1~b6.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0a-yctdwn368y.js → 17ne4p.1sw1jy.js} +1 -1
- package/.next/standalone/next.config.ts +6 -0
- package/.next/standalone/package.json +2 -2
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +2 -2
- package/package.json +2 -2
- package/scripts/prune-standalone.mjs +128 -0
- package/.next/standalone/.claude/settings.json +0 -316
- package/.next/standalone/.failproofai/policies/review-policies.mjs +0 -113
- package/.next/standalone/.failproofai/policies/workflow-policies.mjs +0 -63
- package/.next/standalone/.failproofai/policies-config.json +0 -39
- package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +0 -1
- package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +0 -6
- package/.next/standalone/AGENTS.md +0 -80
- package/.next/standalone/CHANGELOG.md +0 -158
- package/.next/standalone/CLAUDE.md +0 -165
- package/.next/standalone/CONTRIBUTING.md +0 -76
- package/.next/standalone/Dockerfile.docs +0 -12
- package/.next/standalone/LICENSE +0 -42
- package/.next/standalone/README.md +0 -301
- package/.next/standalone/bin/failproofai.mjs +0 -439
- package/.next/standalone/bun.lock +0 -1119
- package/.next/standalone/components.json +0 -23
- package/.next/standalone/dist/cli.mjs +0 -4696
- package/.next/standalone/dist/index.js +0 -80
- package/.next/standalone/docs/ar/architecture.mdx +0 -334
- package/.next/standalone/docs/ar/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/ar/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/ar/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/ar/cli/hook.mdx +0 -31
- package/.next/standalone/docs/ar/cli/install-policies.mdx +0 -48
- package/.next/standalone/docs/ar/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/ar/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/ar/cli/version.mdx +0 -13
- package/.next/standalone/docs/ar/configuration.mdx +0 -223
- package/.next/standalone/docs/ar/custom-policies.mdx +0 -354
- package/.next/standalone/docs/ar/dashboard.mdx +0 -142
- package/.next/standalone/docs/ar/examples.mdx +0 -307
- package/.next/standalone/docs/ar/for-agents.mdx +0 -39
- package/.next/standalone/docs/ar/getting-started.mdx +0 -187
- package/.next/standalone/docs/ar/introduction.mdx +0 -58
- package/.next/standalone/docs/ar/package-aliases.mdx +0 -82
- package/.next/standalone/docs/ar/testing.mdx +0 -261
- package/.next/standalone/docs/architecture.mdx +0 -332
- package/.next/standalone/docs/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/cli/hook.mdx +0 -30
- package/.next/standalone/docs/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/cli/version.mdx +0 -12
- package/.next/standalone/docs/configuration.mdx +0 -222
- package/.next/standalone/docs/custom-policies.mdx +0 -353
- package/.next/standalone/docs/dashboard.mdx +0 -142
- package/.next/standalone/docs/de/architecture.mdx +0 -332
- package/.next/standalone/docs/de/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/de/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/de/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/de/cli/hook.mdx +0 -30
- package/.next/standalone/docs/de/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/de/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/de/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/de/cli/version.mdx +0 -12
- package/.next/standalone/docs/de/configuration.mdx +0 -222
- package/.next/standalone/docs/de/custom-policies.mdx +0 -353
- package/.next/standalone/docs/de/dashboard.mdx +0 -142
- package/.next/standalone/docs/de/examples.mdx +0 -307
- package/.next/standalone/docs/de/for-agents.mdx +0 -38
- package/.next/standalone/docs/de/getting-started.mdx +0 -186
- package/.next/standalone/docs/de/introduction.mdx +0 -57
- package/.next/standalone/docs/de/package-aliases.mdx +0 -82
- package/.next/standalone/docs/de/testing.mdx +0 -260
- package/.next/standalone/docs/docs.json +0 -1002
- package/.next/standalone/docs/es/architecture.mdx +0 -332
- package/.next/standalone/docs/es/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/es/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/es/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/es/cli/hook.mdx +0 -30
- package/.next/standalone/docs/es/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/es/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/es/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/es/cli/version.mdx +0 -12
- package/.next/standalone/docs/es/configuration.mdx +0 -222
- package/.next/standalone/docs/es/custom-policies.mdx +0 -353
- package/.next/standalone/docs/es/dashboard.mdx +0 -142
- package/.next/standalone/docs/es/examples.mdx +0 -307
- package/.next/standalone/docs/es/for-agents.mdx +0 -38
- package/.next/standalone/docs/es/getting-started.mdx +0 -186
- package/.next/standalone/docs/es/introduction.mdx +0 -57
- package/.next/standalone/docs/es/package-aliases.mdx +0 -82
- package/.next/standalone/docs/es/testing.mdx +0 -260
- package/.next/standalone/docs/examples.mdx +0 -307
- package/.next/standalone/docs/favicon.ico +0 -0
- package/.next/standalone/docs/for-agents.mdx +0 -38
- package/.next/standalone/docs/fr/architecture.mdx +0 -332
- package/.next/standalone/docs/fr/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/fr/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/fr/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/fr/cli/hook.mdx +0 -30
- package/.next/standalone/docs/fr/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/fr/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/fr/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/fr/cli/version.mdx +0 -12
- package/.next/standalone/docs/fr/configuration.mdx +0 -222
- package/.next/standalone/docs/fr/custom-policies.mdx +0 -353
- package/.next/standalone/docs/fr/dashboard.mdx +0 -142
- package/.next/standalone/docs/fr/examples.mdx +0 -307
- package/.next/standalone/docs/fr/for-agents.mdx +0 -38
- package/.next/standalone/docs/fr/getting-started.mdx +0 -186
- package/.next/standalone/docs/fr/introduction.mdx +0 -57
- package/.next/standalone/docs/fr/package-aliases.mdx +0 -82
- package/.next/standalone/docs/fr/testing.mdx +0 -260
- package/.next/standalone/docs/getting-started.mdx +0 -186
- package/.next/standalone/docs/he/architecture.mdx +0 -333
- package/.next/standalone/docs/he/built-in-policies.mdx +0 -575
- package/.next/standalone/docs/he/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/he/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/he/cli/hook.mdx +0 -30
- package/.next/standalone/docs/he/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/he/cli/list-policies.mdx +0 -32
- package/.next/standalone/docs/he/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/he/cli/version.mdx +0 -12
- package/.next/standalone/docs/he/configuration.mdx +0 -223
- package/.next/standalone/docs/he/custom-policies.mdx +0 -353
- package/.next/standalone/docs/he/dashboard.mdx +0 -142
- package/.next/standalone/docs/he/examples.mdx +0 -307
- package/.next/standalone/docs/he/for-agents.mdx +0 -38
- package/.next/standalone/docs/he/getting-started.mdx +0 -186
- package/.next/standalone/docs/he/introduction.mdx +0 -57
- package/.next/standalone/docs/he/package-aliases.mdx +0 -82
- package/.next/standalone/docs/he/testing.mdx +0 -260
- package/.next/standalone/docs/hi/architecture.mdx +0 -334
- package/.next/standalone/docs/hi/built-in-policies.mdx +0 -572
- package/.next/standalone/docs/hi/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/hi/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/hi/cli/hook.mdx +0 -30
- package/.next/standalone/docs/hi/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/hi/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/hi/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/hi/cli/version.mdx +0 -12
- package/.next/standalone/docs/hi/configuration.mdx +0 -222
- package/.next/standalone/docs/hi/custom-policies.mdx +0 -354
- package/.next/standalone/docs/hi/dashboard.mdx +0 -142
- package/.next/standalone/docs/hi/examples.mdx +0 -309
- package/.next/standalone/docs/hi/for-agents.mdx +0 -38
- package/.next/standalone/docs/hi/getting-started.mdx +0 -187
- package/.next/standalone/docs/hi/introduction.mdx +0 -57
- package/.next/standalone/docs/hi/package-aliases.mdx +0 -82
- package/.next/standalone/docs/hi/testing.mdx +0 -260
- package/.next/standalone/docs/i18n/README.ar.md +0 -312
- package/.next/standalone/docs/i18n/README.de.md +0 -307
- package/.next/standalone/docs/i18n/README.es.md +0 -307
- package/.next/standalone/docs/i18n/README.fr.md +0 -307
- package/.next/standalone/docs/i18n/README.he.md +0 -312
- package/.next/standalone/docs/i18n/README.hi.md +0 -307
- package/.next/standalone/docs/i18n/README.it.md +0 -307
- package/.next/standalone/docs/i18n/README.ja.md +0 -307
- package/.next/standalone/docs/i18n/README.ko.md +0 -307
- package/.next/standalone/docs/i18n/README.pt-br.md +0 -307
- package/.next/standalone/docs/i18n/README.ru.md +0 -308
- package/.next/standalone/docs/i18n/README.tr.md +0 -307
- package/.next/standalone/docs/i18n/README.vi.md +0 -307
- package/.next/standalone/docs/i18n/README.zh.md +0 -307
- package/.next/standalone/docs/introduction.mdx +0 -57
- package/.next/standalone/docs/it/architecture.mdx +0 -334
- package/.next/standalone/docs/it/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/it/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/it/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/it/cli/hook.mdx +0 -30
- package/.next/standalone/docs/it/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/it/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/it/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/it/cli/version.mdx +0 -12
- package/.next/standalone/docs/it/configuration.mdx +0 -222
- package/.next/standalone/docs/it/custom-policies.mdx +0 -353
- package/.next/standalone/docs/it/dashboard.mdx +0 -142
- package/.next/standalone/docs/it/examples.mdx +0 -307
- package/.next/standalone/docs/it/for-agents.mdx +0 -38
- package/.next/standalone/docs/it/getting-started.mdx +0 -186
- package/.next/standalone/docs/it/introduction.mdx +0 -57
- package/.next/standalone/docs/it/package-aliases.mdx +0 -82
- package/.next/standalone/docs/it/testing.mdx +0 -260
- package/.next/standalone/docs/ja/architecture.mdx +0 -332
- package/.next/standalone/docs/ja/built-in-policies.mdx +0 -572
- package/.next/standalone/docs/ja/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/ja/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/ja/cli/hook.mdx +0 -30
- package/.next/standalone/docs/ja/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/ja/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/ja/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/ja/cli/version.mdx +0 -12
- package/.next/standalone/docs/ja/configuration.mdx +0 -222
- package/.next/standalone/docs/ja/custom-policies.mdx +0 -353
- package/.next/standalone/docs/ja/dashboard.mdx +0 -142
- package/.next/standalone/docs/ja/examples.mdx +0 -307
- package/.next/standalone/docs/ja/for-agents.mdx +0 -38
- package/.next/standalone/docs/ja/getting-started.mdx +0 -186
- package/.next/standalone/docs/ja/introduction.mdx +0 -57
- package/.next/standalone/docs/ja/package-aliases.mdx +0 -82
- package/.next/standalone/docs/ja/testing.mdx +0 -260
- package/.next/standalone/docs/ko/architecture.mdx +0 -332
- package/.next/standalone/docs/ko/built-in-policies.mdx +0 -572
- package/.next/standalone/docs/ko/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/ko/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/ko/cli/hook.mdx +0 -30
- package/.next/standalone/docs/ko/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/ko/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/ko/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/ko/cli/version.mdx +0 -12
- package/.next/standalone/docs/ko/configuration.mdx +0 -222
- package/.next/standalone/docs/ko/custom-policies.mdx +0 -353
- package/.next/standalone/docs/ko/dashboard.mdx +0 -142
- package/.next/standalone/docs/ko/examples.mdx +0 -307
- package/.next/standalone/docs/ko/for-agents.mdx +0 -38
- package/.next/standalone/docs/ko/getting-started.mdx +0 -186
- package/.next/standalone/docs/ko/introduction.mdx +0 -57
- package/.next/standalone/docs/ko/package-aliases.mdx +0 -82
- package/.next/standalone/docs/ko/testing.mdx +0 -260
- package/.next/standalone/docs/logo/dark.svg +0 -21
- package/.next/standalone/docs/logo/exosphere-dark.png +0 -0
- package/.next/standalone/docs/logo/exosphere-light.png +0 -0
- package/.next/standalone/docs/logo/light.svg +0 -21
- package/.next/standalone/docs/package-aliases.mdx +0 -82
- package/.next/standalone/docs/pt-br/architecture.mdx +0 -332
- package/.next/standalone/docs/pt-br/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/pt-br/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/pt-br/cli/hook.mdx +0 -30
- package/.next/standalone/docs/pt-br/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/pt-br/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/pt-br/cli/version.mdx +0 -12
- package/.next/standalone/docs/pt-br/configuration.mdx +0 -222
- package/.next/standalone/docs/pt-br/custom-policies.mdx +0 -353
- package/.next/standalone/docs/pt-br/dashboard.mdx +0 -142
- package/.next/standalone/docs/pt-br/examples.mdx +0 -307
- package/.next/standalone/docs/pt-br/for-agents.mdx +0 -38
- package/.next/standalone/docs/pt-br/getting-started.mdx +0 -186
- package/.next/standalone/docs/pt-br/introduction.mdx +0 -57
- package/.next/standalone/docs/pt-br/package-aliases.mdx +0 -82
- package/.next/standalone/docs/pt-br/testing.mdx +0 -260
- package/.next/standalone/docs/ru/architecture.mdx +0 -333
- package/.next/standalone/docs/ru/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/ru/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/ru/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/ru/cli/hook.mdx +0 -30
- package/.next/standalone/docs/ru/cli/install-policies.mdx +0 -48
- package/.next/standalone/docs/ru/cli/list-policies.mdx +0 -32
- package/.next/standalone/docs/ru/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/ru/cli/version.mdx +0 -12
- package/.next/standalone/docs/ru/configuration.mdx +0 -222
- package/.next/standalone/docs/ru/custom-policies.mdx +0 -354
- package/.next/standalone/docs/ru/dashboard.mdx +0 -142
- package/.next/standalone/docs/ru/examples.mdx +0 -309
- package/.next/standalone/docs/ru/for-agents.mdx +0 -38
- package/.next/standalone/docs/ru/getting-started.mdx +0 -186
- package/.next/standalone/docs/ru/introduction.mdx +0 -57
- package/.next/standalone/docs/ru/package-aliases.mdx +0 -82
- package/.next/standalone/docs/ru/testing.mdx +0 -260
- package/.next/standalone/docs/testing.mdx +0 -260
- package/.next/standalone/docs/tr/architecture.mdx +0 -333
- package/.next/standalone/docs/tr/built-in-policies.mdx +0 -574
- package/.next/standalone/docs/tr/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/tr/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/tr/cli/hook.mdx +0 -30
- package/.next/standalone/docs/tr/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/tr/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/tr/cli/remove-policies.mdx +0 -44
- package/.next/standalone/docs/tr/cli/version.mdx +0 -12
- package/.next/standalone/docs/tr/configuration.mdx +0 -222
- package/.next/standalone/docs/tr/custom-policies.mdx +0 -353
- package/.next/standalone/docs/tr/dashboard.mdx +0 -142
- package/.next/standalone/docs/tr/examples.mdx +0 -308
- package/.next/standalone/docs/tr/for-agents.mdx +0 -38
- package/.next/standalone/docs/tr/getting-started.mdx +0 -186
- package/.next/standalone/docs/tr/introduction.mdx +0 -57
- package/.next/standalone/docs/tr/package-aliases.mdx +0 -82
- package/.next/standalone/docs/tr/testing.mdx +0 -260
- package/.next/standalone/docs/vi/architecture.mdx +0 -334
- package/.next/standalone/docs/vi/built-in-policies.mdx +0 -572
- package/.next/standalone/docs/vi/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/vi/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/vi/cli/hook.mdx +0 -30
- package/.next/standalone/docs/vi/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/vi/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/vi/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/vi/cli/version.mdx +0 -13
- package/.next/standalone/docs/vi/configuration.mdx +0 -222
- package/.next/standalone/docs/vi/custom-policies.mdx +0 -353
- package/.next/standalone/docs/vi/dashboard.mdx +0 -142
- package/.next/standalone/docs/vi/examples.mdx +0 -308
- package/.next/standalone/docs/vi/for-agents.mdx +0 -38
- package/.next/standalone/docs/vi/getting-started.mdx +0 -186
- package/.next/standalone/docs/vi/introduction.mdx +0 -57
- package/.next/standalone/docs/vi/package-aliases.mdx +0 -82
- package/.next/standalone/docs/vi/testing.mdx +0 -260
- package/.next/standalone/docs/zh/architecture.mdx +0 -332
- package/.next/standalone/docs/zh/built-in-policies.mdx +0 -570
- package/.next/standalone/docs/zh/cli/dashboard.mdx +0 -28
- package/.next/standalone/docs/zh/cli/environment-variables.mdx +0 -34
- package/.next/standalone/docs/zh/cli/hook.mdx +0 -30
- package/.next/standalone/docs/zh/cli/install-policies.mdx +0 -47
- package/.next/standalone/docs/zh/cli/list-policies.mdx +0 -31
- package/.next/standalone/docs/zh/cli/remove-policies.mdx +0 -43
- package/.next/standalone/docs/zh/cli/version.mdx +0 -12
- package/.next/standalone/docs/zh/configuration.mdx +0 -222
- package/.next/standalone/docs/zh/custom-policies.mdx +0 -353
- package/.next/standalone/docs/zh/dashboard.mdx +0 -142
- package/.next/standalone/docs/zh/examples.mdx +0 -307
- package/.next/standalone/docs/zh/for-agents.mdx +0 -38
- package/.next/standalone/docs/zh/getting-started.mdx +0 -186
- package/.next/standalone/docs/zh/introduction.mdx +0 -57
- package/.next/standalone/docs/zh/package-aliases.mdx +0 -82
- package/.next/standalone/docs/zh/testing.mdx +0 -260
- package/.next/standalone/eslint.config.mjs +0 -15
- package/.next/standalone/examples/convention-policies/security-policies.mjs +0 -40
- package/.next/standalone/examples/convention-policies/workflow-policies.mjs +0 -41
- package/.next/standalone/examples/policies-advanced/index.js +0 -103
- package/.next/standalone/examples/policies-advanced/utils.js +0 -35
- package/.next/standalone/examples/policies-basic.js +0 -77
- package/.next/standalone/examples/policies-notification.js +0 -104
- package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
- package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
- package/.next/standalone/node_modules/@img/colour/package.json +0 -45
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +0 -46
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +0 -313
- package/.next/standalone/node_modules/detect-libc/lib/elf.js +0 -39
- package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +0 -51
- package/.next/standalone/node_modules/detect-libc/lib/process.js +0 -24
- package/.next/standalone/node_modules/detect-libc/package.json +0 -44
- package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
- package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
- package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
- package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
- package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
- package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
- package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
- package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
- package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
- package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
- package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
- package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
- package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
- package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
- package/.next/standalone/node_modules/sharp/package.json +0 -202
- package/.next/standalone/scripts/alias-proxy.js +0 -18
- package/.next/standalone/scripts/dev.ts +0 -3
- package/.next/standalone/scripts/install-telemetry.mjs +0 -108
- package/.next/standalone/scripts/launch.ts +0 -83
- package/.next/standalone/scripts/parse-script-args.ts +0 -87
- package/.next/standalone/scripts/postinstall.mjs +0 -121
- package/.next/standalone/scripts/preuninstall.mjs +0 -131
- package/.next/standalone/scripts/publish-aliases.mjs +0 -87
- package/.next/standalone/scripts/start.ts +0 -3
- package/.next/standalone/scripts/sync-hook-events-prompt.md +0 -60
- package/.next/standalone/scripts/translate-docs/cache.ts +0 -62
- package/.next/standalone/scripts/translate-docs/cli.ts +0 -357
- package/.next/standalone/scripts/translate-docs/config.ts +0 -248
- package/.next/standalone/scripts/translate-docs/mdx-translator.ts +0 -153
- package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +0 -107
- package/.next/standalone/scripts/translate-docs/readme-translator.ts +0 -154
- package/.next/standalone/scripts/translate-docs/translator.ts +0 -68
- package/.next/standalone/scripts/translate-docs/types.ts +0 -43
- package/.next/standalone/src/auth/login.ts +0 -104
- package/.next/standalone/src/auth/logout.ts +0 -50
- package/.next/standalone/src/auth/token-store.ts +0 -64
- package/.next/standalone/src/cli-error.ts +0 -18
- package/.next/standalone/src/hooks/builtin-policies.ts +0 -1615
- package/.next/standalone/src/hooks/custom-hooks-loader.ts +0 -205
- package/.next/standalone/src/hooks/custom-hooks-registry.ts +0 -30
- package/.next/standalone/src/hooks/handler.ts +0 -222
- package/.next/standalone/src/hooks/hook-activity-store.ts +0 -349
- package/.next/standalone/src/hooks/hook-logger.ts +0 -133
- package/.next/standalone/src/hooks/hook-telemetry.ts +0 -43
- package/.next/standalone/src/hooks/hooks-config.ts +0 -166
- package/.next/standalone/src/hooks/install-prompt.ts +0 -357
- package/.next/standalone/src/hooks/llm-client.ts +0 -90
- package/.next/standalone/src/hooks/loader-utils.ts +0 -178
- package/.next/standalone/src/hooks/manager.ts +0 -692
- package/.next/standalone/src/hooks/policy-evaluator.ts +0 -224
- package/.next/standalone/src/hooks/policy-helpers.ts +0 -16
- package/.next/standalone/src/hooks/policy-registry.ts +0 -90
- package/.next/standalone/src/hooks/policy-types.ts +0 -77
- package/.next/standalone/src/hooks/types.ts +0 -63
- package/.next/standalone/src/index.ts +0 -19
- package/.next/standalone/src/posthog-key.ts +0 -5
- package/.next/standalone/src/relay/daemon.ts +0 -362
- package/.next/standalone/src/relay/pid.ts +0 -76
- package/.next/standalone/src/relay/queue.ts +0 -225
- package/.next/standalone/tailwind.config.ts +0 -11
- package/.next/standalone/tsconfig.json +0 -42
- package/.next/standalone/vitest.config.e2e.mts +0 -24
- package/.next/standalone/vitest.config.mts +0 -23
- /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → wOkJXoch1UmRAmyIuKZWc}/_ssgManifest.js +0 -0
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
/**
|
|
3
|
-
* failproofai — main entry point.
|
|
4
|
-
*
|
|
5
|
-
* Handles:
|
|
6
|
-
* --hook <event> Hook event from Claude Code (minimal startup latency)
|
|
7
|
-
* --version / -v Print version and exit
|
|
8
|
-
* --help / -h Show usage and exit
|
|
9
|
-
* policies Manage policies (list / install / uninstall)
|
|
10
|
-
* (default) Launch production dashboard
|
|
11
|
-
*/
|
|
12
|
-
import { realpathSync } from "node:fs";
|
|
13
|
-
import { dirname, resolve } from "node:path";
|
|
14
|
-
import { fileURLToPath } from "node:url";
|
|
15
|
-
import { version } from "../package.json";
|
|
16
|
-
|
|
17
|
-
// Resolve the real package root early (following any npm bin symlinks) so that
|
|
18
|
-
// scripts/launch.ts can locate .next/standalone/server.js correctly regardless
|
|
19
|
-
// of how bun resolves import.meta.url for dynamically-imported modules.
|
|
20
|
-
if (!process.env.FAILPROOFAI_PACKAGE_ROOT) {
|
|
21
|
-
process.env.FAILPROOFAI_PACKAGE_ROOT = resolve(
|
|
22
|
-
dirname(realpathSync(fileURLToPath(import.meta.url))),
|
|
23
|
-
".."
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (!process.env.FAILPROOFAI_DIST_PATH) {
|
|
28
|
-
process.env.FAILPROOFAI_DIST_PATH = resolve(
|
|
29
|
-
dirname(realpathSync(fileURLToPath(import.meta.url))),
|
|
30
|
-
"..",
|
|
31
|
-
"dist"
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const args = process.argv.slice(2);
|
|
36
|
-
|
|
37
|
-
// Normalize 'p' → 'policies' (shorthand alias)
|
|
38
|
-
if (args[0] === "p") args[0] = "policies";
|
|
39
|
-
|
|
40
|
-
// --hook <event> — called by Claude Code hooks; fast path, outside runCli()
|
|
41
|
-
// because it has its own exit code contract with Claude Code.
|
|
42
|
-
const hookIdx = args.indexOf("--hook");
|
|
43
|
-
if (hookIdx >= 0) {
|
|
44
|
-
if (!args[hookIdx + 1]) {
|
|
45
|
-
console.error("Error: Missing event type after --hook");
|
|
46
|
-
console.error("Usage: failproofai --hook <event> (e.g. PreToolUse, PostToolUse)");
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
try {
|
|
50
|
-
const { handleHookEvent } = await import("../src/hooks/handler");
|
|
51
|
-
const exitCode = await handleHookEvent(args[hookIdx + 1]);
|
|
52
|
-
process.exit(exitCode);
|
|
53
|
-
} catch (err) {
|
|
54
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
55
|
-
console.error(`Unexpected error: ${msg}`);
|
|
56
|
-
process.exit(2);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// --relay-daemon — internal: long-running background process started by
|
|
61
|
-
// ensureRelayRunning(). Streams queued events to the server via WebSocket.
|
|
62
|
-
if (args.includes("--relay-daemon")) {
|
|
63
|
-
try {
|
|
64
|
-
const { runDaemon } = await import("../src/relay/daemon");
|
|
65
|
-
await runDaemon();
|
|
66
|
-
process.exit(0);
|
|
67
|
-
} catch (err) {
|
|
68
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
69
|
-
console.error(`Relay daemon error: ${msg}`);
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Centralised error handler for all CLI subcommands.
|
|
76
|
-
* CliError → clean message, no stack trace, exit exitCode (1 or 2)
|
|
77
|
-
* Error → unexpected; shows message only, exits 2
|
|
78
|
-
*/
|
|
79
|
-
async function runCli() {
|
|
80
|
-
// --help / -h (only when not inside a subcommand that handles its own --help)
|
|
81
|
-
const SUBCOMMANDS = ["policies", "login", "logout", "whoami", "relay", "sync"];
|
|
82
|
-
if ((args.includes("--help") || args.includes("-h")) && !SUBCOMMANDS.includes(args[0])) {
|
|
83
|
-
const extraArgs = args.filter((a) => a !== "--help" && a !== "-h");
|
|
84
|
-
if (extraArgs.length > 0) {
|
|
85
|
-
throw new CliError(`Unexpected argument: ${extraArgs[0]}\nRun \`failproofai --help\` for usage.`);
|
|
86
|
-
}
|
|
87
|
-
console.log(`
|
|
88
|
-
failproofai v${version}
|
|
89
|
-
|
|
90
|
-
USAGE
|
|
91
|
-
failproofai [command] [options]
|
|
92
|
-
|
|
93
|
-
COMMANDS
|
|
94
|
-
(no args) Launch the policy dashboard
|
|
95
|
-
|
|
96
|
-
policies, p List all available policies and their status
|
|
97
|
-
policies --install, -i Enable policies in Claude Code settings
|
|
98
|
-
[names...] Specific policy names to enable
|
|
99
|
-
--scope user|project|local Config scope to write to (default: user)
|
|
100
|
-
--beta Include beta policies
|
|
101
|
-
--custom, -c <path> Path to a JS file of custom policies
|
|
102
|
-
|
|
103
|
-
policies --uninstall, -u Disable policies or remove hooks
|
|
104
|
-
[names...] Specific policy names to disable
|
|
105
|
-
--scope user|project|local|all Config scope to remove from (default: user)
|
|
106
|
-
--beta Remove only beta policies
|
|
107
|
-
--custom, -c Clear the customPoliciesPath from config
|
|
108
|
-
|
|
109
|
-
policies --help, -h Show this help for the policies command
|
|
110
|
-
|
|
111
|
-
login Authenticate with the failproofai cloud (Google OAuth)
|
|
112
|
-
logout Clear local auth tokens and stop relay daemon
|
|
113
|
-
whoami Print current logged-in user
|
|
114
|
-
relay start|stop|status Manage the event relay daemon
|
|
115
|
-
sync One-shot flush of pending events to the server
|
|
116
|
-
|
|
117
|
-
--version, -v Print version and exit
|
|
118
|
-
--help, -h Show this help message
|
|
119
|
-
|
|
120
|
-
CONVENTION POLICIES
|
|
121
|
-
Drop *policies.{js,mjs,ts} files into .failproofai/policies/ for auto-loading.
|
|
122
|
-
Works at project level (.failproofai/policies/) and user level (~/.failproofai/policies/).
|
|
123
|
-
No --custom flag or config changes needed — just drop files and they're picked up.
|
|
124
|
-
|
|
125
|
-
EXAMPLES
|
|
126
|
-
failproofai policies
|
|
127
|
-
failproofai policies --install
|
|
128
|
-
failproofai policies --install block-sudo sanitize-api-keys --scope project
|
|
129
|
-
failproofai policies --install --custom ./my-policies.js
|
|
130
|
-
failproofai policies -i -c ./my-policies.js
|
|
131
|
-
failproofai policies --uninstall block-sudo
|
|
132
|
-
failproofai policies --uninstall --custom
|
|
133
|
-
|
|
134
|
-
LINKS
|
|
135
|
-
⭐ Star us: https://github.com/exospherehost/failproofai
|
|
136
|
-
📖 Docs: https://befailproof.ai
|
|
137
|
-
`.trimStart());
|
|
138
|
-
process.exit(0);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// --version / -v
|
|
142
|
-
if ((args.includes("--version") || args.includes("-v")) && !SUBCOMMANDS.includes(args[0])) {
|
|
143
|
-
const extraArgs = args.filter((a) => a !== "--version" && a !== "-v");
|
|
144
|
-
if (extraArgs.length > 0) {
|
|
145
|
-
throw new CliError(`Unexpected argument: ${extraArgs[0]}\nRun \`failproofai --help\` for usage.`);
|
|
146
|
-
}
|
|
147
|
-
console.log(version);
|
|
148
|
-
process.exit(0);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// policies [--install|-i|--uninstall|-u|--help|-h] [names...] [--scope] [--beta] [--custom|-c <path>]
|
|
152
|
-
if (args[0] === "policies") {
|
|
153
|
-
const subArgs = args.slice(1);
|
|
154
|
-
|
|
155
|
-
const isInstall = subArgs.includes("--install") || subArgs.includes("-i");
|
|
156
|
-
const isUninstall = subArgs.includes("--uninstall") || subArgs.includes("-u");
|
|
157
|
-
const isHelp = subArgs.includes("--help") || subArgs.includes("-h");
|
|
158
|
-
|
|
159
|
-
if (isHelp) {
|
|
160
|
-
console.log(`
|
|
161
|
-
failproofai policies — manage Failproof AI policies
|
|
162
|
-
|
|
163
|
-
USAGE
|
|
164
|
-
failproofai policies List all policies and their status
|
|
165
|
-
failproofai policies --install, -i Enable policies
|
|
166
|
-
failproofai policies --uninstall, -u Disable policies or remove hooks
|
|
167
|
-
|
|
168
|
-
OPTIONS (install)
|
|
169
|
-
[names...] Specific policy names to enable (omit for interactive)
|
|
170
|
-
--scope user|project|local Config scope to write to (default: user)
|
|
171
|
-
--beta Include beta policies
|
|
172
|
-
--custom, -c <path> Path to a JS file of custom policies
|
|
173
|
-
(skips interactive prompt; validates file first)
|
|
174
|
-
|
|
175
|
-
OPTIONS (uninstall)
|
|
176
|
-
[names...] Specific policy names to disable (omit to remove hooks)
|
|
177
|
-
--scope user|project|local|all Config scope to remove from (default: user)
|
|
178
|
-
--beta Remove only beta policies
|
|
179
|
-
--custom, -c Clear the customPoliciesPath from config
|
|
180
|
-
|
|
181
|
-
EXAMPLES
|
|
182
|
-
failproofai policies
|
|
183
|
-
failproofai policies --install
|
|
184
|
-
failproofai policies --install block-sudo sanitize-api-keys
|
|
185
|
-
failproofai policies --install --custom ./my-policies.js
|
|
186
|
-
failproofai policies -i -c ./my-policies.js
|
|
187
|
-
failproofai policies --uninstall block-sudo
|
|
188
|
-
failproofai policies -u
|
|
189
|
-
failproofai policies --uninstall --custom
|
|
190
|
-
`.trimStart());
|
|
191
|
-
process.exit(0);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (isInstall) {
|
|
195
|
-
const { installHooks } = await import("../src/hooks/manager");
|
|
196
|
-
|
|
197
|
-
const scopeIdx = subArgs.indexOf("--scope");
|
|
198
|
-
const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
|
|
199
|
-
if (scopeIdx >= 0 && (!scope || scope.startsWith("-"))) {
|
|
200
|
-
throw new CliError("Missing value for --scope. Valid values: user, project, local");
|
|
201
|
-
}
|
|
202
|
-
if (scopeIdx >= 0 && !["user", "project", "local"].includes(scope)) {
|
|
203
|
-
throw new CliError(`Invalid scope: ${scope}. Valid values: user, project, local`);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const customIdx = subArgs.includes("--custom") ? subArgs.indexOf("--custom")
|
|
207
|
-
: subArgs.includes("-c") ? subArgs.indexOf("-c")
|
|
208
|
-
: -1;
|
|
209
|
-
const customPoliciesPath = customIdx >= 0 ? subArgs[customIdx + 1] : undefined;
|
|
210
|
-
if (customIdx >= 0 && (!customPoliciesPath || customPoliciesPath.startsWith("-"))) {
|
|
211
|
-
throw new CliError("Missing path after --custom/-c\nUsage: --custom <path> (e.g. --custom ./my-policies.js)");
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const includeBeta = subArgs.includes("--beta");
|
|
215
|
-
|
|
216
|
-
// Collect positional policy names — args that don't start with - and aren't
|
|
217
|
-
// values consumed by --scope or --custom/-c (tracked by index, not value,
|
|
218
|
-
// so a policy named "user" isn't incorrectly dropped by the default scope).
|
|
219
|
-
const consumedIdxs = new Set();
|
|
220
|
-
if (scopeIdx >= 0) consumedIdxs.add(scopeIdx + 1);
|
|
221
|
-
if (customIdx >= 0) consumedIdxs.add(customIdx + 1);
|
|
222
|
-
const flags = new Set(["--install", "-i", "--scope", "--beta", "--custom", "-c"]);
|
|
223
|
-
const unknownInstallFlag = subArgs.find((a) => a.startsWith("-") && !flags.has(a));
|
|
224
|
-
if (unknownInstallFlag) {
|
|
225
|
-
throw new CliError(`Unknown flag: ${unknownInstallFlag}\nRun \`failproofai policies --help\` for usage.`);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
const explicitPolicyNames = subArgs.filter(
|
|
229
|
-
(a, idx) => !a.startsWith("-") && !consumedIdxs.has(idx)
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
// When --custom/-c is present but no explicit policy names, pass [] so
|
|
233
|
-
// installHooks uses the existing enabled policies and skips the interactive
|
|
234
|
-
// prompt — validation of the custom file happens inside installHooks.
|
|
235
|
-
const policyNames =
|
|
236
|
-
explicitPolicyNames.length > 0 ? explicitPolicyNames
|
|
237
|
-
: customPoliciesPath !== undefined ? []
|
|
238
|
-
: undefined;
|
|
239
|
-
|
|
240
|
-
await installHooks(
|
|
241
|
-
policyNames,
|
|
242
|
-
scope,
|
|
243
|
-
undefined,
|
|
244
|
-
includeBeta,
|
|
245
|
-
undefined,
|
|
246
|
-
customPoliciesPath,
|
|
247
|
-
);
|
|
248
|
-
process.exit(0);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
if (isUninstall) {
|
|
252
|
-
const { removeHooks } = await import("../src/hooks/manager");
|
|
253
|
-
|
|
254
|
-
const scopeIdx = subArgs.indexOf("--scope");
|
|
255
|
-
const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
|
|
256
|
-
if (scopeIdx >= 0 && (!scope || scope.startsWith("-"))) {
|
|
257
|
-
throw new CliError("Missing value for --scope. Valid values: user, project, local, all");
|
|
258
|
-
}
|
|
259
|
-
if (scopeIdx >= 0 && !["user", "project", "local", "all"].includes(scope)) {
|
|
260
|
-
throw new CliError(`Invalid scope: ${scope}. Valid values: user, project, local, all`);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
const betaOnly = subArgs.includes("--beta");
|
|
264
|
-
const removeCustomHooks = subArgs.includes("--custom") || subArgs.includes("-c");
|
|
265
|
-
|
|
266
|
-
const consumedIdxs = new Set();
|
|
267
|
-
if (scopeIdx >= 0) consumedIdxs.add(scopeIdx + 1);
|
|
268
|
-
const flags = new Set(["--uninstall", "-u", "--scope", "--beta", "--custom", "-c"]);
|
|
269
|
-
const unknownUninstallFlag = subArgs.find((a) => a.startsWith("-") && !flags.has(a));
|
|
270
|
-
if (unknownUninstallFlag) {
|
|
271
|
-
throw new CliError(`Unknown flag: ${unknownUninstallFlag}\nRun \`failproofai policies --help\` for usage.`);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
const policyNames = subArgs.filter(
|
|
275
|
-
(a, idx) => !a.startsWith("-") && !consumedIdxs.has(idx)
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
await removeHooks(
|
|
279
|
-
policyNames.length > 0 ? policyNames : undefined,
|
|
280
|
-
scope,
|
|
281
|
-
undefined,
|
|
282
|
-
{ betaOnly, removeCustomHooks },
|
|
283
|
-
);
|
|
284
|
-
process.exit(0);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// Default: list policies
|
|
288
|
-
// Accept --list as a no-op alias (common intuition), reject all other unknown flags
|
|
289
|
-
// and unexpected positional args (e.g. "hi").
|
|
290
|
-
const knownListFlags = new Set(["--install", "-i", "--uninstall", "-u", "--help", "-h", "--list"]);
|
|
291
|
-
const unknownListArg = subArgs.find((a) => a.startsWith("-") && !knownListFlags.has(a));
|
|
292
|
-
if (unknownListArg) {
|
|
293
|
-
throw new CliError(
|
|
294
|
-
`Unknown flag: ${unknownListArg}\n` +
|
|
295
|
-
`Run \`failproofai policies --help\` for usage.`
|
|
296
|
-
);
|
|
297
|
-
}
|
|
298
|
-
const positionalArgs = subArgs.filter((a) => !a.startsWith("-"));
|
|
299
|
-
if (positionalArgs.length > 0) {
|
|
300
|
-
throw new CliError(
|
|
301
|
-
`Unexpected argument: ${positionalArgs[0]}\n` +
|
|
302
|
-
`Run \`failproofai policies --help\` for usage.`
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
const { listHooks } = await import("../src/hooks/manager");
|
|
307
|
-
await listHooks();
|
|
308
|
-
process.exit(0);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// login — authenticate with failproofai server via Google OAuth
|
|
312
|
-
if (args[0] === "login") {
|
|
313
|
-
const { login } = await import("../src/auth/login");
|
|
314
|
-
await login();
|
|
315
|
-
process.exit(0);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// logout — clear local tokens and stop relay daemon
|
|
319
|
-
if (args[0] === "logout") {
|
|
320
|
-
const { logout } = await import("../src/auth/logout");
|
|
321
|
-
await logout();
|
|
322
|
-
process.exit(0);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
// whoami — print current user and auth status
|
|
326
|
-
if (args[0] === "whoami") {
|
|
327
|
-
const { whoami } = await import("../src/auth/logout");
|
|
328
|
-
whoami();
|
|
329
|
-
process.exit(0);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// relay start|stop|status — manage the event relay daemon
|
|
333
|
-
if (args[0] === "relay") {
|
|
334
|
-
const subcmd = args[1];
|
|
335
|
-
const { relayStatus, stopRelay } = await import("../src/relay/pid");
|
|
336
|
-
|
|
337
|
-
if (subcmd === "status") {
|
|
338
|
-
const s = relayStatus();
|
|
339
|
-
if (s.running) console.log(`Relay daemon running (pid ${s.pid})`);
|
|
340
|
-
else if (s.pid !== null) console.log(`Stale PID file (${s.pid}); daemon not running`);
|
|
341
|
-
else console.log("Relay daemon not running");
|
|
342
|
-
process.exit(0);
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
if (subcmd === "stop") {
|
|
346
|
-
const stopped = stopRelay();
|
|
347
|
-
console.log(stopped ? "Relay daemon stopped" : "Relay daemon was not running");
|
|
348
|
-
process.exit(0);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
if (subcmd === "start") {
|
|
352
|
-
const { ensureRelayRunning, waitForRelayAlive } = await import("../src/relay/daemon");
|
|
353
|
-
ensureRelayRunning();
|
|
354
|
-
// Spawn is async — give the child a moment to write its PID file
|
|
355
|
-
const alive = await waitForRelayAlive();
|
|
356
|
-
const s = relayStatus();
|
|
357
|
-
if (alive && s.running) {
|
|
358
|
-
console.log(`Relay daemon started (pid ${s.pid})`);
|
|
359
|
-
process.exit(0);
|
|
360
|
-
}
|
|
361
|
-
console.log("Failed to start daemon");
|
|
362
|
-
process.exit(1);
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
throw new CliError(
|
|
366
|
-
`Usage: failproofai relay <start|stop|status>`
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// sync — one-shot flush of pending events to server (fallback for no daemon)
|
|
371
|
-
if (args[0] === "sync") {
|
|
372
|
-
const { runOneShotSync } = await import("../src/relay/daemon");
|
|
373
|
-
const count = await runOneShotSync();
|
|
374
|
-
console.log(`Synced ${count} event${count === 1 ? "" : "s"} to server`);
|
|
375
|
-
process.exit(0);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
// Unknown flag guard — must appear after all known-flag branches
|
|
379
|
-
const knownFlags = ["--version", "-v", "--help", "-h", "--hook"];
|
|
380
|
-
const unknownFlag = args.find(a => a.startsWith("-") && !knownFlags.includes(a));
|
|
381
|
-
|
|
382
|
-
if (unknownFlag) {
|
|
383
|
-
function levenshtein(a, b) {
|
|
384
|
-
const m = a.length, n = b.length;
|
|
385
|
-
const dp = Array.from({ length: m + 1 }, (_, i) =>
|
|
386
|
-
Array.from({ length: n + 1 }, (_, j) => (i === 0 ? j : j === 0 ? i : 0))
|
|
387
|
-
);
|
|
388
|
-
for (let i = 1; i <= m; i++)
|
|
389
|
-
for (let j = 1; j <= n; j++)
|
|
390
|
-
dp[i][j] = a[i - 1] === b[j - 1]
|
|
391
|
-
? dp[i - 1][j - 1]
|
|
392
|
-
: 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
|
|
393
|
-
return dp[m][n];
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
const primary = ["--version", "--help", "--hook", "policies", "login", "logout", "whoami", "relay", "sync"];
|
|
397
|
-
const closest = primary.reduce((best, flag) => {
|
|
398
|
-
const dist = levenshtein(unknownFlag, flag);
|
|
399
|
-
return dist < best.dist ? { flag, dist } : best;
|
|
400
|
-
}, { flag: primary[0], dist: Infinity });
|
|
401
|
-
|
|
402
|
-
throw new CliError(
|
|
403
|
-
`Unknown flag: ${unknownFlag}\n` +
|
|
404
|
-
`Did you mean: ${closest.flag}?\n` +
|
|
405
|
-
`Run \`failproofai --help\` for usage details.`
|
|
406
|
-
);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// Unknown subcommand guard (non-flag args that aren't a known subcommand)
|
|
410
|
-
const unknownSubcommand = args.find(a => !a.startsWith("-") && !SUBCOMMANDS.includes(a));
|
|
411
|
-
if (unknownSubcommand) {
|
|
412
|
-
throw new CliError(
|
|
413
|
-
`Unknown command: ${unknownSubcommand}\n` +
|
|
414
|
-
`Did you mean: failproofai policies?\n` +
|
|
415
|
-
`Run \`failproofai --help\` for usage details.`
|
|
416
|
-
);
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// Dashboard launch — always production mode
|
|
420
|
-
const { launch } = await import("../scripts/launch");
|
|
421
|
-
launch("start");
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
// ── Import CliError for use in the guard above ────────────────────────────────
|
|
425
|
-
const { CliError } = await import("../src/cli-error");
|
|
426
|
-
|
|
427
|
-
// ── Run ───────────────────────────────────────────────────────────────────────
|
|
428
|
-
try {
|
|
429
|
-
await runCli();
|
|
430
|
-
} catch (err) {
|
|
431
|
-
if (err instanceof CliError) {
|
|
432
|
-
console.error(`Error: ${err.message}`);
|
|
433
|
-
process.exit(err.exitCode);
|
|
434
|
-
}
|
|
435
|
-
// Unexpected internal error — show message only, no stack trace
|
|
436
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
437
|
-
console.error(`Unexpected error: ${msg}`);
|
|
438
|
-
process.exit(2);
|
|
439
|
-
}
|