failproofai 1.0.12-beta.2 → 1.0.13-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 (374) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +13 -13
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js +2 -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 +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  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 +4 -3
  18. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  22. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  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/_tree.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/api/audit/invite/route.js +6 -5
  26. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/audit/run/route.js +27 -26
  28. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/audit/status/route.js +4 -3
  30. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/auth/login-request/route.js +6 -5
  32. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +6 -5
  34. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/auth/logout/route.js +6 -5
  36. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/auth/status/route.js +6 -5
  38. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +4 -3
  40. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
  42. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/audit/page.js +7 -6
  44. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/index.html +1 -1
  47. package/.next/standalone/.next/server/app/index.rsc +3 -3
  48. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  49. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  50. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  51. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  53. package/.next/standalone/.next/server/app/page.js +6 -5
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  57. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  58. package/.next/standalone/.next/server/app/policies/page.js +5 -4
  59. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  62. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  63. package/.next/standalone/.next/server/app/project/[name]/page.js +21 -20
  64. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  67. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  68. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  69. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +10 -9
  70. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  73. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  74. package/.next/standalone/.next/server/app/projects/page.js +7 -6
  75. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +2 -2
  78. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  79. package/.next/standalone/.next/server/app/settings/page.js +6 -5
  80. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/chunks/{[externals]__0vt9i6fqinjne._.js → [externals]__1h83uo-b1b6-2._.js} +1 -1
  83. package/.next/standalone/.next/server/chunks/[externals]__214wn4wh2x79y._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/{[externals]__1rlxpymm37wel._.js → [root-of-the-server]__031qp1lkow_kc._.js} +2 -2
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__038kwryp970nh._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_hsnj_a2mvl_._.js → [root-of-the-server]__03s1za0hn71yp._.js} +2 -2
  87. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wg9dk8x8bnau._.js → [root-of-the-server]__07a0sa6fuw5_b._.js} +2 -2
  88. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08atcie7jzswm._.js +3 -0
  89. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfudh2_4f._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +3 -0
  91. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0spt0kv8azrpl._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12kq3x-h7t7i1._.js → [root-of-the-server]__0yvyp5b7jmlc4._.js} +2 -2
  93. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02vous7mpi2xm._.js → [root-of-the-server]__145vo_drnuvas._.js} +2 -2
  94. package/.next/standalone/.next/server/chunks/{[externals]__0h0p9dmv_e7r7._.js → [root-of-the-server]__1a2d0ewycsp6k._.js} +2 -2
  95. package/.next/standalone/.next/server/chunks/{[externals]__1_407huhlmj1m._.js → [root-of-the-server]__1am_1tz0o0aqz._.js} +2 -2
  96. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03i5o4a840guz._.js → [root-of-the-server]__1gxfzuvpyw30j._.js} +1 -1
  97. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1j6kfp0vzu5rw._.js +3 -0
  98. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1l0ayum_hqqsw._.js +3 -0
  99. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1lh8c0mmhdrbj._.js +3 -0
  100. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1o9rznwc0w7og._.js +3 -0
  101. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f_4g-vazrvxv._.js → [root-of-the-server]__1o_622x0fglpr._.js} +1 -1
  102. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1oclamblhzhrf._.js +68 -0
  103. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v1-l-83czzsr._.js +63 -0
  104. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1a5zkndjwlc13._.js → [root-of-the-server]__1wwi53kkqhnfi._.js} +1 -1
  105. package/.next/standalone/.next/server/chunks/{_1y590mjzpkbos._.js → _02sa8fcu9_9xo._.js} +2 -2
  106. package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/_1-2owkp-1_987._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/_13ltj8a9z92o8._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/_15k37au70vjvg._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/_18rfu4__wjhwb._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
  113. package/.next/standalone/.next/server/chunks/_1fz8m31sndkcu._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/_1ogwigfb0163w._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_0oo58a7rymoxh.js +3 -0
  117. package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_1jp9ij0_ddtgk.js +3 -0
  118. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oigsgz07._.js +2 -2
  119. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p77cu37y._.js +2 -2
  120. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ffu2-38y03ic._.js → [root-of-the-server]__021vebe-4il8s._.js} +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__075uro8t92s0_._.js +14 -0
  123. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/{[externals]__12qr51qgrrt6o._.js → [root-of-the-server]__097i34ct1o88x._.js} +2 -2
  125. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0alpzjn3450sr._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0aup10z2o8zc1._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bioghlkjf7s7._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01j58mdcdw0vn._.js → [root-of-the-server]__0ed1zh4scn7-k._.js} +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0naevg4bcoh54._.js → [root-of-the-server]__0evgy902m9h5e._.js} +2 -2
  131. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__00l2u6j86cb8y._.js → [root-of-the-server]__0mhtkwwx1pxcq._.js} +2 -2
  133. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nhm28v58ty9z._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vse4qi496ol-._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__17r4zrwanhp6r._.js → [root-of-the-server]__0yb3u36xjy3b9._.js} +1 -1
  137. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0g8b0kyorya-t._.js → [root-of-the-server]__0ywj2u6ovfm_5._.js} +1 -1
  138. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0zn1d4blhd3bu._.js → [root-of-the-server]__10v5cyxvj64j4._.js} +1 -1
  140. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__190xwrr5zrfi3._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1vx7o8ukefudh._.js → [root-of-the-server]__1guwlpkyurdn9._.js} +1 -1
  145. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1k96jctukf65_._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1sj-wn2jp6va5._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1vofkb2oq7p7e._.js +1 -1
  149. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1s2-ck3k3rsoo._.js → [root-of-the-server]__20dt376-socef._.js} +1 -1
  150. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1lnfv02ucky7m._.js → [root-of-the-server]__2158020r_amn9._.js} +1 -1
  151. package/.next/standalone/.next/server/chunks/ssr/{_1fw0_nzkae5ao._.js → _0bc4f4quq6w47._.js} +2 -2
  152. package/.next/standalone/.next/server/chunks/ssr/_0bseae9u7g98r._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/_0mouhaflye1ro._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/ssr/_0ouu886szh6yj._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
  157. package/.next/standalone/.next/server/chunks/ssr/_1_ozgifqv1ssi._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
  159. package/.next/standalone/.next/server/chunks/ssr/_20hn4gn87nsjc._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
  161. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
  162. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
  163. package/.next/standalone/.next/server/chunks/ssr/app_components_project-list_tsx_1ke6anr0vt64h._.js +1 -1
  164. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
  165. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/{node_modules_09s4n108bqreq._.js → node_modules_0ptcnmeaxvd_a._.js} +22 -2
  168. package/.next/standalone/.next/server/chunks/ssr/node_modules_@opentelemetry_api_build_esm_index_0ntwr8lzj6p2i.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1fv03uigni8s5.js → node_modules_html-to-image_es_index_1jwgv0pf-gy96.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0bz67659f5z-3._.js +32 -0
  171. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +3 -3
  172. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0ocrceo0c9psx._.js +32 -0
  173. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1alv566ojmz5j._.js +32 -0
  174. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1khq67j4vo9y4._.js +3 -0
  175. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_0ftnv26hg1lry._.js +3 -0
  176. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dagmbznysrc2._.js +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuznb72p7z._.js +2 -2
  178. package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
  179. package/.next/standalone/.next/server/middleware-build-manifest.js +13 -13
  180. package/.next/standalone/.next/server/middleware.js +2 -2
  181. package/.next/standalone/.next/server/pages/404.html +1 -1
  182. package/.next/standalone/.next/server/pages/500.html +1 -1
  183. package/.next/standalone/.next/server/preview-props.json +3 -3
  184. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
  186. package/.next/standalone/.next/static/chunks/0cbom4-ijx_a_.js +1 -0
  187. package/.next/standalone/.next/static/chunks/0u5weo5jdn2s8.js +1 -0
  188. package/.next/standalone/.next/static/chunks/{1c_jf6g5wnslk.js → 18-icoqze51kl.js} +1 -1
  189. package/.next/standalone/.next/static/chunks/2d-u90dt4-8rd.js +6 -0
  190. package/.next/standalone/.next/static/chunks/2n-bzb7pxe7hu.js +1 -0
  191. package/.next/standalone/.next/static/chunks/{2o6d37j425uci.js → 2zc7lg-jq353g.js} +1 -1
  192. package/.next/standalone/.next/static/chunks/{0tbm3vjm62h-2.js → 33djjf12bhcsv.js} +1 -1
  193. package/.next/standalone/.next/static/chunks/{42xptz88mtq3x.js → 38u_i3j5funpi.js} +1 -1
  194. package/.next/standalone/.next/static/chunks/{20py8k1gd_i1m.js → 3symuj7t4js-c.js} +1 -1
  195. package/.next/standalone/.next/static/chunks/{0ay__-d2h1xb5.js → 3vzut6zpdrvtx.js} +1 -1
  196. package/.next/standalone/.next/static/chunks/{063al_q720fkj.js → 3xgxl1s_in776.js} +2 -2
  197. package/.next/standalone/SECURITY.md +20 -4
  198. package/.next/standalone/fp-cloud-cli/CHANGELOG.md +34 -1
  199. package/.next/standalone/fp-cloud-cli/README.md +120 -0
  200. package/.next/standalone/fp-cloud-cli/fp_cli/_version.py +1 -1
  201. package/.next/standalone/fp-cloud-cli/fp_cli/app.py +15 -1
  202. package/.next/standalone/fp-cloud-cli/fp_cli/client.py +198 -7
  203. package/.next/standalone/fp-cloud-cli/fp_cli/cloud_output.py +523 -0
  204. package/.next/standalone/fp-cloud-cli/fp_cli/commands/_cloud.py +45 -0
  205. package/.next/standalone/fp-cloud-cli/fp_cli/commands/_write.py +3 -1
  206. package/.next/standalone/fp-cloud-cli/fp_cli/commands/account_cmds.py +171 -0
  207. package/.next/standalone/fp-cloud-cli/fp_cli/commands/agent_cmds.py +80 -7
  208. package/.next/standalone/fp-cloud-cli/fp_cli/commands/alerts_cmds.py +23 -0
  209. package/.next/standalone/fp-cloud-cli/fp_cli/commands/audits_cmds.py +2 -0
  210. package/.next/standalone/fp-cloud-cli/fp_cli/commands/contracts_cmds.py +67 -0
  211. package/.next/standalone/fp-cloud-cli/fp_cli/commands/dashboards_cmds.py +159 -0
  212. package/.next/standalone/fp-cloud-cli/fp_cli/commands/evaluators_cmds.py +380 -0
  213. package/.next/standalone/fp-cloud-cli/fp_cli/commands/events_cmds.py +14 -1
  214. package/.next/standalone/fp-cloud-cli/fp_cli/commands/incidents_cmds.py +82 -6
  215. package/.next/standalone/fp-cloud-cli/fp_cli/commands/list_cmds.py +4 -1
  216. package/.next/standalone/fp-cloud-cli/fp_cli/commands/orgs_cmds.py +17 -0
  217. package/.next/standalone/fp-cloud-cli/fp_cli/commands/policies_cmds.py +143 -1
  218. package/.next/standalone/fp-cloud-cli/fp_cli/commands/queries_cmds.py +70 -0
  219. package/.next/standalone/fp-cloud-cli/fp_cli/commands/sentiment_cmds.py +49 -0
  220. package/.next/standalone/fp-cloud-cli/fp_cli/commands/sessions_cmds.py +95 -1
  221. package/.next/standalone/fp-cloud-cli/fp_cli/commands/settings_cmds.py +2 -0
  222. package/.next/standalone/fp-cloud-cli/fp_cli/commands/usage_cmds.py +21 -1
  223. package/.next/standalone/fp-cloud-cli/fp_cli/commands/users_cmds.py +14 -0
  224. package/.next/standalone/fp-cloud-cli/fp_cli/errors.py +3 -0
  225. package/.next/standalone/fp-cloud-cli/fp_cli/evaluator_spec.py +266 -0
  226. package/.next/standalone/fp-cloud-cli/fp_cli/output.py +187 -81
  227. package/.next/standalone/fp-cloud-cli/fp_cli/theme.py +21 -24
  228. package/.next/standalone/fp-cloud-cli/skill/SKILL.md +124 -23
  229. package/.next/standalone/fp-cloud-cli/skill/agents/openai.yaml +2 -1
  230. package/.next/standalone/fp-cloud-cli/skill/references/commands.md +168 -16
  231. package/.next/standalone/fp-cloud-cli/tests/fake_cloud_smoke.py +312 -0
  232. package/.next/standalone/fp-cloud-cli/tests/test_cloud_account.py +125 -0
  233. package/.next/standalone/fp-cloud-cli/tests/test_cloud_agent.py +253 -0
  234. package/.next/standalone/fp-cloud-cli/tests/test_cloud_human_views.py +287 -0
  235. package/.next/standalone/fp-cloud-cli/tests/test_cloud_observability.py +116 -0
  236. package/.next/standalone/fp-cloud-cli/tests/test_cloud_transport.py +141 -0
  237. package/.next/standalone/fp-cloud-cli/tests/test_commands.py +3 -3
  238. package/.next/standalone/fp-cloud-cli/tests/test_dashboards_agent.py +3 -3
  239. package/.next/standalone/fp-cloud-cli/tests/test_evaluator_authoring.py +449 -0
  240. package/.next/standalone/fp-cloud-cli/tests/test_facets.py +1 -1
  241. package/.next/standalone/fp-cloud-cli/tests/test_help_table_coverage.py +15 -0
  242. package/.next/standalone/fp-cloud-cli/tests/test_operator.py +1 -1
  243. package/.next/standalone/fp-cloud-cli/tests/test_orgs.py +1 -1
  244. package/.next/standalone/fp-cloud-cli/tests/test_output.py +37 -37
  245. package/.next/standalone/fp-cloud-cli/tests/test_round4_behaviour.py +144 -0
  246. package/.next/standalone/fp-cloud-cli/tests/test_screen_language.py +80 -0
  247. package/.next/standalone/fp-cloud-cli/tests/test_session_reevaluate.py +33 -0
  248. package/.next/standalone/fp-cloud-cli/tests/test_staging_parity.py +198 -0
  249. package/.next/standalone/fp-cloud-cli/tests/test_whoami.py +1 -1
  250. package/.next/standalone/fp-cloud-cli/uv.lock +4 -4
  251. package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
  252. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  253. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  254. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +24 -24
  255. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +26 -26
  256. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
  257. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
  258. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  259. package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +41 -40
  260. package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
  261. package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-validation.js +814 -0
  262. package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +1 -799
  263. package/.next/standalone/node_modules/next/dist/server/base-server.js +39 -5
  264. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  265. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  266. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  267. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  268. package/.next/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +4 -43
  269. package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch-symbol.js +13 -0
  270. package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +3 -7
  271. package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +3 -3
  272. package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +77 -12
  273. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  274. package/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +12 -0
  275. package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +30 -14
  276. package/.next/standalone/node_modules/next/dist/server/next-server.js +10 -11
  277. package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +29 -23
  278. package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +85 -8
  279. package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
  280. package/.next/standalone/node_modules/next/dist/server/web/adapter.js +124 -65
  281. package/.next/standalone/node_modules/next/dist/server/web/forward-trace-context.js +102 -0
  282. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  283. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  284. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  285. package/.next/standalone/node_modules/next/package.json +10 -10
  286. package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
  287. package/.next/standalone/node_modules/react/package.json +1 -1
  288. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  289. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  290. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +31 -27
  291. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +33 -27
  292. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +38 -30
  293. package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  294. package/.next/standalone/node_modules/react-dom/package.json +2 -2
  295. package/.next/standalone/package.json +10 -10
  296. package/.next/standalone/sdk/python/CHANGELOG.md +8 -4
  297. package/.next/standalone/sdk/python/failproofai_sdk/evaluator/source.py +2 -2
  298. package/.next/standalone/sdk/python/pyproject.toml +2 -7
  299. package/.next/standalone/sdk/python/skill/references/frameworks.md +0 -15
  300. package/.next/standalone/sdk/python/tests/test_docs.py +1 -4
  301. package/.next/standalone/sdk/python/tests/test_evaluator_source.py +1 -1
  302. package/.next/standalone/sdk/python/tests/test_packaging.py +4 -7
  303. package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +2 -13
  304. package/.next/standalone/sdk/python/uv.lock +43 -905
  305. package/.next/standalone/sdk/typescript/CHANGELOG.md +52 -0
  306. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +7 -7
  307. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +2 -2
  308. package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package-lock.json +7 -7
  309. package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package.json +1 -1
  310. package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package-lock.json +7 -7
  311. package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package.json +1 -1
  312. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package-lock.json +4 -4
  313. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package.json +1 -1
  314. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
  315. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
  316. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +3 -3
  317. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +3 -0
  318. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package-lock.json +4 -4
  319. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package.json +1 -1
  320. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +25 -25
  321. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package.json +1 -1
  322. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +34 -22
  323. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +3 -2
  324. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +10 -10
  325. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
  326. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/deno-npm.ts +1 -1
  327. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package-lock.json +7 -7
  328. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package.json +1 -1
  329. package/.next/standalone/server.js +1 -1
  330. package/README.md +0 -6
  331. package/dist/cli.mjs +87 -38
  332. package/dist/worker.mjs +73 -28
  333. package/hermes-plugin/plugin.yaml +1 -1
  334. package/openclaw-plugin/daemon-client.js +254 -0
  335. package/openclaw-plugin/hooks.js +187 -0
  336. package/openclaw-plugin/index.js +17 -211
  337. package/package.json +10 -10
  338. package/scripts/sync-agent-cli-harnesses-prompt.md +26 -31
  339. package/src/hooks/agent-skill.ts +3 -0
  340. package/src/hooks/enforcement-capability.ts +1 -1
  341. package/src/hooks/fp-home.ts +1 -1
  342. package/src/hooks/handler.ts +22 -3
  343. package/src/hooks/integrations.ts +5 -2
  344. package/src/hooks/semantic/intent.ts +127 -24
  345. package/src/hooks/semantic/jev-review.ts +21 -2
  346. package/.next/standalone/.codex/hooks.json +0 -76
  347. package/.next/standalone/.cursor/hooks.json +0 -47
  348. package/.next/standalone/.factory/hooks.json +0 -112
  349. package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +0 -3
  350. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +0 -3
  351. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +0 -3
  352. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t9ufnv5hi2hq._.js +0 -327
  353. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1aaw59g-5uty7._.js +0 -322
  354. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +0 -3
  355. package/.next/standalone/.next/server/chunks/ssr/[externals]__0ilfh9mfnzsth._.js +0 -3
  356. package/.next/standalone/.next/server/chunks/ssr/[externals]__0ohnuzsaozaca._.js +0 -3
  357. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pwj2h2efe5f-._.js +0 -14
  358. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js +0 -271
  359. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_158jo-9mwvgad._.js +0 -291
  360. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_19r82zsxo2jj1._.js +0 -291
  361. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +0 -3
  362. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js +0 -23
  363. package/.next/standalone/.next/static/chunks/1my3-5p47t7r-.js +0 -1
  364. package/.next/standalone/.next/static/chunks/21hckpmsc4g70.js +0 -6
  365. package/.next/standalone/.next/static/chunks/2hmex93ppj1ke.js +0 -1
  366. package/.next/standalone/.next/static/chunks/40oworn_-x12p.js +0 -1
  367. package/.next/standalone/.opencode/opencode.json +0 -4
  368. package/.next/standalone/.opencode/plugins/failproofai.mjs +0 -210
  369. package/.next/standalone/.pi/settings.json +0 -5
  370. package/.next/standalone/node_modules/react/cjs/react.development.js +0 -1330
  371. package/scripts/dev-hook.mjs +0 -333
  372. /package/.next/standalone/.next/static/{LHCtFxVG0mdvd4lsXAOFC → 1n2dyfTQb0MDajeqlipJy}/_buildManifest.js +0 -0
  373. /package/.next/standalone/.next/static/{LHCtFxVG0mdvd4lsXAOFC → 1n2dyfTQb0MDajeqlipJy}/_clientMiddlewareManifest.js +0 -0
  374. /package/.next/standalone/.next/static/{LHCtFxVG0mdvd4lsXAOFC → 1n2dyfTQb0MDajeqlipJy}/_ssgManifest.js +0 -0
@@ -81,6 +81,26 @@
81
81
  * Known limits.)
82
82
  *
83
83
  * Text inside a tool call claiming "the user approved this" is never consulted.
84
+ *
85
+ * WHOSE SESSION IT IS. Prompts are stored per AGENT PROFILE and session id
86
+ * (`sessions/<profile>/<sessionId>.json`), the profile being the runtime agent
87
+ * identity FailproofAI Cloud's agent targeting uses (`AgentIdentity`, read by
88
+ * the handler from the daemon's roster) — `<integration>.<instanceId>`, or the
89
+ * bare integration name when the profile has no rostered identity. Session ids
90
+ * are chosen by the harness, not by us, so two profiles can submit the same
91
+ * one; keyed by session id alone, a prompt typed into a profile a Cloud Jev
92
+ * deployment does NOT target could be read back as the stated intent of one it
93
+ * does, and clear a reviewable deny there. The hook path always names the
94
+ * profile on both sides (`captureIntent`'s `profile`, `readIntent`'s), so a
95
+ * prompt is only ever read by the profile it was typed into.
96
+ *
97
+ * The flat `sessions/<sessionId>.json` layout that came before is the store a
98
+ * caller that names NO profile still reads and writes (library and test use).
99
+ * The hook path never reads it: such a file cannot say which profile wrote it,
100
+ * so a pre-upgrade entry is ignored rather than guessed at, and expires under
101
+ * the six-hour sweep like any other. The cost is bounded and fail-closed: a
102
+ * session in flight across the upgrade judges with no stated intent until its
103
+ * next prompt is recorded.
84
104
  */
85
105
  import {
86
106
  chmodSync,
@@ -99,6 +119,7 @@ import { dirname, resolve } from "node:path";
99
119
  import { failproofaiHome, semanticDir } from "../fp-home";
100
120
  import type { IntegrationType } from "../types";
101
121
  import { MAX_USER_MESSAGE_CHARS, redactSecrets } from "./envelope";
122
+ import { validAgentIdentity, type AgentIdentity } from "../agent-targets";
102
123
 
103
124
  export const MAX_RECORDED_PROMPTS = 5;
104
125
  /** Older than this and a prompt no longer describes what the agent is doing. */
@@ -109,7 +130,51 @@ const MAX_CLOCK_SKEW_MS = 5 * 60 * 1000;
109
130
  const SESSION_ID_RE = /^[A-Za-z0-9._-]{1,128}$/;
110
131
 
111
132
  const sessionsDir = (): string => resolve(semanticDir(), "sessions");
112
- const intentFile = (sessionId: string): string => resolve(sessionsDir(), `${sessionId}.json`);
133
+
134
+ /**
135
+ * The agent profile a prompt belongs to: the harness, and the runtime agent
136
+ * identity the handler resolved for it (`readRuntimeAgentIdentity`) — the same
137
+ * identity Cloud Jev's agent targeting matches on. `agent` null or absent is a
138
+ * profile with no rostered identity, which targeting treats as "unknown" and
139
+ * which is kept apart from every rostered one.
140
+ */
141
+ export interface IntentProfile {
142
+ cli: string;
143
+ agent?: AgentIdentity | null;
144
+ }
145
+
146
+ /** A profile directory's name: `<integration>` or `<integration>.agt_<hex>`. */
147
+ const PROFILE_DIR_RE = /^[a-z]+(?:\.agt_[0-9a-f]{16,32})?$/;
148
+
149
+ /**
150
+ * The directory name a profile's prompts live under, or null when the profile
151
+ * cannot be named (an unknown harness): nothing is then recorded or read.
152
+ * Injective: integration names are lowercase letters and instance ids carry
153
+ * their own `agt_` prefix, so no two profiles share a directory.
154
+ */
155
+ export function intentProfileKey(profile: IntentProfile): string | null {
156
+ if (validAgentIdentity(profile.agent)) return `${profile.agent.integration}.${profile.agent.instanceId}`;
157
+ return isKnownCli(profile.cli) ? profile.cli : null;
158
+ }
159
+
160
+ /** Where one session's prompts are kept: the directory and the file in it. */
161
+ interface StoreSlot {
162
+ dir: string;
163
+ file: string;
164
+ }
165
+
166
+ /**
167
+ * The slot for `sessionId` under `profile`. No profile at all (`undefined`) is
168
+ * the flat, pre-profile layout — never used by the hook path (see the header).
169
+ * A profile that cannot be named has no slot.
170
+ */
171
+ function storeSlot(sessionId: string, profile: IntentProfile | undefined): StoreSlot | null {
172
+ if (profile === undefined) return { dir: sessionsDir(), file: resolve(sessionsDir(), `${sessionId}.json`) };
173
+ const key = intentProfileKey(profile);
174
+ if (key === null || !PROFILE_DIR_RE.test(key)) return null;
175
+ const dir = resolve(sessionsDir(), key);
176
+ return { dir, file: resolve(dir, `${sessionId}.json`) };
177
+ }
113
178
 
114
179
  /**
115
180
  * Group- or world-WRITE bits on a directory the store sits under. Anyone who
@@ -140,11 +205,11 @@ function modesAreMeaningful(): boolean {
140
205
  * (`fpai-collect`'s `create_dir_all`) and arrives at the umask, which on a
141
206
  * umask-002 box is 0775.
142
207
  */
143
- function storeDirChain(): string[] {
208
+ function storeDirChain(innermost: string = sessionsDir()): string[] {
144
209
  const home = resolve(failproofaiHome());
145
210
  const chain: string[] = [];
146
- let dir = sessionsDir();
147
- // Bounded: the chain is four deep, and a home that is not an ancestor (a
211
+ let dir = innermost;
212
+ // Bounded: the chain is five deep, and a home that is not an ancestor (a
148
213
  // layout change, a symlink) must not walk to the filesystem root.
149
214
  for (let i = 0; i < 8; i++) {
150
215
  chain.push(dir);
@@ -172,11 +237,12 @@ function storeDirChain(): string[] {
172
237
  * human's and could clear the four reviewable BLOCKING policies.
173
238
  *
174
239
  * Exported so `failproofai jev status` can report it the way it reports a
175
- * refused config.
240
+ * refused config. `innermost` is a profile's directory when the read is for
241
+ * one, so that directory is held to the same rule.
176
242
  */
177
- export function looseIntentStoreDir(): string | null {
243
+ export function looseIntentStoreDir(innermost?: string): string | null {
178
244
  if (!modesAreMeaningful()) return null;
179
- for (const dir of storeDirChain()) {
245
+ for (const dir of storeDirChain(innermost)) {
180
246
  let mode: number;
181
247
  try {
182
248
  mode = statSync(dir).mode & 0o777;
@@ -207,9 +273,9 @@ interface IntentFile {
207
273
  prompts: RecordedPrompt[];
208
274
  }
209
275
 
210
- function readIntentFile(sessionId: string): IntentFile {
276
+ function readIntentFile(slot: StoreSlot): IntentFile {
211
277
  try {
212
- const parsed = JSON.parse(readFileSync(intentFile(sessionId), "utf8")) as IntentFile;
278
+ const parsed = JSON.parse(readFileSync(slot.file, "utf8")) as IntentFile;
213
279
  return Array.isArray(parsed?.prompts) ? parsed : { prompts: [] };
214
280
  } catch {
215
281
  return { prompts: [] };
@@ -228,15 +294,14 @@ function readIntentFile(sessionId: string): IntentFile {
228
294
  * copies of one line. The replacement carries the new timestamp and the new
229
295
  * agent snapshot, so the entry stays the latest thing the human said.
230
296
  */
231
- function appendPrompt(sessionId: string, entry: RecordedPrompt): boolean {
297
+ function appendPrompt(slot: StoreSlot, entry: RecordedPrompt): boolean {
232
298
  try {
233
- const file = readIntentFile(sessionId);
299
+ const file = readIntentFile(slot);
234
300
  const last = file.prompts[file.prompts.length - 1];
235
301
  const kept = last && last.text === entry.text ? file.prompts.slice(0, -1) : file.prompts;
236
302
  file.prompts = [...kept, entry].slice(-MAX_RECORDED_PROMPTS);
237
- const dir = sessionsDir();
238
- mkdirSync(dir, { recursive: true, mode: 0o700 });
239
- const target = intentFile(sessionId);
303
+ mkdirSync(slot.dir, { recursive: true, mode: 0o700 });
304
+ const target = slot.file;
240
305
  const isNew = !fileExists(target);
241
306
  const tmp = `${target}.${process.pid}.tmp`;
242
307
  writeFileSync(tmp, JSON.stringify(file), { mode: 0o600 });
@@ -265,12 +330,31 @@ const SESSION_FILE_RE = /^[A-Za-z0-9._-]{1,128}\.json(?:\.\d+\.tmp)?$/;
265
330
  * file's mtime is its newest recorded prompt's, so every prompt in such a
266
331
  * file is already outside the window every read filters by and can never be
267
332
  * read again. Removing it loses nothing and keeps one-file-per-session from
268
- * growing without bound.
333
+ * growing without bound. Swept: the flat layout's files (pre-profile entries
334
+ * among them) and every profile directory's, one level down.
269
335
  */
270
336
  export function pruneExpiredSessions(now: number = Date.now()): number {
337
+ const root = sessionsDir();
338
+ let removed = pruneDir(root, now);
339
+ try {
340
+ for (const name of readdirSync(root)) {
341
+ if (!PROFILE_DIR_RE.test(name)) continue;
342
+ const dir = resolve(root, name);
343
+ try {
344
+ if (statSync(dir).isDirectory()) removed += pruneDir(dir, now);
345
+ } catch {
346
+ // Raced with something else: nothing to do.
347
+ }
348
+ }
349
+ } catch {
350
+ // No directory yet.
351
+ }
352
+ return removed;
353
+ }
354
+
355
+ function pruneDir(dir: string, now: number): number {
271
356
  let removed = 0;
272
357
  try {
273
- const dir = sessionsDir();
274
358
  for (const name of readdirSync(dir)) {
275
359
  if (!SESSION_FILE_RE.test(name)) continue;
276
360
  const path = resolve(dir, name);
@@ -301,11 +385,19 @@ export function pruneExpiredSessions(now: number = Date.now()): number {
301
385
  * leave half a secret the patterns no longer match. Never throws: losing intent
302
386
  * only means no override.
303
387
  */
304
- function recordPrompt(sessionId: string, prompt: string, agent: string | null, now: number): boolean {
388
+ function recordPrompt(
389
+ sessionId: string,
390
+ profile: IntentProfile | undefined,
391
+ prompt: string,
392
+ agent: string | null,
393
+ now: number,
394
+ ): boolean {
305
395
  if (!SESSION_ID_RE.test(sessionId)) return false;
306
396
  if (prompt.trim().length === 0) return false;
397
+ const slot = storeSlot(sessionId, profile);
398
+ if (!slot) return false;
307
399
  try {
308
- return appendPrompt(sessionId, { at: now, text: storable(prompt.trim()), agent: agent === null ? null : storable(agent) });
400
+ return appendPrompt(slot, { at: now, text: storable(prompt.trim()), agent: agent === null ? null : storable(agent) });
309
401
  } catch {
310
402
  return false;
311
403
  }
@@ -319,10 +411,12 @@ function recordPrompt(sessionId: string, prompt: string, agent: string | null, n
319
411
  * still asked, and judges with no stated intent, so no reviewable deny is
320
412
  * cleared on a prompt we cannot say is the owner's.
321
413
  */
322
- function livePrompts(sessionId: string | undefined, now: number): RecordedPrompt[] {
414
+ function livePrompts(sessionId: string | undefined, now: number, profile: IntentProfile | undefined): RecordedPrompt[] {
323
415
  if (!sessionId || !SESSION_ID_RE.test(sessionId)) return [];
324
- if (looseIntentStoreDir() !== null) return [];
325
- return readIntentFile(sessionId).prompts.filter(
416
+ const slot = storeSlot(sessionId, profile);
417
+ if (!slot) return [];
418
+ if (looseIntentStoreDir(slot.dir) !== null) return [];
419
+ return readIntentFile(slot).prompts.filter(
326
420
  (p) =>
327
421
  typeof p?.text === "string" &&
328
422
  typeof p.at === "number" &&
@@ -839,6 +933,13 @@ export interface CaptureEvent {
839
933
  cli: string;
840
934
  /** The stdin payload after `normalizeCliPayload`: the handler's `parsed`. */
841
935
  payload: Record<string, unknown>;
936
+ /**
937
+ * The agent profile the prompt was typed into. The hook path always sets it
938
+ * (the agent null when the profile has no rostered identity), and the prompt
939
+ * is then readable only under that same profile. Absent is the flat layout
940
+ * (see the header).
941
+ */
942
+ profile?: IntentProfile;
842
943
  }
843
944
 
844
945
  function isKnownCli(cli: string): cli is IntegrationType {
@@ -1167,7 +1268,7 @@ export function captureIntent(ev: CaptureEvent, now: number = Date.now()): void
1167
1268
  if (raw === null) return;
1168
1269
  const cleaned = cleanHumanTurn(raw);
1169
1270
  if (cleaned === null) return;
1170
- recordPrompt(sessionId, cleaned, lastAgentMessage(ev.transcriptPath), now);
1271
+ recordPrompt(sessionId, ev.profile, cleaned, lastAgentMessage(ev.transcriptPath), now);
1171
1272
  } catch {
1172
1273
  // Losing intent only means Jev judges without it.
1173
1274
  }
@@ -1177,13 +1278,15 @@ export function captureIntent(ev: CaptureEvent, now: number = Date.now()): void
1177
1278
  * What the human asked for recently (oldest first, at most
1178
1279
  * `MAX_RECORDED_PROMPTS`, none older than `INTENT_MAX_AGE_MS`) and the agent
1179
1280
  * message their latest prompt replied to — null when that prompt had none or
1180
- * nothing is recorded.
1281
+ * nothing is recorded. Read under `profile`, the one the prompts were captured
1282
+ * under; the hook path always passes it (see the header).
1181
1283
  */
1182
1284
  export function readIntent(
1183
1285
  sessionId?: string,
1184
1286
  now: number = Date.now(),
1287
+ profile?: IntentProfile,
1185
1288
  ): { userSaid: string[]; agentLastMessage: string | null } {
1186
- const prompts = livePrompts(sessionId, now);
1289
+ const prompts = livePrompts(sessionId, now, profile);
1187
1290
  const latest = prompts[prompts.length - 1];
1188
1291
  const agent = latest && typeof latest.agent === "string" && latest.agent.length > 0 ? latest.agent : null;
1189
1292
  return { userSaid: prompts.map((p) => p.text), agentLastMessage: agent };
@@ -111,7 +111,16 @@ const throttle: JevThrottle = jevThrottle;
111
111
  * for a call.
112
112
  */
113
113
  interface IntentStore {
114
- readIntent(sessionId?: string): { userSaid: string[]; agentLastMessage: string | null };
114
+ /**
115
+ * `profile` is required here, unlike in `intent.ts`: the hook path always
116
+ * reads under the agent profile the prompt was captured under, never the
117
+ * flat store, so one profile's prompt can never be another's intent.
118
+ */
119
+ readIntent(
120
+ sessionId: string | undefined,
121
+ now: number | undefined,
122
+ profile: intentStore.IntentProfile,
123
+ ): { userSaid: string[]; agentLastMessage: string | null };
115
124
  }
116
125
  const intentReader: IntentStore = intentStore;
117
126
 
@@ -168,6 +177,13 @@ export interface JevCallContext {
168
177
  permissionMode?: string;
169
178
  sessionId?: string;
170
179
  cli: string;
180
+ /**
181
+ * The runtime agent identity of the profile making the call (the handler's
182
+ * `readRuntimeAgentIdentity`; null when it has none). With `cli`, it names
183
+ * the intent store slot the human's prompts are read from, so they are the
184
+ * prompts typed into this profile and no other. Absent is read as null.
185
+ */
186
+ agent?: AgentIdentity | null;
171
187
  /**
172
188
  * Set when FailproofAI Cloud's Jev mode asks (CONTRACT C10.2): the call goes
173
189
  * to Cloud with this machine's id, and the deployment it was made under
@@ -467,7 +483,10 @@ export function startJevReview(cfg: JevConfig, call: JevCallContext): TwoTierRev
467
483
 
468
484
  let intent: ReturnType<IntentStore["readIntent"]>;
469
485
  try {
470
- intent = intentReader.readIntent(call.sessionId);
486
+ intent = intentReader.readIntent(call.sessionId, undefined, {
487
+ cli: call.cli,
488
+ agent: call.agent !== undefined ? call.agent : (call.cloud?.agent ?? null),
489
+ });
471
490
  } catch {
472
491
  intent = { userSaid: [], agentLastMessage: null };
473
492
  }
@@ -1,76 +0,0 @@
1
- {
2
- "hooks": {
3
- "SessionStart": [
4
- {
5
- "hooks": [
6
- {
7
- "type": "command",
8
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook SessionStart --cli codex",
9
- "timeout": 60,
10
- "__failproofai_hook__": true
11
- }
12
- ]
13
- }
14
- ],
15
- "PreToolUse": [
16
- {
17
- "hooks": [
18
- {
19
- "type": "command",
20
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PreToolUse --cli codex",
21
- "timeout": 60,
22
- "__failproofai_hook__": true
23
- }
24
- ]
25
- }
26
- ],
27
- "PermissionRequest": [
28
- {
29
- "hooks": [
30
- {
31
- "type": "command",
32
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PermissionRequest --cli codex",
33
- "timeout": 60,
34
- "__failproofai_hook__": true
35
- }
36
- ]
37
- }
38
- ],
39
- "PostToolUse": [
40
- {
41
- "hooks": [
42
- {
43
- "type": "command",
44
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PostToolUse --cli codex",
45
- "timeout": 60,
46
- "__failproofai_hook__": true
47
- }
48
- ]
49
- }
50
- ],
51
- "UserPromptSubmit": [
52
- {
53
- "hooks": [
54
- {
55
- "type": "command",
56
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook UserPromptSubmit --cli codex",
57
- "timeout": 60,
58
- "__failproofai_hook__": true
59
- }
60
- ]
61
- }
62
- ],
63
- "Stop": [
64
- {
65
- "hooks": [
66
- {
67
- "type": "command",
68
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 1; }; node scripts/dev-hook.mjs --hook Stop --cli codex",
69
- "timeout": 60,
70
- "__failproofai_hook__": true
71
- }
72
- ]
73
- }
74
- ]
75
- }
76
- }
@@ -1,47 +0,0 @@
1
- {
2
- "version": 1,
3
- "hooks": {
4
- "sessionStart": [
5
- {
6
- "type": "command",
7
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook sessionStart --cli cursor",
8
- "timeout": 60
9
- }
10
- ],
11
- "sessionEnd": [
12
- {
13
- "type": "command",
14
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook sessionEnd --cli cursor",
15
- "timeout": 60
16
- }
17
- ],
18
- "beforeSubmitPrompt": [
19
- {
20
- "type": "command",
21
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook beforeSubmitPrompt --cli cursor",
22
- "timeout": 60
23
- }
24
- ],
25
- "preToolUse": [
26
- {
27
- "type": "command",
28
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook preToolUse --cli cursor",
29
- "timeout": 60
30
- }
31
- ],
32
- "postToolUse": [
33
- {
34
- "type": "command",
35
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook postToolUse --cli cursor",
36
- "timeout": 60
37
- }
38
- ],
39
- "stop": [
40
- {
41
- "type": "command",
42
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 1; }; node scripts/dev-hook.mjs --hook stop --cli cursor",
43
- "timeout": 60
44
- }
45
- ]
46
- }
47
- }
@@ -1,112 +0,0 @@
1
- {
2
- "SessionStart": [
3
- {
4
- "hooks": [
5
- {
6
- "type": "command",
7
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook SessionStart --cli factory",
8
- "timeout": 30,
9
- "__failproofai_hook__": true
10
- }
11
- ]
12
- }
13
- ],
14
- "UserPromptSubmit": [
15
- {
16
- "hooks": [
17
- {
18
- "type": "command",
19
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook UserPromptSubmit --cli factory",
20
- "timeout": 30,
21
- "__failproofai_hook__": true
22
- }
23
- ]
24
- }
25
- ],
26
- "PreToolUse": [
27
- {
28
- "matcher": "*",
29
- "hooks": [
30
- {
31
- "type": "command",
32
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PreToolUse --cli factory",
33
- "timeout": 30,
34
- "__failproofai_hook__": true
35
- }
36
- ]
37
- }
38
- ],
39
- "PostToolUse": [
40
- {
41
- "matcher": "*",
42
- "hooks": [
43
- {
44
- "type": "command",
45
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PostToolUse --cli factory",
46
- "timeout": 30,
47
- "__failproofai_hook__": true
48
- }
49
- ]
50
- }
51
- ],
52
- "Notification": [
53
- {
54
- "hooks": [
55
- {
56
- "type": "command",
57
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook Notification --cli factory",
58
- "timeout": 30,
59
- "__failproofai_hook__": true
60
- }
61
- ]
62
- }
63
- ],
64
- "Stop": [
65
- {
66
- "hooks": [
67
- {
68
- "type": "command",
69
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 1; }; node scripts/dev-hook.mjs --hook Stop --cli factory",
70
- "timeout": 30,
71
- "__failproofai_hook__": true
72
- }
73
- ]
74
- }
75
- ],
76
- "SubagentStop": [
77
- {
78
- "hooks": [
79
- {
80
- "type": "command",
81
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 1; }; node scripts/dev-hook.mjs --hook SubagentStop --cli factory",
82
- "timeout": 30,
83
- "__failproofai_hook__": true
84
- }
85
- ]
86
- }
87
- ],
88
- "PreCompact": [
89
- {
90
- "hooks": [
91
- {
92
- "type": "command",
93
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook PreCompact --cli factory",
94
- "timeout": 30,
95
- "__failproofai_hook__": true
96
- }
97
- ]
98
- }
99
- ],
100
- "SessionEnd": [
101
- {
102
- "hooks": [
103
- {
104
- "type": "command",
105
- "command": "command -v node >/dev/null 2>&1 || { echo '[failproofai] node not found; install Node >=20.9' >&2; exit 2; }; node scripts/dev-hook.mjs --hook SessionEnd --cli factory",
106
- "timeout": 30,
107
- "__failproofai_hook__": true
108
- }
109
- ]
110
- }
111
- ]
112
- }
@@ -1,3 +0,0 @@
1
- module.exports=[54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},78500,(e,r,t)=>{r.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},50227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))}];
2
-
3
- //# sourceMappingURL=%5Bexternals%5D__1x24dzcbbq6-g._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[[94930,e=>{var t=e.i(2157),r=e.i(50227),s=e.i(66680);e.s(["f",0,function(e,n,i={}){let a=i.mode??384,o=i.dirMode??448,c=(0,r.dirname)(e);(0,t.existsSync)(c)||(0,t.mkdirSync)(c,{recursive:!0,mode:o});let d=`${e}.${process.pid}.${(0,s.randomBytes)(6).toString("hex")}.tmp`;try{(0,t.writeFileSync)(d,JSON.stringify(n,null,2),{mode:a});try{(63&(0,t.statSync)(d).mode)!=0&&(0,t.chmodSync)(d,a)}catch{}(0,t.renameSync)(d,e);try{(63&(0,t.statSync)(e).mode)!=0&&(0,t.chmodSync)(e,a)}catch{}}catch(e){try{(0,t.rmSync)(d,{force:!0})}catch{}throw e}}])},79364,e=>{var t=e.i(79708),r=e.i(40375),s=e.i(81580),n=e.i(83534),i=e.i(28557);async function a(){let e=await (0,t.f)((0,r.devinDbPath)());if(!e)return[];try{return e.query("SELECT id, working_directory, title, created_at, last_activity_at, hidden FROM sessions ORDER BY last_activity_at DESC").filter(e=>!e.hidden).map(e=>{let t=e.working_directory??void 0;return{sessionId:e.id,cwd:t,title:e.title??void 0,projectName:t?(0,s.f)(t):"devin",mtimeMs:(0,r.devinEpochToMs)(e.last_activity_at??e.created_at)}})}catch{return[]}finally{e.close()}}let o=(0,n.f)(a,2);async function c(){let e=await a(),t=new Map;for(let r of e){if(!r.cwd)continue;let e=t.get(r.projectName);(!e||r.mtimeMs>e.latest)&&t.set(r.projectName,{latest:r.mtimeMs,cwd:r.cwd,name:r.projectName})}let r=[];for(let{name:e,cwd:s,latest:n}of t.values()){let t=new Date(n);r.push({name:e,path:s,isDirectory:!0,lastModified:t,lastModifiedFormatted:(0,i.f)(t),cli:["devin"]})}return r.sort((e,t)=>t.lastModified.getTime()-e.lastModified.getTime()),r}async function d(e){let t=(await a()).filter(t=>t.cwd&&t.projectName===e);if(0===t.length)return{cwd:null,sessions:[]};let r=[...t].sort((e,t)=>t.mtimeMs-e.mtimeMs);return{cwd:r[0].cwd??null,sessions:r.map(e=>{let t=new Date(e.mtimeMs);return{name:e.title??e.sessionId,path:`devin-db://${e.sessionId}`,lastModified:t,lastModifiedFormatted:(0,i.f)(t),sessionId:e.sessionId,cli:"devin"}})}}let l=(0,n.f)(c,2),p=(0,n.f)(e=>d(e),2,{maxSize:50});e.s(["getCachedDevinProjects",0,l,"getCachedDevinSessions",0,o,"getCachedDevinSessionsByEncodedName",0,p,"getDevinProjects",0,c,"getDevinSessions",0,a,"getDevinSessionsByEncodedName",0,d])},40759,e=>{var t=e.i(60526),r=e.i(50227),s=e.i(79708);async function n(e){let n=await (0,s.f)(function(){if(process.env.OPENCODE_DB_PATH)return process.env.OPENCODE_DB_PATH;let e=process.env.OPENCODE_HOME??(0,r.join)((0,t.homedir)(),".local","share","opencode");return(0,r.join)(e,"opencode.db")}());if(!n)return null;try{return e(n)}catch{return null}finally{try{n.close()}catch{}}}async function i(e,t=[]){return n(r=>r.query(e,t))}e.s(["h",0,i,"x",0,n])}],54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0__a_je8fsn65._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[24868,(e,t,s)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},66680,(e,t,s)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},2157,(e,t,s)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},12714,(e,t,s)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,s)=>{t.exports=e.x("node:os",()=>require("node:os"))},50227,(e,t,s)=>{t.exports=e.x("node:path",()=>require("node:path"))},46786,(e,t,s)=>{t.exports=e.x("os",()=>require("os"))},14747,(e,t,s)=>{t.exports=e.x("path",()=>require("path"))},71809,e=>{"use strict";async function t(e,t){let s=Array(e.length),o=0;async function i(){for(;o<e.length;){let t=o++;try{s[t]={status:"fulfilled",value:await e[t]()}}catch(e){s[t]={status:"rejected",reason:e}}}}let r=Array.from({length:Math.min(t,e.length)},()=>i());return await Promise.all(r),s}e.s(["f",0,t])},69164,e=>{"use strict";var t=e.i(79708),s=e.i(36618),o=e.i(81580),i=e.i(83534),r=e.i(28557);async function n(){let e=await (0,t.f)((0,s.gooseDbPath)());if(!e)return[];try{return e.query("SELECT id, working_dir, description, name, session_type, created_at, updated_at FROM sessions ORDER BY updated_at DESC").filter(e=>"hidden"!==e.session_type).map(e=>{let t=e.working_dir??void 0,i=(e.description&&e.description.length>0?e.description:e.name)??void 0;return{sessionId:e.id,cwd:t,title:i&&i.length>0?i:void 0,projectName:t?(0,o.f)(t):"goose",mtimeMs:(0,s.gooseTimestampToMs)(e.updated_at??e.created_at)}})}catch{return[]}finally{e.close()}}let a=(0,i.f)(n,2);async function d(){let e=await n(),t=new Map;for(let s of e){if(!s.cwd)continue;let e=t.get(s.projectName);(!e||s.mtimeMs>e.latest)&&t.set(s.projectName,{latest:s.mtimeMs,cwd:s.cwd,name:s.projectName})}let s=[];for(let{name:e,cwd:o,latest:i}of t.values()){let t=new Date(i);s.push({name:e,path:o,isDirectory:!0,lastModified:t,lastModifiedFormatted:(0,r.f)(t),cli:["goose"]})}return s.sort((e,t)=>t.lastModified.getTime()-e.lastModified.getTime()),s}async function l(e){let t=(await n()).filter(t=>t.cwd&&t.projectName===e);if(0===t.length)return{cwd:null,sessions:[]};let s=[...t].sort((e,t)=>t.mtimeMs-e.mtimeMs);return{cwd:s[0].cwd??null,sessions:s.map(e=>{let t=new Date(e.mtimeMs);return{name:e.title??e.sessionId,path:`goose-db://${e.sessionId}`,lastModified:t,lastModifiedFormatted:(0,r.f)(t),sessionId:e.sessionId,cli:"goose"}})}}let c=(0,i.f)(d,2),m=(0,i.f)(e=>l(e),2,{maxSize:50});e.s(["getCachedGooseProjects",0,c,"getCachedGooseSessions",0,a,"getCachedGooseSessionsByEncodedName",0,m,"getGooseProjects",0,d,"getGooseSessions",0,n,"getGooseSessionsByEncodedName",0,l])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0l-oi4gdtmlo5._.js.map