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,357 +0,0 @@
1
- #!/usr/bin/env bun
2
- import { parseArgs } from "node:util";
3
- import { existsSync, readdirSync, readFileSync } from "node:fs";
4
- import { dirname, join, relative } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { LANGUAGES, getLanguagesByTier, getLanguageByCode, getModelForTier } from "./config";
7
- import { getEnglishMdxPages, translateMdxPage } from "./mdx-translator";
8
- import { translateReadme } from "./readme-translator";
9
- import { updateDocsJson, readDocsConfig } from "./mintlify-nav";
10
- import { readCache, writeCache, isCached, setCacheEntry } from "./cache";
11
- import type { TranslationResult } from "./types";
12
-
13
- const __dirname = dirname(fileURLToPath(import.meta.url));
14
- const DOCS_DIR = join(__dirname, "..", "..", "docs");
15
-
16
- const { values: args } = parseArgs({
17
- options: {
18
- languages: { type: "string", short: "l" },
19
- tier: { type: "string", short: "t" },
20
- pages: { type: "string", short: "p" },
21
- "readme-only": { type: "boolean", default: false },
22
- "docs-only": { type: "boolean", default: false },
23
- "dry-run": { type: "boolean", default: false },
24
- force: { type: "boolean", short: "f", default: false },
25
- "update-nav": { type: "boolean", default: false },
26
- validate: { type: "boolean", default: false },
27
- model: { type: "string", short: "m" },
28
- help: { type: "boolean", short: "h", default: false },
29
- },
30
- strict: true,
31
- });
32
-
33
- if (args.help) {
34
- console.log(`
35
- Usage: bun scripts/translate-docs/cli.ts [options]
36
-
37
- Options:
38
- -l, --languages <codes> Comma-separated language codes (e.g. zh,ja,es)
39
- -t, --tier <n> Translate all languages up to tier n (1, 2, or 3)
40
- -p, --pages <files> Comma-separated page names to translate
41
- --readme-only Only translate the README
42
- --docs-only Only translate Mintlify docs
43
- --dry-run Show what would be translated without calling the API
44
- -f, --force Ignore cache, re-translate everything
45
- --update-nav Regenerate docs.json navigation after translation
46
- --validate Check all nav references resolve to files
47
- -m, --model <model> Claude model override (default: Sonnet for Tier 1, Haiku for Tier 2/3)
48
- -h, --help Show this help
49
-
50
- Environment:
51
- ANTHROPIC_API_KEY Required for translation (not needed for --dry-run or --validate)
52
-
53
- Examples:
54
- bun scripts/translate-docs/cli.ts --tier 1 # Translate Tier 1 languages
55
- bun scripts/translate-docs/cli.ts -l zh,ja --docs-only # Translate Chinese + Japanese docs only
56
- bun scripts/translate-docs/cli.ts --dry-run --tier 3 # Preview all translations
57
- bun scripts/translate-docs/cli.ts --validate # Check nav references
58
- bun scripts/translate-docs/cli.ts --update-nav # Regenerate docs.json
59
- `);
60
- process.exit(0);
61
- }
62
-
63
- function resolveLanguages(): string[] {
64
- if (args.languages) {
65
- const codes = args.languages.split(",").map((c) => c.trim());
66
- for (const code of codes) {
67
- if (!getLanguageByCode(code)) {
68
- console.error(`Unknown language code: ${code}`);
69
- console.error(`Available: ${LANGUAGES.map((l) => l.code).join(", ")}`);
70
- process.exit(1);
71
- }
72
- }
73
- return codes;
74
- }
75
- const tier = args.tier ? parseInt(args.tier, 10) : 1;
76
- if (tier < 1 || tier > 3) {
77
- console.error("Tier must be 1, 2, or 3");
78
- process.exit(1);
79
- }
80
- return getLanguagesByTier(tier).map((l) => l.code);
81
- }
82
-
83
- async function validateNavReferences(): Promise<boolean> {
84
- const config = readDocsConfig();
85
- const nav = config.navigation as Record<string, unknown>;
86
- let valid = true;
87
- let total = 0;
88
- let missing = 0;
89
-
90
- const languages = (nav.languages || []) as Array<{
91
- language: string;
92
- tabs: Array<{ groups: Array<{ pages: string[] }> }>;
93
- }>;
94
-
95
- if (languages.length === 0) {
96
- // Flat tabs structure (not yet migrated to languages)
97
- const tabs = (nav.tabs || []) as Array<{
98
- groups: Array<{ pages: string[] }>;
99
- }>;
100
- for (const tab of tabs) {
101
- for (const group of tab.groups) {
102
- for (const page of group.pages) {
103
- total++;
104
- const filePath = join(DOCS_DIR, `${page}.mdx`);
105
- if (!existsSync(filePath)) {
106
- console.error(` MISSING: ${page} -> ${filePath}`);
107
- missing++;
108
- valid = false;
109
- }
110
- }
111
- }
112
- }
113
- } else {
114
- for (const langEntry of languages) {
115
- for (const tab of langEntry.tabs) {
116
- for (const group of tab.groups) {
117
- for (const page of group.pages) {
118
- total++;
119
- const filePath = join(DOCS_DIR, `${page}.mdx`);
120
- if (!existsSync(filePath)) {
121
- console.error(` MISSING [${langEntry.language}]: ${page} -> ${filePath}`);
122
- missing++;
123
- valid = false;
124
- }
125
- }
126
- }
127
- }
128
- }
129
- }
130
-
131
- if (valid) {
132
- console.log(`All ${total} page references are valid.`);
133
- } else {
134
- console.error(`\n${missing} of ${total} page references are missing.`);
135
- }
136
-
137
- return valid;
138
- }
139
-
140
- async function main() {
141
- // Validate mode
142
- if (args.validate) {
143
- const valid = await validateNavReferences();
144
- process.exit(valid ? 0 : 1);
145
- }
146
-
147
- // Update nav mode
148
- if (args["update-nav"]) {
149
- const langCodes = resolveLanguages();
150
- console.log(`Updating docs.json with languages: ${langCodes.join(", ")}`);
151
- updateDocsJson(langCodes);
152
- console.log("docs.json updated.");
153
- return;
154
- }
155
-
156
- const langCodes = resolveLanguages();
157
- const isDryRun = args["dry-run"];
158
- const isForce = args.force;
159
- const modelOverride = args.model;
160
-
161
- /** Resolve the model for a language: CLI override wins, otherwise tier-based default. */
162
- function resolveModel(lang: string): string {
163
- if (modelOverride) return modelOverride;
164
- const langConfig = getLanguageByCode(lang);
165
- return getModelForTier(langConfig?.tier ?? 1);
166
- }
167
-
168
- console.log(
169
- `${isDryRun ? "[DRY RUN] " : ""}Translating into: ${langCodes.join(", ")}`,
170
- );
171
- if (!modelOverride) {
172
- console.log(`Models: Tier 1 -> ${getModelForTier(1)}, Tier 2/3 -> ${getModelForTier(2)}`);
173
- } else {
174
- console.log(`Model override: ${modelOverride}`);
175
- }
176
-
177
- const results: TranslationResult[] = [];
178
- const errors: Array<{ lang: string; source: string; error: string }> = [];
179
-
180
- // Read cache once upfront — filter unchanged files before starting work
181
- const cache = readCache();
182
-
183
- // Concurrency limiter to avoid overwhelming the Anthropic API
184
- const MAX_CONCURRENT = 10;
185
- async function runWithConcurrency<T>(tasks: (() => Promise<T>)[]): Promise<T[]> {
186
- const results: T[] = [];
187
- let i = 0;
188
- async function next(): Promise<void> {
189
- while (i < tasks.length) {
190
- const idx = i++;
191
- results[idx] = await tasks[idx]();
192
- }
193
- }
194
- await Promise.all(Array.from({ length: Math.min(MAX_CONCURRENT, tasks.length) }, () => next()));
195
- return results;
196
- }
197
-
198
- // Translate docs
199
- if (!args["readme-only"]) {
200
- const pages = getEnglishMdxPages();
201
- const filteredPages = args.pages
202
- ? pages.filter((p) => {
203
- const rel = relative(DOCS_DIR, p).replace(".mdx", "");
204
- return args.pages!.split(",").some((f) => rel.includes(f.trim()));
205
- })
206
- : pages;
207
-
208
- // Read each page once and reuse across languages
209
- const pageContents = new Map<string, string>();
210
- for (const page of filteredPages) {
211
- pageContents.set(page, readFileSync(page, "utf-8"));
212
- }
213
-
214
- // Split into cached (skip) and uncached (need translation) upfront
215
- type PageTask = { page: string; relPath: string; lang: string };
216
- const cachedTasks: PageTask[] = [];
217
- const uncachedTasks: PageTask[] = [];
218
-
219
- for (const lang of langCodes) {
220
- for (const page of filteredPages) {
221
- const relPath = relative(DOCS_DIR, page);
222
- const task = { page, relPath, lang };
223
- if (!isForce && !isDryRun && isCached(cache, relPath, lang, pageContents.get(page)!)) {
224
- cachedTasks.push(task);
225
- } else {
226
- uncachedTasks.push(task);
227
- }
228
- }
229
- }
230
-
231
- console.log(`\n${filteredPages.length} MDX pages x ${langCodes.length} languages = ${filteredPages.length * langCodes.length} total`);
232
- console.log(` Cached (unchanged): ${cachedTasks.length}`);
233
- console.log(` Need translation: ${uncachedTasks.length}`);
234
-
235
- // Record cached results
236
- for (const { page, relPath, lang } of cachedTasks) {
237
- results.push({
238
- lang,
239
- sourcePath: page,
240
- outputPath: join(DOCS_DIR, lang, relPath),
241
- inputTokens: 0,
242
- outputTokens: 0,
243
- cached: true,
244
- });
245
- }
246
-
247
- // Translate uncached pages with concurrency limit
248
- if (uncachedTasks.length > 0) {
249
- const taskResults = await runWithConcurrency(
250
- uncachedTasks.map(({ page, relPath, lang }) => async () => {
251
- try {
252
- const result = await translateMdxPage(page, lang, {
253
- force: isForce,
254
- dryRun: isDryRun,
255
- model: resolveModel(lang),
256
- cache,
257
- });
258
- const status = isDryRun
259
- ? "would translate"
260
- : `translated (${result.inputTokens}+${result.outputTokens} tokens)`;
261
- console.log(` ${relPath} [${lang}] -> ${status}`);
262
- results.push(result);
263
- if (!result.cached && !isDryRun) {
264
- setCacheEntry(cache, relPath, lang, pageContents.get(page)!, result.inputTokens, result.outputTokens);
265
- }
266
- } catch (err) {
267
- const msg = err instanceof Error ? err.message : String(err);
268
- errors.push({ lang, source: relPath, error: msg });
269
- console.error(` ${relPath} [${lang}] -> ERROR: ${msg}`);
270
- }
271
- }),
272
- );
273
- }
274
- }
275
-
276
- // Translate README
277
- if (!args["docs-only"]) {
278
- console.log(`\nTranslating README...`);
279
-
280
- // Read README once
281
- const readmeSource = readFileSync(join(DOCS_DIR, "..", "README.md"), "utf-8");
282
- const uncachedLangs: string[] = [];
283
- for (const lang of langCodes) {
284
- if (!isForce && !isDryRun && isCached(cache, "README.md", lang, readmeSource)) {
285
- console.log(` README.${lang}.md -> cached`);
286
- results.push({
287
- lang,
288
- sourcePath: join(DOCS_DIR, "..", "README.md"),
289
- outputPath: join(DOCS_DIR, "i18n", `README.${lang}.md`),
290
- inputTokens: 0,
291
- outputTokens: 0,
292
- cached: true,
293
- });
294
- } else {
295
- uncachedLangs.push(lang);
296
- }
297
- }
298
-
299
- if (uncachedLangs.length > 0) {
300
- await runWithConcurrency(
301
- uncachedLangs.map((lang) => async () => {
302
- try {
303
- const langConfig = getLanguageByCode(lang)!;
304
- const result = await translateReadme(lang, {
305
- force: isForce,
306
- dryRun: isDryRun,
307
- model: resolveModel(lang),
308
- cache,
309
- });
310
- const status = isDryRun
311
- ? "would translate"
312
- : `translated (${result.inputTokens}+${result.outputTokens} tokens)`;
313
- console.log(` README.${lang}.md -> ${langConfig.nativeName}: ${status}`);
314
- results.push(result);
315
- if (!result.cached && !isDryRun) {
316
- setCacheEntry(cache, "README.md", lang, readmeSource, result.inputTokens, result.outputTokens);
317
- }
318
- } catch (err) {
319
- const msg = err instanceof Error ? err.message : String(err);
320
- errors.push({ lang, source: "README.md", error: msg });
321
- console.error(` README.${lang}.md -> ERROR: ${msg}`);
322
- }
323
- }),
324
- );
325
- }
326
- }
327
-
328
- // Batch write cache once at the end
329
- if (!isDryRun) {
330
- writeCache(cache);
331
- }
332
-
333
- // Summary
334
- const translated = results.filter((r) => !r.cached && !isDryRun);
335
- const cached = results.filter((r) => r.cached);
336
- const totalInput = translated.reduce((s, r) => s + r.inputTokens, 0);
337
- const totalOutput = translated.reduce((s, r) => s + r.outputTokens, 0);
338
-
339
- console.log(`\n--- Summary ---`);
340
- console.log(`Translated: ${translated.length}`);
341
- console.log(`Cached (skipped): ${cached.length}`);
342
- if (errors.length > 0) {
343
- console.log(`Errors: ${errors.length}`);
344
- }
345
- if (totalInput > 0) {
346
- console.log(`Total tokens: ${totalInput} input + ${totalOutput} output`);
347
- }
348
-
349
- if (errors.length > 0) {
350
- process.exit(1);
351
- }
352
- }
353
-
354
- main().catch((err) => {
355
- console.error("Fatal error:", err);
356
- process.exit(1);
357
- });
@@ -1,248 +0,0 @@
1
- import type { LanguageConfig } from "./types";
2
-
3
- export const LANGUAGES: LanguageConfig[] = [
4
- // Tier 1 — largest developer populations
5
- { code: "zh", name: "Chinese (Simplified)", nativeName: "\u7b80\u4f53\u4e2d\u6587", tier: 1 },
6
- { code: "ja", name: "Japanese", nativeName: "\u65e5\u672c\u8a9e", tier: 1 },
7
- { code: "ko", name: "Korean", nativeName: "\ud55c\uad6d\uc5b4", tier: 1 },
8
- { code: "es", name: "Spanish", nativeName: "Espa\u00f1ol", tier: 1 },
9
- { code: "pt-br", name: "Portuguese (Brazil)", nativeName: "Portugu\u00eas", tier: 1 },
10
- { code: "de", name: "German", nativeName: "Deutsch", tier: 1 },
11
- { code: "fr", name: "French", nativeName: "Fran\u00e7ais", tier: 1 },
12
- // Tier 2 — strong tech communities
13
- { code: "ru", name: "Russian", nativeName: "\u0420\u0443\u0441\u0441\u043a\u0438\u0439", tier: 2 },
14
- { code: "hi", name: "Hindi", nativeName: "\u0939\u093f\u0928\u094d\u0926\u0940", tier: 2 },
15
- { code: "tr", name: "Turkish", nativeName: "T\u00fcrk\u00e7e", tier: 2 },
16
- { code: "vi", name: "Vietnamese", nativeName: "Ti\u1ebfng Vi\u1ec7t", tier: 2 },
17
- { code: "it", name: "Italian", nativeName: "Italiano", tier: 2 },
18
- // Tier 3 — RTL languages
19
- { code: "ar", name: "Arabic", nativeName: "\u0627\u0644\u0639\u0631\u0628\u064a\u0629", tier: 3, rtl: true },
20
- { code: "he", name: "Hebrew", nativeName: "\u05e2\u05d1\u05e8\u05d9\u05ea", tier: 3, rtl: true },
21
- ];
22
-
23
- export function getLanguagesByTier(maxTier: number): LanguageConfig[] {
24
- return LANGUAGES.filter((l) => l.tier <= maxTier);
25
- }
26
-
27
- export function getLanguageByCode(code: string): LanguageConfig | undefined {
28
- return LANGUAGES.find((l) => l.code === code);
29
- }
30
-
31
- export function getLanguageCodes(maxTier?: number): string[] {
32
- const langs = maxTier ? getLanguagesByTier(maxTier) : LANGUAGES;
33
- return langs.map((l) => l.code);
34
- }
35
-
36
- /** Return the default model for a given tier. Tier 1 gets Sonnet, Tier 2/3 gets Haiku. */
37
- export function getModelForTier(tier: number): string {
38
- return tier <= 1 ? "claude-sonnet-4-6" : "claude-haiku-4-5-20251001";
39
- }
40
-
41
- /** Terms that should never be translated — kept as-is in all languages. */
42
- export const DO_NOT_TRANSLATE = [
43
- "failproofai",
44
- "Failproof AI",
45
- "FailproofAI",
46
- "Claude Code",
47
- "Agents SDK",
48
- "Claude",
49
- "Anthropic",
50
- "Node.js",
51
- "Bun",
52
- "npm",
53
- "npx",
54
- "MDX",
55
- "JSON",
56
- "JSONL",
57
- "ESM",
58
- "CJS",
59
- "settings.json",
60
- "policies-config.json",
61
- "policies-config.local.json",
62
- "hook-activity.jsonl",
63
- "hook.log",
64
- "dist/index.js",
65
- ".failproofai",
66
- "~/.failproofai",
67
- "~/.claude",
68
- // CLI commands and flags
69
- "failproofai policies --install",
70
- "failproofai policies --uninstall",
71
- "--install",
72
- "--uninstall",
73
- "--scope",
74
- "--port",
75
- "--strict",
76
- "--projects-path",
77
- "--allowed-origins",
78
- // Policy names
79
- "block-sudo",
80
- "block-rm-rf",
81
- "sanitize-api-keys",
82
- "prevent-secret-leakage",
83
- "block-force-push",
84
- "restrict-to-project",
85
- "detect-loops",
86
- // Technical terms
87
- "PreToolUse",
88
- "PostToolUse",
89
- "PreNotification",
90
- "PostNotification",
91
- "allow",
92
- "deny",
93
- "instruct",
94
- "customPolicies",
95
- "localhost",
96
- "stdin",
97
- "stdout",
98
- ];
99
-
100
- /** Navigation group translations for each language. */
101
- export const NAV_TRANSLATIONS: Record<
102
- string,
103
- {
104
- docs: string;
105
- examples: string;
106
- gettingStarted: string;
107
- coreConcepts: string;
108
- cli: string;
109
- tools: string;
110
- advanced: string;
111
- }
112
- > = {
113
- en: {
114
- docs: "Docs",
115
- examples: "Examples",
116
- gettingStarted: "Getting Started",
117
- coreConcepts: "Core Concepts",
118
- cli: "CLI",
119
- tools: "Tools",
120
- advanced: "Advanced",
121
- },
122
- zh: {
123
- docs: "\u6587\u6863",
124
- examples: "\u793a\u4f8b",
125
- gettingStarted: "\u5feb\u901f\u5f00\u59cb",
126
- coreConcepts: "\u6838\u5fc3\u6982\u5ff5",
127
- cli: "CLI",
128
- tools: "\u5de5\u5177",
129
- advanced: "\u8fdb\u9636",
130
- },
131
- ja: {
132
- docs: "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
133
- examples: "\u4f8b",
134
- gettingStarted: "\u306f\u3058\u3081\u306b",
135
- coreConcepts: "\u57fa\u672c\u6982\u5ff5",
136
- cli: "CLI",
137
- tools: "\u30c4\u30fc\u30eb",
138
- advanced: "\u4e0a\u7d1a",
139
- },
140
- ko: {
141
- docs: "\ubb38\uc11c",
142
- examples: "\uc608\uc81c",
143
- gettingStarted: "\uc2dc\uc791\ud558\uae30",
144
- coreConcepts: "\ud575\uc2ec \uac1c\ub150",
145
- cli: "CLI",
146
- tools: "\ub3c4\uad6c",
147
- advanced: "\uace0\uae09",
148
- },
149
- es: {
150
- docs: "Documentaci\u00f3n",
151
- examples: "Ejemplos",
152
- gettingStarted: "Primeros pasos",
153
- coreConcepts: "Conceptos principales",
154
- cli: "CLI",
155
- tools: "Herramientas",
156
- advanced: "Avanzado",
157
- },
158
- "pt-br": {
159
- docs: "Documenta\u00e7\u00e3o",
160
- examples: "Exemplos",
161
- gettingStarted: "Come\u00e7ando",
162
- coreConcepts: "Conceitos principais",
163
- cli: "CLI",
164
- tools: "Ferramentas",
165
- advanced: "Avan\u00e7ado",
166
- },
167
- de: {
168
- docs: "Dokumentation",
169
- examples: "Beispiele",
170
- gettingStarted: "Erste Schritte",
171
- coreConcepts: "Kernkonzepte",
172
- cli: "CLI",
173
- tools: "Werkzeuge",
174
- advanced: "Fortgeschritten",
175
- },
176
- fr: {
177
- docs: "Documentation",
178
- examples: "Exemples",
179
- gettingStarted: "D\u00e9marrage",
180
- coreConcepts: "Concepts cl\u00e9s",
181
- cli: "CLI",
182
- tools: "Outils",
183
- advanced: "Avanc\u00e9",
184
- },
185
- ru: {
186
- docs: "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
187
- examples: "\u041f\u0440\u0438\u043c\u0435\u0440\u044b",
188
- gettingStarted: "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b",
189
- coreConcepts: "\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438",
190
- cli: "CLI",
191
- tools: "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
192
- advanced: "\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439",
193
- },
194
- hi: {
195
- docs: "\u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c",
196
- examples: "\u0909\u0926\u093e\u0939\u0930\u0923",
197
- gettingStarted: "\u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902",
198
- coreConcepts: "\u092e\u0942\u0932 \u0905\u0935\u0927\u093e\u0930\u0923\u093e\u090f\u0901",
199
- cli: "CLI",
200
- tools: "\u0909\u092a\u0915\u0930\u0923",
201
- advanced: "\u0909\u0928\u094d\u0928\u0924",
202
- },
203
- tr: {
204
- docs: "Belgeler",
205
- examples: "\u00d6rnekler",
206
- gettingStarted: "Ba\u015flang\u0131\u00e7",
207
- coreConcepts: "Temel Kavramlar",
208
- cli: "CLI",
209
- tools: "Ara\u00e7lar",
210
- advanced: "Geli\u015fmi\u015f",
211
- },
212
- vi: {
213
- docs: "T\u00e0i li\u1ec7u",
214
- examples: "V\u00ed d\u1ee5",
215
- gettingStarted: "B\u1eaft \u0111\u1ea7u",
216
- coreConcepts: "Kh\u00e1i ni\u1ec7m c\u1ed1t l\u00f5i",
217
- cli: "CLI",
218
- tools: "C\u00f4ng c\u1ee5",
219
- advanced: "N\u00e2ng cao",
220
- },
221
- it: {
222
- docs: "Documentazione",
223
- examples: "Esempi",
224
- gettingStarted: "Per iniziare",
225
- coreConcepts: "Concetti chiave",
226
- cli: "CLI",
227
- tools: "Strumenti",
228
- advanced: "Avanzato",
229
- },
230
- ar: {
231
- docs: "\u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a",
232
- examples: "\u0623\u0645\u062b\u0644\u0629",
233
- gettingStarted: "\u0627\u0644\u0628\u062f\u0627\u064a\u0629",
234
- coreConcepts: "\u0627\u0644\u0645\u0641\u0627\u0647\u064a\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629",
235
- cli: "CLI",
236
- tools: "\u0627\u0644\u0623\u062f\u0648\u0627\u062a",
237
- advanced: "\u0645\u062a\u0642\u062f\u0645",
238
- },
239
- he: {
240
- docs: "\u05ea\u05d9\u05e2\u05d5\u05d3",
241
- examples: "\u05d3\u05d5\u05d2\u05de\u05d0\u05d5\u05ea",
242
- gettingStarted: "\u05ea\u05d7\u05d9\u05dc\u05ea \u05e2\u05d1\u05d5\u05d3\u05d4",
243
- coreConcepts: "\u05de\u05d5\u05e9\u05d2\u05d9 \u05d9\u05e1\u05d5\u05d3",
244
- cli: "CLI",
245
- tools: "\u05db\u05dc\u05d9\u05dd",
246
- advanced: "\u05de\u05ea\u05e7\u05d3\u05dd",
247
- },
248
- };