failproofai 0.0.6-beta.3 → 0.0.6-beta.5

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.
Files changed (509) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +7 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  13. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  19. package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
  21. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  22. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  25. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/standalone/.next/server/app/index.html +1 -1
  27. package/.next/standalone/.next/server/app/index.rsc +16 -16
  28. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
  30. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  31. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
  32. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  34. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  37. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  40. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  52. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  55. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__096k.db._.js → [root-of-the-server]__0u49i20._.js} +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0kyh86x._.js → [root-of-the-server]__0xezw2w._.js} +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  64. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  65. package/.next/standalone/.next/server/pages/404.html +2 -2
  66. package/.next/standalone/.next/server/pages/500.html +1 -1
  67. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  69. package/.next/standalone/.next/static/chunks/03xexm0jftw.x.js +6 -0
  70. package/.next/standalone/.next/static/chunks/{0-dm_9a6nsc2l.js → 0_-7qmtiagi-~.js} +1 -1
  71. package/.next/standalone/.next/static/chunks/{0l-mu4okl-cj1.js → 0af6vx3nh6v77.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/{051m32nx~n5yr.js → 0hrob6m-1.n1d.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
  74. package/.next/standalone/.next/static/chunks/{156zca6aewyr-.js → 0ms9sfkvw5h5i.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{01pmw1-asbek~.js → 0on5naeqa0w.x.js} +2 -2
  76. package/.next/standalone/.next/static/chunks/{0mazj-p-~2kc6.js → 0q~7ymasjp~n7.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0a-yctdwn368y.js → 11vga8q3t~527.js} +1 -1
  78. package/.next/standalone/next.config.ts +6 -0
  79. package/.next/standalone/package.json +2 -2
  80. package/.next/standalone/server.js +1 -1
  81. package/dist/cli.mjs +90 -2
  82. package/package.json +2 -2
  83. package/scripts/prune-standalone.mjs +128 -0
  84. package/src/hooks/builtin-policies.ts +117 -0
  85. package/.next/standalone/.claude/settings.json +0 -316
  86. package/.next/standalone/.failproofai/policies/review-policies.mjs +0 -113
  87. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +0 -63
  88. package/.next/standalone/.failproofai/policies-config.json +0 -39
  89. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +0 -1
  90. package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +0 -6
  91. package/.next/standalone/AGENTS.md +0 -80
  92. package/.next/standalone/CHANGELOG.md +0 -158
  93. package/.next/standalone/CLAUDE.md +0 -165
  94. package/.next/standalone/CONTRIBUTING.md +0 -76
  95. package/.next/standalone/Dockerfile.docs +0 -12
  96. package/.next/standalone/LICENSE +0 -42
  97. package/.next/standalone/README.md +0 -301
  98. package/.next/standalone/bin/failproofai.mjs +0 -439
  99. package/.next/standalone/bun.lock +0 -1119
  100. package/.next/standalone/components.json +0 -23
  101. package/.next/standalone/dist/cli.mjs +0 -4696
  102. package/.next/standalone/dist/index.js +0 -80
  103. package/.next/standalone/docs/ar/architecture.mdx +0 -334
  104. package/.next/standalone/docs/ar/built-in-policies.mdx +0 -574
  105. package/.next/standalone/docs/ar/cli/dashboard.mdx +0 -28
  106. package/.next/standalone/docs/ar/cli/environment-variables.mdx +0 -34
  107. package/.next/standalone/docs/ar/cli/hook.mdx +0 -31
  108. package/.next/standalone/docs/ar/cli/install-policies.mdx +0 -48
  109. package/.next/standalone/docs/ar/cli/list-policies.mdx +0 -31
  110. package/.next/standalone/docs/ar/cli/remove-policies.mdx +0 -43
  111. package/.next/standalone/docs/ar/cli/version.mdx +0 -13
  112. package/.next/standalone/docs/ar/configuration.mdx +0 -223
  113. package/.next/standalone/docs/ar/custom-policies.mdx +0 -354
  114. package/.next/standalone/docs/ar/dashboard.mdx +0 -142
  115. package/.next/standalone/docs/ar/examples.mdx +0 -307
  116. package/.next/standalone/docs/ar/for-agents.mdx +0 -39
  117. package/.next/standalone/docs/ar/getting-started.mdx +0 -187
  118. package/.next/standalone/docs/ar/introduction.mdx +0 -58
  119. package/.next/standalone/docs/ar/package-aliases.mdx +0 -82
  120. package/.next/standalone/docs/ar/testing.mdx +0 -261
  121. package/.next/standalone/docs/architecture.mdx +0 -332
  122. package/.next/standalone/docs/built-in-policies.mdx +0 -574
  123. package/.next/standalone/docs/cli/dashboard.mdx +0 -28
  124. package/.next/standalone/docs/cli/environment-variables.mdx +0 -34
  125. package/.next/standalone/docs/cli/hook.mdx +0 -30
  126. package/.next/standalone/docs/cli/install-policies.mdx +0 -47
  127. package/.next/standalone/docs/cli/list-policies.mdx +0 -31
  128. package/.next/standalone/docs/cli/remove-policies.mdx +0 -43
  129. package/.next/standalone/docs/cli/version.mdx +0 -12
  130. package/.next/standalone/docs/configuration.mdx +0 -222
  131. package/.next/standalone/docs/custom-policies.mdx +0 -353
  132. package/.next/standalone/docs/dashboard.mdx +0 -142
  133. package/.next/standalone/docs/de/architecture.mdx +0 -332
  134. package/.next/standalone/docs/de/built-in-policies.mdx +0 -574
  135. package/.next/standalone/docs/de/cli/dashboard.mdx +0 -28
  136. package/.next/standalone/docs/de/cli/environment-variables.mdx +0 -34
  137. package/.next/standalone/docs/de/cli/hook.mdx +0 -30
  138. package/.next/standalone/docs/de/cli/install-policies.mdx +0 -47
  139. package/.next/standalone/docs/de/cli/list-policies.mdx +0 -31
  140. package/.next/standalone/docs/de/cli/remove-policies.mdx +0 -43
  141. package/.next/standalone/docs/de/cli/version.mdx +0 -12
  142. package/.next/standalone/docs/de/configuration.mdx +0 -222
  143. package/.next/standalone/docs/de/custom-policies.mdx +0 -353
  144. package/.next/standalone/docs/de/dashboard.mdx +0 -142
  145. package/.next/standalone/docs/de/examples.mdx +0 -307
  146. package/.next/standalone/docs/de/for-agents.mdx +0 -38
  147. package/.next/standalone/docs/de/getting-started.mdx +0 -186
  148. package/.next/standalone/docs/de/introduction.mdx +0 -57
  149. package/.next/standalone/docs/de/package-aliases.mdx +0 -82
  150. package/.next/standalone/docs/de/testing.mdx +0 -260
  151. package/.next/standalone/docs/docs.json +0 -1002
  152. package/.next/standalone/docs/es/architecture.mdx +0 -332
  153. package/.next/standalone/docs/es/built-in-policies.mdx +0 -574
  154. package/.next/standalone/docs/es/cli/dashboard.mdx +0 -28
  155. package/.next/standalone/docs/es/cli/environment-variables.mdx +0 -34
  156. package/.next/standalone/docs/es/cli/hook.mdx +0 -30
  157. package/.next/standalone/docs/es/cli/install-policies.mdx +0 -47
  158. package/.next/standalone/docs/es/cli/list-policies.mdx +0 -31
  159. package/.next/standalone/docs/es/cli/remove-policies.mdx +0 -43
  160. package/.next/standalone/docs/es/cli/version.mdx +0 -12
  161. package/.next/standalone/docs/es/configuration.mdx +0 -222
  162. package/.next/standalone/docs/es/custom-policies.mdx +0 -353
  163. package/.next/standalone/docs/es/dashboard.mdx +0 -142
  164. package/.next/standalone/docs/es/examples.mdx +0 -307
  165. package/.next/standalone/docs/es/for-agents.mdx +0 -38
  166. package/.next/standalone/docs/es/getting-started.mdx +0 -186
  167. package/.next/standalone/docs/es/introduction.mdx +0 -57
  168. package/.next/standalone/docs/es/package-aliases.mdx +0 -82
  169. package/.next/standalone/docs/es/testing.mdx +0 -260
  170. package/.next/standalone/docs/examples.mdx +0 -307
  171. package/.next/standalone/docs/favicon.ico +0 -0
  172. package/.next/standalone/docs/for-agents.mdx +0 -38
  173. package/.next/standalone/docs/fr/architecture.mdx +0 -332
  174. package/.next/standalone/docs/fr/built-in-policies.mdx +0 -574
  175. package/.next/standalone/docs/fr/cli/dashboard.mdx +0 -28
  176. package/.next/standalone/docs/fr/cli/environment-variables.mdx +0 -34
  177. package/.next/standalone/docs/fr/cli/hook.mdx +0 -30
  178. package/.next/standalone/docs/fr/cli/install-policies.mdx +0 -47
  179. package/.next/standalone/docs/fr/cli/list-policies.mdx +0 -31
  180. package/.next/standalone/docs/fr/cli/remove-policies.mdx +0 -43
  181. package/.next/standalone/docs/fr/cli/version.mdx +0 -12
  182. package/.next/standalone/docs/fr/configuration.mdx +0 -222
  183. package/.next/standalone/docs/fr/custom-policies.mdx +0 -353
  184. package/.next/standalone/docs/fr/dashboard.mdx +0 -142
  185. package/.next/standalone/docs/fr/examples.mdx +0 -307
  186. package/.next/standalone/docs/fr/for-agents.mdx +0 -38
  187. package/.next/standalone/docs/fr/getting-started.mdx +0 -186
  188. package/.next/standalone/docs/fr/introduction.mdx +0 -57
  189. package/.next/standalone/docs/fr/package-aliases.mdx +0 -82
  190. package/.next/standalone/docs/fr/testing.mdx +0 -260
  191. package/.next/standalone/docs/getting-started.mdx +0 -186
  192. package/.next/standalone/docs/he/architecture.mdx +0 -333
  193. package/.next/standalone/docs/he/built-in-policies.mdx +0 -575
  194. package/.next/standalone/docs/he/cli/dashboard.mdx +0 -28
  195. package/.next/standalone/docs/he/cli/environment-variables.mdx +0 -34
  196. package/.next/standalone/docs/he/cli/hook.mdx +0 -30
  197. package/.next/standalone/docs/he/cli/install-policies.mdx +0 -47
  198. package/.next/standalone/docs/he/cli/list-policies.mdx +0 -32
  199. package/.next/standalone/docs/he/cli/remove-policies.mdx +0 -43
  200. package/.next/standalone/docs/he/cli/version.mdx +0 -12
  201. package/.next/standalone/docs/he/configuration.mdx +0 -223
  202. package/.next/standalone/docs/he/custom-policies.mdx +0 -353
  203. package/.next/standalone/docs/he/dashboard.mdx +0 -142
  204. package/.next/standalone/docs/he/examples.mdx +0 -307
  205. package/.next/standalone/docs/he/for-agents.mdx +0 -38
  206. package/.next/standalone/docs/he/getting-started.mdx +0 -186
  207. package/.next/standalone/docs/he/introduction.mdx +0 -57
  208. package/.next/standalone/docs/he/package-aliases.mdx +0 -82
  209. package/.next/standalone/docs/he/testing.mdx +0 -260
  210. package/.next/standalone/docs/hi/architecture.mdx +0 -334
  211. package/.next/standalone/docs/hi/built-in-policies.mdx +0 -572
  212. package/.next/standalone/docs/hi/cli/dashboard.mdx +0 -28
  213. package/.next/standalone/docs/hi/cli/environment-variables.mdx +0 -34
  214. package/.next/standalone/docs/hi/cli/hook.mdx +0 -30
  215. package/.next/standalone/docs/hi/cli/install-policies.mdx +0 -47
  216. package/.next/standalone/docs/hi/cli/list-policies.mdx +0 -31
  217. package/.next/standalone/docs/hi/cli/remove-policies.mdx +0 -43
  218. package/.next/standalone/docs/hi/cli/version.mdx +0 -12
  219. package/.next/standalone/docs/hi/configuration.mdx +0 -222
  220. package/.next/standalone/docs/hi/custom-policies.mdx +0 -354
  221. package/.next/standalone/docs/hi/dashboard.mdx +0 -142
  222. package/.next/standalone/docs/hi/examples.mdx +0 -309
  223. package/.next/standalone/docs/hi/for-agents.mdx +0 -38
  224. package/.next/standalone/docs/hi/getting-started.mdx +0 -187
  225. package/.next/standalone/docs/hi/introduction.mdx +0 -57
  226. package/.next/standalone/docs/hi/package-aliases.mdx +0 -82
  227. package/.next/standalone/docs/hi/testing.mdx +0 -260
  228. package/.next/standalone/docs/i18n/README.ar.md +0 -312
  229. package/.next/standalone/docs/i18n/README.de.md +0 -307
  230. package/.next/standalone/docs/i18n/README.es.md +0 -307
  231. package/.next/standalone/docs/i18n/README.fr.md +0 -307
  232. package/.next/standalone/docs/i18n/README.he.md +0 -312
  233. package/.next/standalone/docs/i18n/README.hi.md +0 -307
  234. package/.next/standalone/docs/i18n/README.it.md +0 -307
  235. package/.next/standalone/docs/i18n/README.ja.md +0 -307
  236. package/.next/standalone/docs/i18n/README.ko.md +0 -307
  237. package/.next/standalone/docs/i18n/README.pt-br.md +0 -307
  238. package/.next/standalone/docs/i18n/README.ru.md +0 -308
  239. package/.next/standalone/docs/i18n/README.tr.md +0 -307
  240. package/.next/standalone/docs/i18n/README.vi.md +0 -307
  241. package/.next/standalone/docs/i18n/README.zh.md +0 -307
  242. package/.next/standalone/docs/introduction.mdx +0 -57
  243. package/.next/standalone/docs/it/architecture.mdx +0 -334
  244. package/.next/standalone/docs/it/built-in-policies.mdx +0 -574
  245. package/.next/standalone/docs/it/cli/dashboard.mdx +0 -28
  246. package/.next/standalone/docs/it/cli/environment-variables.mdx +0 -34
  247. package/.next/standalone/docs/it/cli/hook.mdx +0 -30
  248. package/.next/standalone/docs/it/cli/install-policies.mdx +0 -47
  249. package/.next/standalone/docs/it/cli/list-policies.mdx +0 -31
  250. package/.next/standalone/docs/it/cli/remove-policies.mdx +0 -43
  251. package/.next/standalone/docs/it/cli/version.mdx +0 -12
  252. package/.next/standalone/docs/it/configuration.mdx +0 -222
  253. package/.next/standalone/docs/it/custom-policies.mdx +0 -353
  254. package/.next/standalone/docs/it/dashboard.mdx +0 -142
  255. package/.next/standalone/docs/it/examples.mdx +0 -307
  256. package/.next/standalone/docs/it/for-agents.mdx +0 -38
  257. package/.next/standalone/docs/it/getting-started.mdx +0 -186
  258. package/.next/standalone/docs/it/introduction.mdx +0 -57
  259. package/.next/standalone/docs/it/package-aliases.mdx +0 -82
  260. package/.next/standalone/docs/it/testing.mdx +0 -260
  261. package/.next/standalone/docs/ja/architecture.mdx +0 -332
  262. package/.next/standalone/docs/ja/built-in-policies.mdx +0 -572
  263. package/.next/standalone/docs/ja/cli/dashboard.mdx +0 -28
  264. package/.next/standalone/docs/ja/cli/environment-variables.mdx +0 -34
  265. package/.next/standalone/docs/ja/cli/hook.mdx +0 -30
  266. package/.next/standalone/docs/ja/cli/install-policies.mdx +0 -47
  267. package/.next/standalone/docs/ja/cli/list-policies.mdx +0 -31
  268. package/.next/standalone/docs/ja/cli/remove-policies.mdx +0 -43
  269. package/.next/standalone/docs/ja/cli/version.mdx +0 -12
  270. package/.next/standalone/docs/ja/configuration.mdx +0 -222
  271. package/.next/standalone/docs/ja/custom-policies.mdx +0 -353
  272. package/.next/standalone/docs/ja/dashboard.mdx +0 -142
  273. package/.next/standalone/docs/ja/examples.mdx +0 -307
  274. package/.next/standalone/docs/ja/for-agents.mdx +0 -38
  275. package/.next/standalone/docs/ja/getting-started.mdx +0 -186
  276. package/.next/standalone/docs/ja/introduction.mdx +0 -57
  277. package/.next/standalone/docs/ja/package-aliases.mdx +0 -82
  278. package/.next/standalone/docs/ja/testing.mdx +0 -260
  279. package/.next/standalone/docs/ko/architecture.mdx +0 -332
  280. package/.next/standalone/docs/ko/built-in-policies.mdx +0 -572
  281. package/.next/standalone/docs/ko/cli/dashboard.mdx +0 -28
  282. package/.next/standalone/docs/ko/cli/environment-variables.mdx +0 -34
  283. package/.next/standalone/docs/ko/cli/hook.mdx +0 -30
  284. package/.next/standalone/docs/ko/cli/install-policies.mdx +0 -47
  285. package/.next/standalone/docs/ko/cli/list-policies.mdx +0 -31
  286. package/.next/standalone/docs/ko/cli/remove-policies.mdx +0 -43
  287. package/.next/standalone/docs/ko/cli/version.mdx +0 -12
  288. package/.next/standalone/docs/ko/configuration.mdx +0 -222
  289. package/.next/standalone/docs/ko/custom-policies.mdx +0 -353
  290. package/.next/standalone/docs/ko/dashboard.mdx +0 -142
  291. package/.next/standalone/docs/ko/examples.mdx +0 -307
  292. package/.next/standalone/docs/ko/for-agents.mdx +0 -38
  293. package/.next/standalone/docs/ko/getting-started.mdx +0 -186
  294. package/.next/standalone/docs/ko/introduction.mdx +0 -57
  295. package/.next/standalone/docs/ko/package-aliases.mdx +0 -82
  296. package/.next/standalone/docs/ko/testing.mdx +0 -260
  297. package/.next/standalone/docs/logo/dark.svg +0 -21
  298. package/.next/standalone/docs/logo/exosphere-dark.png +0 -0
  299. package/.next/standalone/docs/logo/exosphere-light.png +0 -0
  300. package/.next/standalone/docs/logo/light.svg +0 -21
  301. package/.next/standalone/docs/package-aliases.mdx +0 -82
  302. package/.next/standalone/docs/pt-br/architecture.mdx +0 -332
  303. package/.next/standalone/docs/pt-br/built-in-policies.mdx +0 -574
  304. package/.next/standalone/docs/pt-br/cli/dashboard.mdx +0 -28
  305. package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +0 -34
  306. package/.next/standalone/docs/pt-br/cli/hook.mdx +0 -30
  307. package/.next/standalone/docs/pt-br/cli/install-policies.mdx +0 -47
  308. package/.next/standalone/docs/pt-br/cli/list-policies.mdx +0 -31
  309. package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +0 -43
  310. package/.next/standalone/docs/pt-br/cli/version.mdx +0 -12
  311. package/.next/standalone/docs/pt-br/configuration.mdx +0 -222
  312. package/.next/standalone/docs/pt-br/custom-policies.mdx +0 -353
  313. package/.next/standalone/docs/pt-br/dashboard.mdx +0 -142
  314. package/.next/standalone/docs/pt-br/examples.mdx +0 -307
  315. package/.next/standalone/docs/pt-br/for-agents.mdx +0 -38
  316. package/.next/standalone/docs/pt-br/getting-started.mdx +0 -186
  317. package/.next/standalone/docs/pt-br/introduction.mdx +0 -57
  318. package/.next/standalone/docs/pt-br/package-aliases.mdx +0 -82
  319. package/.next/standalone/docs/pt-br/testing.mdx +0 -260
  320. package/.next/standalone/docs/ru/architecture.mdx +0 -333
  321. package/.next/standalone/docs/ru/built-in-policies.mdx +0 -574
  322. package/.next/standalone/docs/ru/cli/dashboard.mdx +0 -28
  323. package/.next/standalone/docs/ru/cli/environment-variables.mdx +0 -34
  324. package/.next/standalone/docs/ru/cli/hook.mdx +0 -30
  325. package/.next/standalone/docs/ru/cli/install-policies.mdx +0 -48
  326. package/.next/standalone/docs/ru/cli/list-policies.mdx +0 -32
  327. package/.next/standalone/docs/ru/cli/remove-policies.mdx +0 -43
  328. package/.next/standalone/docs/ru/cli/version.mdx +0 -12
  329. package/.next/standalone/docs/ru/configuration.mdx +0 -222
  330. package/.next/standalone/docs/ru/custom-policies.mdx +0 -354
  331. package/.next/standalone/docs/ru/dashboard.mdx +0 -142
  332. package/.next/standalone/docs/ru/examples.mdx +0 -309
  333. package/.next/standalone/docs/ru/for-agents.mdx +0 -38
  334. package/.next/standalone/docs/ru/getting-started.mdx +0 -186
  335. package/.next/standalone/docs/ru/introduction.mdx +0 -57
  336. package/.next/standalone/docs/ru/package-aliases.mdx +0 -82
  337. package/.next/standalone/docs/ru/testing.mdx +0 -260
  338. package/.next/standalone/docs/testing.mdx +0 -260
  339. package/.next/standalone/docs/tr/architecture.mdx +0 -333
  340. package/.next/standalone/docs/tr/built-in-policies.mdx +0 -574
  341. package/.next/standalone/docs/tr/cli/dashboard.mdx +0 -28
  342. package/.next/standalone/docs/tr/cli/environment-variables.mdx +0 -34
  343. package/.next/standalone/docs/tr/cli/hook.mdx +0 -30
  344. package/.next/standalone/docs/tr/cli/install-policies.mdx +0 -47
  345. package/.next/standalone/docs/tr/cli/list-policies.mdx +0 -31
  346. package/.next/standalone/docs/tr/cli/remove-policies.mdx +0 -44
  347. package/.next/standalone/docs/tr/cli/version.mdx +0 -12
  348. package/.next/standalone/docs/tr/configuration.mdx +0 -222
  349. package/.next/standalone/docs/tr/custom-policies.mdx +0 -353
  350. package/.next/standalone/docs/tr/dashboard.mdx +0 -142
  351. package/.next/standalone/docs/tr/examples.mdx +0 -308
  352. package/.next/standalone/docs/tr/for-agents.mdx +0 -38
  353. package/.next/standalone/docs/tr/getting-started.mdx +0 -186
  354. package/.next/standalone/docs/tr/introduction.mdx +0 -57
  355. package/.next/standalone/docs/tr/package-aliases.mdx +0 -82
  356. package/.next/standalone/docs/tr/testing.mdx +0 -260
  357. package/.next/standalone/docs/vi/architecture.mdx +0 -334
  358. package/.next/standalone/docs/vi/built-in-policies.mdx +0 -572
  359. package/.next/standalone/docs/vi/cli/dashboard.mdx +0 -28
  360. package/.next/standalone/docs/vi/cli/environment-variables.mdx +0 -34
  361. package/.next/standalone/docs/vi/cli/hook.mdx +0 -30
  362. package/.next/standalone/docs/vi/cli/install-policies.mdx +0 -47
  363. package/.next/standalone/docs/vi/cli/list-policies.mdx +0 -31
  364. package/.next/standalone/docs/vi/cli/remove-policies.mdx +0 -43
  365. package/.next/standalone/docs/vi/cli/version.mdx +0 -13
  366. package/.next/standalone/docs/vi/configuration.mdx +0 -222
  367. package/.next/standalone/docs/vi/custom-policies.mdx +0 -353
  368. package/.next/standalone/docs/vi/dashboard.mdx +0 -142
  369. package/.next/standalone/docs/vi/examples.mdx +0 -308
  370. package/.next/standalone/docs/vi/for-agents.mdx +0 -38
  371. package/.next/standalone/docs/vi/getting-started.mdx +0 -186
  372. package/.next/standalone/docs/vi/introduction.mdx +0 -57
  373. package/.next/standalone/docs/vi/package-aliases.mdx +0 -82
  374. package/.next/standalone/docs/vi/testing.mdx +0 -260
  375. package/.next/standalone/docs/zh/architecture.mdx +0 -332
  376. package/.next/standalone/docs/zh/built-in-policies.mdx +0 -570
  377. package/.next/standalone/docs/zh/cli/dashboard.mdx +0 -28
  378. package/.next/standalone/docs/zh/cli/environment-variables.mdx +0 -34
  379. package/.next/standalone/docs/zh/cli/hook.mdx +0 -30
  380. package/.next/standalone/docs/zh/cli/install-policies.mdx +0 -47
  381. package/.next/standalone/docs/zh/cli/list-policies.mdx +0 -31
  382. package/.next/standalone/docs/zh/cli/remove-policies.mdx +0 -43
  383. package/.next/standalone/docs/zh/cli/version.mdx +0 -12
  384. package/.next/standalone/docs/zh/configuration.mdx +0 -222
  385. package/.next/standalone/docs/zh/custom-policies.mdx +0 -353
  386. package/.next/standalone/docs/zh/dashboard.mdx +0 -142
  387. package/.next/standalone/docs/zh/examples.mdx +0 -307
  388. package/.next/standalone/docs/zh/for-agents.mdx +0 -38
  389. package/.next/standalone/docs/zh/getting-started.mdx +0 -186
  390. package/.next/standalone/docs/zh/introduction.mdx +0 -57
  391. package/.next/standalone/docs/zh/package-aliases.mdx +0 -82
  392. package/.next/standalone/docs/zh/testing.mdx +0 -260
  393. package/.next/standalone/eslint.config.mjs +0 -15
  394. package/.next/standalone/examples/convention-policies/security-policies.mjs +0 -40
  395. package/.next/standalone/examples/convention-policies/workflow-policies.mjs +0 -41
  396. package/.next/standalone/examples/policies-advanced/index.js +0 -103
  397. package/.next/standalone/examples/policies-advanced/utils.js +0 -35
  398. package/.next/standalone/examples/policies-basic.js +0 -77
  399. package/.next/standalone/examples/policies-notification.js +0 -104
  400. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  401. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  402. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  403. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
  404. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  405. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
  406. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  407. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
  408. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
  409. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  410. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  411. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  412. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  413. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  414. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  415. package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  416. package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +0 -46
  417. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  418. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  419. package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +0 -313
  420. package/.next/standalone/node_modules/detect-libc/lib/elf.js +0 -39
  421. package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +0 -51
  422. package/.next/standalone/node_modules/detect-libc/lib/process.js +0 -24
  423. package/.next/standalone/node_modules/detect-libc/package.json +0 -44
  424. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  425. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  426. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  427. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  428. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  429. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  430. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  431. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  432. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  433. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  434. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  435. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  436. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  437. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  438. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  439. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  440. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  441. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  442. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  443. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  444. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  445. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  446. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  447. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  448. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  449. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  450. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  451. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  452. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  453. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  454. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  455. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  456. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  457. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  458. package/.next/standalone/node_modules/sharp/package.json +0 -202
  459. package/.next/standalone/scripts/alias-proxy.js +0 -18
  460. package/.next/standalone/scripts/dev.ts +0 -3
  461. package/.next/standalone/scripts/install-telemetry.mjs +0 -108
  462. package/.next/standalone/scripts/launch.ts +0 -83
  463. package/.next/standalone/scripts/parse-script-args.ts +0 -87
  464. package/.next/standalone/scripts/postinstall.mjs +0 -121
  465. package/.next/standalone/scripts/preuninstall.mjs +0 -131
  466. package/.next/standalone/scripts/publish-aliases.mjs +0 -87
  467. package/.next/standalone/scripts/start.ts +0 -3
  468. package/.next/standalone/scripts/sync-hook-events-prompt.md +0 -60
  469. package/.next/standalone/scripts/translate-docs/cache.ts +0 -62
  470. package/.next/standalone/scripts/translate-docs/cli.ts +0 -357
  471. package/.next/standalone/scripts/translate-docs/config.ts +0 -248
  472. package/.next/standalone/scripts/translate-docs/mdx-translator.ts +0 -153
  473. package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +0 -107
  474. package/.next/standalone/scripts/translate-docs/readme-translator.ts +0 -154
  475. package/.next/standalone/scripts/translate-docs/translator.ts +0 -68
  476. package/.next/standalone/scripts/translate-docs/types.ts +0 -43
  477. package/.next/standalone/src/auth/login.ts +0 -104
  478. package/.next/standalone/src/auth/logout.ts +0 -50
  479. package/.next/standalone/src/auth/token-store.ts +0 -64
  480. package/.next/standalone/src/cli-error.ts +0 -18
  481. package/.next/standalone/src/hooks/builtin-policies.ts +0 -1615
  482. package/.next/standalone/src/hooks/custom-hooks-loader.ts +0 -205
  483. package/.next/standalone/src/hooks/custom-hooks-registry.ts +0 -30
  484. package/.next/standalone/src/hooks/handler.ts +0 -222
  485. package/.next/standalone/src/hooks/hook-activity-store.ts +0 -349
  486. package/.next/standalone/src/hooks/hook-logger.ts +0 -133
  487. package/.next/standalone/src/hooks/hook-telemetry.ts +0 -43
  488. package/.next/standalone/src/hooks/hooks-config.ts +0 -166
  489. package/.next/standalone/src/hooks/install-prompt.ts +0 -357
  490. package/.next/standalone/src/hooks/llm-client.ts +0 -90
  491. package/.next/standalone/src/hooks/loader-utils.ts +0 -178
  492. package/.next/standalone/src/hooks/manager.ts +0 -692
  493. package/.next/standalone/src/hooks/policy-evaluator.ts +0 -224
  494. package/.next/standalone/src/hooks/policy-helpers.ts +0 -16
  495. package/.next/standalone/src/hooks/policy-registry.ts +0 -90
  496. package/.next/standalone/src/hooks/policy-types.ts +0 -77
  497. package/.next/standalone/src/hooks/types.ts +0 -63
  498. package/.next/standalone/src/index.ts +0 -19
  499. package/.next/standalone/src/posthog-key.ts +0 -5
  500. package/.next/standalone/src/relay/daemon.ts +0 -362
  501. package/.next/standalone/src/relay/pid.ts +0 -76
  502. package/.next/standalone/src/relay/queue.ts +0 -225
  503. package/.next/standalone/tailwind.config.ts +0 -11
  504. package/.next/standalone/tsconfig.json +0 -42
  505. package/.next/standalone/vitest.config.e2e.mts +0 -24
  506. package/.next/standalone/vitest.config.mts +0 -23
  507. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → Q-y1SELeezrTyQx0E2uqg}/_buildManifest.js +0 -0
  508. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → Q-y1SELeezrTyQx0E2uqg}/_clientMiddlewareManifest.js +0 -0
  509. /package/.next/standalone/.next/static/{r-wX0MuAfCjbhJm3phQc8 → Q-y1SELeezrTyQx0E2uqg}/_ssgManifest.js +0 -0
@@ -1,354 +0,0 @@
1
- ---
2
- ---
3
- title: Пользовательские политики
4
- description: "Напишите собственные политики на JavaScript - обеспечьте соблюдение соглашений, предотвратите дрейф, выявляйте сбои, интегрируйтесь с внешними системами"
5
- icon: code
6
- ---
7
-
8
- Пользовательские политики позволяют писать правила для любого поведения агента: обеспечивать соблюдение соглашений проекта, предотвращать дрейф, блокировать деструктивные операции, выявлять зависшие агенты или интегрироваться со Slack, рабочими процессами одобрения и многим другим. Они используют ту же систему событий hook и решения `allow`, `deny`, `instruct`, что и встроенные политики.
9
-
10
- ---
11
-
12
- ## Быстрый пример
13
-
14
- ```js
15
- // my-policies.js
16
- import { customPolicies, allow, deny, instruct } from "failproofai";
17
-
18
- customPolicies.add({
19
- name: "no-production-writes",
20
- description: "Block writes to paths containing 'production'",
21
- match: { events: ["PreToolUse"] },
22
- fn: async (ctx) => {
23
- if (ctx.toolName !== "Write" && ctx.toolName !== "Edit") return allow();
24
- const path = ctx.toolInput?.file_path ?? "";
25
- if (path.includes("production")) {
26
- return deny("Writes to production paths are blocked");
27
- }
28
- return allow();
29
- },
30
- });
31
- ```
32
-
33
- Установите её:
34
-
35
- ```bash
36
- failproofai policies --install --custom ./my-policies.js
37
- ```
38
-
39
- ---
40
-
41
- ## Два способа загрузки пользовательских политик
42
-
43
- ### Вариант 1: На основе соглашения (рекомендуется)
44
-
45
- Разместите файлы `*policies.{js,mjs,ts}` в `.failproofai/policies/` и они будут загружены автоматически — без флагов или изменений конфигурации. Это работает как git hooks: положите файл, и он просто работает.
46
-
47
- ```
48
- # На уровне проекта — добавляется в git, совместно используется командой
49
- .failproofai/policies/security-policies.mjs
50
- .failproofai/policies/workflow-policies.mjs
51
-
52
- # На уровне пользователя — личные, применяются ко всем проектам
53
- ~/.failproofai/policies/my-policies.mjs
54
- ```
55
-
56
- **Как это работает:**
57
- - Оба каталога (проекта и пользователя) сканируются (объединение — не первый найденный)
58
- - Файлы загружаются в алфавитном порядке в каждом каталоге. Добавьте префикс `01-`, `02-` для управления порядком
59
- - Загружаются только файлы, соответствующие `*policies.{js,mjs,ts}`; остальные файлы игнорируются
60
- - Каждый файл загружается независимо (fail-open для каждого файла)
61
- - Работает рядом с явными `--custom` и встроенными политиками
62
-
63
- <Tip>
64
- Политики на основе соглашения — самый простой способ установить стандарт качества для вашей организации. Добавьте `.failproofai/policies/` в git, и каждый участник команды получит одни и те же правила автоматически — не требуется настройка для каждого разработчика. По мере того как ваша команда обнаруживает новые режимы сбоев, добавьте политику и отправьте её. Со временем эти политики становятся живым стандартом качества, который улучшается с каждым вкладом.
65
- </Tip>
66
-
67
- ### Вариант 2: Явный путь к файлу
68
-
69
- ```bash
70
- # Установка с пользовательским файлом политик
71
- failproofai policies --install --custom ./my-policies.js
72
-
73
- # Замена пути к файлу политик
74
- failproofai policies --install --custom ./new-policies.js
75
-
76
- # Удаление пути к пользовательским политикам из конфигурации
77
- failproofai policies --uninstall --custom
78
- ```
79
-
80
- Разрешённый абсолютный путь сохраняется в `policies-config.json` как `customPoliciesPath`. Файл загружается заново при каждом событии hook — кеширования между событиями нет.
81
-
82
- ### Использование обоих способов вместе
83
-
84
- Политики на основе соглашения и явный файл `--custom` могут сосуществовать. Порядок загрузки:
85
-
86
- 1. Файл с явным `customPoliciesPath` (если настроен)
87
- 2. Файлы соглашения проекта (`{cwd}/.failproofai/policies/`, в алфавитном порядке)
88
- 3. Файлы соглашения пользователя (`~/.failproofai/policies/`, в алфавитном порядке)
89
-
90
- ---
91
-
92
- ## API
93
-
94
- ### Импорт
95
-
96
- ```js
97
- import { customPolicies, allow, deny, instruct } from "failproofai";
98
- ```
99
-
100
- ### `customPolicies.add(hook)`
101
-
102
- Регистрирует политику. Вызывайте столько раз, сколько нужно для нескольких политик в одном файле.
103
-
104
- ```ts
105
- customPolicies.add({
106
- name: string; // обязателен - уникальный идентификатор
107
- description?: string; // показывается в выводе `failproofai policies`
108
- match?: { events?: HookEventType[] }; // фильтр по типу события; опустите для соответствия всем
109
- fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
110
- });
111
- ```
112
-
113
- ### Вспомогательные функции принятия решений
114
-
115
- | Функция | Эффект | Когда использовать |
116
- |---------|--------|-------------------|
117
- | `allow()` | Разрешить операцию молча | Действие безопасно, сообщение не требуется |
118
- | `deny(message)` | Блокировать операцию | Агент не должен выполнять это действие |
119
- | `instruct(message)` | Добавить контекст без блокировки | Дать агенту дополнительный контекст для остановки на пути |
120
-
121
- `deny(message)` - сообщение появляется Claude с префиксом `"Blocked by failproofai:"`. Один `deny` прерывает всю дальнейшую оценку.
122
-
123
- `instruct(message)` - сообщение добавляется в контекст Claude для текущего вызова инструмента. Все сообщения `instruct` накапливаются и доставляются вместе.
124
-
125
- <Tip>
126
- Вы можете добавить дополнительное руководство к любому сообщению `deny` или `instruct`, добавив поле `hint` в `policyParams` — без изменения кода. Это работает для пользовательских (`custom/`), проектных соглашений (`.failproofai-project/`) и пользовательских соглашений (`.failproofai-user/`) политик. Смотрите [Configuration → hint](/ru/configuration#hint-cross-cutting) для деталей.
127
- </Tip>
128
-
129
- ### Информационные сообщения allow
130
-
131
- `allow(message)` разрешает операцию **и** отправляет информационное сообщение обратно Claude. Сообщение доставляется как `additionalContext` в ответе stdout обработчика hook — тот же механизм, используемый `instruct`, но семантически отличающийся: это обновление статуса, а не предупреждение.
132
-
133
- | Функция | Эффект | Когда использовать |
134
- |---------|--------|-------------------|
135
- | `allow(message)` | Разрешить и отправить контекст Claude | Подтвердить прохождение проверки или объяснить, почему проверка была пропущена |
136
-
137
- Примеры использования:
138
- - **Подтверждения статуса:** `allow("All CI checks passed.")` — сообщает Claude, что всё хорошо
139
- - **Fail-open объяснения:** `allow("GitHub CLI not installed, skipping CI check.")` — сообщает Claude, почему проверка была пропущена, чтобы у него был полный контекст
140
- - **Несколько сообщений накапливаются:** если несколько политик каждая возвращает `allow(message)`, все сообщения объединяются с новыми строками и доставляются вместе
141
-
142
- ```js
143
- customPolicies.add({
144
- name: "confirm-branch-status",
145
- match: { events: ["Stop"] },
146
- fn: async (ctx) => {
147
- const cwd = ctx.session?.cwd;
148
- if (!cwd) return allow("No working directory, skipping branch check.");
149
-
150
- // ... check branch status ...
151
- if (allPushed) {
152
- return allow("Branch is up to date with remote.");
153
- }
154
- return deny("Unpushed changes detected.");
155
- },
156
- });
157
- ```
158
-
159
- ### Поля `PolicyContext`
160
-
161
- | Поле | Тип | Описание |
162
- |------|-----|---------|
163
- | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
164
- | `toolName` | `string \| undefined` | Вызываемый инструмент (например `"Bash"`, `"Write"`, `"Read"`) |
165
- | `toolInput` | `Record<string, unknown> \| undefined` | Входные параметры инструмента |
166
- | `payload` | `Record<string, unknown>` | Полная необработанная полезная нагрузка события из Claude Code |
167
- | `session` | `SessionMetadata \| undefined` | Контекст сессии (см. ниже) |
168
-
169
- ### Поля `SessionMetadata`
170
-
171
- | Поле | Тип | Описание |
172
- |------|-----|---------|
173
- | `sessionId` | `string` | Идентификатор сессии Claude Code |
174
- | `cwd` | `string` | Рабочий каталог сессии Claude Code |
175
- | `transcriptPath` | `string` | Путь к файлу транскрипта JSONL сессии |
176
-
177
- ### Типы событий
178
-
179
- | Событие | Когда срабатывает | Содержимое `toolInput` |
180
- |--------|------------------|----------------------|
181
- | `PreToolUse` | Перед запуском инструмента Claude | Входные данные инструмента (например `{ command: "..." }` для Bash) |
182
- | `PostToolUse` | После завершения инструмента | Входные данные инструмента + `tool_result` (выход) |
183
- | `Notification` | Когда Claude отправляет уведомление | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks должны всегда возвращать `allow()`, они не могут блокировать уведомления |
184
- | `Stop` | Когда сессия Claude заканчивается | Пусто |
185
-
186
- ---
187
-
188
- ## Порядок оценки
189
-
190
- Политики оцениваются в этом порядке:
191
-
192
- 1. Встроенные политики (в порядке определения)
193
- 2. Явные пользовательские политики из `customPoliciesPath` (в порядке `.add()`)
194
- 3. Политики соглашения из проекта `.failproofai/policies/` (файлы в алфавитном порядке, `.add()` порядок внутри)
195
- 4. Политики соглашения из пользователя `~/.failproofai/policies/` (файлы в алфавитном порядке, `.add()` порядок внутри)
196
-
197
- <Note>
198
- Первый `deny` прерывает все последующие политики. Все сообщения `instruct` накапливаются и доставляются вместе.
199
- </Note>
200
-
201
- ---
202
-
203
- ## Транзитивные импорты
204
-
205
- Файлы пользовательских политик могут импортировать локальные модули, используя относительные пути:
206
-
207
- ```js
208
- // my-policies.js
209
- import { isBlockedPath } from "./utils.js";
210
- import { checkApproval } from "./approval-client.js";
211
-
212
- customPolicies.add({
213
- name: "approval-gate",
214
- fn: async (ctx) => {
215
- if (ctx.toolName !== "Bash") return allow();
216
- const approved = await checkApproval(ctx.toolInput?.command, ctx.session?.sessionId);
217
- return approved ? allow() : deny("Approval required for this command");
218
- },
219
- });
220
- ```
221
-
222
- Все относительные импорты, доступные из файла входа, разрешаются. Это реализуется путём переписывания импортов `from "failproofai"` на фактический путь dist и создания временных файлов `.mjs` для обеспечения совместимости ESM.
223
-
224
- ---
225
-
226
- ## Фильтрация по типу события
227
-
228
- Используйте `match.events` для ограничения, когда срабатывает политика:
229
-
230
- ```js
231
- customPolicies.add({
232
- name: "require-summary-on-stop",
233
- match: { events: ["Stop"] },
234
- fn: async (ctx) => {
235
- // Срабатывает только при завершении сессии
236
- // ctx.session.transcriptPath содержит полный журнал сессии
237
- return allow();
238
- },
239
- });
240
- ```
241
-
242
- Опустите `match` полностью, чтобы срабатывать при каждом типе события.
243
-
244
- ---
245
-
246
- ## Обработка ошибок и режимы сбоя
247
-
248
- Пользовательские политики — **fail-open**: ошибки никогда не блокируют встроенные политики и не приводят к краху обработчика hook.
249
-
250
- | Сбой | Поведение |
251
- |------|-----------|
252
- | `customPoliciesPath` не установлен | Явные пользовательские политики не запускаются; встроенные и политики соглашения продолжают работать нормально |
253
- | Файл не найден | Предупреждение записывается в `~/.failproofai/hook.log`; встроенные продолжают работать |
254
- | Синтаксическая/ошибка импорта (явная) | Ошибка записывается в `~/.failproofai/hook.log`; явные пользовательские политики пропускаются |
255
- | Синтаксическая/ошибка импорта (соглашение) | Ошибка записывается; этот файл пропускается, остальные файлы соглашения всё ещё загружаются |
256
- | `fn` выбрасывает исключение во время выполнения | Ошибка записывается; этот hook рассматривается как `allow`; остальные hooks продолжают работу |
257
- | `fn` работает дольше 10 сек | Тайм-аут записывается; рассматривается как `allow` |
258
- | Каталог соглашения отсутствует | Политики соглашения не запускаются; нет ошибки |
259
-
260
- <Tip>
261
- Для отладки ошибок пользовательских политик смотрите файл журнала:
262
-
263
- ```bash
264
- tail -f ~/.failproofai/hook.log
265
- ```
266
- </Tip>
267
-
268
- ---
269
-
270
- ## Полный пример: несколько политик
271
-
272
- ```js
273
- // my-policies.js
274
- import { customPolicies, allow, deny, instruct } from "failproofai";
275
-
276
- // Запретить агенту писать в каталог secrets/
277
- customPolicies.add({
278
- name: "block-secrets-dir",
279
- description: "Prevent agent from writing to secrets/ directory",
280
- match: { events: ["PreToolUse"] },
281
- fn: async (ctx) => {
282
- if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
283
- const path = ctx.toolInput?.file_path ?? "";
284
- if (path.includes("secrets/")) return deny("Writing to secrets/ is not permitted");
285
- return allow();
286
- },
287
- });
288
-
289
- // Держать агента на пути: проверить тесты перед коммитом
290
- customPolicies.add({
291
- name: "remind-test-before-commit",
292
- description: "Keep the agent on track: verify tests pass before committing",
293
- match: { events: ["PreToolUse"] },
294
- fn: async (ctx) => {
295
- if (ctx.toolName !== "Bash") return allow();
296
- const cmd = ctx.toolInput?.command ?? "";
297
- if (/git\s+commit/.test(cmd)) {
298
- return instruct("Verify all tests pass before committing. Run `bun test` if you haven't already.");
299
- }
300
- return allow();
301
- },
302
- });
303
-
304
- // Запретить незапланированные изменения зависимостей во время freeze
305
- customPolicies.add({
306
- name: "dependency-freeze",
307
- description: "Prevent unplanned dependency changes during freeze period",
308
- match: { events: ["PreToolUse"] },
309
- fn: async (ctx) => {
310
- if (ctx.toolName !== "Bash") return allow();
311
- const cmd = ctx.toolInput?.command ?? "";
312
- const isInstall = /^(npm install|yarn add|bun add|pnpm add)\s+\S/.test(cmd);
313
- if (isInstall && process.env.DEPENDENCY_FREEZE === "1") {
314
- return deny("Package installs are frozen. Unset DEPENDENCY_FREEZE to allow.");
315
- }
316
- return allow();
317
- },
318
- });
319
-
320
- export { customPolicies };
321
- ```
322
-
323
- ---
324
-
325
- ## Примеры
326
-
327
- Каталог `examples/` содержит готовые к запуску файлы политик:
328
-
329
- | Файл | Содержимое |
330
- |------|-----------|
331
- | `examples/policies-basic.js` | Пять начальных политик, охватывающих распространённые режимы сбоев агента |
332
- | `examples/policies-advanced/index.js` | Продвинутые паттерны: транзитивные импорты, асинхронные вызовы, очистка выходных данных и hooks конца сессии |
333
- | `examples/convention-policies/security-policies.mjs` | Политики безопасности на основе соглашения (блокировка записей .env, предотвращение переписывания истории git) |
334
- | `examples/convention-policies/workflow-policies.mjs` | Политики рабочего процесса на основе соглашения (напоминания о тестах, аудит записей файлов) |
335
-
336
- ### Использование примеров с явным файлом
337
-
338
- ```bash
339
- failproofai policies --install --custom ./examples/policies-basic.js
340
- ```
341
-
342
- ### Использование примеров на основе соглашения
343
-
344
- ```bash
345
- # Копировать на уровень проекта
346
- mkdir -p .failproofai/policies
347
- cp examples/convention-policies/*.mjs .failproofai/policies/
348
-
349
- # Или копировать на уровень пользователя
350
- mkdir -p ~/.failproofai/policies
351
- cp examples/convention-policies/*.mjs ~/.failproofai/policies/
352
- ```
353
-
354
- Команда установки не требуется — файлы будут подхвачены автоматически при следующем событии hook.
@@ -1,142 +0,0 @@
1
- ---
2
- title: Панель управления
3
- description: "Мониторинг сеансов агентов, проверка вызовов инструментов и управление политиками"
4
- icon: chart-line
5
- ---
6
-
7
- Панель управления failproofai — это локальное веб-приложение для мониторинга сеансов вашего AI-агента и управления политиками. Посмотрите, что делали ваши агенты, пока вас не было рядом.
8
-
9
- ---
10
-
11
- ## Запуск панели управления
12
-
13
- ```bash
14
- failproofai
15
- ```
16
-
17
- Открывается по адресу `http://localhost:8020`.
18
-
19
- Панель управления читает данные непосредственно из файловой системы — из папок проектов Claude Code и файлов конфигурации failproofai. Ничего не отправляется на удаленный сервис.
20
-
21
- ---
22
-
23
- ## Страницы
24
-
25
- ### Проекты
26
-
27
- Показывает все проекты Claude Code, найденные на вашем компьютере. Проекты обнаруживаются в `~/.claude/projects/` (или в пути, установленном переменной `CLAUDE_PROJECTS_PATH`).
28
-
29
- Для каждого проекта отображается:
30
- - Имя проекта (полученное из пути папки)
31
- - Количество сеансов
32
- - Дата последней активности в сеансе
33
-
34
- Нажмите на проект, чтобы увидеть его сеансы.
35
-
36
- ### Сеансы
37
-
38
- Показывает все сеансы в проекте. Для каждого сеанса отображается:
39
- - ID сеанса
40
- - Временные метки начала и завершения
41
- - Количество вызовов инструментов
42
- - Количество срабатываний хуков (политик, которые были применены)
43
-
44
- Используйте фильтр диапазона дат и поиск по ID сеанса, чтобы сузить список. Сеансы разбиты на страницы.
45
-
46
- Нажмите на сеанс, чтобы открыть просмотр сеанса.
47
-
48
- ### Просмотр сеанса
49
-
50
- Просмотр сеанса отвечает на ключевой вопрос для автономных агентов: что делал агент и оставался ли он на правильном пути? Он показывает временную шкалу всего, что произошло в сеансе:
51
-
52
- - **Сообщения** — текстовые ответы Claude и подсказки пользователя
53
- - **Вызовы инструментов** — каждый инструмент, который вызвал Claude, с его входными и выходными данными
54
- - **Активность политик** — для каждого вызова инструмента показывает, какие политики сработали и какое решение они вернули
55
-
56
- Панель статистики в верхней части показывает длительность сеанса, общее количество вызовов инструментов и сводку решений хуков (количество разрешений / отказов / инструкций).
57
-
58
- Вы можете экспортировать сеанс в файл ZIP или JSONL с помощью кнопки загрузки.
59
-
60
- ### Политики
61
-
62
- Страница с двумя вкладками для управления политиками и проверки активности.
63
-
64
- <Tabs>
65
- <Tab title="Вкладка политик">
66
- - Включайте или отключайте отдельные политики одним нажатием (записывает в `~/.failproofai/policies-config.json`)
67
- - Разверните политику, чтобы настроить её параметры (для политик, поддерживающих `policyParams`)
68
- - Устанавливайте или удаляйте хуки для определенной области
69
- - Установите пользовательский путь файла политик
70
- </Tab>
71
- <Tab title="Вкладка активности">
72
- - Полная история со страничной навигацией всех срабатываний хуков на всех сеансах
73
- - Поиск по имени политики, ID сеанса, имени инструмента или решению
74
- - Каждая строка показывает: временную метку, имя политики, решение, имя инструмента, ID сеанса и причину отказа/инструкций
75
- </Tab>
76
- </Tabs>
77
-
78
- ---
79
-
80
- ## Автоматическое обновление
81
-
82
- Панель управления имеет переключатель автоматического обновления в верхней навигации. При включении текущая страница периодически обновляется, отображая новые сеансы и активность политик по мере их появления. Это важно при мониторинге долгих сеансов автономных агентов.
83
-
84
- ---
85
-
86
- ## Отключение страниц
87
-
88
- Если вам нужны только определенные части панели управления, установите `FAILPROOFAI_DISABLE_PAGES` в список имен страниц, разделенный запятыми:
89
-
90
- ```bash
91
- FAILPROOFAI_DISABLE_PAGES=policies failproofai
92
- ```
93
-
94
- Допустимые значения: `policies`, `projects`.
95
-
96
- ---
97
-
98
- ## Тема оформления
99
-
100
- Панель управления поддерживает светлый и темный режимы. Переключайте их с помощью кнопки в навигационной панели. Предпочтение сохраняется в локальном хранилище вашего браузера.
101
-
102
- ---
103
-
104
- ## Настройка пути к проектам
105
-
106
- По умолчанию панель управления читает из стандартного каталога проектов Claude Code. Переопределите его для пользовательских настроек:
107
-
108
- ```bash
109
- CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai
110
- ```
111
-
112
- ---
113
-
114
- ## Доступ с хоста, отличного от localhost
115
-
116
- При запуске панели управления в **режиме разработки** (`npm run dev`) и доступе к ней с хоста, отличного от `localhost` — например, с пользовательского домена, удаленного IP или туннелированного URL-адреса — вы можете увидеть предупреждение:
117
-
118
- ```text
119
- ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
120
- ```
121
-
122
- Next.js блокирует кроссисточниковый доступ к своему WebSocket HMR (горячей перезагрузки модулей), которая является функцией только для разработки. Чтобы разрешить ваш хост, используйте флаг `--allowed-origins`:
123
-
124
- ```bash
125
- npm run dev -- --allowed-origins dashboard.example.com
126
- ```
127
-
128
- Для нескольких хостов или IP-адресов передайте список, разделенный запятыми:
129
-
130
- ```bash
131
- npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
132
- ```
133
-
134
- Вы также можете установить переменную окружения `FAILPROOFAI_ALLOWED_DEV_ORIGINS`:
135
-
136
- ```bash
137
- FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
138
- ```
139
-
140
- <Note>
141
- Это относится только к режиму разработки. При запуске `failproofai` (производственный режим) нет WebSocket HMR и нет проблем с кроссисточниковыми ресурсами разработки.
142
- </Note>