failproofai 1.0.3 → 1.0.4-beta.1

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 (251) hide show
  1. package/.next/standalone/.grok/hooks/failproofai.json +172 -0
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +5 -5
  4. package/.next/standalone/.next/prerender-manifest.json +4 -4
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  7. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  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/build-manifest.json +2 -2
  16. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  21. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  22. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -14
  23. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/audit/run/route.js +4 -4
  26. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +1 -1
  33. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
  35. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  36. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/index.html +1 -1
  39. package/.next/standalone/.next/server/app/index.rsc +15 -15
  40. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +14 -14
  41. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  42. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  43. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  45. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  48. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  49. package/.next/standalone/.next/server/app/policies/page.js +1 -1
  50. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  53. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  54. package/.next/standalone/.next/server/app/project/[name]/page.js +3 -3
  55. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  58. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  59. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  60. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +2 -2
  61. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  64. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  65. package/.next/standalone/.next/server/app/projects/page.js +1 -1
  66. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +2 -2
  69. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +4 -4
  70. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/chunks/{[externals]__0u3wrvq._.js → [externals]__0_gzk8q._.js} +1 -1
  73. package/.next/standalone/.next/server/chunks/{[externals]__0-9ti7z._.js → [externals]__1zndo1i._.js} +1 -1
  74. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07hor7h._.js +5 -0
  75. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfu._.js +1 -1
  76. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cuho4x._.js +1 -1
  77. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0elsuli._.js +3 -0
  78. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gnj_qa._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljuzm_._.js +3 -0
  80. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
  81. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w23bpg._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x5c7sh._.js +3 -0
  83. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yik9_w._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1adacul._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1jg6s9m._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1s6qci9._.js +3 -0
  87. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xfm05z._.js +3 -0
  88. package/.next/standalone/.next/server/chunks/_09dz7xv._.js +1 -1
  89. package/.next/standalone/.next/server/chunks/_0tdy_6l._.js +3 -0
  90. package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
  91. package/.next/standalone/.next/server/chunks/_0trp3yc._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/_1ek68ln._.js +21 -14
  93. package/.next/standalone/.next/server/chunks/lib_grok-projects_ts_1i2epl_._.js +3 -0
  94. package/.next/standalone/.next/server/chunks/lib_qwen-projects_ts_0wu_a8e._.js +3 -0
  95. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +2 -2
  96. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +2 -2
  97. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  98. package/.next/standalone/.next/server/chunks/src_hooks_0iu54mz._.js +1 -1
  99. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__013jr2b._.js +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01wy8d-._.js +2 -2
  101. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02npjtd._.js +2 -2
  102. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_4gcz8._.js +3 -0
  103. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0d--wmy._.js +3 -0
  104. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da85px._.js +2 -2
  105. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ftmoxc._.js +2 -2
  106. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oa1lav._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p-5p8u._.js +2 -2
  108. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qqrlf_._.js +3 -0
  109. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s11fx1._.js +3 -0
  110. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s740oi._.js +2 -2
  111. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0n_lxhg._.js → [root-of-the-server]__0wvusu0._.js} +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1b5jzxr._.js → [root-of-the-server]__16gamwq._.js} +2 -2
  113. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1bbk-si._.js +3 -0
  114. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c3ybxr._.js +3 -0
  115. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1izi7zn._.js +3 -0
  116. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1p2otjt._.js +2 -2
  117. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qapotl._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1zl_r0t._.js +1 -1
  119. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__21bj7uw._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/ssr/_0-yi74u._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/{_0v8eebd._.js → _00z5uuq._.js} +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/{_1if9ixi._.js → _08f0jd2._.js} +1 -1
  123. package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/_0wso5d3._.js +1 -1
  125. package/.next/standalone/.next/server/chunks/ssr/{_0j6gd_k._.js → _1byck5v._.js} +2 -2
  126. package/.next/standalone/.next/server/chunks/ssr/_1es2j7i._.js +155 -1
  127. package/.next/standalone/.next/server/chunks/ssr/_1u8-lu2._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/_1zopuov._.js +1 -1
  129. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +2 -2
  130. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/app_settings_settings-client_tsx_20lq-mq._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/ssr/lib_cline-projects_ts_13_hbdd._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/ssr/lib_grok-projects_ts_0rc-d0o._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/lib_ori-projects_ts_04tofqo._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/lib_qwen-projects_ts_0w3i9o7._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +2 -2
  139. package/.next/standalone/.next/server/chunks/ssr/src_hooks_builtin-policies_ts_09j2ndl._.js +1 -1
  140. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  141. package/.next/standalone/.next/server/pages/404.html +1 -1
  142. package/.next/standalone/.next/server/pages/500.html +1 -1
  143. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/server-reference-manifest.json +19 -19
  145. package/.next/standalone/.next/static/chunks/{0ollg-nnu3t3e.js → 00gv0v91mycm-.js} +1 -1
  146. package/.next/standalone/.next/static/chunks/{354-n7p7labpn.js → 01hvwwrhvbzyh.js} +1 -1
  147. package/.next/standalone/.next/static/chunks/0hzmxwb2pvk5p.js +6 -0
  148. package/.next/standalone/.next/static/chunks/{0nm11ysn0153h.js → 0j884dwnwtyrt.js} +1 -1
  149. package/.next/standalone/.next/static/chunks/0mr9dg3bnloa1.js +1 -0
  150. package/.next/standalone/.next/static/chunks/0qn9khv0oo9ex.js +1 -0
  151. package/.next/standalone/.next/static/chunks/{2xm5mj1d21b4n.js → 1_2jsatfuthrw.js} +1 -1
  152. package/.next/standalone/.next/static/chunks/1_bxotmf9qngs.js +1 -0
  153. package/.next/standalone/.next/static/chunks/1eyl7fzkmnkf_.js +1 -0
  154. package/.next/standalone/.next/static/chunks/{42yfkhekx440s.js → 1po3lirgk2riw.js} +1 -1
  155. package/.next/standalone/.next/static/chunks/{40lpt2o2b283e.js → 2bnf_4pgyk1rq.js} +1 -1
  156. package/.next/standalone/.next/static/chunks/{1a6u7l3giejch.js → 2bvwsyu6x__ia.js} +1 -1
  157. package/.next/standalone/.next/static/chunks/{3l36d73kj18zw.js → 3_--3ibia6ba1.js} +1 -1
  158. package/.next/standalone/.next/static/chunks/3gf1jg-5m-u1t.css +2 -0
  159. package/.next/standalone/.next/static/chunks/{3pibxnbhjza7n.js → 3ws7eljkq25wg.js} +1 -1
  160. package/.next/standalone/.next/static/chunks/{turbopack-2x-o099q64i8h.js → turbopack-18qf4jodtft6b.js} +1 -1
  161. package/.next/standalone/.qwen/settings.json +251 -0
  162. package/.next/standalone/app/project/[name]/page.tsx +24 -4
  163. package/.next/standalone/assets/logos/cline.png +0 -0
  164. package/.next/standalone/assets/logos/grok-dark.svg +1 -0
  165. package/.next/standalone/assets/logos/grok-light.svg +1 -0
  166. package/.next/standalone/assets/logos/ori-dark.svg +1 -0
  167. package/.next/standalone/assets/logos/ori-light.svg +1 -0
  168. package/.next/standalone/assets/logos/qwen.svg +1 -0
  169. package/.next/standalone/lib/cli-registry.ts +33 -1
  170. package/.next/standalone/lib/cline-projects.ts +155 -0
  171. package/.next/standalone/lib/cline-sessions.ts +268 -0
  172. package/.next/standalone/lib/download-session.ts +37 -0
  173. package/.next/standalone/lib/grok-projects.ts +123 -0
  174. package/.next/standalone/lib/grok-sessions.ts +355 -0
  175. package/.next/standalone/lib/ori-projects.ts +141 -0
  176. package/.next/standalone/lib/ori-sessions.ts +221 -0
  177. package/.next/standalone/lib/projects.ts +27 -3
  178. package/.next/standalone/lib/qwen-projects.ts +106 -0
  179. package/.next/standalone/lib/qwen-sessions.ts +313 -0
  180. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  181. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  182. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +1 -1
  183. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +1 -1
  184. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +1 -1
  185. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +5 -5
  186. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  187. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  188. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  189. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  190. package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +2 -2
  191. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  192. package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +17 -4
  193. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  194. package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +1 -1
  195. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  196. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  197. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  198. package/.next/standalone/node_modules/next/package.json +10 -10
  199. package/.next/standalone/package.json +11 -11
  200. package/.next/standalone/sdk/python/uv.lock +29 -29
  201. package/.next/standalone/server.js +1 -1
  202. package/README.md +38 -7
  203. package/bin/failproofai.mjs +24 -7
  204. package/dist/cli.mjs +20313 -17756
  205. package/dist/worker.mjs +8521 -6768
  206. package/lib/cli-registry.ts +33 -1
  207. package/lib/cline-projects.ts +155 -0
  208. package/lib/cline-sessions.ts +268 -0
  209. package/lib/download-session.ts +37 -0
  210. package/lib/grok-projects.ts +123 -0
  211. package/lib/grok-sessions.ts +355 -0
  212. package/lib/ori-projects.ts +141 -0
  213. package/lib/ori-sessions.ts +221 -0
  214. package/lib/projects.ts +27 -3
  215. package/lib/qwen-projects.ts +106 -0
  216. package/lib/qwen-sessions.ts +313 -0
  217. package/package.json +11 -11
  218. package/src/audit/cli-adapters/cline.ts +50 -0
  219. package/src/audit/cli-adapters/grok.ts +70 -0
  220. package/src/audit/cli-adapters/index.ts +24 -0
  221. package/src/audit/cli-adapters/ori.ts +55 -0
  222. package/src/audit/cli-adapters/qwen.ts +71 -0
  223. package/src/hooks/batch-expand.ts +380 -0
  224. package/src/hooks/batch-fanout.ts +142 -0
  225. package/src/hooks/builtin-policies.ts +6 -4
  226. package/src/hooks/enforcement-capability.ts +97 -0
  227. package/src/hooks/handler.ts +61 -5
  228. package/src/hooks/harness-cli.ts +3 -1
  229. package/src/hooks/integrations.ts +756 -2
  230. package/src/hooks/normalize-cli-payload.ts +126 -0
  231. package/src/hooks/policy-evaluator.ts +297 -6
  232. package/src/hooks/resolve-transcript-path.ts +10 -0
  233. package/src/hooks/risk-patterns.ts +26 -0
  234. package/src/hooks/tool-name-canonicalize.ts +64 -0
  235. package/src/hooks/types.ts +533 -2
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1le9jqc._.js +0 -3
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1p-qi2t._.js +0 -5
  238. package/.next/standalone/.next/server/chunks/_1-akg6w._.js +0 -3
  239. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00-s7h8._.js +0 -3
  240. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__190won8._.js +0 -3
  241. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ctpynv._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1sc84bb._.js +0 -3
  243. package/.next/standalone/.next/static/chunks/03slu0c8_71y7.js +0 -1
  244. package/.next/standalone/.next/static/chunks/1-_zkmnm-jwei.js +0 -1
  245. package/.next/standalone/.next/static/chunks/1r9676mkvihto.js +0 -1
  246. package/.next/standalone/.next/static/chunks/30pct5s734jua.js +0 -6
  247. package/.next/standalone/.next/static/chunks/40nr6ehj4p3cw.css +0 -2
  248. package/.next/standalone/.next/static/chunks/41b5ptaocvi_l.js +0 -1
  249. /package/.next/standalone/.next/static/{JBYgkXkA1PS48m9P_hKNw → qJx3mbOQV-5ElrcRb4Sp7}/_buildManifest.js +0 -0
  250. /package/.next/standalone/.next/static/{JBYgkXkA1PS48m9P_hKNw → qJx3mbOQV-5ElrcRb4Sp7}/_clientMiddlewareManifest.js +0 -0
  251. /package/.next/standalone/.next/static/{JBYgkXkA1PS48m9P_hKNw → qJx3mbOQV-5ElrcRb4Sp7}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -30,7 +30,7 @@ before they execute.
30
30
 
31
31
  ## Supported harnesses
32
32
 
33
- Twelve harnesses in two classes are supported: ten coding CLIs, plus two
33
+ Sixteen harnesses in two classes are supported: fourteen coding CLIs, plus two
34
34
  gateways: Hermes, OpenClaw. The policy API and session history are shared; which
35
35
  events can block varies by harness.
36
36
 
@@ -38,9 +38,10 @@ Agents that run in none of them report through the [Python SDK](https://docs.bef
38
38
  which gives you tracing, sessions and audits. Enforcement there needs a hook in
39
39
  your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map it.
40
40
 
41
- <!-- A 6-column table instead of inline <img> runs: table columns never re-wrap,
42
- so the grid stays 2×6 at any window width (scrolling on very narrow screens
43
- instead of collapsing into ragged orphan rows). -->
41
+ <!-- A 7-column table instead of inline <img> runs: table columns never re-wrap,
42
+ so the grid stays 2×7 at any window width (scrolling on very narrow screens
43
+ instead of collapsing into ragged orphan rows). Kept at exactly two full
44
+ rows — 14 CLIs is 7×2, where 6 columns would leave a two-cell orphan row. -->
44
45
  <table align="center">
45
46
  <tr>
46
47
  <td align="center" width="96">
@@ -72,6 +73,8 @@ your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map i
72
73
  </picture>
73
74
  </a>
74
75
  </td>
76
+ </tr>
77
+ <tr>
75
78
  <td align="center" width="96">
76
79
  <a href="https://opencode.ai/" title="OpenCode">
77
80
  <picture>
@@ -88,8 +91,14 @@ your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map i
88
91
  </picture>
89
92
  </a>
90
93
  </td>
91
- </tr>
92
- <tr>
94
+ <td align="center" width="96">
95
+ <a href="https://grok.com" title="grok CLI (xAI)">
96
+ <picture>
97
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logos/grok-dark.svg" />
98
+ <img src="assets/logos/grok-light.svg" alt="grok CLI" width="56" height="56" />
99
+ </picture>
100
+ </a>
101
+ </td>
93
102
  <td align="center" width="96">
94
103
  <a href="https://hermes-agent.nousresearch.com/" title="Hermes (hermes-agent)">
95
104
  <picture>
@@ -98,6 +107,8 @@ your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map i
98
107
  </picture>
99
108
  </a>
100
109
  </td>
110
+ </tr>
111
+ <tr>
101
112
  <td align="center" width="96">
102
113
  <a href="https://openclaw.ai/" title="OpenClaw (openclaw gateway)">
103
114
  <img src="assets/logos/openclaw.svg" alt="OpenClaw" width="56" height="56" />
@@ -121,6 +132,8 @@ your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map i
121
132
  <img src="assets/logos/antigravity.svg" alt="Antigravity CLI" width="56" height="56" />
122
133
  </a>
123
134
  </td>
135
+ </tr>
136
+ <tr>
124
137
  <td align="center" width="96">
125
138
  <a href="https://goose-docs.ai/" title="Goose (codename goose)">
126
139
  <picture>
@@ -129,6 +142,24 @@ your own runtime — [talk to us](mailto:support@befailproof.ai) and we'll map i
129
142
  </picture>
130
143
  </a>
131
144
  </td>
145
+ <td align="center" width="96">
146
+ <a href="https://github.com/QwenLM/qwen-code" title="Qwen Code (qwen)">
147
+ <img src="assets/logos/qwen.svg" alt="Qwen Code" width="56" height="56" />
148
+ </a>
149
+ </td>
150
+ <td align="center" width="96">
151
+ <a href="https://openrouter.ai/docs/guides/ori/harness" title="Ori (OpenRouter)">
152
+ <picture>
153
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logos/ori-dark.svg" />
154
+ <img src="assets/logos/ori-light.svg" alt="Ori" width="56" height="56" />
155
+ </picture>
156
+ </a>
157
+ </td>
158
+ <td align="center" width="96">
159
+ <a href="https://github.com/cline/cline" title="Cline">
160
+ <img src="assets/logos/cline.png" alt="Cline" width="56" height="56" />
161
+ </a>
162
+ </td>
132
163
  </tr>
133
164
  </table>
134
165
 
@@ -276,7 +307,7 @@ own cluster is available on the Enterprise plan.
276
307
  |---|---|
277
308
  | [Quickstart](https://docs.befailproof.ai/start/quickstart) | Install, connect a harness, see the first run |
278
309
  | [Concepts](https://docs.befailproof.ai/start/concepts) | How the hook system works |
279
- | [Supported harnesses](https://docs.befailproof.ai/reference/harnesses) | All 12, and what each one can enforce |
310
+ | [Supported harnesses](https://docs.befailproof.ai/reference/harnesses) | All 16, and what each one can enforce |
280
311
 
281
312
  | Observe | |
282
313
  |---|---|
@@ -76,6 +76,19 @@ let lastSubcommand = null;
76
76
  // with the right event name. Mirrors the cli_install_failure / cli_uninstall_failure
77
77
  // pattern below for parity. Cleared back to null after the success track.
78
78
  let lastPolicyAction = null;
79
+ /**
80
+ * Every CLI `policies --install/--uninstall/list --cli` accepts.
81
+ *
82
+ * ONE list, referenced from all three flag parsers below. It used to be three
83
+ * hardcoded copies, and they drifted: grok and qwen were added to the `--hook
84
+ * --cli` validation and to INTEGRATION_TYPES, but not here, so a real
85
+ * `policies --install --cli grok` was rejected outright while every unit test
86
+ * passed. __tests__/hooks/integrations.test.ts asserts this equals
87
+ * INTEGRATION_TYPES so the next CLI cannot repeat it.
88
+ */
89
+ const INSTALLABLE_CLIS = ["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose", "grok", "qwen", "ori", "cline"];
90
+ const VALID_CLIS_USAGE = `Missing value(s) for --cli. Usage: --cli ${INSTALLABLE_CLIS.join(" ")} (or any subset)`;
91
+
79
92
  async function track(name, props) {
80
93
  try {
81
94
  if (!_telemetry) {
@@ -121,7 +134,7 @@ const hookIdx = args.indexOf("--hook");
121
134
  if (hookIdx >= 0) {
122
135
  if (!args[hookIdx + 1]) {
123
136
  console.error("Error: Missing event type after --hook");
124
- console.error("Usage: failproofai --hook <event> [--cli <claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose>]");
137
+ console.error("Usage: failproofai --hook <event> [--cli <claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose|grok|qwen|ori|cline>]");
125
138
  process.exit(1);
126
139
  }
127
140
  const eventType = args[hookIdx + 1];
@@ -143,6 +156,10 @@ if (hookIdx >= 0) {
143
156
  || cliArg === "devin"
144
157
  || cliArg === "antigravity"
145
158
  || cliArg === "goose"
159
+ || cliArg === "grok"
160
+ || cliArg === "qwen"
161
+ || cliArg === "ori"
162
+ || cliArg === "cline"
146
163
  )
147
164
  ? cliArg
148
165
  : "claude";
@@ -408,7 +425,7 @@ async function runCli() {
408
425
  label: "options",
409
426
  entries: [
410
427
  ["--hook <event>", "PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStop, SessionStart, SessionEnd, PreCompact, Notification, PermissionRequest"],
411
- ["--cli <name>", "claude, codex, copilot, cursor, opencode, pi, hermes, openclaw, factory, devin, antigravity, goose. Defaults to claude. It selects which payload shape to expect: each CLI names its events and tool arguments differently, and failproofai canonicalizes them."],
428
+ ["--cli <name>", "claude, codex, copilot, cursor, opencode, pi, hermes, openclaw, factory, devin, antigravity, goose, ori. Defaults to claude. It selects which payload shape to expect: each CLI names its events and tool arguments differently, and failproofai canonicalizes them."],
412
429
  ],
413
430
  },
414
431
  {
@@ -1669,7 +1686,7 @@ async function runCli() {
1669
1686
  }
1670
1687
 
1671
1688
  // --cli accepts one or more space-separated values, optionally repeated.
1672
- const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
1689
+ const VALID_CLIS = new Set(INSTALLABLE_CLIS);
1673
1690
  const cliFlagValues = [];
1674
1691
  const cliConsumedIdxs = new Set();
1675
1692
  const cliFlagIdxs = rest.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
@@ -1871,7 +1888,7 @@ async function runCli() {
1871
1888
  // --cli claude codex copilot
1872
1889
  // --cli claude --cli codex
1873
1890
  // Values are consumed greedily until the next flag or end of argv.
1874
- const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
1891
+ const VALID_CLIS = new Set(INSTALLABLE_CLIS);
1875
1892
  const cliFlagValues = [];
1876
1893
  const cliConsumedIdxs = new Set();
1877
1894
  const cliFlagIdxs = subArgs.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
@@ -1888,7 +1905,7 @@ async function runCli() {
1888
1905
  consumed++;
1889
1906
  }
1890
1907
  if (consumed === 0) {
1891
- throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi hermes openclaw (or any subset)");
1908
+ throw new CliError(VALID_CLIS_USAGE);
1892
1909
  }
1893
1910
  }
1894
1911
 
@@ -1960,7 +1977,7 @@ async function runCli() {
1960
1977
  }
1961
1978
 
1962
1979
  // --cli accepts one or more space-separated values; same parser as install.
1963
- const VALID_CLIS = new Set(["claude", "codex", "copilot", "cursor", "opencode", "pi", "hermes", "openclaw", "factory", "devin", "antigravity", "goose"]);
1980
+ const VALID_CLIS = new Set(INSTALLABLE_CLIS);
1964
1981
  const cliFlagValues = [];
1965
1982
  const cliConsumedIdxs = new Set();
1966
1983
  const cliFlagIdxs = subArgs.map((a, i) => (a === "--cli" ? i : -1)).filter((i) => i >= 0);
@@ -1977,7 +1994,7 @@ async function runCli() {
1977
1994
  consumed++;
1978
1995
  }
1979
1996
  if (consumed === 0) {
1980
- throw new CliError("Missing value(s) for --cli. Usage: --cli claude codex copilot cursor opencode pi hermes openclaw (or any subset)");
1997
+ throw new CliError(VALID_CLIS_USAGE);
1981
1998
  }
1982
1999
  }
1983
2000