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,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는 Claude Code의 [훅 시스템](https://docs.anthropic.com/en/docs/claude-code/hooks)을 통해 통합됩니다. `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="에이전트에 훅 설정">
|
|
55
|
-
에이전트 프로세스 생성 시 훅 명령어를 전달합니다. Claude Code에서와 동일하게 stdin/stdout JSON 방식으로 훅이 실행됩니다:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
failproofai --hook PreToolUse # 각 도구 실행 전 호출
|
|
59
|
-
failproofai --hook PostToolUse # 각 도구 실행 후 호출
|
|
60
|
-
```
|
|
61
|
-
</Step>
|
|
62
|
-
<Step title="에이전트용 커스텀 정책 작성">
|
|
63
|
-
```javascript
|
|
64
|
-
import { customPolicies, allow, deny } from "failproofai";
|
|
65
|
-
|
|
66
|
-
customPolicies.add({
|
|
67
|
-
name: "limit-to-project-dir",
|
|
68
|
-
description: "에이전트를 프로젝트 디렉터리 내로 제한",
|
|
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("에이전트는 프로젝트 디렉터리로 제한됩니다");
|
|
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
|
-
가장 일반적인 설정 — 에이전트가 되돌릴 수 없는 손상을 입히지 못하도록 방지합니다.
|
|
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` - 원격 스크립트를 셸로 파이프하는 명령 차단
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## 시크릿 유출 방지
|
|
106
|
-
|
|
107
|
-
에이전트가 도구 출력에서 자격 증명을 확인하거나 유출하지 못하도록 차단합니다.
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
이 정책들은 `PostToolUse` 시점에 실행됩니다 — 도구 실행 후 에이전트가 출력을 보기 전에 민감한 정보를 제거합니다.
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## 에이전트가 대기 중일 때 Slack 알림 받기
|
|
118
|
-
|
|
119
|
-
알림 훅을 사용하여 유휴 알림을 Slack으로 전달합니다.
|
|
120
|
-
|
|
121
|
-
```javascript
|
|
122
|
-
import { customPolicies, allow, instruct } from "failproofai";
|
|
123
|
-
|
|
124
|
-
customPolicies.add({
|
|
125
|
-
name: "slack-on-idle",
|
|
126
|
-
description: "에이전트가 입력을 기다릴 때 Slack에 알림 전송",
|
|
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에 연결할 수 없어도 에이전트를 절대 차단하지 않음
|
|
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
|
-
## 에이전트를 특정 브랜치에 고정
|
|
162
|
-
|
|
163
|
-
에이전트가 브랜치를 전환하거나 보호된 브랜치에 푸시하지 못하도록 방지합니다.
|
|
164
|
-
|
|
165
|
-
```javascript
|
|
166
|
-
import { customPolicies, allow, deny } from "failproofai";
|
|
167
|
-
|
|
168
|
-
customPolicies.add({
|
|
169
|
-
name: "stay-on-branch",
|
|
170
|
-
description: "에이전트가 다른 브랜치로 체크아웃하지 못하도록 방지",
|
|
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("현재 브랜치를 유지하세요. 새 브랜치가 필요하면 -b 옵션을 사용하세요.");
|
|
177
|
-
}
|
|
178
|
-
return allow();
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## 커밋 전 테스트 실행 요구
|
|
186
|
-
|
|
187
|
-
에이전트에게 커밋 전 테스트를 실행하도록 상기시킵니다.
|
|
188
|
-
|
|
189
|
-
```javascript
|
|
190
|
-
import { customPolicies, allow, instruct } from "failproofai";
|
|
191
|
-
|
|
192
|
-
customPolicies.add({
|
|
193
|
-
name: "test-before-commit",
|
|
194
|
-
description: "에이전트에게 커밋 전 테스트 실행을 상기",
|
|
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("커밋 전에 테스트를 실행하세요. 먼저 `npm test` 또는 `bun test`를 사용하세요.");
|
|
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("npm 대신 bun을 사용하세요.");
|
|
268
|
-
return allow();
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
// 에이전트에게 커밋 전 테스트 실행을 상기
|
|
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("커밋 전에 테스트를 실행하세요.");
|
|
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: "에이전트용"
|
|
3
|
-
description: "한 번의 명령으로 코딩 에이전트에 Failproof AI 지식을 추가하세요. Claude Code, Cursor, Windsurf 등과 호환됩니다."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
한 번의 명령으로 Failproof AI 전체 레퍼런스를 코딩 에이전트에 추가하세요. Claude Code, Cursor, Windsurf, 그리고 스킬을 지원하는 모든 에이전트와 호환됩니다.
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
npx skills add https://docs.befailproof.ai
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
`npx skills`는 설치된 에이전트를 자동으로 감지하고, 각 에이전트에 맞는 형식으로 스킬을 추가합니다.
|
|
13
|
-
|
|
14
|
-
## 스킬이 다루는 내용
|
|
15
|
-
|
|
16
|
-
| 영역 | 포함 내용 |
|
|
17
|
-
|------|----------------|
|
|
18
|
-
| Policies | 기본 제공 정책 이름, 이벤트 타입, 파라미터, 활성화/비활성화 |
|
|
19
|
-
| Custom policies | `customPolicies.add()`, 매치 필터, `allow`/`deny`/`instruct` API |
|
|
20
|
-
| Context object | `ctx.eventType`, `ctx.toolName`, `ctx.toolInput`, `ctx.session` |
|
|
21
|
-
| Configuration | `policies-config.json` 구조, 스코프 병합, `policyParams` |
|
|
22
|
-
| CLI | `failproofai policies --install`, `--uninstall`, `--custom`, 스코프 |
|
|
23
|
-
| Dashboard | 세션 뷰어, 정책 활동, 환경 변수 |
|
|
24
|
-
| Architecture | 훅 핸들러 플로우, 종료 코드, 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를 설치하고, 정책을 활성화하여 에이전트를 안정적으로 실행하세요"
|
|
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
|
-
정책은 에이전트의 모든 도구 호출 전후에 실행되는 규칙입니다. 파괴적인 명령, 비밀 정보 유출, 그 밖의 실패 패턴을 피해가 발생하기 전에 차단합니다.
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
failproofai policies --install
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
이 명령은 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="에이전트 실행">
|
|
62
|
-
평소처럼 Claude Code를 시작하세요. 에이전트가 위험한 작업을 시도하면 failproofai가 자동으로 가로챕니다. 에이전트를 무인 상태로 두고 대시보드에서 결과를 나중에 확인하세요.
|
|
63
|
-
</Step>
|
|
64
|
-
</Steps>
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## 정책 동작 방식
|
|
69
|
-
|
|
70
|
-
에이전트가 도구를 실행할 때마다 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** - 에이전트가 정상적으로 진행됩니다
|
|
81
|
-
- **deny** - 동작이 차단되고 에이전트에게 이유가 전달됩니다
|
|
82
|
-
- **instruct** - 에이전트의 프롬프트에 추가 컨텍스트가 삽입됩니다
|
|
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` | 훅 실행 이력 |
|
|
150
|
-
| `~/.failproofai/hook.log` | 커스텀 훅 오류 디버그 로그 |
|
|
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`에서 훅 항목을 제거합니다. `~/.failproofai/`의 설정 파일은 유지됩니다.
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## 다음 단계
|
|
167
|
-
|
|
168
|
-
<CardGroup cols={2}>
|
|
169
|
-
|
|
170
|
-
<Card title="설정" icon="gear" href="/ko/configuration">
|
|
171
|
-
스코프 및 설정 파일 형식
|
|
172
|
-
</Card>
|
|
173
|
-
|
|
174
|
-
<Card title="기본 제공 정책" icon="shield" href="/ko/built-in-policies">
|
|
175
|
-
파라미터를 포함한 26가지 정책 전체 목록
|
|
176
|
-
</Card>
|
|
177
|
-
|
|
178
|
-
<Card title="커스텀 정책" icon="code" href="/ko/custom-policies">
|
|
179
|
-
JavaScript로 나만의 정책 작성하기
|
|
180
|
-
</Card>
|
|
181
|
-
|
|
182
|
-
<Card title="에이전트 모니터" icon="chart-line" href="/ko/dashboard">
|
|
183
|
-
세션 모니터링 및 정책 활동 검토
|
|
184
|
-
</Card>
|
|
185
|
-
|
|
186
|
-
</CardGroup>
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Failproof AI
|
|
3
|
-
description: "AI 에이전트를 안정적으로 자율 운영할 수 있도록 훅과 정책을 관리합니다"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
[](https://www.npmjs.com/package/failproofai)
|
|
7
|
-
|
|
8
|
-
**Claude Code** 및 **Agents SDK**를 위한 훅과 정책으로 AI 에이전트를 안정적으로 자율 운영하세요.
|
|
9
|
-
|
|
10
|
-
AI 에이전트는 예측 가능한 방식으로 실패합니다. 파괴적인 명령을 실행하거나, 시크릿을 유출하거나, 작업 범위를 벗어나거나, 루프에 빠지거나, main 브랜치에 직접 푸시하기도 합니다. 방치하면 작은 실패가 연쇄적으로 커집니다.
|
|
11
|
-
|
|
12
|
-
Failproof AI는 **정책(policies)** 으로 이 문제를 해결합니다. 정책은 에이전트의 모든 도구 호출에 훅으로 연결되어 **장애를 감지**하고, **완화 조치**(차단, 지시, 정제)를 취하며, 주의가 필요한 상황이 발생하면 **알림을 보냅니다**. 로컬 대시보드에서 이후에 모든 내용을 검토할 수 있습니다.
|
|
13
|
-
|
|
14
|
-
모든 처리는 로컬에서 이루어집니다. 데이터가 외부로 전송되지 않습니다.
|
|
15
|
-
|
|
16
|
-
## 시작하기
|
|
17
|
-
|
|
18
|
-
<CardGroup cols={2}>
|
|
19
|
-
|
|
20
|
-
<Card title="26개의 내장 정책" icon="shield" href="/ko/built-in-policies">
|
|
21
|
-
파괴적인 명령 차단, 시크릿 유출 방지, 에이전트를 프로젝트 범위 내로 제한하는 등 다양한 기능을 즉시 사용할 수 있습니다.
|
|
22
|
-
</Card>
|
|
23
|
-
|
|
24
|
-
<Card title="커스텀 정책" icon="code" href="/ko/custom-policies">
|
|
25
|
-
간단한 allow / deny / instruct API를 사용해 JavaScript로 나만의 규칙을 작성하세요.
|
|
26
|
-
</Card>
|
|
27
|
-
|
|
28
|
-
<Card title="에이전트 모니터" icon="chart-line" href="/ko/dashboard">
|
|
29
|
-
자리를 비운 사이 에이전트가 무엇을 했는지 확인하세요. 세션을 탐색하고, 도구 호출을 검사하며, 정책이 발동된 지점을 검토할 수 있습니다.
|
|
30
|
-
</Card>
|
|
31
|
-
|
|
32
|
-
<Card title="간편한 설정" icon="gear" href="/ko/configuration">
|
|
33
|
-
코드 없이 모든 정책을 조정하세요. 프로젝트별 또는 전역으로 허용 목록, 보호 브랜치, 임계값을 설정할 수 있습니다.
|
|
34
|
-
</Card>
|
|
35
|
-
|
|
36
|
-
</CardGroup>
|
|
37
|
-
|
|
38
|
-
## 빠른 시작
|
|
39
|
-
|
|
40
|
-
<CodeGroup>
|
|
41
|
-
|
|
42
|
-
```bash npm
|
|
43
|
-
npm install -g failproofai
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
```bash bun
|
|
47
|
-
bun add -g failproofai
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
</CodeGroup>
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
failproofai policies --install # 정책 활성화
|
|
54
|
-
failproofai # 대시보드 실행
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
전체 안내는 [시작 가이드](/ko/getting-started)를 참고하세요.
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 패키지 별칭
|
|
3
|
-
description: "등록된 오타 방지 별칭과 그 작동 방식"
|
|
4
|
-
icon: copy
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 공식 패키지
|
|
8
|
-
|
|
9
|
-
npm의 정식 패키지명은 **`failproofai`**입니다:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install -g failproofai
|
|
13
|
-
# or
|
|
14
|
-
bun add -g failproofai
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 별칭 이름을 직접 소유하는 이유
|
|
20
|
-
|
|
21
|
-
타이포스쿼팅(typosquatting)은 공급망 공격의 일반적인 유형으로, 악의적인 공격자가 인기 패키지명에서 한 글자만 다른 패키지를 등록합니다. 설치 명령어를 잘못 입력한 사용자는 자신도 모르게 공격자가 제어하는 코드를 전체 시스템 접근 권한으로 실행하게 됩니다. 이는 바로 Failproof AI가 막아내고자 하는 위협입니다.
|
|
22
|
-
|
|
23
|
-
이 공격 표면을 없애기 위해, **npm에서 `failproofai`의 모든 일반적인 오타 및 표기 변형을 선제적으로 소유**하고 있습니다. 이 이름들은 제3자가 등록할 수 없으며, 각각은 실제 `failproofai` 패키지를 설치하고 위임하는 얇은 프록시입니다.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 등록된 별칭
|
|
28
|
-
|
|
29
|
-
**표기 변형** - "failproof ai"를 작성하는 다양한 방식:
|
|
30
|
-
|
|
31
|
-
| 패키지 | 상태 |
|
|
32
|
-
|---------|--------|
|
|
33
|
-
| `failproof` | ✅ 게시됨 |
|
|
34
|
-
| `failproof-ai` | ⏳ npm 승인 대기 중 |
|
|
35
|
-
| `fail-proof-ai` | ⏳ npm 승인 대기 중 |
|
|
36
|
-
| `failproof_ai` | ⏳ npm 승인 대기 중 |
|
|
37
|
-
| `fail_proof_ai` | ⏳ npm 승인 대기 중 |
|
|
38
|
-
| `fail-proofai` | ⏳ npm 승인 대기 중 |
|
|
39
|
-
|
|
40
|
-
**`failprof*` 오타** - "proof"에서 `o` 하나가 빠진 경우:
|
|
41
|
-
|
|
42
|
-
| 패키지 | 상태 |
|
|
43
|
-
|---------|--------|
|
|
44
|
-
| `failprof` | ✅ 게시됨 |
|
|
45
|
-
| `failprof-ai` | ✅ 게시됨 |
|
|
46
|
-
| `failprofai` | ⏳ npm 승인 대기 중 |
|
|
47
|
-
| `fail-prof-ai` | ⏳ npm 승인 대기 중 |
|
|
48
|
-
| `failprof_ai` | ⏳ npm 승인 대기 중 |
|
|
49
|
-
|
|
50
|
-
**`faliproof*` 오타** - `a`와 `i`가 뒤바뀐 경우:
|
|
51
|
-
|
|
52
|
-
| 패키지 | 상태 |
|
|
53
|
-
|---------|--------|
|
|
54
|
-
| `faliproof` | ✅ 게시됨 |
|
|
55
|
-
| `faliproof-ai` | ✅ 게시됨 |
|
|
56
|
-
| `faliproofai` | ⏳ npm 승인 대기 중 |
|
|
57
|
-
|
|
58
|
-
> **왜 대기 중인가요?** npm의 스팸 방지 정책은 구두점을 제거하고 유사도 검사를 수행한 후 기존 패키지와 동일한 문자열로 정규화되는 이름의 등록을 차단합니다. 현재 스쿼팅 방지 목적으로 이 이름들을 예약하기 위해 npm 지원팀에 문의한 상태이며, 승인 후 활성화될 예정입니다.
|
|
59
|
-
|
|
60
|
-
게시된 별칭이 저희 소유인지 다음 명령어로 확인할 수 있습니다:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm info failproof
|
|
64
|
-
# Look for: "ExosphereHost Inc." in the maintainers field
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## 별칭의 작동 방식
|
|
70
|
-
|
|
71
|
-
각 별칭 패키지는:
|
|
72
|
-
|
|
73
|
-
1. `failproofai`를 의존성으로 등록하여, 설치 시 실제 패키지(및 해당 `postinstall` 훅 설정)가 실행됩니다.
|
|
74
|
-
2. 자체 이름(예: `failprof-ai`)에 해당하는 바이너리를 노출하며, 모든 인수를 `failproofai` 바이너리로 프록시합니다.
|
|
75
|
-
|
|
76
|
-
프록시는 두 줄짜리 Node 스크립트로, 로직도 없고 네트워크 호출도 없으며, `failproofai` 자체가 수행하는 것 이상의 데이터 수집도 없습니다.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 누락된 이름을 발견했다면
|
|
81
|
-
|
|
82
|
-
[exospherehost/failproofai](https://github.com/exospherehost/failproofai/issues)에 이슈를 등록해 주시면 등록하겠습니다.
|