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,353 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Políticas Personalizadas
|
|
3
|
-
description: "Escribe tus propias políticas en JavaScript: aplica convenciones de proyecto, previene la deriva, detecta fallos e integra con sistemas externos"
|
|
4
|
-
icon: code
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Las políticas personalizadas te permiten escribir reglas para cualquier comportamiento del agente: aplicar convenciones de proyecto, prevenir la deriva, bloquear operaciones destructivas, detectar agentes atascados o integrarse con Slack, flujos de aprobación y mucho más. Utilizan el mismo sistema de eventos de hook y las decisiones `allow`, `deny`, `instruct` que las políticas integradas.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Ejemplo rápido
|
|
12
|
-
|
|
13
|
-
```js
|
|
14
|
-
// my-policies.js
|
|
15
|
-
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
16
|
-
|
|
17
|
-
customPolicies.add({
|
|
18
|
-
name: "no-production-writes",
|
|
19
|
-
description: "Block writes to paths containing 'production'",
|
|
20
|
-
match: { events: ["PreToolUse"] },
|
|
21
|
-
fn: async (ctx) => {
|
|
22
|
-
if (ctx.toolName !== "Write" && ctx.toolName !== "Edit") return allow();
|
|
23
|
-
const path = ctx.toolInput?.file_path ?? "";
|
|
24
|
-
if (path.includes("production")) {
|
|
25
|
-
return deny("Writes to production paths are blocked");
|
|
26
|
-
}
|
|
27
|
-
return allow();
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Instálala:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
failproofai policies --install --custom ./my-policies.js
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Dos formas de cargar políticas personalizadas
|
|
41
|
-
|
|
42
|
-
### Opción 1: Basada en convención (recomendada)
|
|
43
|
-
|
|
44
|
-
Coloca archivos `*policies.{js,mjs,ts}` en `.failproofai/policies/` y se cargarán automáticamente — sin necesidad de flags ni cambios de configuración. Funciona como los git hooks: dejas el archivo y listo.
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
# A nivel de proyecto — incluido en git, compartido con el equipo
|
|
48
|
-
.failproofai/policies/security-policies.mjs
|
|
49
|
-
.failproofai/policies/workflow-policies.mjs
|
|
50
|
-
|
|
51
|
-
# A nivel de usuario — personal, aplica a todos los proyectos
|
|
52
|
-
~/.failproofai/policies/my-policies.mjs
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Cómo funciona:**
|
|
56
|
-
- Se analizan tanto el directorio del proyecto como el del usuario (unión — no gana el primer ámbito)
|
|
57
|
-
- Los archivos se cargan en orden alfabético dentro de cada directorio. Usa prefijos `01-`, `02-` para controlar el orden
|
|
58
|
-
- Solo se cargan los archivos que coincidan con `*policies.{js,mjs,ts}`; el resto se ignora
|
|
59
|
-
- Cada archivo se carga de forma independiente (fallo abierto por archivo)
|
|
60
|
-
- Funciona junto con `--custom` explícito y las políticas integradas
|
|
61
|
-
|
|
62
|
-
<Tip>
|
|
63
|
-
Las políticas por convención son la forma más fácil de establecer un estándar de calidad para tu organización. Incluye `.failproofai/policies/` en git y todos los miembros del equipo obtendrán las mismas reglas automáticamente — sin configuración individual. A medida que el equipo descubre nuevos modos de fallo, agrega una política y haz push. Con el tiempo, estas se convierten en un estándar de calidad vivo que mejora con cada contribución.
|
|
64
|
-
</Tip>
|
|
65
|
-
|
|
66
|
-
### Opción 2: Ruta de archivo explícita
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
# Instalar con un archivo de políticas personalizado
|
|
70
|
-
failproofai policies --install --custom ./my-policies.js
|
|
71
|
-
|
|
72
|
-
# Reemplazar la ruta del archivo de políticas
|
|
73
|
-
failproofai policies --install --custom ./new-policies.js
|
|
74
|
-
|
|
75
|
-
# Eliminar la ruta de políticas personalizadas de la configuración
|
|
76
|
-
failproofai policies --uninstall --custom
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
La ruta absoluta resuelta se almacena en `policies-config.json` como `customPoliciesPath`. El archivo se carga de nuevo en cada evento de hook — no hay caché entre eventos.
|
|
80
|
-
|
|
81
|
-
### Usar ambas opciones a la vez
|
|
82
|
-
|
|
83
|
-
Las políticas por convención y el archivo `--custom` explícito pueden coexistir. Orden de carga:
|
|
84
|
-
|
|
85
|
-
1. Archivo `customPoliciesPath` explícito (si está configurado)
|
|
86
|
-
2. Archivos de convención del proyecto (`{cwd}/.failproofai/policies/`, en orden alfabético)
|
|
87
|
-
3. Archivos de convención del usuario (`~/.failproofai/policies/`, en orden alfabético)
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## API
|
|
92
|
-
|
|
93
|
-
### Importación
|
|
94
|
-
|
|
95
|
-
```js
|
|
96
|
-
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### `customPolicies.add(hook)`
|
|
100
|
-
|
|
101
|
-
Registra una política. Puedes llamarla tantas veces como necesites para definir múltiples políticas en el mismo archivo.
|
|
102
|
-
|
|
103
|
-
```ts
|
|
104
|
-
customPolicies.add({
|
|
105
|
-
name: string; // requerido - identificador único
|
|
106
|
-
description?: string; // se muestra en la salida de `failproofai policies`
|
|
107
|
-
match?: { events?: HookEventType[] }; // filtra por tipo de evento; omitir para coincidir con todos
|
|
108
|
-
fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
|
|
109
|
-
});
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Funciones de decisión
|
|
113
|
-
|
|
114
|
-
| Función | Efecto | Cuándo usarla |
|
|
115
|
-
|----------|--------|----------|
|
|
116
|
-
| `allow()` | Permite la operación silenciosamente | La acción es segura, no se necesita mensaje |
|
|
117
|
-
| `deny(message)` | Bloquea la operación | El agente no debería realizar esta acción |
|
|
118
|
-
| `instruct(message)` | Añade contexto sin bloquear | Proporciona contexto adicional al agente para mantenerlo en curso |
|
|
119
|
-
|
|
120
|
-
`deny(message)` — el mensaje se muestra a Claude con el prefijo `"Blocked by failproofai:"`. Un único `deny` cortocircuita toda evaluación posterior.
|
|
121
|
-
|
|
122
|
-
`instruct(message)` — el mensaje se añade al contexto de Claude para la llamada de herramienta actual. Todos los mensajes de `instruct` se acumulan y se entregan juntos.
|
|
123
|
-
|
|
124
|
-
<Tip>
|
|
125
|
-
Puedes añadir orientación adicional a cualquier mensaje `deny` o `instruct` agregando un campo `hint` en `policyParams` — sin necesidad de cambiar el código. Esto funciona también para políticas personalizadas (`custom/`), de convención de proyecto (`.failproofai-project/`) y de convención de usuario (`.failproofai-user/`). Consulta [Configuración → hint](/es/configuration#hint-cross-cutting) para más detalles.
|
|
126
|
-
</Tip>
|
|
127
|
-
|
|
128
|
-
### Mensajes informativos en allow
|
|
129
|
-
|
|
130
|
-
`allow(message)` permite la operación **y** envía un mensaje informativo a Claude. El mensaje se entrega como `additionalContext` en la respuesta stdout del manejador de hooks — el mismo mecanismo que usa `instruct`, pero semánticamente distinto: es una actualización de estado, no una advertencia.
|
|
131
|
-
|
|
132
|
-
| Función | Efecto | Cuándo usarla |
|
|
133
|
-
|----------|--------|----------|
|
|
134
|
-
| `allow(message)` | Permite y envía contexto a Claude | Confirmar que una verificación pasó, o explicar por qué se omitió |
|
|
135
|
-
|
|
136
|
-
Casos de uso:
|
|
137
|
-
- **Confirmaciones de estado:** `allow("All CI checks passed.")` — le dice a Claude que todo está bien
|
|
138
|
-
- **Explicaciones de fallo abierto:** `allow("GitHub CLI not installed, skipping CI check.")` — le dice a Claude por qué se omitió una verificación para que tenga contexto completo
|
|
139
|
-
- **Acumulación de múltiples mensajes:** si varias políticas retornan `allow(message)`, todos los mensajes se unen con saltos de línea y se entregan juntos
|
|
140
|
-
|
|
141
|
-
```js
|
|
142
|
-
customPolicies.add({
|
|
143
|
-
name: "confirm-branch-status",
|
|
144
|
-
match: { events: ["Stop"] },
|
|
145
|
-
fn: async (ctx) => {
|
|
146
|
-
const cwd = ctx.session?.cwd;
|
|
147
|
-
if (!cwd) return allow("No working directory, skipping branch check.");
|
|
148
|
-
|
|
149
|
-
// ... check branch status ...
|
|
150
|
-
if (allPushed) {
|
|
151
|
-
return allow("Branch is up to date with remote.");
|
|
152
|
-
}
|
|
153
|
-
return deny("Unpushed changes detected.");
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Campos de `PolicyContext`
|
|
159
|
-
|
|
160
|
-
| Campo | Tipo | Descripción |
|
|
161
|
-
|-------|------|-------------|
|
|
162
|
-
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
163
|
-
| `toolName` | `string \| undefined` | La herramienta que se está llamando (p. ej. `"Bash"`, `"Write"`, `"Read"`) |
|
|
164
|
-
| `toolInput` | `Record<string, unknown> \| undefined` | Los parámetros de entrada de la herramienta |
|
|
165
|
-
| `payload` | `Record<string, unknown>` | Carga útil completa del evento en bruto desde Claude Code |
|
|
166
|
-
| `session` | `SessionMetadata \| undefined` | Contexto de sesión (ver más abajo) |
|
|
167
|
-
|
|
168
|
-
### Campos de `SessionMetadata`
|
|
169
|
-
|
|
170
|
-
| Campo | Tipo | Descripción |
|
|
171
|
-
|-------|------|-------------|
|
|
172
|
-
| `sessionId` | `string` | Identificador de sesión de Claude Code |
|
|
173
|
-
| `cwd` | `string` | Directorio de trabajo de la sesión de Claude Code |
|
|
174
|
-
| `transcriptPath` | `string` | Ruta al archivo de transcripción JSONL de la sesión |
|
|
175
|
-
|
|
176
|
-
### Tipos de eventos
|
|
177
|
-
|
|
178
|
-
| Evento | Cuándo se dispara | Contenido de `toolInput` |
|
|
179
|
-
|-------|--------------|----------------------|
|
|
180
|
-
| `PreToolUse` | Antes de que Claude ejecute una herramienta | La entrada de la herramienta (p. ej. `{ command: "..." }` para Bash) |
|
|
181
|
-
| `PostToolUse` | Después de que una herramienta finaliza | La entrada de la herramienta + `tool_result` (la salida) |
|
|
182
|
-
| `Notification` | Cuando Claude envía una notificación | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` — los hooks siempre deben retornar `allow()`, no pueden bloquear notificaciones |
|
|
183
|
-
| `Stop` | Cuando finaliza la sesión de Claude | Vacío |
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Orden de evaluación
|
|
188
|
-
|
|
189
|
-
Las políticas se evalúan en este orden:
|
|
190
|
-
|
|
191
|
-
1. Políticas integradas (en orden de definición)
|
|
192
|
-
2. Políticas personalizadas explícitas de `customPoliciesPath` (en orden de `.add()`)
|
|
193
|
-
3. Políticas por convención del proyecto en `.failproofai/policies/` (archivos en orden alfabético, orden de `.add()` dentro de cada uno)
|
|
194
|
-
4. Políticas por convención del usuario en `~/.failproofai/policies/` (archivos en orden alfabético, orden de `.add()` dentro de cada uno)
|
|
195
|
-
|
|
196
|
-
<Note>
|
|
197
|
-
El primer `deny` cortocircuita todas las políticas siguientes. Todos los mensajes de `instruct` se acumulan y se entregan juntos.
|
|
198
|
-
</Note>
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## Importaciones transitivas
|
|
203
|
-
|
|
204
|
-
Los archivos de política personalizados pueden importar módulos locales mediante rutas relativas:
|
|
205
|
-
|
|
206
|
-
```js
|
|
207
|
-
// my-policies.js
|
|
208
|
-
import { isBlockedPath } from "./utils.js";
|
|
209
|
-
import { checkApproval } from "./approval-client.js";
|
|
210
|
-
|
|
211
|
-
customPolicies.add({
|
|
212
|
-
name: "approval-gate",
|
|
213
|
-
fn: async (ctx) => {
|
|
214
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
215
|
-
const approved = await checkApproval(ctx.toolInput?.command, ctx.session?.sessionId);
|
|
216
|
-
return approved ? allow() : deny("Approval required for this command");
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Se resuelven todas las importaciones relativas alcanzables desde el archivo de entrada. Esto se implementa reescribiendo las importaciones `from "failproofai"` a la ruta real de dist y creando archivos `.mjs` temporales para garantizar la compatibilidad con ESM.
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## Filtrado por tipo de evento
|
|
226
|
-
|
|
227
|
-
Usa `match.events` para limitar cuándo se dispara una política:
|
|
228
|
-
|
|
229
|
-
```js
|
|
230
|
-
customPolicies.add({
|
|
231
|
-
name: "require-summary-on-stop",
|
|
232
|
-
match: { events: ["Stop"] },
|
|
233
|
-
fn: async (ctx) => {
|
|
234
|
-
// Solo se dispara cuando finaliza la sesión
|
|
235
|
-
// ctx.session.transcriptPath contiene el registro completo de la sesión
|
|
236
|
-
return allow();
|
|
237
|
-
},
|
|
238
|
-
});
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
Omite `match` por completo para disparar en cada tipo de evento.
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Manejo de errores y modos de fallo
|
|
246
|
-
|
|
247
|
-
Las políticas personalizadas son **fail-open**: los errores nunca bloquean las políticas integradas ni provocan un crash del manejador de hooks.
|
|
248
|
-
|
|
249
|
-
| Fallo | Comportamiento |
|
|
250
|
-
|---------|----------|
|
|
251
|
-
| `customPoliciesPath` no configurado | No se ejecutan políticas personalizadas explícitas; las políticas por convención y las integradas continúan normalmente |
|
|
252
|
-
| Archivo no encontrado | Se registra una advertencia en `~/.failproofai/hook.log`; las políticas integradas continúan |
|
|
253
|
-
| Error de sintaxis/importación (explícito) | Error registrado en `~/.failproofai/hook.log`; se omiten las políticas personalizadas explícitas |
|
|
254
|
-
| Error de sintaxis/importación (convención) | Error registrado; ese archivo se omite, los demás archivos de convención se cargan igual |
|
|
255
|
-
| `fn` lanza un error en tiempo de ejecución | Error registrado; ese hook se trata como `allow`; los demás hooks continúan |
|
|
256
|
-
| `fn` tarda más de 10 segundos | Timeout registrado; se trata como `allow` |
|
|
257
|
-
| Directorio de convención inexistente | No se ejecutan políticas por convención; sin error |
|
|
258
|
-
|
|
259
|
-
<Tip>
|
|
260
|
-
Para depurar errores de políticas personalizadas, observa el archivo de log:
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
tail -f ~/.failproofai/hook.log
|
|
264
|
-
```
|
|
265
|
-
</Tip>
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Ejemplo completo: múltiples políticas
|
|
270
|
-
|
|
271
|
-
```js
|
|
272
|
-
// my-policies.js
|
|
273
|
-
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
274
|
-
|
|
275
|
-
// Prevent agent from writing to secrets/ directory
|
|
276
|
-
customPolicies.add({
|
|
277
|
-
name: "block-secrets-dir",
|
|
278
|
-
description: "Prevent agent from writing to secrets/ directory",
|
|
279
|
-
match: { events: ["PreToolUse"] },
|
|
280
|
-
fn: async (ctx) => {
|
|
281
|
-
if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
|
|
282
|
-
const path = ctx.toolInput?.file_path ?? "";
|
|
283
|
-
if (path.includes("secrets/")) return deny("Writing to secrets/ is not permitted");
|
|
284
|
-
return allow();
|
|
285
|
-
},
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
// Keep the agent on track: verify tests before committing
|
|
289
|
-
customPolicies.add({
|
|
290
|
-
name: "remind-test-before-commit",
|
|
291
|
-
description: "Keep the agent on track: verify tests pass before committing",
|
|
292
|
-
match: { events: ["PreToolUse"] },
|
|
293
|
-
fn: async (ctx) => {
|
|
294
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
295
|
-
const cmd = ctx.toolInput?.command ?? "";
|
|
296
|
-
if (/git\s+commit/.test(cmd)) {
|
|
297
|
-
return instruct("Verify all tests pass before committing. Run `bun test` if you haven't already.");
|
|
298
|
-
}
|
|
299
|
-
return allow();
|
|
300
|
-
},
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
// Prevent unplanned dependency changes during freeze
|
|
304
|
-
customPolicies.add({
|
|
305
|
-
name: "dependency-freeze",
|
|
306
|
-
description: "Prevent unplanned dependency changes during freeze period",
|
|
307
|
-
match: { events: ["PreToolUse"] },
|
|
308
|
-
fn: async (ctx) => {
|
|
309
|
-
if (ctx.toolName !== "Bash") return allow();
|
|
310
|
-
const cmd = ctx.toolInput?.command ?? "";
|
|
311
|
-
const isInstall = /^(npm install|yarn add|bun add|pnpm add)\s+\S/.test(cmd);
|
|
312
|
-
if (isInstall && process.env.DEPENDENCY_FREEZE === "1") {
|
|
313
|
-
return deny("Package installs are frozen. Unset DEPENDENCY_FREEZE to allow.");
|
|
314
|
-
}
|
|
315
|
-
return allow();
|
|
316
|
-
},
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
export { customPolicies };
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
## Ejemplos
|
|
325
|
-
|
|
326
|
-
El directorio `examples/` contiene archivos de política listos para ejecutar:
|
|
327
|
-
|
|
328
|
-
| Archivo | Contenido |
|
|
329
|
-
|------|----------|
|
|
330
|
-
| `examples/policies-basic.js` | Cinco políticas de inicio que cubren los modos de fallo más comunes de los agentes |
|
|
331
|
-
| `examples/policies-advanced/index.js` | Patrones avanzados: importaciones transitivas, llamadas asíncronas, limpieza de salida y hooks de fin de sesión |
|
|
332
|
-
| `examples/convention-policies/security-policies.mjs` | Políticas de seguridad basadas en convención (bloquear escrituras en .env, prevenir reescritura del historial de git) |
|
|
333
|
-
| `examples/convention-policies/workflow-policies.mjs` | Políticas de flujo de trabajo basadas en convención (recordatorios de pruebas, registro de escrituras de archivos) |
|
|
334
|
-
|
|
335
|
-
### Usar los ejemplos con archivo explícito
|
|
336
|
-
|
|
337
|
-
```bash
|
|
338
|
-
failproofai policies --install --custom ./examples/policies-basic.js
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### Usar los ejemplos basados en convención
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
# Copiar al nivel de proyecto
|
|
345
|
-
mkdir -p .failproofai/policies
|
|
346
|
-
cp examples/convention-policies/*.mjs .failproofai/policies/
|
|
347
|
-
|
|
348
|
-
# O copiar al nivel de usuario
|
|
349
|
-
mkdir -p ~/.failproofai/policies
|
|
350
|
-
cp examples/convention-policies/*.mjs ~/.failproofai/policies/
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
No se necesita ningún comando de instalación — los archivos se detectan automáticamente en el próximo evento de hook.
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Dashboard
|
|
3
|
-
description: "Supervisa sesiones de agentes, revisa llamadas a herramientas y gestiona políticas"
|
|
4
|
-
icon: chart-line
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
El dashboard de failproofai es una aplicación web local para supervisar tus sesiones de agentes de IA y gestionar políticas. Descubre lo que hicieron tus agentes mientras no estabas.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Iniciar el dashboard
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
failproofai
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Se abre en `http://localhost:8020`.
|
|
18
|
-
|
|
19
|
-
El dashboard lee directamente del sistema de archivos: tus carpetas de proyectos de Claude Code y los archivos de configuración de failproofai. No se escribe nada en ningún servicio remoto.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Páginas
|
|
24
|
-
|
|
25
|
-
### Proyectos
|
|
26
|
-
|
|
27
|
-
Muestra todos los proyectos de Claude Code encontrados en tu máquina. Los proyectos se descubren desde `~/.claude/projects/` (o la ruta definida por `CLAUDE_PROJECTS_PATH`).
|
|
28
|
-
|
|
29
|
-
Cada proyecto muestra:
|
|
30
|
-
- Nombre del proyecto (derivado de la ruta de la carpeta)
|
|
31
|
-
- Número de sesiones
|
|
32
|
-
- Fecha de la actividad más reciente
|
|
33
|
-
|
|
34
|
-
Haz clic en un proyecto para ver sus sesiones.
|
|
35
|
-
|
|
36
|
-
### Sesiones
|
|
37
|
-
|
|
38
|
-
Lista todas las sesiones dentro de un proyecto. Cada sesión muestra:
|
|
39
|
-
- ID de sesión
|
|
40
|
-
- Marcas de tiempo de inicio y fin
|
|
41
|
-
- Número de llamadas a herramientas
|
|
42
|
-
- Recuento de actividad de hooks (políticas que se activaron)
|
|
43
|
-
|
|
44
|
-
Usa el filtro de rango de fechas y la búsqueda por ID de sesión para acotar la lista. Las sesiones están paginadas.
|
|
45
|
-
|
|
46
|
-
Haz clic en una sesión para abrir el visor de sesiones.
|
|
47
|
-
|
|
48
|
-
### Visor de sesiones
|
|
49
|
-
|
|
50
|
-
El visor de sesiones responde la pregunta clave sobre los agentes autónomos: ¿qué hizo el agente y se mantuvo en el camino correcto? Muestra una línea de tiempo de todo lo que ocurrió en una sesión:
|
|
51
|
-
|
|
52
|
-
- **Mensajes** - Las respuestas de texto de Claude y los prompts del usuario
|
|
53
|
-
- **Llamadas a herramientas** - Cada herramienta que Claude invocó, con su entrada y salida
|
|
54
|
-
- **Actividad de políticas** - Para cada llamada a herramienta, qué políticas se activaron y qué decisión devolvieron
|
|
55
|
-
|
|
56
|
-
La barra de estadísticas en la parte superior muestra la duración de la sesión, el total de llamadas a herramientas y un resumen de las decisiones de los hooks (conteos de allow / deny / instruct).
|
|
57
|
-
|
|
58
|
-
Puedes exportar la sesión como archivo ZIP o JSONL usando el botón de descarga.
|
|
59
|
-
|
|
60
|
-
### Políticas
|
|
61
|
-
|
|
62
|
-
Una página con dos pestañas para gestionar políticas y revisar la actividad.
|
|
63
|
-
|
|
64
|
-
<Tabs>
|
|
65
|
-
<Tab title="Pestaña Políticas">
|
|
66
|
-
- Activa o desactiva políticas individuales con un solo clic (escribe en `~/.failproofai/policies-config.json`)
|
|
67
|
-
- Expande una política para configurar sus parámetros (para políticas que admiten `policyParams`)
|
|
68
|
-
- Instala o elimina hooks para un ámbito determinado
|
|
69
|
-
- Establece una ruta de archivo de políticas personalizada
|
|
70
|
-
</Tab>
|
|
71
|
-
<Tab title="Pestaña Actividad">
|
|
72
|
-
- Historial completo y paginado de cada evento de hook que se ha activado en todas las sesiones
|
|
73
|
-
- Búsqueda por nombre de política, ID de sesión, nombre de herramienta o decisión
|
|
74
|
-
- Cada fila muestra: marca de tiempo, nombre de política, decisión, nombre de herramienta, ID de sesión y el motivo de las decisiones deny/instruct
|
|
75
|
-
</Tab>
|
|
76
|
-
</Tabs>
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Actualización automática
|
|
81
|
-
|
|
82
|
-
El dashboard tiene un interruptor de actualización automática en la navegación superior. Cuando está activado, la página actual se actualiza periódicamente para mostrar nuevas sesiones y actividad de políticas a medida que aparecen. Es esencial para supervisar sesiones de agentes autónomos de larga duración.
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Deshabilitar páginas
|
|
87
|
-
|
|
88
|
-
Si solo necesitas algunas partes del dashboard, establece `FAILPROOFAI_DISABLE_PAGES` con una lista separada por comas de nombres de páginas:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
FAILPROOFAI_DISABLE_PAGES=policies failproofai
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Valores válidos: `policies`, `projects`.
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Tema
|
|
99
|
-
|
|
100
|
-
El dashboard admite modo claro y oscuro. Cámbialo mediante el botón en la barra de navegación. La preferencia se guarda en el almacenamiento local de tu navegador.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Configurar la ruta de proyectos
|
|
105
|
-
|
|
106
|
-
De forma predeterminada, el dashboard lee desde el directorio estándar de proyectos de Claude Code. Puedes sobreescribirlo para configuraciones personalizadas:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Acceder desde un host que no sea localhost
|
|
115
|
-
|
|
116
|
-
Cuando ejecutas el dashboard en **modo desarrollo** (`npm run dev`) y accedes a él desde un hostname diferente a `localhost` —por ejemplo, un dominio personalizado, una IP remota o una URL tunelizada— es posible que veas una advertencia como:
|
|
117
|
-
|
|
118
|
-
```text
|
|
119
|
-
⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Esto es Next.js bloqueando el acceso de origen cruzado a su websocket HMR (hot module reload), que es una función exclusiva del modo desarrollo. Para permitir tu host, usa el flag `--allowed-origins`:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
npm run dev -- --allowed-origins dashboard.example.com
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Para múltiples hosts o IPs, pasa una lista separada por comas:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
También puedes establecer la variable de entorno `FAILPROOFAI_ALLOWED_DEV_ORIGINS` en su lugar:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
<Note>
|
|
141
|
-
Esto solo aplica al modo desarrollo. Al ejecutar `failproofai` (modo producción), no hay websocket HMR ni problemas de recursos de desarrollo de origen cruzado.
|
|
142
|
-
</Note>
|