failproofai 1.0.0-beta.5 → 1.0.0-beta.6

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 (367) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +2 -1
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/routes-manifest.json +6 -0
  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 +3 -1
  9. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  15. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  17. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page.js +3 -1
  20. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  25. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  30. package/.next/standalone/.next/server/app/api/audit/invite/route.js +3 -2
  31. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/audit/run/route.js +4 -3
  33. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/audit/status/route.js +1 -1
  35. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/auth/login-request/route.js +2 -1
  37. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +3 -2
  39. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/auth/logout/route.js +3 -2
  41. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/auth/reminder/route.js +3 -2
  43. package/.next/standalone/.next/server/app/api/auth/reminder/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/auth/status/route.js +3 -2
  45. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +1 -1
  47. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  49. package/.next/standalone/.next/server/app/audit/page.js +5 -3
  50. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/index.html +1 -1
  53. package/.next/standalone/.next/server/app/index.rsc +15 -15
  54. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  55. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  56. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  57. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  58. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  59. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  60. package/.next/standalone/.next/server/app/page.js +3 -1
  61. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +10 -10
  64. package/.next/standalone/.next/server/app/policies/page.js +4 -2
  65. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  68. package/.next/standalone/.next/server/app/project/[name]/page.js +4 -2
  69. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  72. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  73. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +6 -4
  74. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  77. package/.next/standalone/.next/server/app/projects/page.js +4 -2
  78. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  81. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +18 -0
  82. package/.next/standalone/.next/server/app/settings/page/next-font-manifest.json +6 -0
  83. package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  84. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +53 -0
  85. package/.next/standalone/.next/server/app/settings/page.js +18 -0
  86. package/.next/standalone/.next/server/app/settings/page.js.map +5 -0
  87. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -0
  88. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  89. package/.next/standalone/.next/server/app-paths-manifest.json +2 -1
  90. package/.next/standalone/.next/server/chunks/{[externals]__1nl3dvw._.js → [externals]__0r-zamh._.js} +2 -2
  91. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06hexd0._.js +3 -0
  92. package/.next/standalone/.next/server/chunks/[root-of-the-server]__094p1f1._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0xu5z._.js +1 -1
  94. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ed01_d._.js +3 -0
  95. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g0vcwt._.js +3 -0
  96. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0h3lfmp._.js → [root-of-the-server]__0ky_n0r._.js} +2 -2
  97. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__18d-9oi._.js → [root-of-the-server]__0lk_935._.js} +2 -2
  98. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1p7s8-d._.js → [root-of-the-server]__0pbp9fe._.js} +2 -2
  99. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q-v9z2._.js +1 -1
  100. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__10oa-v9._.js → [root-of-the-server]__0v2fpxe._.js} +2 -2
  101. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0sb_5m8._.js → [root-of-the-server]__131ebum._.js} +3 -3
  102. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0-dh5jy._.js → [root-of-the-server]__1_ps0jw._.js} +2 -2
  103. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0l4vuqm._.js → [root-of-the-server]__1a7i2q4._.js} +1 -1
  104. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ibjy5x._.js +3 -0
  105. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1iny24d._.js +3 -0
  106. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tvn4wf._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tyedjt._.js +3 -0
  108. package/.next/standalone/.next/server/chunks/_0lxbzdq._.js +5 -0
  109. package/.next/standalone/.next/server/chunks/_1zuiiy3._.js +5 -0
  110. package/.next/standalone/.next/server/chunks/lib_telemetry_ts_0dctyyw._.js +5 -0
  111. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_17k9e3w.js +5 -5
  112. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06bp_fg._.js +5 -0
  114. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__074qmkp._.js +3 -0
  115. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0spkm68._.js +10 -10
  116. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1_a_gwn._.js +3 -0
  117. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1a2hcb_._.js +3 -0
  118. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1e7-pa7._.js +3 -0
  119. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rtdfof._.js → [root-of-the-server]__1rdruw4._.js} +1 -1
  120. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1rv-sc9._.js +3 -0
  121. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1tyf0tc._.js +5 -0
  122. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1u-wx42._.js +4 -0
  123. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1v185mo._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rag5dg._.js → [root-of-the-server]__1yw368c._.js} +2 -2
  125. package/.next/standalone/.next/server/chunks/ssr/_0-yi74u._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/_04mekdy._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/ssr/_0igtyj5._.js +3 -0
  128. package/.next/standalone/.next/server/chunks/ssr/_0r-dsre._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/_0rjgfln._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/ssr/_0se484m._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/ssr/_0uz7o9y._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/ssr/_11_p9y8._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/_1fahg9e._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/_1gmzkwj._.js +5 -0
  135. package/.next/standalone/.next/server/chunks/ssr/_1w8sola._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/_1w_6p9g._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +2 -2
  138. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +2 -2
  140. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dwo94s.js +4 -0
  141. package/.next/standalone/.next/server/chunks/ssr/src_hooks_builtin-policies_ts_09j2ndl._.js +3 -0
  142. package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589g._.js +5 -0
  143. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  144. package/.next/standalone/.next/server/middleware.js +2 -2
  145. package/.next/standalone/.next/server/pages/404.html +1 -1
  146. package/.next/standalone/.next/server/pages/500.html +1 -1
  147. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/server-reference-manifest.json +54 -12
  149. package/.next/standalone/.next/static/chunks/{2cqk4a9s893oy.js → 0_2n13i94rnw5.js} +1 -1
  150. package/.next/standalone/.next/static/chunks/1bm0q12hgs22l.css +2 -0
  151. package/.next/standalone/.next/static/chunks/1v1gqvpjk62jm.js +1 -0
  152. package/.next/standalone/.next/static/chunks/{1bw4dfzflelcv.js → 23557z4e6dtsr.js} +1 -1
  153. package/.next/standalone/.next/static/chunks/28zkwzu50puki.js +1 -0
  154. package/.next/standalone/.next/static/chunks/2uvhw57mf9lg_.css +2 -0
  155. package/.next/standalone/.next/static/chunks/3081gykdubv8b.js +1 -0
  156. package/.next/standalone/.next/static/chunks/{2k285z07qce47.js → 34fa65k0cldkj.js} +1 -1
  157. package/.next/standalone/.next/static/chunks/{34sjdw8lv46e3.js → 35v07j9gc1pvr.js} +2 -2
  158. package/.next/standalone/.next/static/chunks/{1bkynffp3q1f7.js → 3f_939wi3kfnx.js} +22 -22
  159. package/.next/standalone/.next/static/chunks/{2v1rpzrh2i1wv.js → 3p1vpm2_-tfwm.js} +1 -1
  160. package/.next/standalone/.next/static/chunks/{0cr85wuc9gc9k.js → 3rbpw_waieafm.js} +1 -1
  161. package/.next/standalone/.next/static/chunks/40ffnfpkeyvb0.js +1 -0
  162. package/.next/standalone/app/actions/get-hooks-config.ts +2 -1
  163. package/.next/standalone/app/actions/get-scheduled-audit.ts +70 -0
  164. package/.next/standalone/app/actions/update-scheduled-audit.ts +44 -0
  165. package/.next/standalone/app/api/audit/run/route.ts +28 -0
  166. package/.next/standalone/app/api/audit/status/route.ts +13 -1
  167. package/.next/standalone/app/api/auth/status/route.ts +1 -1
  168. package/.next/standalone/app/audit/_components/auth-dialog.css +159 -0
  169. package/.next/standalone/app/audit/_components/auth-dialog.tsx +3 -0
  170. package/.next/standalone/app/audit/audit-styles.css +6 -149
  171. package/.next/standalone/app/settings/page.tsx +31 -0
  172. package/.next/standalone/app/settings/settings-client.tsx +488 -0
  173. package/.next/standalone/components/navbar.tsx +2 -0
  174. package/.next/standalone/lib/auth/api-server-client.ts +2 -3
  175. package/.next/standalone/lib/auth/auth-store.ts +4 -4
  176. package/.next/standalone/lib/codex-sessions.ts +2 -1
  177. package/.next/standalone/lib/dashboard-host.ts +101 -0
  178. package/.next/standalone/lib/install-check.ts +22 -7
  179. package/.next/standalone/lib/pi-sessions.ts +99 -14
  180. package/.next/standalone/lib/telemetry-enabled.ts +54 -0
  181. package/.next/standalone/lib/telemetry-id.ts +52 -1
  182. package/.next/standalone/lib/telemetry.ts +8 -4
  183. package/.next/standalone/node_modules/react/cjs/react.development.js +1 -1
  184. package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
  185. package/.next/standalone/node_modules/react/package.json +3 -3
  186. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  187. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  188. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
  189. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
  190. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
  191. package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  192. package/.next/standalone/node_modules/react-dom/package.json +4 -4
  193. package/.next/standalone/package.json +7 -6
  194. package/.next/standalone/proxy.ts +89 -1
  195. package/.next/standalone/server.js +1 -1
  196. package/bin/failproofai.mjs +197 -80
  197. package/dist/cli.mjs +17636 -15284
  198. package/dist/worker.mjs +1620 -257
  199. package/lib/auth/api-server-client.ts +2 -3
  200. package/lib/auth/auth-store.ts +4 -4
  201. package/lib/codex-sessions.ts +2 -1
  202. package/lib/dashboard-host.ts +101 -0
  203. package/lib/install-check.ts +22 -7
  204. package/lib/pi-sessions.ts +99 -14
  205. package/lib/telemetry-enabled.ts +54 -0
  206. package/lib/telemetry-id.ts +52 -1
  207. package/lib/telemetry.ts +8 -4
  208. package/package.json +7 -6
  209. package/scripts/install-telemetry.mjs +8 -1
  210. package/scripts/launch.ts +25 -3
  211. package/scripts/parse-script-args.ts +17 -1
  212. package/scripts/prune-standalone.mjs +20 -0
  213. package/scripts/translate-docs/readme-translator.ts +163 -4
  214. package/scripts/validate-mdx.ts +153 -13
  215. package/src/audit/audit-lock.ts +285 -0
  216. package/src/audit/audit-schedule.ts +111 -0
  217. package/src/audit/cache.ts +18 -4
  218. package/src/audit/cli-adapters/goose.ts +2 -1
  219. package/src/audit/cli-adapters/hermes.ts +28 -10
  220. package/src/audit/cli.ts +191 -35
  221. package/src/audit/dashboard-cache.ts +2 -1
  222. package/src/hooks/builtin-policies.ts +100 -3
  223. package/src/hooks/cloud-connection.ts +160 -14
  224. package/src/hooks/cloud-enrollment-cli.ts +119 -21
  225. package/src/hooks/cloud-enrollment.ts +87 -17
  226. package/src/hooks/cloud-introspect.ts +147 -0
  227. package/src/hooks/cloud-managed-policies.ts +33 -2
  228. package/src/hooks/collector-config.ts +25 -43
  229. package/src/hooks/configure-wizard.ts +696 -318
  230. package/src/hooks/custom-hooks-loader.ts +125 -11
  231. package/src/hooks/daemon-client.ts +83 -17
  232. package/src/hooks/daemon-download.ts +54 -2
  233. package/src/hooks/daemon-service.ts +595 -27
  234. package/src/hooks/first-run-gate.ts +39 -0
  235. package/src/hooks/fp-config.ts +497 -0
  236. package/src/hooks/fp-home.ts +342 -0
  237. package/src/hooks/fp-reset.ts +332 -0
  238. package/src/hooks/handler.ts +42 -1
  239. package/src/hooks/hook-activity-store.ts +35 -20
  240. package/src/hooks/hook-logger.ts +2 -1
  241. package/src/hooks/hook-telemetry.ts +5 -1
  242. package/src/hooks/hooks-config.ts +4 -3
  243. package/src/hooks/loader-utils.ts +166 -5
  244. package/src/hooks/manager.ts +5 -4
  245. package/src/hooks/onboarding-lock.ts +119 -0
  246. package/src/hooks/policy-types.ts +0 -7
  247. package/src/hooks/session-pause-cli.ts +15 -13
  248. package/src/hooks/session-pause.ts +36 -4
  249. package/src/hooks/setup-state.ts +256 -0
  250. package/src/hooks/tui.ts +4 -4
  251. package/src/hooks/worker-server.ts +53 -1
  252. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f8nu8d._.js +0 -3
  253. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0szqzl8._.js +0 -3
  254. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17g9wh7._.js +0 -3
  255. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19120tr._.js +0 -3
  256. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1fwl2mz._.js +0 -3
  257. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1myjm-d._.js +0 -3
  258. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rhmvod._.js +0 -3
  259. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02r5bgf._.js +0 -4
  260. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__094nop3._.js +0 -3
  261. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e8sjqm._.js +0 -4
  262. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lkzqax._.js +0 -4
  263. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ls0gsr._.js +0 -4
  264. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n_uvv0._.js +0 -3
  265. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qucxyj._.js +0 -4
  266. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0u02miy._.js +0 -4
  267. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__14dd6h8._.js +0 -3
  268. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1gak4pd._.js +0 -3
  269. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1j4u3yd._.js +0 -4
  270. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1zqz4v8._.js +0 -4
  271. package/.next/standalone/.next/server/chunks/ssr/_1m_p7pi._.js +0 -3
  272. package/.next/standalone/.next/server/chunks/ssr/node_modules_html-to-image_es_index_12c_2cz.js +0 -3
  273. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1ezd2jf._.js +0 -5
  274. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1tnuifj._.js +0 -5
  275. package/.next/standalone/.next/static/chunks/0h7auy7hzjyhw.js +0 -1
  276. package/.next/standalone/.next/static/chunks/1tp9dex23zs8y.js +0 -1
  277. package/.next/standalone/.next/static/chunks/2s9g1dsde_ts1.js +0 -1
  278. package/.next/standalone/.next/static/chunks/3i27c3hcriawq.css +0 -1
  279. package/.next/standalone/.next/static/chunks/3zdwnnthucs_1.css +0 -2
  280. package/.next/standalone/Cargo.lock +0 -2222
  281. package/.next/standalone/Cargo.toml +0 -9
  282. package/.next/standalone/crates/CLOUD_POLICIES.md +0 -136
  283. package/.next/standalone/crates/PROTOCOL.md +0 -122
  284. package/.next/standalone/crates/failproofaid/Cargo.toml +0 -25
  285. package/.next/standalone/crates/failproofaid/src/cloud_client.rs +0 -484
  286. package/.next/standalone/crates/failproofaid/src/cloud_policies.rs +0 -921
  287. package/.next/standalone/crates/failproofaid/src/lock.rs +0 -81
  288. package/.next/standalone/crates/failproofaid/src/main.rs +0 -639
  289. package/.next/standalone/crates/failproofaid/src/paths.rs +0 -201
  290. package/.next/standalone/crates/failproofaid/src/server.rs +0 -502
  291. package/.next/standalone/crates/failproofaid/src/worker.rs +0 -400
  292. package/.next/standalone/crates/failproofaid/tests/daemon_e2e.rs +0 -241
  293. package/.next/standalone/crates/fpai-collect/Cargo.toml +0 -43
  294. package/.next/standalone/crates/fpai-collect/src/config.rs +0 -420
  295. package/.next/standalone/crates/fpai-collect/src/cursor.rs +0 -520
  296. package/.next/standalone/crates/fpai-collect/src/delivery.rs +0 -472
  297. package/.next/standalone/crates/fpai-collect/src/filetail.rs +0 -487
  298. package/.next/standalone/crates/fpai-collect/src/health.rs +0 -369
  299. package/.next/standalone/crates/fpai-collect/src/lib.rs +0 -34
  300. package/.next/standalone/crates/fpai-collect/src/redact.rs +0 -516
  301. package/.next/standalone/crates/fpai-collect/src/sources/claude/mod.rs +0 -279
  302. package/.next/standalone/crates/fpai-collect/src/sources/claude/transform.rs +0 -619
  303. package/.next/standalone/crates/fpai-collect/src/sources/codex/mod.rs +0 -156
  304. package/.next/standalone/crates/fpai-collect/src/sources/codex/transform.rs +0 -715
  305. package/.next/standalone/crates/fpai-collect/src/sources/copilot/mod.rs +0 -158
  306. package/.next/standalone/crates/fpai-collect/src/sources/copilot/transform.rs +0 -512
  307. package/.next/standalone/crates/fpai-collect/src/sources/goose/mod.rs +0 -511
  308. package/.next/standalone/crates/fpai-collect/src/sources/goose/transform.rs +0 -586
  309. package/.next/standalone/crates/fpai-collect/src/sources/hermes/mod.rs +0 -318
  310. package/.next/standalone/crates/fpai-collect/src/sources/hermes/transform.rs +0 -579
  311. package/.next/standalone/crates/fpai-collect/src/sources/hooks/mod.rs +0 -314
  312. package/.next/standalone/crates/fpai-collect/src/sources/hooks/transform.rs +0 -448
  313. package/.next/standalone/crates/fpai-collect/src/sources/mod.rs +0 -23
  314. package/.next/standalone/crates/fpai-collect/src/sources/openclaw/mod.rs +0 -176
  315. package/.next/standalone/crates/fpai-collect/src/sources/openclaw/transform.rs +0 -500
  316. package/.next/standalone/crates/fpai-collect/src/sources/opencode/mod.rs +0 -315
  317. package/.next/standalone/crates/fpai-collect/src/sources/opencode/transform.rs +0 -493
  318. package/.next/standalone/crates/fpai-collect/src/sources/pi/mod.rs +0 -201
  319. package/.next/standalone/crates/fpai-collect/src/sources/pi/transform.rs +0 -533
  320. package/.next/standalone/crates/fpai-collect/src/spool.rs +0 -535
  321. package/.next/standalone/crates/fpai-collect/src/sqlitepoll.rs +0 -390
  322. package/.next/standalone/crates/fpai-collect/src/supervisor.rs +0 -423
  323. package/.next/standalone/crates/fpai-collect/src/uploader.rs +0 -600
  324. package/.next/standalone/crates/fpai-collect/tests/claude_source.rs +0 -739
  325. package/.next/standalone/crates/fpai-collect/tests/claude_subagents.rs +0 -394
  326. package/.next/standalone/crates/fpai-collect/tests/codex_source.rs +0 -976
  327. package/.next/standalone/crates/fpai-collect/tests/config.rs +0 -286
  328. package/.next/standalone/crates/fpai-collect/tests/copilot_source.rs +0 -1020
  329. package/.next/standalone/crates/fpai-collect/tests/delivery.rs +0 -281
  330. package/.next/standalone/crates/fpai-collect/tests/goose_source.rs +0 -1009
  331. package/.next/standalone/crates/fpai-collect/tests/hermes_source.rs +0 -1130
  332. package/.next/standalone/crates/fpai-collect/tests/hooks_source.rs +0 -622
  333. package/.next/standalone/crates/fpai-collect/tests/openclaw_source.rs +0 -855
  334. package/.next/standalone/crates/fpai-collect/tests/opencode_source.rs +0 -1478
  335. package/.next/standalone/crates/fpai-collect/tests/pi_source.rs +0 -1192
  336. package/.next/standalone/crates/fpai-collect/tests/supervisor.rs +0 -290
  337. package/.next/standalone/crates/fpai-collect/tests/uploader.rs +0 -506
  338. package/.next/standalone/crates/fpai-ipc/Cargo.toml +0 -16
  339. package/.next/standalone/crates/fpai-ipc/src/envelope.rs +0 -175
  340. package/.next/standalone/crates/fpai-ipc/src/framing.rs +0 -177
  341. package/.next/standalone/crates/fpai-ipc/src/lib.rs +0 -10
  342. package/.next/standalone/crates/fpai-ipc/src/peer.rs +0 -80
  343. package/.next/standalone/docker-hook-sync/Dockerfile +0 -79
  344. package/.next/standalone/docker-hook-sync/entrypoint.sh +0 -109
  345. package/.next/standalone/integration-suite/Dockerfile +0 -47
  346. package/.next/standalone/integration-suite/README.md +0 -129
  347. package/.next/standalone/integration-suite/canary-policies.mjs +0 -45
  348. package/.next/standalone/integration-suite/capture-tokens.sh +0 -48
  349. package/.next/standalone/integration-suite/ci-entrypoint.sh +0 -179
  350. package/.next/standalone/integration-suite/inject-tokens.sh +0 -44
  351. package/.next/standalone/integration-suite/install-clis.sh +0 -136
  352. package/.next/standalone/integration-suite/probe-cli.sh +0 -248
  353. package/.next/standalone/integration-suite/report.js +0 -120
  354. package/.next/standalone/integration-suite/run.sh +0 -159
  355. package/.next/standalone/openclaw-plugin/index.js +0 -223
  356. package/.next/standalone/openclaw-plugin/openclaw.plugin.json +0 -6
  357. package/.next/standalone/openclaw-plugin/package.json +0 -12
  358. package/.next/standalone/osv-scanner.toml +0 -17
  359. package/.next/standalone/pi-extension/index.ts +0 -524
  360. package/.next/standalone/pi-extension/package.json +0 -12
  361. package/.next/standalone/postcss.config.mjs +0 -8
  362. package/.next/standalone/readme-arch-hq.gif +0 -0
  363. package/.next/standalone/rust-toolchain.toml +0 -4
  364. package/src/auth/cli.ts +0 -371
  365. /package/.next/standalone/.next/static/{LOuwMmfomO6hQYfMQYs4K → Ptn8aBQl_cnNgOd0ebyv0}/_buildManifest.js +0 -0
  366. /package/.next/standalone/.next/static/{LOuwMmfomO6hQYfMQYs4K → Ptn8aBQl_cnNgOd0ebyv0}/_clientMiddlewareManifest.js +0 -0
  367. /package/.next/standalone/.next/static/{LOuwMmfomO6hQYfMQYs4K → Ptn8aBQl_cnNgOd0ebyv0}/_ssgManifest.js +0 -0
@@ -1,314 +0,0 @@
1
- //! The hook-activity source.
2
- //!
3
- //! Tails `~/.failproofai/cache/hook-activity/*.jsonl` and turns each row into
4
- //! AgentEye hook events. This is the capability `agenteye-collector`
5
- //! structurally cannot have: failproofai already sits in the hook path of
6
- //! every supported agent CLI, and nothing else on the machine does.
7
- //!
8
- //! # One source covers every CLI
9
- //!
10
- //! The store is CLI-agnostic — each row carries its own `integration` — so
11
- //! twelve agents are covered by one tailer rather than twelve. Coverage is a
12
- //! function of where failproofai's hooks are installed, not of anything here.
13
- //!
14
- //! # Session ids line up for free
15
- //!
16
- //! Measured on a real machine: 25 of 43 hook sessions share an exact session id
17
- //! with a Claude transcript, and a live Copilot run produced a hook `sessionId`
18
- //! identical to both its resume id and the id inside its own transcript. So
19
- //! hook events land on the same AgentEye session as the tool calls around them
20
- //! with no mapping table, which is what makes them useful rather than a
21
- //! separate stream nobody correlates.
22
- //!
23
- //! # Rotation
24
- //!
25
- //! The store appends to `current.jsonl` and, every 25 rows, RENAMES it to
26
- //! `page-<ts>-<seq>.jsonl` before creating a fresh `current.jsonl`. Cursors are
27
- //! keyed by inode precisely so that rename is a no-op for us — see
28
- //! [`crate::cursor`]. The store's other files (`current.count`, `stats.json`,
29
- //! `current.lock`) are excluded by the `.jsonl` check.
30
- //!
31
- //! # A known limit of the aggregated mode
32
- //!
33
- //! Under [`HooksVerbosity::Decisions`], `allow` rows are rolled up per
34
- //! `(session, event, tool, minute)`. That roll-up is computed per poll pass, so
35
- //! it is only idempotent when a re-read covers the same rows.
36
- //!
37
- //! In normal operation it is: cursors advance only after the pass's events are
38
- //! durably spooled, so a crash re-reads exactly what it read before and
39
- //! produces byte-identical buckets, which the server's content-hash dedup
40
- //! collapses. Measured against a 20,392-row corpus, a second run with cursors
41
- //! intact emits nothing at all.
42
- //!
43
- //! What is NOT idempotent is a re-read that sees a *different* number of rows
44
- //! for a bucket than a previous one did — losing the cursor file after a pass,
45
- //! say. The bucket is then emitted twice with different counts, and because the
46
- //! payloads differ the server stores both rather than collapsing them, so that
47
- //! minute's allow total is overstated. Deny and instruct events are unaffected:
48
- //! they are emitted per row with an offset-derived id, so a re-read reproduces
49
- //! them exactly.
50
- //!
51
- //! Aggregating a stream cannot avoid this in general — a bucket is only final
52
- //! once no more rows can land in it, which is not knowable while tailing. Use
53
- //! [`HooksVerbosity::All`] where exact allow counts matter more than volume.
54
-
55
- pub mod transform;
56
-
57
- use std::collections::BTreeMap;
58
- use std::path::{Path, PathBuf};
59
-
60
- use tokio::io::{AsyncReadExt, AsyncSeekExt};
61
-
62
- use crate::config::HooksVerbosity;
63
- use crate::cursor::{CursorStore, FileCursor, identity};
64
- use crate::spool::{DEFAULT_MAX_BATCH_BYTES, SpoolWriter, is_batch_file};
65
- use crate::supervisor::{Shutdown, TaskError};
66
- use transform::{AllowBucket, HookRow, bucket_key};
67
-
68
- /// How often the store is re-scanned. Hook rows are written by short-lived
69
- /// processes many times a minute; this is frequent enough to feel live without
70
- /// scanning 800 files constantly.
71
- const POLL_INTERVAL: std::time::Duration = std::time::Duration::from_secs(5);
72
-
73
- /// Most bytes read from one file per poll. Bounds memory when a backlog is
74
- /// being worked through.
75
- const MAX_READ_BYTES: u64 = 8 * 1024 * 1024;
76
-
77
- /// Run the source until shutdown.
78
- pub async fn run(
79
- store_dir: PathBuf,
80
- state_dir: PathBuf,
81
- spool_dir: PathBuf,
82
- verbosity: HooksVerbosity,
83
- environment: String,
84
- machine_id: Option<String>,
85
- sd: Shutdown,
86
- ) -> Result<(), TaskError> {
87
- if verbosity == HooksVerbosity::Off {
88
- // Nothing to do, but returning Ok would end the task; idle instead so
89
- // the supervisor's task list stays a straightforward reflection of
90
- // what is configured.
91
- while !sd.is_set() {
92
- sd.sleep(POLL_INTERVAL).await;
93
- }
94
- return Ok(());
95
- }
96
-
97
- let mut cursors = CursorStore::load(state_dir.clone());
98
- tracing::info!(
99
- dir = %store_dir.display(),
100
- resumed = cursors.len(),
101
- ?verbosity,
102
- "hook-activity source started"
103
- );
104
-
105
- loop {
106
- match poll_once(
107
- &store_dir,
108
- &spool_dir,
109
- &mut cursors,
110
- verbosity,
111
- &environment,
112
- machine_id.as_deref(),
113
- )
114
- .await
115
- {
116
- Ok(events) => crate::health::report_poll(
117
- "hooks",
118
- store_dir.exists(),
119
- events,
120
- cursors.len() as u64,
121
- ),
122
- Err(err) => {
123
- // Logged and retried on the next tick rather than returned: one
124
- // unreadable page must not restart the source and re-scan
125
- // everything.
126
- tracing::warn!(%err, "hook-activity poll failed; retrying next tick");
127
- crate::health::report_error("hooks", &err.to_string());
128
- }
129
- }
130
- if !sd.sleep(POLL_INTERVAL).await {
131
- return Ok(());
132
- }
133
- }
134
- }
135
-
136
- /// One pass over the store.
137
- async fn poll_once(
138
- store_dir: &Path,
139
- spool_dir: &Path,
140
- cursors: &mut CursorStore,
141
- verbosity: HooksVerbosity,
142
- environment: &str,
143
- machine_id: Option<&str>,
144
- ) -> Result<u64, TaskError> {
145
- let files = list_pages(store_dir).await;
146
- if files.is_empty() {
147
- return Ok(0);
148
- }
149
-
150
- let mut writer = SpoolWriter::new(
151
- spool_dir.to_path_buf(),
152
- DEFAULT_MAX_BATCH_BYTES,
153
- "hooks",
154
- "activity",
155
- )
156
- .with_machine_id(machine_id.map(str::to_string));
157
- // Allow rows are rolled up across the whole pass, so a bucket spanning two
158
- // files still emits once.
159
- let mut buckets: BTreeMap<transform::BucketKey, AllowBucket> = BTreeMap::new();
160
- let mut advanced: Vec<FileCursor> = Vec::new();
161
- let mut emitted = 0u64;
162
-
163
- for path in files {
164
- let Ok(meta) = tokio::fs::metadata(&path).await else {
165
- continue;
166
- };
167
- let (dev, inode) = identity(&meta);
168
- let size = meta.len();
169
-
170
- let mut offset = cursors
171
- .resume(dev, inode, &path)
172
- .map(|c| c.offset)
173
- .unwrap_or(0);
174
-
175
- // The store never rewrites a page, so a shrink means the file was
176
- // replaced under a reused inode. Re-read rather than seek past the end.
177
- if size < offset {
178
- tracing::warn!(file = %path.display(), size, offset, "file shrank; re-reading from the start");
179
- offset = 0;
180
- }
181
- if size == offset {
182
- continue;
183
- }
184
-
185
- let read_end = size.min(offset + MAX_READ_BYTES);
186
- let Ok(chunk) = read_range(&path, offset, read_end).await else {
187
- continue;
188
- };
189
-
190
- // Consume only up to the last newline: the final line may still be
191
- // being written, and half a JSON object parses as nothing.
192
- let Some(last_nl) = chunk.iter().rposition(|b| *b == b'\n') else {
193
- continue;
194
- };
195
- let usable = &chunk[..=last_nl];
196
-
197
- let mut line_start = offset;
198
- for line in usable.split_inclusive(|b| *b == b'\n') {
199
- let this_offset = line_start;
200
- line_start += line.len() as u64;
201
-
202
- let Ok(text) = std::str::from_utf8(line) else {
203
- continue;
204
- };
205
- let text = text.trim();
206
- if text.is_empty() {
207
- continue;
208
- }
209
- let Ok(row) = serde_json::from_str::<HookRow>(text) else {
210
- continue;
211
- };
212
-
213
- // An observe-mode row is an `allow` by construction — the verdict
214
- // was evaluated and discarded — so the roll-up would sweep it up
215
- // and erase the would-be verdict, which is the entire measurement
216
- // a trial exists to produce. Emit those exactly.
217
- let aggregate =
218
- verbosity == HooksVerbosity::Decisions && row.is_allow() && !row.has_observation();
219
- if aggregate {
220
- if let Some(key) = bucket_key(&row) {
221
- buckets
222
- .entry(key.clone())
223
- .or_insert_with(|| AllowBucket {
224
- session_id: key.0.clone(),
225
- agent_id: transform::agent_id(&row),
226
- event_name: key.1.clone(),
227
- tool_name: key.2.clone(),
228
- minute_ms: key.3,
229
- count: 0,
230
- total_duration_ms: 0.0,
231
- max_duration_ms: 0.0,
232
- attribution: key.4.clone(),
233
- })
234
- .add(&row);
235
- }
236
- continue;
237
- }
238
-
239
- for event in transform::to_events(&row, this_offset, environment) {
240
- writer.push(event).await.map_err(io_err)?;
241
- emitted += 1;
242
- }
243
- }
244
-
245
- advanced.push(FileCursor {
246
- path: path.clone(),
247
- dev,
248
- inode,
249
- offset: offset + usable.len() as u64,
250
- size_seen: size,
251
- // The hook store is a flat row log, not a session transcript: it
252
- // has no per-session lifecycle and carries no cross-line state, so
253
- // every field the tailing engine uses stays at its default here.
254
- ..Default::default()
255
- });
256
- }
257
-
258
- for bucket in buckets.values() {
259
- if let Some(event) = bucket.to_event(environment) {
260
- writer.push(event).await.map_err(io_err)?;
261
- emitted += 1;
262
- }
263
- }
264
-
265
- // Flush BEFORE advancing cursors. A crash between the two costs a re-ship,
266
- // which the server dedups on a content hash; the other order loses the
267
- // events outright.
268
- writer.flush().await.map_err(io_err)?;
269
-
270
- for c in advanced {
271
- cursors.set(c);
272
- }
273
- cursors.retain_existing();
274
- cursors.save().map_err(io_err)?;
275
- Ok(emitted)
276
- }
277
-
278
- fn io_err(e: std::io::Error) -> TaskError {
279
- TaskError::from(e.to_string())
280
- }
281
-
282
- /// Every `.jsonl` in the store, oldest first.
283
- ///
284
- /// Oldest first so a backlog is shipped in the order it happened; the
285
- /// `.jsonl` filter is what excludes `current.count`, `stats.json` and the
286
- /// lock file without naming them.
287
- async fn list_pages(dir: &Path) -> Vec<PathBuf> {
288
- let Ok(mut rd) = tokio::fs::read_dir(dir).await else {
289
- return Vec::new();
290
- };
291
- let mut out: Vec<(std::time::SystemTime, PathBuf)> = Vec::new();
292
- while let Ok(Some(entry)) = rd.next_entry().await {
293
- let path = entry.path();
294
- if !is_batch_file(&path) {
295
- continue;
296
- }
297
- let modified = entry
298
- .metadata()
299
- .await
300
- .and_then(|m| m.modified())
301
- .unwrap_or(std::time::UNIX_EPOCH);
302
- out.push((modified, path));
303
- }
304
- out.sort_by_key(|(t, _)| *t);
305
- out.into_iter().map(|(_, p)| p).collect()
306
- }
307
-
308
- async fn read_range(path: &Path, from: u64, to: u64) -> std::io::Result<Vec<u8>> {
309
- let mut f = tokio::fs::File::open(path).await?;
310
- f.seek(std::io::SeekFrom::Start(from)).await?;
311
- let mut buf = vec![0u8; (to - from) as usize];
312
- f.read_exact(&mut buf).await?;
313
- Ok(buf)
314
- }