failproofai 0.0.6-beta.2 → 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]__0i5kvry._.js → [root-of-the-server]__0om-5pe._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__05akje6._.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/{05j1px0r8yzh6.js → 02dqjyv6_9mhq.js} +2 -2
- package/.next/standalone/.next/static/chunks/{14cl9poem30dq.js → 070orfsl6.xal.js} +1 -1
- package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
- package/.next/standalone/.next/static/chunks/{00j0rr7rh8ef8.js → 0o547jv-k_k35.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0ijk_kek9_wyx.js → 0pk2h2.mjxy.m.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0xpl.oscrakvx.js → 0rcwkbh24w38b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1052sguyd-.ka.js → 140xx_tfr~lm_.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0npb~873.wvg3.js → 169_e4dq~1~b6.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0badv41uxa56..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/bin/failproofai.mjs +91 -4
- package/dist/cli.mjs +1155 -54
- package/package.json +2 -2
- package/scripts/prune-standalone.mjs +128 -0
- package/src/auth/login.ts +104 -0
- package/src/auth/logout.ts +50 -0
- package/src/auth/token-store.ts +64 -0
- package/src/hooks/builtin-policies.ts +22 -20
- package/src/hooks/handler.ts +35 -15
- package/src/relay/daemon.ts +362 -0
- package/src/relay/pid.ts +76 -0
- package/src/relay/queue.ts +225 -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/AGENTS.md +0 -80
- package/.next/standalone/CHANGELOG.md +0 -151
- 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 -352
- package/.next/standalone/bun.lock +0 -1119
- package/.next/standalone/components.json +0 -23
- package/.next/standalone/dist/cli.mjs +0 -3595
- 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 -574
- 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 -576
- 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 -575
- 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 -572
- 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/cli-error.ts +0 -18
- package/.next/standalone/src/hooks/builtin-policies.ts +0 -1613
- 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 -202
- 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/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/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_ssgManifest.js +0 -0
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 控制台
|
|
3
|
-
description: "监控 Agent 会话、查看工具调用并管理策略"
|
|
4
|
-
icon: chart-line
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
failproofai 控制台是一个本地 Web 应用,用于监控 AI Agent 会话和管理策略。随时查看 Agent 在后台执行了哪些操作。
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 启动控制台
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
failproofai
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
访问地址:`http://localhost:8020`。
|
|
18
|
-
|
|
19
|
-
控制台直接从文件系统读取数据——包括 Claude Code 项目文件夹和 failproofai 配置文件。所有数据均不会上传至远程服务。
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 页面说明
|
|
24
|
-
|
|
25
|
-
### 项目
|
|
26
|
-
|
|
27
|
-
列出本机上所有已发现的 Claude Code 项目。项目从 `~/.claude/projects/`(或 `CLAUDE_PROJECTS_PATH` 环境变量指定的路径)中自动发现。
|
|
28
|
-
|
|
29
|
-
每个项目展示以下信息:
|
|
30
|
-
- 项目名称(从文件夹路径派生)
|
|
31
|
-
- 会话数量
|
|
32
|
-
- 最近一次会话活动的日期
|
|
33
|
-
|
|
34
|
-
点击项目可查看其下所有会话。
|
|
35
|
-
|
|
36
|
-
### 会话
|
|
37
|
-
|
|
38
|
-
列出某个项目下的所有会话。每个会话展示:
|
|
39
|
-
- 会话 ID
|
|
40
|
-
- 开始和结束时间戳
|
|
41
|
-
- 工具调用次数
|
|
42
|
-
- Hook 活动次数(触发的策略数量)
|
|
43
|
-
|
|
44
|
-
可使用日期范围筛选器和会话 ID 搜索来缩小列表范围。会话列表支持分页。
|
|
45
|
-
|
|
46
|
-
点击会话可打开会话查看器。
|
|
47
|
-
|
|
48
|
-
### 会话查看器
|
|
49
|
-
|
|
50
|
-
会话查看器回答了自主 Agent 最核心的问题:Agent 做了什么,是否按预期执行?它以时间线形式展示会话中发生的所有事件:
|
|
51
|
-
|
|
52
|
-
- **消息** — Claude 的文本回复和用户提示
|
|
53
|
-
- **工具调用** — Claude 调用的每个工具,包含其输入和输出
|
|
54
|
-
- **策略活动** — 针对每次工具调用,显示哪些策略触发以及返回了什么决策
|
|
55
|
-
|
|
56
|
-
顶部统计栏显示会话时长、工具调用总次数,以及 Hook 决策汇总(allow / deny / instruct 的数量统计)。
|
|
57
|
-
|
|
58
|
-
可通过下载按钮将会话导出为 ZIP 或 JSONL 文件。
|
|
59
|
-
|
|
60
|
-
### 策略
|
|
61
|
-
|
|
62
|
-
包含两个选项卡,用于管理策略和查看活动记录。
|
|
63
|
-
|
|
64
|
-
<Tabs>
|
|
65
|
-
<Tab title="策略选项卡">
|
|
66
|
-
- 单击即可启用或禁用某条策略(写入 `~/.failproofai/policies-config.json`)
|
|
67
|
-
- 展开策略以配置其参数(适用于支持 `policyParams` 的策略)
|
|
68
|
-
- 为指定作用域安装或移除 Hook
|
|
69
|
-
- 设置自定义策略文件路径
|
|
70
|
-
</Tab>
|
|
71
|
-
<Tab title="活动选项卡">
|
|
72
|
-
- 跨所有会话的所有 Hook 事件完整分页历史记录
|
|
73
|
-
- 可按策略名称、会话 ID、工具名称或决策进行搜索
|
|
74
|
-
- 每行显示:时间戳、策略名称、决策、工具名称、会话 ID,以及 deny/instruct 决策的原因
|
|
75
|
-
</Tab>
|
|
76
|
-
</Tabs>
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 自动刷新
|
|
81
|
-
|
|
82
|
-
控制台顶部导航栏提供自动刷新开关。启用后,当前页面将定期刷新,实时显示新增的会话和策略活动。这对于监控长时间运行的自主 Agent 会话尤为重要。
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 禁用页面
|
|
87
|
-
|
|
88
|
-
如果只需要控制台的部分功能,可将 `FAILPROOFAI_DISABLE_PAGES` 设置为以逗号分隔的页面名称列表:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
FAILPROOFAI_DISABLE_PAGES=policies failproofai
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
有效值:`policies`、`projects`。
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## 主题
|
|
99
|
-
|
|
100
|
-
控制台支持亮色和暗色模式,可通过导航栏中的按钮切换。偏好设置存储在浏览器的本地存储中。
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 配置项目路径
|
|
105
|
-
|
|
106
|
-
默认情况下,控制台从标准的 Claude Code 项目目录读取数据。如需自定义设置,可覆盖该路径:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## 从非 localhost 主机访问
|
|
115
|
-
|
|
116
|
-
在**开发模式**(`npm run dev`)下运行控制台,并通过非 `localhost` 的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——可能会看到如下警告:
|
|
117
|
-
|
|
118
|
-
```text
|
|
119
|
-
⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
这是 Next.js 阻止跨域访问其 HMR(热模块重载)WebSocket 的行为,该功能仅在开发模式下存在。如需允许特定主机访问,请使用 `--allowed-origins` 参数:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
npm run dev -- --allowed-origins dashboard.example.com
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
如需允许多个主机或 IP,以逗号分隔传入:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
也可以通过设置 `FAILPROOFAI_ALLOWED_DEV_ORIGINS` 环境变量来实现:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
<Note>
|
|
141
|
-
此设置仅适用于开发模式。运行 `failproofai`(生产模式)时,不存在 HMR WebSocket,也不存在跨域开发资源问题。
|
|
142
|
-
</Note>
|
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 示例
|
|
3
|
-
description: "如何为 Claude Code 和 Agents SDK 设置钩子"
|
|
4
|
-
icon: book-open
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
开箱即用的常见场景示例,每个示例均说明了安装方式及预期效果。
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 为 Claude Code 设置钩子
|
|
12
|
-
|
|
13
|
-
Failproof AI 通过 [钩子系统](https://docs.anthropic.com/en/docs/claude-code/hooks) 与 Claude Code 集成。运行 `failproofai policies --install` 后,它会在 Claude Code 的 `settings.json` 中注册钩子命令,并在每次工具调用时触发。
|
|
14
|
-
|
|
15
|
-
<Steps>
|
|
16
|
-
<Step title="安装 failproofai">
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g failproofai
|
|
19
|
-
```
|
|
20
|
-
</Step>
|
|
21
|
-
<Step title="启用所有内置策略">
|
|
22
|
-
```bash
|
|
23
|
-
failproofai policies --install
|
|
24
|
-
```
|
|
25
|
-
</Step>
|
|
26
|
-
<Step title="验证钩子已注册">
|
|
27
|
-
```bash
|
|
28
|
-
cat ~/.claude/settings.json | grep failproofai
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
你应该能看到 `PreToolUse`、`PostToolUse`、`Notification` 和 `Stop` 事件的钩子条目。
|
|
32
|
-
</Step>
|
|
33
|
-
<Step title="运行 Claude Code">
|
|
34
|
-
```bash
|
|
35
|
-
claude
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
策略现在会在每次工具调用时自动运行。你可以尝试让 Claude 执行 `sudo rm -rf /`,该命令将被拦截。
|
|
39
|
-
</Step>
|
|
40
|
-
</Steps>
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 为 Agents SDK 设置钩子
|
|
45
|
-
|
|
46
|
-
如果你正在使用 [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk) 进行开发,可以通过编程方式使用相同的钩子系统。
|
|
47
|
-
|
|
48
|
-
<Steps>
|
|
49
|
-
<Step title="在项目中安装 failproofai">
|
|
50
|
-
```bash
|
|
51
|
-
npm install failproofai
|
|
52
|
-
```
|
|
53
|
-
</Step>
|
|
54
|
-
<Step title="在 Agent 中配置钩子">
|
|
55
|
-
在创建 Agent 进程时传入钩子命令。钩子的触发方式与 Claude Code 中完全一致——通过 stdin/stdout JSON:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
failproofai --hook PreToolUse # 每次工具调用前触发
|
|
59
|
-
failproofai --hook PostToolUse # 每次工具调用后触发
|
|
60
|
-
```
|
|
61
|
-
</Step>
|
|
62
|
-
<Step title="为 Agent 编写自定义策略">
|
|
63
|
-
```javascript
|
|
64
|
-
import { customPolicies, allow, deny } from "failproofai";
|
|
65
|
-
|
|
66
|
-
customPolicies.add({
|
|
67
|
-
name: "limit-to-project-dir",
|
|
68
|
-
description: "Keep the agent inside the project directory",
|
|
69
|
-
match: { events: ["PreToolUse"] },
|
|
70
|
-
fn: async (ctx) => {
|
|
71
|
-
const path = String(ctx.toolInput?.file_path ?? "");
|
|
72
|
-
if (path.startsWith("/") && !path.startsWith(ctx.session?.cwd ?? "")) {
|
|
73
|
-
return deny("Agent is restricted to the project directory");
|
|
74
|
-
}
|
|
75
|
-
return allow();
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
</Step>
|
|
80
|
-
<Step title="安装自定义策略">
|
|
81
|
-
```bash
|
|
82
|
-
failproofai policies --install --custom ./my-agent-policies.js
|
|
83
|
-
```
|
|
84
|
-
</Step>
|
|
85
|
-
</Steps>
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## 阻止破坏性命令
|
|
90
|
-
|
|
91
|
-
最常见的配置——防止 Agent 造成不可逆的破坏。
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
failproofai policies --install block-sudo block-rm-rf block-force-push block-curl-pipe-sh
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
各策略说明:
|
|
98
|
-
- `block-sudo` — 阻止所有 `sudo` 命令
|
|
99
|
-
- `block-rm-rf` — 阻止递归删除文件
|
|
100
|
-
- `block-force-push` — 阻止 `git push --force`
|
|
101
|
-
- `block-curl-pipe-sh` — 阻止将远程脚本通过管道传给 Shell 执行
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## 防止密钥泄漏
|
|
106
|
-
|
|
107
|
-
阻止 Agent 在工具输出中查看或泄漏凭证。
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
这些策略在 `PostToolUse` 阶段触发——工具运行完毕后,会在 Agent 看到输出之前对其进行清理。
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## 通过 Slack 接收 Agent 待处理提醒
|
|
118
|
-
|
|
119
|
-
使用通知钩子将空闲提醒转发到 Slack。
|
|
120
|
-
|
|
121
|
-
```javascript
|
|
122
|
-
import { customPolicies, allow, instruct } from "failproofai";
|
|
123
|
-
|
|
124
|
-
customPolicies.add({
|
|
125
|
-
name: "slack-on-idle",
|
|
126
|
-
description: "Alert Slack when the agent is waiting for input",
|
|
127
|
-
match: { events: ["Notification"] },
|
|
128
|
-
fn: async (ctx) => {
|
|
129
|
-
const webhookUrl = process.env.SLACK_WEBHOOK_URL;
|
|
130
|
-
if (!webhookUrl) return allow();
|
|
131
|
-
|
|
132
|
-
const message = String(ctx.payload?.message ?? "Agent is waiting");
|
|
133
|
-
const project = ctx.session?.cwd ?? "unknown";
|
|
134
|
-
|
|
135
|
-
try {
|
|
136
|
-
await fetch(webhookUrl, {
|
|
137
|
-
method: "POST",
|
|
138
|
-
headers: { "Content-Type": "application/json" },
|
|
139
|
-
body: JSON.stringify({
|
|
140
|
-
text: `*${message}*\nProject: \`${project}\``,
|
|
141
|
-
}),
|
|
142
|
-
signal: AbortSignal.timeout(5000),
|
|
143
|
-
});
|
|
144
|
-
} catch {
|
|
145
|
-
// 如果 Slack 不可达,绝不阻塞 Agent
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return allow();
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
安装方式:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --custom ./slack-alerts.js
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## 将 Agent 限制在指定分支
|
|
162
|
-
|
|
163
|
-
防止 Agent 切换分支或推送到受保护的分支。
|
|
164
|
-
|
|
165
|
-
```javascript
|
|
166
|
-
import { customPolicies, allow, deny } from "failproofai";
|
|
167
|
-
|
|
168
|
-
customPolicies.add({
|
|
169
|
-
name: "stay-on-branch",
|
|
170
|
-
description: "Prevent the agent from checking out other branches",
|
|
171
|
-
match: { events: ["PreToolUse"] },
|
|
172
|
-
fn: async (ctx) => {
|
|
173
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
174
|
-
const cmd = String(ctx.toolInput?.command ?? "");
|
|
175
|
-
if (/git\s+checkout\s+(?!-b)/.test(cmd)) {
|
|
176
|
-
return deny("Stay on the current branch. Create a new branch with -b if needed.");
|
|
177
|
-
}
|
|
178
|
-
return allow();
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## 提交前要求运行测试
|
|
186
|
-
|
|
187
|
-
提醒 Agent 在提交之前先运行测试。
|
|
188
|
-
|
|
189
|
-
```javascript
|
|
190
|
-
import { customPolicies, allow, instruct } from "failproofai";
|
|
191
|
-
|
|
192
|
-
customPolicies.add({
|
|
193
|
-
name: "test-before-commit",
|
|
194
|
-
description: "Remind the agent to run tests before committing",
|
|
195
|
-
match: { events: ["PreToolUse"] },
|
|
196
|
-
fn: async (ctx) => {
|
|
197
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
198
|
-
const cmd = String(ctx.toolInput?.command ?? "");
|
|
199
|
-
if (/git\s+commit/.test(cmd)) {
|
|
200
|
-
return instruct("Run tests before committing. Use `npm test` or `bun test` first.");
|
|
201
|
-
}
|
|
202
|
-
return allow();
|
|
203
|
-
},
|
|
204
|
-
});
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## 锁定生产仓库
|
|
210
|
-
|
|
211
|
-
在项目中提交一份项目级配置文件,让团队中每位开发者都使用相同的策略。
|
|
212
|
-
|
|
213
|
-
在仓库中创建 `.failproofai/policies-config.json`:
|
|
214
|
-
|
|
215
|
-
```json
|
|
216
|
-
{
|
|
217
|
-
"enabledPolicies": [
|
|
218
|
-
"block-sudo",
|
|
219
|
-
"block-rm-rf",
|
|
220
|
-
"block-force-push",
|
|
221
|
-
"block-push-master",
|
|
222
|
-
"block-env-files",
|
|
223
|
-
"sanitize-api-keys",
|
|
224
|
-
"sanitize-jwt"
|
|
225
|
-
],
|
|
226
|
-
"policyParams": {
|
|
227
|
-
"block-push-master": {
|
|
228
|
-
"protectedBranches": ["main", "release", "production"]
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
然后提交:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
git add .failproofai/policies-config.json
|
|
238
|
-
git commit -m "Add failproofai team policies"
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
所有已安装 failproofai 的团队成员将自动应用这些规则。
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## 通过约定策略构建全组织的质量标准
|
|
246
|
-
|
|
247
|
-
最具影响力的配置方式:将 `.failproofai/policies/` 目录提交到仓库,并在其中编写针对项目量身定制的策略。每位团队成员都会自动获取——无需执行安装命令,无需修改配置。
|
|
248
|
-
|
|
249
|
-
<Steps>
|
|
250
|
-
<Step title="创建目录并添加策略">
|
|
251
|
-
```bash
|
|
252
|
-
mkdir -p .failproofai/policies
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
```js
|
|
256
|
-
// .failproofai/policies/team-policies.mjs
|
|
257
|
-
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
258
|
-
|
|
259
|
-
// 强制使用团队指定的包管理器
|
|
260
|
-
// (也可以启用内置的 prefer-package-manager 策略)
|
|
261
|
-
customPolicies.add({
|
|
262
|
-
name: "enforce-bun",
|
|
263
|
-
match: { events: ["PreToolUse"] },
|
|
264
|
-
fn: async (ctx) => {
|
|
265
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
266
|
-
const cmd = String(ctx.toolInput?.command ?? "");
|
|
267
|
-
if (/\bnpm\b/.test(cmd)) return deny("Use bun instead of npm.");
|
|
268
|
-
return allow();
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
// 提醒 Agent 在提交前运行测试
|
|
273
|
-
customPolicies.add({
|
|
274
|
-
name: "test-before-commit",
|
|
275
|
-
match: { events: ["PreToolUse"] },
|
|
276
|
-
fn: async (ctx) => {
|
|
277
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
278
|
-
if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
|
|
279
|
-
return instruct("Run tests before committing.");
|
|
280
|
-
}
|
|
281
|
-
return allow();
|
|
282
|
-
},
|
|
283
|
-
});
|
|
284
|
-
```
|
|
285
|
-
</Step>
|
|
286
|
-
<Step title="提交到 git">
|
|
287
|
-
```bash
|
|
288
|
-
git add .failproofai/policies/
|
|
289
|
-
git commit -m "Add team quality policies"
|
|
290
|
-
```
|
|
291
|
-
</Step>
|
|
292
|
-
<Step title="持续优化">
|
|
293
|
-
随着团队遇到新的故障模式,不断添加策略并推送。每个人在下次 `git pull` 时即可获取更新。这些策略将成为一套随团队共同成长的活态质量标准。
|
|
294
|
-
</Step>
|
|
295
|
-
</Steps>
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 更多示例
|
|
300
|
-
|
|
301
|
-
仓库中的 [`examples/`](https://github.com/exospherehost/failproofai/tree/main/examples) 目录包含以下内容:
|
|
302
|
-
|
|
303
|
-
| 文件 | 说明 |
|
|
304
|
-
|------|------|
|
|
305
|
-
| `policies-basic.js` | 入门策略——阻止写入生产环境、强制推送和管道脚本 |
|
|
306
|
-
| `policies-notification.js` | 空闲通知和会话结束时发送 Slack 提醒 |
|
|
307
|
-
| `policies-advanced/index.js` | 传递性导入、异步钩子、PostToolUse 输出清理、Stop 事件处理 |
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "适用于 Agent"
|
|
3
|
-
description: "一条命令即可将 Failproof AI 知识添加到你的编程 Agent 中。支持 Claude Code、Cursor、Windsurf 等。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
一条命令即可将完整的 Failproof AI 参考文档添加到你的编程 Agent 中。支持 Claude Code、Cursor、Windsurf 以及任何其他支持技能(skills)的 Agent。
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
npx skills add https://docs.befailproof.ai
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
`npx skills` 会自动检测你已安装的 Agent,并以每个 Agent 对应的正确格式添加该技能。
|
|
13
|
-
|
|
14
|
-
## 技能涵盖的内容
|
|
15
|
-
|
|
16
|
-
| 领域 | 包含内容 |
|
|
17
|
-
|------|----------------|
|
|
18
|
-
| 策略(Policies) | 内置策略名称、事件类型、参数、启用/禁用 |
|
|
19
|
-
| 自定义策略 | `customPolicies.add()`、匹配过滤器、`allow`/`deny`/`instruct` API |
|
|
20
|
-
| 上下文对象 | `ctx.eventType`、`ctx.toolName`、`ctx.toolInput`、`ctx.session` |
|
|
21
|
-
| 配置 | `policies-config.json` 结构、作用域合并、`policyParams` |
|
|
22
|
-
| CLI | `failproofai policies --install`、`--uninstall`、`--custom`、作用域 |
|
|
23
|
-
| 控制台 | 会话查看器、策略活动、环境变量 |
|
|
24
|
-
| 架构 | Hook 处理器流程、退出码、stdin/stdout 约定 |
|
|
25
|
-
|
|
26
|
-
## 技能内容是否完整?
|
|
27
|
-
|
|
28
|
-
Mintlify 会从导航中所有页面生成 `llms.txt`。Failproof AI 文档覆盖了完整的 API——每一条策略、选项和示例均已收录。如果你发现有遗漏,源文件位于 `https://docs.befailproof.ai/llms-full.txt`。
|
|
29
|
-
|
|
30
|
-
如需针对性的上下文内容,可直接链接到特定页面:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
# 仅获取自定义策略 API
|
|
34
|
-
npx skills add https://docs.befailproof.ai/custom-policies
|
|
35
|
-
|
|
36
|
-
# 仅获取内置策略
|
|
37
|
-
npx skills add https://docs.befailproof.ai/built-in-policies
|
|
38
|
-
```
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 快速开始
|
|
3
|
-
description: "安装 failproofai,启用策略,让你的 Agent 稳定运行"
|
|
4
|
-
icon: rocket
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 环境要求
|
|
8
|
-
|
|
9
|
-
- **Node.js** >= 20.9.0
|
|
10
|
-
- **Bun** >= 1.3.0(可选,仅在从源码构建时需要)
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 安装
|
|
15
|
-
|
|
16
|
-
<CodeGroup>
|
|
17
|
-
|
|
18
|
-
```bash npm
|
|
19
|
-
npm install -g failproofai
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
```bash bun
|
|
23
|
-
bun add -g failproofai
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
</CodeGroup>
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 快速上手
|
|
31
|
-
|
|
32
|
-
<Steps>
|
|
33
|
-
<Step title="启用策略">
|
|
34
|
-
策略是在每次 Agent 工具调用前后执行的规则,能够在破坏性命令、密钥泄露及其他故障模式造成损害之前将其拦截。
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
failproofai policies --install
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
该命令会将 hook 条目写入 Claude Code 的 `settings.json`。你也可以仅为单个项目安装,或选择特定策略:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
failproofai policies --install --scope project
|
|
44
|
-
failproofai policies --install block-sudo block-rm-rf sanitize-api-keys
|
|
45
|
-
```
|
|
46
|
-
</Step>
|
|
47
|
-
<Step title="验证安装">
|
|
48
|
-
```bash
|
|
49
|
-
failproofai policies
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
显示所有策略、启用状态及已配置的参数。
|
|
53
|
-
</Step>
|
|
54
|
-
<Step title="启动控制台">
|
|
55
|
-
```bash
|
|
56
|
-
failproofai
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
在 `http://localhost:8020` 打开本地控制台,你可以在此浏览会话记录、查看工具调用详情并管理策略。
|
|
60
|
-
</Step>
|
|
61
|
-
<Step title="运行你的 Agent">
|
|
62
|
-
像往常一样启动 Claude Code。如果 Agent 尝试执行风险操作,failproofai 会自动拦截。你可以让其在无人值守的情况下运行,之后在控制台中回顾发生的一切。
|
|
63
|
-
</Step>
|
|
64
|
-
</Steps>
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## 策略工作原理
|
|
69
|
-
|
|
70
|
-
每当 Agent 运行工具时,Claude Code 会以子进程方式调用 failproofai:
|
|
71
|
-
|
|
72
|
-
```text
|
|
73
|
-
Claude Code → failproofai --hook PreToolUse → reads stdin JSON
|
|
74
|
-
evaluates policies
|
|
75
|
-
writes decision to stdout
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
每条策略会返回以下三种决策之一:
|
|
79
|
-
|
|
80
|
-
- **allow** - Agent 正常继续执行
|
|
81
|
-
- **deny** - 操作被拦截,并将原因告知 Agent
|
|
82
|
-
- **instruct** - 向 Agent 的提示词中追加额外的上下文信息
|
|
83
|
-
|
|
84
|
-
<Note>
|
|
85
|
-
策略在你的本地进程中运行,不会向任何远程服务发送数据。
|
|
86
|
-
</Note>
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## 使用约定式策略为团队制定统一规范
|
|
91
|
-
|
|
92
|
-
在团队中建立质量标准最快的方式是使用 `.failproofai/policies/` 约定目录。只需将策略文件放入该目录,它们会自动加载——无需任何标志、配置变更或安装命令。
|
|
93
|
-
|
|
94
|
-
<Steps>
|
|
95
|
-
<Step title="创建策略目录">
|
|
96
|
-
```bash
|
|
97
|
-
mkdir -p .failproofai/policies
|
|
98
|
-
```
|
|
99
|
-
</Step>
|
|
100
|
-
<Step title="添加策略文件">
|
|
101
|
-
复制示例文件或编写你自己的策略:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
cp node_modules/failproofai/examples/convention-policies/*.mjs .failproofai/policies/
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
或者新建一个策略文件:
|
|
108
|
-
|
|
109
|
-
```js
|
|
110
|
-
// .failproofai/policies/team-policies.mjs
|
|
111
|
-
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
112
|
-
|
|
113
|
-
customPolicies.add({
|
|
114
|
-
name: "test-before-commit",
|
|
115
|
-
match: { events: ["PreToolUse"] },
|
|
116
|
-
fn: async (ctx) => {
|
|
117
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
118
|
-
if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
|
|
119
|
-
return instruct("Run tests before committing.");
|
|
120
|
-
}
|
|
121
|
-
return allow();
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
```
|
|
125
|
-
</Step>
|
|
126
|
-
<Step title="提交到 git">
|
|
127
|
-
```bash
|
|
128
|
-
git add .failproofai/policies/
|
|
129
|
-
git commit -m "Add team quality policies"
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
所有安装了 failproofai 的团队成员都会自动获取这些策略,无需单独配置。
|
|
133
|
-
</Step>
|
|
134
|
-
</Steps>
|
|
135
|
-
|
|
136
|
-
<Tip>
|
|
137
|
-
将 `.failproofai/policies/` 提交到代码仓库,让整个团队共享同一套规范。随着团队发现新的故障模式,持续添加策略并推送更新——所有人在下次 `git pull` 时即可获取最新内容。随着时间推移,这些策略将成为不断演进的质量标准。
|
|
138
|
-
</Tip>
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## 数据存储
|
|
143
|
-
|
|
144
|
-
所有配置和日志均保存在本地:
|
|
145
|
-
|
|
146
|
-
| 路径 | 存储内容 |
|
|
147
|
-
|------|----------------|
|
|
148
|
-
| `~/.failproofai/policies-config.json` | 全局策略配置 |
|
|
149
|
-
| `~/.failproofai/hook-activity.jsonl` | Hook 执行历史 |
|
|
150
|
-
| `~/.failproofai/hook.log` | 自定义 hook 错误的调试日志 |
|
|
151
|
-
| `.failproofai/policies-config.json` | 项目级配置(可提交至仓库) |
|
|
152
|
-
| `.failproofai/policies-config.local.json` | 个人覆盖配置(已加入 gitignore) |
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 卸载
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
failproofai policies --uninstall
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
从 `~/.claude/settings.json` 中移除 hook 条目,`~/.failproofai/` 中的配置文件将保留。
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## 下一步
|
|
167
|
-
|
|
168
|
-
<CardGroup cols={2}>
|
|
169
|
-
|
|
170
|
-
<Card title="配置说明" icon="gear" href="/zh/configuration">
|
|
171
|
-
作用域与配置文件格式
|
|
172
|
-
</Card>
|
|
173
|
-
|
|
174
|
-
<Card title="内置策略" icon="shield" href="/zh/built-in-policies">
|
|
175
|
-
全部 26 条策略及其参数说明
|
|
176
|
-
</Card>
|
|
177
|
-
|
|
178
|
-
<Card title="自定义策略" icon="code" href="/zh/custom-policies">
|
|
179
|
-
使用 JavaScript 编写你自己的策略
|
|
180
|
-
</Card>
|
|
181
|
-
|
|
182
|
-
<Card title="Agent 监控" icon="chart-line" href="/zh/dashboard">
|
|
183
|
-
监控会话并查看策略活动记录
|
|
184
|
-
</Card>
|
|
185
|
-
|
|
186
|
-
</CardGroup>
|