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.
Files changed (511) 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]__0i5kvry._.js → [root-of-the-server]__0om-5pe._.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]__05akje6._.js → [root-of-the-server]__111.vxi._.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/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js +1 -1
  65. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  66. package/.next/standalone/.next/server/pages/404.html +2 -2
  67. package/.next/standalone/.next/server/pages/500.html +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  70. package/.next/standalone/.next/static/chunks/{05j1px0r8yzh6.js → 02dqjyv6_9mhq.js} +2 -2
  71. package/.next/standalone/.next/static/chunks/{14cl9poem30dq.js → 070orfsl6.xal.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/0mir9jdxn35~s.css +1 -0
  73. package/.next/standalone/.next/static/chunks/{00j0rr7rh8ef8.js → 0o547jv-k_k35.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{0ijk_kek9_wyx.js → 0pk2h2.mjxy.m.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{0xpl.oscrakvx.js → 0rcwkbh24w38b.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{1052sguyd-.ka.js → 140xx_tfr~lm_.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0npb~873.wvg3.js → 169_e4dq~1~b6.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0badv41uxa56..js → 17ne4p.1sw1jy.js} +1 -1
  79. package/.next/standalone/next.config.ts +6 -0
  80. package/.next/standalone/package.json +2 -2
  81. package/.next/standalone/server.js +1 -1
  82. package/bin/failproofai.mjs +91 -4
  83. package/dist/cli.mjs +1155 -54
  84. package/package.json +2 -2
  85. package/scripts/prune-standalone.mjs +128 -0
  86. package/src/auth/login.ts +104 -0
  87. package/src/auth/logout.ts +50 -0
  88. package/src/auth/token-store.ts +64 -0
  89. package/src/hooks/builtin-policies.ts +22 -20
  90. package/src/hooks/handler.ts +35 -15
  91. package/src/relay/daemon.ts +362 -0
  92. package/src/relay/pid.ts +76 -0
  93. package/src/relay/queue.ts +225 -0
  94. package/.next/standalone/.claude/settings.json +0 -316
  95. package/.next/standalone/.failproofai/policies/review-policies.mjs +0 -113
  96. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +0 -63
  97. package/.next/standalone/.failproofai/policies-config.json +0 -39
  98. package/.next/standalone/.next/static/chunks/0gu_a.a80ritd.css +0 -1
  99. package/.next/standalone/AGENTS.md +0 -80
  100. package/.next/standalone/CHANGELOG.md +0 -151
  101. package/.next/standalone/CLAUDE.md +0 -165
  102. package/.next/standalone/CONTRIBUTING.md +0 -76
  103. package/.next/standalone/Dockerfile.docs +0 -12
  104. package/.next/standalone/LICENSE +0 -42
  105. package/.next/standalone/README.md +0 -301
  106. package/.next/standalone/bin/failproofai.mjs +0 -352
  107. package/.next/standalone/bun.lock +0 -1119
  108. package/.next/standalone/components.json +0 -23
  109. package/.next/standalone/dist/cli.mjs +0 -3595
  110. package/.next/standalone/dist/index.js +0 -80
  111. package/.next/standalone/docs/ar/architecture.mdx +0 -334
  112. package/.next/standalone/docs/ar/built-in-policies.mdx +0 -574
  113. package/.next/standalone/docs/ar/cli/dashboard.mdx +0 -28
  114. package/.next/standalone/docs/ar/cli/environment-variables.mdx +0 -34
  115. package/.next/standalone/docs/ar/cli/hook.mdx +0 -31
  116. package/.next/standalone/docs/ar/cli/install-policies.mdx +0 -48
  117. package/.next/standalone/docs/ar/cli/list-policies.mdx +0 -31
  118. package/.next/standalone/docs/ar/cli/remove-policies.mdx +0 -43
  119. package/.next/standalone/docs/ar/cli/version.mdx +0 -13
  120. package/.next/standalone/docs/ar/configuration.mdx +0 -223
  121. package/.next/standalone/docs/ar/custom-policies.mdx +0 -354
  122. package/.next/standalone/docs/ar/dashboard.mdx +0 -142
  123. package/.next/standalone/docs/ar/examples.mdx +0 -307
  124. package/.next/standalone/docs/ar/for-agents.mdx +0 -39
  125. package/.next/standalone/docs/ar/getting-started.mdx +0 -187
  126. package/.next/standalone/docs/ar/introduction.mdx +0 -58
  127. package/.next/standalone/docs/ar/package-aliases.mdx +0 -82
  128. package/.next/standalone/docs/ar/testing.mdx +0 -261
  129. package/.next/standalone/docs/architecture.mdx +0 -332
  130. package/.next/standalone/docs/built-in-policies.mdx +0 -574
  131. package/.next/standalone/docs/cli/dashboard.mdx +0 -28
  132. package/.next/standalone/docs/cli/environment-variables.mdx +0 -34
  133. package/.next/standalone/docs/cli/hook.mdx +0 -30
  134. package/.next/standalone/docs/cli/install-policies.mdx +0 -47
  135. package/.next/standalone/docs/cli/list-policies.mdx +0 -31
  136. package/.next/standalone/docs/cli/remove-policies.mdx +0 -43
  137. package/.next/standalone/docs/cli/version.mdx +0 -12
  138. package/.next/standalone/docs/configuration.mdx +0 -222
  139. package/.next/standalone/docs/custom-policies.mdx +0 -353
  140. package/.next/standalone/docs/dashboard.mdx +0 -142
  141. package/.next/standalone/docs/de/architecture.mdx +0 -332
  142. package/.next/standalone/docs/de/built-in-policies.mdx +0 -574
  143. package/.next/standalone/docs/de/cli/dashboard.mdx +0 -28
  144. package/.next/standalone/docs/de/cli/environment-variables.mdx +0 -34
  145. package/.next/standalone/docs/de/cli/hook.mdx +0 -30
  146. package/.next/standalone/docs/de/cli/install-policies.mdx +0 -47
  147. package/.next/standalone/docs/de/cli/list-policies.mdx +0 -31
  148. package/.next/standalone/docs/de/cli/remove-policies.mdx +0 -43
  149. package/.next/standalone/docs/de/cli/version.mdx +0 -12
  150. package/.next/standalone/docs/de/configuration.mdx +0 -222
  151. package/.next/standalone/docs/de/custom-policies.mdx +0 -353
  152. package/.next/standalone/docs/de/dashboard.mdx +0 -142
  153. package/.next/standalone/docs/de/examples.mdx +0 -307
  154. package/.next/standalone/docs/de/for-agents.mdx +0 -38
  155. package/.next/standalone/docs/de/getting-started.mdx +0 -186
  156. package/.next/standalone/docs/de/introduction.mdx +0 -57
  157. package/.next/standalone/docs/de/package-aliases.mdx +0 -82
  158. package/.next/standalone/docs/de/testing.mdx +0 -260
  159. package/.next/standalone/docs/docs.json +0 -1002
  160. package/.next/standalone/docs/es/architecture.mdx +0 -332
  161. package/.next/standalone/docs/es/built-in-policies.mdx +0 -574
  162. package/.next/standalone/docs/es/cli/dashboard.mdx +0 -28
  163. package/.next/standalone/docs/es/cli/environment-variables.mdx +0 -34
  164. package/.next/standalone/docs/es/cli/hook.mdx +0 -30
  165. package/.next/standalone/docs/es/cli/install-policies.mdx +0 -47
  166. package/.next/standalone/docs/es/cli/list-policies.mdx +0 -31
  167. package/.next/standalone/docs/es/cli/remove-policies.mdx +0 -43
  168. package/.next/standalone/docs/es/cli/version.mdx +0 -12
  169. package/.next/standalone/docs/es/configuration.mdx +0 -222
  170. package/.next/standalone/docs/es/custom-policies.mdx +0 -353
  171. package/.next/standalone/docs/es/dashboard.mdx +0 -142
  172. package/.next/standalone/docs/es/examples.mdx +0 -307
  173. package/.next/standalone/docs/es/for-agents.mdx +0 -38
  174. package/.next/standalone/docs/es/getting-started.mdx +0 -186
  175. package/.next/standalone/docs/es/introduction.mdx +0 -57
  176. package/.next/standalone/docs/es/package-aliases.mdx +0 -82
  177. package/.next/standalone/docs/es/testing.mdx +0 -260
  178. package/.next/standalone/docs/examples.mdx +0 -307
  179. package/.next/standalone/docs/favicon.ico +0 -0
  180. package/.next/standalone/docs/for-agents.mdx +0 -38
  181. package/.next/standalone/docs/fr/architecture.mdx +0 -332
  182. package/.next/standalone/docs/fr/built-in-policies.mdx +0 -574
  183. package/.next/standalone/docs/fr/cli/dashboard.mdx +0 -28
  184. package/.next/standalone/docs/fr/cli/environment-variables.mdx +0 -34
  185. package/.next/standalone/docs/fr/cli/hook.mdx +0 -30
  186. package/.next/standalone/docs/fr/cli/install-policies.mdx +0 -47
  187. package/.next/standalone/docs/fr/cli/list-policies.mdx +0 -31
  188. package/.next/standalone/docs/fr/cli/remove-policies.mdx +0 -43
  189. package/.next/standalone/docs/fr/cli/version.mdx +0 -12
  190. package/.next/standalone/docs/fr/configuration.mdx +0 -222
  191. package/.next/standalone/docs/fr/custom-policies.mdx +0 -353
  192. package/.next/standalone/docs/fr/dashboard.mdx +0 -142
  193. package/.next/standalone/docs/fr/examples.mdx +0 -307
  194. package/.next/standalone/docs/fr/for-agents.mdx +0 -38
  195. package/.next/standalone/docs/fr/getting-started.mdx +0 -186
  196. package/.next/standalone/docs/fr/introduction.mdx +0 -57
  197. package/.next/standalone/docs/fr/package-aliases.mdx +0 -82
  198. package/.next/standalone/docs/fr/testing.mdx +0 -260
  199. package/.next/standalone/docs/getting-started.mdx +0 -186
  200. package/.next/standalone/docs/he/architecture.mdx +0 -333
  201. package/.next/standalone/docs/he/built-in-policies.mdx +0 -574
  202. package/.next/standalone/docs/he/cli/dashboard.mdx +0 -28
  203. package/.next/standalone/docs/he/cli/environment-variables.mdx +0 -34
  204. package/.next/standalone/docs/he/cli/hook.mdx +0 -30
  205. package/.next/standalone/docs/he/cli/install-policies.mdx +0 -47
  206. package/.next/standalone/docs/he/cli/list-policies.mdx +0 -32
  207. package/.next/standalone/docs/he/cli/remove-policies.mdx +0 -43
  208. package/.next/standalone/docs/he/cli/version.mdx +0 -12
  209. package/.next/standalone/docs/he/configuration.mdx +0 -223
  210. package/.next/standalone/docs/he/custom-policies.mdx +0 -353
  211. package/.next/standalone/docs/he/dashboard.mdx +0 -142
  212. package/.next/standalone/docs/he/examples.mdx +0 -307
  213. package/.next/standalone/docs/he/for-agents.mdx +0 -38
  214. package/.next/standalone/docs/he/getting-started.mdx +0 -186
  215. package/.next/standalone/docs/he/introduction.mdx +0 -57
  216. package/.next/standalone/docs/he/package-aliases.mdx +0 -82
  217. package/.next/standalone/docs/he/testing.mdx +0 -260
  218. package/.next/standalone/docs/hi/architecture.mdx +0 -334
  219. package/.next/standalone/docs/hi/built-in-policies.mdx +0 -576
  220. package/.next/standalone/docs/hi/cli/dashboard.mdx +0 -28
  221. package/.next/standalone/docs/hi/cli/environment-variables.mdx +0 -34
  222. package/.next/standalone/docs/hi/cli/hook.mdx +0 -30
  223. package/.next/standalone/docs/hi/cli/install-policies.mdx +0 -47
  224. package/.next/standalone/docs/hi/cli/list-policies.mdx +0 -31
  225. package/.next/standalone/docs/hi/cli/remove-policies.mdx +0 -43
  226. package/.next/standalone/docs/hi/cli/version.mdx +0 -12
  227. package/.next/standalone/docs/hi/configuration.mdx +0 -222
  228. package/.next/standalone/docs/hi/custom-policies.mdx +0 -354
  229. package/.next/standalone/docs/hi/dashboard.mdx +0 -142
  230. package/.next/standalone/docs/hi/examples.mdx +0 -309
  231. package/.next/standalone/docs/hi/for-agents.mdx +0 -38
  232. package/.next/standalone/docs/hi/getting-started.mdx +0 -187
  233. package/.next/standalone/docs/hi/introduction.mdx +0 -57
  234. package/.next/standalone/docs/hi/package-aliases.mdx +0 -82
  235. package/.next/standalone/docs/hi/testing.mdx +0 -260
  236. package/.next/standalone/docs/i18n/README.ar.md +0 -312
  237. package/.next/standalone/docs/i18n/README.de.md +0 -307
  238. package/.next/standalone/docs/i18n/README.es.md +0 -307
  239. package/.next/standalone/docs/i18n/README.fr.md +0 -307
  240. package/.next/standalone/docs/i18n/README.he.md +0 -312
  241. package/.next/standalone/docs/i18n/README.hi.md +0 -307
  242. package/.next/standalone/docs/i18n/README.it.md +0 -307
  243. package/.next/standalone/docs/i18n/README.ja.md +0 -307
  244. package/.next/standalone/docs/i18n/README.ko.md +0 -307
  245. package/.next/standalone/docs/i18n/README.pt-br.md +0 -307
  246. package/.next/standalone/docs/i18n/README.ru.md +0 -308
  247. package/.next/standalone/docs/i18n/README.tr.md +0 -307
  248. package/.next/standalone/docs/i18n/README.vi.md +0 -307
  249. package/.next/standalone/docs/i18n/README.zh.md +0 -307
  250. package/.next/standalone/docs/introduction.mdx +0 -57
  251. package/.next/standalone/docs/it/architecture.mdx +0 -334
  252. package/.next/standalone/docs/it/built-in-policies.mdx +0 -574
  253. package/.next/standalone/docs/it/cli/dashboard.mdx +0 -28
  254. package/.next/standalone/docs/it/cli/environment-variables.mdx +0 -34
  255. package/.next/standalone/docs/it/cli/hook.mdx +0 -30
  256. package/.next/standalone/docs/it/cli/install-policies.mdx +0 -47
  257. package/.next/standalone/docs/it/cli/list-policies.mdx +0 -31
  258. package/.next/standalone/docs/it/cli/remove-policies.mdx +0 -43
  259. package/.next/standalone/docs/it/cli/version.mdx +0 -12
  260. package/.next/standalone/docs/it/configuration.mdx +0 -222
  261. package/.next/standalone/docs/it/custom-policies.mdx +0 -353
  262. package/.next/standalone/docs/it/dashboard.mdx +0 -142
  263. package/.next/standalone/docs/it/examples.mdx +0 -307
  264. package/.next/standalone/docs/it/for-agents.mdx +0 -38
  265. package/.next/standalone/docs/it/getting-started.mdx +0 -186
  266. package/.next/standalone/docs/it/introduction.mdx +0 -57
  267. package/.next/standalone/docs/it/package-aliases.mdx +0 -82
  268. package/.next/standalone/docs/it/testing.mdx +0 -260
  269. package/.next/standalone/docs/ja/architecture.mdx +0 -332
  270. package/.next/standalone/docs/ja/built-in-policies.mdx +0 -572
  271. package/.next/standalone/docs/ja/cli/dashboard.mdx +0 -28
  272. package/.next/standalone/docs/ja/cli/environment-variables.mdx +0 -34
  273. package/.next/standalone/docs/ja/cli/hook.mdx +0 -30
  274. package/.next/standalone/docs/ja/cli/install-policies.mdx +0 -47
  275. package/.next/standalone/docs/ja/cli/list-policies.mdx +0 -31
  276. package/.next/standalone/docs/ja/cli/remove-policies.mdx +0 -43
  277. package/.next/standalone/docs/ja/cli/version.mdx +0 -12
  278. package/.next/standalone/docs/ja/configuration.mdx +0 -222
  279. package/.next/standalone/docs/ja/custom-policies.mdx +0 -353
  280. package/.next/standalone/docs/ja/dashboard.mdx +0 -142
  281. package/.next/standalone/docs/ja/examples.mdx +0 -307
  282. package/.next/standalone/docs/ja/for-agents.mdx +0 -38
  283. package/.next/standalone/docs/ja/getting-started.mdx +0 -186
  284. package/.next/standalone/docs/ja/introduction.mdx +0 -57
  285. package/.next/standalone/docs/ja/package-aliases.mdx +0 -82
  286. package/.next/standalone/docs/ja/testing.mdx +0 -260
  287. package/.next/standalone/docs/ko/architecture.mdx +0 -332
  288. package/.next/standalone/docs/ko/built-in-policies.mdx +0 -572
  289. package/.next/standalone/docs/ko/cli/dashboard.mdx +0 -28
  290. package/.next/standalone/docs/ko/cli/environment-variables.mdx +0 -34
  291. package/.next/standalone/docs/ko/cli/hook.mdx +0 -30
  292. package/.next/standalone/docs/ko/cli/install-policies.mdx +0 -47
  293. package/.next/standalone/docs/ko/cli/list-policies.mdx +0 -31
  294. package/.next/standalone/docs/ko/cli/remove-policies.mdx +0 -43
  295. package/.next/standalone/docs/ko/cli/version.mdx +0 -12
  296. package/.next/standalone/docs/ko/configuration.mdx +0 -222
  297. package/.next/standalone/docs/ko/custom-policies.mdx +0 -353
  298. package/.next/standalone/docs/ko/dashboard.mdx +0 -142
  299. package/.next/standalone/docs/ko/examples.mdx +0 -307
  300. package/.next/standalone/docs/ko/for-agents.mdx +0 -38
  301. package/.next/standalone/docs/ko/getting-started.mdx +0 -186
  302. package/.next/standalone/docs/ko/introduction.mdx +0 -57
  303. package/.next/standalone/docs/ko/package-aliases.mdx +0 -82
  304. package/.next/standalone/docs/ko/testing.mdx +0 -260
  305. package/.next/standalone/docs/logo/dark.svg +0 -21
  306. package/.next/standalone/docs/logo/exosphere-dark.png +0 -0
  307. package/.next/standalone/docs/logo/exosphere-light.png +0 -0
  308. package/.next/standalone/docs/logo/light.svg +0 -21
  309. package/.next/standalone/docs/package-aliases.mdx +0 -82
  310. package/.next/standalone/docs/pt-br/architecture.mdx +0 -332
  311. package/.next/standalone/docs/pt-br/built-in-policies.mdx +0 -574
  312. package/.next/standalone/docs/pt-br/cli/dashboard.mdx +0 -28
  313. package/.next/standalone/docs/pt-br/cli/environment-variables.mdx +0 -34
  314. package/.next/standalone/docs/pt-br/cli/hook.mdx +0 -30
  315. package/.next/standalone/docs/pt-br/cli/install-policies.mdx +0 -47
  316. package/.next/standalone/docs/pt-br/cli/list-policies.mdx +0 -31
  317. package/.next/standalone/docs/pt-br/cli/remove-policies.mdx +0 -43
  318. package/.next/standalone/docs/pt-br/cli/version.mdx +0 -12
  319. package/.next/standalone/docs/pt-br/configuration.mdx +0 -222
  320. package/.next/standalone/docs/pt-br/custom-policies.mdx +0 -353
  321. package/.next/standalone/docs/pt-br/dashboard.mdx +0 -142
  322. package/.next/standalone/docs/pt-br/examples.mdx +0 -307
  323. package/.next/standalone/docs/pt-br/for-agents.mdx +0 -38
  324. package/.next/standalone/docs/pt-br/getting-started.mdx +0 -186
  325. package/.next/standalone/docs/pt-br/introduction.mdx +0 -57
  326. package/.next/standalone/docs/pt-br/package-aliases.mdx +0 -82
  327. package/.next/standalone/docs/pt-br/testing.mdx +0 -260
  328. package/.next/standalone/docs/ru/architecture.mdx +0 -333
  329. package/.next/standalone/docs/ru/built-in-policies.mdx +0 -574
  330. package/.next/standalone/docs/ru/cli/dashboard.mdx +0 -28
  331. package/.next/standalone/docs/ru/cli/environment-variables.mdx +0 -34
  332. package/.next/standalone/docs/ru/cli/hook.mdx +0 -30
  333. package/.next/standalone/docs/ru/cli/install-policies.mdx +0 -48
  334. package/.next/standalone/docs/ru/cli/list-policies.mdx +0 -32
  335. package/.next/standalone/docs/ru/cli/remove-policies.mdx +0 -43
  336. package/.next/standalone/docs/ru/cli/version.mdx +0 -12
  337. package/.next/standalone/docs/ru/configuration.mdx +0 -222
  338. package/.next/standalone/docs/ru/custom-policies.mdx +0 -354
  339. package/.next/standalone/docs/ru/dashboard.mdx +0 -142
  340. package/.next/standalone/docs/ru/examples.mdx +0 -309
  341. package/.next/standalone/docs/ru/for-agents.mdx +0 -38
  342. package/.next/standalone/docs/ru/getting-started.mdx +0 -186
  343. package/.next/standalone/docs/ru/introduction.mdx +0 -57
  344. package/.next/standalone/docs/ru/package-aliases.mdx +0 -82
  345. package/.next/standalone/docs/ru/testing.mdx +0 -260
  346. package/.next/standalone/docs/testing.mdx +0 -260
  347. package/.next/standalone/docs/tr/architecture.mdx +0 -333
  348. package/.next/standalone/docs/tr/built-in-policies.mdx +0 -574
  349. package/.next/standalone/docs/tr/cli/dashboard.mdx +0 -28
  350. package/.next/standalone/docs/tr/cli/environment-variables.mdx +0 -34
  351. package/.next/standalone/docs/tr/cli/hook.mdx +0 -30
  352. package/.next/standalone/docs/tr/cli/install-policies.mdx +0 -47
  353. package/.next/standalone/docs/tr/cli/list-policies.mdx +0 -31
  354. package/.next/standalone/docs/tr/cli/remove-policies.mdx +0 -44
  355. package/.next/standalone/docs/tr/cli/version.mdx +0 -12
  356. package/.next/standalone/docs/tr/configuration.mdx +0 -222
  357. package/.next/standalone/docs/tr/custom-policies.mdx +0 -353
  358. package/.next/standalone/docs/tr/dashboard.mdx +0 -142
  359. package/.next/standalone/docs/tr/examples.mdx +0 -308
  360. package/.next/standalone/docs/tr/for-agents.mdx +0 -38
  361. package/.next/standalone/docs/tr/getting-started.mdx +0 -186
  362. package/.next/standalone/docs/tr/introduction.mdx +0 -57
  363. package/.next/standalone/docs/tr/package-aliases.mdx +0 -82
  364. package/.next/standalone/docs/tr/testing.mdx +0 -260
  365. package/.next/standalone/docs/vi/architecture.mdx +0 -334
  366. package/.next/standalone/docs/vi/built-in-policies.mdx +0 -575
  367. package/.next/standalone/docs/vi/cli/dashboard.mdx +0 -28
  368. package/.next/standalone/docs/vi/cli/environment-variables.mdx +0 -34
  369. package/.next/standalone/docs/vi/cli/hook.mdx +0 -30
  370. package/.next/standalone/docs/vi/cli/install-policies.mdx +0 -47
  371. package/.next/standalone/docs/vi/cli/list-policies.mdx +0 -31
  372. package/.next/standalone/docs/vi/cli/remove-policies.mdx +0 -43
  373. package/.next/standalone/docs/vi/cli/version.mdx +0 -13
  374. package/.next/standalone/docs/vi/configuration.mdx +0 -222
  375. package/.next/standalone/docs/vi/custom-policies.mdx +0 -353
  376. package/.next/standalone/docs/vi/dashboard.mdx +0 -142
  377. package/.next/standalone/docs/vi/examples.mdx +0 -308
  378. package/.next/standalone/docs/vi/for-agents.mdx +0 -38
  379. package/.next/standalone/docs/vi/getting-started.mdx +0 -186
  380. package/.next/standalone/docs/vi/introduction.mdx +0 -57
  381. package/.next/standalone/docs/vi/package-aliases.mdx +0 -82
  382. package/.next/standalone/docs/vi/testing.mdx +0 -260
  383. package/.next/standalone/docs/zh/architecture.mdx +0 -332
  384. package/.next/standalone/docs/zh/built-in-policies.mdx +0 -572
  385. package/.next/standalone/docs/zh/cli/dashboard.mdx +0 -28
  386. package/.next/standalone/docs/zh/cli/environment-variables.mdx +0 -34
  387. package/.next/standalone/docs/zh/cli/hook.mdx +0 -30
  388. package/.next/standalone/docs/zh/cli/install-policies.mdx +0 -47
  389. package/.next/standalone/docs/zh/cli/list-policies.mdx +0 -31
  390. package/.next/standalone/docs/zh/cli/remove-policies.mdx +0 -43
  391. package/.next/standalone/docs/zh/cli/version.mdx +0 -12
  392. package/.next/standalone/docs/zh/configuration.mdx +0 -222
  393. package/.next/standalone/docs/zh/custom-policies.mdx +0 -353
  394. package/.next/standalone/docs/zh/dashboard.mdx +0 -142
  395. package/.next/standalone/docs/zh/examples.mdx +0 -307
  396. package/.next/standalone/docs/zh/for-agents.mdx +0 -38
  397. package/.next/standalone/docs/zh/getting-started.mdx +0 -186
  398. package/.next/standalone/docs/zh/introduction.mdx +0 -57
  399. package/.next/standalone/docs/zh/package-aliases.mdx +0 -82
  400. package/.next/standalone/docs/zh/testing.mdx +0 -260
  401. package/.next/standalone/eslint.config.mjs +0 -15
  402. package/.next/standalone/examples/convention-policies/security-policies.mjs +0 -40
  403. package/.next/standalone/examples/convention-policies/workflow-policies.mjs +0 -41
  404. package/.next/standalone/examples/policies-advanced/index.js +0 -103
  405. package/.next/standalone/examples/policies-advanced/utils.js +0 -35
  406. package/.next/standalone/examples/policies-basic.js +0 -77
  407. package/.next/standalone/examples/policies-notification.js +0 -104
  408. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  409. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  410. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  411. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
  412. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  413. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
  414. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  415. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
  416. package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
  417. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  418. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  419. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  420. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  421. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  422. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  423. package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  424. package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +0 -46
  425. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  426. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  427. package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +0 -313
  428. package/.next/standalone/node_modules/detect-libc/lib/elf.js +0 -39
  429. package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +0 -51
  430. package/.next/standalone/node_modules/detect-libc/lib/process.js +0 -24
  431. package/.next/standalone/node_modules/detect-libc/package.json +0 -44
  432. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  433. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  434. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  435. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  436. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  437. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  438. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  439. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  440. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  441. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  442. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  443. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  444. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  445. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  446. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  447. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  448. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  449. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  450. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  451. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  452. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  453. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  454. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  455. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  456. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  457. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  458. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  459. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  460. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  461. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  462. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  463. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  464. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  465. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  466. package/.next/standalone/node_modules/sharp/package.json +0 -202
  467. package/.next/standalone/scripts/alias-proxy.js +0 -18
  468. package/.next/standalone/scripts/dev.ts +0 -3
  469. package/.next/standalone/scripts/install-telemetry.mjs +0 -108
  470. package/.next/standalone/scripts/launch.ts +0 -83
  471. package/.next/standalone/scripts/parse-script-args.ts +0 -87
  472. package/.next/standalone/scripts/postinstall.mjs +0 -121
  473. package/.next/standalone/scripts/preuninstall.mjs +0 -131
  474. package/.next/standalone/scripts/publish-aliases.mjs +0 -87
  475. package/.next/standalone/scripts/start.ts +0 -3
  476. package/.next/standalone/scripts/sync-hook-events-prompt.md +0 -60
  477. package/.next/standalone/scripts/translate-docs/cache.ts +0 -62
  478. package/.next/standalone/scripts/translate-docs/cli.ts +0 -357
  479. package/.next/standalone/scripts/translate-docs/config.ts +0 -248
  480. package/.next/standalone/scripts/translate-docs/mdx-translator.ts +0 -153
  481. package/.next/standalone/scripts/translate-docs/mintlify-nav.ts +0 -107
  482. package/.next/standalone/scripts/translate-docs/readme-translator.ts +0 -154
  483. package/.next/standalone/scripts/translate-docs/translator.ts +0 -68
  484. package/.next/standalone/scripts/translate-docs/types.ts +0 -43
  485. package/.next/standalone/src/cli-error.ts +0 -18
  486. package/.next/standalone/src/hooks/builtin-policies.ts +0 -1613
  487. package/.next/standalone/src/hooks/custom-hooks-loader.ts +0 -205
  488. package/.next/standalone/src/hooks/custom-hooks-registry.ts +0 -30
  489. package/.next/standalone/src/hooks/handler.ts +0 -202
  490. package/.next/standalone/src/hooks/hook-activity-store.ts +0 -349
  491. package/.next/standalone/src/hooks/hook-logger.ts +0 -133
  492. package/.next/standalone/src/hooks/hook-telemetry.ts +0 -43
  493. package/.next/standalone/src/hooks/hooks-config.ts +0 -166
  494. package/.next/standalone/src/hooks/install-prompt.ts +0 -357
  495. package/.next/standalone/src/hooks/llm-client.ts +0 -90
  496. package/.next/standalone/src/hooks/loader-utils.ts +0 -178
  497. package/.next/standalone/src/hooks/manager.ts +0 -692
  498. package/.next/standalone/src/hooks/policy-evaluator.ts +0 -224
  499. package/.next/standalone/src/hooks/policy-helpers.ts +0 -16
  500. package/.next/standalone/src/hooks/policy-registry.ts +0 -90
  501. package/.next/standalone/src/hooks/policy-types.ts +0 -77
  502. package/.next/standalone/src/hooks/types.ts +0 -63
  503. package/.next/standalone/src/index.ts +0 -19
  504. package/.next/standalone/src/posthog-key.ts +0 -5
  505. package/.next/standalone/tailwind.config.ts +0 -11
  506. package/.next/standalone/tsconfig.json +0 -42
  507. package/.next/standalone/vitest.config.e2e.mts +0 -24
  508. package/.next/standalone/vitest.config.mts +0 -23
  509. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_buildManifest.js +0 -0
  510. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_clientMiddlewareManifest.js +0 -0
  511. /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → wOkJXoch1UmRAmyIuKZWc}/_ssgManifest.js +0 -0
@@ -1,260 +0,0 @@
1
- ---
2
- title: 테스트
3
- description: "유닛 테스트, E2E 테스트, 테스트 헬퍼"
4
- icon: flask-vial
5
- ---
6
-
7
- failproofai에는 두 가지 테스트 스위트가 있습니다: **유닛 테스트** (빠르고 모킹 사용)와 **엔드투엔드 테스트** (실제 서브프로세스 실행).
8
-
9
- ---
10
-
11
- ## 테스트 실행
12
-
13
- ```bash
14
- # 유닛 테스트를 한 번 실행
15
- bun run test:run
16
-
17
- # 유닛 테스트를 워치 모드로 실행
18
- bun run test
19
-
20
- # E2E 테스트 실행 (설정 필요 - 아래 참고)
21
- bun run test:e2e
22
-
23
- # 빌드 없이 타입 검사
24
- bunx tsc --noEmit
25
-
26
- # 린트
27
- bun run lint
28
- ```
29
-
30
- ---
31
-
32
- ## 유닛 테스트
33
-
34
- 유닛 테스트는 `__tests__/` 디렉터리에 위치하며 `happy-dom`과 함께 [Vitest](https://vitest.dev)를 사용합니다.
35
-
36
- ```text
37
- __tests__/
38
- hooks/
39
- builtin-policies.test.ts # 각 내장 정책의 로직
40
- hooks-config.test.ts # 설정 로딩 및 스코프 병합
41
- policy-evaluator.test.ts # 파라미터 주입과 평가 순서
42
- custom-hooks-registry.test.ts # globalThis 레지스트리 add/get/clear
43
- custom-hooks-loader.test.ts # ESM 로더, 전이적 임포트, 오류 처리
44
- manager.test.ts # install/remove/list 작업
45
- components/
46
- sessions-list.test.tsx # 세션 목록 컴포넌트
47
- project-list.test.tsx # 프로젝트 목록 컴포넌트
48
- ...
49
- lib/
50
- logger.test.ts
51
- paths.test.ts
52
- date-filters.test.ts
53
- telemetry.test.ts
54
- ...
55
- actions/
56
- get-hooks-config.test.ts
57
- get-hook-activity.test.ts
58
- ...
59
- contexts/
60
- ThemeContext.test.tsx
61
- AutoRefreshContext.test.tsx
62
- ```
63
-
64
- ### 정책 유닛 테스트 작성하기
65
-
66
- ```typescript
67
- import { describe, it, expect, beforeEach } from "vitest";
68
- import { getBuiltinPolicies } from "../../src/hooks/builtin-policies";
69
- import { allow, deny } from "../../src/hooks/policy-types";
70
-
71
- describe("block-sudo", () => {
72
- const policy = getBuiltinPolicies().find((p) => p.name === "block-sudo")!;
73
-
74
- it("denies sudo commands", () => {
75
- const ctx = {
76
- eventType: "PreToolUse" as const,
77
- payload: {},
78
- toolName: "Bash",
79
- toolInput: { command: "sudo apt install nodejs" },
80
- params: { allowPatterns: [] },
81
- };
82
- expect(policy.fn(ctx)).toEqual(deny("sudo command blocked by failproofai"));
83
- });
84
-
85
- it("allows non-sudo commands", () => {
86
- const ctx = {
87
- eventType: "PreToolUse" as const,
88
- payload: {},
89
- toolName: "Bash",
90
- toolInput: { command: "ls -la" },
91
- params: { allowPatterns: [] },
92
- };
93
- expect(policy.fn(ctx)).toEqual(allow());
94
- });
95
-
96
- it("allows patterns in allowPatterns", () => {
97
- const ctx = {
98
- eventType: "PreToolUse" as const,
99
- payload: {},
100
- toolName: "Bash",
101
- toolInput: { command: "sudo systemctl status nginx" },
102
- params: { allowPatterns: ["sudo systemctl status"] },
103
- };
104
- expect(policy.fn(ctx)).toEqual(allow());
105
- });
106
- });
107
- ```
108
-
109
- ---
110
-
111
- ## 엔드투엔드 테스트
112
-
113
- E2E 테스트는 실제 `failproofai` 바이너리를 서브프로세스로 실행하고, JSON 페이로드를 stdin으로 파이핑한 뒤, stdout 출력과 종료 코드를 검증합니다. 이를 통해 Claude Code가 실제로 사용하는 전체 통합 경로를 테스트합니다.
114
-
115
- ### 설정
116
-
117
- E2E 테스트는 저장소 소스에서 바이너리를 직접 실행합니다. 최초 실행 전에, 커스텀 훅 파일이 `'failproofai'`에서 임포트할 때 사용하는 CJS 번들을 빌드하세요:
118
-
119
- ```bash
120
- bun build src/index.ts --outdir dist --target node --format cjs
121
- ```
122
-
123
- 그 다음 테스트를 실행합니다:
124
-
125
- ```bash
126
- bun run test:e2e
127
- ```
128
-
129
- 공개 훅 API(`src/hooks/custom-hooks-registry.ts`, `src/hooks/policy-helpers.ts`, `src/hooks/policy-types.ts`)를 변경할 때마다 `dist/`를 다시 빌드하세요.
130
-
131
- ### E2E 테스트 구조
132
-
133
- ```text
134
- __tests__/e2e/
135
- helpers/
136
- hook-runner.ts # 바이너리 실행, 페이로드 JSON 파이핑, 종료 코드 + stdout + stderr 캡처
137
- fixture-env.ts # 테스트별 격리된 임시 디렉터리와 설정 파일
138
- payloads.ts # 각 이벤트 타입에 대한 Claude 형식의 페이로드 팩토리
139
- hooks/
140
- builtin-policies.e2e.test.ts # 실제 서브프로세스로 각 내장 정책 테스트
141
- custom-hooks.e2e.test.ts # 커스텀 훅 로딩 및 평가
142
- config-scopes.e2e.test.ts # 프로젝트/로컬/글로벌 간 설정 병합
143
- policy-params.e2e.test.ts # 파라미터화된 정책별 파라미터 주입
144
- ```
145
-
146
- ### E2E 헬퍼 사용하기
147
-
148
- **`FixtureEnv`** - 테스트별 격리 환경:
149
-
150
- ```typescript
151
- import { createFixtureEnv } from "../helpers/fixture-env";
152
-
153
- const env = createFixtureEnv();
154
- // env.cwd - 임시 디렉터리; payload.cwd로 전달하면 .failproofai/policies-config.json을 읽음
155
- // env.home - 격리된 홈 디렉터리; 실제 ~/.failproofai가 누출되지 않음
156
-
157
- env.writeConfig({
158
- enabledPolicies: ["block-sudo"],
159
- policyParams: {
160
- "block-sudo": { allowPatterns: ["sudo systemctl status"] },
161
- },
162
- });
163
- ```
164
-
165
- `createFixtureEnv()`는 `afterEach` 정리를 자동으로 등록합니다.
166
-
167
- **`runHook`** - 바이너리 실행:
168
-
169
- ```typescript
170
- import { runHook } from "../helpers/hook-runner";
171
- import { Payloads } from "../helpers/payloads";
172
-
173
- const result = await runHook(
174
- "PreToolUse",
175
- Payloads.preToolUse.bash("sudo apt install nodejs", env.cwd),
176
- { homeDir: env.home }
177
- );
178
-
179
- expect(result.exitCode).toBe(0);
180
- expect(result.parsed?.hookSpecificOutput?.permissionDecision).toBe("deny");
181
- ```
182
-
183
- **`Payloads`** - 미리 준비된 페이로드 팩토리:
184
-
185
- ```typescript
186
- Payloads.preToolUse.bash(command, cwd)
187
- Payloads.preToolUse.write(filePath, content, cwd)
188
- Payloads.preToolUse.read(filePath, cwd)
189
- Payloads.postToolUse.bash(command, output, cwd)
190
- Payloads.postToolUse.read(filePath, content, cwd)
191
- Payloads.notification(message, cwd)
192
- Payloads.stop(cwd)
193
- ```
194
-
195
- ### E2E 테스트 작성하기
196
-
197
- ```typescript
198
- import { describe, it, expect } from "vitest";
199
- import { createFixtureEnv } from "../helpers/fixture-env";
200
- import { runHook } from "../helpers/hook-runner";
201
- import { Payloads } from "../helpers/payloads";
202
-
203
- describe("block-rm-rf (E2E)", () => {
204
- it("denies rm -rf", async () => {
205
- const env = createFixtureEnv();
206
- env.writeConfig({ enabledPolicies: ["block-rm-rf"] });
207
-
208
- const result = await runHook(
209
- "PreToolUse",
210
- Payloads.preToolUse.bash("rm -rf /", env.cwd),
211
- { homeDir: env.home }
212
- );
213
-
214
- expect(result.exitCode).toBe(0);
215
- expect(result.parsed?.hookSpecificOutput?.permissionDecision).toBe("deny");
216
- });
217
-
218
- it("allows non-recursive rm", async () => {
219
- const env = createFixtureEnv();
220
- env.writeConfig({ enabledPolicies: ["block-rm-rf"] });
221
-
222
- const result = await runHook(
223
- "PreToolUse",
224
- Payloads.preToolUse.bash("rm /tmp/file.txt", env.cwd),
225
- { homeDir: env.home }
226
- );
227
-
228
- expect(result.exitCode).toBe(0);
229
- expect(result.stdout).toBe(""); // allow → 빈 stdout
230
- });
231
- });
232
- ```
233
-
234
- ### E2E 응답 형식
235
-
236
- | 결정 | 종료 코드 | stdout |
237
- |----------|-----------|--------|
238
- | `PreToolUse` deny | `0` | `{"hookSpecificOutput":{"permissionDecision":"deny","permissionDecisionReason":"..."}}` |
239
- | `PostToolUse` deny | `0` | `{"hookSpecificOutput":{"additionalContext":"Blocked ... because: ..."}}` |
240
- | Instruct (Stop 제외) | `0` | `{"hookSpecificOutput":{"additionalContext":"Instruction from failproofai: ..."}}` |
241
- | Stop instruct | `2` | 빈 stdout; 이유는 stderr에 기록 |
242
- | Allow | `0` | 빈 문자열 |
243
-
244
- ### Vitest 설정
245
-
246
- E2E 테스트는 다음 설정으로 `vitest.config.e2e.mts`를 사용합니다:
247
-
248
- - `environment: "node"` - 브라우저 전역 객체 불필요
249
- - `pool: "forks"` - 진정한 프로세스 격리 (테스트가 서브프로세스를 생성)
250
- - `testTimeout: 20_000` - 테스트당 20초 (바이너리 시작 + 훅 평가)
251
-
252
- `forks` 풀이 중요한 이유: 스레드 기반 워커는 `globalThis`를 공유하므로, 서브프로세스를 생성하는 테스트에 영향을 줄 수 있습니다. 프로세스 기반 포크는 이를 방지합니다.
253
-
254
- ---
255
-
256
- ## CI
257
-
258
- 머지 전에 전체 CI 실행(`bun run lint && bunx tsc --noEmit && bun run test:run && bun run build`)이 통과되어야 합니다. E2E 스위트는 별도의 CI 작업으로 병렬 실행됩니다.
259
-
260
- 완전한 머지 전 체크리스트는 [Contributing](../CONTRIBUTING.md)을 참고하세요.
@@ -1,21 +0,0 @@
1
- <svg width="177" height="24" viewBox="0 0 177 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M9.06145 23.1079C5.26816 22.3769 -3.39077 20.6274 1.4173 5.06384C9.6344 6.09939 16.9728 14.0644 9.06145 23.1079Z" fill="url(#paint0_linear_17557_2145)"/>
3
- <path d="M8.91928 23.0939C5.27642 21.2223 0.78371 4.20891 17.0071 0C20.7569 7.19341 19.6212 16.5452 8.91928 23.0939Z" fill="url(#paint1_linear_17557_2145)"/>
4
- <path d="M8.91388 23.0788C8.73534 19.8817 10.1585 9.08525 23.5699 13.1107C23.1812 20.1229 18.984 26.4182 8.91388 23.0788Z" fill="url(#paint2_linear_17557_2145)"/>
5
- <path d="M32.3008 19.3922V3.89432H37.9383L39.925 9.94786C40.0359 10.3154 40.1642 10.7869 40.3098 11.3624C40.4624 11.938 40.6114 12.5516 40.7571 13.2035C40.9096 13.8553 41.0483 14.4828 41.1731 15.0861C41.3049 15.6824 41.4123 16.1921 41.4955 16.6151H40.6946C40.7709 16.1921 40.8715 15.6824 40.9963 15.0861C41.128 14.4897 41.2667 13.8657 41.4123 13.2139C41.5649 12.562 41.714 11.9484 41.8596 11.3728C42.0052 10.7904 42.1335 10.3154 42.2444 9.94786L44.1999 3.89432H49.8478V19.3922H46.1657V12.7042C46.1657 12.3575 46.1726 11.9172 46.1865 11.3832C46.2004 10.8493 46.2143 10.2703 46.2281 9.64623C46.2489 9.02215 46.2663 8.39114 46.2801 7.75319C46.3009 7.11525 46.3113 6.51891 46.3113 5.96418H46.6234C46.4847 6.56052 46.3321 7.18112 46.1657 7.826C45.9993 8.47088 45.8329 9.10189 45.6665 9.71903C45.507 10.3362 45.3509 10.9013 45.1984 11.4144C45.0528 11.9276 44.928 12.3575 44.824 12.7042L42.6085 19.3922H39.5609L37.3142 12.7042C37.2033 12.3575 37.0715 11.9276 36.919 11.4144C36.7734 10.9013 36.6139 10.3396 36.4405 9.72944C36.2741 9.11229 36.1042 8.48128 35.9309 7.8364C35.7644 7.19153 35.6084 6.56745 35.4628 5.96418H35.8269C35.8338 6.51198 35.8442 7.10485 35.8581 7.74279C35.8719 8.3738 35.8858 9.00481 35.8997 9.63582C35.9205 10.2599 35.9378 10.8389 35.9517 11.3728C35.9655 11.9068 35.9725 12.3506 35.9725 12.7042V19.3922H32.3008ZM51.6684 19.3922V8.02363H55.288V19.3922H51.6684ZM53.4678 6.78588C52.927 6.78588 52.4728 6.61599 52.1053 6.27621C51.7377 5.92951 51.554 5.50652 51.554 5.00726C51.554 4.508 51.7377 4.08848 52.1053 3.74871C52.4728 3.40893 52.927 3.23904 53.4678 3.23904C54.0087 3.23904 54.4629 3.40893 54.8304 3.74871C55.1979 4.08155 55.3817 4.50107 55.3817 5.00726C55.3817 5.50652 55.1979 5.92951 54.8304 6.27621C54.4629 6.61599 54.0087 6.78588 53.4678 6.78588ZM60.7075 13.0266V19.3922H57.0879V8.02363H60.5515L60.5931 10.9672H60.2811C60.5931 10.0241 61.0612 9.26831 61.6852 8.69971C62.3093 8.12417 63.1379 7.8364 64.1711 7.8364C64.9755 7.8364 65.6724 8.01669 66.2618 8.37727C66.8512 8.73091 67.3019 9.23364 67.614 9.88545C67.9329 10.5373 68.0924 11.307 68.0924 12.1945V19.3922H64.4832V12.9122C64.4832 12.2604 64.3202 11.7542 63.9943 11.3936C63.6753 11.0331 63.2212 10.8528 62.6318 10.8528C62.2504 10.8528 61.9141 10.936 61.6228 11.1024C61.3316 11.2688 61.1062 11.515 60.9467 11.8409C60.7873 12.1599 60.7075 12.5551 60.7075 13.0266ZM76.4555 8.02363V10.7488H69.0081V8.02363H76.4555ZM70.6828 5.16328H74.292V15.783C74.292 16.1019 74.3613 16.3342 74.5 16.4799C74.6456 16.6255 74.8987 16.6983 75.2593 16.6983C75.4049 16.6983 75.5956 16.6879 75.8314 16.6671C76.0741 16.6463 76.2509 16.6289 76.3618 16.6151L76.6323 19.309C76.3133 19.3783 75.9631 19.4269 75.5817 19.4546C75.2073 19.4824 74.8363 19.4962 74.4688 19.4962C73.1999 19.4962 72.2499 19.2223 71.6189 18.6745C70.9948 18.1267 70.6828 17.3085 70.6828 16.2198V5.16328Z" fill="#FAFAFA"/>
6
- <path d="M88.6674 19.6522C87.5232 19.6522 86.5282 19.4581 85.6822 19.0698C84.8432 18.6815 84.1879 18.1371 83.7164 17.4368C83.2448 16.7364 82.9917 15.9078 82.9571 14.9509H84.9333C84.968 15.5957 85.1483 16.1401 85.4742 16.5839C85.8001 17.0207 86.2404 17.3536 86.7951 17.5824C87.3499 17.8043 87.974 17.9152 88.6674 17.9152C89.3885 17.9152 90.0265 17.8008 90.5812 17.572C91.1429 17.3432 91.5832 17.0242 91.9022 16.6151C92.2281 16.199 92.391 15.7171 92.391 15.1693C92.391 14.6978 92.2662 14.306 92.0166 13.994C91.7669 13.675 91.4133 13.408 90.9556 13.1931C90.498 12.9781 89.9537 12.7874 89.3227 12.621L87.5024 12.1321C86.1225 11.7646 85.0824 11.255 84.382 10.6031C83.6886 9.94439 83.3419 9.09496 83.3419 8.05483C83.3419 7.17419 83.5708 6.4045 84.0284 5.74575C84.4861 5.087 85.1171 4.57734 85.9214 4.21676C86.7258 3.84925 87.6446 3.6655 88.6778 3.6655C89.7179 3.6655 90.6297 3.85272 91.4133 4.22717C92.2038 4.60161 92.8244 5.12167 93.2751 5.78736C93.7259 6.4461 93.9651 7.20886 93.9928 8.07563H92.0894C92.0131 7.22966 91.656 6.57438 91.0181 6.10979C90.387 5.63827 89.5861 5.40251 88.6154 5.40251C87.9497 5.40251 87.3603 5.51346 86.8471 5.73535C86.341 5.95724 85.9457 6.26235 85.6614 6.65066C85.3771 7.03204 85.235 7.46889 85.235 7.96122C85.235 8.44661 85.3771 8.84879 85.6614 9.16777C85.9457 9.4798 86.3167 9.73984 86.7743 9.94786C87.232 10.149 87.7243 10.3188 88.2513 10.4575L89.8843 10.884C90.4391 11.0227 90.9765 11.2064 91.4965 11.4352C92.0235 11.6571 92.495 11.9345 92.9111 12.2673C93.3341 12.5933 93.6704 12.9954 93.92 13.4739C94.1696 13.9454 94.2945 14.5036 94.2945 15.1485C94.2945 16.0153 94.0656 16.7884 93.608 17.468C93.1573 18.1475 92.5124 18.6815 91.6733 19.0698C90.8343 19.4581 89.8323 19.6522 88.6674 19.6522ZM101.097 8.02363V9.59422H95.1062V8.02363H101.097ZM96.9368 5.16328H98.7674V16.5215C98.7674 16.9999 98.8645 17.3466 99.0587 17.5616C99.2597 17.7696 99.5995 17.8736 100.078 17.8736C100.21 17.8736 100.366 17.8667 100.546 17.8528C100.733 17.832 100.903 17.8147 101.056 17.8008L101.285 19.3506C101.097 19.3922 100.886 19.4234 100.65 19.4442C100.414 19.465 100.189 19.4754 99.974 19.4754C98.9962 19.4754 98.2439 19.2362 97.7169 18.7577C97.1968 18.2723 96.9368 17.5789 96.9368 16.6775V5.16328ZM106.33 19.621C105.595 19.621 104.932 19.4893 104.343 19.2258C103.754 18.9554 103.285 18.5636 102.939 18.0504C102.592 17.5304 102.419 16.8959 102.419 16.147C102.419 15.4952 102.547 14.9647 102.804 14.5556C103.06 14.1465 103.403 13.8275 103.833 13.5987C104.263 13.3629 104.742 13.1861 105.269 13.0682C105.796 12.9504 106.333 12.8567 106.881 12.7874C107.574 12.6903 108.132 12.6175 108.555 12.569C108.978 12.5204 109.287 12.4407 109.481 12.3298C109.675 12.2119 109.772 12.0142 109.772 11.7369V11.6537C109.772 11.2029 109.679 10.8146 109.492 10.4887C109.311 10.1628 109.041 9.90972 108.68 9.72944C108.32 9.54915 107.872 9.459 107.338 9.459C106.805 9.459 106.34 9.54568 105.945 9.71903C105.556 9.89239 105.241 10.1177 104.998 10.3951C104.755 10.6655 104.593 10.9533 104.509 11.2584L102.71 10.9152C102.897 10.2218 103.22 9.64969 103.677 9.19897C104.135 8.74825 104.679 8.41194 105.31 8.19005C105.941 7.96815 106.607 7.85721 107.307 7.85721C107.8 7.85721 108.295 7.91961 108.795 8.04443C109.301 8.16925 109.765 8.38074 110.188 8.67891C110.611 8.97014 110.951 9.36886 111.208 9.87505C111.464 10.3743 111.593 11.0053 111.593 11.7681V19.3922H109.793V17.8216H109.7C109.568 18.0851 109.363 18.359 109.086 18.6433C108.809 18.9207 108.444 19.153 107.994 19.3402C107.543 19.5274 106.988 19.621 106.33 19.621ZM106.621 17.9984C107.321 17.9984 107.904 17.8667 108.368 17.6032C108.84 17.3328 109.19 16.9861 109.419 16.5631C109.654 16.1331 109.772 15.6824 109.772 15.2109V13.6923C109.703 13.7686 109.554 13.8414 109.325 13.9107C109.096 13.9732 108.829 14.0321 108.524 14.0876C108.226 14.143 107.921 14.1916 107.609 14.2332C107.304 14.2748 107.033 14.3095 106.798 14.3372C106.354 14.3927 105.938 14.4897 105.549 14.6284C105.168 14.7602 104.86 14.9543 104.624 15.2109C104.388 15.4675 104.27 15.8107 104.27 16.2406C104.27 16.6151 104.367 16.934 104.561 17.1975C104.762 17.461 105.04 17.6621 105.393 17.8008C105.747 17.9326 106.156 17.9984 106.621 17.9984ZM114.193 19.3922V8.02363H115.951V9.79184H116.045C116.253 9.20937 116.61 8.74131 117.116 8.38767C117.622 8.03403 118.219 7.85721 118.905 7.85721C119.058 7.85721 119.217 7.86414 119.384 7.87801C119.55 7.88494 119.682 7.89188 119.779 7.89881V9.73984C119.716 9.71903 119.578 9.69476 119.363 9.66703C119.155 9.63929 118.922 9.62542 118.666 9.62542C118.174 9.62542 117.726 9.7329 117.324 9.94786C116.922 10.1628 116.603 10.4714 116.367 10.8736C116.138 11.2758 116.024 11.7577 116.024 12.3194V19.3922H114.193ZM126.322 8.02363V9.59422H120.33V8.02363H126.322ZM122.161 5.16328H123.992V16.5215C123.992 16.9999 124.089 17.3466 124.283 17.5616C124.484 17.7696 124.824 17.8736 125.302 17.8736C125.434 17.8736 125.59 17.8667 125.77 17.8528C125.958 17.832 126.127 17.8147 126.28 17.8008L126.509 19.3506C126.322 19.3922 126.11 19.4234 125.874 19.4442C125.639 19.465 125.413 19.4754 125.198 19.4754C124.221 19.4754 123.468 19.2362 122.941 18.7577C122.421 18.2723 122.161 17.5789 122.161 16.6775V5.16328ZM132.604 19.6418C131.502 19.6418 130.555 19.3957 129.765 18.9034C128.974 18.4041 128.364 17.7141 127.934 16.8335C127.511 15.9459 127.3 14.9266 127.3 13.7755C127.3 12.6106 127.511 11.5843 127.934 10.6968C128.364 9.80224 128.964 9.10189 129.734 8.5957C130.51 8.0895 131.408 7.8364 132.428 7.8364C133.1 7.8364 133.738 7.95429 134.341 8.19005C134.952 8.42581 135.489 8.78292 135.954 9.26138C136.425 9.73984 136.793 10.3431 137.056 11.0712C137.327 11.7924 137.462 12.6453 137.462 13.6299V14.2956H128.433V12.7354H136.463L135.631 13.2971C135.631 12.5412 135.506 11.8756 135.257 11.3C135.007 10.7245 134.643 10.2772 134.165 9.95826C133.686 9.63236 133.107 9.4694 132.428 9.4694C131.748 9.4694 131.162 9.63236 130.67 9.95826C130.177 10.2842 129.796 10.7245 129.526 11.2792C129.262 11.827 129.13 12.4407 129.13 13.1202V14.046C129.13 14.8642 129.273 15.5715 129.557 16.1678C129.841 16.7572 130.243 17.2114 130.763 17.5304C131.283 17.8424 131.901 17.9984 132.615 17.9984C133.093 17.9984 133.523 17.9291 133.905 17.7904C134.293 17.6448 134.619 17.4333 134.882 17.1559C135.153 16.8786 135.354 16.5457 135.486 16.1574L137.275 16.4487C137.108 17.0797 136.81 17.6344 136.38 18.1129C135.95 18.5913 135.413 18.9658 134.768 19.2362C134.123 19.5066 133.402 19.6418 132.604 19.6418ZM139.459 19.3922V8.02363H141.217V9.79184H141.311C141.519 9.20937 141.876 8.74131 142.382 8.38767C142.888 8.03403 143.485 7.85721 144.171 7.85721C144.324 7.85721 144.483 7.86414 144.649 7.87801C144.816 7.88494 144.948 7.89188 145.045 7.89881V9.73984C144.982 9.71903 144.844 9.69476 144.629 9.66703C144.421 9.63929 144.188 9.62542 143.932 9.62542C143.439 9.62542 142.992 9.7329 142.59 9.94786C142.188 10.1628 141.869 10.4714 141.633 10.8736C141.404 11.2758 141.29 11.7577 141.29 12.3194V19.3922H139.459ZM153.429 14.9613V12.7146C153.783 12.2569 154.136 11.8201 154.49 11.404C154.844 10.9811 155.204 10.565 155.572 10.1559C155.939 9.73984 156.314 9.32725 156.695 8.91814L161.355 3.89432H163.893L157.277 10.9672H157.184L153.429 14.9613ZM152.108 19.3922V3.89432H154.043V9.24058L154.022 12.5586L154.043 13.5051V19.3922H152.108ZM161.615 19.3922L155.967 11.4768L157.173 9.96866L163.903 19.3922H161.615ZM165.661 19.3922V8.02363H167.492V19.3922H165.661ZM166.587 6.02658C166.24 6.02658 165.942 5.9087 165.692 5.67294C165.443 5.43025 165.318 5.13901 165.318 4.79923C165.318 4.45946 165.443 4.17169 165.692 3.93593C165.942 3.69323 166.24 3.57189 166.587 3.57189C166.934 3.57189 167.232 3.69323 167.482 3.93593C167.731 4.17169 167.856 4.45946 167.856 4.79923C167.856 5.13901 167.731 5.43025 167.482 5.67294C167.232 5.9087 166.934 6.02658 166.587 6.02658ZM174.836 8.02363V9.59422H168.844V8.02363H174.836ZM170.675 5.16328H172.506V16.5215C172.506 16.9999 172.603 17.3466 172.797 17.5616C172.998 17.7696 173.338 17.8736 173.816 17.8736C173.948 17.8736 174.104 17.8667 174.284 17.8528C174.472 17.832 174.641 17.8147 174.794 17.8008L175.023 19.3506C174.836 19.3922 174.624 19.4234 174.388 19.4442C174.153 19.465 173.927 19.4754 173.712 19.4754C172.735 19.4754 171.982 19.2362 171.455 18.7577C170.935 18.2723 170.675 17.5789 170.675 16.6775V5.16328Z" fill="#9F9FA9"/>
7
- <defs>
8
- <linearGradient id="paint0_linear_17557_2145" x1="3.77557" y1="5.91571" x2="5.23185" y2="21.5589" gradientUnits="userSpaceOnUse">
9
- <stop stop-color="#18E299"/>
10
- <stop offset="1" stop-color="#15803D"/>
11
- </linearGradient>
12
- <linearGradient id="paint1_linear_17557_2145" x1="12.1711" y1="-0.718425" x2="10.1897" y2="22.9832" gradientUnits="userSpaceOnUse">
13
- <stop stop-color="#16A34A"/>
14
- <stop offset="1" stop-color="#4ADE80"/>
15
- </linearGradient>
16
- <linearGradient id="paint2_linear_17557_2145" x1="23.1327" y1="15.353" x2="9.33841" y2="18.5196" gradientUnits="userSpaceOnUse">
17
- <stop stop-color="#4ADE80"/>
18
- <stop offset="1" stop-color="#0D9373"/>
19
- </linearGradient>
20
- </defs>
21
- </svg>
@@ -1,21 +0,0 @@
1
- <svg width="177" height="24" viewBox="0 0 177 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M9.06145 23.1079C5.26816 22.3769 -3.39077 20.6274 1.4173 5.06384C9.6344 6.09939 16.9728 14.0644 9.06145 23.1079Z" fill="url(#paint0_linear_17557_2020)"/>
3
- <path d="M8.91928 23.0939C5.27642 21.2223 0.78371 4.20891 17.0071 0C20.7569 7.19341 19.6212 16.5452 8.91928 23.0939Z" fill="url(#paint1_linear_17557_2020)"/>
4
- <path d="M8.91388 23.0788C8.73534 19.8817 10.1585 9.08525 23.5699 13.1107C23.1812 20.1229 18.984 26.4182 8.91388 23.0788Z" fill="url(#paint2_linear_17557_2020)"/>
5
- <path d="M32.3008 19.3922V3.89432H37.9383L39.925 9.94786C40.0359 10.3154 40.1642 10.7869 40.3098 11.3624C40.4624 11.938 40.6114 12.5516 40.7571 13.2035C40.9096 13.8553 41.0483 14.4828 41.1731 15.0861C41.3049 15.6824 41.4123 16.1921 41.4955 16.6151H40.6946C40.7709 16.1921 40.8715 15.6824 40.9963 15.0861C41.128 14.4897 41.2667 13.8657 41.4123 13.2139C41.5649 12.562 41.714 11.9484 41.8596 11.3728C42.0052 10.7904 42.1335 10.3154 42.2444 9.94786L44.1999 3.89432H49.8478V19.3922H46.1657V12.7042C46.1657 12.3575 46.1726 11.9172 46.1865 11.3832C46.2004 10.8493 46.2143 10.2703 46.2281 9.64623C46.2489 9.02215 46.2663 8.39114 46.2801 7.75319C46.3009 7.11525 46.3113 6.51891 46.3113 5.96418H46.6234C46.4847 6.56052 46.3321 7.18112 46.1657 7.826C45.9993 8.47088 45.8329 9.10189 45.6665 9.71903C45.507 10.3362 45.3509 10.9013 45.1984 11.4144C45.0528 11.9276 44.928 12.3575 44.824 12.7042L42.6085 19.3922H39.5609L37.3142 12.7042C37.2033 12.3575 37.0715 11.9276 36.919 11.4144C36.7734 10.9013 36.6139 10.3396 36.4405 9.72944C36.2741 9.11229 36.1042 8.48128 35.9309 7.8364C35.7644 7.19153 35.6084 6.56745 35.4628 5.96418H35.8269C35.8338 6.51198 35.8442 7.10485 35.8581 7.74279C35.8719 8.3738 35.8858 9.00481 35.8997 9.63582C35.9205 10.2599 35.9378 10.8389 35.9517 11.3728C35.9655 11.9068 35.9725 12.3506 35.9725 12.7042V19.3922H32.3008ZM51.6684 19.3922V8.02363H55.288V19.3922H51.6684ZM53.4678 6.78588C52.927 6.78588 52.4728 6.61599 52.1053 6.27621C51.7377 5.92951 51.554 5.50652 51.554 5.00726C51.554 4.508 51.7377 4.08848 52.1053 3.74871C52.4728 3.40893 52.927 3.23904 53.4678 3.23904C54.0087 3.23904 54.4629 3.40893 54.8304 3.74871C55.1979 4.08155 55.3817 4.50107 55.3817 5.00726C55.3817 5.50652 55.1979 5.92951 54.8304 6.27621C54.4629 6.61599 54.0087 6.78588 53.4678 6.78588ZM60.7075 13.0266V19.3922H57.0879V8.02363H60.5515L60.5931 10.9672H60.2811C60.5931 10.0241 61.0612 9.26831 61.6852 8.69971C62.3093 8.12417 63.1379 7.8364 64.1711 7.8364C64.9755 7.8364 65.6724 8.01669 66.2618 8.37727C66.8512 8.73091 67.3019 9.23364 67.614 9.88545C67.9329 10.5373 68.0924 11.307 68.0924 12.1945V19.3922H64.4832V12.9122C64.4832 12.2604 64.3202 11.7542 63.9943 11.3936C63.6753 11.0331 63.2212 10.8528 62.6318 10.8528C62.2504 10.8528 61.9141 10.936 61.6228 11.1024C61.3316 11.2688 61.1062 11.515 60.9467 11.8409C60.7873 12.1599 60.7075 12.5551 60.7075 13.0266ZM76.4555 8.02363V10.7488H69.0081V8.02363H76.4555ZM70.6828 5.16328H74.292V15.783C74.292 16.1019 74.3613 16.3342 74.5 16.4799C74.6456 16.6255 74.8987 16.6983 75.2593 16.6983C75.4049 16.6983 75.5956 16.6879 75.8314 16.6671C76.0741 16.6463 76.2509 16.6289 76.3618 16.6151L76.6323 19.309C76.3133 19.3783 75.9631 19.4269 75.5817 19.4546C75.2073 19.4824 74.8363 19.4962 74.4688 19.4962C73.1999 19.4962 72.2499 19.2223 71.6189 18.6745C70.9948 18.1267 70.6828 17.3085 70.6828 16.2198V5.16328Z" fill="#09090B"/>
6
- <path d="M88.6674 19.6522C87.5232 19.6522 86.5282 19.4581 85.6822 19.0698C84.8432 18.6815 84.1879 18.1371 83.7164 17.4368C83.2448 16.7364 82.9917 15.9078 82.9571 14.9509H84.9333C84.968 15.5957 85.1483 16.1401 85.4742 16.5839C85.8001 17.0207 86.2404 17.3536 86.7951 17.5824C87.3499 17.8043 87.974 17.9152 88.6674 17.9152C89.3885 17.9152 90.0265 17.8008 90.5812 17.572C91.1429 17.3432 91.5832 17.0242 91.9022 16.6151C92.2281 16.199 92.391 15.7171 92.391 15.1693C92.391 14.6978 92.2662 14.306 92.0166 13.994C91.7669 13.675 91.4133 13.408 90.9556 13.1931C90.498 12.9781 89.9537 12.7874 89.3227 12.621L87.5024 12.1321C86.1225 11.7646 85.0824 11.255 84.382 10.6031C83.6886 9.94439 83.3419 9.09496 83.3419 8.05483C83.3419 7.17419 83.5708 6.4045 84.0284 5.74575C84.4861 5.087 85.1171 4.57734 85.9214 4.21676C86.7258 3.84925 87.6446 3.6655 88.6778 3.6655C89.7179 3.6655 90.6297 3.85272 91.4133 4.22717C92.2038 4.60161 92.8244 5.12167 93.2751 5.78736C93.7259 6.4461 93.9651 7.20886 93.9928 8.07563H92.0894C92.0131 7.22966 91.656 6.57438 91.0181 6.10979C90.387 5.63827 89.5861 5.40251 88.6154 5.40251C87.9497 5.40251 87.3603 5.51346 86.8471 5.73535C86.341 5.95724 85.9457 6.26235 85.6614 6.65066C85.3771 7.03204 85.235 7.46889 85.235 7.96122C85.235 8.44661 85.3771 8.84879 85.6614 9.16777C85.9457 9.4798 86.3167 9.73984 86.7743 9.94786C87.232 10.149 87.7243 10.3188 88.2513 10.4575L89.8843 10.884C90.4391 11.0227 90.9765 11.2064 91.4965 11.4352C92.0235 11.6571 92.495 11.9345 92.9111 12.2673C93.3341 12.5933 93.6704 12.9954 93.92 13.4739C94.1696 13.9454 94.2945 14.5036 94.2945 15.1485C94.2945 16.0153 94.0656 16.7884 93.608 17.468C93.1573 18.1475 92.5124 18.6815 91.6733 19.0698C90.8343 19.4581 89.8323 19.6522 88.6674 19.6522ZM101.097 8.02363V9.59422H95.1062V8.02363H101.097ZM96.9368 5.16328H98.7674V16.5215C98.7674 16.9999 98.8645 17.3466 99.0587 17.5616C99.2597 17.7696 99.5995 17.8736 100.078 17.8736C100.21 17.8736 100.366 17.8667 100.546 17.8528C100.733 17.832 100.903 17.8147 101.056 17.8008L101.285 19.3506C101.097 19.3922 100.886 19.4234 100.65 19.4442C100.414 19.465 100.189 19.4754 99.974 19.4754C98.9962 19.4754 98.2439 19.2362 97.7169 18.7577C97.1968 18.2723 96.9368 17.5789 96.9368 16.6775V5.16328ZM106.33 19.621C105.595 19.621 104.932 19.4893 104.343 19.2258C103.754 18.9554 103.285 18.5636 102.939 18.0504C102.592 17.5304 102.419 16.8959 102.419 16.147C102.419 15.4952 102.547 14.9647 102.804 14.5556C103.06 14.1465 103.403 13.8275 103.833 13.5987C104.263 13.3629 104.742 13.1861 105.269 13.0682C105.796 12.9504 106.333 12.8567 106.881 12.7874C107.574 12.6903 108.132 12.6175 108.555 12.569C108.978 12.5204 109.287 12.4407 109.481 12.3298C109.675 12.2119 109.772 12.0142 109.772 11.7369V11.6537C109.772 11.2029 109.679 10.8146 109.492 10.4887C109.311 10.1628 109.041 9.90972 108.68 9.72944C108.32 9.54915 107.872 9.459 107.338 9.459C106.805 9.459 106.34 9.54568 105.945 9.71903C105.556 9.89239 105.241 10.1177 104.998 10.3951C104.755 10.6655 104.593 10.9533 104.509 11.2584L102.71 10.9152C102.897 10.2218 103.22 9.64969 103.677 9.19897C104.135 8.74825 104.679 8.41194 105.31 8.19005C105.941 7.96815 106.607 7.85721 107.307 7.85721C107.8 7.85721 108.295 7.91961 108.795 8.04443C109.301 8.16925 109.765 8.38074 110.188 8.67891C110.611 8.97014 110.951 9.36886 111.208 9.87505C111.464 10.3743 111.593 11.0053 111.593 11.7681V19.3922H109.793V17.8216H109.7C109.568 18.0851 109.363 18.359 109.086 18.6433C108.809 18.9207 108.444 19.153 107.994 19.3402C107.543 19.5274 106.988 19.621 106.33 19.621ZM106.621 17.9984C107.321 17.9984 107.904 17.8667 108.368 17.6032C108.84 17.3328 109.19 16.9861 109.419 16.5631C109.654 16.1331 109.772 15.6824 109.772 15.2109V13.6923C109.703 13.7686 109.554 13.8414 109.325 13.9107C109.096 13.9732 108.829 14.0321 108.524 14.0876C108.226 14.143 107.921 14.1916 107.609 14.2332C107.304 14.2748 107.033 14.3095 106.798 14.3372C106.354 14.3927 105.938 14.4897 105.549 14.6284C105.168 14.7602 104.86 14.9543 104.624 15.2109C104.388 15.4675 104.27 15.8107 104.27 16.2406C104.27 16.6151 104.367 16.934 104.561 17.1975C104.762 17.461 105.04 17.6621 105.393 17.8008C105.747 17.9326 106.156 17.9984 106.621 17.9984ZM114.193 19.3922V8.02363H115.951V9.79184H116.045C116.253 9.20937 116.61 8.74131 117.116 8.38767C117.622 8.03403 118.219 7.85721 118.905 7.85721C119.058 7.85721 119.217 7.86414 119.384 7.87801C119.55 7.88494 119.682 7.89188 119.779 7.89881V9.73984C119.716 9.71903 119.578 9.69476 119.363 9.66703C119.155 9.63929 118.922 9.62542 118.666 9.62542C118.174 9.62542 117.726 9.7329 117.324 9.94786C116.922 10.1628 116.603 10.4714 116.367 10.8736C116.138 11.2758 116.024 11.7577 116.024 12.3194V19.3922H114.193ZM126.322 8.02363V9.59422H120.33V8.02363H126.322ZM122.161 5.16328H123.992V16.5215C123.992 16.9999 124.089 17.3466 124.283 17.5616C124.484 17.7696 124.824 17.8736 125.302 17.8736C125.434 17.8736 125.59 17.8667 125.77 17.8528C125.958 17.832 126.127 17.8147 126.28 17.8008L126.509 19.3506C126.322 19.3922 126.11 19.4234 125.874 19.4442C125.639 19.465 125.413 19.4754 125.198 19.4754C124.221 19.4754 123.468 19.2362 122.941 18.7577C122.421 18.2723 122.161 17.5789 122.161 16.6775V5.16328ZM132.604 19.6418C131.502 19.6418 130.555 19.3957 129.765 18.9034C128.974 18.4041 128.364 17.7141 127.934 16.8335C127.511 15.9459 127.3 14.9266 127.3 13.7755C127.3 12.6106 127.511 11.5843 127.934 10.6968C128.364 9.80224 128.964 9.10189 129.734 8.5957C130.51 8.0895 131.408 7.8364 132.428 7.8364C133.1 7.8364 133.738 7.95429 134.341 8.19005C134.952 8.42581 135.489 8.78292 135.954 9.26138C136.425 9.73984 136.793 10.3431 137.056 11.0712C137.327 11.7924 137.462 12.6453 137.462 13.6299V14.2956H128.433V12.7354H136.463L135.631 13.2971C135.631 12.5412 135.506 11.8756 135.257 11.3C135.007 10.7245 134.643 10.2772 134.165 9.95826C133.686 9.63236 133.107 9.4694 132.428 9.4694C131.748 9.4694 131.162 9.63236 130.67 9.95826C130.177 10.2842 129.796 10.7245 129.526 11.2792C129.262 11.827 129.13 12.4407 129.13 13.1202V14.046C129.13 14.8642 129.273 15.5715 129.557 16.1678C129.841 16.7572 130.243 17.2114 130.763 17.5304C131.283 17.8424 131.901 17.9984 132.615 17.9984C133.093 17.9984 133.523 17.9291 133.905 17.7904C134.293 17.6448 134.619 17.4333 134.882 17.1559C135.153 16.8786 135.354 16.5457 135.486 16.1574L137.275 16.4487C137.108 17.0797 136.81 17.6344 136.38 18.1129C135.95 18.5913 135.413 18.9658 134.768 19.2362C134.123 19.5066 133.402 19.6418 132.604 19.6418ZM139.459 19.3922V8.02363H141.217V9.79184H141.311C141.519 9.20937 141.876 8.74131 142.382 8.38767C142.888 8.03403 143.485 7.85721 144.171 7.85721C144.324 7.85721 144.483 7.86414 144.649 7.87801C144.816 7.88494 144.948 7.89188 145.045 7.89881V9.73984C144.982 9.71903 144.844 9.69476 144.629 9.66703C144.421 9.63929 144.188 9.62542 143.932 9.62542C143.439 9.62542 142.992 9.7329 142.59 9.94786C142.188 10.1628 141.869 10.4714 141.633 10.8736C141.404 11.2758 141.29 11.7577 141.29 12.3194V19.3922H139.459ZM153.429 14.9613V12.7146C153.783 12.2569 154.136 11.8201 154.49 11.404C154.844 10.9811 155.204 10.565 155.572 10.1559C155.939 9.73984 156.314 9.32725 156.695 8.91814L161.355 3.89432H163.893L157.277 10.9672H157.184L153.429 14.9613ZM152.108 19.3922V3.89432H154.043V9.24058L154.022 12.5586L154.043 13.5051V19.3922H152.108ZM161.615 19.3922L155.967 11.4768L157.173 9.96866L163.903 19.3922H161.615ZM165.661 19.3922V8.02363H167.492V19.3922H165.661ZM166.587 6.02658C166.24 6.02658 165.942 5.9087 165.692 5.67294C165.443 5.43025 165.318 5.13901 165.318 4.79923C165.318 4.45946 165.443 4.17169 165.692 3.93593C165.942 3.69323 166.24 3.57189 166.587 3.57189C166.934 3.57189 167.232 3.69323 167.482 3.93593C167.731 4.17169 167.856 4.45946 167.856 4.79923C167.856 5.13901 167.731 5.43025 167.482 5.67294C167.232 5.9087 166.934 6.02658 166.587 6.02658ZM174.836 8.02363V9.59422H168.844V8.02363H174.836ZM170.675 5.16328H172.506V16.5215C172.506 16.9999 172.603 17.3466 172.797 17.5616C172.998 17.7696 173.338 17.8736 173.816 17.8736C173.948 17.8736 174.104 17.8667 174.284 17.8528C174.472 17.832 174.641 17.8147 174.794 17.8008L175.023 19.3506C174.836 19.3922 174.624 19.4234 174.388 19.4442C174.153 19.465 173.927 19.4754 173.712 19.4754C172.735 19.4754 171.982 19.2362 171.455 18.7577C170.935 18.2723 170.675 17.5789 170.675 16.6775V5.16328Z" fill="#52525C"/>
7
- <defs>
8
- <linearGradient id="paint0_linear_17557_2020" x1="3.77557" y1="5.91571" x2="5.23185" y2="21.5589" gradientUnits="userSpaceOnUse">
9
- <stop stop-color="#18E299"/>
10
- <stop offset="1" stop-color="#15803D"/>
11
- </linearGradient>
12
- <linearGradient id="paint1_linear_17557_2020" x1="12.1711" y1="-0.718425" x2="10.1897" y2="22.9832" gradientUnits="userSpaceOnUse">
13
- <stop stop-color="#16A34A"/>
14
- <stop offset="1" stop-color="#4ADE80"/>
15
- </linearGradient>
16
- <linearGradient id="paint2_linear_17557_2020" x1="23.1327" y1="15.353" x2="9.33841" y2="18.5196" gradientUnits="userSpaceOnUse">
17
- <stop stop-color="#4ADE80"/>
18
- <stop offset="1" stop-color="#0D9373"/>
19
- </linearGradient>
20
- </defs>
21
- </svg>
@@ -1,82 +0,0 @@
1
- ---
2
- title: Package Aliases
3
- description: "Registered typosquat-prevention aliases and how they work"
4
- icon: copy
5
- ---
6
-
7
- ## Official package
8
-
9
- The canonical npm package is **`failproofai`**:
10
-
11
- ```bash
12
- npm install -g failproofai
13
- # or
14
- bun add -g failproofai
15
- ```
16
-
17
- ---
18
-
19
- ## Why we own the alias names
20
-
21
- Typosquatting is a common supply-chain attack where a malicious actor registers a package name that is one keystroke away from a popular package. Unsuspecting users who mistype the install command end up running attacker-controlled code with full system access - exactly the kind of threat Failproof AI is designed to defend against.
22
-
23
- To eliminate this surface, **we pre-emptively own all common misspellings and formatting variants** of `failproofai` on npm. None of these names can be registered by a third party. Each one is a thin proxy that installs and delegates to the real `failproofai` package.
24
-
25
- ---
26
-
27
- ## Registered aliases
28
-
29
- **Formatting variants** - different ways to write "failproof ai":
30
-
31
- | Package | Status |
32
- |---------|--------|
33
- | `failproof` | ✅ Published |
34
- | `failproof-ai` | ⏳ Pending npm support |
35
- | `fail-proof-ai` | ⏳ Pending npm support |
36
- | `failproof_ai` | ⏳ Pending npm support |
37
- | `fail_proof_ai` | ⏳ Pending npm support |
38
- | `fail-proofai` | ⏳ Pending npm support |
39
-
40
- **`failprof*` typos** - missing one `o` from "proof":
41
-
42
- | Package | Status |
43
- |---------|--------|
44
- | `failprof` | ✅ Published |
45
- | `failprof-ai` | ✅ Published |
46
- | `failprofai` | ⏳ Pending npm support |
47
- | `fail-prof-ai` | ⏳ Pending npm support |
48
- | `failprof_ai` | ⏳ Pending npm support |
49
-
50
- **`faliproof*` typos** - transposed `a` and `i`:
51
-
52
- | Package | Status |
53
- |---------|--------|
54
- | `faliproof` | ✅ Published |
55
- | `faliproof-ai` | ✅ Published |
56
- | `faliproofai` | ⏳ Pending npm support |
57
-
58
- > **Why pending?** npm's spam-prevention policy blocks names that normalize to the same string as an existing package after stripping punctuation and running similarity checks. We have contacted npm support to reserve these names for anti-squatting purposes. They will be activated once approved.
59
-
60
- You can verify any published alias is owned by us:
61
-
62
- ```bash
63
- npm info failproof
64
- # Look for: "ExosphereHost Inc." in the maintainers field
65
- ```
66
-
67
- ---
68
-
69
- ## How the aliases work
70
-
71
- Each alias package:
72
-
73
- 1. Lists `failproofai` as a dependency - so the real package (including its `postinstall` hook setup) runs on install
74
- 2. Exposes a binary matching its own name (e.g. `failprof-ai`) that proxies all arguments to the `failproofai` binary
75
-
76
- The proxy is a two-line Node script; there is no logic, no network calls, and no data collection beyond what `failproofai` itself does.
77
-
78
- ---
79
-
80
- ## If you find a name we missed
81
-
82
- Open an issue at [exospherehost/failproofai](https://github.com/exospherehost/failproofai/issues) and we will register it.