@sixb/core 0.1.6 → 0.1.7

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 (535) hide show
  1. package/dist/actions/index.js +37 -33
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/worker.js +3 -3
  4. package/dist/agents/adapters.d.ts +33 -76
  5. package/dist/agents/adapters.d.ts.map +1 -1
  6. package/dist/agents/authority.d.ts +22 -6
  7. package/dist/agents/authority.d.ts.map +1 -1
  8. package/dist/agents/builders.d.ts +3 -11
  9. package/dist/agents/builders.d.ts.map +1 -1
  10. package/dist/agents/context.js +2 -2
  11. package/dist/agents/dispatch.d.ts +9 -1
  12. package/dist/agents/dispatch.d.ts.map +1 -1
  13. package/dist/agents/errors.d.ts +2 -2
  14. package/dist/agents/errors.d.ts.map +1 -1
  15. package/dist/agents/execution.d.ts +9 -10
  16. package/dist/agents/execution.d.ts.map +1 -1
  17. package/dist/agents/ids.d.ts +4 -0
  18. package/dist/agents/ids.d.ts.map +1 -1
  19. package/dist/agents/index.d.ts +13 -9
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +80 -68
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/message.d.ts +17 -10
  24. package/dist/agents/message.d.ts.map +1 -1
  25. package/dist/agents/model-loop.d.ts +56 -0
  26. package/dist/agents/model-loop.d.ts.map +1 -0
  27. package/dist/agents/reference.d.ts +4 -0
  28. package/dist/agents/reference.d.ts.map +1 -0
  29. package/dist/agents/request.d.ts +10 -8
  30. package/dist/agents/request.d.ts.map +1 -1
  31. package/dist/agents/retired-config.d.ts +4 -0
  32. package/dist/agents/retired-config.d.ts.map +1 -0
  33. package/dist/agents/streams.d.ts +13 -8
  34. package/dist/agents/streams.d.ts.map +1 -1
  35. package/dist/agents/streams.js +7 -5
  36. package/dist/agents/streams.js.map +1 -1
  37. package/dist/agents/tool-catalog.d.ts +9 -0
  38. package/dist/agents/tool-catalog.d.ts.map +1 -0
  39. package/dist/agents/tool-definition.d.ts +1 -0
  40. package/dist/agents/tool-definition.d.ts.map +1 -1
  41. package/dist/agents/types.d.ts +31 -68
  42. package/dist/agents/types.d.ts.map +1 -1
  43. package/dist/agents/validation.d.ts +4 -10
  44. package/dist/agents/validation.d.ts.map +1 -1
  45. package/dist/ai-usage/execution.d.ts +53 -0
  46. package/dist/ai-usage/execution.d.ts.map +1 -0
  47. package/dist/ai-usage/index.d.ts +3 -0
  48. package/dist/ai-usage/index.d.ts.map +1 -0
  49. package/dist/auth/index.js +7 -7
  50. package/dist/authorization/decision.d.ts +5 -2
  51. package/dist/authorization/decision.d.ts.map +1 -1
  52. package/dist/authorization/grant-kinds.d.ts +24 -8
  53. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  54. package/dist/authorization/index.d.ts +1 -1
  55. package/dist/authorization/index.d.ts.map +1 -1
  56. package/dist/authorization/index.js +8 -6
  57. package/dist/authorization/index.js.map +1 -1
  58. package/dist/authorization/resolve.d.ts +3 -3
  59. package/dist/authorization/resolve.d.ts.map +1 -1
  60. package/dist/authorization/types.d.ts +7 -5
  61. package/dist/authorization/types.d.ts.map +1 -1
  62. package/dist/blob-storage/browser.js +2 -2
  63. package/dist/blob-storage/index.js +3 -3
  64. package/dist/bootstrap/discovery.d.ts +1 -7
  65. package/dist/bootstrap/discovery.d.ts.map +1 -1
  66. package/dist/bootstrap/index.js +52 -48
  67. package/dist/bootstrap/index.js.map +1 -1
  68. package/dist/broker/index.js +2 -2
  69. package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
  70. package/dist/{chunk-1g8negke.js → chunk-08twe8m6.js} +93 -8
  71. package/dist/chunk-08twe8m6.js.map +12 -0
  72. package/dist/{chunk-xkthy56g.js → chunk-1kamz6j0.js} +1 -1
  73. package/dist/{chunk-dy311asx.js → chunk-2b5qtban.js} +12 -12
  74. package/dist/{chunk-dy311asx.js.map → chunk-2b5qtban.js.map} +3 -3
  75. package/dist/{chunk-0172wgm9.js → chunk-2xns679x.js} +10 -2
  76. package/dist/{chunk-0172wgm9.js.map → chunk-2xns679x.js.map} +3 -3
  77. package/dist/{chunk-f83ka50g.js → chunk-37wk412q.js} +86 -28
  78. package/dist/{chunk-f83ka50g.js.map → chunk-37wk412q.js.map} +8 -8
  79. package/dist/{chunk-md8k0r54.js → chunk-3fqt22c4.js} +4 -4
  80. package/dist/{chunk-t9xghkva.js → chunk-3kv70xwp.js} +3 -2
  81. package/dist/{chunk-t9xghkva.js.map → chunk-3kv70xwp.js.map} +3 -3
  82. package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
  83. package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
  84. package/dist/{chunk-62c7t4jc.js → chunk-4nxeacx7.js} +1 -1
  85. package/dist/{chunk-cy0n5dms.js → chunk-5jcdmjam.js} +1 -1
  86. package/dist/{chunk-819wnjz8.js → chunk-64sr682n.js} +7 -7
  87. package/dist/{chunk-t624af60.js → chunk-6ed5bwnd.js} +646 -67
  88. package/dist/{chunk-t624af60.js.map → chunk-6ed5bwnd.js.map} +10 -9
  89. package/dist/{chunk-x2yw73hy.js → chunk-7ds9620f.js} +1 -1
  90. package/dist/{chunk-dm72y8wt.js → chunk-7y0f6rf1.js} +29 -16
  91. package/dist/chunk-7y0f6rf1.js.map +10 -0
  92. package/dist/{chunk-72q2y8hn.js → chunk-8tsf6dmc.js} +2 -2
  93. package/dist/{chunk-nkbfrt0c.js → chunk-9aehf39w.js} +7 -7
  94. package/dist/{chunk-ezake7g1.js → chunk-agsvg9ar.js} +1 -1
  95. package/dist/{chunk-rdeagz6b.js → chunk-atmkaf60.js} +1 -1
  96. package/dist/{chunk-rdeagz6b.js.map → chunk-atmkaf60.js.map} +2 -2
  97. package/dist/chunk-c15dr03f.js +43 -0
  98. package/dist/chunk-c15dr03f.js.map +10 -0
  99. package/dist/{chunk-0hc5j867.js → chunk-d2ndstdf.js} +8 -6
  100. package/dist/{chunk-0hc5j867.js.map → chunk-d2ndstdf.js.map} +2 -2
  101. package/dist/{chunk-rnshztfq.js → chunk-d63tybny.js} +2 -2
  102. package/dist/{chunk-t0jjkep3.js → chunk-d8qkxt2v.js} +4 -2
  103. package/dist/chunk-d8qkxt2v.js.map +10 -0
  104. package/dist/{chunk-vybf6pkp.js → chunk-dbc80ad7.js} +1 -1
  105. package/dist/{chunk-4gz41why.js → chunk-dqn23610.js} +1 -1
  106. package/dist/{chunk-5sxb1168.js → chunk-e4rvtvpw.js} +13 -11
  107. package/dist/{chunk-5sxb1168.js.map → chunk-e4rvtvpw.js.map} +2 -2
  108. package/dist/{chunk-h9kxd41f.js → chunk-gbrpsx4m.js} +19 -6
  109. package/dist/chunk-gbrpsx4m.js.map +11 -0
  110. package/dist/{chunk-nva1xkjz.js → chunk-h0knpbz5.js} +468 -1236
  111. package/dist/chunk-h0knpbz5.js.map +38 -0
  112. package/dist/{chunk-tg5mee00.js → chunk-ha58tjtt.js} +6 -6
  113. package/dist/{chunk-f6erf2vv.js → chunk-hdz94br2.js} +2 -2
  114. package/dist/chunk-jecn6t54.js +307 -0
  115. package/dist/chunk-jecn6t54.js.map +12 -0
  116. package/dist/{chunk-dsrkgtnh.js → chunk-jq43kdvk.js} +1 -1
  117. package/dist/{chunk-wtmzkcht.js → chunk-k34z5rvh.js} +1 -1
  118. package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
  119. package/dist/{chunk-znagycq7.js → chunk-kt81c11h.js} +2 -2
  120. package/dist/chunk-n2arzn6e.js +1745 -0
  121. package/dist/chunk-n2arzn6e.js.map +20 -0
  122. package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
  123. package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
  124. package/dist/chunk-n6jxh8sw.js.map +10 -0
  125. package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
  126. package/dist/chunk-p03r0h5s.js.map +16 -0
  127. package/dist/chunk-p2vqaxkc.js +528 -0
  128. package/dist/chunk-p2vqaxkc.js.map +15 -0
  129. package/dist/{chunk-n4spznws.js → chunk-qjycjdj6.js} +84 -11
  130. package/dist/chunk-qjycjdj6.js.map +12 -0
  131. package/dist/chunk-qjzp9xyb.js +286 -0
  132. package/dist/chunk-qjzp9xyb.js.map +12 -0
  133. package/dist/{chunk-5gynx4xn.js → chunk-qv38twt8.js} +50 -69
  134. package/dist/{chunk-5gynx4xn.js.map → chunk-qv38twt8.js.map} +8 -8
  135. package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
  136. package/dist/{chunk-8gv5z0zm.js → chunk-rp1mvzb4.js} +6 -6
  137. package/dist/{chunk-1e8m6yn3.js → chunk-rre42skh.js} +182 -18
  138. package/dist/chunk-rre42skh.js.map +39 -0
  139. package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
  140. package/dist/{chunk-a31h57d5.js → chunk-tn7xcs2n.js} +2 -2
  141. package/dist/{chunk-6gjqgd3d.js → chunk-tpnd31c1.js} +2 -1
  142. package/dist/chunk-tpnd31c1.js.map +11 -0
  143. package/dist/chunk-trxxmgnf.js +68 -0
  144. package/dist/chunk-trxxmgnf.js.map +11 -0
  145. package/dist/{chunk-e42bc6m3.js → chunk-vjjv9mrb.js} +2 -2
  146. package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
  147. package/dist/{chunk-ckxfnx7f.js → chunk-wjgm6jjt.js} +2 -2
  148. package/dist/{chunk-3j7573mj.js → chunk-x0qhkqje.js} +2 -2
  149. package/dist/{chunk-dysw7nsm.js → chunk-xdpwpkha.js} +2 -2
  150. package/dist/{chunk-a44d5zgd.js → chunk-y35ma3mj.js} +11 -16
  151. package/dist/{chunk-a44d5zgd.js.map → chunk-y35ma3mj.js.map} +3 -4
  152. package/dist/{chunk-qewtks41.js → chunk-z2sery1b.js} +64 -1
  153. package/dist/{chunk-qewtks41.js.map → chunk-z2sery1b.js.map} +3 -3
  154. package/dist/error-reporting/internal.js +4 -4
  155. package/dist/error-reporting/types.d.ts +7 -2
  156. package/dist/error-reporting/types.d.ts.map +1 -1
  157. package/dist/errors/catalog.d.ts +8 -0
  158. package/dist/errors/catalog.d.ts.map +1 -1
  159. package/dist/errors/internal.js +2 -2
  160. package/dist/events/index.js +4 -4
  161. package/dist/execution/agent.d.ts +18 -9
  162. package/dist/execution/agent.d.ts.map +1 -1
  163. package/dist/execution/agent.js +52 -43
  164. package/dist/execution/agent.js.map +1 -1
  165. package/dist/execution/authorization.d.ts +14 -4
  166. package/dist/execution/authorization.d.ts.map +1 -1
  167. package/dist/execution/primitive.js +45 -43
  168. package/dist/execution/primitive.js.map +2 -2
  169. package/dist/execution/request.d.ts +3 -1
  170. package/dist/execution/request.d.ts.map +1 -1
  171. package/dist/execution/request.js +46 -44
  172. package/dist/execution/request.js.map +3 -3
  173. package/dist/execution/types.d.ts +1 -1
  174. package/dist/execution/types.d.ts.map +1 -1
  175. package/dist/http/api-routes.d.ts.map +1 -1
  176. package/dist/http/index.js +1 -1
  177. package/dist/index.d.ts +9 -6
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +82 -77
  180. package/dist/index.js.map +1 -1
  181. package/dist/json.d.ts +2 -0
  182. package/dist/json.d.ts.map +1 -1
  183. package/dist/lake-storage/index.js +5 -5
  184. package/dist/logging/index.js +3 -3
  185. package/dist/logging/types.js +2 -2
  186. package/dist/materialization/index.js +2 -2
  187. package/dist/materializer/index.js +33 -29
  188. package/dist/materializer/index.js.map +1 -1
  189. package/dist/models/catalog.d.ts +40 -0
  190. package/dist/models/catalog.d.ts.map +1 -0
  191. package/dist/models/definitions.d.ts +25 -0
  192. package/dist/models/definitions.d.ts.map +1 -0
  193. package/dist/models/errors.d.ts +52 -0
  194. package/dist/models/errors.d.ts.map +1 -0
  195. package/dist/models/events.d.ts +192 -0
  196. package/dist/models/events.d.ts.map +1 -0
  197. package/dist/models/index.d.ts +17 -39
  198. package/dist/models/index.d.ts.map +1 -1
  199. package/dist/models/index.js +50 -0
  200. package/dist/models/index.js.map +9 -0
  201. package/dist/models/language-model.d.ts +90 -0
  202. package/dist/models/language-model.d.ts.map +1 -0
  203. package/dist/models/messages.d.ts +74 -0
  204. package/dist/models/messages.d.ts.map +1 -0
  205. package/dist/models/pricing.d.ts +69 -0
  206. package/dist/models/pricing.d.ts.map +1 -0
  207. package/dist/models/rate-card.d.ts +24 -0
  208. package/dist/models/rate-card.d.ts.map +1 -0
  209. package/dist/models/tools.d.ts +24 -0
  210. package/dist/models/tools.d.ts.map +1 -0
  211. package/dist/objects/index.js +38 -34
  212. package/dist/objects/index.js.map +1 -1
  213. package/dist/objects/query/index.js +32 -28
  214. package/dist/objects/query/index.js.map +1 -1
  215. package/dist/ontology/index.js +5 -5
  216. package/dist/ontology/internal.js +4 -4
  217. package/dist/pipelines/index.js +37 -35
  218. package/dist/pipelines/index.js.map +1 -1
  219. package/dist/projections/internal.js +35 -31
  220. package/dist/projections/internal.js.map +1 -1
  221. package/dist/queues/in-memory.d.ts +3 -2
  222. package/dist/queues/in-memory.d.ts.map +1 -1
  223. package/dist/queues/index.d.ts +3 -1
  224. package/dist/queues/index.d.ts.map +1 -1
  225. package/dist/queues/index.js +1 -1
  226. package/dist/queues/types.d.ts +15 -3
  227. package/dist/queues/types.d.ts.map +1 -1
  228. package/dist/runtime/create.d.ts +4 -4
  229. package/dist/runtime/create.d.ts.map +1 -1
  230. package/dist/runtime/definitions.d.ts +2 -2
  231. package/dist/runtime/definitions.d.ts.map +1 -1
  232. package/dist/runtime/host.d.ts +3 -2
  233. package/dist/runtime/host.d.ts.map +1 -1
  234. package/dist/runtime/resolve-definitions.d.ts +2 -2
  235. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  236. package/dist/runtime/sixb.d.ts +4 -2
  237. package/dist/runtime/sixb.d.ts.map +1 -1
  238. package/dist/security/every.d.ts +1 -4
  239. package/dist/security/every.d.ts.map +1 -1
  240. package/dist/security/grants.d.ts +6 -5
  241. package/dist/security/grants.d.ts.map +1 -1
  242. package/dist/security/index.d.ts +1 -1
  243. package/dist/security/index.d.ts.map +1 -1
  244. package/dist/security/registry.d.ts +1 -1
  245. package/dist/security/registry.d.ts.map +1 -1
  246. package/dist/security/types.d.ts +13 -5
  247. package/dist/security/types.d.ts.map +1 -1
  248. package/dist/security/validation.d.ts +4 -2
  249. package/dist/security/validation.d.ts.map +1 -1
  250. package/dist/storage/action-runs/failure.js +3 -3
  251. package/dist/storage/action-runs/provider.js +2 -2
  252. package/dist/storage/agents/errors.d.ts +1 -1
  253. package/dist/storage/agents/errors.d.ts.map +1 -1
  254. package/dist/storage/agents/in-memory.d.ts +3 -2
  255. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  256. package/dist/storage/agents/index.d.ts +1 -1
  257. package/dist/storage/agents/index.d.ts.map +1 -1
  258. package/dist/storage/agents/provider.d.ts +11 -4
  259. package/dist/storage/agents/provider.d.ts.map +1 -1
  260. package/dist/storage/agents/provider.js +18 -15
  261. package/dist/storage/agents/provider.js.map +1 -1
  262. package/dist/storage/agents/types.d.ts +65 -17
  263. package/dist/storage/agents/types.d.ts.map +1 -1
  264. package/dist/storage/ai-cost/analytics.d.ts +2 -1
  265. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  266. package/dist/storage/ai-cost/codec.d.ts +3 -2
  267. package/dist/storage/ai-cost/codec.d.ts.map +1 -1
  268. package/dist/storage/ai-cost/groups.d.ts +51 -0
  269. package/dist/storage/ai-cost/groups.d.ts.map +1 -0
  270. package/dist/storage/ai-cost/in-memory.d.ts +11 -1
  271. package/dist/storage/ai-cost/in-memory.d.ts.map +1 -1
  272. package/dist/storage/ai-cost/index.d.ts +1 -1
  273. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  274. package/dist/storage/ai-cost/provider.d.ts +2 -0
  275. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/provider.js +29 -13
  277. package/dist/storage/ai-cost/provider.js.map +3 -3
  278. package/dist/storage/ai-cost/types.d.ts +64 -15
  279. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  280. package/dist/storage/ai-cost/validation.d.ts +2 -1
  281. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  282. package/dist/storage/ai-limits/enforcement.d.ts +14 -0
  283. package/dist/storage/ai-limits/enforcement.d.ts.map +1 -0
  284. package/dist/storage/ai-limits/enforcement.js +21 -0
  285. package/dist/storage/ai-limits/enforcement.js.map +9 -0
  286. package/dist/storage/ai-limits/errors.d.ts +8 -0
  287. package/dist/storage/ai-limits/errors.d.ts.map +1 -0
  288. package/dist/storage/ai-limits/in-memory.d.ts +78 -0
  289. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -0
  290. package/dist/storage/ai-limits/index.d.ts +7 -0
  291. package/dist/storage/ai-limits/index.d.ts.map +1 -0
  292. package/dist/storage/ai-limits/period.d.ts +4 -0
  293. package/dist/storage/ai-limits/period.d.ts.map +1 -0
  294. package/dist/storage/ai-limits/provider.d.ts +85 -0
  295. package/dist/storage/ai-limits/provider.d.ts.map +1 -0
  296. package/dist/storage/ai-limits/provider.js +62 -0
  297. package/dist/storage/ai-limits/provider.js.map +9 -0
  298. package/dist/storage/ai-limits/types.d.ts +175 -0
  299. package/dist/storage/ai-limits/types.d.ts.map +1 -0
  300. package/dist/storage/ai-usage/in-memory.d.ts +4 -0
  301. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  302. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  303. package/dist/storage/ai-usage/types.d.ts +6 -2
  304. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  305. package/dist/storage/auth/errors.d.ts +1 -1
  306. package/dist/storage/auth/errors.d.ts.map +1 -1
  307. package/dist/storage/auth/in-memory/auth-storage.d.ts +4 -1
  308. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  309. package/dist/storage/auth/in-memory/device-authorizations.d.ts +29 -0
  310. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -0
  311. package/dist/storage/auth/in-memory/shared.d.ts +3 -1
  312. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  313. package/dist/storage/auth/index.d.ts +2 -1
  314. package/dist/storage/auth/index.d.ts.map +1 -1
  315. package/dist/storage/auth/types.d.ts +66 -0
  316. package/dist/storage/auth/types.d.ts.map +1 -1
  317. package/dist/storage/connector-connections/provider.js +2 -2
  318. package/dist/storage/executions/provider.js +1 -1
  319. package/dist/storage/executions/run-link.d.ts +7 -2
  320. package/dist/storage/executions/run-link.d.ts.map +1 -1
  321. package/dist/storage/executions/validation.d.ts.map +1 -1
  322. package/dist/storage/in-memory/index.d.ts +4 -0
  323. package/dist/storage/in-memory/index.d.ts.map +1 -1
  324. package/dist/storage/index.d.ts +7 -4
  325. package/dist/storage/index.d.ts.map +1 -1
  326. package/dist/storage/index.js +51 -38
  327. package/dist/storage/index.js.map +1 -1
  328. package/dist/storage/ontology/provider.js +3 -3
  329. package/dist/storage/pipeline-runs/provider.js +2 -2
  330. package/dist/storage/projection-runs/provider.js +4 -4
  331. package/dist/storage/sync-runs/provider.js +2 -2
  332. package/dist/storage/types.d.ts +5 -1
  333. package/dist/storage/types.d.ts.map +1 -1
  334. package/dist/storage/webhook-runs/provider.js +2 -2
  335. package/dist/storage/workflow-runs/provider.d.ts +1 -1
  336. package/dist/storage/workflow-runs/provider.js +10 -11
  337. package/dist/storage/workflow-runs/provider.js.map +1 -1
  338. package/dist/storage/workflow-runs/types.d.ts +5 -4
  339. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  340. package/dist/syncs/index.js +37 -35
  341. package/dist/syncs/index.js.map +1 -1
  342. package/dist/testing/agent-execution.d.ts +3 -1
  343. package/dist/testing/agent-execution.d.ts.map +1 -1
  344. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  345. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  346. package/dist/testing/ai-limit-storage-contract.d.ts +18 -0
  347. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -0
  348. package/dist/testing/ai-model-call-groups-contract.d.ts +6 -0
  349. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -0
  350. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  351. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  352. package/dist/testing/index.d.ts +2 -0
  353. package/dist/testing/index.d.ts.map +1 -1
  354. package/dist/testing/index.js +3637 -1962
  355. package/dist/testing/index.js.map +14 -12
  356. package/dist/testing/queues-contract.d.ts.map +1 -1
  357. package/dist/webhooks/internal.js +32 -28
  358. package/dist/webhooks/internal.js.map +2 -2
  359. package/dist/workers/index.js +2 -2
  360. package/dist/workflows/agent-step-identity.d.ts +3 -0
  361. package/dist/workflows/agent-step-identity.d.ts.map +1 -0
  362. package/dist/workflows/builders.d.ts +2 -3
  363. package/dist/workflows/builders.d.ts.map +1 -1
  364. package/dist/workflows/execution.d.ts +1 -1
  365. package/dist/workflows/execution.d.ts.map +1 -1
  366. package/dist/workflows/failure.d.ts +1 -1
  367. package/dist/workflows/failure.d.ts.map +1 -1
  368. package/dist/workflows/index.d.ts +3 -2
  369. package/dist/workflows/index.d.ts.map +1 -1
  370. package/dist/workflows/index.js +53 -45
  371. package/dist/workflows/index.js.map +1 -1
  372. package/dist/workflows/types.d.ts +26 -11
  373. package/dist/workflows/types.d.ts.map +1 -1
  374. package/dist/workflows/validation.d.ts +7 -1
  375. package/dist/workflows/validation.d.ts.map +1 -1
  376. package/package.json +19 -4
  377. package/src/agents/adapters.ts +109 -115
  378. package/src/agents/authority.ts +214 -32
  379. package/src/agents/builders.ts +3 -50
  380. package/src/agents/context-compaction.ts +4 -0
  381. package/src/agents/dispatch.ts +59 -2
  382. package/src/agents/errors.ts +5 -2
  383. package/src/agents/execution.ts +53 -52
  384. package/src/agents/ids.ts +16 -1
  385. package/src/agents/index.ts +23 -11
  386. package/src/agents/message.ts +18 -9
  387. package/src/agents/model-loop.ts +1023 -0
  388. package/src/agents/reference.ts +7 -0
  389. package/src/agents/request.ts +141 -74
  390. package/src/agents/retired-config.ts +20 -0
  391. package/src/agents/streams.ts +45 -19
  392. package/src/agents/tool-catalog.ts +21 -0
  393. package/src/agents/tool-definition.ts +23 -0
  394. package/src/agents/types.ts +39 -81
  395. package/src/agents/validation.ts +34 -180
  396. package/src/ai-usage/execution.ts +196 -0
  397. package/src/ai-usage/index.ts +15 -0
  398. package/src/authorization/decision.ts +27 -10
  399. package/src/authorization/grant-kinds.ts +62 -15
  400. package/src/authorization/index.ts +1 -0
  401. package/src/authorization/resolve.ts +12 -5
  402. package/src/authorization/types.ts +7 -5
  403. package/src/bootstrap/discovery.ts +0 -3
  404. package/src/error-reporting/types.ts +4 -2
  405. package/src/errors/catalog.ts +8 -0
  406. package/src/execution/agent.ts +129 -22
  407. package/src/execution/authorization.ts +48 -18
  408. package/src/execution/request.ts +4 -1
  409. package/src/execution/types.ts +1 -1
  410. package/src/http/api-routes.ts +63 -0
  411. package/src/index.ts +36 -7
  412. package/src/json.ts +9 -0
  413. package/src/models/catalog.ts +137 -0
  414. package/src/models/definitions.ts +202 -0
  415. package/src/models/errors.ts +83 -0
  416. package/src/models/events.ts +198 -0
  417. package/src/models/index.ts +89 -71
  418. package/src/models/language-model.ts +143 -0
  419. package/src/models/messages.ts +78 -0
  420. package/src/models/pricing.ts +390 -0
  421. package/src/models/rate-card.ts +101 -0
  422. package/src/models/tools.ts +29 -0
  423. package/src/queues/in-memory.ts +5 -0
  424. package/src/queues/index.ts +11 -0
  425. package/src/queues/types.ts +20 -3
  426. package/src/runtime/create.ts +7 -5
  427. package/src/runtime/definitions.ts +2 -2
  428. package/src/runtime/host.ts +3 -2
  429. package/src/runtime/resolve-definitions.ts +13 -36
  430. package/src/runtime/sixb.ts +6 -8
  431. package/src/security/every.ts +0 -4
  432. package/src/security/grants.ts +55 -11
  433. package/src/security/index.ts +2 -0
  434. package/src/security/registry.ts +6 -5
  435. package/src/security/types.ts +15 -4
  436. package/src/security/validation.ts +30 -9
  437. package/src/storage/agents/errors.ts +1 -0
  438. package/src/storage/agents/in-memory.ts +121 -11
  439. package/src/storage/agents/index.ts +7 -0
  440. package/src/storage/agents/provider.ts +150 -6
  441. package/src/storage/agents/types.ts +73 -16
  442. package/src/storage/ai-cost/analytics.ts +63 -6
  443. package/src/storage/ai-cost/codec.ts +37 -12
  444. package/src/storage/ai-cost/groups.ts +248 -0
  445. package/src/storage/ai-cost/in-memory.ts +42 -0
  446. package/src/storage/ai-cost/index.ts +6 -0
  447. package/src/storage/ai-cost/provider.ts +7 -0
  448. package/src/storage/ai-cost/types.ts +76 -14
  449. package/src/storage/ai-cost/validation.ts +147 -17
  450. package/src/storage/ai-limits/enforcement.ts +68 -0
  451. package/src/storage/ai-limits/errors.ts +23 -0
  452. package/src/storage/ai-limits/in-memory.ts +671 -0
  453. package/src/storage/ai-limits/index.ts +31 -0
  454. package/src/storage/ai-limits/period.ts +11 -0
  455. package/src/storage/ai-limits/provider.ts +430 -0
  456. package/src/storage/ai-limits/types.ts +195 -0
  457. package/src/storage/ai-usage/in-memory.ts +13 -0
  458. package/src/storage/ai-usage/record.ts +17 -0
  459. package/src/storage/ai-usage/types.ts +6 -2
  460. package/src/storage/auth/errors.ts +6 -0
  461. package/src/storage/auth/in-memory/auth-storage.ts +69 -0
  462. package/src/storage/auth/in-memory/device-authorizations.ts +145 -0
  463. package/src/storage/auth/in-memory/shared.ts +7 -0
  464. package/src/storage/auth/index.ts +7 -0
  465. package/src/storage/auth/types.ts +73 -0
  466. package/src/storage/executions/run-link.ts +16 -6
  467. package/src/storage/executions/validation.ts +36 -6
  468. package/src/storage/in-memory/index.ts +48 -4
  469. package/src/storage/index.ts +51 -1
  470. package/src/storage/types.ts +37 -0
  471. package/src/storage/workflow-runs/in-memory.ts +3 -3
  472. package/src/storage/workflow-runs/provider.ts +2 -2
  473. package/src/storage/workflow-runs/types.ts +6 -3
  474. package/src/testing/agent-execution.ts +40 -28
  475. package/src/testing/agent-storage-contract.ts +249 -28
  476. package/src/testing/ai-cost-storage-contract.ts +96 -8
  477. package/src/testing/ai-limit-storage-contract.ts +1134 -0
  478. package/src/testing/ai-model-call-groups-contract.ts +353 -0
  479. package/src/testing/ai-usage-storage-contract.ts +31 -0
  480. package/src/testing/auth-storage-contract.ts +85 -0
  481. package/src/testing/execution-storage-contract.ts +2 -2
  482. package/src/testing/index.ts +10 -0
  483. package/src/testing/queues-contract.ts +36 -1
  484. package/src/workflows/agent-step-identity.ts +4 -0
  485. package/src/workflows/builders.ts +95 -9
  486. package/src/workflows/execution.ts +2 -2
  487. package/src/workflows/failure.ts +2 -2
  488. package/src/workflows/index.ts +3 -0
  489. package/src/workflows/types.ts +23 -11
  490. package/src/workflows/validation.ts +100 -7
  491. package/dist/chunk-1e8m6yn3.js.map +0 -37
  492. package/dist/chunk-1g8negke.js.map +0 -11
  493. package/dist/chunk-6gjqgd3d.js.map +0 -11
  494. package/dist/chunk-dm72y8wt.js.map +0 -10
  495. package/dist/chunk-drjqm1aa.js.map +0 -15
  496. package/dist/chunk-fe5ev6mr.js +0 -55
  497. package/dist/chunk-fe5ev6mr.js.map +0 -11
  498. package/dist/chunk-h9kxd41f.js.map +0 -11
  499. package/dist/chunk-hceck7dq.js +0 -137
  500. package/dist/chunk-hceck7dq.js.map +0 -10
  501. package/dist/chunk-n4spznws.js.map +0 -11
  502. package/dist/chunk-nva1xkjz.js.map +0 -46
  503. package/dist/chunk-t0jjkep3.js.map +0 -10
  504. package/dist/chunk-t8t39h7v.js.map +0 -10
  505. /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.js.map} +0 -0
  506. /package/dist/{chunk-xkthy56g.js.map → chunk-1kamz6j0.js.map} +0 -0
  507. /package/dist/{chunk-md8k0r54.js.map → chunk-3fqt22c4.js.map} +0 -0
  508. /package/dist/{chunk-z3zp0bj1.js.map → chunk-407j3msh.js.map} +0 -0
  509. /package/dist/{chunk-rhrbz7d4.js.map → chunk-4a849fr1.js.map} +0 -0
  510. /package/dist/{chunk-62c7t4jc.js.map → chunk-4nxeacx7.js.map} +0 -0
  511. /package/dist/{chunk-cy0n5dms.js.map → chunk-5jcdmjam.js.map} +0 -0
  512. /package/dist/{chunk-819wnjz8.js.map → chunk-64sr682n.js.map} +0 -0
  513. /package/dist/{chunk-x2yw73hy.js.map → chunk-7ds9620f.js.map} +0 -0
  514. /package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +0 -0
  515. /package/dist/{chunk-nkbfrt0c.js.map → chunk-9aehf39w.js.map} +0 -0
  516. /package/dist/{chunk-ezake7g1.js.map → chunk-agsvg9ar.js.map} +0 -0
  517. /package/dist/{chunk-rnshztfq.js.map → chunk-d63tybny.js.map} +0 -0
  518. /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
  519. /package/dist/{chunk-4gz41why.js.map → chunk-dqn23610.js.map} +0 -0
  520. /package/dist/{chunk-tg5mee00.js.map → chunk-ha58tjtt.js.map} +0 -0
  521. /package/dist/{chunk-f6erf2vv.js.map → chunk-hdz94br2.js.map} +0 -0
  522. /package/dist/{chunk-dsrkgtnh.js.map → chunk-jq43kdvk.js.map} +0 -0
  523. /package/dist/{chunk-wtmzkcht.js.map → chunk-k34z5rvh.js.map} +0 -0
  524. /package/dist/{chunk-htq0qh7z.js.map → chunk-ka3a2ft3.js.map} +0 -0
  525. /package/dist/{chunk-znagycq7.js.map → chunk-kt81c11h.js.map} +0 -0
  526. /package/dist/{chunk-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
  527. /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
  528. /package/dist/{chunk-8gv5z0zm.js.map → chunk-rp1mvzb4.js.map} +0 -0
  529. /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
  530. /package/dist/{chunk-a31h57d5.js.map → chunk-tn7xcs2n.js.map} +0 -0
  531. /package/dist/{chunk-e42bc6m3.js.map → chunk-vjjv9mrb.js.map} +0 -0
  532. /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
  533. /package/dist/{chunk-ckxfnx7f.js.map → chunk-wjgm6jjt.js.map} +0 -0
  534. /package/dist/{chunk-3j7573mj.js.map → chunk-x0qhkqje.js.map} +0 -0
  535. /package/dist/{chunk-dysw7nsm.js.map → chunk-xdpwpkha.js.map} +0 -0
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/storage/action-runs/idempotency.ts", "../src/storage/action-runs/in-memory.ts", "../src/agents/message.ts", "../src/storage/agents/in-memory.ts", "../src/storage/ai-cost/errors.ts", "../src/storage/ai-cost/in-memory.ts", "../src/storage/connector-connections/in-memory.ts", "../src/storage/errors.ts", "../src/storage/file-upload-sessions/errors.ts", "../src/storage/file-upload-sessions/utils.ts", "../src/storage/file-upload-sessions/in-memory.ts", "../src/storage/in-memory/index.ts", "../src/storage/executions/in-memory.ts", "../src/objects/query/scalar-values.ts", "../src/storage/objects/keys.ts", "../src/storage/objects/in-memory.ts", "../src/storage/ontology/in-memory/shared-state.ts", "../src/storage/ontology/in-memory/commits.ts", "../src/storage/timeseries/store.ts", "../src/storage/ontology/in-memory/materializations-state.ts", "../src/storage/ontology/in-memory/materializations-work.ts", "../src/storage/ontology/in-memory/materializations-finalization.ts", "../src/storage/ontology/in-memory/materializations.ts", "../src/storage/ontology/in-memory/outbox.ts", "../src/storage/ontology/in-memory/sources.ts", "../src/storage/ontology/in-memory/testing.ts", "../src/storage/ontology/in-memory/index.ts", "../src/storage/pipeline-runs/idempotency.ts", "../src/storage/run-listing.ts", "../src/storage/pipeline-runs/types.ts", "../src/storage/pipeline-runs/in-memory.ts", "../src/storage/projection-runs/in-memory.ts", "../src/storage/rules/in-memory.ts", "../src/storage/sync-runs/idempotency.ts", "../src/storage/sync-runs/types.ts", "../src/storage/sync-runs/in-memory.ts", "../src/storage/transaction.ts", "../src/storage/webhook-runs/types.ts", "../src/storage/webhook-runs/in-memory.ts", "../src/storage/workflow-interventions/errors.ts", "../src/storage/workflow-interventions/in-memory.ts", "../src/storage/workflow-runs/types.ts", "../src/storage/workflow-runs/in-memory.ts", "../src/storage/in-memory/testing.ts", "../src/storage/migrations/migrate-storage.ts", "../src/storage/migrations/check-schema.ts", "../src/storage/migrations/migration-set.ts"],
3
+ "sources": ["../src/storage/action-runs/idempotency.ts", "../src/storage/action-runs/in-memory.ts", "../src/agents/message.ts", "../src/storage/agents/in-memory.ts", "../src/storage/ai-cost/errors.ts", "../src/storage/ai-cost/in-memory.ts", "../src/storage/ai-limits/in-memory.ts", "../src/storage/connector-connections/in-memory.ts", "../src/storage/errors.ts", "../src/storage/file-upload-sessions/errors.ts", "../src/storage/file-upload-sessions/utils.ts", "../src/storage/file-upload-sessions/in-memory.ts", "../src/storage/in-memory/index.ts", "../src/storage/executions/in-memory.ts", "../src/objects/query/scalar-values.ts", "../src/storage/objects/keys.ts", "../src/storage/objects/in-memory.ts", "../src/storage/ontology/in-memory/shared-state.ts", "../src/storage/ontology/in-memory/commits.ts", "../src/storage/timeseries/store.ts", "../src/storage/ontology/in-memory/materializations-state.ts", "../src/storage/ontology/in-memory/materializations-work.ts", "../src/storage/ontology/in-memory/materializations-finalization.ts", "../src/storage/ontology/in-memory/materializations.ts", "../src/storage/ontology/in-memory/outbox.ts", "../src/storage/ontology/in-memory/sources.ts", "../src/storage/ontology/in-memory/testing.ts", "../src/storage/ontology/in-memory/index.ts", "../src/storage/pipeline-runs/idempotency.ts", "../src/storage/run-listing.ts", "../src/storage/pipeline-runs/types.ts", "../src/storage/pipeline-runs/in-memory.ts", "../src/storage/projection-runs/in-memory.ts", "../src/storage/rules/in-memory.ts", "../src/storage/sync-runs/idempotency.ts", "../src/storage/sync-runs/types.ts", "../src/storage/sync-runs/in-memory.ts", "../src/storage/transaction.ts", "../src/storage/webhook-runs/types.ts", "../src/storage/webhook-runs/in-memory.ts", "../src/storage/workflow-interventions/errors.ts", "../src/storage/workflow-interventions/in-memory.ts", "../src/storage/workflow-runs/types.ts", "../src/storage/workflow-runs/in-memory.ts", "../src/storage/in-memory/testing.ts", "../src/storage/migrations/migrate-storage.ts", "../src/storage/migrations/check-schema.ts", "../src/storage/migrations/migration-set.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { ActionSubject } from \"../../actions\"\nimport { stableJsonStringify } from \"../../json\"\nimport type {\n ActionRunEffectsRecord,\n ActionRunPhase,\n ActionRunRecord,\n ActionRunWritebackRecord,\n FinishActionRunInput,\n QueueActionRunInput,\n} from \"./types\"\n\nexport function actionSubjectsEqual(left: ActionSubject, right: ActionSubject): boolean {\n if (left.kind !== right.kind) return false\n if (left.kind === \"none\") return true\n if (right.kind === \"none\") return false\n return left.objectTypeId === right.objectTypeId && left.primaryId === right.primaryId\n}\n\nexport function actionRunParamsEqual(left: unknown, right: unknown): boolean {\n return stableJsonStringify(left) === stableJsonStringify(right)\n}\n\nexport type ActionRunPhaseRecord = ActionRunWritebackRecord | ActionRunEffectsRecord\n\nexport function actionRunPhaseRecordsEqual(\n left: ActionRunPhaseRecord,\n right: ActionRunPhaseRecord\n): boolean {\n return actionRunParamsEqual(stripPhaseRecordCompletedAt(left), stripPhaseRecordCompletedAt(right))\n}\n\nexport function finishActionRunPhase(\n input: FinishActionRunInput,\n current: ActionRunPhase | null | undefined\n): ActionRunPhase {\n if (input.status === \"succeeded\") {\n return input.phase ?? current ?? \"validation\"\n }\n\n return input.error.details.phase\n}\n\nexport function canRequeueActionRunAfterEnqueueFailure(\n existing: ActionRunRecord,\n input: QueueActionRunInput\n): boolean {\n return (\n existing.status === \"failed\" &&\n existing.phase === \"enqueue\" &&\n existing.executionId === input.executionId &&\n existing.error?.retryable === true &&\n existing.actionId === input.actionId &&\n existing.idempotencyKey === input.idempotencyKey &&\n actionSubjectsEqual(existing.subject, input.subject) &&\n actionRunParamsEqual(existing.params, input.params)\n )\n}\n\nexport function isTerminalActionRun(record: Pick<ActionRunRecord, \"status\">): boolean {\n return (\n record.status === \"succeeded\" || record.status === \"failed\" || record.status === \"cancelled\"\n )\n}\n\nfunction stripPhaseRecordCompletedAt(\n record: ActionRunPhaseRecord\n): Omit<ActionRunPhaseRecord, \"completedAt\"> {\n const { completedAt: _completedAt, ...stableRecord } = record\n return stableRecord\n}\n",
6
6
  "import type { ExecutionStorage } from \"../executions\"\nimport { ActionRunError } from \"./errors\"\nimport { parseActionRunFailure } from \"./failure\"\nimport {\n actionRunPhaseRecordsEqual,\n actionSubjectsEqual,\n canRequeueActionRunAfterEnqueueFailure,\n isTerminalActionRun,\n} from \"./idempotency\"\nimport { assertActionRunExecution } from \"./provider\"\nimport type {\n ActionRunEffectsRecord,\n ActionRunFailure,\n ActionRunParams,\n ActionRunPhase,\n ActionRunRecord,\n ActionRunStorage,\n ActionRunWritebackRecord,\n EnterActionRunPhaseInput,\n FinishActionRunInput,\n ListActionRunsInput,\n ListActionRunsResult,\n LockActionMaterializationRunInput,\n QueueActionRunInput,\n RecordActionEffectsInput,\n RecordActionWritebackInput,\n StartActionRunInput,\n} from \"./types\"\n\ntype RunRootOperation = <T>(run: () => Promise<T> | T) => Promise<T>\n\nconst runDirectly: RunRootOperation = async <T>(run: () => Promise<T> | T): Promise<T> => run()\n\nfunction actionRunKey(projectId: string, id: string): string {\n return JSON.stringify([projectId, id])\n}\n\nfunction assertNonBlank(value: string, fieldName: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ActionRunError(`[Sixb] Action materialization ${fieldName} must be nonblank.`)\n }\n}\n\nfunction cloneActionRunRecord(record: ActionRunRecord): ActionRunRecord {\n return structuredClone(record)\n}\n\nfunction normalizeParams(params: ActionRunParams): ActionRunParams {\n return structuredClone(params)\n}\n\nfunction normalizeSubject(subject: QueueActionRunInput[\"subject\"]): QueueActionRunInput[\"subject\"] {\n return structuredClone(subject)\n}\n\nfunction normalizeError<TPhase extends ActionRunPhase>(\n error: ActionRunFailure<TPhase>,\n expectedPhase?: TPhase\n): ActionRunFailure<TPhase> {\n return expectedPhase === undefined\n ? (parseActionRunFailure(error) as ActionRunFailure<TPhase>)\n : parseActionRunFailure(error, expectedPhase)\n}\n\nfunction normalizeWriteback(\n input: RecordActionWritebackInput,\n completedAt: Date\n): ActionRunWritebackRecord {\n if (input.status === \"succeeded\") {\n return {\n status: \"succeeded\",\n completedAt,\n result: structuredClone(input.result),\n }\n }\n\n return {\n status: \"failed\",\n completedAt,\n error: normalizeError(input.error, \"writeback\"),\n }\n}\n\nfunction normalizeEffects(\n input: RecordActionEffectsInput,\n completedAt: Date\n): ActionRunEffectsRecord {\n if (input.status === \"succeeded\") {\n return {\n status: \"succeeded\",\n completedAt,\n }\n }\n\n return {\n status: \"failed\",\n completedAt,\n error: normalizeError(input.error, \"effects\"),\n }\n}\n\nfunction compareRuns(a: ActionRunRecord, b: ActionRunRecord, order: \"asc\" | \"desc\"): number {\n const leftAt = a.startedAt ?? a.queuedAt\n const rightAt = b.startedAt ?? b.queuedAt\n const delta = leftAt.getTime() - rightAt.getTime()\n if (delta !== 0) {\n return order === \"asc\" ? delta : -delta\n }\n\n if (a.id === b.id) {\n return 0\n }\n\n return order === \"asc\" ? a.id.localeCompare(b.id) : b.id.localeCompare(a.id)\n}\n\nexport class InMemoryActionRunStorage implements ActionRunStorage {\n private readonly rows = new Map<string, ActionRunRecord>()\n private readonly runRootOperation: RunRootOperation\n\n constructor(\n private readonly executions: ExecutionStorage,\n input: { readonly runRootOperation?: RunRootOperation } = {}\n ) {\n this.runRootOperation = input.runRootOperation ?? runDirectly\n }\n\n snapshot(): InMemoryActionRunStorageSnapshot {\n return structuredClone(this.rows)\n }\n\n restore(snapshot: InMemoryActionRunStorageSnapshot): void {\n this.rows.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.rows.set(key, record)\n }\n }\n\n async lockForMaterialization(input: LockActionMaterializationRunInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => cloneActionRunRecord(this.requireMaterializationRun(input)))\n }\n\n async queue(input: QueueActionRunInput): Promise<ActionRunRecord> {\n return this.runRootOperation(async () => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.rows.get(key)\n if (existing && !canRequeueActionRunAfterEnqueueFailure(existing, input)) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n if (\n [...this.rows.values()].some(\n (run) =>\n run.projectId === input.projectId &&\n run.id !== input.id &&\n run.executionId === input.executionId\n )\n ) {\n throw new ActionRunError(\n `[Sixb] Execution '${input.executionId}' already belongs to another Action run.`\n )\n }\n await assertActionRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n actionId: input.actionId,\n })\n\n const record: ActionRunRecord = {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n actionId: input.actionId,\n subject: normalizeSubject(input.subject),\n status: \"queued\",\n phase: \"request\",\n queuedAt: new Date(input.queuedAt ?? new Date()),\n params: normalizeParams(input.params),\n idempotencyKey: input.idempotencyKey,\n }\n\n if (existing) {\n const next: ActionRunRecord = {\n ...existing,\n status: \"queued\",\n phase: \"request\",\n queuedAt: record.queuedAt,\n startedAt: undefined,\n finishedAt: undefined,\n error: undefined,\n writeback: undefined,\n effects: undefined,\n }\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n }\n\n this.rows.set(key, structuredClone(record))\n return cloneActionRunRecord(record)\n })\n }\n\n async start(input: StartActionRunInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.rows.get(key)\n\n if (!existing) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' not found for project '${input.projectId}'.`\n )\n }\n\n if (existing.status !== \"queued\") {\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' cannot start from status '${existing.status}'.`\n )\n }\n\n const next: ActionRunRecord = {\n ...existing,\n status: \"running\",\n phase: input.phase ?? \"validation\",\n startedAt: new Date(input.startedAt ?? new Date()),\n error: undefined,\n }\n\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n })\n }\n\n async enterPhase(input: EnterActionRunPhaseInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.requireRunningRun(key, input.projectId, input.id, \"enter phase\")\n const next: ActionRunRecord = {\n ...existing,\n phase: input.phase,\n }\n\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n })\n }\n\n async recordWriteback(input: RecordActionWritebackInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.requireRunningRun(key, input.projectId, input.id, \"record writeback\")\n const writeback = normalizeWriteback(input, new Date(input.completedAt ?? new Date()))\n\n if (existing.writeback) {\n if (actionRunPhaseRecordsEqual(existing.writeback, writeback)) {\n return cloneActionRunRecord(existing)\n }\n\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' already has a different writeback record.`\n )\n }\n\n const next: ActionRunRecord = {\n ...existing,\n phase: \"writeback\",\n writeback,\n }\n\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n })\n }\n\n async recordEffects(input: RecordActionEffectsInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.requireRunningRun(key, input.projectId, input.id, \"record effects\")\n const effects = normalizeEffects(input, new Date(input.completedAt ?? new Date()))\n\n if (existing.effects) {\n if (actionRunPhaseRecordsEqual(existing.effects, effects)) {\n return cloneActionRunRecord(existing)\n }\n\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' already has a different effects record.`\n )\n }\n\n const next: ActionRunRecord = {\n ...existing,\n phase: \"effects\",\n effects,\n }\n\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n })\n }\n\n async finish(input: FinishActionRunInput): Promise<ActionRunRecord> {\n return this.runRootOperation(() => {\n const key = actionRunKey(input.projectId, input.id)\n const existing = this.rows.get(key)\n\n if (!existing) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' not found for project '${input.projectId}'.`\n )\n }\n\n if (isTerminalActionRun(existing)) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.id}' cannot finish from terminal status '${existing.status}'.`\n )\n }\n\n const phase =\n input.status === \"succeeded\" ? (input.phase ?? existing.phase) : input.error.details.phase\n\n const base: ActionRunRecord = {\n ...existing,\n status: input.status,\n phase,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n }\n\n const next: ActionRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n error: undefined,\n }\n : {\n ...base,\n error: normalizeError(input.error),\n }\n\n this.rows.set(key, structuredClone(next))\n return cloneActionRunRecord(next)\n })\n }\n\n private requireRunningRun(\n key: string,\n projectId: string,\n id: string,\n operation: string\n ): ActionRunRecord {\n const existing = this.rows.get(key)\n\n if (!existing) {\n throw new ActionRunError(`[Sixb] Action run '${id}' not found for project '${projectId}'.`)\n }\n\n if (existing.status !== \"running\") {\n throw new ActionRunError(\n `[Sixb] Action run '${id}' cannot ${operation} from status '${existing.status}'.`\n )\n }\n\n return existing\n }\n\n async getById(params: { projectId: string; id: string }): Promise<ActionRunRecord | null> {\n return this.runRootOperation(() => {\n const record = this.rows.get(actionRunKey(params.projectId, params.id))\n return record ? cloneActionRunRecord(record) : null\n })\n }\n\n async list(input: ListActionRunsInput): Promise<ListActionRunsResult> {\n return this.runRootOperation(() => {\n if (input.actionIds?.length === 0) {\n return { runs: [], hasMore: false, total: 0 }\n }\n\n const order = input.order ?? \"desc\"\n const offset = input.offset ?? 0\n const limit = input.limit ?? this.rows.size\n const actionIds = input.actionIds ? new Set(input.actionIds) : null\n const objectTypeIds = input.objectTypeIds ? new Set(input.objectTypeIds) : null\n const statuses = input.statuses ? new Set(input.statuses) : null\n\n const filtered = [...this.rows.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) => (input.actionId ? record.actionId === input.actionId : true))\n .filter((record) => (actionIds ? actionIds.has(record.actionId) : true))\n .filter((record) =>\n objectTypeIds\n ? record.subject.kind !== \"object\" || objectTypeIds.has(record.subject.objectTypeId)\n : true\n )\n .filter((record) =>\n input.subject ? actionSubjectsEqual(record.subject, input.subject) : true\n )\n .filter((record) =>\n input.objectTypeId\n ? record.subject.kind === \"object\" && record.subject.objectTypeId === input.objectTypeId\n : true\n )\n .filter((record) =>\n input.primaryId\n ? record.subject.kind === \"object\" && record.subject.primaryId === input.primaryId\n : true\n )\n .filter((record) => (statuses ? statuses.has(record.status) : true))\n .filter((record) =>\n input.startedAfter ? (record.startedAt ?? record.queuedAt) >= input.startedAfter : true\n )\n .filter((record) =>\n input.startedBefore ? (record.startedAt ?? record.queuedAt) <= input.startedBefore : true\n )\n .sort((a, b) => compareRuns(a, b, order))\n\n const total = filtered.length\n const runs = filtered.slice(offset, offset + limit).map(cloneActionRunRecord)\n return { runs, hasMore: offset + runs.length < total, total }\n })\n }\n\n private requireMaterializationRun(input: LockActionMaterializationRunInput): ActionRunRecord {\n assertNonBlank(input.projectId, \"projectId\")\n assertNonBlank(input.runId, \"runId\")\n assertNonBlank(input.actionId, \"actionId\")\n\n const existing = this.rows.get(actionRunKey(input.projectId, input.runId))\n if (!existing) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.runId}' not found for project '${input.projectId}'.`\n )\n }\n if (existing.actionId !== input.actionId) {\n throw new ActionRunError(\n `[Sixb] Action run '${input.runId}' does not belong to action '${input.actionId}'.`\n )\n }\n if (existing.status !== \"running\") {\n throw new ActionRunError(\n `[Sixb] Action run '${input.runId}' cannot materialize from status '${existing.status}'.`\n )\n }\n return existing\n }\n}\n\nexport type InMemoryActionRunStorageSnapshot = Map<string, ActionRunRecord>\n",
7
- "import type { FileRef } from \"../blob-storage\"\nimport type { JsonValue } from \"../json\"\nimport type { AgentContextPart } from \"./context\"\n\n/**\n * The agent's own, SDK-independent message. We store messages and threads — not an SDK transport —\n * so a message is just a `role` plus structured `parts` (and optional `metadata`). There is no\n * self-describing wrapper: the storage row owns the message's identity, and `contentVersion` (a\n * column) versions the parts shape so it can be migrated.\n *\n * The part union is intentionally focused on what V1 agents actually produce (text, reasoning, step\n * boundaries, tool calls). It is extensible: adding a part kind later is non-breaking. The adapter\n * `fromAiSdk` is total — it throws on any part it cannot model rather than dropping it silently,\n * which both prevents data loss and signals exactly when the union must grow.\n */\nexport const AGENT_MESSAGE_CONTENT_VERSION = 1 as const\n\nexport type AgentMessageRole = \"system\" | \"user\" | \"assistant\"\n\n/** A plain text part (assistant output, user input, or system text). */\nexport interface AgentTextPart {\n readonly type: \"text\"\n readonly text: string\n /** Provider passthrough (kept because some providers require it on the next turn). */\n readonly providerMetadata?: JsonValue\n}\n\n/**\n * A reasoning (\"thinking\") part. `providerMetadata` is load-bearing here: some providers require\n * the reasoning signature back on the following turn, so dropping it would break multi-step loops.\n */\nexport interface AgentReasoningPart {\n readonly type: \"reasoning\"\n readonly text: string\n readonly providerMetadata?: JsonValue\n}\n\n/** A step boundary between assistant loop iterations. */\nexport interface AgentStepStartPart {\n readonly type: \"step-start\"\n}\n\n/** A blob-backed file attached to a user message or produced by an agent/tool. */\nexport interface AgentFilePart {\n readonly type: \"file\"\n readonly fileRef: FileRef\n /** Provider passthrough for future model-specific file handling. */\n readonly providerMetadata?: JsonValue\n}\n\ninterface AgentToolCallBase {\n readonly type: \"tool-call\"\n readonly toolCallId: string\n readonly toolName: string\n /** `true` when reconstructed from an SDK `dynamic-tool` part (vs a static `tool-${name}` part). */\n readonly dynamic?: boolean\n /** `true` when the provider executed the tool inline (steers model projection). V1 = `false`. */\n readonly providerExecuted?: boolean\n readonly input: JsonValue\n readonly providerMetadata?: JsonValue\n}\n\n/**\n * A completed tool call. Only terminal states are modelled — transient states\n * (`input-streaming`, `input-available`, `approval-*`) are never persisted because messages are\n * written only once a run finishes.\n */\nexport type AgentToolCallPart = AgentToolCallBase &\n (\n | { readonly state: \"output-available\"; readonly output: JsonValue }\n | { readonly state: \"output-error\"; readonly errorText: string }\n )\n\nexport type AgentMessagePart =\n | AgentTextPart\n | AgentReasoningPart\n | AgentStepStartPart\n | AgentFilePart\n | AgentContextPart\n | AgentToolCallPart\n\nexport type AgentMessagePartType = AgentMessagePart[\"type\"]\nexport type AgentToolCallState = AgentToolCallPart[\"state\"]\n\n/** The logical agent message the adapters speak and the store persists (as columns). */\nexport interface AgentMessage {\n readonly role: AgentMessageRole\n readonly parts: readonly AgentMessagePart[]\n /** Message-level metadata (mirrors `UIMessage.metadata`). */\n readonly metadata?: JsonValue\n}\n",
8
- "import { AGENT_MESSAGE_CONTENT_VERSION } from \"../../agents/message\"\nimport { principalsEqual } from \"../../auth\"\nimport { normalizeRequesterGroupIds } from \"../../auth/attribution\"\nimport { parseSixbFailure } from \"../../errors/internal\"\nimport type { SixbFailure } from \"../../errors/types\"\nimport type { ExecutionStorage } from \"../executions\"\nimport { AgentStorageError } from \"./errors\"\nimport {\n agentContextCheckpointMatchesCreateInput,\n assertAgentContextCheckpointAnchors,\n assertAgentContextCheckpointAuthority,\n assertAgentContextCheckpointReplayState,\n assertAgentRunExecution,\n assertCreateAgentContextCheckpointInput,\n} from \"./provider\"\nimport type {\n AgentContextCheckpointRecord,\n AgentContextCheckpointStore,\n AgentMessageRecord,\n AgentMessageStore,\n AgentRunFailureCode,\n AgentRunRecord,\n AgentRunStore,\n AgentStorage,\n AgentThreadRecord,\n AgentThreadStore,\n AppendAgentMessageInput,\n ConfirmAgentRunExecutionOwnershipInput,\n CreateAgentContextCheckpointInput,\n CreateAgentRunInput,\n CreateAgentThreadInput,\n DeleteAgentMessagesByRunInput,\n FinishAgentRunInput,\n FinishQueuedAgentRunInput,\n ListAgentMessagesInput,\n ListAgentMessagesResult,\n ListAgentRunsInput,\n ListAgentRunsResult,\n ListAgentThreadsInput,\n ListAgentThreadsResult,\n ReclaimAgentRunInput,\n StartAgentRunInput,\n} from \"./types\"\nimport { AGENT_RUN_FAILURE_CODES } from \"./types\"\n\nfunction normalizeFailure(\n failure: SixbFailure<AgentRunFailureCode> | undefined\n): SixbFailure<AgentRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, AGENT_RUN_FAILURE_CODES) : undefined\n}\n\nfunction key(projectId: string, id: string): string {\n return `${projectId}:${id}`\n}\n\nfunction clone<T>(value: T): T {\n return structuredClone(value)\n}\n\nfunction compareByDate(\n left: Date | undefined,\n right: Date | undefined,\n leftId: string,\n rightId: string,\n order: \"asc\" | \"desc\"\n): number {\n const delta = (left?.getTime() ?? 0) - (right?.getTime() ?? 0)\n if (delta !== 0) {\n return order === \"asc\" ? delta : -delta\n }\n if (leftId === rightId) {\n return 0\n }\n return order === \"asc\" ? leftId.localeCompare(rightId) : rightId.localeCompare(leftId)\n}\n\ninterface Window<T> {\n readonly page: T[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nfunction applyWindow<T>(rows: T[], offset = 0, limit?: number): Window<T> {\n const total = rows.length\n const end = limit === undefined ? total : offset + limit\n const page = rows.slice(offset, end)\n return { page, hasMore: offset + page.length < total, total }\n}\n\n/**\n * Shared in-memory state behind the four sub-stores. They are tiered for ergonomics\n * (`storage.runs.create(...)`), but several operations span tables — creating/finishing a run\n * updates the thread anchor, appending a message bumps thread stats, and checkpoint creation reads\n * run/thread/message anchors — so they all read and write the same maps through this object.\n */\ninterface AgentStoreState {\n readonly threads: Map<string, AgentThreadRecord>\n readonly runs: Map<string, AgentRunRecord>\n readonly messages: Map<string, AgentMessageRecord>\n readonly checkpoints: Map<string, AgentContextCheckpointRecord>\n}\n\nexport interface InMemoryAgentStorageSnapshot {\n readonly threads: Map<string, AgentThreadRecord>\n readonly runs: Map<string, AgentRunRecord>\n readonly messages: Map<string, AgentMessageRecord>\n readonly checkpoints: Map<string, AgentContextCheckpointRecord>\n}\n\n// ── threads ───────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentThreadStore implements AgentThreadStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async create(input: CreateAgentThreadInput): Promise<AgentThreadRecord> {\n const threadKey = key(input.projectId, input.id)\n if (this.state.threads.has(threadKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent thread '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const record: AgentThreadRecord = {\n id: input.id,\n projectId: input.projectId,\n agentId: input.agentId,\n ownerPrincipal: clone(input.ownerPrincipal),\n ...(input.title === undefined ? {} : { title: input.title }),\n status: input.status ?? \"active\",\n activeRunId: null,\n messageCount: 0,\n createdAt,\n updatedAt: new Date(input.updatedAt ?? createdAt),\n }\n\n this.state.threads.set(threadKey, clone(record))\n return clone(record)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentThreadRecord | null> {\n const record = this.state.threads.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async list(input: ListAgentThreadsInput): Promise<ListAgentThreadsResult> {\n const order = input.order ?? \"desc\"\n const statuses = input.statuses ? new Set(input.statuses) : null\n const agentIds = input.agentIds ? new Set(input.agentIds) : null\n\n const filtered = [...this.state.threads.values()]\n .filter((thread) => thread.projectId === input.projectId)\n .filter((thread) => (input.agentId ? thread.agentId === input.agentId : true))\n .filter((thread) => (agentIds ? agentIds.has(thread.agentId) : true))\n .filter((thread) => (statuses ? statuses.has(thread.status) : true))\n .filter((thread) =>\n input.ownerPrincipal ? principalsEqual(thread.ownerPrincipal, input.ownerPrincipal) : true\n )\n .sort((a, b) =>\n compareByDate(\n a.lastMessageAt ?? a.createdAt,\n b.lastMessageAt ?? b.createdAt,\n a.id,\n b.id,\n order\n )\n )\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { threads: page.map(clone), hasMore, total }\n }\n}\n\n// ── runs ──────────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentRunStore implements AgentRunStore {\n constructor(\n private readonly state: AgentStoreState,\n private readonly executions: ExecutionStorage\n ) {}\n\n async create(input: CreateAgentRunInput): Promise<AgentRunRecord> {\n await assertAgentRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n agentId: input.agentId,\n })\n // No `await` between read and write: the in-memory critical section is atomic, so two concurrent\n // queued runs on the same thread cannot both win — the second observes `activeRunId` set.\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n if (thread.activeRunId !== null) {\n throw new AgentStorageError(\n \"active_run_exists\",\n `[Sixb] Agent thread '${input.threadId}' already has an active run '${thread.activeRunId}'.`\n )\n }\n\n const runKey = key(input.projectId, input.id)\n if (this.state.runs.has(runKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n if (\n [...this.state.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Execution '${input.executionId}' already belongs to another Agent run.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const run: AgentRunRecord = {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n threadId: input.threadId,\n agentId: input.agentId,\n triggerMessageId: input.triggerMessageId,\n requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),\n status: \"queued\",\n attempt: 0,\n createdAt,\n }\n this.state.runs.set(runKey, clone(run))\n\n const updatedThread: AgentThreadRecord = {\n ...thread,\n activeRunId: run.id,\n updatedAt: createdAt,\n }\n this.state.threads.set(threadKey, clone(updatedThread))\n\n return clone(run)\n }\n\n async start(input: StartAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireStatus(input.projectId, input.id, \"queued\")\n const startedAt = new Date(input.startedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: \"running\",\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n attempt: 1,\n execution: clone(input.execution),\n startedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async finishQueued(input: FinishQueuedAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireStatus(input.projectId, input.id, \"queued\")\n const completedAt = new Date(input.completedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: input.status,\n ...(input.error === undefined ? {} : { error: normalizeFailure(input.error) }),\n completedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n this.releaseThread(run, completedAt)\n return clone(next)\n }\n\n async reclaim(input: ReclaimAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n const next: AgentRunRecord = {\n ...run,\n attempt: run.attempt + 1,\n execution: clone(input.execution),\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async confirmExecutionOwnership(\n input: ConfirmAgentRunExecutionOwnershipInput\n ): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n if (!run.execution || run.execution.token !== input.executionToken) {\n throw new AgentStorageError(\n \"execution_lost\",\n `[Sixb] Execution token is no longer current on agent run '${input.id}'.`\n )\n }\n\n const next: AgentRunRecord = {\n ...run,\n execution: {\n ...run.execution,\n queueLeaseExpiresAt: new Date(\n Math.max(run.execution.queueLeaseExpiresAt.getTime(), input.queueLeaseExpiresAt.getTime())\n ),\n },\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async finish(input: FinishAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n if (!run.execution || run.execution.token !== input.executionToken) {\n throw new AgentStorageError(\n \"execution_lost\",\n `[Sixb] Execution token is no longer current on agent run '${input.id}'.`\n )\n }\n\n const completedAt = new Date(input.completedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: input.status,\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n ...(input.finishReason === undefined ? {} : { finishReason: input.finishReason }),\n ...(input.diagnostics === undefined ? {} : { diagnostics: clone(input.diagnostics) }),\n ...(input.status === \"succeeded\" || input.error === undefined\n ? {}\n : { error: normalizeFailure(input.error) }),\n execution: undefined,\n completedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n\n this.releaseThread(run, completedAt)\n\n return clone(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentRunRecord | null> {\n const record = this.state.runs.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async getByIds(params: {\n projectId: string\n ids: readonly string[]\n }): Promise<readonly AgentRunRecord[]> {\n return [...new Set(params.ids)]\n .map((id) => this.state.runs.get(key(params.projectId, id)))\n .filter((record): record is AgentRunRecord => record !== undefined)\n .map(clone)\n }\n\n async list(input: ListAgentRunsInput): Promise<ListAgentRunsResult> {\n const order = input.order ?? \"desc\"\n const statuses = input.statuses ? new Set(input.statuses) : null\n\n const filtered = [...this.state.runs.values()]\n .filter((run) => run.projectId === input.projectId)\n .filter((run) => (input.threadId ? run.threadId === input.threadId : true))\n .filter((run) => (input.agentId ? run.agentId === input.agentId : true))\n .filter((run) => (statuses ? statuses.has(run.status) : true))\n .filter((run) =>\n input.startedAfter ? (run.startedAt ?? run.createdAt) >= input.startedAfter : true\n )\n .filter((run) =>\n input.startedBefore ? (run.startedAt ?? run.createdAt) <= input.startedBefore : true\n )\n .sort((a, b) =>\n compareByDate(a.startedAt ?? a.createdAt, b.startedAt ?? b.createdAt, a.id, b.id, order)\n )\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { runs: page.map(clone), hasMore, total }\n }\n\n private requireRunning(projectId: string, id: string): AgentRunRecord {\n return this.requireStatus(projectId, id, \"running\")\n }\n\n private requireStatus(\n projectId: string,\n id: string,\n status: AgentRunRecord[\"status\"]\n ): AgentRunRecord {\n const run = this.state.runs.get(key(projectId, id))\n if (!run) {\n throw new AgentStorageError(\n \"run_not_found\",\n `[Sixb] Agent run '${id}' not found for project '${projectId}'.`\n )\n }\n if (run.status !== status) {\n throw new AgentStorageError(\n \"invalid_state\",\n `[Sixb] Agent run '${id}' is not ${status} (status '${run.status}').`\n )\n }\n return run\n }\n\n private releaseThread(run: AgentRunRecord, completedAt: Date): void {\n const threadKey = key(run.projectId, run.threadId)\n const thread = this.state.threads.get(threadKey)\n if (thread && thread.activeRunId === run.id) {\n this.state.threads.set(\n threadKey,\n clone({ ...thread, activeRunId: null, updatedAt: completedAt })\n )\n }\n }\n}\n\n// ── messages ──────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentMessageStore implements AgentMessageStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async append(input: AppendAgentMessageInput): Promise<AgentMessageRecord> {\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n\n const messageKey = key(input.projectId, input.id)\n if (this.state.messages.has(messageKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent message '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n if (input.runId !== null && !this.state.runs.has(key(input.projectId, input.runId))) {\n throw new AgentStorageError(\n \"run_not_found\",\n `[Sixb] Agent run '${input.runId}' not found for project '${input.projectId}'.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const seq = this.nextSeq(input.projectId, input.threadId)\n const message: AgentMessageRecord = {\n id: input.id,\n projectId: input.projectId,\n threadId: input.threadId,\n runId: input.runId,\n role: input.role,\n ...(input.authorPrincipal === undefined\n ? {}\n : { authorPrincipal: clone(input.authorPrincipal) }),\n seq,\n parts: clone(input.parts),\n ...(input.metadata === undefined ? {} : { metadata: clone(input.metadata) }),\n contentVersion: AGENT_MESSAGE_CONTENT_VERSION,\n createdAt,\n ...(input.completedAt === undefined ? {} : { completedAt: new Date(input.completedAt) }),\n }\n this.state.messages.set(messageKey, clone(message))\n\n this.state.threads.set(\n threadKey,\n clone({\n ...thread,\n messageCount: thread.messageCount + 1,\n lastMessageAt: createdAt,\n updatedAt: createdAt,\n })\n )\n\n return clone(message)\n }\n\n async deleteByRunId(input: DeleteAgentMessagesByRunInput): Promise<number> {\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n\n const messages = [...this.state.messages.entries()].filter(\n ([, message]) =>\n message.projectId === input.projectId &&\n message.threadId === input.threadId &&\n message.runId === input.runId\n )\n if (messages.length === 0) {\n return 0\n }\n\n for (const [messageKey] of messages) {\n this.state.messages.delete(messageKey)\n }\n\n const remainingMessages = [...this.state.messages.values()]\n .filter(\n (message) => message.projectId === input.projectId && message.threadId === input.threadId\n )\n .sort((left, right) => right.seq - left.seq)\n const latestMessage = remainingMessages[0]\n const updatedAt = new Date()\n this.state.threads.set(\n threadKey,\n clone({\n ...thread,\n messageCount: remainingMessages.length,\n lastMessageAt: latestMessage?.createdAt,\n updatedAt,\n })\n )\n\n return messages.length\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentMessageRecord | null> {\n const record = this.state.messages.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async list(input: ListAgentMessagesInput): Promise<ListAgentMessagesResult> {\n const order = input.order ?? \"asc\"\n const roles = input.roles ? new Set(input.roles) : null\n\n const filtered = [...this.state.messages.values()]\n .filter((message) => message.projectId === input.projectId)\n .filter((message) => message.threadId === input.threadId)\n .filter((message) => (input.afterSeq === undefined ? true : message.seq > input.afterSeq))\n .filter((message) => (roles ? roles.has(message.role) : true))\n .sort((a, b) => (order === \"asc\" ? a.seq - b.seq : b.seq - a.seq))\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { messages: page.map(clone), hasMore, total }\n }\n\n private nextSeq(projectId: string, threadId: string): number {\n let max = 0\n for (const message of this.state.messages.values()) {\n if (message.projectId === projectId && message.threadId === threadId && message.seq > max) {\n max = message.seq\n }\n }\n return max + 1\n }\n}\n\n// ── context checkpoints ──────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentContextCheckpointStore implements AgentContextCheckpointStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async create(input: CreateAgentContextCheckpointInput): Promise<AgentContextCheckpointRecord> {\n assertCreateAgentContextCheckpointInput(input)\n\n // No `await` between authority checks and append: this is one in-memory critical section.\n const run = this.state.runs.get(key(input.projectId, input.createdByRunId)) ?? null\n const thread = this.state.threads.get(key(input.projectId, input.threadId)) ?? null\n assertAgentContextCheckpointAuthority({ create: input, run, thread })\n\n const messages = [...this.state.messages.values()].filter(\n (message) => message.projectId === input.projectId && message.threadId === input.threadId\n )\n const headSeq = messages.reduce((head, message) => Math.max(head, message.seq), 0)\n const latest = this.findLatest(input.projectId, input.threadId)\n\n const existingForRun = [...this.state.checkpoints.values()].find(\n (checkpoint) =>\n checkpoint.projectId === input.projectId &&\n checkpoint.createdByRunId === input.createdByRunId\n )\n if (existingForRun) {\n if (agentContextCheckpointMatchesCreateInput(existingForRun, input)) {\n assertAgentContextCheckpointReplayState({\n create: input,\n existing: existingForRun,\n latest,\n headSeq,\n })\n return clone(existingForRun)\n }\n throw new AgentStorageError(\n \"invalid_state\",\n `[Sixb] Agent run '${input.createdByRunId}' already created a different context checkpoint.`\n )\n }\n\n if (this.state.checkpoints.has(key(input.projectId, input.id))) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent context checkpoint '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const firstRetained =\n messages\n .filter((message) => message.seq > input.summarizedThroughSeq)\n .sort((left, right) => left.seq - right.seq)[0] ?? null\n assertAgentContextCheckpointAnchors({\n create: input,\n latest,\n headSeq,\n firstRetained,\n })\n\n const record: AgentContextCheckpointRecord = {\n id: input.id,\n projectId: input.projectId,\n threadId: input.threadId,\n createdByRunId: input.createdByRunId,\n ...(input.expectedPreviousCheckpointId === null\n ? {}\n : { previousCheckpointId: input.expectedPreviousCheckpointId }),\n reason: input.reason,\n summary: input.summary,\n summaryFormatVersion: input.summaryFormatVersion,\n summarizedThroughSeq: input.summarizedThroughSeq,\n observedHeadSeq: input.observedHeadSeq,\n estimatedInputTokensBefore: input.estimatedInputTokensBefore,\n estimatedInputTokensAfter: input.estimatedInputTokensAfter,\n summaryModelId: input.summaryModelId,\n createdAt: new Date(input.createdAt ?? new Date()),\n }\n this.state.checkpoints.set(key(input.projectId, input.id), clone(record))\n return clone(record)\n }\n\n async getLatest(input: {\n readonly projectId: string\n readonly threadId: string\n }): Promise<AgentContextCheckpointRecord | null> {\n const record = this.findLatest(input.projectId, input.threadId)\n return record ? clone(record) : null\n }\n\n async getByRunIds(input: {\n readonly projectId: string\n readonly runIds: readonly string[]\n }): Promise<readonly AgentContextCheckpointRecord[]> {\n const byRunId = new Map(\n [...this.state.checkpoints.values()]\n .filter((checkpoint) => checkpoint.projectId === input.projectId)\n .map((checkpoint) => [checkpoint.createdByRunId, checkpoint] as const)\n )\n return [...new Set(input.runIds)].flatMap((runId) => {\n const checkpoint = byRunId.get(runId)\n return checkpoint ? [clone(checkpoint)] : []\n })\n }\n\n private findLatest(projectId: string, threadId: string): AgentContextCheckpointRecord | null {\n return (\n [...this.state.checkpoints.values()]\n .filter(\n (checkpoint) => checkpoint.projectId === projectId && checkpoint.threadId === threadId\n )\n .sort(\n (left, right) =>\n right.summarizedThroughSeq - left.summarizedThroughSeq ||\n right.createdAt.getTime() - left.createdAt.getTime() ||\n right.id.localeCompare(left.id)\n )[0] ?? null\n )\n }\n}\n\nexport class InMemoryAgentStorage implements AgentStorage {\n private readonly state: AgentStoreState = {\n threads: new Map(),\n runs: new Map(),\n messages: new Map(),\n checkpoints: new Map(),\n }\n\n readonly threads: InMemoryAgentThreadStore\n readonly runs: InMemoryAgentRunStore\n readonly messages: InMemoryAgentMessageStore\n readonly checkpoints: InMemoryAgentContextCheckpointStore\n\n constructor(executions: ExecutionStorage) {\n this.threads = new InMemoryAgentThreadStore(this.state)\n this.runs = new InMemoryAgentRunStore(this.state, executions)\n this.messages = new InMemoryAgentMessageStore(this.state)\n this.checkpoints = new InMemoryAgentContextCheckpointStore(this.state)\n }\n\n snapshot(): InMemoryAgentStorageSnapshot {\n return {\n threads: structuredClone(this.state.threads),\n runs: structuredClone(this.state.runs),\n messages: structuredClone(this.state.messages),\n checkpoints: structuredClone(this.state.checkpoints),\n }\n }\n\n restore(snapshot: InMemoryAgentStorageSnapshot): void {\n replace(this.state.threads, snapshot.threads)\n replace(this.state.runs, snapshot.runs)\n replace(this.state.messages, snapshot.messages)\n replace(this.state.checkpoints, snapshot.checkpoints)\n }\n}\n\nfunction replace<T>(target: Map<string, T>, source: Map<string, T>): void {\n target.clear()\n for (const [k, value] of structuredClone(source)) {\n target.set(k, value)\n }\n}\n",
7
+ "import type { FileRef } from \"../blob-storage\"\nimport type { JsonValue } from \"../json\"\nimport type { ProviderData } from \"../models\"\nimport type { AgentContextPart } from \"./context\"\n\n/**\n * The agent's own, SDK-independent message. We store messages and threads — not an SDK transport —\n * so a message is just a `role` plus structured `parts` (and optional `metadata`). There is no\n * self-describing wrapper: the storage row owns the message's identity, and `contentVersion` (a\n * column) versions the parts shape so it can be migrated.\n *\n * The part union is intentionally focused on what agent runs actually produce (text, reasoning, step\n * boundaries, tool calls). It is extensible: adding a part kind later is non-breaking. The adapter\n * `fromUiMessage` is total — it throws on any part it cannot model rather than dropping it silently,\n * which both prevents data loss and signals exactly when the union must grow.\n */\nexport const AGENT_MESSAGE_CONTENT_VERSION = 2 as const\n\nexport type AgentMessageRole = \"system\" | \"user\" | \"assistant\"\n\n/** A plain text part (assistant output, user input, or system text). */\nexport interface AgentTextPart {\n readonly type: \"text\"\n readonly text: string\n /** Provider passthrough (kept because some providers require it on the next turn). */\n readonly providerMetadata?: ProviderData\n}\n\n/**\n * A reasoning (\"thinking\") part. `providerMetadata` is load-bearing here: some providers require\n * the reasoning signature back on the following turn, so dropping it would break multi-step loops.\n */\nexport interface AgentReasoningPart {\n readonly type: \"reasoning\"\n readonly text: string\n readonly providerMetadata?: ProviderData\n}\n\n/** A step boundary between assistant loop iterations. */\nexport interface AgentStepStartPart {\n readonly type: \"step-start\"\n}\n\n/** A blob-backed file attached to a user message or produced by an agent/tool. */\nexport interface AgentFilePart {\n readonly type: \"file\"\n readonly fileRef: FileRef\n /** Provider passthrough for future model-specific file handling. */\n readonly providerMetadata?: ProviderData\n}\n\ninterface AgentToolCallBase {\n readonly type: \"tool-call\"\n readonly toolCallId: string\n readonly toolName: string\n /** `true` when reconstructed from a dynamic tool part (vs a static `tool-${name}` part). */\n readonly dynamic?: boolean\n /** `true` when the provider executed the tool inline (steers model projection). */\n readonly providerExecuted?: boolean\n readonly input: JsonValue\n readonly providerMetadata?: ProviderData\n}\n\n/** Ordered, hidden provider state required to replay a model response losslessly. */\nexport interface AgentProviderStatePart {\n readonly type: \"provider-state\"\n readonly providerId: string\n readonly data: JsonValue\n}\n\n/**\n * A completed tool call. Only terminal states are modelled — transient states\n * (`input-streaming`, `input-available`, `approval-*`) are never persisted because messages are\n * written only once a run finishes.\n */\nexport type AgentToolCallPart = AgentToolCallBase &\n (\n | { readonly state: \"output-available\"; readonly output: JsonValue }\n | { readonly state: \"output-error\"; readonly errorText: string }\n )\n\nexport type AgentMessagePart =\n | AgentTextPart\n | AgentReasoningPart\n | AgentStepStartPart\n | AgentFilePart\n | AgentContextPart\n | AgentToolCallPart\n | AgentProviderStatePart\n\nexport type AgentMessagePartType = AgentMessagePart[\"type\"]\nexport type AgentToolCallState = AgentToolCallPart[\"state\"]\n\n/** The logical agent message the adapters speak and the store persists (as columns). */\nexport interface AgentMessage {\n readonly role: AgentMessageRole\n readonly parts: readonly AgentMessagePart[]\n /** Message-level metadata (mirrors `UIMessage.metadata`). */\n readonly metadata?: JsonValue\n}\n",
8
+ "import { AGENT_MESSAGE_CONTENT_VERSION } from \"../../agents/message\"\nimport { principalsEqual } from \"../../auth\"\nimport { normalizeRequesterGroupIds } from \"../../auth/attribution\"\nimport { parseSixbFailure } from \"../../errors/internal\"\nimport type { SixbFailure } from \"../../errors/types\"\nimport type { ExecutionStorage } from \"../executions\"\nimport { AgentStorageError } from \"./errors\"\nimport {\n agentContextCheckpointMatchesCreateInput,\n assertAgentContextCheckpointAnchors,\n assertAgentContextCheckpointAuthority,\n assertAgentContextCheckpointReplayState,\n assertAgentRunExecution,\n assertConversationAgentRunSpec,\n assertCreateAgentContextCheckpointInput,\n assertCreateSubagentRunInput,\n assertSubagentRunResult,\n subagentRunMatchesCreateInput,\n} from \"./provider\"\nimport type {\n AgentContextCheckpointRecord,\n AgentContextCheckpointStore,\n AgentMessageRecord,\n AgentMessageStore,\n AgentRunFailureCode,\n AgentRunRecord,\n AgentRunStore,\n AgentStorage,\n AgentThreadRecord,\n AgentThreadStore,\n AppendAgentMessageInput,\n ConfirmAgentRunExecutionOwnershipInput,\n ConversationAgentRunRecord,\n CreateAgentContextCheckpointInput,\n CreateAgentRunInput,\n CreateAgentThreadInput,\n CreateSubagentRunInput,\n DeleteAgentMessagesByRunInput,\n FinishAgentRunInput,\n FinishQueuedAgentRunInput,\n ListAgentMessagesInput,\n ListAgentMessagesResult,\n ListAgentRunsInput,\n ListAgentRunsResult,\n ListAgentThreadsInput,\n ListAgentThreadsResult,\n ReclaimAgentRunInput,\n StartAgentRunInput,\n SubagentRunRecord,\n} from \"./types\"\nimport { AGENT_RUN_FAILURE_CODES } from \"./types\"\n\nfunction normalizeFailure(\n failure: SixbFailure<AgentRunFailureCode> | undefined\n): SixbFailure<AgentRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, AGENT_RUN_FAILURE_CODES) : undefined\n}\n\nfunction key(projectId: string, id: string): string {\n return `${projectId}:${id}`\n}\n\nfunction clone<T>(value: T): T {\n return structuredClone(value)\n}\n\nfunction compareByDate(\n left: Date | undefined,\n right: Date | undefined,\n leftId: string,\n rightId: string,\n order: \"asc\" | \"desc\"\n): number {\n const delta = (left?.getTime() ?? 0) - (right?.getTime() ?? 0)\n if (delta !== 0) {\n return order === \"asc\" ? delta : -delta\n }\n if (leftId === rightId) {\n return 0\n }\n return order === \"asc\" ? leftId.localeCompare(rightId) : rightId.localeCompare(leftId)\n}\n\ninterface Window<T> {\n readonly page: T[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nfunction applyWindow<T>(rows: T[], offset = 0, limit?: number): Window<T> {\n const total = rows.length\n const end = limit === undefined ? total : offset + limit\n const page = rows.slice(offset, end)\n return { page, hasMore: offset + page.length < total, total }\n}\n\n/**\n * Shared in-memory state behind the four sub-stores. They are tiered for ergonomics\n * (`storage.runs.create(...)`), but several operations span tables — creating/finishing a run\n * updates the thread anchor, appending a message bumps thread stats, and checkpoint creation reads\n * run/thread/message anchors — so they all read and write the same maps through this object.\n */\ninterface AgentStoreState {\n readonly threads: Map<string, AgentThreadRecord>\n readonly runs: Map<string, AgentRunRecord>\n readonly messages: Map<string, AgentMessageRecord>\n readonly checkpoints: Map<string, AgentContextCheckpointRecord>\n}\n\nexport interface InMemoryAgentStorageSnapshot {\n readonly threads: Map<string, AgentThreadRecord>\n readonly runs: Map<string, AgentRunRecord>\n readonly messages: Map<string, AgentMessageRecord>\n readonly checkpoints: Map<string, AgentContextCheckpointRecord>\n}\n\n// ── threads ───────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentThreadStore implements AgentThreadStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async create(input: CreateAgentThreadInput): Promise<AgentThreadRecord> {\n const threadKey = key(input.projectId, input.id)\n if (this.state.threads.has(threadKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent thread '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const record: AgentThreadRecord = {\n id: input.id,\n projectId: input.projectId,\n ownerPrincipal: clone(input.ownerPrincipal),\n ...(input.title === undefined ? {} : { title: input.title }),\n status: input.status ?? \"active\",\n activeRunId: null,\n messageCount: 0,\n createdAt,\n updatedAt: new Date(input.updatedAt ?? createdAt),\n }\n\n this.state.threads.set(threadKey, clone(record))\n return clone(record)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentThreadRecord | null> {\n const record = this.state.threads.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async list(input: ListAgentThreadsInput): Promise<ListAgentThreadsResult> {\n const order = input.order ?? \"desc\"\n const statuses = input.statuses ? new Set(input.statuses) : null\n const filtered = [...this.state.threads.values()]\n .filter((thread) => thread.projectId === input.projectId)\n .filter((thread) => (statuses ? statuses.has(thread.status) : true))\n .filter((thread) =>\n input.ownerPrincipal ? principalsEqual(thread.ownerPrincipal, input.ownerPrincipal) : true\n )\n .sort((a, b) =>\n compareByDate(\n a.lastMessageAt ?? a.createdAt,\n b.lastMessageAt ?? b.createdAt,\n a.id,\n b.id,\n order\n )\n )\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { threads: page.map(clone), hasMore, total }\n }\n}\n\n// ── runs ──────────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentRunStore implements AgentRunStore {\n constructor(\n private readonly state: AgentStoreState,\n private readonly executions: ExecutionStorage\n ) {}\n\n async create(input: CreateAgentRunInput): Promise<ConversationAgentRunRecord> {\n assertConversationAgentRunSpec(input.spec)\n await assertAgentRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n })\n // No `await` between read and write: the in-memory critical section is atomic, so two concurrent\n // queued runs on the same thread cannot both win — the second observes `activeRunId` set.\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n if (thread.activeRunId !== null) {\n throw new AgentStorageError(\n \"active_run_exists\",\n `[Sixb] Agent thread '${input.threadId}' already has an active run '${thread.activeRunId}'.`\n )\n }\n\n const runKey = key(input.projectId, input.id)\n if (this.state.runs.has(runKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n if (\n [...this.state.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Execution '${input.executionId}' already belongs to another Agent run.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const run: ConversationAgentRunRecord = {\n kind: \"conversation\",\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n threadId: input.threadId,\n triggerMessageId: input.triggerMessageId,\n spec: clone(input.spec),\n requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),\n status: \"queued\",\n attempt: 0,\n createdAt,\n }\n this.state.runs.set(runKey, clone(run))\n\n const updatedThread: AgentThreadRecord = {\n ...thread,\n activeRunId: run.id,\n updatedAt: createdAt,\n }\n this.state.threads.set(threadKey, clone(updatedThread))\n\n return clone(run)\n }\n\n async createSubagent(input: CreateSubagentRunInput): Promise<SubagentRunRecord> {\n assertCreateSubagentRunInput(input)\n const execution = await assertAgentRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n })\n\n const runKey = key(input.projectId, input.id)\n const existing = this.state.runs.get(runKey)\n if (existing) {\n if (subagentRunMatchesCreateInput(existing, input)) return clone(existing)\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Subagent run '${input.id}' already exists with different immutable inputs.`\n )\n }\n\n const parent = this.state.runs.get(key(input.projectId, input.parentRunId))\n if (!parent || parent.kind !== \"conversation\") {\n throw new AgentStorageError(\n \"run_not_found\",\n `[Sixb] Parent Agent run '${input.parentRunId}' was not found.`\n )\n }\n if (parent.status !== \"running\") {\n throw new AgentStorageError(\n \"invalid_state\",\n `[Sixb] Parent Agent run '${parent.id}' is not running (status '${parent.status}').`\n )\n }\n if (\n execution.source.type !== \"execution\" ||\n execution.source.executionId !== parent.executionId\n ) {\n throw new AgentStorageError(\n \"invalid_input\",\n `[Sixb] Subagent execution '${execution.id}' is not a child of parent execution '${parent.executionId}'.`\n )\n }\n if (parent.execution?.token !== input.parentExecutionToken) {\n throw new AgentStorageError(\n \"execution_lost\",\n `[Sixb] Parent Agent run '${parent.id}' is no longer owned by this execution.`\n )\n }\n const activeChildren = [...this.state.runs.values()].filter(\n (run) =>\n run.kind === \"subagent\" &&\n run.projectId === input.projectId &&\n run.parentRunId === parent.id &&\n (run.status === \"queued\" || run.status === \"running\")\n ).length\n if (activeChildren >= input.maxActiveChildren) {\n throw new AgentStorageError(\n \"active_child_limit\",\n `[Sixb] Agent run '${parent.id}' already has ${activeChildren} active subagents.`\n )\n }\n if (\n [...this.state.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Execution '${input.executionId}' already belongs to another Agent run.`\n )\n }\n\n const run: SubagentRunRecord = {\n kind: \"subagent\",\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n parentRunId: input.parentRunId,\n spawnKey: input.spawnKey,\n spec: clone(input.spec),\n requesterGroupIds: clone(parent.requesterGroupIds),\n status: \"queued\",\n attempt: 0,\n createdAt: new Date(input.createdAt ?? new Date()),\n }\n this.state.runs.set(runKey, clone(run))\n return clone(run)\n }\n\n async start(input: StartAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireStatus(input.projectId, input.id, \"queued\")\n const startedAt = new Date(input.startedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: \"running\",\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n attempt: 1,\n execution: clone(input.execution),\n startedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async finishQueued(input: FinishQueuedAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireStatus(input.projectId, input.id, \"queued\")\n const completedAt = new Date(input.completedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: input.status,\n ...(input.error === undefined ? {} : { error: normalizeFailure(input.error) }),\n completedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n this.releaseThread(run, completedAt)\n return clone(next)\n }\n\n async reclaim(input: ReclaimAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n const next: AgentRunRecord = {\n ...run,\n attempt: run.attempt + 1,\n execution: clone(input.execution),\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async confirmExecutionOwnership(\n input: ConfirmAgentRunExecutionOwnershipInput\n ): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n if (!run.execution || run.execution.token !== input.executionToken) {\n throw new AgentStorageError(\n \"execution_lost\",\n `[Sixb] Execution token is no longer current on agent run '${input.id}'.`\n )\n }\n\n const next: AgentRunRecord = {\n ...run,\n execution: {\n ...run.execution,\n queueLeaseExpiresAt: new Date(\n Math.max(run.execution.queueLeaseExpiresAt.getTime(), input.queueLeaseExpiresAt.getTime())\n ),\n },\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n return clone(next)\n }\n\n async finish(input: FinishAgentRunInput): Promise<AgentRunRecord> {\n const run = this.requireRunning(input.projectId, input.id)\n if (!run.execution || run.execution.token !== input.executionToken) {\n throw new AgentStorageError(\n \"execution_lost\",\n `[Sixb] Execution token is no longer current on agent run '${input.id}'.`\n )\n }\n if (input.status === \"succeeded\" && run.kind === \"subagent\") {\n assertSubagentRunResult(input.result, run.id)\n }\n if (input.status === \"succeeded\" && run.kind === \"conversation\" && input.result !== undefined) {\n throw new AgentStorageError(\n \"invalid_input\",\n `[Sixb] Conversational Agent run '${run.id}' cannot persist a subagent result.`\n )\n }\n\n const completedAt = new Date(input.completedAt ?? new Date())\n const next: AgentRunRecord = {\n ...run,\n status: input.status,\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n ...(input.finishReason === undefined ? {} : { finishReason: input.finishReason }),\n ...(input.diagnostics === undefined ? {} : { diagnostics: clone(input.diagnostics) }),\n ...(input.status === \"succeeded\" && input.result !== undefined\n ? { result: clone(input.result) }\n : {}),\n ...(input.status === \"succeeded\" || input.error === undefined\n ? {}\n : { error: normalizeFailure(input.error) }),\n execution: undefined,\n completedAt,\n }\n this.state.runs.set(key(input.projectId, input.id), clone(next))\n\n this.releaseThread(run, completedAt)\n\n return clone(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentRunRecord | null> {\n const record = this.state.runs.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async getByIds(params: {\n projectId: string\n ids: readonly string[]\n }): Promise<readonly AgentRunRecord[]> {\n return [...new Set(params.ids)]\n .map((id) => this.state.runs.get(key(params.projectId, id)))\n .filter((record): record is AgentRunRecord => record !== undefined)\n .map(clone)\n }\n\n async list(input: ListAgentRunsInput): Promise<ListAgentRunsResult> {\n const order = input.order ?? \"desc\"\n const statuses = input.statuses ? new Set(input.statuses) : null\n const kinds = input.kinds ? new Set(input.kinds) : null\n\n const filtered = [...this.state.runs.values()]\n .filter((run) => run.projectId === input.projectId)\n .filter((run) => (kinds ? kinds.has(run.kind) : true))\n .filter((run) =>\n input.threadId ? run.kind === \"conversation\" && run.threadId === input.threadId : true\n )\n .filter((run) =>\n input.parentRunId ? run.kind === \"subagent\" && run.parentRunId === input.parentRunId : true\n )\n .filter((run) => (statuses ? statuses.has(run.status) : true))\n .filter((run) =>\n input.startedAfter ? (run.startedAt ?? run.createdAt) >= input.startedAfter : true\n )\n .filter((run) =>\n input.startedBefore ? (run.startedAt ?? run.createdAt) <= input.startedBefore : true\n )\n .sort((a, b) =>\n compareByDate(a.startedAt ?? a.createdAt, b.startedAt ?? b.createdAt, a.id, b.id, order)\n )\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { runs: page.map(clone), hasMore, total }\n }\n\n private requireRunning(projectId: string, id: string): AgentRunRecord {\n return this.requireStatus(projectId, id, \"running\")\n }\n\n private requireStatus(\n projectId: string,\n id: string,\n status: AgentRunRecord[\"status\"]\n ): AgentRunRecord {\n const run = this.state.runs.get(key(projectId, id))\n if (!run) {\n throw new AgentStorageError(\n \"run_not_found\",\n `[Sixb] Agent run '${id}' not found for project '${projectId}'.`\n )\n }\n if (run.status !== status) {\n throw new AgentStorageError(\n \"invalid_state\",\n `[Sixb] Agent run '${id}' is not ${status} (status '${run.status}').`\n )\n }\n return run\n }\n\n private releaseThread(run: AgentRunRecord, completedAt: Date): void {\n if (run.kind !== \"conversation\") return\n const threadKey = key(run.projectId, run.threadId)\n const thread = this.state.threads.get(threadKey)\n if (thread && thread.activeRunId === run.id) {\n this.state.threads.set(\n threadKey,\n clone({ ...thread, activeRunId: null, updatedAt: completedAt })\n )\n }\n }\n}\n\n// ── messages ──────────────────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentMessageStore implements AgentMessageStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async append(input: AppendAgentMessageInput): Promise<AgentMessageRecord> {\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n\n const messageKey = key(input.projectId, input.id)\n if (this.state.messages.has(messageKey)) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent message '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n if (input.runId !== null && !this.state.runs.has(key(input.projectId, input.runId))) {\n throw new AgentStorageError(\n \"run_not_found\",\n `[Sixb] Agent run '${input.runId}' not found for project '${input.projectId}'.`\n )\n }\n\n const createdAt = new Date(input.createdAt ?? new Date())\n const seq = this.nextSeq(input.projectId, input.threadId)\n const message: AgentMessageRecord = {\n id: input.id,\n projectId: input.projectId,\n threadId: input.threadId,\n runId: input.runId,\n role: input.role,\n ...(input.authorPrincipal === undefined\n ? {}\n : { authorPrincipal: clone(input.authorPrincipal) }),\n seq,\n parts: clone(input.parts),\n ...(input.metadata === undefined ? {} : { metadata: clone(input.metadata) }),\n contentVersion: AGENT_MESSAGE_CONTENT_VERSION,\n createdAt,\n ...(input.completedAt === undefined ? {} : { completedAt: new Date(input.completedAt) }),\n }\n this.state.messages.set(messageKey, clone(message))\n\n this.state.threads.set(\n threadKey,\n clone({\n ...thread,\n messageCount: thread.messageCount + 1,\n lastMessageAt: createdAt,\n updatedAt: createdAt,\n })\n )\n\n return clone(message)\n }\n\n async deleteByRunId(input: DeleteAgentMessagesByRunInput): Promise<number> {\n const threadKey = key(input.projectId, input.threadId)\n const thread = this.state.threads.get(threadKey)\n if (!thread) {\n throw new AgentStorageError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found for project '${input.projectId}'.`\n )\n }\n\n const messages = [...this.state.messages.entries()].filter(\n ([, message]) =>\n message.projectId === input.projectId &&\n message.threadId === input.threadId &&\n message.runId === input.runId\n )\n if (messages.length === 0) {\n return 0\n }\n\n for (const [messageKey] of messages) {\n this.state.messages.delete(messageKey)\n }\n\n const remainingMessages = [...this.state.messages.values()]\n .filter(\n (message) => message.projectId === input.projectId && message.threadId === input.threadId\n )\n .sort((left, right) => right.seq - left.seq)\n const latestMessage = remainingMessages[0]\n const updatedAt = new Date()\n this.state.threads.set(\n threadKey,\n clone({\n ...thread,\n messageCount: remainingMessages.length,\n lastMessageAt: latestMessage?.createdAt,\n updatedAt,\n })\n )\n\n return messages.length\n }\n\n async getById(params: { projectId: string; id: string }): Promise<AgentMessageRecord | null> {\n const record = this.state.messages.get(key(params.projectId, params.id))\n return record ? clone(record) : null\n }\n\n async list(input: ListAgentMessagesInput): Promise<ListAgentMessagesResult> {\n const order = input.order ?? \"asc\"\n const roles = input.roles ? new Set(input.roles) : null\n\n const filtered = [...this.state.messages.values()]\n .filter((message) => message.projectId === input.projectId)\n .filter((message) => message.threadId === input.threadId)\n .filter((message) => (input.afterSeq === undefined ? true : message.seq > input.afterSeq))\n .filter((message) => (roles ? roles.has(message.role) : true))\n .sort((a, b) => (order === \"asc\" ? a.seq - b.seq : b.seq - a.seq))\n\n const { page, hasMore, total } = applyWindow(filtered, input.offset, input.limit)\n return { messages: page.map(clone), hasMore, total }\n }\n\n private nextSeq(projectId: string, threadId: string): number {\n let max = 0\n for (const message of this.state.messages.values()) {\n if (message.projectId === projectId && message.threadId === threadId && message.seq > max) {\n max = message.seq\n }\n }\n return max + 1\n }\n}\n\n// ── context checkpoints ──────────────────────────────────────────────────────────────────────\n\nclass InMemoryAgentContextCheckpointStore implements AgentContextCheckpointStore {\n constructor(private readonly state: AgentStoreState) {}\n\n async create(input: CreateAgentContextCheckpointInput): Promise<AgentContextCheckpointRecord> {\n assertCreateAgentContextCheckpointInput(input)\n\n // No `await` between authority checks and append: this is one in-memory critical section.\n const run = this.state.runs.get(key(input.projectId, input.createdByRunId)) ?? null\n const thread = this.state.threads.get(key(input.projectId, input.threadId)) ?? null\n assertAgentContextCheckpointAuthority({ create: input, run, thread })\n\n const messages = [...this.state.messages.values()].filter(\n (message) => message.projectId === input.projectId && message.threadId === input.threadId\n )\n const headSeq = messages.reduce((head, message) => Math.max(head, message.seq), 0)\n const latest = this.findLatest(input.projectId, input.threadId)\n\n const existingForRun = [...this.state.checkpoints.values()].find(\n (checkpoint) =>\n checkpoint.projectId === input.projectId &&\n checkpoint.createdByRunId === input.createdByRunId\n )\n if (existingForRun) {\n if (agentContextCheckpointMatchesCreateInput(existingForRun, input)) {\n assertAgentContextCheckpointReplayState({\n create: input,\n existing: existingForRun,\n latest,\n headSeq,\n })\n return clone(existingForRun)\n }\n throw new AgentStorageError(\n \"invalid_state\",\n `[Sixb] Agent run '${input.createdByRunId}' already created a different context checkpoint.`\n )\n }\n\n if (this.state.checkpoints.has(key(input.projectId, input.id))) {\n throw new AgentStorageError(\n \"duplicate_id\",\n `[Sixb] Agent context checkpoint '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const firstRetained =\n messages\n .filter((message) => message.seq > input.summarizedThroughSeq)\n .sort((left, right) => left.seq - right.seq)[0] ?? null\n assertAgentContextCheckpointAnchors({\n create: input,\n latest,\n headSeq,\n firstRetained,\n })\n\n const record: AgentContextCheckpointRecord = {\n id: input.id,\n projectId: input.projectId,\n threadId: input.threadId,\n createdByRunId: input.createdByRunId,\n ...(input.expectedPreviousCheckpointId === null\n ? {}\n : { previousCheckpointId: input.expectedPreviousCheckpointId }),\n reason: input.reason,\n summary: input.summary,\n summaryFormatVersion: input.summaryFormatVersion,\n summarizedThroughSeq: input.summarizedThroughSeq,\n observedHeadSeq: input.observedHeadSeq,\n estimatedInputTokensBefore: input.estimatedInputTokensBefore,\n estimatedInputTokensAfter: input.estimatedInputTokensAfter,\n summaryModelId: input.summaryModelId,\n createdAt: new Date(input.createdAt ?? new Date()),\n }\n this.state.checkpoints.set(key(input.projectId, input.id), clone(record))\n return clone(record)\n }\n\n async getLatest(input: {\n readonly projectId: string\n readonly threadId: string\n }): Promise<AgentContextCheckpointRecord | null> {\n const record = this.findLatest(input.projectId, input.threadId)\n return record ? clone(record) : null\n }\n\n async getByRunIds(input: {\n readonly projectId: string\n readonly runIds: readonly string[]\n }): Promise<readonly AgentContextCheckpointRecord[]> {\n const byRunId = new Map(\n [...this.state.checkpoints.values()]\n .filter((checkpoint) => checkpoint.projectId === input.projectId)\n .map((checkpoint) => [checkpoint.createdByRunId, checkpoint] as const)\n )\n return [...new Set(input.runIds)].flatMap((runId) => {\n const checkpoint = byRunId.get(runId)\n return checkpoint ? [clone(checkpoint)] : []\n })\n }\n\n private findLatest(projectId: string, threadId: string): AgentContextCheckpointRecord | null {\n return (\n [...this.state.checkpoints.values()]\n .filter(\n (checkpoint) => checkpoint.projectId === projectId && checkpoint.threadId === threadId\n )\n .sort(\n (left, right) =>\n right.summarizedThroughSeq - left.summarizedThroughSeq ||\n right.createdAt.getTime() - left.createdAt.getTime() ||\n right.id.localeCompare(left.id)\n )[0] ?? null\n )\n }\n}\n\nexport class InMemoryAgentStorage implements AgentStorage {\n private readonly state: AgentStoreState = {\n threads: new Map(),\n runs: new Map(),\n messages: new Map(),\n checkpoints: new Map(),\n }\n\n readonly threads: InMemoryAgentThreadStore\n readonly runs: InMemoryAgentRunStore\n readonly messages: InMemoryAgentMessageStore\n readonly checkpoints: InMemoryAgentContextCheckpointStore\n\n constructor(executions: ExecutionStorage) {\n this.threads = new InMemoryAgentThreadStore(this.state)\n this.runs = new InMemoryAgentRunStore(this.state, executions)\n this.messages = new InMemoryAgentMessageStore(this.state)\n this.checkpoints = new InMemoryAgentContextCheckpointStore(this.state)\n }\n\n snapshot(): InMemoryAgentStorageSnapshot {\n return {\n threads: structuredClone(this.state.threads),\n runs: structuredClone(this.state.runs),\n messages: structuredClone(this.state.messages),\n checkpoints: structuredClone(this.state.checkpoints),\n }\n }\n\n restore(snapshot: InMemoryAgentStorageSnapshot): void {\n replace(this.state.threads, snapshot.threads)\n replace(this.state.runs, snapshot.runs)\n replace(this.state.messages, snapshot.messages)\n replace(this.state.checkpoints, snapshot.checkpoints)\n }\n}\n\nfunction replace<T>(target: Map<string, T>, source: Map<string, T>): void {\n target.clear()\n for (const [k, value] of structuredClone(source)) {\n target.set(k, value)\n }\n}\n",
9
9
  "export type AiCostStorageErrorCode = \"missing_usage\" | \"cost_mismatch\"\n\nexport class AiCostStorageError extends Error {\n readonly name = \"AiCostStorageError\"\n\n constructor(\n readonly code: AiCostStorageErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n",
10
- "import type { AiModelCallUsageRecord, InMemoryAiUsageStorageSnapshot } from \"../ai-usage\"\nimport type { AiAccountingRecordSetItem } from \"./analytics\"\nimport { buildAiAccountingOverview, buildAiModelCallAccountingList } from \"./analytics\"\nimport { AiCostStorageError } from \"./errors\"\nimport type {\n AiAccountingAttribution,\n AiAccountingOverview,\n AiCostStorage,\n AiCostSummary,\n AiModelCallCostRecord,\n AiMoney,\n ListAiModelCallAccountingInput,\n ListAiModelCallAccountingResult,\n QueryAiAccountingOverviewInput,\n SummarizeAiCostExecutionsInput,\n} from \"./types\"\nimport { aiModelCallCostMatchesUsage, normalizeAiModelCallCostRecord } from \"./validation\"\n\nexport interface InMemoryAiCostStorageSnapshot {\n readonly recordsByUsage: Map<string, AiModelCallCostRecord>\n}\n\ninterface InMemoryAiCostUsageSource {\n snapshot(): InMemoryAiUsageStorageSnapshot\n}\n\nexport interface InMemoryAiAccountingAttributionSource {\n resolve(input: {\n readonly projectId: string\n readonly executionId: string\n }): Promise<AiAccountingAttribution | undefined>\n}\n\n/** In-memory immutable model-call costs and accounting reads. */\nexport class InMemoryAiCostStorage implements AiCostStorage {\n private readonly recordsByUsage = new Map<string, AiModelCallCostRecord>()\n\n constructor(\n private readonly usage: InMemoryAiCostUsageSource,\n private readonly attribution?: InMemoryAiAccountingAttributionSource\n ) {}\n\n async recordModelCallCost(input: AiModelCallCostRecord): Promise<void> {\n const record = normalizeAiModelCallCostRecord(input)\n const usage = this.usageRecord(record.projectId, record.usageRecordId)\n if (!usage) throw missingUsage(record)\n if (!aiModelCallCostMatchesUsage(record, usage)) {\n throw new AiCostStorageError(\n \"cost_mismatch\",\n `[Sixb] AI valuation for usage '${record.usageRecordId}' does not match its usage record.`\n )\n }\n const key = usageRecordKey(record.projectId, record.usageRecordId)\n if (!this.recordsByUsage.has(key)) this.recordsByUsage.set(key, structuredClone(record))\n }\n\n async summarizeExecutions(\n input: SummarizeAiCostExecutionsInput\n ): Promise<readonly AiCostSummary[]> {\n assertNonBlank(input.projectId, \"cost summary projectId\")\n for (const id of input.executionIds) assertNonBlank(id, \"cost summary executionId\")\n const requested = new Set(input.executionIds)\n const usageByExecution = new Map(input.executionIds.map((id) => [id, [] as string[]]))\n for (const usage of this.usage.snapshot().records.values()) {\n if (usage.projectId === input.projectId && requested.has(usage.executionId)) {\n usageByExecution.get(usage.executionId)!.push(usage.id)\n }\n }\n return input.executionIds.map((id) =>\n this.summarizeUsageIds(input.projectId, usageByExecution.get(id) ?? [])\n )\n }\n\n async queryProjectOverview(input: QueryAiAccountingOverviewInput): Promise<AiAccountingOverview> {\n return buildAiAccountingOverview(input, await this.accountingItems())\n }\n\n async listModelCalls(\n input: ListAiModelCallAccountingInput\n ): Promise<ListAiModelCallAccountingResult> {\n return buildAiModelCallAccountingList(input, await this.accountingItems())\n }\n\n snapshot(): InMemoryAiCostStorageSnapshot {\n return structuredClone({ recordsByUsage: this.recordsByUsage })\n }\n\n restore(snapshot: InMemoryAiCostStorageSnapshot): void {\n replaceMap(this.recordsByUsage, snapshot.recordsByUsage)\n }\n\n private usageRecord(projectId: string, id: string): AiModelCallUsageRecord | undefined {\n return [...this.usage.snapshot().records.values()].find(\n (record) => record.projectId === projectId && record.id === id\n )\n }\n\n private async accountingItems(): Promise<readonly AiAccountingRecordSetItem[]> {\n return Promise.all(\n [...this.usage.snapshot().records.values()].map(async (usage) => {\n const cost = this.recordsByUsage.get(usageRecordKey(usage.projectId, usage.id))\n const attribution = await this.attribution?.resolve({\n projectId: usage.projectId,\n executionId: usage.executionId,\n })\n return {\n usage,\n ...(attribution ? { attribution } : {}),\n ...(cost ? { cost } : {}),\n }\n })\n )\n }\n\n private summarizeUsageIds(projectId: string, ids: readonly string[]): AiCostSummary {\n const amounts = new Map<string, bigint>()\n let ratedCallCount = 0\n let unpriceableCallCount = 0\n let unvaluedCallCount = 0\n for (const id of ids) {\n const cost = this.recordsByUsage.get(usageRecordKey(projectId, id))\n if (!cost) unvaluedCallCount += 1\n else if (cost.status === \"unpriceable\") unpriceableCallCount += 1\n else {\n ratedCallCount += 1\n addMoney(amounts, cost.money)\n }\n }\n return {\n amounts: [...amounts]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([currency, amount]) => ({ currency, amountNanos: amount.toString() })),\n ratedCallCount,\n unpriceableCallCount,\n unvaluedCallCount,\n }\n }\n}\n\nfunction missingUsage(record: { readonly projectId: string; readonly usageRecordId: string }) {\n return new AiCostStorageError(\n \"missing_usage\",\n `[Sixb] AI usage '${record.usageRecordId}' does not exist in project '${record.projectId}'.`\n )\n}\n\nfunction addMoney(amounts: Map<string, bigint>, money: AiMoney): void {\n amounts.set(money.currency, (amounts.get(money.currency) ?? 0n) + BigInt(money.amountNanos))\n}\n\nfunction usageRecordKey(projectId: string, id: string): string {\n return JSON.stringify([projectId, id])\n}\n\nfunction assertNonBlank(value: string, field: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`[Sixb] AI ${field} must be nonblank.`)\n }\n}\n\nfunction replaceMap<TKey, TValue>(target: Map<TKey, TValue>, source: Map<TKey, TValue>): void {\n target.clear()\n for (const [key, value] of structuredClone(source)) target.set(key, value)\n}\n",
10
+ "import type { AiModelCallUsageRecord, InMemoryAiUsageStorageSnapshot } from \"../ai-usage\"\nimport type { AiAccountingRecordSetItem } from \"./analytics\"\nimport { buildAiAccountingOverview, buildAiModelCallAccountingList } from \"./analytics\"\nimport { AiCostStorageError } from \"./errors\"\nimport { type AiAccountingGroupIdentity, buildAiModelCallGroups } from \"./groups\"\nimport type {\n AiAccountingAttribution,\n AiAccountingOverview,\n AiCostStorage,\n AiCostSummary,\n AiModelCallCostRecord,\n AiMoney,\n ListAiModelCallAccountingInput,\n ListAiModelCallAccountingResult,\n ListAiModelCallGroupsInput,\n ListAiModelCallGroupsResult,\n QueryAiAccountingOverviewInput,\n SummarizeAiCostExecutionsInput,\n} from \"./types\"\nimport { aiModelCallCostMatchesUsage, normalizeAiModelCallCostRecord } from \"./validation\"\n\nexport interface InMemoryAiCostStorageSnapshot {\n readonly recordsByUsage: Map<string, AiModelCallCostRecord>\n}\n\ninterface InMemoryAiCostUsageSource {\n snapshot(): InMemoryAiUsageStorageSnapshot\n}\n\nexport interface InMemoryAiAccountingAttributionSource {\n resolveGroup?(input: {\n readonly projectId: string\n readonly executionId: string\n }): Promise<{ readonly executionId: string; readonly attribution?: AiAccountingAttribution }>\n resolve(input: {\n readonly projectId: string\n readonly executionId: string\n }): Promise<AiAccountingAttribution | undefined>\n}\n\n/** In-memory immutable model-call costs and accounting reads. */\nexport class InMemoryAiCostStorage implements AiCostStorage {\n private readonly recordsByUsage = new Map<string, AiModelCallCostRecord>()\n\n constructor(\n private readonly usage: InMemoryAiCostUsageSource,\n private readonly attribution?: InMemoryAiAccountingAttributionSource\n ) {}\n\n async recordModelCallCost(input: AiModelCallCostRecord): Promise<void> {\n const record = normalizeAiModelCallCostRecord(input)\n const usage = this.usageRecord(record.projectId, record.usageRecordId)\n if (!usage) throw missingUsage(record)\n if (!aiModelCallCostMatchesUsage(record, usage)) {\n throw new AiCostStorageError(\n \"cost_mismatch\",\n `[Sixb] AI valuation for usage '${record.usageRecordId}' does not match its usage record.`\n )\n }\n const key = usageRecordKey(record.projectId, record.usageRecordId)\n if (!this.recordsByUsage.has(key)) this.recordsByUsage.set(key, structuredClone(record))\n }\n\n async summarizeExecutions(\n input: SummarizeAiCostExecutionsInput\n ): Promise<readonly AiCostSummary[]> {\n assertNonBlank(input.projectId, \"cost summary projectId\")\n for (const id of input.executionIds) assertNonBlank(id, \"cost summary executionId\")\n const requested = new Set(input.executionIds)\n const usageByExecution = new Map(input.executionIds.map((id) => [id, [] as string[]]))\n for (const usage of this.usage.snapshot().records.values()) {\n if (usage.projectId === input.projectId && requested.has(usage.executionId)) {\n usageByExecution.get(usage.executionId)!.push(usage.id)\n }\n }\n return input.executionIds.map((id) =>\n this.summarizeUsageIds(input.projectId, usageByExecution.get(id) ?? [])\n )\n }\n\n async queryProjectOverview(input: QueryAiAccountingOverviewInput): Promise<AiAccountingOverview> {\n return buildAiAccountingOverview(input, await this.accountingItems())\n }\n\n async listModelCalls(\n input: ListAiModelCallAccountingInput\n ): Promise<ListAiModelCallAccountingResult> {\n return buildAiModelCallAccountingList(input, await this.accountingItems())\n }\n\n snapshot(): InMemoryAiCostStorageSnapshot {\n return structuredClone({ recordsByUsage: this.recordsByUsage })\n }\n\n async listModelCallGroups(\n input: ListAiModelCallGroupsInput\n ): Promise<ListAiModelCallGroupsResult> {\n const items = await this.accountingItems()\n const roots = new Map<string, Promise<AiAccountingGroupIdentity>>()\n return buildAiModelCallGroups(\n input,\n await Promise.all(\n items.map(async (item) => {\n const key = usageRecordKey(item.usage.projectId, item.usage.executionId)\n let root = roots.get(key)\n if (!root) {\n root =\n this.attribution?.resolveGroup?.({\n projectId: item.usage.projectId,\n executionId: item.usage.executionId,\n }) ??\n Promise.resolve({\n executionId: item.usage.executionId,\n attribution: item.attribution,\n })\n roots.set(key, root)\n }\n return { ...item, root: await root }\n })\n )\n )\n }\n\n restore(snapshot: InMemoryAiCostStorageSnapshot): void {\n replaceMap(this.recordsByUsage, snapshot.recordsByUsage)\n }\n\n /** @internal Immutable accounting source used by in-memory AI limit enforcement. */\n getRecord(projectId: string, usageRecordId: string): AiModelCallCostRecord | null {\n const record = this.recordsByUsage.get(usageRecordKey(projectId, usageRecordId))\n return record ? structuredClone(record) : null\n }\n\n private usageRecord(projectId: string, id: string): AiModelCallUsageRecord | undefined {\n return [...this.usage.snapshot().records.values()].find(\n (record) => record.projectId === projectId && record.id === id\n )\n }\n\n private async accountingItems(): Promise<readonly AiAccountingRecordSetItem[]> {\n return Promise.all(\n [...this.usage.snapshot().records.values()].map(async (usage) => {\n const cost = this.recordsByUsage.get(usageRecordKey(usage.projectId, usage.id))\n const attribution = await this.attribution?.resolve({\n projectId: usage.projectId,\n executionId: usage.executionId,\n })\n return {\n usage,\n ...(attribution ? { attribution } : {}),\n ...(cost ? { cost } : {}),\n }\n })\n )\n }\n\n private summarizeUsageIds(projectId: string, ids: readonly string[]): AiCostSummary {\n const amounts = new Map<string, bigint>()\n let ratedCallCount = 0\n let unpriceableCallCount = 0\n let unvaluedCallCount = 0\n for (const id of ids) {\n const cost = this.recordsByUsage.get(usageRecordKey(projectId, id))\n if (!cost) unvaluedCallCount += 1\n else if (cost.status === \"unpriceable\") unpriceableCallCount += 1\n else {\n ratedCallCount += 1\n addMoney(amounts, cost.money)\n }\n }\n return {\n amounts: [...amounts]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([currency, amount]) => ({ currency, amountNanos: amount.toString() })),\n ratedCallCount,\n unpriceableCallCount,\n unvaluedCallCount,\n }\n }\n}\n\nfunction missingUsage(record: { readonly projectId: string; readonly usageRecordId: string }) {\n return new AiCostStorageError(\n \"missing_usage\",\n `[Sixb] AI usage '${record.usageRecordId}' does not exist in project '${record.projectId}'.`\n )\n}\n\nfunction addMoney(amounts: Map<string, bigint>, money: AiMoney): void {\n amounts.set(money.currency, (amounts.get(money.currency) ?? 0n) + BigInt(money.amountNanos))\n}\n\nfunction usageRecordKey(projectId: string, id: string): string {\n return JSON.stringify([projectId, id])\n}\n\nfunction assertNonBlank(value: string, field: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`[Sixb] AI ${field} must be nonblank.`)\n }\n}\n\nfunction replaceMap<TKey, TValue>(target: Map<TKey, TValue>, source: Map<TKey, TValue>): void {\n target.clear()\n for (const [key, value] of structuredClone(source)) target.set(key, value)\n}\n",
11
+ "import type { AiModelCallCostRecord } from \"../ai-cost\"\nimport type { AiModelCallUsageRecord } from \"../ai-usage\"\nimport type { ExecutionRecord } from \"../executions\"\nimport { AiLimitStorageError } from \"./errors\"\nimport { aiLimitCalendarMonth } from \"./period\"\nimport type { AiLimitAccountingEntry } from \"./provider\"\nimport {\n AiLimitOperationLock,\n aiLimitAccountingEntryAppliesToSubject,\n aiLimitAmountKey,\n aiLimitPolicyDimensionKey,\n aiLimitQuantityFromAmount,\n aiLimitReservationBuckets,\n aiLimitReservationRequestKey,\n aiLimitReservationRequestMatches,\n aiLimitSubjectKey,\n aiLimitSubjectsFromAccountingEntry,\n aiModelCallReservationKey,\n assertAiLimitAccountingMatchesReservation,\n assertNonBlank,\n cloneAiLimitPolicy,\n cloneValidDate,\n type NormalizedAiLimitAmount,\n normalizeAiLimitAmount,\n normalizeAiModelCallReservationIdentity,\n normalizeCreateAiLimitPolicy,\n normalizeReserveAiModelCall,\n normalizeUpdateAiLimitPolicy,\n resolveAiLimitActual,\n} from \"./provider\"\nimport type {\n AiLimitPeriod,\n AiLimitPolicy,\n AiLimitPolicyStatus,\n AiLimitQuantity,\n AiLimitStorage,\n AiLimitSubject,\n AiModelCallReservation,\n CreateAiLimitPolicyInput,\n DeleteAiLimitPolicyInput,\n GetAiLimitPolicyInput,\n ListAiLimitPoliciesInput,\n ListAiLimitPolicyStatusesInput,\n MarkAiModelCallReservationUnknownInput,\n ReconcileAiModelCallInput,\n RecordAiModelCallLimitActualsInput,\n ReserveAiModelCallInput,\n ReserveAiModelCallResult,\n UpdateAiLimitPolicyInput,\n} from \"./types\"\n\ninterface AiLimitPeriodState {\n readonly projectId: string\n readonly subject: AiLimitSubject\n readonly meter: AiLimitQuantity[\"meter\"]\n readonly currency: string\n readonly period: AiLimitPeriod\n actual: bigint\n reserved: bigint\n unknown: bigint\n accountingStatus: \"complete\" | \"unavailable\"\n updatedAt: Date\n}\n\nexport interface InMemoryAiLimitStorageOptions {\n readonly executionExists?: (input: {\n readonly projectId: string\n readonly executionId: string\n }) => boolean | Promise<boolean>\n readonly resolveExecution?: (input: {\n readonly projectId: string\n readonly executionId: string\n }) => ExecutionRecord | null | Promise<ExecutionRecord | null>\n readonly resolveUsageRecord?: (input: {\n readonly projectId: string\n readonly usageRecordId: string\n }) => AiModelCallUsageRecord | null | Promise<AiModelCallUsageRecord | null>\n readonly resolveCostRecord?: (input: {\n readonly projectId: string\n readonly usageRecordId: string\n }) => AiModelCallCostRecord | null | Promise<AiModelCallCostRecord | null>\n readonly listUsageRecords?: (input: {\n readonly projectId: string\n }) => readonly AiModelCallUsageRecord[] | Promise<readonly AiModelCallUsageRecord[]>\n}\n\nexport interface InMemoryAiLimitStorageSnapshot {\n readonly policies: Map<string, AiLimitPolicy>\n readonly policyIdsByDimension: Map<string, string>\n readonly periodStates: Map<string, AiLimitPeriodState>\n readonly reservations: Map<string, AiModelCallReservation>\n}\n\n/** In-memory AI limit provider used by development runtimes and contract tests. */\nexport class InMemoryAiLimitStorage implements AiLimitStorage {\n private readonly policies = new Map<string, AiLimitPolicy>()\n private readonly policyIdsByDimension = new Map<string, string>()\n private readonly periodStates = new Map<string, AiLimitPeriodState>()\n private readonly reservations = new Map<string, AiModelCallReservation>()\n private readonly operations = new AiLimitOperationLock()\n\n constructor(private readonly options: InMemoryAiLimitStorageOptions = {}) {}\n\n /** @internal The root transaction must settle queued work before restoring its snapshot. */\n settleOperations(): Promise<void> {\n return this.operations.settle()\n }\n\n async createPolicy(input: CreateAiLimitPolicyInput): Promise<AiLimitPolicy> {\n return this.operations.run(async () => {\n const policy = normalizeCreateAiLimitPolicy(input)\n const key = policyKey(policy.projectId, policy.id)\n const dimensionKey = aiLimitPolicyDimensionKey(policy)\n if (this.policies.has(key) || this.policyIdsByDimension.has(dimensionKey)) {\n throw new AiLimitStorageError(\n \"duplicate_policy\",\n `[Sixb] An AI limit policy already exists for '${aiLimitSubjectKey(policy.subject)}' and '${aiLimitAmountKey(normalizeAiLimitAmount(policy.limit))}'.`\n )\n }\n this.policies.set(key, structuredClone(policy))\n this.policyIdsByDimension.set(dimensionKey, key)\n return cloneAiLimitPolicy(policy)\n })\n }\n\n async updatePolicy(input: UpdateAiLimitPolicyInput): Promise<AiLimitPolicy> {\n return this.operations.run(async () => {\n const update = normalizeUpdateAiLimitPolicy(input)\n const key = policyKey(update.projectId, update.id)\n const existing = this.policies.get(key)\n if (!existing) throw missingPolicy(update.projectId, update.id)\n if (update.limit !== undefined) {\n const previous = normalizeAiLimitAmount(existing.limit)\n const next = normalizeAiLimitAmount(update.limit)\n if (aiLimitAmountKey(previous) !== aiLimitAmountKey(next)) {\n throw new TypeError(\"[Sixb] AI limit policy meter and cost currency are immutable.\")\n }\n }\n const policy: AiLimitPolicy = {\n ...existing,\n ...(update.limit === undefined ? {} : { limit: update.limit }),\n ...(update.enabled === undefined ? {} : { enabled: update.enabled }),\n updatedAt: update.updatedAt,\n }\n this.policies.set(key, structuredClone(policy))\n return cloneAiLimitPolicy(policy)\n })\n }\n\n async deletePolicy(input: DeleteAiLimitPolicyInput): Promise<boolean> {\n return this.operations.run(async () => {\n validatePolicyIdentity(input)\n const key = policyKey(input.projectId, input.id)\n const existing = this.policies.get(key)\n if (!existing) return false\n this.policies.delete(key)\n this.policyIdsByDimension.delete(aiLimitPolicyDimensionKey(existing))\n return true\n })\n }\n\n async getPolicy(input: GetAiLimitPolicyInput): Promise<AiLimitPolicy | null> {\n validatePolicyIdentity(input)\n const policy = this.policies.get(policyKey(input.projectId, input.id))\n return policy ? cloneAiLimitPolicy(policy) : null\n }\n\n async listPolicies(input: ListAiLimitPoliciesInput): Promise<readonly AiLimitPolicy[]> {\n assertNonBlank(input.projectId, \"projectId\")\n return [...this.policies.values()]\n .filter(\n (policy) =>\n policy.projectId === input.projectId && (input.includeDisabled || policy.enabled)\n )\n .sort((left, right) => left.id.localeCompare(right.id))\n .map(cloneAiLimitPolicy)\n }\n\n async listPolicyStatuses(\n input: ListAiLimitPolicyStatusesInput\n ): Promise<readonly AiLimitPolicyStatus[]> {\n return this.operations.run(async () => {\n assertNonBlank(input.projectId, \"projectId\")\n const period = aiLimitCalendarMonth(input.at ?? new Date())\n const existingGroups =\n input.existingGroupIds === undefined ? undefined : new Set(input.existingGroupIds)\n const policies = await this.listPolicies({\n projectId: input.projectId,\n includeDisabled: input.includeDisabled,\n })\n return Promise.all(\n policies.map((policy) => this.policyStatus(policy, period, existingGroups))\n )\n })\n }\n\n async reserveModelCall(input: ReserveAiModelCallInput): Promise<ReserveAiModelCallResult> {\n return this.operations.run(async () => {\n const request = normalizeReserveAiModelCall(input)\n const reservationKey = aiModelCallReservationKey(request.identity)\n const existing = this.reservations.get(reservationKey)\n if (existing) {\n if (!aiLimitReservationRequestMatches(existing, request)) {\n throw new AiLimitStorageError(\n \"reservation_conflict\",\n `[Sixb] AI model-call reservation '${input.callId}' was replayed with different subjects, estimates, or period.`\n )\n }\n if (existing.state !== \"active\") {\n return { status: \"terminal\", reservation: structuredClone(existing), created: false }\n }\n return { status: \"reserved\", reservation: structuredClone(existing), created: false }\n }\n await this.assertExecutionExists(request.identity.projectId, request.identity.executionId)\n\n const enabledPolicies = [...this.policies.values()].filter(\n (policy) => policy.projectId === request.identity.projectId && policy.enabled\n )\n const subjectKeys = new Set(request.subjects.map(aiLimitSubjectKey))\n const estimates = new Map(\n request.estimates.map((quantity) => {\n const amount = normalizeAiLimitAmount(quantity)\n return [aiLimitAmountKey(amount), amount] as const\n })\n )\n const exhaustedPolicies: AiLimitPolicyStatus[] = []\n const unavailablePolicies: AiLimitPolicyStatus[] = []\n const unavailableReasons = new Set<\"missingEstimate\" | \"incompleteAccounting\">()\n for (const policy of enabledPolicies) {\n if (!subjectKeys.has(aiLimitSubjectKey(policy.subject))) continue\n const limit = normalizeAiLimitAmount(policy.limit)\n const estimate = estimates.get(aiLimitAmountKey(limit))\n const status = await this.policyStatus(policy, request.period)\n if (!estimate || status.accountingStatus === \"unavailable\") {\n unavailablePolicies.push(status)\n if (!estimate) unavailableReasons.add(\"missingEstimate\")\n if (status.accountingStatus === \"unavailable\") {\n unavailableReasons.add(\"incompleteAccounting\")\n }\n continue\n }\n const actual = normalizeAiLimitAmount(status.consumption.actual).amount\n const reserved = normalizeAiLimitAmount(status.consumption.reserved).amount\n const unknown = normalizeAiLimitAmount(status.consumption.unknown).amount\n if (actual + reserved + unknown + estimate.amount > limit.amount) {\n exhaustedPolicies.push(status)\n }\n }\n if (unavailablePolicies.length > 0) {\n unavailablePolicies.sort((left, right) => left.policy.id.localeCompare(right.policy.id))\n return {\n status: \"unavailable\",\n unavailablePolicies,\n reasons: [...unavailableReasons].sort(),\n }\n }\n if (exhaustedPolicies.length > 0) {\n exhaustedPolicies.sort((left, right) => left.policy.id.localeCompare(right.policy.id))\n return {\n status: \"denied\",\n exhaustedPolicies,\n resetAt: new Date(\n Math.min(...exhaustedPolicies.map((status) => status.period.resetAt.getTime()))\n ),\n }\n }\n\n const buckets = aiLimitReservationBuckets(\n enabledPolicies,\n request.subjects,\n request.estimates\n )\n if (buckets.length === 0) return { status: \"notRequired\" }\n for (const bucket of buckets) {\n const amount = normalizeAiLimitAmount(bucket.estimate)\n const state = this.requirePeriodState(\n request.identity.projectId,\n bucket.subject,\n amount,\n request.period\n )\n state.reserved += amount.amount\n state.updatedAt = new Date(request.reservedAt)\n }\n const reservation: AiModelCallReservation = {\n ...request.identity,\n buckets,\n requestKey: aiLimitReservationRequestKey(request),\n period: request.period,\n state: \"active\",\n reservedAt: request.reservedAt,\n updatedAt: new Date(request.reservedAt),\n }\n this.reservations.set(reservationKey, structuredClone(reservation))\n return { status: \"reserved\", reservation: structuredClone(reservation), created: true }\n })\n }\n\n async recordModelCallActuals(input: RecordAiModelCallLimitActualsInput): Promise<void> {\n return this.operations.run(async () => {\n assertNonBlank(input.projectId, \"projectId\")\n assertNonBlank(input.usageRecordId, \"usageRecordId\")\n const recordedAt = cloneValidDate(input.recordedAt ?? new Date(), \"recordedAt\")\n const entry = await this.requireAccountingEntry(input.projectId, input.usageRecordId)\n const period = aiLimitCalendarMonth(entry.occurredAt)\n const subjectKeys = new Set(aiLimitSubjectsFromAccountingEntry(entry).map(aiLimitSubjectKey))\n for (const state of this.periodStates.values()) {\n if (\n state.projectId !== input.projectId ||\n state.period.start.getTime() !== period.start.getTime() ||\n !subjectKeys.has(aiLimitSubjectKey(state.subject))\n ) {\n continue\n }\n const actual = resolveAiLimitActual([entry], state)\n state.actual += actual.amount\n if (actual.accountingStatus === \"unavailable\") state.accountingStatus = \"unavailable\"\n state.updatedAt = new Date(recordedAt)\n }\n })\n }\n\n async reconcileModelCall(input: ReconcileAiModelCallInput): Promise<AiModelCallReservation> {\n return this.operations.run(async () => {\n const identity = normalizeAiModelCallReservationIdentity(input)\n assertNonBlank(input.usageRecordId, \"usageRecordId\")\n const reconciledAt = cloneValidDate(input.reconciledAt ?? new Date(), \"reconciledAt\")\n const key = aiModelCallReservationKey(identity)\n const reservation = this.reservations.get(key)\n if (!reservation) throw missingReservation(identity)\n if (reservation.state === \"reconciled\") {\n if (reservation.usageRecordId === input.usageRecordId) {\n return structuredClone(reservation)\n }\n throw new AiLimitStorageError(\n \"reconciliation_conflict\",\n `[Sixb] AI model-call reservation '${identity.callId}' was reconciled with a different usage record.`\n )\n }\n const accounting = await this.requireAccountingEntry(identity.projectId, input.usageRecordId)\n assertAiLimitAccountingMatchesReservation(reservation, accounting)\n this.reconcileEstimateCounters(reservation, accounting, reconciledAt)\n const reconciled: AiModelCallReservation = {\n ...reservation,\n state: \"reconciled\",\n usageRecordId: input.usageRecordId,\n updatedAt: reconciledAt,\n }\n this.reservations.set(key, structuredClone(reconciled))\n return structuredClone(reconciled)\n })\n }\n\n async markReservationUnknown(\n input: MarkAiModelCallReservationUnknownInput\n ): Promise<AiModelCallReservation> {\n return this.operations.run(async () => {\n const identity = normalizeAiModelCallReservationIdentity(input)\n const markedAt = cloneValidDate(input.markedAt ?? new Date(), \"markedAt\")\n const key = aiModelCallReservationKey(identity)\n const reservation = this.reservations.get(key)\n if (!reservation) throw missingReservation(identity)\n if (reservation.state === \"unknown\") return structuredClone(reservation)\n if (reservation.state !== \"active\") throw invalidState(reservation, \"mark unknown\")\n this.moveEstimateCounter(reservation, \"reserved\", -1n, markedAt)\n this.moveEstimateCounter(reservation, \"unknown\", 1n, markedAt)\n const unknown: AiModelCallReservation = {\n ...reservation,\n state: \"unknown\",\n updatedAt: markedAt,\n }\n this.reservations.set(key, structuredClone(unknown))\n return structuredClone(unknown)\n })\n }\n\n snapshot(): InMemoryAiLimitStorageSnapshot {\n return structuredClone({\n policies: this.policies,\n policyIdsByDimension: this.policyIdsByDimension,\n periodStates: this.periodStates,\n reservations: this.reservations,\n })\n }\n\n restore(snapshot: InMemoryAiLimitStorageSnapshot): void {\n replaceMap(this.policies, snapshot.policies)\n replaceMap(this.policyIdsByDimension, snapshot.policyIdsByDimension)\n replaceMap(this.periodStates, snapshot.periodStates)\n replaceMap(this.reservations, snapshot.reservations)\n }\n\n private async policyStatus(\n policy: AiLimitPolicy,\n period: AiLimitPeriod,\n existingGroups?: ReadonlySet<string>\n ): Promise<AiLimitPolicyStatus> {\n const limit = normalizeAiLimitAmount(policy.limit)\n const state = await this.ensurePeriodState(policy, period)\n const reserved = state.reserved\n const unknown = state.unknown\n const consumed = state.actual + reserved + unknown\n const remaining = limit.amount > consumed ? limit.amount - consumed : 0n\n const quantity = (amount: bigint): AiLimitQuantity =>\n aiLimitQuantityFromAmount({ ...limit, amount })\n return {\n policy: cloneAiLimitPolicy(policy),\n period: structuredClone(period),\n consumption: {\n actual: quantity(state.actual),\n reserved: quantity(reserved),\n unknown: quantity(unknown),\n remaining: quantity(remaining),\n },\n accountingStatus: state.accountingStatus,\n exhausted: consumed >= limit.amount,\n orphaned:\n policy.subject.type === \"group\" &&\n existingGroups !== undefined &&\n !existingGroups.has(policy.subject.id),\n }\n }\n\n private async ensurePeriodState(\n policy: AiLimitPolicy,\n period: AiLimitPeriod\n ): Promise<AiLimitPeriodState> {\n const amount = normalizeAiLimitAmount(policy.limit)\n const key = periodStateKey(policy.projectId, policy.subject, amount, period)\n const existing = this.periodStates.get(key)\n if (existing?.accountingStatus === \"complete\") return existing\n // A late valuation can repair the ledger after this period was cached as unavailable.\n const actual = await this.resolvePolicyActual(policy, period, amount)\n if (existing) {\n existing.actual = actual.amount\n existing.accountingStatus = actual.accountingStatus\n existing.updatedAt = new Date()\n return existing\n }\n const state: AiLimitPeriodState = {\n projectId: policy.projectId,\n subject: structuredClone(policy.subject),\n meter: amount.meter,\n currency: amount.currency,\n period: structuredClone(period),\n actual: actual.amount,\n reserved: 0n,\n unknown: 0n,\n accountingStatus: actual.accountingStatus,\n updatedAt: new Date(),\n }\n this.periodStates.set(key, state)\n return state\n }\n\n private moveEstimateCounter(\n reservation: AiModelCallReservation,\n counter: \"reserved\" | \"unknown\",\n direction: 1n | -1n,\n updatedAt: Date\n ): void {\n for (const bucket of reservation.buckets) {\n const amount = normalizeAiLimitAmount(bucket.estimate)\n const state = this.requirePeriodState(\n reservation.projectId,\n bucket.subject,\n amount,\n reservation.period\n )\n state[counter] += direction * amount.amount\n if (state[counter] < 0n) {\n throw new Error(`[Sixb] In-memory AI limit ${counter} counter became negative.`)\n }\n state.updatedAt = new Date(updatedAt)\n }\n }\n\n private reconcileEstimateCounters(\n reservation: AiModelCallReservation,\n entry: AiLimitAccountingEntry,\n updatedAt: Date\n ): void {\n for (const bucket of reservation.buckets) {\n const amount = normalizeAiLimitAmount(bucket.estimate)\n const state = this.requirePeriodState(\n reservation.projectId,\n bucket.subject,\n amount,\n reservation.period\n )\n const counter = reservation.state === \"active\" ? \"reserved\" : \"unknown\"\n const actual = resolveAiLimitActual([entry], amount)\n if (actual.accountingStatus === \"complete\") {\n state[counter] -= amount.amount\n } else if (reservation.state === \"active\") {\n state.reserved -= amount.amount\n state.unknown += amount.amount\n }\n if (state.reserved < 0n || state.unknown < 0n) {\n throw new Error(\"[Sixb] In-memory AI limit reservation counter became negative.\")\n }\n state.updatedAt = new Date(updatedAt)\n }\n }\n\n private requirePeriodState(\n projectId: string,\n subject: AiLimitSubject,\n amount: NormalizedAiLimitAmount,\n period: AiLimitPeriod\n ): AiLimitPeriodState {\n const state = this.periodStates.get(periodStateKey(projectId, subject, amount, period))\n if (!state) throw new Error(\"[Sixb] In-memory AI limit period state is inconsistent.\")\n return state\n }\n\n private async assertExecutionExists(projectId: string, executionId: string): Promise<void> {\n if (this.options.resolveExecution) {\n if (await this.options.resolveExecution({ projectId, executionId })) return\n throw new AiLimitStorageError(\n \"missing_execution\",\n `[Sixb] AI limit execution '${executionId}' does not exist in project '${projectId}'.`\n )\n }\n if (\n this.options.executionExists &&\n (await this.options.executionExists({ projectId, executionId }))\n ) {\n return\n }\n throw new AiLimitStorageError(\n \"missing_execution\",\n `[Sixb] AI limit execution '${executionId}' does not exist in project '${projectId}'.`\n )\n }\n\n private async resolvePolicyActual(\n policy: AiLimitPolicy,\n period: AiLimitPeriod,\n dimension: NormalizedAiLimitAmount\n ): Promise<ReturnType<typeof resolveAiLimitActual>> {\n if (\n !this.options.listUsageRecords ||\n ((policy.subject.type === \"user\" || policy.subject.type === \"serviceAccount\") &&\n !this.options.resolveExecution)\n ) {\n return { amount: 0n, accountingStatus: \"unavailable\" }\n }\n const records = await this.options.listUsageRecords({ projectId: policy.projectId })\n const entries = await Promise.all(\n records\n .filter(\n (record) =>\n record.occurredAt.getTime() >= period.start.getTime() &&\n record.occurredAt.getTime() < period.end.getTime()\n )\n .map((record) => this.accountingEntry(record))\n )\n return resolveAiLimitActual(\n entries.filter((entry) => aiLimitAccountingEntryAppliesToSubject(entry, policy.subject)),\n dimension\n )\n }\n\n private async requireAccountingEntry(\n projectId: string,\n usageRecordId: string\n ): Promise<AiLimitAccountingEntry> {\n if (!this.options.resolveUsageRecord) {\n throw new AiLimitStorageError(\n \"unavailable_actuals\",\n \"[Sixb] In-memory AI limit storage has no immutable accounting source.\"\n )\n }\n const record = await this.options.resolveUsageRecord({ projectId, usageRecordId })\n if (!record) {\n throw new AiLimitStorageError(\n \"missing_usage_record\",\n `[Sixb] AI usage record '${usageRecordId}' does not exist in project '${projectId}'.`\n )\n }\n return this.accountingEntry(record)\n }\n\n private async accountingEntry(record: AiModelCallUsageRecord): Promise<AiLimitAccountingEntry> {\n const [execution, cost] = await Promise.all([\n this.options.resolveExecution?.({\n projectId: record.projectId,\n executionId: record.executionId,\n }),\n this.options.resolveCostRecord?.({\n projectId: record.projectId,\n usageRecordId: record.id,\n }),\n ])\n const requester = execution?.requestedBy\n return {\n projectId: record.projectId,\n usageRecordId: record.id,\n executionId: record.executionId,\n attempt: record.attempt,\n callId: record.callId,\n occurredAt: new Date(record.occurredAt),\n ...(record.usage.totalTokens === undefined ? {} : { totalTokens: record.usage.totalTokens }),\n requesterGroupIds: [...record.requesterGroupIds],\n ...(requester?.type === \"user\" || requester?.type === \"serviceAccount\"\n ? { requester: { type: requester.type, id: requester.id } }\n : {}),\n ...(cost?.status === \"rated\"\n ? { valuation: { status: \"rated\" as const, money: structuredClone(cost.money) } }\n : cost\n ? { valuation: { status: \"unavailable\" as const } }\n : {}),\n }\n }\n}\n\nfunction policyKey(projectId: string, id: string): string {\n return JSON.stringify([projectId, id])\n}\n\nfunction periodStateKey(\n projectId: string,\n subject: AiLimitSubject,\n amount: Pick<NormalizedAiLimitAmount, \"meter\" | \"currency\">,\n period: AiLimitPeriod\n): string {\n return JSON.stringify([\n projectId,\n aiLimitSubjectKey(subject),\n amount.meter,\n amount.currency,\n period.start.toISOString(),\n ])\n}\n\nfunction validatePolicyIdentity(input: GetAiLimitPolicyInput): void {\n assertNonBlank(input.projectId, \"projectId\")\n assertNonBlank(input.id, \"policy id\")\n}\n\nfunction missingPolicy(projectId: string, id: string): AiLimitStorageError {\n return new AiLimitStorageError(\n \"missing_policy\",\n `[Sixb] AI limit policy '${id}' does not exist in project '${projectId}'.`\n )\n}\n\nfunction missingReservation(identity: {\n readonly projectId: string\n readonly executionId: string\n readonly attempt: number\n readonly callId: string\n}): AiLimitStorageError {\n return new AiLimitStorageError(\n \"missing_reservation\",\n `[Sixb] AI model-call reservation '${identity.callId}' does not exist for execution '${identity.executionId}' attempt ${identity.attempt}.`\n )\n}\n\nfunction invalidState(reservation: AiModelCallReservation, operation: string): AiLimitStorageError {\n return new AiLimitStorageError(\n \"invalid_reservation_state\",\n `[Sixb] Cannot ${operation} AI model-call reservation '${reservation.callId}' in state '${reservation.state}'.`\n )\n}\n\nfunction replaceMap<TKey, TValue>(target: Map<TKey, TValue>, source: Map<TKey, TValue>): void {\n target.clear()\n for (const [key, value] of structuredClone(source)) target.set(key, value)\n}\n",
11
12
  "import { timingSafeEqual } from \"node:crypto\"\nimport { createSixbError, parseSixbFailure, toSixbFailure } from \"../../errors/internal\"\nimport { ConnectorConnectionStorageError } from \"./errors\"\nimport type {\n AttachConnectorConnectionRunAuthorizationInput,\n ClaimConnectorConnectionRunCallbackInput,\n ClaimConnectorConnectionRunCallbackResult,\n ClaimConnectorCredentialMutationInput,\n ClaimConnectorCredentialMutationResult,\n ConnectorAuthorizationAttemptRecord,\n ConnectorAuthorizationKey,\n ConnectorAuthorizationRecord,\n ConnectorConnectionKey,\n ConnectorConnectionRecord,\n ConnectorConnectionRunAwaitingProviderRecord,\n ConnectorConnectionRunAwaitingSelectionRecord,\n ConnectorConnectionRunProcessingRecord,\n ConnectorConnectionRunRecord,\n ConnectorConnectionRunSucceededRecord,\n ConnectorConnectionStorage,\n ConnectorCredentialMutationFence,\n CreateConnectorAuthorizationAttemptInput,\n CreateConnectorAuthorizationInput,\n CreateConnectorConnectionRunInput,\n CreateConnectorConnectionSelectionRunInput,\n FinalizeConnectorReauthorizationInput,\n FinishConnectorConnectionRunInput,\n GetConnectorConnectionInput,\n GetConnectorConnectionRunInput,\n InitializeConnectorAuthorizationAccountsInput,\n ListConnectorConnectionsInput,\n MarkConnectorAuthorizationNeedsReauthorizationInput,\n MarkConnectorCredentialMutationExecutingInput,\n PutConnectorConnectionFromRunInput,\n PutConnectorConnectionFromRunResult,\n PutConnectorConnectionInput,\n PutConnectorConnectionResult,\n RecoverExpiredConnectorCredentialMutationInput,\n ReleaseConnectorCredentialMutationInput,\n RenewConnectorCredentialMutationInput,\n StageConnectorCredentialMutationCredentialsInput,\n StageConnectorCredentialMutationRevocationInput,\n WaitForConnectorConnectionRunSelectionInput,\n} from \"./types\"\nimport { CONNECTOR_CONNECTION_RUN_FAILURE_CODES } from \"./types\"\n\nexport interface InMemoryConnectorConnectionStorageSnapshot {\n readonly attempts: Map<string, ConnectorAuthorizationAttemptRecord>\n readonly connectionRuns: Map<string, ConnectorConnectionRunRecord>\n readonly authorizations: Map<string, ConnectorAuthorizationRecord>\n readonly connections: Map<string, ConnectorConnectionRecord>\n}\n\nfunction connectionRunBase(record: ConnectorConnectionRunRecord, updatedAt: Date) {\n return {\n id: record.id,\n projectId: record.projectId,\n connectorId: record.connectorId,\n kind: record.kind,\n owner: structuredClone(record.owner),\n slot: record.slot,\n initiatedByExecutionId: record.initiatedByExecutionId,\n createdAt: new Date(record.createdAt),\n updatedAt: new Date(updatedAt),\n }\n}\n\nfunction expireConnectionRun(\n record: Extract<ConnectorConnectionRunRecord, { readonly status: \"waiting\" }>,\n now: Date\n) {\n return {\n ...connectionRunBase(record, now),\n status: \"expired\" as const,\n ...(record.waitingFor === \"account_selection\"\n ? { authorizationId: record.authorizationId }\n : {}),\n finishedAt: new Date(now),\n }\n}\n\nfunction failExpiredProcessingRun(record: ConnectorConnectionRunProcessingRecord, now: Date) {\n return {\n ...connectionRunBase(record, now),\n status: \"failed\" as const,\n ...(record.authorizationId === undefined ? {} : { authorizationId: record.authorizationId }),\n error: toSixbFailure(\n createSixbError(\n \"internal.unexpected\",\n \"[Sixb] Connector callback processing did not complete before its deadline.\"\n ),\n { allowedCodes: CONNECTOR_CONNECTION_RUN_FAILURE_CODES, at: now }\n ),\n finishedAt: new Date(now),\n }\n}\n\nexport interface InMemoryConnectorConnectionStorageOptions {\n /** Storage-authoritative clock. Durable implementations should use their database clock. */\n readonly now?: () => Date\n}\n\nexport class InMemoryConnectorConnectionStorage implements ConnectorConnectionStorage {\n readonly durability = \"ephemeral\" as const\n private readonly attempts = new Map<string, ConnectorAuthorizationAttemptRecord>()\n private readonly connectionRuns = new Map<string, ConnectorConnectionRunRecord>()\n private readonly authorizations = new Map<string, ConnectorAuthorizationRecord>()\n private readonly connections = new Map<string, ConnectorConnectionRecord>()\n\n constructor(private readonly options: InMemoryConnectorConnectionStorageOptions = {}) {}\n\n async createAuthorizationAttempt(\n input: CreateConnectorAuthorizationAttemptInput\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n assertPositiveDuration(input.ttlMs, \"authorization attempt TTL\")\n if (this.attempts.has(input.id)) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt already exists.\"\n )\n }\n if (input.connectionRunId !== undefined) {\n const run = this.connectionRuns.get(input.connectionRunId)\n const existingAttempt = this.findAuthorizationAttemptByConnectionRunId(input.connectionRunId)\n if (\n !run ||\n existingAttempt ||\n run.projectId !== input.projectId ||\n run.connectorId !== input.connectorId ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== input.slot ||\n run.initiatedByExecutionId !== input.initiatedByExecutionId\n ) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt does not match its connection run.\"\n )\n }\n }\n const now = this.now()\n const record: ConnectorAuthorizationAttemptRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n stateHash: input.stateHash,\n codeVerifier: structuredClone(input.codeVerifier),\n redirectUri: input.redirectUri,\n ...(input.connectionRunId === undefined ? {} : { connectionRunId: input.connectionRunId }),\n ...(input.returnTo === undefined ? {} : { returnTo: input.returnTo }),\n ...(input.callbackBindingHash === undefined\n ? {}\n : { callbackBindingHash: input.callbackBindingHash }),\n ...(input.reauthorizationId === undefined\n ? {}\n : { reauthorizationId: input.reauthorizationId }),\n ...(input.reauthorizationRevision === undefined\n ? {}\n : { reauthorizationRevision: input.reauthorizationRevision }),\n ...(input.reauthorizationConnectionIds === undefined\n ? {}\n : { reauthorizationConnectionIds: [...input.reauthorizationConnectionIds] }),\n createdAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n this.attempts.set(record.id, record)\n return structuredClone(record)\n }\n\n async consumeAuthorizationAttempt(\n input: Parameters<ConnectorConnectionStorage[\"consumeAuthorizationAttempt\"]>[0]\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n const record = this.attempts.get(input.id)\n if (record && record.expiresAt.getTime() <= this.now().getTime()) {\n this.attempts.delete(record.id)\n throw invalidAttempt()\n }\n if (\n !record ||\n record.projectId !== input.projectId ||\n record.connectorId !== input.connectorId ||\n record.redirectUri !== input.redirectUri ||\n !safeEqual(record.stateHash, input.stateHash)\n ) {\n throw invalidAttempt()\n }\n\n this.attempts.delete(input.id)\n return structuredClone(record)\n }\n\n async createConnectionRun(\n input: CreateConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n if (this.connectionRuns.has(input.id)) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n const now = this.now()\n const record: ConnectorConnectionRunAwaitingProviderRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: input.kind,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"provider_authorization\",\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n this.connectionRuns.set(record.id, record)\n return structuredClone(record)\n }\n\n async createConnectionSelectionRun(\n input: CreateConnectorConnectionSelectionRunInput\n ): Promise<ConnectorConnectionRunAwaitingSelectionRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n if (this.connectionRuns.has(input.id)) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n const authorization = this.authorizations.get(input.authorizationId)\n if (\n !sameAuthorizationScope(authorization, input) ||\n authorization.status !== \"active\" ||\n authorization.credentialMutation\n ) {\n throw authorizationConflict()\n }\n const now = this.now()\n const record: ConnectorConnectionRunAwaitingSelectionRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: \"connect\",\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"account_selection\",\n authorizationId: input.authorizationId,\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n this.connectionRuns.set(record.id, record)\n return structuredClone(record)\n }\n\n async claimConnectionRunCallback(\n input: ClaimConnectorConnectionRunCallbackInput\n ): Promise<ClaimConnectorConnectionRunCallbackResult | null> {\n assertPositiveDuration(input.processingTtlMs, \"connection run processing TTL\")\n const attempt = this.attempts.get(input.attemptId)\n if (\n !attempt ||\n attempt.projectId !== input.projectId ||\n attempt.connectionRunId === undefined ||\n attempt.returnTo === undefined ||\n attempt.callbackBindingHash === undefined ||\n attempt.redirectUri !== input.redirectUri ||\n !safeEqual(attempt.stateHash, input.stateHash) ||\n !safeEqual(attempt.callbackBindingHash, input.callbackBindingHash)\n ) {\n return null\n }\n\n const run = this.connectionRuns.get(attempt.connectionRunId)\n if (\n !run ||\n run.projectId !== input.projectId ||\n run.connectorId !== attempt.connectorId ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== attempt.slot ||\n run.initiatedByExecutionId !== attempt.initiatedByExecutionId\n ) {\n return null\n }\n\n const now = this.now()\n this.attempts.delete(attempt.id)\n if (attempt.expiresAt.getTime() <= now.getTime() || run.expiresAt.getTime() <= now.getTime()) {\n const expired = expireConnectionRun(run, now)\n this.connectionRuns.set(run.id, expired)\n return { type: \"expired\", run: structuredClone(expired), returnTo: attempt.returnTo }\n }\n\n const processing: ConnectorConnectionRunProcessingRecord = {\n ...connectionRunBase(run, now),\n status: \"running\" as const,\n processingId: input.processingId,\n callbackStartedAt: now,\n expiresAt: new Date(now.getTime() + input.processingTtlMs),\n ...(attempt.reauthorizationId === undefined\n ? {}\n : { authorizationId: attempt.reauthorizationId }),\n }\n this.connectionRuns.set(run.id, processing)\n return {\n type: \"claimed\",\n run: structuredClone(processing),\n attempt: structuredClone(attempt),\n returnTo: attempt.returnTo,\n }\n }\n\n async attachConnectionRunAuthorization(\n input: AttachConnectorConnectionRunAuthorizationInput\n ): Promise<ConnectorConnectionRunProcessingRecord | null> {\n const run = this.currentConnectionRun(input.runId)\n const authorization = this.authorizations.get(input.authorizationId)\n if (\n !sameConnectionRunScope(run, input) ||\n run.status !== \"running\" ||\n run.processingId !== input.processingId ||\n (run.authorizationId !== undefined && run.authorizationId !== input.authorizationId) ||\n !sameAuthorizationScope(authorization, input) ||\n authorization.status !== \"pending_selection\"\n ) {\n return null\n }\n const updated: ConnectorConnectionRunProcessingRecord = {\n ...run,\n authorizationId: input.authorizationId,\n updatedAt: this.now(),\n }\n this.connectionRuns.set(run.id, updated)\n return structuredClone(updated)\n }\n\n async waitForConnectionRunSelection(input: WaitForConnectorConnectionRunSelectionInput) {\n const run = this.currentConnectionRun(input.runId)\n if (\n !sameConnectionRunScope(run, input) ||\n run.status !== \"running\" ||\n run.kind !== \"connect\" ||\n run.processingId !== input.processingId ||\n run.authorizationId !== input.authorizationId\n ) {\n return null\n }\n const now = this.now()\n const waiting = {\n ...connectionRunBase(run, now),\n status: \"waiting\" as const,\n waitingFor: \"account_selection\" as const,\n authorizationId: input.authorizationId,\n expiresAt: new Date(input.expiresAt),\n }\n this.connectionRuns.set(run.id, waiting)\n return structuredClone(waiting)\n }\n\n async finishConnectionRun(\n input: FinishConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n const run = this.currentConnectionRun(input.runId)\n if (!sameConnectionRunScope(run, input) || run.status !== \"running\") return null\n if (input.processingId !== run.processingId) return null\n const now = this.now()\n const authorizationId =\n input.status === \"succeeded\"\n ? input.authorizationId\n : input.status === \"failed\"\n ? (input.authorizationId ?? run.authorizationId)\n : run.authorizationId\n if (input.status !== \"succeeded\" && run.kind === \"connect\" && authorizationId) {\n this.markPendingAuthorizationForCleanup(run.connectorId, authorizationId, now)\n }\n const base = connectionRunBase(run, now)\n const finished: ConnectorConnectionRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n status: \"succeeded\",\n authorizationId: input.authorizationId,\n ...(input.cleanupAuthorizationId === undefined\n ? {}\n : { cleanupAuthorizationId: input.cleanupAuthorizationId }),\n connections: structuredClone(input.connections),\n finishedAt: now,\n }\n : input.status === \"failed\"\n ? {\n ...base,\n status: \"failed\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n error: parseSixbFailure(input.error, CONNECTOR_CONNECTION_RUN_FAILURE_CODES),\n finishedAt: now,\n }\n : {\n ...base,\n status: \"cancelled\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n finishedAt: now,\n }\n this.connectionRuns.set(run.id, finished)\n return structuredClone(finished)\n }\n\n async getConnectionRun(\n input: GetConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n const run = this.currentConnectionRun(input.runId)\n return sameConnectionRunScope(run, input) ? structuredClone(run) : null\n }\n\n async createAuthorization(\n input: CreateConnectorAuthorizationInput\n ): Promise<ConnectorAuthorizationRecord> {\n assertPositiveDuration(input.selectionTtlMs, \"account selection TTL\")\n if (this.authorizations.has(input.id)) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector authorization already exists.\"\n )\n }\n const now = this.now()\n const record: ConnectorAuthorizationRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n authorizedBy: structuredClone(input.authorizedBy),\n credentials: structuredClone(input.credentials),\n ...(input.credentialExpiresAt === undefined\n ? {}\n : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),\n scopes: [...input.scopes],\n accounts: structuredClone(input.accounts),\n status: \"pending_selection\",\n selectionExpiresAt: new Date(now.getTime() + input.selectionTtlMs),\n revision: 0,\n createdAt: now,\n updatedAt: now,\n }\n this.authorizations.set(record.id, record)\n return structuredClone(record)\n }\n\n async initializeAuthorizationAccounts(\n input: InitializeConnectorAuthorizationAccountsInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n if (\n !sameAuthorizationScope(record, input) ||\n record.revision !== input.expectedRevision ||\n record.status !== \"pending_selection\" ||\n record.credentialMutation\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n accounts: structuredClone(input.accounts),\n revision: record.revision + 1,\n updatedAt: this.now(),\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async getAuthorization(\n input: ConnectorAuthorizationKey\n ): Promise<ConnectorAuthorizationRecord | null> {\n const authorization = this.authorizations.get(input.authorizationId)\n return sameAuthorizationScope(authorization, input) ? structuredClone(authorization) : null\n }\n\n async getAuthorizationByConnectionId(\n input: ConnectorConnectionKey\n ): Promise<ConnectorAuthorizationRecord | null> {\n const connection = this.connections.get(input.connectionId)\n if (!sameConnectionScope(connection, input)) return null\n const authorization = this.authorizations.get(connection.authorizationId)\n return sameAuthorizationScope(authorization, input) ? structuredClone(authorization) : null\n }\n\n async claimCredentialMutation(\n input: ClaimConnectorCredentialMutationInput\n ): Promise<ClaimConnectorCredentialMutationResult | null> {\n assertPositiveDuration(input.leaseDurationMs, \"credential mutation lease duration\")\n assertPositiveDuration(input.operationTimeoutMs, \"credential mutation timeout\")\n const now = this.now()\n const record = this.authorizations.get(input.authorizationId)\n if (\n !sameAuthorizationScope(record, input) ||\n record.revision !== input.expectedRevision ||\n !canClaimMutation(record.status, input.mutation.kind)\n ) {\n return null\n }\n\n if (record.credentialMutation) {\n const canReplacePrepared =\n record.credentialMutation.phase === \"prepared\" &&\n record.credentialMutation.expiresAt.getTime() <= now.getTime()\n if (!canReplacePrepared) return null\n }\n\n const attached = this.connectedConnectionsForAuthorization(record.id)\n if (\n input.mutation.kind === \"reauthorization\" &&\n !sameIds(\n attached.map((connection) => connection.id),\n input.expectedConnectionIds ?? []\n )\n ) {\n return null\n }\n\n const deadlineAt = new Date(now.getTime() + input.operationTimeoutMs)\n const mutation = {\n ...structuredClone(input.mutation),\n phase: \"prepared\" as const,\n expiresAt: leaseExpiry(now, input.leaseDurationMs, deadlineAt),\n deadlineAt,\n ...(input.mutation.kind === \"reauthorization\"\n ? { expectedConnectionIds: [...(input.expectedConnectionIds ?? [])] }\n : {}),\n }\n const startsRevocation =\n input.mutation.kind === \"revocation\" && record.status !== \"revocation_pending\"\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: input.mutation.kind === \"revocation\" ? \"revocation_pending\" : record.status,\n selectionExpiresAt:\n input.mutation.kind === \"revocation\" ? undefined : record.selectionExpiresAt,\n revision: startsRevocation ? record.revision + 1 : record.revision,\n credentialMutation: mutation,\n updatedAt: now,\n }\n this.authorizations.set(record.id, updated)\n\n const disconnected: ConnectorConnectionRecord[] = []\n if (input.mutation.kind === \"revocation\") {\n for (const connection of attached) {\n const updatedConnection = disconnectConnectionRecord(connection, now)\n this.connections.set(connection.id, updatedConnection)\n disconnected.push(structuredClone(updatedConnection))\n }\n }\n return { authorization: structuredClone(updated), disconnected }\n }\n\n async markCredentialMutationExecuting(\n input: MarkConnectorCredentialMutationExecutingInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const now = this.now()\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"prepared\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: { ...record.credentialMutation, phase: \"executing\" },\n updatedAt: now,\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async renewCredentialMutation(\n input: RenewConnectorCredentialMutationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n assertPositiveDuration(input.leaseDurationMs, \"credential mutation lease duration\")\n const now = this.now()\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase === \"result_staged\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: {\n ...record.credentialMutation,\n expiresAt: leaseExpiry(now, input.leaseDurationMs, record.credentialMutation.deadlineAt),\n },\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async stageCredentialMutationCredentials(\n input: StageConnectorCredentialMutationCredentialsInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const now = this.now()\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"executing\" ||\n mutationExpired(record, now) ||\n record.credentialMutation.kind === \"revocation\"\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: {\n ...record.credentialMutation,\n phase: \"result_staged\",\n stagedCredentials: {\n credentials: structuredClone(input.credentials),\n ...(input.credentialExpiresAt === undefined\n ? {}\n : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),\n scopes: [...input.scopes],\n },\n },\n updatedAt: now,\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async stageCredentialMutationRevocation(\n input: StageConnectorCredentialMutationRevocationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const now = this.now()\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"executing\" ||\n record.credentialMutation.kind !== \"revocation\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: { ...record.credentialMutation, phase: \"result_staged\" },\n updatedAt: now,\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async releaseCredentialMutation(\n input: ReleaseConnectorCredentialMutationInput\n ): Promise<boolean> {\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase === \"result_staged\"\n ) {\n return false\n }\n this.authorizations.set(record.id, {\n ...record,\n credentialMutation: undefined,\n updatedAt: this.now(),\n })\n return true\n }\n\n async recoverExpiredCredentialMutation(\n input: RecoverExpiredConnectorCredentialMutationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n if (!sameAuthorizationScope(record, input) || !record.credentialMutation) return null\n if (record.credentialMutation.phase === \"result_staged\") return structuredClone(record)\n\n const now = this.now()\n if (!mutationExpired(record, now)) return null\n const ambiguous = record.credentialMutation.phase === \"executing\"\n const failClosed = ambiguous && record.credentialMutation.kind !== \"revocation\"\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: failClosed ? \"needs_reauthorization\" : record.status,\n selectionExpiresAt: failClosed ? undefined : record.selectionExpiresAt,\n revision: failClosed ? record.revision + 1 : record.revision,\n credentialMutation: undefined,\n updatedAt: now,\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async markNeedsReauthorization(\n input: MarkConnectorAuthorizationNeedsReauthorizationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n if (!matchesMutation(record, input)) return null\n const staged = record.credentialMutation.stagedCredentials\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n ...(staged\n ? {\n credentials: structuredClone(staged.credentials),\n credentialExpiresAt:\n staged.credentialExpiresAt === undefined\n ? undefined\n : new Date(staged.credentialExpiresAt),\n scopes: [...staged.scopes],\n }\n : {}),\n status: \"needs_reauthorization\",\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: this.now(),\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async finalizeRefresh(\n input: ConnectorCredentialMutationFence\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n const staged = stagedCredentials(record, input, \"refresh\")\n if (!record || !staged) return null\n const updated = applyStagedCredentials(record, staged, this.now(), {\n status: \"active\",\n accounts: record.accounts,\n })\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async finalizeReauthorization(\n input: FinalizeConnectorReauthorizationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n const staged = stagedCredentials(record, input, \"reauthorization\")\n if (!record || !staged || !record.credentialMutation) return null\n const attached = this.connectedConnectionsForAuthorization(record.id)\n if (\n !sameIds(\n attached.map((connection) => connection.id),\n record.credentialMutation.expectedConnectionIds ?? []\n )\n ) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connections attached to the connector authorization changed during reauthorization.\"\n )\n }\n const accountsById = new Map(input.accounts.map((account) => [account.id, account]))\n if (attached.some((connection) => !accountsById.has(connection.account.id))) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Reauthorized connector grant no longer exposes every attached account.\"\n )\n }\n\n const now = this.now()\n const updated = applyStagedCredentials(record, staged, now, {\n status: \"active\",\n accounts: input.accounts,\n })\n this.authorizations.set(record.id, updated)\n for (const connection of attached) {\n this.connections.set(connection.id, {\n ...connection,\n account: structuredClone(accountsById.get(connection.account.id)!),\n updatedAt: now,\n })\n }\n return structuredClone(updated)\n }\n\n async finalizeRevocation(\n input: ConnectorCredentialMutationFence\n ): Promise<ConnectorAuthorizationRecord | null> {\n const record = this.authorizations.get(input.authorizationId)\n if (\n !matchesMutation(record, input) ||\n record.credentialMutation.kind !== \"revocation\" ||\n record.credentialMutation.phase !== \"result_staged\"\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: \"revoked\",\n credentials: undefined,\n credentialExpiresAt: undefined,\n scopes: [],\n accounts: [],\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: this.now(),\n }\n this.authorizations.set(record.id, updated)\n return structuredClone(updated)\n }\n\n async putConnection(input: PutConnectorConnectionInput): Promise<PutConnectorConnectionResult> {\n return this.putConnectionNow(input, this.now())\n }\n\n async putConnectionFromRun(\n input: PutConnectorConnectionFromRunInput\n ): Promise<PutConnectorConnectionFromRunResult> {\n const run = this.currentConnectionRun(input.runId)\n if (\n !sameConnectionRunScope(run, input) ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"account_selection\"\n ) {\n throw invalidRun()\n }\n const now = this.now()\n const result = this.putConnectionNow(\n {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: run.owner,\n slot: run.slot,\n authorizationId: run.authorizationId,\n account: input.account,\n replace: input.replace,\n },\n now\n )\n const succeeded: ConnectorConnectionRunSucceededRecord = {\n ...connectionRunBase(run, now),\n status: \"succeeded\",\n authorizationId: run.authorizationId,\n ...(result.revocationPendingAuthorizationId === undefined\n ? {}\n : { cleanupAuthorizationId: result.revocationPendingAuthorizationId }),\n connections: [structuredClone(result.connection)],\n finishedAt: now,\n }\n this.connectionRuns.set(run.id, succeeded)\n return { ...result, run: structuredClone(succeeded) }\n }\n\n private putConnectionNow(\n input: PutConnectorConnectionInput,\n now: Date\n ): PutConnectorConnectionResult {\n let authorization = this.authorizations.get(input.authorizationId)\n if (\n !sameAuthorizationScope(authorization, input) ||\n !isSelectable(authorization.status) ||\n authorization.credentialMutation?.kind === \"reauthorization\"\n ) {\n throw authorizationConflict()\n }\n if (\n authorization.status === \"pending_selection\" &&\n authorization.selectionExpiresAt!.getTime() <= now.getTime()\n ) {\n authorization = {\n ...authorization,\n status: \"revocation_pending\",\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: now,\n }\n this.authorizations.set(authorization.id, authorization)\n throw authorizationConflict()\n }\n const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)\n if (!account) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection account is not exposed by its authorization.\"\n )\n }\n const existing = this.findConnectionRecord(input)\n const sameAccount = existing?.account.id === account.id\n if (existing && !sameAccount && !input.replace) {\n throw new ConnectorConnectionStorageError(\n \"connection_conflict\",\n `[Sixb] Connector slot '${input.slot}' is already connected to another account; explicit replacement is required.`\n )\n }\n if (!existing && this.connections.has(input.id)) {\n throw new ConnectorConnectionStorageError(\n \"connection_conflict\",\n \"[Sixb] Connector connection id already exists.\"\n )\n }\n\n let revocationPendingAuthorizationId: string | undefined\n if (existing?.status === \"connected\" && existing.authorizationId !== authorization.id) {\n const previous = this.authorizations.get(existing.authorizationId)\n if (!previous) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Existing connector connection references an unavailable authorization.\"\n )\n }\n const remaining = this.connectedConnectionsForAuthorization(previous.id).filter(\n (connection) => connection.id !== existing.id\n )\n this.assertConnectionCanMove(existing, previous, remaining.length === 0)\n if (remaining.length === 0) {\n const pending = markAuthorizationRevocationPending(previous, now)\n this.authorizations.set(previous.id, pending)\n revocationPendingAuthorizationId = previous.id\n }\n } else if (existing?.status === \"connected\") {\n const previous = this.authorizations.get(existing.authorizationId)\n if (previous) this.assertConnectionCanMove(existing, previous, false)\n }\n\n const updatedAuthorization: ConnectorAuthorizationRecord =\n authorization.status === \"pending_selection\"\n ? {\n ...authorization,\n status: \"active\",\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: now,\n }\n : authorization\n const connection: ConnectorConnectionRecord = existing\n ? {\n ...existing,\n authorizationId: input.authorizationId,\n account: structuredClone(account),\n status: \"connected\",\n disconnectedAt: undefined,\n updatedAt: now,\n }\n : {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: structuredClone(input.owner),\n slot: input.slot,\n authorizationId: input.authorizationId,\n account: structuredClone(account),\n status: \"connected\",\n createdAt: now,\n updatedAt: now,\n }\n\n if (updatedAuthorization !== authorization) {\n this.authorizations.set(updatedAuthorization.id, updatedAuthorization)\n }\n this.connections.set(connection.id, connection)\n return {\n connection: structuredClone(connection),\n authorization: structuredClone(updatedAuthorization),\n ...(revocationPendingAuthorizationId === undefined\n ? {}\n : { revocationPendingAuthorizationId }),\n created: existing === undefined,\n replaced: existing !== undefined && !sameAccount,\n }\n }\n\n async getConnection(\n input: GetConnectorConnectionInput\n ): Promise<ConnectorConnectionRecord | null> {\n const connection = this.findConnectionRecord(input)\n return connection?.status === \"connected\" ? structuredClone(connection) : null\n }\n\n async getConnectionById(\n input: ConnectorConnectionKey\n ): Promise<ConnectorConnectionRecord | null> {\n const connection = this.connections.get(input.connectionId)\n return sameConnectionScope(connection, input) ? structuredClone(connection) : null\n }\n\n async listConnections(\n input: ListConnectorConnectionsInput\n ): Promise<readonly ConnectorConnectionRecord[]> {\n return [...this.connections.values()]\n .filter((connection) => sameConnectionScope(connection, input))\n .map((connection) => structuredClone(connection))\n }\n\n async listConnectionsByAuthorization(\n input: ConnectorAuthorizationKey\n ): Promise<readonly ConnectorConnectionRecord[]> {\n const authorization = this.authorizations.get(input.authorizationId)\n if (!sameAuthorizationScope(authorization, input)) return []\n return this.connectedConnectionsForAuthorization(input.authorizationId)\n .filter((connection) => sameConnectionScope(connection, input))\n .map((connection) => structuredClone(connection))\n }\n\n async disconnectConnection(input: ConnectorConnectionKey): Promise<{\n readonly connection: ConnectorConnectionRecord\n readonly authorization: ConnectorAuthorizationRecord\n readonly revocationPendingAuthorizationId?: string\n } | null> {\n const connection = this.connections.get(input.connectionId)\n if (\n !connection ||\n connection.projectId !== input.projectId ||\n connection.connectorId !== input.connectorId\n ) {\n return null\n }\n const authorization = this.authorizations.get(connection.authorizationId)\n if (!sameAuthorizationScope(authorization, input)) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection references an unavailable authorization.\"\n )\n }\n if (connection.status === \"disconnected\") {\n return {\n connection: structuredClone(connection),\n authorization: structuredClone(authorization),\n ...(authorization.status === \"revocation_pending\"\n ? { revocationPendingAuthorizationId: authorization.id }\n : {}),\n }\n }\n\n const now = this.now()\n const remaining = this.connectedConnectionsForAuthorization(authorization.id).filter(\n (candidate) => candidate.id !== connection.id\n )\n this.assertConnectionCanMove(connection, authorization, remaining.length === 0)\n const disconnected = disconnectConnectionRecord(connection, now)\n this.connections.set(connection.id, disconnected)\n const updatedAuthorization =\n remaining.length === 0\n ? markAuthorizationRevocationPending(authorization, now)\n : authorization\n if (updatedAuthorization !== authorization) {\n this.authorizations.set(authorization.id, updatedAuthorization)\n }\n return {\n connection: structuredClone(disconnected),\n authorization: structuredClone(updatedAuthorization),\n ...(updatedAuthorization.status === \"revocation_pending\" && remaining.length === 0\n ? { revocationPendingAuthorizationId: updatedAuthorization.id }\n : {}),\n }\n }\n\n snapshot(): InMemoryConnectorConnectionStorageSnapshot {\n return {\n attempts: structuredClone(this.attempts),\n connectionRuns: structuredClone(this.connectionRuns),\n authorizations: structuredClone(this.authorizations),\n connections: structuredClone(this.connections),\n }\n }\n\n restore(snapshot: InMemoryConnectorConnectionStorageSnapshot): void {\n replaceMap(this.attempts, snapshot.attempts)\n replaceMap(this.connectionRuns, snapshot.connectionRuns)\n replaceMap(this.authorizations, snapshot.authorizations)\n replaceMap(this.connections, snapshot.connections)\n }\n\n private now(): Date {\n return new Date(this.options.now?.() ?? new Date())\n }\n\n private currentConnectionRun(runId: string): ConnectorConnectionRunRecord | undefined {\n const run = this.connectionRuns.get(runId)\n if (!run || (run.status !== \"waiting\" && run.status !== \"running\")) return run\n\n const now = this.now()\n if (run.expiresAt.getTime() > now.getTime()) return run\n\n if (run.status === \"waiting\" && run.waitingFor === \"provider_authorization\") {\n const attempt = this.findAuthorizationAttemptByConnectionRunId(run.id)\n if (attempt) this.attempts.delete(attempt.id)\n }\n if (run.status === \"waiting\") {\n if (run.kind === \"connect\" && run.waitingFor === \"account_selection\") {\n this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)\n }\n const expired = expireConnectionRun(run, now)\n this.connectionRuns.set(run.id, expired)\n return expired\n }\n\n if (run.kind === \"connect\" && run.authorizationId) {\n this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)\n }\n const failed = failExpiredProcessingRun(run, now)\n this.connectionRuns.set(run.id, failed)\n return failed\n }\n\n private findConnectionRecord(\n input: GetConnectorConnectionInput\n ): ConnectorConnectionRecord | undefined {\n for (const connection of this.connections.values()) {\n if (\n connection.projectId === input.projectId &&\n connection.connectorId === input.connectorId &&\n connection.owner.type === input.owner.type &&\n connection.slot === input.slot\n ) {\n return connection\n }\n }\n return undefined\n }\n\n private findAuthorizationAttemptByConnectionRunId(\n connectionRunId: string\n ): ConnectorAuthorizationAttemptRecord | undefined {\n for (const attempt of this.attempts.values()) {\n if (attempt.connectionRunId === connectionRunId) return attempt\n }\n return undefined\n }\n\n private connectionRecordsForAuthorization(authorizationId: string): ConnectorConnectionRecord[] {\n return [...this.connections.values()].filter(\n (connection) => connection.authorizationId === authorizationId\n )\n }\n\n private connectedConnectionsForAuthorization(\n authorizationId: string\n ): ConnectorConnectionRecord[] {\n return this.connectionRecordsForAuthorization(authorizationId).filter(\n (connection) => connection.status === \"connected\"\n )\n }\n\n private assertConnectionCanMove(\n _connection: ConnectorConnectionRecord,\n authorization: ConnectorAuthorizationRecord,\n removingLastConnection = true\n ): void {\n const mutation = authorization.credentialMutation\n if (mutation?.kind === \"reauthorization\") {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connections cannot change while their connector authorization is being reauthorized.\"\n )\n }\n if (removingLastConnection && mutation) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] The last connector connection cannot be removed while credentials are being mutated.\"\n )\n }\n }\n\n private markPendingAuthorizationForCleanup(\n connectorId: string,\n authorizationId: string,\n now: Date\n ): void {\n const authorization = this.authorizations.get(authorizationId)\n if (\n !authorization ||\n authorization.connectorId !== connectorId ||\n authorization.status !== \"pending_selection\"\n ) {\n return\n }\n this.authorizations.set(\n authorization.id,\n markAuthorizationRevocationPending(authorization, now)\n )\n }\n}\n\nfunction disconnectConnectionRecord(\n connection: ConnectorConnectionRecord,\n now: Date\n): ConnectorConnectionRecord {\n return {\n ...connection,\n status: \"disconnected\",\n disconnectedAt: new Date(now),\n updatedAt: new Date(now),\n }\n}\n\nfunction markAuthorizationRevocationPending(\n authorization: ConnectorAuthorizationRecord,\n now: Date\n): ConnectorAuthorizationRecord {\n if (authorization.status === \"revocation_pending\" || authorization.status === \"revoked\") {\n return authorization\n }\n if (authorization.credentialMutation) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector authorization cannot begin revocation while credentials are being mutated.\"\n )\n }\n return {\n ...authorization,\n status: \"revocation_pending\",\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: new Date(now),\n }\n}\n\nfunction safeEqual(left: string, right: string): boolean {\n const leftBytes = Buffer.from(left)\n const rightBytes = Buffer.from(right)\n return leftBytes.length === rightBytes.length && timingSafeEqual(leftBytes, rightBytes)\n}\n\nfunction invalidRun(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"run_invalid\",\n \"[Sixb] Connector connection run is invalid, expired, or already used.\"\n )\n}\n\nfunction replaceMap<TKey, TValue>(target: Map<TKey, TValue>, source: Map<TKey, TValue>): void {\n target.clear()\n for (const [key, value] of structuredClone(source)) target.set(key, value)\n}\n\nfunction sameIds(left: readonly string[], right: readonly string[]): boolean {\n const leftSorted = [...left].sort()\n const rightSorted = [...right].sort()\n return (\n leftSorted.length === rightSorted.length &&\n leftSorted.every((value, index) => value === rightSorted[index])\n )\n}\n\nfunction invalidAttempt(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"attempt_invalid\",\n \"[Sixb] Connector authorization attempt is invalid, expired, or already used.\"\n )\n}\n\nfunction authorizationConflict(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection requires a selectable authorization from the same project and connector.\"\n )\n}\n\nfunction assertPositiveDuration(value: number, name: string): void {\n if (!Number.isFinite(value) || value <= 0) {\n throw new ConnectorConnectionStorageError(\n \"invalid_input\",\n `[Sixb] Connector ${name} must be positive.`\n )\n }\n}\n\nfunction sameAuthorizationScope(\n record: ConnectorAuthorizationRecord | undefined,\n input: { readonly projectId: string; readonly connectorId: string }\n): record is ConnectorAuthorizationRecord {\n return (\n record !== undefined &&\n record.projectId === input.projectId &&\n record.connectorId === input.connectorId\n )\n}\n\nfunction sameConnectionScope(\n record: ConnectorConnectionRecord | undefined,\n input: { readonly projectId: string; readonly connectorId: string }\n): record is ConnectorConnectionRecord {\n return (\n record !== undefined &&\n record.projectId === input.projectId &&\n record.connectorId === input.connectorId\n )\n}\n\nfunction sameConnectionRunScope(\n record: ConnectorConnectionRunRecord | undefined,\n input: { readonly projectId: string; readonly connectorId: string }\n): record is ConnectorConnectionRunRecord {\n return (\n record !== undefined &&\n record.projectId === input.projectId &&\n record.connectorId === input.connectorId\n )\n}\n\nfunction canClaimMutation(\n status: ConnectorAuthorizationRecord[\"status\"],\n kind: ClaimConnectorCredentialMutationInput[\"mutation\"][\"kind\"]\n): boolean {\n if (kind === \"refresh\") return status === \"active\"\n if (kind === \"reauthorization\") {\n return status === \"active\" || status === \"needs_reauthorization\"\n }\n return status !== \"revoked\"\n}\n\nfunction isSelectable(status: ConnectorAuthorizationRecord[\"status\"]): boolean {\n return status === \"pending_selection\" || status === \"active\"\n}\n\nfunction leaseExpiry(now: Date, durationMs: number, deadlineAt: Date): Date {\n return new Date(Math.min(now.getTime() + durationMs, deadlineAt.getTime()))\n}\n\nfunction mutationExpired(record: ConnectorAuthorizationRecord, now: Date): boolean {\n return (\n record.credentialMutation!.expiresAt.getTime() <= now.getTime() ||\n record.credentialMutation!.deadlineAt.getTime() <= now.getTime()\n )\n}\n\nfunction matchesMutation(\n record: ConnectorAuthorizationRecord | undefined,\n input: ConnectorCredentialMutationFence,\n holderId?: string\n): record is ConnectorAuthorizationRecord & {\n readonly credentialMutation: NonNullable<ConnectorAuthorizationRecord[\"credentialMutation\"]>\n} {\n return (\n sameAuthorizationScope(record, input) &&\n record.revision === input.expectedRevision &&\n record.credentialMutation?.id === input.mutationId &&\n (holderId === undefined || record.credentialMutation.holderId === holderId)\n )\n}\n\nfunction stagedCredentials(\n record: ConnectorAuthorizationRecord | undefined,\n input: ConnectorCredentialMutationFence,\n kind: \"refresh\" | \"reauthorization\"\n) {\n if (\n !matchesMutation(record, input) ||\n record.credentialMutation.kind !== kind ||\n record.credentialMutation.phase !== \"result_staged\"\n ) {\n return null\n }\n return record.credentialMutation.stagedCredentials ?? null\n}\n\nfunction applyStagedCredentials(\n record: ConnectorAuthorizationRecord,\n staged: NonNullable<ReturnType<typeof stagedCredentials>>,\n now: Date,\n input: {\n readonly status: \"active\"\n readonly accounts: readonly ConnectorAuthorizationRecord[\"accounts\"][number][]\n }\n): ConnectorAuthorizationRecord {\n return {\n ...record,\n credentials: structuredClone(staged.credentials),\n credentialExpiresAt:\n staged.credentialExpiresAt === undefined ? undefined : new Date(staged.credentialExpiresAt),\n scopes: [...staged.scopes],\n accounts: structuredClone(input.accounts),\n status: input.status,\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: now,\n }\n}\n",
12
13
  "/**\n * Thrown when a storage lookup by primary ID finds no matching object.\n * Carries structured context so callers can discriminate without string parsing.\n */\nexport class ObjectNotFoundError extends Error {\n readonly name = \"ObjectNotFoundError\"\n\n constructor(\n readonly objectTypeId: string,\n readonly primaryId: string,\n readonly context: string\n ) {\n super(`[Sixb] ${context}: ${objectTypeId}:${primaryId}`)\n }\n}\n\nexport class ObjectStorageError extends Error {\n readonly name = \"ObjectStorageError\"\n}\n\nexport type StorageTransactionErrorCode =\n | \"nested_transaction\"\n | \"serialization_failure\"\n | \"transaction_inactive\"\n\nexport interface StorageTransactionErrorOptions {\n readonly cause?: unknown\n readonly code?: StorageTransactionErrorCode\n}\n\nexport class StorageTransactionError extends Error {\n readonly name = \"StorageTransactionError\"\n readonly code?: StorageTransactionErrorCode\n override readonly cause?: unknown\n\n constructor(message: string, options: StorageTransactionErrorOptions = {}) {\n super(message)\n this.code = options.code\n this.cause = options.cause\n }\n}\n\nexport function isStorageSerializationFailure(error: unknown): boolean {\n return error instanceof StorageTransactionError && error.code === \"serialization_failure\"\n}\n",
13
14
  "/**\n * Transport-agnostic reasons a file upload session operation can fail. Mapping a\n * reason to an HTTP status (or any other transport) is the responsibility of the\n * boundary that surfaces it, not of core.\n */\nexport type FileUploadSessionErrorReason =\n | \"not_found\"\n | \"expired\"\n | \"already_completed\"\n | \"already_aborted\"\n\n/**\n * Error for file upload session invariants and invalid state transitions.\n */\nexport class FileUploadSessionError extends Error {\n readonly name = \"FileUploadSessionError\"\n\n constructor(\n readonly reason: FileUploadSessionErrorReason,\n message: string\n ) {\n super(message)\n }\n}\n",
14
15
  "import { randomUUID } from \"node:crypto\"\nimport type { Principal } from \"../../auth\"\nimport type { FileUploadSession } from \"./types\"\n\nexport const DEFAULT_FILE_UPLOAD_SESSION_TTL_MS = 60 * 60 * 1000\nexport const DEFAULT_FILE_UPLOAD_TERMINAL_SESSION_TTL_MS = 15 * 60 * 1000\n\nexport function createUploadExpiresAt(now = Date.now()): Date {\n return new Date(now + DEFAULT_FILE_UPLOAD_SESSION_TTL_MS)\n}\n\nexport function createFileUploadId(): string {\n return `upload_${randomUUID().replaceAll(\"-\", \"\")}`\n}\n\nexport function principalKey(principal: Principal): string {\n return `${principal.type}:${principal.id}`\n}\n\nexport function isFileUploadSessionExpired(\n session: FileUploadSession,\n nowMs = Date.now()\n): boolean {\n return session.status === \"pending\" && session.expiresAt.getTime() <= nowMs\n}\n\nexport function shouldDeleteFileUploadSession(session: FileUploadSession, nowMs: number): boolean {\n if (isFileUploadSessionExpired(session, nowMs)) {\n return true\n }\n\n return isTerminalFileUploadSessionExpired(session, nowMs)\n}\n\nexport function isTerminalFileUploadSessionExpired(\n session: FileUploadSession,\n nowMs: number\n): boolean {\n if (session.status === \"pending\") {\n return false\n }\n\n const terminalAt = session.completedAt ?? session.abortedAt\n if (!terminalAt) {\n return false\n }\n\n return terminalAt.getTime() + DEFAULT_FILE_UPLOAD_TERMINAL_SESSION_TTL_MS <= nowMs\n}\n",
15
16
  "import type { Principal } from \"../../auth\"\nimport type { FileRef, SignedBlobUploadPart } from \"../../blob-storage\"\nimport { FileUploadSessionError } from \"./errors\"\nimport type {\n CreateFileUploadSessionInput,\n FileUploadSession,\n FileUploadSessionStore,\n} from \"./types\"\nimport {\n createFileUploadId,\n isFileUploadSessionExpired,\n isTerminalFileUploadSessionExpired,\n principalKey,\n shouldDeleteFileUploadSession,\n} from \"./utils\"\n\nexport type InMemoryFileUploadSessionsSnapshot = Map<string, FileUploadSession>\n\n/**\n * In-memory {@link FileUploadSessionStore}.\n *\n * Sessions live only in this process's memory: they do not survive a restart and\n * are not shared across instances. Staged/direct-put uploads therefore require a\n * single-instance deployment for now; a durable (Pg/Sqlite) store is a follow-up.\n * Expired sessions are reaped opportunistically on `create` and on demand via\n * `cleanupExpired` (there is no background sweeper).\n */\nexport class InMemoryFileUploadSessions implements FileUploadSessionStore {\n private readonly sessionsById = new Map<string, FileUploadSession>()\n\n snapshot(): InMemoryFileUploadSessionsSnapshot {\n return structuredClone(this.sessionsById)\n }\n\n restore(snapshot: InMemoryFileUploadSessionsSnapshot): void {\n this.sessionsById.clear()\n for (const [id, session] of snapshot) {\n this.sessionsById.set(id, structuredClone(session))\n }\n }\n\n async create(input: CreateFileUploadSessionInput): Promise<FileUploadSession> {\n await this.cleanupExpired()\n\n const session: FileUploadSession = {\n id: input.id ?? createFileUploadId(),\n projectId: input.projectId,\n principalKey: principalKey(input.principal),\n strategy: input.strategy,\n status: \"pending\",\n ...(input.fileName === undefined ? {} : { fileName: input.fileName }),\n ...(input.mediaType === undefined ? {} : { mediaType: input.mediaType }),\n ...(input.logicalPath === undefined ? {} : { logicalPath: input.logicalPath }),\n ...(input.expectedSizeBytes === undefined\n ? {}\n : { expectedSizeBytes: input.expectedSizeBytes }),\n ...(input.expectedDigest === undefined ? {} : { expectedDigest: input.expectedDigest }),\n ...(input.providerUpload === undefined ? {} : { providerUpload: input.providerUpload }),\n signedParts: [],\n createdAt: new Date(),\n expiresAt: input.expiresAt,\n }\n\n this.sessionsById.set(session.id, session)\n return session\n }\n\n async getForPrincipal(uploadId: string, principal: Principal): Promise<FileUploadSession> {\n const session = this.sessionsById.get(uploadId)\n if (!session || session.principalKey !== principalKey(principal)) {\n throw new FileUploadSessionError(\"not_found\", \"File upload session not found.\")\n }\n\n const nowMs = Date.now()\n if (isFileUploadSessionExpired(session, nowMs)) {\n this.sessionsById.delete(uploadId)\n throw new FileUploadSessionError(\"expired\", \"File upload session has expired.\")\n }\n\n if (isTerminalFileUploadSessionExpired(session, nowMs)) {\n this.sessionsById.delete(uploadId)\n throw new FileUploadSessionError(\"not_found\", \"File upload session not found.\")\n }\n\n return session\n }\n\n async markUploaded(uploadId: string, fileRef: FileRef): Promise<FileUploadSession> {\n const session = this.requirePending(uploadId)\n const updated = {\n ...session,\n fileRef,\n }\n this.sessionsById.set(uploadId, updated)\n return updated\n }\n\n async addSignedPart(uploadId: string, part: SignedBlobUploadPart): Promise<FileUploadSession> {\n const session = this.requirePending(uploadId)\n const updated = {\n ...session,\n signedParts: [\n ...session.signedParts.filter((candidate) => candidate.partNumber !== part.partNumber),\n part,\n ].sort((left, right) => left.partNumber - right.partNumber),\n }\n this.sessionsById.set(uploadId, updated)\n return updated\n }\n\n async complete(uploadId: string, fileRef: FileRef): Promise<FileUploadSession> {\n const session = this.requirePending(uploadId)\n const updated = {\n ...session,\n status: \"completed\" as const,\n fileRef,\n completedAt: new Date(),\n }\n this.sessionsById.set(uploadId, updated)\n return updated\n }\n\n async abort(uploadId: string): Promise<FileUploadSession> {\n const session = this.requirePending(uploadId)\n const updated = {\n ...session,\n status: \"aborted\" as const,\n abortedAt: new Date(),\n }\n this.sessionsById.set(uploadId, updated)\n return updated\n }\n\n async cleanupExpired(now = new Date()): Promise<number> {\n let deleted = 0\n for (const [id, session] of this.sessionsById) {\n if (shouldDeleteFileUploadSession(session, now.getTime())) {\n this.sessionsById.delete(id)\n deleted += 1\n }\n }\n\n return deleted\n }\n\n private requirePending(uploadId: string): FileUploadSession {\n const session = this.sessionsById.get(uploadId)\n if (!session) {\n throw new FileUploadSessionError(\"not_found\", \"File upload session not found.\")\n }\n\n if (session.status !== \"pending\") {\n throw new FileUploadSessionError(\n session.status === \"completed\" ? \"already_completed\" : \"already_aborted\",\n `File upload session is already ${session.status}.`\n )\n }\n\n return session\n }\n}\n",
16
- "import { AsyncLocalStorage } from \"node:async_hooks\"\nimport { InMemoryActionRunStorage } from \"../action-runs\"\nimport { type AgentStorage, InMemoryAgentStorage } from \"../agents\"\nimport { type AiAccountingAttribution, type AiCostStorage, InMemoryAiCostStorage } from \"../ai-cost\"\nimport { type AiUsageStorage, InMemoryAiUsageStorage } from \"../ai-usage\"\nimport { type AuthStorage, InMemoryAuthStorage } from \"../auth\"\nimport {\n type ConnectorConnectionStorage,\n InMemoryConnectorConnectionStorage,\n} from \"../connector-connections\"\nimport { StorageTransactionError } from \"../errors\"\nimport { InMemoryExecutionStorage } from \"../executions/in-memory\"\nimport type { ExecutionStorage } from \"../executions/types\"\nimport { type FileUploadSessionStore, InMemoryFileUploadSessions } from \"../file-upload-sessions\"\nimport type { ObjectStorage } from \"../objects\"\nimport { InMemoryObjectStorage } from \"../objects/in-memory\"\nimport type { OntologyStorage } from \"../ontology\"\nimport { InMemoryOntologyStorage } from \"../ontology/in-memory\"\nimport { ProviderMaterializationTransactionLifecycle } from \"../ontology/provider\"\nimport {\n createAgentOperationScope,\n createAuthOperationScope,\n createOntologyOperationScope,\n createOperationScopedFacade,\n createStorageOperationScope,\n createWorkflowRunOperationScope,\n} from \"../operation-scope\"\nimport { InMemoryPipelineRunStorage, type PipelineRunStorage } from \"../pipeline-runs\"\nimport { InMemoryProjectionRunStorage } from \"../projection-runs\"\nimport { InMemoryRulesStorage, type RulesStorage } from \"../rules\"\nimport { InMemorySyncRunStorage, type SyncRunStorage } from \"../sync-runs\"\nimport type { TimeseriesStorage } from \"../timeseries\"\nimport { InMemoryTimeseriesStorage } from \"../timeseries/store\"\nimport { createTransactionStorageProxy, throwNestedStorageTransaction } from \"../transaction\"\nimport type { Storage, StorageTransactionOptions } from \"../types\"\nimport { InMemoryWebhookRunStorage, type WebhookRunStorage } from \"../webhook-runs\"\nimport {\n InMemoryWorkflowInterventionStorage,\n type WorkflowInterventionStorage,\n} from \"../workflow-interventions\"\nimport { InMemoryWorkflowRunStorage, type WorkflowRunStorage } from \"../workflow-runs\"\nimport { registerInMemoryStorageTestingAdapter } from \"./testing\"\n\n/**\n * In-memory {@link Storage} used for dev and tests.\n *\n * Every top-level storage call (\"root operation\") serializes against a single promise-chain lock\n * unless a transaction is already active, which is what gives {@link InMemoryStorage.transaction}\n * snapshot/rollback atomicity. The provider owns one operation scope and applies it to every async\n * root capability. Transaction calls reuse the already-active scope and therefore never reacquire\n * its non-reentrant lock.\n */\nexport interface InMemoryStorageOptions {\n readonly connectorConnections?: {\n /** Storage-authoritative clock override for deterministic development and tests. */\n readonly now?: () => Date\n }\n}\n\nexport class InMemoryStorage implements Storage {\n readonly objects: ObjectStorage\n readonly timeseries: TimeseriesStorage\n readonly ontology: OntologyStorage\n private readonly objectStorage = new InMemoryObjectStorage()\n private readonly timeseriesStorage = new InMemoryTimeseriesStorage()\n private readonly ontologyStorage: InMemoryOntologyStorage\n private readonly authStorage = new InMemoryAuthStorage()\n private readonly executionStorage = new InMemoryExecutionStorage(this.authStorage)\n private readonly agentStorage = new InMemoryAgentStorage(this.executionStorage)\n private readonly aiUsageStorage = new InMemoryAiUsageStorage(this.executionStorage)\n private readonly aiCostStorage = new InMemoryAiCostStorage(this.aiUsageStorage, {\n resolve: (input) => this.resolveAiAccountingAttribution(input),\n })\n private readonly actionRunStorage = new InMemoryActionRunStorage(this.executionStorage)\n private readonly syncRunStorage = new InMemorySyncRunStorage(this.executionStorage)\n private readonly pipelineRunStorage = new InMemoryPipelineRunStorage(this.executionStorage)\n private readonly projectionRunStorage = new InMemoryProjectionRunStorage({\n executions: this.executionStorage,\n })\n private readonly workflowRunStorage = new InMemoryWorkflowRunStorage(this.executionStorage)\n private readonly workflowInterventionStorage = new InMemoryWorkflowInterventionStorage()\n private readonly webhookRunStorage = new InMemoryWebhookRunStorage(this.executionStorage)\n private readonly rulesStorage = new InMemoryRulesStorage()\n private readonly fileUploadSessionStorage = new InMemoryFileUploadSessions()\n private readonly connectorConnectionStorage: InMemoryConnectorConnectionStorage\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n readonly agents: AgentStorage\n readonly aiUsage: AiUsageStorage\n readonly aiCosts: AiCostStorage\n readonly actionRuns: InMemoryActionRunStorage\n readonly syncRuns: SyncRunStorage\n readonly pipelineRuns: PipelineRunStorage\n readonly projectionRuns: InMemoryProjectionRunStorage\n readonly workflowRuns: WorkflowRunStorage\n readonly workflowInterventions: WorkflowInterventionStorage\n readonly webhookRuns: WebhookRunStorage\n readonly rules: RulesStorage\n readonly fileUploadSessions: FileUploadSessionStore\n readonly connectorConnections: ConnectorConnectionStorage\n\n constructor(options: InMemoryStorageOptions = {}) {\n this.connectorConnectionStorage = new InMemoryConnectorConnectionStorage(\n options.connectorConnections\n )\n const scope = createStorageOperationScope(\n (run) => this.withStorageOperation(run),\n () => this.assertRootOperationAvailable()\n )\n this.objects = createOperationScopedFacade(this.objectStorage, scope)\n this.timeseries = createOperationScopedFacade(this.timeseriesStorage, scope)\n this.auth = createAuthOperationScope(this.authStorage, scope)\n this.executions = createOperationScopedFacade(this.executionStorage, scope)\n this.agents = createAgentOperationScope(this.agentStorage, scope)\n this.aiUsage = createOperationScopedFacade(this.aiUsageStorage, scope)\n this.aiCosts = createOperationScopedFacade(this.aiCostStorage, scope)\n this.actionRuns = createOperationScopedFacade(this.actionRunStorage, scope)\n this.syncRuns = createOperationScopedFacade(this.syncRunStorage, scope)\n this.pipelineRuns = createOperationScopedFacade(this.pipelineRunStorage, scope)\n this.projectionRuns = createOperationScopedFacade(this.projectionRunStorage, scope)\n this.workflowRuns = createWorkflowRunOperationScope(this.workflowRunStorage, scope)\n this.workflowInterventions = createOperationScopedFacade(\n this.workflowInterventionStorage,\n scope\n )\n this.webhookRuns = createOperationScopedFacade(this.webhookRunStorage, scope)\n this.rules = createOperationScopedFacade(this.rulesStorage, scope)\n this.fileUploadSessions = createOperationScopedFacade(this.fileUploadSessionStorage, scope)\n this.connectorConnections = createOperationScopedFacade(this.connectorConnectionStorage, scope)\n this.ontologyStorage = new InMemoryOntologyStorage(this.objectStorage, this.timeseriesStorage, {\n runRootOperation: async (run) => run(),\n getTransactionToken: () => this.getActiveTransactionToken(),\n getMaterializationLifecycle: () => this.getActiveMaterializationLifecycle(),\n assertSourceMaterializationExecution: (input) =>\n this.projectionRunStorage.assertSourceMaterializationExecutionUnlocked(input),\n executionExists: async (projectId, executionId) =>\n (await this.executionStorage.getById({ projectId, id: executionId })) !== null,\n })\n this.ontology = createOntologyOperationScope(this.ontologyStorage, scope)\n this.ontologyStorage.registerTestingAlias(this.ontology)\n registerInMemoryStorageTestingAdapter(this, { snapshot: () => this.snapshot() })\n }\n\n private async resolveAiAccountingAttribution(input: {\n readonly projectId: string\n readonly executionId: string\n }): Promise<AiAccountingAttribution | undefined> {\n const execution = await this.executionStorage.getById({\n projectId: input.projectId,\n id: input.executionId,\n })\n if (!execution || execution.executor.type !== \"agent\") return undefined\n const directRun = await this.agentStorage.runs.getById({\n projectId: input.projectId,\n id: execution.executor.runId,\n })\n if (directRun) {\n return {\n kind: \"agent\",\n agentId: directRun.agentId,\n agentRunId: directRun.id,\n threadId: directRun.threadId,\n }\n }\n const agentRun = await this.workflowRunStorage.agentNodes.getByNodeRunId({\n projectId: input.projectId,\n nodeRunId: execution.executor.runId,\n })\n if (!agentRun) return undefined\n const node = await this.workflowRunStorage.nodes.getById({\n projectId: input.projectId,\n id: agentRun.nodeRunId,\n })\n if (!node) return undefined\n return {\n kind: \"workflowAgent\",\n agentId: agentRun.agentId,\n nodeRunId: agentRun.nodeRunId,\n workflowId: node.workflowId,\n workflowRunId: node.workflowRunId,\n }\n }\n\n private readonly transactionScope = new AsyncLocalStorage<object>()\n private readonly activeTransactionTokens = new WeakSet<object>()\n private readonly materializationLifecycles = new WeakMap<\n object,\n ProviderMaterializationTransactionLifecycle\n >()\n private transactionTail: Promise<void> = Promise.resolve()\n\n async ping(): Promise<void> {\n await this.withStorageOperation(() => undefined)\n }\n\n /**\n * Run `run` against a transactional view of this storage.\n *\n * Atomicity is achieved by snapshotting every store before the callback and restoring that\n * snapshot if it throws. The snapshot is a full structural clone of the in-memory dataset, so\n * its cost scales with total dataset size rather than changeset size. That is acceptable for the\n * dev/test role of {@link InMemoryStorage} but is the reason it is not intended for large\n * datasets under heavy transactional load — the SQL providers use real database transactions.\n *\n * The `isolation` option is intentionally ignored: the promise-chain lock serializes\n * transactions one at a time, which is at least as strong as `serializable`.\n */\n async transaction<T>(\n run: (tx: Storage) => Promise<T> | T,\n _options: StorageTransactionOptions = {}\n ): Promise<T> {\n const inheritedTransactionToken = this.transactionScope.getStore()\n if (inheritedTransactionToken && this.activeTransactionTokens.has(inheritedTransactionToken)) {\n throwNestedStorageTransaction()\n }\n\n return this.withTransactionLock(async () => {\n const snapshot = this.snapshot()\n let active = true\n const tx = createTransactionStorageProxy(this.createTransactionStorage(), () => active)\n const transactionToken = {}\n const materializationLifecycle = new ProviderMaterializationTransactionLifecycle()\n this.activeTransactionTokens.add(transactionToken)\n this.materializationLifecycles.set(transactionToken, materializationLifecycle)\n\n try {\n const result = await this.transactionScope.run(transactionToken, async () => run(tx))\n materializationLifecycle.assertCommittable()\n return result\n } catch (error) {\n // A failed rollback leaves the store in an unknown state. Surface that explicitly instead\n // of letting the restore error silently replace (mask) the original transaction error.\n try {\n this.restore(snapshot)\n } catch (restoreError) {\n throw new StorageTransactionError(\n `[Sixb] In-memory storage failed to roll back after a transaction error; state may be inconsistent. Original transaction error: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: restoreError }\n )\n }\n throw error\n } finally {\n this.ontologyStorage.completeTransaction(transactionToken)\n materializationLifecycle.deactivate()\n this.activeTransactionTokens.delete(transactionToken)\n active = false\n }\n })\n }\n\n private async withStorageOperation<T>(run: () => Promise<T> | T): Promise<T> {\n this.assertRootOperationAvailable()\n return this.withTransactionLock(async () => run())\n }\n\n private assertRootOperationAvailable(): void {\n if (!this.getActiveTransactionToken()) return\n throw new StorageTransactionError(\n \"[Sixb] Root storage cannot be used inside a transaction callback; use the provided tx storage.\"\n )\n }\n\n private getActiveTransactionToken(): object | null {\n const token = this.transactionScope.getStore()\n return token && this.activeTransactionTokens.has(token) ? token : null\n }\n\n private getActiveMaterializationLifecycle(): ProviderMaterializationTransactionLifecycle | null {\n const token = this.getActiveTransactionToken()\n return token ? (this.materializationLifecycles.get(token) ?? null) : null\n }\n\n private async withTransactionLock<T>(run: () => Promise<T>): Promise<T> {\n const previous = this.transactionTail\n let release!: () => void\n this.transactionTail = new Promise<void>((resolve) => {\n release = resolve\n })\n\n await previous\n try {\n return await run()\n } finally {\n release()\n }\n }\n\n private createTransactionStorage(): Storage {\n return {\n objects: this.objectStorage,\n timeseries: this.timeseriesStorage,\n ontology: this.ontologyStorage,\n auth: this.authStorage,\n executions: this.executionStorage,\n agents: this.agentStorage,\n aiUsage: this.aiUsageStorage,\n aiCosts: this.aiCostStorage,\n actionRuns: this.actionRunStorage,\n syncRuns: this.syncRunStorage,\n pipelineRuns: this.pipelineRunStorage,\n projectionRuns: this.projectionRunStorage,\n workflowRuns: this.workflowRunStorage,\n workflowInterventions: this.workflowInterventionStorage,\n webhookRuns: this.webhookRunStorage,\n rules: this.rulesStorage,\n fileUploadSessions: this.fileUploadSessionStorage,\n connectorConnections: this.connectorConnectionStorage,\n ping: async () => undefined,\n transaction: async <T>(): Promise<T> => {\n throwNestedStorageTransaction()\n },\n }\n }\n\n private snapshot(): InMemoryStorageSnapshot {\n return {\n objects: this.objectStorage.snapshot(),\n timeseries: this.timeseriesStorage.snapshot(),\n ontology: this.ontologyStorage.snapshot(),\n auth: this.authStorage.snapshot(),\n executions: this.executionStorage.snapshot(),\n agents: this.agentStorage.snapshot(),\n aiUsage: this.aiUsageStorage.snapshot(),\n aiCosts: this.aiCostStorage.snapshot(),\n actionRuns: this.actionRunStorage.snapshot(),\n syncRuns: this.syncRunStorage.snapshot(),\n pipelineRuns: this.pipelineRunStorage.snapshot(),\n projectionRuns: this.projectionRunStorage.snapshot(),\n workflowRuns: this.workflowRunStorage.snapshot(),\n workflowInterventions: this.workflowInterventionStorage.snapshot(),\n webhookRuns: this.webhookRunStorage.snapshot(),\n rules: this.rulesStorage.snapshot(),\n fileUploadSessions: this.fileUploadSessionStorage.snapshot(),\n connectorConnections: this.connectorConnectionStorage.snapshot(),\n }\n }\n\n private restore(snapshot: InMemoryStorageSnapshot): void {\n this.objectStorage.restore(snapshot.objects)\n this.timeseriesStorage.restore(snapshot.timeseries)\n this.ontologyStorage.restore(snapshot.ontology)\n this.authStorage.restore(snapshot.auth)\n this.executionStorage.restore(snapshot.executions)\n this.agentStorage.restore(snapshot.agents)\n this.aiUsageStorage.restore(snapshot.aiUsage)\n this.aiCostStorage.restore(snapshot.aiCosts)\n this.actionRunStorage.restore(snapshot.actionRuns)\n this.syncRunStorage.restore(snapshot.syncRuns)\n this.pipelineRunStorage.restore(snapshot.pipelineRuns)\n this.projectionRunStorage.restore(snapshot.projectionRuns)\n this.workflowRunStorage.restore(snapshot.workflowRuns)\n this.workflowInterventionStorage.restore(snapshot.workflowInterventions)\n this.webhookRunStorage.restore(snapshot.webhookRuns)\n this.rulesStorage.restore(snapshot.rules)\n this.fileUploadSessionStorage.restore(snapshot.fileUploadSessions)\n this.connectorConnectionStorage.restore(snapshot.connectorConnections)\n }\n}\n\nexport interface InMemoryStorageSnapshot {\n readonly objects: ReturnType<InMemoryObjectStorage[\"snapshot\"]>\n readonly timeseries: ReturnType<InMemoryTimeseriesStorage[\"snapshot\"]>\n readonly ontology: ReturnType<InMemoryOntologyStorage[\"snapshot\"]>\n readonly auth: ReturnType<InMemoryAuthStorage[\"snapshot\"]>\n readonly executions: ReturnType<InMemoryExecutionStorage[\"snapshot\"]>\n readonly agents: ReturnType<InMemoryAgentStorage[\"snapshot\"]>\n readonly aiUsage: ReturnType<InMemoryAiUsageStorage[\"snapshot\"]>\n readonly aiCosts: ReturnType<InMemoryAiCostStorage[\"snapshot\"]>\n readonly actionRuns: ReturnType<InMemoryActionRunStorage[\"snapshot\"]>\n readonly syncRuns: ReturnType<InMemorySyncRunStorage[\"snapshot\"]>\n readonly pipelineRuns: ReturnType<InMemoryPipelineRunStorage[\"snapshot\"]>\n readonly projectionRuns: ReturnType<InMemoryProjectionRunStorage[\"snapshot\"]>\n readonly workflowRuns: ReturnType<InMemoryWorkflowRunStorage[\"snapshot\"]>\n readonly workflowInterventions: ReturnType<InMemoryWorkflowInterventionStorage[\"snapshot\"]>\n readonly webhookRuns: ReturnType<InMemoryWebhookRunStorage[\"snapshot\"]>\n readonly rules: ReturnType<InMemoryRulesStorage[\"snapshot\"]>\n readonly fileUploadSessions: ReturnType<InMemoryFileUploadSessions[\"snapshot\"]>\n readonly connectorConnections: ReturnType<InMemoryConnectorConnectionStorage[\"snapshot\"]>\n}\n",
17
+ "import { AsyncLocalStorage } from \"node:async_hooks\"\nimport { InMemoryActionRunStorage } from \"../action-runs\"\nimport { type AgentStorage, InMemoryAgentStorage } from \"../agents\"\nimport { type AiAccountingAttribution, type AiCostStorage, InMemoryAiCostStorage } from \"../ai-cost\"\nimport { type AiLimitStorage, InMemoryAiLimitStorage } from \"../ai-limits\"\nimport { type AiUsageStorage, InMemoryAiUsageStorage } from \"../ai-usage\"\nimport { type AuthStorage, InMemoryAuthStorage } from \"../auth\"\nimport {\n type ConnectorConnectionStorage,\n InMemoryConnectorConnectionStorage,\n} from \"../connector-connections\"\nimport { StorageTransactionError } from \"../errors\"\nimport { InMemoryExecutionStorage } from \"../executions/in-memory\"\nimport type { ExecutionStorage } from \"../executions/types\"\nimport { type FileUploadSessionStore, InMemoryFileUploadSessions } from \"../file-upload-sessions\"\nimport type { ObjectStorage } from \"../objects\"\nimport { InMemoryObjectStorage } from \"../objects/in-memory\"\nimport type { OntologyStorage } from \"../ontology\"\nimport { InMemoryOntologyStorage } from \"../ontology/in-memory\"\nimport { ProviderMaterializationTransactionLifecycle } from \"../ontology/provider\"\nimport {\n createAgentOperationScope,\n createAuthOperationScope,\n createOntologyOperationScope,\n createOperationScopedFacade,\n createStorageOperationScope,\n createWorkflowRunOperationScope,\n} from \"../operation-scope\"\nimport { InMemoryPipelineRunStorage, type PipelineRunStorage } from \"../pipeline-runs\"\nimport { InMemoryProjectionRunStorage } from \"../projection-runs\"\nimport { InMemoryRulesStorage, type RulesStorage } from \"../rules\"\nimport { InMemorySyncRunStorage, type SyncRunStorage } from \"../sync-runs\"\nimport type { TimeseriesStorage } from \"../timeseries\"\nimport { InMemoryTimeseriesStorage } from \"../timeseries/store\"\nimport { createTransactionStorageProxy, throwNestedStorageTransaction } from \"../transaction\"\nimport type { Storage, StorageTransactionOptions } from \"../types\"\nimport { InMemoryWebhookRunStorage, type WebhookRunStorage } from \"../webhook-runs\"\nimport {\n InMemoryWorkflowInterventionStorage,\n type WorkflowInterventionStorage,\n} from \"../workflow-interventions\"\nimport { InMemoryWorkflowRunStorage, type WorkflowRunStorage } from \"../workflow-runs\"\nimport { registerInMemoryStorageTestingAdapter } from \"./testing\"\n\n/**\n * In-memory {@link Storage} used for dev and tests.\n *\n * Every top-level storage call (\"root operation\") serializes against a single promise-chain lock\n * unless a transaction is already active, which is what gives {@link InMemoryStorage.transaction}\n * snapshot/rollback atomicity. The provider owns one operation scope and applies it to every async\n * root capability. Transaction calls reuse the already-active scope and therefore never reacquire\n * its non-reentrant lock.\n */\nexport interface InMemoryStorageOptions {\n readonly connectorConnections?: {\n /** Storage-authoritative clock override for deterministic development and tests. */\n readonly now?: () => Date\n }\n}\n\nexport class InMemoryStorage implements Storage {\n readonly objects: ObjectStorage\n readonly timeseries: TimeseriesStorage\n readonly ontology: OntologyStorage\n private readonly objectStorage = new InMemoryObjectStorage()\n private readonly timeseriesStorage = new InMemoryTimeseriesStorage()\n private readonly ontologyStorage: InMemoryOntologyStorage\n private readonly authStorage = new InMemoryAuthStorage()\n private readonly executionStorage = new InMemoryExecutionStorage(this.authStorage)\n private readonly agentStorage = new InMemoryAgentStorage(this.executionStorage)\n private readonly aiUsageStorage = new InMemoryAiUsageStorage(this.executionStorage)\n private readonly aiCostStorage = new InMemoryAiCostStorage(this.aiUsageStorage, {\n resolve: (input) => this.resolveAiAccountingAttribution(input),\n resolveGroup: async (input) => {\n const attribution = await this.resolveAiAccountingAttribution(input)\n if (attribution?.kind !== \"subagent\") return { executionId: input.executionId, attribution }\n const parent = await this.agentStorage.runs.getById({\n projectId: input.projectId,\n id: attribution.parentRunId,\n })\n if (!parent) throw new Error(\"[Sixb] Subagent accounting parent is missing.\")\n return {\n executionId: parent.executionId,\n attribution: await this.resolveAiAccountingAttribution({\n ...input,\n executionId: parent.executionId,\n }),\n }\n },\n })\n private readonly aiLimitStorage = new InMemoryAiLimitStorage({\n resolveExecution: ({ projectId, executionId }) =>\n this.executionStorage.getById({ projectId, id: executionId }),\n resolveUsageRecord: ({ projectId, usageRecordId }) =>\n this.aiUsageStorage.getRecord(projectId, usageRecordId),\n resolveCostRecord: ({ projectId, usageRecordId }) =>\n this.aiCostStorage.getRecord(projectId, usageRecordId),\n listUsageRecords: ({ projectId }) => this.aiUsageStorage.listRecords(projectId),\n })\n private readonly actionRunStorage = new InMemoryActionRunStorage(this.executionStorage)\n private readonly syncRunStorage = new InMemorySyncRunStorage(this.executionStorage)\n private readonly pipelineRunStorage = new InMemoryPipelineRunStorage(this.executionStorage)\n private readonly projectionRunStorage = new InMemoryProjectionRunStorage({\n executions: this.executionStorage,\n })\n private readonly workflowRunStorage = new InMemoryWorkflowRunStorage(this.executionStorage)\n private readonly workflowInterventionStorage = new InMemoryWorkflowInterventionStorage()\n private readonly webhookRunStorage = new InMemoryWebhookRunStorage(this.executionStorage)\n private readonly rulesStorage = new InMemoryRulesStorage()\n private readonly fileUploadSessionStorage = new InMemoryFileUploadSessions()\n private readonly connectorConnectionStorage: InMemoryConnectorConnectionStorage\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n readonly agents: AgentStorage\n readonly aiUsage: AiUsageStorage\n readonly aiCosts: AiCostStorage\n readonly aiLimits: AiLimitStorage\n readonly actionRuns: InMemoryActionRunStorage\n readonly syncRuns: SyncRunStorage\n readonly pipelineRuns: PipelineRunStorage\n readonly projectionRuns: InMemoryProjectionRunStorage\n readonly workflowRuns: WorkflowRunStorage\n readonly workflowInterventions: WorkflowInterventionStorage\n readonly webhookRuns: WebhookRunStorage\n readonly rules: RulesStorage\n readonly fileUploadSessions: FileUploadSessionStore\n readonly connectorConnections: ConnectorConnectionStorage\n\n constructor(options: InMemoryStorageOptions = {}) {\n this.connectorConnectionStorage = new InMemoryConnectorConnectionStorage(\n options.connectorConnections\n )\n const scope = createStorageOperationScope(\n (run) => this.withStorageOperation(run),\n () => this.assertRootOperationAvailable()\n )\n this.objects = createOperationScopedFacade(this.objectStorage, scope)\n this.timeseries = createOperationScopedFacade(this.timeseriesStorage, scope)\n this.auth = createAuthOperationScope(this.authStorage, scope)\n this.executions = createOperationScopedFacade(this.executionStorage, scope)\n this.agents = createAgentOperationScope(this.agentStorage, scope)\n this.aiUsage = createOperationScopedFacade(this.aiUsageStorage, scope)\n this.aiCosts = createOperationScopedFacade(this.aiCostStorage, scope)\n this.aiLimits = createOperationScopedFacade(this.aiLimitStorage, scope)\n this.actionRuns = createOperationScopedFacade(this.actionRunStorage, scope)\n this.syncRuns = createOperationScopedFacade(this.syncRunStorage, scope)\n this.pipelineRuns = createOperationScopedFacade(this.pipelineRunStorage, scope)\n this.projectionRuns = createOperationScopedFacade(this.projectionRunStorage, scope)\n this.workflowRuns = createWorkflowRunOperationScope(this.workflowRunStorage, scope)\n this.workflowInterventions = createOperationScopedFacade(\n this.workflowInterventionStorage,\n scope\n )\n this.webhookRuns = createOperationScopedFacade(this.webhookRunStorage, scope)\n this.rules = createOperationScopedFacade(this.rulesStorage, scope)\n this.fileUploadSessions = createOperationScopedFacade(this.fileUploadSessionStorage, scope)\n this.connectorConnections = createOperationScopedFacade(this.connectorConnectionStorage, scope)\n this.ontologyStorage = new InMemoryOntologyStorage(this.objectStorage, this.timeseriesStorage, {\n runRootOperation: async (run) => run(),\n getTransactionToken: () => this.getActiveTransactionToken(),\n getMaterializationLifecycle: () => this.getActiveMaterializationLifecycle(),\n assertSourceMaterializationExecution: (input) =>\n this.projectionRunStorage.assertSourceMaterializationExecutionUnlocked(input),\n executionExists: async (projectId, executionId) =>\n (await this.executionStorage.getById({ projectId, id: executionId })) !== null,\n })\n this.ontology = createOntologyOperationScope(this.ontologyStorage, scope)\n this.ontologyStorage.registerTestingAlias(this.ontology)\n registerInMemoryStorageTestingAdapter(this, { snapshot: () => this.snapshot() })\n }\n\n private async resolveAiAccountingAttribution(input: {\n readonly projectId: string\n readonly executionId: string\n }): Promise<AiAccountingAttribution | undefined> {\n const execution = await this.executionStorage.getById({\n projectId: input.projectId,\n id: input.executionId,\n })\n if (!execution || execution.executor.type !== \"agent\") return undefined\n const directRun = await this.agentStorage.runs.getById({\n projectId: input.projectId,\n id: execution.executor.runId,\n })\n if (directRun?.kind === \"conversation\") {\n return {\n kind: \"agent\",\n agentRunId: directRun.id,\n threadId: directRun.threadId,\n }\n }\n if (directRun?.kind === \"subagent\") {\n return {\n kind: \"subagent\",\n subagentRunId: directRun.id,\n parentRunId: directRun.parentRunId,\n }\n }\n const agentRun = await this.workflowRunStorage.agentNodes.getByNodeRunId({\n projectId: input.projectId,\n nodeRunId: execution.executor.runId,\n })\n if (!agentRun) return undefined\n const node = await this.workflowRunStorage.nodes.getById({\n projectId: input.projectId,\n id: agentRun.nodeRunId,\n })\n if (!node) return undefined\n return {\n kind: \"workflowAgent\",\n agentStepId: node.nodeId,\n nodeRunId: agentRun.nodeRunId,\n workflowId: node.workflowId,\n workflowRunId: node.workflowRunId,\n }\n }\n\n private readonly transactionScope = new AsyncLocalStorage<object>()\n private readonly activeTransactionTokens = new WeakSet<object>()\n private readonly materializationLifecycles = new WeakMap<\n object,\n ProviderMaterializationTransactionLifecycle\n >()\n private transactionTail: Promise<void> = Promise.resolve()\n\n async ping(): Promise<void> {\n await this.withStorageOperation(() => undefined)\n }\n\n /**\n * Run `run` against a transactional view of this storage.\n *\n * Atomicity is achieved by snapshotting every store before the callback and restoring that\n * snapshot if it throws. The snapshot is a full structural clone of the in-memory dataset, so\n * its cost scales with total dataset size rather than changeset size. That is acceptable for the\n * dev/test role of {@link InMemoryStorage} but is the reason it is not intended for large\n * datasets under heavy transactional load — the SQL providers use real database transactions.\n *\n * The `isolation` option is intentionally ignored: the promise-chain lock serializes\n * transactions one at a time, which is at least as strong as `serializable`.\n */\n async transaction<T>(\n run: (tx: Storage) => Promise<T> | T,\n _options: StorageTransactionOptions = {}\n ): Promise<T> {\n const inheritedTransactionToken = this.transactionScope.getStore()\n if (inheritedTransactionToken && this.activeTransactionTokens.has(inheritedTransactionToken)) {\n throwNestedStorageTransaction()\n }\n\n return this.withTransactionLock(async () => {\n const snapshot = this.snapshot()\n let active = true\n const tx = createTransactionStorageProxy(this.createTransactionStorage(), () => active)\n const transactionToken = {}\n const materializationLifecycle = new ProviderMaterializationTransactionLifecycle()\n this.activeTransactionTokens.add(transactionToken)\n this.materializationLifecycles.set(transactionToken, materializationLifecycle)\n\n try {\n const result = await this.transactionScope.run(transactionToken, async () => {\n try {\n return await run(tx)\n } finally {\n await this.aiLimitStorage.settleOperations()\n }\n })\n materializationLifecycle.assertCommittable()\n return result\n } catch (error) {\n // A failed rollback leaves the store in an unknown state. Surface that explicitly instead\n // of letting the restore error silently replace (mask) the original transaction error.\n try {\n this.restore(snapshot)\n } catch (restoreError) {\n throw new StorageTransactionError(\n `[Sixb] In-memory storage failed to roll back after a transaction error; state may be inconsistent. Original transaction error: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: restoreError }\n )\n }\n throw error\n } finally {\n this.ontologyStorage.completeTransaction(transactionToken)\n materializationLifecycle.deactivate()\n this.activeTransactionTokens.delete(transactionToken)\n active = false\n }\n })\n }\n\n private async withStorageOperation<T>(run: () => Promise<T> | T): Promise<T> {\n this.assertRootOperationAvailable()\n return this.withTransactionLock(async () => run())\n }\n\n private assertRootOperationAvailable(): void {\n if (!this.getActiveTransactionToken()) return\n throw new StorageTransactionError(\n \"[Sixb] Root storage cannot be used inside a transaction callback; use the provided tx storage.\"\n )\n }\n\n private getActiveTransactionToken(): object | null {\n const token = this.transactionScope.getStore()\n return token && this.activeTransactionTokens.has(token) ? token : null\n }\n\n private getActiveMaterializationLifecycle(): ProviderMaterializationTransactionLifecycle | null {\n const token = this.getActiveTransactionToken()\n return token ? (this.materializationLifecycles.get(token) ?? null) : null\n }\n\n private async withTransactionLock<T>(run: () => Promise<T>): Promise<T> {\n const previous = this.transactionTail\n let release!: () => void\n this.transactionTail = new Promise<void>((resolve) => {\n release = resolve\n })\n\n await previous\n try {\n return await run()\n } finally {\n release()\n }\n }\n\n private createTransactionStorage(): Storage {\n return {\n objects: this.objectStorage,\n timeseries: this.timeseriesStorage,\n ontology: this.ontologyStorage,\n auth: this.authStorage,\n executions: this.executionStorage,\n agents: this.agentStorage,\n aiUsage: this.aiUsageStorage,\n aiCosts: this.aiCostStorage,\n aiLimits: this.aiLimitStorage,\n actionRuns: this.actionRunStorage,\n syncRuns: this.syncRunStorage,\n pipelineRuns: this.pipelineRunStorage,\n projectionRuns: this.projectionRunStorage,\n workflowRuns: this.workflowRunStorage,\n workflowInterventions: this.workflowInterventionStorage,\n webhookRuns: this.webhookRunStorage,\n rules: this.rulesStorage,\n fileUploadSessions: this.fileUploadSessionStorage,\n connectorConnections: this.connectorConnectionStorage,\n ping: async () => undefined,\n transaction: async <T>(): Promise<T> => {\n throwNestedStorageTransaction()\n },\n }\n }\n\n private snapshot(): InMemoryStorageSnapshot {\n return {\n objects: this.objectStorage.snapshot(),\n timeseries: this.timeseriesStorage.snapshot(),\n ontology: this.ontologyStorage.snapshot(),\n auth: this.authStorage.snapshot(),\n executions: this.executionStorage.snapshot(),\n agents: this.agentStorage.snapshot(),\n aiUsage: this.aiUsageStorage.snapshot(),\n aiCosts: this.aiCostStorage.snapshot(),\n aiLimits: this.aiLimitStorage.snapshot(),\n actionRuns: this.actionRunStorage.snapshot(),\n syncRuns: this.syncRunStorage.snapshot(),\n pipelineRuns: this.pipelineRunStorage.snapshot(),\n projectionRuns: this.projectionRunStorage.snapshot(),\n workflowRuns: this.workflowRunStorage.snapshot(),\n workflowInterventions: this.workflowInterventionStorage.snapshot(),\n webhookRuns: this.webhookRunStorage.snapshot(),\n rules: this.rulesStorage.snapshot(),\n fileUploadSessions: this.fileUploadSessionStorage.snapshot(),\n connectorConnections: this.connectorConnectionStorage.snapshot(),\n }\n }\n\n private restore(snapshot: InMemoryStorageSnapshot): void {\n this.objectStorage.restore(snapshot.objects)\n this.timeseriesStorage.restore(snapshot.timeseries)\n this.ontologyStorage.restore(snapshot.ontology)\n this.authStorage.restore(snapshot.auth)\n this.executionStorage.restore(snapshot.executions)\n this.agentStorage.restore(snapshot.agents)\n this.aiUsageStorage.restore(snapshot.aiUsage)\n this.aiCostStorage.restore(snapshot.aiCosts)\n this.aiLimitStorage.restore(snapshot.aiLimits)\n this.actionRunStorage.restore(snapshot.actionRuns)\n this.syncRunStorage.restore(snapshot.syncRuns)\n this.pipelineRunStorage.restore(snapshot.pipelineRuns)\n this.projectionRunStorage.restore(snapshot.projectionRuns)\n this.workflowRunStorage.restore(snapshot.workflowRuns)\n this.workflowInterventionStorage.restore(snapshot.workflowInterventions)\n this.webhookRunStorage.restore(snapshot.webhookRuns)\n this.rulesStorage.restore(snapshot.rules)\n this.fileUploadSessionStorage.restore(snapshot.fileUploadSessions)\n this.connectorConnectionStorage.restore(snapshot.connectorConnections)\n }\n}\n\nexport interface InMemoryStorageSnapshot {\n readonly objects: ReturnType<InMemoryObjectStorage[\"snapshot\"]>\n readonly timeseries: ReturnType<InMemoryTimeseriesStorage[\"snapshot\"]>\n readonly ontology: ReturnType<InMemoryOntologyStorage[\"snapshot\"]>\n readonly auth: ReturnType<InMemoryAuthStorage[\"snapshot\"]>\n readonly executions: ReturnType<InMemoryExecutionStorage[\"snapshot\"]>\n readonly agents: ReturnType<InMemoryAgentStorage[\"snapshot\"]>\n readonly aiUsage: ReturnType<InMemoryAiUsageStorage[\"snapshot\"]>\n readonly aiCosts: ReturnType<InMemoryAiCostStorage[\"snapshot\"]>\n readonly aiLimits: ReturnType<InMemoryAiLimitStorage[\"snapshot\"]>\n readonly actionRuns: ReturnType<InMemoryActionRunStorage[\"snapshot\"]>\n readonly syncRuns: ReturnType<InMemorySyncRunStorage[\"snapshot\"]>\n readonly pipelineRuns: ReturnType<InMemoryPipelineRunStorage[\"snapshot\"]>\n readonly projectionRuns: ReturnType<InMemoryProjectionRunStorage[\"snapshot\"]>\n readonly workflowRuns: ReturnType<InMemoryWorkflowRunStorage[\"snapshot\"]>\n readonly workflowInterventions: ReturnType<InMemoryWorkflowInterventionStorage[\"snapshot\"]>\n readonly webhookRuns: ReturnType<InMemoryWebhookRunStorage[\"snapshot\"]>\n readonly rules: ReturnType<InMemoryRulesStorage[\"snapshot\"]>\n readonly fileUploadSessions: ReturnType<InMemoryFileUploadSessions[\"snapshot\"]>\n readonly connectorConnections: ReturnType<InMemoryConnectorConnectionStorage[\"snapshot\"]>\n}\n",
17
18
  "import type { AuthStorage } from \"../auth\"\nimport { ExecutionStorageError } from \"./errors\"\nimport type { CreateExecutionInput, ExecutionRecord, ExecutionStorage } from \"./types\"\nimport {\n cloneExecutionRecord,\n normalizeExecutionRecord,\n validateExecutionRecordReferences,\n} from \"./validation\"\n\ntype RunRootOperation = <T>(run: () => Promise<T> | T) => Promise<T>\n\nconst runDirectly: RunRootOperation = async <T>(run: () => Promise<T> | T): Promise<T> => run()\n\nfunction executionKey(projectId: string, id: string): string {\n return JSON.stringify([projectId, id])\n}\n\nexport class InMemoryExecutionStorage implements ExecutionStorage {\n private readonly rows = new Map<string, ExecutionRecord>()\n private readonly runRootOperation: RunRootOperation\n\n constructor(\n private readonly auth: AuthStorage,\n input: { readonly runRootOperation?: RunRootOperation } = {}\n ) {\n this.runRootOperation = input.runRootOperation ?? runDirectly\n }\n\n snapshot(): InMemoryExecutionStorageSnapshot {\n return structuredClone(this.rows)\n }\n\n restore(snapshot: InMemoryExecutionStorageSnapshot): void {\n this.rows.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.rows.set(key, record)\n }\n }\n\n async create(input: CreateExecutionInput): Promise<ExecutionRecord> {\n return this.runRootOperation(async () => {\n const record = normalizeExecutionRecord(input)\n const key = executionKey(record.projectId, record.id)\n if (this.rows.has(key)) {\n throw new ExecutionStorageError(\n \"duplicate_execution\",\n `[Sixb] Execution '${record.id}' already exists in project '${record.projectId}'.`\n )\n }\n\n await validateExecutionRecordReferences(record, {\n auth: this.auth,\n getExecution: async ({ projectId, id }) => {\n const existing = this.rows.get(executionKey(projectId, id))\n return existing ? cloneExecutionRecord(existing) : null\n },\n })\n\n this.rows.set(key, cloneExecutionRecord(record))\n return cloneExecutionRecord(record)\n })\n }\n\n async getById(params: {\n readonly projectId: string\n readonly id: string\n }): Promise<ExecutionRecord | null> {\n return this.runRootOperation(() => {\n const record = this.rows.get(executionKey(params.projectId, params.id))\n return record ? cloneExecutionRecord(record) : null\n })\n }\n}\n\nexport type InMemoryExecutionStorageSnapshot = Map<string, ExecutionRecord>\n",
18
19
  "import { compareDecimalValues } from \"../../ontology\"\nimport type { QueryScalarKind } from \"./ir\"\n\n/** Compare two values according to the scalar schema resolved by query validation. */\nexport function compareQueryScalarValues(\n left: unknown,\n right: unknown,\n scalarKind?: QueryScalarKind\n): number {\n if (left === undefined || right === undefined || left === null || right === null) {\n return Number.NaN\n }\n\n if (scalarKind === undefined) return compareRuntimeValues(left, right)\n\n switch (scalarKind) {\n case \"string\":\n case \"uuid\":\n return typeof left === \"string\" && typeof right === \"string\"\n ? compareStrings(left, right)\n : Number.NaN\n case \"boolean\":\n return typeof left === \"boolean\" && typeof right === \"boolean\"\n ? Number(left) - Number(right)\n : Number.NaN\n case \"integer\":\n case \"double\":\n return typeof left === \"number\" && typeof right === \"number\" ? left - right : Number.NaN\n case \"decimal\":\n return typeof left === \"string\" && typeof right === \"string\"\n ? compareDecimalValues(left, right)\n : Number.NaN\n case \"date\":\n case \"timestamp\":\n return compareTemporalValues(left, right)\n }\n}\n\n/** Test equality with the same schema semantics used for ordered comparisons. */\nexport function queryScalarValuesEqual(\n left: unknown,\n right: unknown,\n scalarKind?: QueryScalarKind\n): boolean {\n if (scalarKind === \"decimal\") {\n const comparison = compareQueryScalarValues(left, right, scalarKind)\n return !Number.isNaN(comparison) && comparison === 0\n }\n\n if (scalarKind === \"date\" || scalarKind === \"timestamp\") {\n const comparison = compareTemporalValues(left, right)\n return !Number.isNaN(comparison) && comparison === 0\n }\n\n if (scalarKind !== undefined) return Object.is(left, right)\n return runtimeValuesEqual(left, right)\n}\n\nfunction compareRuntimeValues(left: unknown, right: unknown): number {\n if (typeof left === \"number\" && typeof right === \"number\") return left - right\n if (typeof left === \"string\" && typeof right === \"string\") return compareStrings(left, right)\n if (typeof left === \"boolean\" && typeof right === \"boolean\") {\n return Number(left) - Number(right)\n }\n if (left instanceof Date || right instanceof Date) return compareTemporalValues(left, right)\n return Number.NaN\n}\n\nfunction runtimeValuesEqual(left: unknown, right: unknown): boolean {\n if (left instanceof Date || right instanceof Date) {\n const comparison = compareTemporalValues(left, right)\n return !Number.isNaN(comparison) && comparison === 0\n }\n return Object.is(left, right)\n}\n\nfunction compareTemporalValues(left: unknown, right: unknown): number {\n const leftTime = dateTime(left)\n const rightTime = dateTime(right)\n if (leftTime === null || rightTime === null) return Number.NaN\n return leftTime - rightTime\n}\n\nfunction dateTime(value: unknown): number | null {\n if (value instanceof Date) {\n const time = value.getTime()\n return Number.isNaN(time) ? null : time\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n const time = new Date(value).getTime()\n return Number.isNaN(time) ? null : time\n }\n return null\n}\n\nfunction compareStrings(left: string, right: string): number {\n if (left < right) return -1\n if (left > right) return 1\n return 0\n}\n",
19
20
  "import type { ObjectLinkCursor, ObjectLinkRow } from \"./types\"\n\nexport type ObjectBatchKey = string & {\n readonly __sixbObjectBatchKey: true\n}\n\nexport type LinkBatchKey = string & {\n readonly __sixbLinkBatchKey: true\n}\n\n/** Collision-safe key for object batch-read results. */\nexport function objectBatchKey(objectTypeId: string, primaryId: string): ObjectBatchKey {\n return JSON.stringify([objectTypeId, primaryId]) as ObjectBatchKey\n}\n\n/** Collision-safe key for outgoing-link batch-read results. */\nexport function linkBatchKey(objectTypeId: string, objectId: string, linkId: string): LinkBatchKey {\n return JSON.stringify([objectTypeId, objectId, linkId]) as LinkBatchKey\n}\n\n/** Canonical storage ordering and cursor for physical links. */\nexport function objectLinkCursor(link: ObjectLinkRow): ObjectLinkCursor {\n return [link.sourceTypeId, link.sourceId, link.linkId, link.targetTypeId, link.targetId]\n}\n\nexport function compareObjectLinkCursors(left: ObjectLinkCursor, right: ObjectLinkCursor): number {\n for (let index = 0; index < left.length; index += 1) {\n if (left[index] < right[index]) return -1\n if (left[index] > right[index]) return 1\n }\n return 0\n}\n\nexport function compareObjectLinks(left: ObjectLinkRow, right: ObjectLinkRow): number {\n return compareObjectLinkCursors(objectLinkCursor(left), objectLinkCursor(right))\n}\n",
@@ -43,14 +44,14 @@
43
44
  "import { parseSixbFailure } from \"../../errors/internal\"\nimport type { ExecutionStorage } from \"../executions\"\nimport {\n cloneRecord,\n compareStartedAt,\n hasEmptyStatuses,\n matchesRunListDateFilters,\n paginate,\n storageKey,\n toStatusSet,\n} from \"../run-listing\"\nimport { WebhookRunError } from \"./errors\"\nimport { assertWebhookRunExecution } from \"./provider\"\nimport type {\n FinishWebhookRunInput,\n ListWebhookRunsInput,\n ListWebhookRunsResult,\n RestartWebhookRunInput,\n StartWebhookRunInput,\n WebhookRunRecord,\n WebhookRunStorage,\n} from \"./types\"\nimport { canRetryWebhookRun, WEBHOOK_RUN_FAILURE_CODES } from \"./types\"\n\nexport class InMemoryWebhookRunStorage implements WebhookRunStorage {\n private readonly runs = new Map<string, WebhookRunRecord>()\n\n constructor(private readonly executions: ExecutionStorage) {}\n\n snapshot(): InMemoryWebhookRunStorageSnapshot {\n return structuredClone(this.runs)\n }\n\n restore(snapshot: InMemoryWebhookRunStorageSnapshot): void {\n this.runs.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.runs.set(key, record)\n }\n }\n\n async start(input: StartWebhookRunInput): Promise<WebhookRunRecord> {\n await assertWebhookRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n route: input.route,\n })\n const key = storageKey(input.projectId, input.id)\n if (this.runs.has(key) || this.findByDelivery(input)) {\n throw new WebhookRunError(\n `[Sixb] Webhook run '${input.id}' or delivery key already exists for project '${input.projectId}'.`,\n \"duplicate_run\"\n )\n }\n\n const record: WebhookRunRecord = {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n connectorId: input.connectorId,\n webhookId: input.webhookId,\n status: \"running\",\n method: input.method,\n route: input.route,\n startedAt: new Date(input.startedAt ?? new Date()),\n requestBodyBytes: input.requestBodyBytes,\n requestBodySha256: input.requestBodySha256,\n idempotencyKey: input.idempotencyKey,\n }\n\n this.runs.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async restart(input: RestartWebhookRunInput): Promise<WebhookRunRecord> {\n const existing = this.requireWebhookRun(input.projectId, input.id)\n if (!canRetryWebhookRun(existing)) {\n throw new WebhookRunError(\n `[Sixb] Webhook run '${input.id}' cannot restart from status '${existing.status}'.`,\n \"invalid_transition\"\n )\n }\n const next: WebhookRunRecord = {\n ...existing,\n status: \"running\",\n startedAt: new Date(input.startedAt ?? new Date()),\n finishedAt: undefined,\n responseStatus: undefined,\n error: undefined,\n }\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async finish(input: FinishWebhookRunInput): Promise<WebhookRunRecord> {\n const existing = this.requireRunningWebhookRun(input.projectId, input.id)\n const next: WebhookRunRecord = {\n ...existing,\n status: input.status,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n responseStatus: input.responseStatus,\n error:\n input.status === \"failed\"\n ? parseSixbFailure(input.error, WEBHOOK_RUN_FAILURE_CODES)\n : undefined,\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<WebhookRunRecord | null> {\n const record = this.runs.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async getByDelivery(input: {\n projectId: string\n connectorId: string\n webhookId: string\n idempotencyKey: string\n }): Promise<WebhookRunRecord | null> {\n const record = this.findByDelivery(input)\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWebhookRunsInput): Promise<ListWebhookRunsResult> {\n if (hasEmptyStatuses(input)) {\n return {\n runs: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const filtered = [...this.runs.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) => (input.connectorId ? record.connectorId === input.connectorId : true))\n .filter((record) => (input.webhookId ? record.webhookId === input.webhookId : true))\n .filter((record) =>\n input.idempotencyKey ? record.idempotencyKey === input.idempotencyKey : true\n )\n .filter((record) =>\n matchesRunListDateFilters(record, {\n statuses,\n startedAfter: input.startedAfter,\n startedBefore: input.startedBefore,\n })\n )\n .sort((left, right) => compareStartedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n runs: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n private requireWebhookRun(projectId: string, id: string): WebhookRunRecord {\n const record = this.runs.get(storageKey(projectId, id))\n if (!record) {\n throw new WebhookRunError(\n `[Sixb] Webhook run '${id}' not found for project '${projectId}'.`,\n \"not_found\"\n )\n }\n\n return record\n }\n\n private requireRunningWebhookRun(projectId: string, id: string): WebhookRunRecord {\n const record = this.requireWebhookRun(projectId, id)\n\n if (record.status !== \"running\") {\n throw new WebhookRunError(\n `[Sixb] Webhook run '${id}' for project '${projectId}' is already terminal.`,\n \"invalid_transition\"\n )\n }\n\n return record\n }\n\n private findByDelivery(input: {\n readonly projectId: string\n readonly connectorId: string\n readonly webhookId: string\n readonly idempotencyKey?: string\n }): WebhookRunRecord | undefined {\n if (input.idempotencyKey === undefined) return undefined\n return [...this.runs.values()].find(\n (run) =>\n run.projectId === input.projectId &&\n run.connectorId === input.connectorId &&\n run.webhookId === input.webhookId &&\n run.idempotencyKey === input.idempotencyKey\n )\n }\n}\n\nexport type InMemoryWebhookRunStorageSnapshot = Map<string, WebhookRunRecord>\n",
44
45
  "/**\n * Base error for workflow-intervention storage operations.\n */\nexport class WorkflowInterventionError extends Error {\n readonly name = \"WorkflowInterventionError\"\n}\n",
45
46
  "import { cloneRecord, hasEmptyStatuses, paginate, storageKey, toStatusSet } from \"../run-listing\"\nimport { WorkflowInterventionError } from \"./errors\"\nimport type {\n CancelWorkflowInterventionInput,\n CreateWorkflowInterventionInput,\n ExpireWorkflowInterventionInput,\n ListWorkflowInterventionsInput,\n ListWorkflowInterventionsResult,\n SubmitWorkflowInterventionInput,\n WorkflowInterventionRecord,\n WorkflowInterventionStorage,\n} from \"./types\"\n\nfunction assertNonNegativeInteger(value: number, fieldName: string): void {\n if (!Number.isInteger(value) || value < 0) {\n throw new WorkflowInterventionError(\n `[Sixb] Workflow intervention ${fieldName} must be a non-negative integer.`\n )\n }\n}\n\nexport class InMemoryWorkflowInterventionStorage implements WorkflowInterventionStorage {\n private readonly interventions = new Map<string, WorkflowInterventionRecord>()\n\n snapshot(): InMemoryWorkflowInterventionStorageSnapshot {\n return structuredClone(this.interventions)\n }\n\n restore(snapshot: InMemoryWorkflowInterventionStorageSnapshot): void {\n this.interventions.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.interventions.set(key, record)\n }\n }\n\n async create(input: CreateWorkflowInterventionInput): Promise<WorkflowInterventionRecord> {\n assertNonNegativeInteger(input.nodeIndex, \"nodeIndex\")\n\n const key = storageKey(input.projectId, input.id)\n if (this.interventions.has(key)) {\n throw new WorkflowInterventionError(\n `[Sixb] Workflow intervention '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const record: WorkflowInterventionRecord = {\n id: input.id,\n projectId: input.projectId,\n workflowId: input.workflowId,\n workflowRunId: input.workflowRunId,\n nodeRunId: input.nodeRunId,\n nodeIndex: input.nodeIndex,\n nodeId: input.nodeId,\n nodeKey: input.nodeKey,\n interventionId: input.interventionId,\n input: cloneRecord(input.input),\n defaultResponse: cloneRecord(input.defaultResponse),\n status: \"pending\",\n requestedAt: new Date(input.requestedAt ?? new Date()),\n expiresAt: input.expiresAt ? new Date(input.expiresAt) : undefined,\n }\n\n this.interventions.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async submit(input: SubmitWorkflowInterventionInput): Promise<WorkflowInterventionRecord> {\n const existing = this.requirePendingIntervention(input.projectId, input.id)\n const next: WorkflowInterventionRecord = {\n ...existing,\n status: \"submitted\",\n submittedAt: new Date(input.submittedAt ?? new Date()),\n submittedBy: input.submittedBy ? cloneRecord(input.submittedBy) : undefined,\n response: cloneRecord(input.response),\n }\n\n this.interventions.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async cancel(input: CancelWorkflowInterventionInput): Promise<WorkflowInterventionRecord> {\n const existing = this.requirePendingIntervention(input.projectId, input.id)\n const next: WorkflowInterventionRecord = {\n ...existing,\n status: \"cancelled\",\n cancelledAt: new Date(input.cancelledAt ?? new Date()),\n cancelledBy: input.cancelledBy ? cloneRecord(input.cancelledBy) : undefined,\n }\n\n this.interventions.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async expire(input: ExpireWorkflowInterventionInput): Promise<WorkflowInterventionRecord> {\n const existing = this.requirePendingIntervention(input.projectId, input.id)\n const next: WorkflowInterventionRecord = {\n ...existing,\n status: \"expired\",\n expiredAt: new Date(input.expiredAt ?? new Date()),\n }\n\n this.interventions.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: {\n projectId: string\n id: string\n }): Promise<WorkflowInterventionRecord | null> {\n const record = this.interventions.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWorkflowInterventionsInput): Promise<ListWorkflowInterventionsResult> {\n if (hasEmptyStatuses(input) || input.workflowIds?.length === 0) {\n return {\n interventions: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const workflowIds = input.workflowIds ? new Set(input.workflowIds) : null\n const filtered = [...this.interventions.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) => (statuses ? statuses.has(record.status) : true))\n .filter((record) => (input.workflowId ? record.workflowId === input.workflowId : true))\n .filter((record) => (workflowIds ? workflowIds.has(record.workflowId) : true))\n .filter((record) =>\n input.workflowRunId ? record.workflowRunId === input.workflowRunId : true\n )\n .filter((record) => (input.nodeRunId ? record.nodeRunId === input.nodeRunId : true))\n .filter((record) => (input.nodeId ? record.nodeId === input.nodeId : true))\n .filter((record) => (input.nodeKey ? record.nodeKey === input.nodeKey : true))\n .filter((record) =>\n input.interventionId ? record.interventionId === input.interventionId : true\n )\n .filter((record) =>\n input.requestedAfter ? record.requestedAt >= input.requestedAfter : true\n )\n .filter((record) =>\n input.requestedBefore ? record.requestedAt <= input.requestedBefore : true\n )\n .sort((left, right) => compareRequestedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n interventions: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n private requirePendingIntervention(projectId: string, id: string): WorkflowInterventionRecord {\n const record = this.interventions.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowInterventionError(\n `[Sixb] Workflow intervention '${id}' not found for project '${projectId}'.`\n )\n }\n\n if (record.status !== \"pending\") {\n throw new WorkflowInterventionError(\n `[Sixb] Workflow intervention '${id}' for project '${projectId}' is not pending.`\n )\n }\n\n return record\n }\n}\n\nexport type InMemoryWorkflowInterventionStorageSnapshot = Map<string, WorkflowInterventionRecord>\n\nfunction compareRequestedAt(\n left: { readonly id: string; readonly requestedAt: Date },\n right: { readonly id: string; readonly requestedAt: Date },\n order: \"asc\" | \"desc\"\n): number {\n const delta = left.requestedAt.getTime() - right.requestedAt.getTime()\n if (delta !== 0) {\n return order === \"asc\" ? delta : -delta\n }\n\n if (left.id === right.id) {\n return 0\n }\n\n return order === \"asc\" ? left.id.localeCompare(right.id) : right.id.localeCompare(left.id)\n}\n",
46
- "import type { AgentMessagePart } from \"../../agents/message\"\nimport type { SixbErrorCode, SixbFailure } from \"../../errors/types\"\nimport type { JsonValue } from \"../../json\"\nimport type { WorkflowIOSnapshot } from \"../../workflows/types\"\nimport type { AgentExecutionStatus, AgentRunFailureCode, AgentRunFinishReason } from \"../agents\"\n\nexport type { WorkflowIOSnapshot } from \"../../workflows/types\"\n\nexport type WorkflowRunStatus =\n | \"queued\"\n | \"running\"\n | \"waiting\"\n | \"succeeded\"\n | \"failed\"\n | \"cancelled\"\nexport type WorkflowNodeRunStatus = Exclude<WorkflowRunStatus, \"queued\">\nexport type WorkflowNodeRunType = \"step\" | \"action\" | \"intervention\" | \"agent\"\n\n/** Error codes a workflow or workflow-node run can persist and expose. */\nexport const WORKFLOW_RUN_FAILURE_CODES = [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n \"workflow.node_failed\",\n] as const satisfies readonly [SixbErrorCode, ...SixbErrorCode[]]\n\nexport type WorkflowRunFailureCode = (typeof WORKFLOW_RUN_FAILURE_CODES)[number]\n\nexport interface WorkflowRunExecution {\n readonly token: string\n readonly queueLeaseExpiresAt: Date\n}\n\nexport type WorkflowAgentNodeRunStatus = AgentExecutionStatus\n\nexport interface WorkflowAgentNodeRunExecution {\n readonly token: string\n readonly queueLeaseExpiresAt: Date\n}\n\n/** Execution details for an agent workflow node. The generic node run owns business IO. */\nexport interface WorkflowAgentNodeRunRecord {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionId: string\n readonly agentId: string\n readonly status: WorkflowAgentNodeRunStatus\n readonly prompt: string\n readonly modelId?: string\n readonly finishReason?: AgentRunFinishReason\n readonly trace?: readonly AgentMessagePart[]\n readonly diagnostics?: readonly JsonValue[]\n readonly error?: SixbFailure<AgentRunFailureCode>\n readonly attempt: number\n readonly execution?: WorkflowAgentNodeRunExecution\n readonly createdAt: Date\n readonly startedAt?: Date\n readonly completedAt?: Date\n}\n\nexport interface CreateWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionId: string\n readonly agentId: string\n readonly prompt: string\n readonly createdAt?: Date\n}\n\nexport interface StartWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly modelId?: string\n readonly execution: WorkflowAgentNodeRunExecution\n readonly startedAt?: Date\n}\n\nexport interface ReclaimWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly execution: WorkflowAgentNodeRunExecution\n}\n\nexport interface ConfirmWorkflowAgentNodeRunExecutionOwnershipInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionToken: string\n readonly queueLeaseExpiresAt: Date\n}\n\ninterface FinishWorkflowAgentNodeRunBaseInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionToken: string\n readonly modelId?: string\n readonly finishReason?: AgentRunFinishReason\n readonly trace?: readonly AgentMessagePart[]\n readonly diagnostics?: readonly JsonValue[]\n readonly completedAt?: Date\n}\n\nexport type FinishWorkflowAgentNodeRunInput =\n | (FinishWorkflowAgentNodeRunBaseInput & {\n readonly status: \"succeeded\"\n })\n | (FinishWorkflowAgentNodeRunBaseInput & {\n readonly status: \"failed\" | \"cancelled\"\n readonly error?: SixbFailure<AgentRunFailureCode>\n })\n\nexport interface CancelWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly error?: SixbFailure<AgentRunFailureCode>\n readonly completedAt?: Date\n}\n\nexport interface ListWorkflowAgentNodeRunsInput {\n readonly projectId: string\n readonly agentId?: string\n readonly statuses?: readonly WorkflowAgentNodeRunStatus[]\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowAgentNodeRunsResult {\n readonly runs: readonly WorkflowAgentNodeRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface WorkflowRunRecord {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly workflowId: string\n readonly status: WorkflowRunStatus\n readonly input: WorkflowIOSnapshot\n readonly output?: WorkflowIOSnapshot\n readonly queuedAt?: Date\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n /** Durable group memberships snapshotted when the workflow run was admitted. */\n readonly requesterGroupIds: readonly string[]\n readonly attempt: number\n readonly execution?: WorkflowRunExecution\n}\n\nexport interface WorkflowNodeRunRecord {\n readonly id: string\n readonly projectId: string\n readonly workflowRunId: string\n readonly workflowId: string\n readonly nodeIndex: number\n readonly nodeType: WorkflowNodeRunType\n readonly nodeId: string\n readonly nodeKey: string\n readonly status: WorkflowNodeRunStatus\n readonly input: WorkflowIOSnapshot\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly output?: WorkflowIOSnapshot\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n}\n\nexport interface StartWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly startedAt?: Date\n readonly execution?: WorkflowRunExecution\n}\n\nexport interface QueueWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly workflowId: string\n readonly input: WorkflowIOSnapshot\n readonly queuedAt?: Date\n readonly requesterGroupIds: readonly string[]\n}\n\nexport interface ReclaimWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly execution: WorkflowRunExecution\n}\n\nexport interface ConfirmWorkflowRunExecutionOwnershipInput {\n readonly id: string\n readonly projectId: string\n readonly executionToken: string\n readonly queueLeaseExpiresAt: Date\n}\n\nexport interface WaitWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly waitingAt?: Date\n readonly executionToken?: string\n}\n\nexport interface ResumeWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly resumedAt?: Date\n readonly execution?: WorkflowRunExecution\n}\n\nexport type FinishWorkflowRunInput =\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"succeeded\"\n readonly output: WorkflowIOSnapshot\n readonly finishedAt?: Date\n readonly executionToken?: string\n }\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"failed\" | \"cancelled\"\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n readonly executionToken?: string\n }\n\nexport interface StartWorkflowNodeRunInput {\n readonly id: string\n readonly projectId: string\n readonly workflowRunId: string\n readonly workflowId: string\n readonly nodeIndex: number\n readonly nodeType: WorkflowNodeRunType\n readonly nodeId: string\n readonly nodeKey: string\n readonly input: WorkflowIOSnapshot\n readonly startedAt?: Date\n readonly executionToken?: string\n}\n\nexport interface WaitWorkflowNodeRunInput {\n readonly id: string\n readonly projectId: string\n readonly waitingAt?: Date\n readonly executionToken?: string\n}\n\nexport type FinishWorkflowNodeRunInput =\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"succeeded\"\n readonly finishedAt?: Date\n readonly output?: WorkflowIOSnapshot\n readonly executionToken?: string\n }\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"failed\" | \"cancelled\"\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n readonly executionToken?: string\n }\n\nexport interface ListWorkflowRunsInput {\n readonly projectId: string\n readonly workflowId?: string\n readonly workflowIds?: readonly string[]\n readonly statuses?: readonly WorkflowRunStatus[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowRunsResult {\n readonly runs: readonly WorkflowRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface ListLatestWorkflowRunsInput {\n readonly projectId: string\n readonly workflowIds: readonly string[]\n}\n\nexport interface ListLatestWorkflowRunsResult {\n readonly runs: readonly WorkflowRunRecord[]\n}\n\nexport interface ListWorkflowNodeRunsInput {\n readonly projectId: string\n readonly workflowRunId?: string\n readonly workflowId?: string\n readonly nodeType?: WorkflowNodeRunType\n readonly nodeId?: string\n readonly nodeKey?: string\n readonly statuses?: readonly WorkflowNodeRunStatus[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowNodeRunsResult {\n readonly nodes: readonly WorkflowNodeRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface WorkflowRunStorage {\n readonly nodes: WorkflowNodeRunStorage\n readonly agentNodes: WorkflowAgentNodeRunStorage\n\n queue(input: QueueWorkflowRunInput): Promise<WorkflowRunRecord>\n /** Atomically claims a queued run by transitioning it to running; competing claims must fail. */\n start(input: StartWorkflowRunInput): Promise<WorkflowRunRecord>\n reclaim(input: ReclaimWorkflowRunInput): Promise<WorkflowRunRecord>\n confirmExecutionOwnership(\n input: ConfirmWorkflowRunExecutionOwnershipInput\n ): Promise<WorkflowRunRecord>\n wait(input: WaitWorkflowRunInput): Promise<WorkflowRunRecord>\n resume(input: ResumeWorkflowRunInput): Promise<WorkflowRunRecord>\n finish(input: FinishWorkflowRunInput): Promise<WorkflowRunRecord>\n getById(params: { projectId: string; id: string }): Promise<WorkflowRunRecord | null>\n list(input: ListWorkflowRunsInput): Promise<ListWorkflowRunsResult>\n listLatestByWorkflowIds(input: ListLatestWorkflowRunsInput): Promise<ListLatestWorkflowRunsResult>\n}\n\nexport interface WorkflowAgentNodeRunStorage {\n create(input: CreateWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n start(input: StartWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n reclaim(input: ReclaimWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n confirmExecutionOwnership(\n input: ConfirmWorkflowAgentNodeRunExecutionOwnershipInput\n ): Promise<WorkflowAgentNodeRunRecord>\n cancel(input: CancelWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n finish(input: FinishWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n getByNodeRunId(params: {\n projectId: string\n nodeRunId: string\n }): Promise<WorkflowAgentNodeRunRecord | null>\n list(input: ListWorkflowAgentNodeRunsInput): Promise<ListWorkflowAgentNodeRunsResult>\n}\n\nexport interface WorkflowNodeRunStorage {\n start(input: StartWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n wait(input: WaitWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n finish(input: FinishWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n getById(params: { projectId: string; id: string }): Promise<WorkflowNodeRunRecord | null>\n list(input: ListWorkflowNodeRunsInput): Promise<ListWorkflowNodeRunsResult>\n}\n",
47
- "import { normalizeRequesterGroupIds } from \"../../auth/attribution\"\nimport { parseSixbFailure } from \"../../errors/internal\"\nimport type { SixbFailure } from \"../../errors/types\"\nimport type { AgentRunFailureCode } from \"../agents\"\nimport { AGENT_RUN_FAILURE_CODES } from \"../agents\"\nimport type { ExecutionStorage } from \"../executions\"\nimport {\n cloneRecord,\n compareStartedAt,\n hasEmptyStatuses,\n latestStartedAtByOwnerId,\n matchesRunListDateFilters,\n paginate,\n storageKey,\n toStatusSet,\n} from \"../run-listing\"\nimport { WorkflowRunError } from \"./errors\"\nimport { assertWorkflowAgentNodeRunExecution, assertWorkflowRunExecution } from \"./provider\"\nimport type {\n CancelWorkflowAgentNodeRunInput,\n ConfirmWorkflowAgentNodeRunExecutionOwnershipInput,\n ConfirmWorkflowRunExecutionOwnershipInput,\n CreateWorkflowAgentNodeRunInput,\n FinishWorkflowAgentNodeRunInput,\n FinishWorkflowNodeRunInput,\n FinishWorkflowRunInput,\n ListLatestWorkflowRunsInput,\n ListLatestWorkflowRunsResult,\n ListWorkflowAgentNodeRunsInput,\n ListWorkflowAgentNodeRunsResult,\n ListWorkflowNodeRunsInput,\n ListWorkflowNodeRunsResult,\n ListWorkflowRunsInput,\n ListWorkflowRunsResult,\n QueueWorkflowRunInput,\n ReclaimWorkflowAgentNodeRunInput,\n ReclaimWorkflowRunInput,\n ResumeWorkflowRunInput,\n StartWorkflowAgentNodeRunInput,\n StartWorkflowNodeRunInput,\n StartWorkflowRunInput,\n WaitWorkflowNodeRunInput,\n WaitWorkflowRunInput,\n WorkflowAgentNodeRunRecord,\n WorkflowAgentNodeRunStorage,\n WorkflowNodeRunRecord,\n WorkflowNodeRunStorage,\n WorkflowRunFailureCode,\n WorkflowRunRecord,\n WorkflowRunStorage,\n} from \"./types\"\nimport { WORKFLOW_RUN_FAILURE_CODES } from \"./types\"\n\nfunction normalizeFailure(\n failure: SixbFailure<WorkflowRunFailureCode> | undefined\n): SixbFailure<WorkflowRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, WORKFLOW_RUN_FAILURE_CODES) : undefined\n}\n\nfunction normalizeAgentFailure(\n failure: SixbFailure<AgentRunFailureCode> | undefined\n): SixbFailure<AgentRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, AGENT_RUN_FAILURE_CODES) : undefined\n}\n\nfunction assertNonNegativeInteger(value: number, fieldName: string): void {\n if (!Number.isInteger(value) || value < 0) {\n throw new WorkflowRunError(`[Sixb] Workflow run ${fieldName} must be a non-negative integer.`)\n }\n}\n\nexport class InMemoryWorkflowRunStorage implements WorkflowRunStorage {\n readonly nodes: InMemoryWorkflowNodeRunStorage\n readonly agentNodes: InMemoryWorkflowAgentNodeRunStorage\n\n private readonly runs = new Map<string, WorkflowRunRecord>()\n\n constructor(private readonly executions: ExecutionStorage) {\n this.nodes = new InMemoryWorkflowNodeRunStorage({\n requireRunningWorkflowRun: (projectId, id) => this.requireRunningWorkflowRun(projectId, id),\n requireActiveWorkflowRun: (projectId, id) => this.requireActiveWorkflowRun(projectId, id),\n assertExecutionOwnership: (projectId, id, token) =>\n this.assertExecutionOwnership(projectId, id, token),\n })\n this.agentNodes = new InMemoryWorkflowAgentNodeRunStorage(\n {\n requireAgentNodeRun: (projectId, id) => this.nodes.requireAgentNodeRun(projectId, id),\n requireWorkflowRun: (projectId, id) => this.requireExistingWorkflowRun(projectId, id),\n },\n this.executions\n )\n }\n\n snapshot(): InMemoryWorkflowRunStorageSnapshot {\n return {\n runs: structuredClone(this.runs),\n nodes: this.nodes.snapshot(),\n agentNodes: this.agentNodes.snapshot(),\n }\n }\n\n restore(snapshot: InMemoryWorkflowRunStorageSnapshot): void {\n this.runs.clear()\n for (const [key, record] of structuredClone(snapshot.runs)) {\n this.runs.set(key, record)\n }\n this.nodes.restore(snapshot.nodes)\n this.agentNodes.restore(snapshot.agentNodes)\n }\n\n async queue(input: QueueWorkflowRunInput): Promise<WorkflowRunRecord> {\n const key = storageKey(input.projectId, input.id)\n if (this.runs.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n if (\n [...this.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new WorkflowRunError(\n `[Sixb] Execution '${input.executionId}' already belongs to another workflow run.`\n )\n }\n await assertWorkflowRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n workflowId: input.workflowId,\n })\n\n const queuedAt = new Date(input.queuedAt ?? new Date())\n const record: WorkflowRunRecord = {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n workflowId: input.workflowId,\n status: \"queued\",\n input: cloneRecord(input.input),\n queuedAt,\n startedAt: queuedAt,\n attempt: 0,\n requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),\n }\n\n this.runs.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async start(input: StartWorkflowRunInput): Promise<WorkflowRunRecord> {\n const key = storageKey(input.projectId, input.id)\n const existing = this.runs.get(key)\n if (!existing || existing.status !== \"queued\") {\n throw new WorkflowRunError(\n existing\n ? `[Sixb] Workflow run '${input.id}' cannot start from status '${existing.status}'.`\n : `[Sixb] Workflow run '${input.id}' not found for project '${input.projectId}'.`\n )\n }\n\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"running\",\n startedAt: new Date(input.startedAt ?? new Date()),\n finishedAt: undefined,\n error: undefined,\n attempt: existing.attempt + 1,\n execution: input.execution ? cloneRecord(input.execution) : undefined,\n }\n\n this.runs.set(key, cloneRecord(next))\n return cloneRecord(next)\n }\n\n async finish(input: FinishWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireFinishableWorkflowRun(input)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const base: WorkflowRunRecord = {\n ...existing,\n status: input.status,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n execution: undefined,\n }\n\n const next: WorkflowRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n output: cloneRecord(input.output),\n error: undefined,\n }\n : {\n ...base,\n output: undefined,\n error: normalizeFailure(input.error),\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async wait(input: WaitWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"waiting\",\n finishedAt: undefined,\n error: undefined,\n execution: undefined,\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async resume(input: ResumeWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireWaitingWorkflowRun(input.projectId, input.id)\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"running\",\n finishedAt: undefined,\n error: undefined,\n attempt: existing.attempt + 1,\n execution: input.execution ? cloneRecord(input.execution) : undefined,\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async reclaim(input: ReclaimWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n const next: WorkflowRunRecord = {\n ...existing,\n attempt: existing.attempt + 1,\n execution: cloneRecord(input.execution),\n }\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async confirmExecutionOwnership(\n input: ConfirmWorkflowRunExecutionOwnershipInput\n ): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const next: WorkflowRunRecord = {\n ...existing,\n execution: {\n token: input.executionToken,\n queueLeaseExpiresAt: new Date(\n Math.max(\n existing.execution!.queueLeaseExpiresAt.getTime(),\n input.queueLeaseExpiresAt.getTime()\n )\n ),\n },\n }\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<WorkflowRunRecord | null> {\n const record = this.runs.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWorkflowRunsInput): Promise<ListWorkflowRunsResult> {\n if (hasEmptyStatuses(input) || input.workflowIds?.length === 0) {\n return {\n runs: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const workflowIds = input.workflowIds ? new Set(input.workflowIds) : null\n const filtered = [...this.runs.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) => (input.workflowId ? record.workflowId === input.workflowId : true))\n .filter((record) => (workflowIds ? workflowIds.has(record.workflowId) : true))\n .filter((record) =>\n matchesRunListDateFilters(record, {\n statuses,\n startedAfter: input.startedAfter,\n startedBefore: input.startedBefore,\n })\n )\n .sort((left, right) => compareStartedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n runs: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n async listLatestByWorkflowIds(\n input: ListLatestWorkflowRunsInput\n ): Promise<ListLatestWorkflowRunsResult> {\n const runs = latestStartedAtByOwnerId(\n [...this.runs.values()].filter((record) => record.projectId === input.projectId),\n input.workflowIds,\n (record) => record.workflowId\n )\n\n return {\n runs: runs.map(cloneRecord),\n }\n }\n\n private requireExistingWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.runs.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' not found for project '${projectId}'.`\n )\n }\n\n return record\n }\n\n private requireRunningWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' must be running.`\n )\n }\n\n return record\n }\n\n private requireWaitingWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' must be waiting.`\n )\n }\n\n return record\n }\n\n private requireActiveWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"running\" && record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' is already terminal.`\n )\n }\n\n return record\n }\n\n private requireFinishableWorkflowRun(input: FinishWorkflowRunInput): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(input.projectId, input.id)\n if (record.status === \"running\") {\n return record\n }\n\n if (record.status === \"waiting\" && input.status !== \"succeeded\") {\n return record\n }\n\n if (record.status === \"queued\" && input.status !== \"succeeded\") {\n return record\n }\n\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${input.id}' for project '${input.projectId}' cannot be finished from status '${record.status}'.`\n )\n }\n\n private assertExecutionOwnership(projectId: string, id: string, token?: string): void {\n this.assertRecordExecutionOwnership(this.requireExistingWorkflowRun(projectId, id), token)\n }\n\n private assertRecordExecutionOwnership(record: WorkflowRunRecord, token?: string): void {\n if (record.execution?.token !== token) {\n throw new WorkflowRunError(\n `[Sixb] Execution token is no longer current on workflow run '${record.id}'.`\n )\n }\n }\n}\n\nexport class InMemoryWorkflowNodeRunStorage implements WorkflowNodeRunStorage {\n private readonly nodes = new Map<string, WorkflowNodeRunRecord>()\n\n constructor(\n private readonly workflowRuns: {\n requireRunningWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n requireActiveWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n assertExecutionOwnership(projectId: string, id: string, token?: string): void\n }\n ) {}\n\n snapshot(): InMemoryWorkflowNodeRunStorageSnapshot {\n return structuredClone(this.nodes)\n }\n\n restore(snapshot: InMemoryWorkflowNodeRunStorageSnapshot): void {\n this.nodes.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.nodes.set(key, record)\n }\n }\n\n async start(input: StartWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n assertNonNegativeInteger(input.nodeIndex, \"nodeIndex\")\n\n const workflowRun = this.workflowRuns.requireRunningWorkflowRun(\n input.projectId,\n input.workflowRunId\n )\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n input.workflowRunId,\n input.executionToken\n )\n if (workflowRun.workflowId !== input.workflowId) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${input.id}' workflow '${input.workflowId}' does not match workflow run '${input.workflowRunId}' workflow '${workflowRun.workflowId}'.`\n )\n }\n\n const key = storageKey(input.projectId, input.id)\n if (this.nodes.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const record: WorkflowNodeRunRecord = {\n id: input.id,\n projectId: input.projectId,\n workflowRunId: input.workflowRunId,\n workflowId: input.workflowId,\n nodeIndex: input.nodeIndex,\n nodeType: input.nodeType,\n nodeId: input.nodeId,\n nodeKey: input.nodeKey,\n status: \"running\",\n input: cloneRecord(input.input),\n startedAt: new Date(input.startedAt ?? new Date()),\n }\n\n this.nodes.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async finish(input: FinishWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n const existing = this.requireActiveNodeRun(input.projectId, input.id)\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n existing.workflowRunId,\n input.executionToken\n )\n const base: WorkflowNodeRunRecord = {\n ...existing,\n status: input.status,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n }\n\n const next: WorkflowNodeRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n output: input.output ? cloneRecord(input.output) : undefined,\n error: undefined,\n }\n : {\n ...base,\n output: undefined,\n error: normalizeFailure(input.error),\n }\n\n this.nodes.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async wait(input: WaitWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n const existing = this.requireRunningNodeRun(input.projectId, input.id)\n this.workflowRuns.requireActiveWorkflowRun(input.projectId, existing.workflowRunId)\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n existing.workflowRunId,\n input.executionToken\n )\n\n const next: WorkflowNodeRunRecord = {\n ...existing,\n status: \"waiting\",\n finishedAt: undefined,\n output: undefined,\n error: undefined,\n }\n\n this.nodes.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<WorkflowNodeRunRecord | null> {\n const record = this.nodes.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWorkflowNodeRunsInput): Promise<ListWorkflowNodeRunsResult> {\n if (hasEmptyStatuses(input)) {\n return {\n nodes: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const filtered = [...this.nodes.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) =>\n input.workflowRunId ? record.workflowRunId === input.workflowRunId : true\n )\n .filter((record) => (input.workflowId ? record.workflowId === input.workflowId : true))\n .filter((record) => (input.nodeType ? record.nodeType === input.nodeType : true))\n .filter((record) => (input.nodeId ? record.nodeId === input.nodeId : true))\n .filter((record) => (input.nodeKey ? record.nodeKey === input.nodeKey : true))\n .filter((record) =>\n matchesRunListDateFilters(record, {\n statuses,\n startedAfter: input.startedAfter,\n startedBefore: input.startedBefore,\n })\n )\n .sort((left, right) => compareStartedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n nodes: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n private requireRunningNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const record = this.nodes.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n\n if (record.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' for project '${projectId}' must be running.`\n )\n }\n\n return record\n }\n\n private requireActiveNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const record = this.nodes.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n\n if (record.status !== \"running\" && record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' for project '${projectId}' is already terminal.`\n )\n }\n\n return record\n }\n\n requireAgentNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const node = this.nodes.get(storageKey(projectId, id))\n if (!node) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n if (node.nodeType !== \"agent\") {\n throw new WorkflowRunError(`[Sixb] Workflow node run '${id}' is not an agent node.`)\n }\n return node\n }\n}\n\nexport class InMemoryWorkflowAgentNodeRunStorage implements WorkflowAgentNodeRunStorage {\n private readonly runs = new Map<string, WorkflowAgentNodeRunRecord>()\n\n constructor(\n private readonly nodes: {\n requireAgentNodeRun(projectId: string, id: string): WorkflowNodeRunRecord\n requireWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n },\n private readonly executions: ExecutionStorage\n ) {}\n\n snapshot(): InMemoryWorkflowAgentNodeRunStorageSnapshot {\n return structuredClone(this.runs)\n }\n\n restore(snapshot: InMemoryWorkflowAgentNodeRunStorageSnapshot): void {\n this.runs.clear()\n for (const [key, record] of structuredClone(snapshot)) this.runs.set(key, record)\n }\n\n async create(input: CreateWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const node = this.nodes.requireAgentNodeRun(input.projectId, input.nodeRunId)\n const workflowRun = this.nodes.requireWorkflowRun(input.projectId, node.workflowRunId)\n await assertWorkflowAgentNodeRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n nodeRunId: input.nodeRunId,\n agentId: input.agentId,\n workflowExecutionId: workflowRun.executionId,\n })\n if (node.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${input.nodeRunId}' must be running when queued.`\n )\n }\n const key = storageKey(input.projectId, input.nodeRunId)\n if (this.runs.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Agent execution already exists for workflow node run '${input.nodeRunId}'.`\n )\n }\n if (\n [...this.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new WorkflowRunError(\n `[Sixb] Execution '${input.executionId}' already belongs to another Workflow Agent-node run.`\n )\n }\n const record: WorkflowAgentNodeRunRecord = {\n projectId: input.projectId,\n nodeRunId: input.nodeRunId,\n executionId: input.executionId,\n agentId: input.agentId,\n status: \"queued\",\n prompt: input.prompt,\n attempt: 0,\n createdAt: new Date(input.createdAt ?? new Date()),\n }\n this.runs.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async start(input: StartWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireStatus(input.projectId, input.nodeRunId, \"queued\")\n const next: WorkflowAgentNodeRunRecord = {\n ...run,\n status: \"running\",\n ...(input.modelId ? { modelId: input.modelId } : {}),\n attempt: 1,\n execution: cloneRecord(input.execution),\n startedAt: new Date(input.startedAt ?? new Date()),\n }\n return this.save(next)\n }\n\n async reclaim(input: ReclaimWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireStatus(input.projectId, input.nodeRunId, \"running\")\n return this.save({ ...run, attempt: run.attempt + 1, execution: cloneRecord(input.execution) })\n }\n\n async confirmExecutionOwnership(\n input: ConfirmWorkflowAgentNodeRunExecutionOwnershipInput\n ): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireOwned(input.projectId, input.nodeRunId, input.executionToken)\n return this.save({\n ...run,\n execution: {\n token: input.executionToken,\n queueLeaseExpiresAt: new Date(\n Math.max(\n run.execution!.queueLeaseExpiresAt.getTime(),\n input.queueLeaseExpiresAt.getTime()\n )\n ),\n },\n })\n }\n\n async finish(input: FinishWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireOwned(input.projectId, input.nodeRunId, input.executionToken)\n return this.save({\n ...run,\n status: input.status,\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n ...(input.finishReason === undefined ? {} : { finishReason: input.finishReason }),\n ...(input.trace === undefined ? {} : { trace: cloneRecord(input.trace) }),\n ...(input.diagnostics === undefined ? {} : { diagnostics: cloneRecord(input.diagnostics) }),\n ...(input.status === \"succeeded\" || input.error === undefined\n ? {}\n : { error: normalizeAgentFailure(input.error) }),\n execution: undefined,\n completedAt: new Date(input.completedAt ?? new Date()),\n })\n }\n\n async cancel(input: CancelWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireExisting(input.projectId, input.nodeRunId)\n if (run.status !== \"queued\" && run.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${input.nodeRunId}' cannot be cancelled from status '${run.status}'.`\n )\n }\n return this.save({\n ...run,\n status: \"cancelled\",\n execution: undefined,\n error: normalizeAgentFailure(input.error),\n completedAt: new Date(input.completedAt ?? new Date()),\n })\n }\n\n async getByNodeRunId(params: {\n projectId: string\n nodeRunId: string\n }): Promise<WorkflowAgentNodeRunRecord | null> {\n const run = this.runs.get(storageKey(params.projectId, params.nodeRunId))\n return run ? cloneRecord(run) : null\n }\n\n async list(input: ListWorkflowAgentNodeRunsInput): Promise<ListWorkflowAgentNodeRunsResult> {\n const statuses = input.statuses ? new Set(input.statuses) : null\n const order = input.order ?? \"desc\"\n const filtered = [...this.runs.values()]\n .filter((run) => run.projectId === input.projectId)\n .filter((run) => (input.agentId ? run.agentId === input.agentId : true))\n .filter((run) => (statuses ? statuses.has(run.status) : true))\n .sort((a, b) =>\n order === \"asc\"\n ? a.createdAt.getTime() - b.createdAt.getTime()\n : b.createdAt.getTime() - a.createdAt.getTime()\n )\n const { page, total, hasMore } = paginate(filtered, input)\n return { runs: page.map(cloneRecord), total, hasMore }\n }\n\n private requireStatus(\n projectId: string,\n nodeRunId: string,\n status: WorkflowAgentNodeRunRecord[\"status\"]\n ): WorkflowAgentNodeRunRecord {\n const run = this.runs.get(storageKey(projectId, nodeRunId))\n if (!run) throw new WorkflowRunError(`[Sixb] Agent workflow node run '${nodeRunId}' not found.`)\n if (run.status !== status) {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${nodeRunId}' must be ${status} (status '${run.status}').`\n )\n }\n return run\n }\n\n private requireExisting(projectId: string, nodeRunId: string): WorkflowAgentNodeRunRecord {\n const run = this.runs.get(storageKey(projectId, nodeRunId))\n if (!run) {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${nodeRunId}' not found for project '${projectId}'.`\n )\n }\n return run\n }\n\n private requireOwned(\n projectId: string,\n nodeRunId: string,\n token: string\n ): WorkflowAgentNodeRunRecord {\n const run = this.requireStatus(projectId, nodeRunId, \"running\")\n if (run.execution?.token !== token) {\n throw new WorkflowRunError(\n `[Sixb] Execution token is no longer current on agent workflow node run '${nodeRunId}'.`\n )\n }\n return run\n }\n\n private save(record: WorkflowAgentNodeRunRecord): WorkflowAgentNodeRunRecord {\n this.runs.set(storageKey(record.projectId, record.nodeRunId), cloneRecord(record))\n return cloneRecord(record)\n }\n}\n\nexport interface InMemoryWorkflowRunStorageSnapshot {\n readonly runs: Map<string, WorkflowRunRecord>\n readonly nodes: InMemoryWorkflowNodeRunStorageSnapshot\n readonly agentNodes: InMemoryWorkflowAgentNodeRunStorageSnapshot\n}\n\nexport type InMemoryWorkflowNodeRunStorageSnapshot = Map<string, WorkflowNodeRunRecord>\nexport type InMemoryWorkflowAgentNodeRunStorageSnapshot = Map<string, WorkflowAgentNodeRunRecord>\n",
47
+ "import type { AgentMessagePart } from \"../../agents/message\"\nimport type { SixbErrorCode, SixbFailure } from \"../../errors/types\"\nimport type { JsonValue } from \"../../json\"\nimport type { WorkflowIOSnapshot } from \"../../workflows/types\"\nimport type { AgentExecutionStatus, AgentRunFailureCode, AgentRunFinishReason } from \"../agents\"\n\nexport type { WorkflowIOSnapshot } from \"../../workflows/types\"\n\nexport type WorkflowRunStatus =\n | \"queued\"\n | \"running\"\n | \"waiting\"\n | \"succeeded\"\n | \"failed\"\n | \"cancelled\"\nexport type WorkflowNodeRunStatus = Exclude<WorkflowRunStatus, \"queued\">\nexport type WorkflowNodeRunType = \"step\" | \"action\" | \"intervention\" | \"agent\"\n\n/** Error codes a workflow or workflow-node run can persist and expose. */\nexport const WORKFLOW_RUN_FAILURE_CODES = [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n \"workflow.node_failed\",\n \"ai.usage_limit_exceeded\",\n \"ai.usage_limit_unavailable\",\n] as const satisfies readonly [SixbErrorCode, ...SixbErrorCode[]]\n\nexport type WorkflowRunFailureCode = (typeof WORKFLOW_RUN_FAILURE_CODES)[number]\n\nexport interface WorkflowRunExecution {\n readonly token: string\n readonly queueLeaseExpiresAt: Date\n}\n\nexport type WorkflowAgentNodeRunStatus = AgentExecutionStatus\n\nexport interface WorkflowAgentNodeRunExecution {\n readonly token: string\n readonly queueLeaseExpiresAt: Date\n}\n\n/** Execution details for an agent workflow node. The generic node run owns business IO. */\nexport interface WorkflowAgentNodeRunRecord {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionId: string\n /** Stable managed actor for the workflow + Agent step, not the step definition id. */\n readonly actorId: string\n readonly status: WorkflowAgentNodeRunStatus\n readonly prompt: string\n readonly modelId?: string\n readonly finishReason?: AgentRunFinishReason\n readonly trace?: readonly AgentMessagePart[]\n readonly diagnostics?: readonly JsonValue[]\n readonly error?: SixbFailure<AgentRunFailureCode>\n readonly attempt: number\n readonly execution?: WorkflowAgentNodeRunExecution\n readonly createdAt: Date\n readonly startedAt?: Date\n readonly completedAt?: Date\n}\n\nexport interface CreateWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionId: string\n readonly actorId: string\n readonly prompt: string\n readonly createdAt?: Date\n}\n\nexport interface StartWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly modelId?: string\n readonly execution: WorkflowAgentNodeRunExecution\n readonly startedAt?: Date\n}\n\nexport interface ReclaimWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly execution: WorkflowAgentNodeRunExecution\n}\n\nexport interface ConfirmWorkflowAgentNodeRunExecutionOwnershipInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionToken: string\n readonly queueLeaseExpiresAt: Date\n}\n\ninterface FinishWorkflowAgentNodeRunBaseInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly executionToken: string\n readonly modelId?: string\n readonly finishReason?: AgentRunFinishReason\n readonly trace?: readonly AgentMessagePart[]\n readonly diagnostics?: readonly JsonValue[]\n readonly completedAt?: Date\n}\n\nexport type FinishWorkflowAgentNodeRunInput =\n | (FinishWorkflowAgentNodeRunBaseInput & {\n readonly status: \"succeeded\"\n })\n | (FinishWorkflowAgentNodeRunBaseInput & {\n readonly status: \"failed\" | \"cancelled\"\n readonly error?: SixbFailure<AgentRunFailureCode>\n })\n\nexport interface CancelWorkflowAgentNodeRunInput {\n readonly projectId: string\n readonly nodeRunId: string\n readonly error?: SixbFailure<AgentRunFailureCode>\n readonly completedAt?: Date\n}\n\nexport interface ListWorkflowAgentNodeRunsInput {\n readonly projectId: string\n readonly actorId?: string\n readonly statuses?: readonly WorkflowAgentNodeRunStatus[]\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowAgentNodeRunsResult {\n readonly runs: readonly WorkflowAgentNodeRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface WorkflowRunRecord {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly workflowId: string\n readonly status: WorkflowRunStatus\n readonly input: WorkflowIOSnapshot\n readonly output?: WorkflowIOSnapshot\n readonly queuedAt?: Date\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n /** Durable group memberships snapshotted when the workflow run was admitted. */\n readonly requesterGroupIds: readonly string[]\n readonly attempt: number\n readonly execution?: WorkflowRunExecution\n}\n\nexport interface WorkflowNodeRunRecord {\n readonly id: string\n readonly projectId: string\n readonly workflowRunId: string\n readonly workflowId: string\n readonly nodeIndex: number\n readonly nodeType: WorkflowNodeRunType\n readonly nodeId: string\n readonly nodeKey: string\n readonly status: WorkflowNodeRunStatus\n readonly input: WorkflowIOSnapshot\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly output?: WorkflowIOSnapshot\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n}\n\nexport interface StartWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly startedAt?: Date\n readonly execution?: WorkflowRunExecution\n}\n\nexport interface QueueWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly workflowId: string\n readonly input: WorkflowIOSnapshot\n readonly queuedAt?: Date\n readonly requesterGroupIds: readonly string[]\n}\n\nexport interface ReclaimWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly execution: WorkflowRunExecution\n}\n\nexport interface ConfirmWorkflowRunExecutionOwnershipInput {\n readonly id: string\n readonly projectId: string\n readonly executionToken: string\n readonly queueLeaseExpiresAt: Date\n}\n\nexport interface WaitWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly waitingAt?: Date\n readonly executionToken?: string\n}\n\nexport interface ResumeWorkflowRunInput {\n readonly id: string\n readonly projectId: string\n readonly resumedAt?: Date\n readonly execution?: WorkflowRunExecution\n}\n\nexport type FinishWorkflowRunInput =\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"succeeded\"\n readonly output: WorkflowIOSnapshot\n readonly finishedAt?: Date\n readonly executionToken?: string\n }\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"failed\" | \"cancelled\"\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n readonly executionToken?: string\n }\n\nexport interface StartWorkflowNodeRunInput {\n readonly id: string\n readonly projectId: string\n readonly workflowRunId: string\n readonly workflowId: string\n readonly nodeIndex: number\n readonly nodeType: WorkflowNodeRunType\n readonly nodeId: string\n readonly nodeKey: string\n readonly input: WorkflowIOSnapshot\n readonly startedAt?: Date\n readonly executionToken?: string\n}\n\nexport interface WaitWorkflowNodeRunInput {\n readonly id: string\n readonly projectId: string\n readonly waitingAt?: Date\n readonly executionToken?: string\n}\n\nexport type FinishWorkflowNodeRunInput =\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"succeeded\"\n readonly finishedAt?: Date\n readonly output?: WorkflowIOSnapshot\n readonly executionToken?: string\n }\n | {\n readonly id: string\n readonly projectId: string\n readonly status: \"failed\" | \"cancelled\"\n readonly finishedAt?: Date\n readonly error?: SixbFailure<WorkflowRunFailureCode>\n readonly executionToken?: string\n }\n\nexport interface ListWorkflowRunsInput {\n readonly projectId: string\n readonly workflowId?: string\n readonly workflowIds?: readonly string[]\n readonly statuses?: readonly WorkflowRunStatus[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowRunsResult {\n readonly runs: readonly WorkflowRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface ListLatestWorkflowRunsInput {\n readonly projectId: string\n readonly workflowIds: readonly string[]\n}\n\nexport interface ListLatestWorkflowRunsResult {\n readonly runs: readonly WorkflowRunRecord[]\n}\n\nexport interface ListWorkflowNodeRunsInput {\n readonly projectId: string\n readonly workflowRunId?: string\n readonly workflowId?: string\n readonly nodeType?: WorkflowNodeRunType\n readonly nodeId?: string\n readonly nodeKey?: string\n readonly statuses?: readonly WorkflowNodeRunStatus[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListWorkflowNodeRunsResult {\n readonly nodes: readonly WorkflowNodeRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface WorkflowRunStorage {\n readonly nodes: WorkflowNodeRunStorage\n readonly agentNodes: WorkflowAgentNodeRunStorage\n\n queue(input: QueueWorkflowRunInput): Promise<WorkflowRunRecord>\n /** Atomically claims a queued run by transitioning it to running; competing claims must fail. */\n start(input: StartWorkflowRunInput): Promise<WorkflowRunRecord>\n reclaim(input: ReclaimWorkflowRunInput): Promise<WorkflowRunRecord>\n confirmExecutionOwnership(\n input: ConfirmWorkflowRunExecutionOwnershipInput\n ): Promise<WorkflowRunRecord>\n wait(input: WaitWorkflowRunInput): Promise<WorkflowRunRecord>\n resume(input: ResumeWorkflowRunInput): Promise<WorkflowRunRecord>\n finish(input: FinishWorkflowRunInput): Promise<WorkflowRunRecord>\n getById(params: { projectId: string; id: string }): Promise<WorkflowRunRecord | null>\n list(input: ListWorkflowRunsInput): Promise<ListWorkflowRunsResult>\n listLatestByWorkflowIds(input: ListLatestWorkflowRunsInput): Promise<ListLatestWorkflowRunsResult>\n}\n\nexport interface WorkflowAgentNodeRunStorage {\n create(input: CreateWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n start(input: StartWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n reclaim(input: ReclaimWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n confirmExecutionOwnership(\n input: ConfirmWorkflowAgentNodeRunExecutionOwnershipInput\n ): Promise<WorkflowAgentNodeRunRecord>\n cancel(input: CancelWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n finish(input: FinishWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>\n getByNodeRunId(params: {\n projectId: string\n nodeRunId: string\n }): Promise<WorkflowAgentNodeRunRecord | null>\n list(input: ListWorkflowAgentNodeRunsInput): Promise<ListWorkflowAgentNodeRunsResult>\n}\n\nexport interface WorkflowNodeRunStorage {\n start(input: StartWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n wait(input: WaitWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n finish(input: FinishWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>\n getById(params: { projectId: string; id: string }): Promise<WorkflowNodeRunRecord | null>\n list(input: ListWorkflowNodeRunsInput): Promise<ListWorkflowNodeRunsResult>\n}\n",
48
+ "import { normalizeRequesterGroupIds } from \"../../auth/attribution\"\nimport { parseSixbFailure } from \"../../errors/internal\"\nimport type { SixbFailure } from \"../../errors/types\"\nimport type { AgentRunFailureCode } from \"../agents\"\nimport { AGENT_RUN_FAILURE_CODES } from \"../agents\"\nimport type { ExecutionStorage } from \"../executions\"\nimport {\n cloneRecord,\n compareStartedAt,\n hasEmptyStatuses,\n latestStartedAtByOwnerId,\n matchesRunListDateFilters,\n paginate,\n storageKey,\n toStatusSet,\n} from \"../run-listing\"\nimport { WorkflowRunError } from \"./errors\"\nimport { assertWorkflowAgentNodeRunExecution, assertWorkflowRunExecution } from \"./provider\"\nimport type {\n CancelWorkflowAgentNodeRunInput,\n ConfirmWorkflowAgentNodeRunExecutionOwnershipInput,\n ConfirmWorkflowRunExecutionOwnershipInput,\n CreateWorkflowAgentNodeRunInput,\n FinishWorkflowAgentNodeRunInput,\n FinishWorkflowNodeRunInput,\n FinishWorkflowRunInput,\n ListLatestWorkflowRunsInput,\n ListLatestWorkflowRunsResult,\n ListWorkflowAgentNodeRunsInput,\n ListWorkflowAgentNodeRunsResult,\n ListWorkflowNodeRunsInput,\n ListWorkflowNodeRunsResult,\n ListWorkflowRunsInput,\n ListWorkflowRunsResult,\n QueueWorkflowRunInput,\n ReclaimWorkflowAgentNodeRunInput,\n ReclaimWorkflowRunInput,\n ResumeWorkflowRunInput,\n StartWorkflowAgentNodeRunInput,\n StartWorkflowNodeRunInput,\n StartWorkflowRunInput,\n WaitWorkflowNodeRunInput,\n WaitWorkflowRunInput,\n WorkflowAgentNodeRunRecord,\n WorkflowAgentNodeRunStorage,\n WorkflowNodeRunRecord,\n WorkflowNodeRunStorage,\n WorkflowRunFailureCode,\n WorkflowRunRecord,\n WorkflowRunStorage,\n} from \"./types\"\nimport { WORKFLOW_RUN_FAILURE_CODES } from \"./types\"\n\nfunction normalizeFailure(\n failure: SixbFailure<WorkflowRunFailureCode> | undefined\n): SixbFailure<WorkflowRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, WORKFLOW_RUN_FAILURE_CODES) : undefined\n}\n\nfunction normalizeAgentFailure(\n failure: SixbFailure<AgentRunFailureCode> | undefined\n): SixbFailure<AgentRunFailureCode> | undefined {\n return failure ? parseSixbFailure(failure, AGENT_RUN_FAILURE_CODES) : undefined\n}\n\nfunction assertNonNegativeInteger(value: number, fieldName: string): void {\n if (!Number.isInteger(value) || value < 0) {\n throw new WorkflowRunError(`[Sixb] Workflow run ${fieldName} must be a non-negative integer.`)\n }\n}\n\nexport class InMemoryWorkflowRunStorage implements WorkflowRunStorage {\n readonly nodes: InMemoryWorkflowNodeRunStorage\n readonly agentNodes: InMemoryWorkflowAgentNodeRunStorage\n\n private readonly runs = new Map<string, WorkflowRunRecord>()\n\n constructor(private readonly executions: ExecutionStorage) {\n this.nodes = new InMemoryWorkflowNodeRunStorage({\n requireRunningWorkflowRun: (projectId, id) => this.requireRunningWorkflowRun(projectId, id),\n requireActiveWorkflowRun: (projectId, id) => this.requireActiveWorkflowRun(projectId, id),\n assertExecutionOwnership: (projectId, id, token) =>\n this.assertExecutionOwnership(projectId, id, token),\n })\n this.agentNodes = new InMemoryWorkflowAgentNodeRunStorage(\n {\n requireAgentNodeRun: (projectId, id) => this.nodes.requireAgentNodeRun(projectId, id),\n requireWorkflowRun: (projectId, id) => this.requireExistingWorkflowRun(projectId, id),\n },\n this.executions\n )\n }\n\n snapshot(): InMemoryWorkflowRunStorageSnapshot {\n return {\n runs: structuredClone(this.runs),\n nodes: this.nodes.snapshot(),\n agentNodes: this.agentNodes.snapshot(),\n }\n }\n\n restore(snapshot: InMemoryWorkflowRunStorageSnapshot): void {\n this.runs.clear()\n for (const [key, record] of structuredClone(snapshot.runs)) {\n this.runs.set(key, record)\n }\n this.nodes.restore(snapshot.nodes)\n this.agentNodes.restore(snapshot.agentNodes)\n }\n\n async queue(input: QueueWorkflowRunInput): Promise<WorkflowRunRecord> {\n const key = storageKey(input.projectId, input.id)\n if (this.runs.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n if (\n [...this.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new WorkflowRunError(\n `[Sixb] Execution '${input.executionId}' already belongs to another workflow run.`\n )\n }\n await assertWorkflowRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.id,\n workflowId: input.workflowId,\n })\n\n const queuedAt = new Date(input.queuedAt ?? new Date())\n const record: WorkflowRunRecord = {\n id: input.id,\n projectId: input.projectId,\n executionId: input.executionId,\n workflowId: input.workflowId,\n status: \"queued\",\n input: cloneRecord(input.input),\n queuedAt,\n startedAt: queuedAt,\n attempt: 0,\n requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),\n }\n\n this.runs.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async start(input: StartWorkflowRunInput): Promise<WorkflowRunRecord> {\n const key = storageKey(input.projectId, input.id)\n const existing = this.runs.get(key)\n if (!existing || existing.status !== \"queued\") {\n throw new WorkflowRunError(\n existing\n ? `[Sixb] Workflow run '${input.id}' cannot start from status '${existing.status}'.`\n : `[Sixb] Workflow run '${input.id}' not found for project '${input.projectId}'.`\n )\n }\n\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"running\",\n startedAt: new Date(input.startedAt ?? new Date()),\n finishedAt: undefined,\n error: undefined,\n attempt: existing.attempt + 1,\n execution: input.execution ? cloneRecord(input.execution) : undefined,\n }\n\n this.runs.set(key, cloneRecord(next))\n return cloneRecord(next)\n }\n\n async finish(input: FinishWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireFinishableWorkflowRun(input)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const base: WorkflowRunRecord = {\n ...existing,\n status: input.status,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n execution: undefined,\n }\n\n const next: WorkflowRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n output: cloneRecord(input.output),\n error: undefined,\n }\n : {\n ...base,\n output: undefined,\n error: normalizeFailure(input.error),\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async wait(input: WaitWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"waiting\",\n finishedAt: undefined,\n error: undefined,\n execution: undefined,\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async resume(input: ResumeWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireWaitingWorkflowRun(input.projectId, input.id)\n const next: WorkflowRunRecord = {\n ...existing,\n status: \"running\",\n finishedAt: undefined,\n error: undefined,\n attempt: existing.attempt + 1,\n execution: input.execution ? cloneRecord(input.execution) : undefined,\n }\n\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async reclaim(input: ReclaimWorkflowRunInput): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n const next: WorkflowRunRecord = {\n ...existing,\n attempt: existing.attempt + 1,\n execution: cloneRecord(input.execution),\n }\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async confirmExecutionOwnership(\n input: ConfirmWorkflowRunExecutionOwnershipInput\n ): Promise<WorkflowRunRecord> {\n const existing = this.requireRunningWorkflowRun(input.projectId, input.id)\n this.assertRecordExecutionOwnership(existing, input.executionToken)\n const next: WorkflowRunRecord = {\n ...existing,\n execution: {\n token: input.executionToken,\n queueLeaseExpiresAt: new Date(\n Math.max(\n existing.execution!.queueLeaseExpiresAt.getTime(),\n input.queueLeaseExpiresAt.getTime()\n )\n ),\n },\n }\n this.runs.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<WorkflowRunRecord | null> {\n const record = this.runs.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWorkflowRunsInput): Promise<ListWorkflowRunsResult> {\n if (hasEmptyStatuses(input) || input.workflowIds?.length === 0) {\n return {\n runs: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const workflowIds = input.workflowIds ? new Set(input.workflowIds) : null\n const filtered = [...this.runs.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) => (input.workflowId ? record.workflowId === input.workflowId : true))\n .filter((record) => (workflowIds ? workflowIds.has(record.workflowId) : true))\n .filter((record) =>\n matchesRunListDateFilters(record, {\n statuses,\n startedAfter: input.startedAfter,\n startedBefore: input.startedBefore,\n })\n )\n .sort((left, right) => compareStartedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n runs: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n async listLatestByWorkflowIds(\n input: ListLatestWorkflowRunsInput\n ): Promise<ListLatestWorkflowRunsResult> {\n const runs = latestStartedAtByOwnerId(\n [...this.runs.values()].filter((record) => record.projectId === input.projectId),\n input.workflowIds,\n (record) => record.workflowId\n )\n\n return {\n runs: runs.map(cloneRecord),\n }\n }\n\n private requireExistingWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.runs.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' not found for project '${projectId}'.`\n )\n }\n\n return record\n }\n\n private requireRunningWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' must be running.`\n )\n }\n\n return record\n }\n\n private requireWaitingWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' must be waiting.`\n )\n }\n\n return record\n }\n\n private requireActiveWorkflowRun(projectId: string, id: string): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(projectId, id)\n if (record.status !== \"running\" && record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${id}' for project '${projectId}' is already terminal.`\n )\n }\n\n return record\n }\n\n private requireFinishableWorkflowRun(input: FinishWorkflowRunInput): WorkflowRunRecord {\n const record = this.requireExistingWorkflowRun(input.projectId, input.id)\n if (record.status === \"running\") {\n return record\n }\n\n if (record.status === \"waiting\" && input.status !== \"succeeded\") {\n return record\n }\n\n if (record.status === \"queued\" && input.status !== \"succeeded\") {\n return record\n }\n\n throw new WorkflowRunError(\n `[Sixb] Workflow run '${input.id}' for project '${input.projectId}' cannot be finished from status '${record.status}'.`\n )\n }\n\n private assertExecutionOwnership(projectId: string, id: string, token?: string): void {\n this.assertRecordExecutionOwnership(this.requireExistingWorkflowRun(projectId, id), token)\n }\n\n private assertRecordExecutionOwnership(record: WorkflowRunRecord, token?: string): void {\n if (record.execution?.token !== token) {\n throw new WorkflowRunError(\n `[Sixb] Execution token is no longer current on workflow run '${record.id}'.`\n )\n }\n }\n}\n\nexport class InMemoryWorkflowNodeRunStorage implements WorkflowNodeRunStorage {\n private readonly nodes = new Map<string, WorkflowNodeRunRecord>()\n\n constructor(\n private readonly workflowRuns: {\n requireRunningWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n requireActiveWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n assertExecutionOwnership(projectId: string, id: string, token?: string): void\n }\n ) {}\n\n snapshot(): InMemoryWorkflowNodeRunStorageSnapshot {\n return structuredClone(this.nodes)\n }\n\n restore(snapshot: InMemoryWorkflowNodeRunStorageSnapshot): void {\n this.nodes.clear()\n for (const [key, record] of structuredClone(snapshot)) {\n this.nodes.set(key, record)\n }\n }\n\n async start(input: StartWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n assertNonNegativeInteger(input.nodeIndex, \"nodeIndex\")\n\n const workflowRun = this.workflowRuns.requireRunningWorkflowRun(\n input.projectId,\n input.workflowRunId\n )\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n input.workflowRunId,\n input.executionToken\n )\n if (workflowRun.workflowId !== input.workflowId) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${input.id}' workflow '${input.workflowId}' does not match workflow run '${input.workflowRunId}' workflow '${workflowRun.workflowId}'.`\n )\n }\n\n const key = storageKey(input.projectId, input.id)\n if (this.nodes.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${input.id}' already exists for project '${input.projectId}'.`\n )\n }\n\n const record: WorkflowNodeRunRecord = {\n id: input.id,\n projectId: input.projectId,\n workflowRunId: input.workflowRunId,\n workflowId: input.workflowId,\n nodeIndex: input.nodeIndex,\n nodeType: input.nodeType,\n nodeId: input.nodeId,\n nodeKey: input.nodeKey,\n status: \"running\",\n input: cloneRecord(input.input),\n startedAt: new Date(input.startedAt ?? new Date()),\n }\n\n this.nodes.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async finish(input: FinishWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n const existing = this.requireActiveNodeRun(input.projectId, input.id)\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n existing.workflowRunId,\n input.executionToken\n )\n const base: WorkflowNodeRunRecord = {\n ...existing,\n status: input.status,\n finishedAt: new Date(input.finishedAt ?? new Date()),\n }\n\n const next: WorkflowNodeRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n output: input.output ? cloneRecord(input.output) : undefined,\n error: undefined,\n }\n : {\n ...base,\n output: undefined,\n error: normalizeFailure(input.error),\n }\n\n this.nodes.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async wait(input: WaitWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord> {\n const existing = this.requireRunningNodeRun(input.projectId, input.id)\n this.workflowRuns.requireActiveWorkflowRun(input.projectId, existing.workflowRunId)\n this.workflowRuns.assertExecutionOwnership(\n input.projectId,\n existing.workflowRunId,\n input.executionToken\n )\n\n const next: WorkflowNodeRunRecord = {\n ...existing,\n status: \"waiting\",\n finishedAt: undefined,\n output: undefined,\n error: undefined,\n }\n\n this.nodes.set(storageKey(input.projectId, input.id), cloneRecord(next))\n return cloneRecord(next)\n }\n\n async getById(params: { projectId: string; id: string }): Promise<WorkflowNodeRunRecord | null> {\n const record = this.nodes.get(storageKey(params.projectId, params.id))\n return record ? cloneRecord(record) : null\n }\n\n async list(input: ListWorkflowNodeRunsInput): Promise<ListWorkflowNodeRunsResult> {\n if (hasEmptyStatuses(input)) {\n return {\n nodes: [],\n hasMore: false,\n total: 0,\n }\n }\n\n const order = input.order ?? \"desc\"\n const statuses = toStatusSet(input.statuses)\n const filtered = [...this.nodes.values()]\n .filter((record) => record.projectId === input.projectId)\n .filter((record) =>\n input.workflowRunId ? record.workflowRunId === input.workflowRunId : true\n )\n .filter((record) => (input.workflowId ? record.workflowId === input.workflowId : true))\n .filter((record) => (input.nodeType ? record.nodeType === input.nodeType : true))\n .filter((record) => (input.nodeId ? record.nodeId === input.nodeId : true))\n .filter((record) => (input.nodeKey ? record.nodeKey === input.nodeKey : true))\n .filter((record) =>\n matchesRunListDateFilters(record, {\n statuses,\n startedAfter: input.startedAfter,\n startedBefore: input.startedBefore,\n })\n )\n .sort((left, right) => compareStartedAt(left, right, order))\n\n const { page, total, hasMore } = paginate(filtered, input)\n\n return {\n nodes: page.map(cloneRecord),\n hasMore,\n total,\n }\n }\n\n private requireRunningNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const record = this.nodes.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n\n if (record.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' for project '${projectId}' must be running.`\n )\n }\n\n return record\n }\n\n private requireActiveNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const record = this.nodes.get(storageKey(projectId, id))\n if (!record) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n\n if (record.status !== \"running\" && record.status !== \"waiting\") {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' for project '${projectId}' is already terminal.`\n )\n }\n\n return record\n }\n\n requireAgentNodeRun(projectId: string, id: string): WorkflowNodeRunRecord {\n const node = this.nodes.get(storageKey(projectId, id))\n if (!node) {\n throw new WorkflowRunError(\n `[Sixb] Workflow node run '${id}' not found for project '${projectId}'.`\n )\n }\n if (node.nodeType !== \"agent\") {\n throw new WorkflowRunError(`[Sixb] Workflow node run '${id}' is not an agent node.`)\n }\n return node\n }\n}\n\nexport class InMemoryWorkflowAgentNodeRunStorage implements WorkflowAgentNodeRunStorage {\n private readonly runs = new Map<string, WorkflowAgentNodeRunRecord>()\n\n constructor(\n private readonly nodes: {\n requireAgentNodeRun(projectId: string, id: string): WorkflowNodeRunRecord\n requireWorkflowRun(projectId: string, id: string): WorkflowRunRecord\n },\n private readonly executions: ExecutionStorage\n ) {}\n\n snapshot(): InMemoryWorkflowAgentNodeRunStorageSnapshot {\n return structuredClone(this.runs)\n }\n\n restore(snapshot: InMemoryWorkflowAgentNodeRunStorageSnapshot): void {\n this.runs.clear()\n for (const [key, record] of structuredClone(snapshot)) this.runs.set(key, record)\n }\n\n async create(input: CreateWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const node = this.nodes.requireAgentNodeRun(input.projectId, input.nodeRunId)\n const workflowRun = this.nodes.requireWorkflowRun(input.projectId, node.workflowRunId)\n await assertWorkflowAgentNodeRunExecution({\n executions: this.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n nodeRunId: input.nodeRunId,\n actorId: input.actorId,\n workflowExecutionId: workflowRun.executionId,\n })\n if (node.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${input.nodeRunId}' must be running when queued.`\n )\n }\n const key = storageKey(input.projectId, input.nodeRunId)\n if (this.runs.has(key)) {\n throw new WorkflowRunError(\n `[Sixb] Agent execution already exists for workflow node run '${input.nodeRunId}'.`\n )\n }\n if (\n [...this.runs.values()].some(\n (run) => run.projectId === input.projectId && run.executionId === input.executionId\n )\n ) {\n throw new WorkflowRunError(\n `[Sixb] Execution '${input.executionId}' already belongs to another Workflow Agent-node run.`\n )\n }\n const record: WorkflowAgentNodeRunRecord = {\n projectId: input.projectId,\n nodeRunId: input.nodeRunId,\n executionId: input.executionId,\n actorId: input.actorId,\n status: \"queued\",\n prompt: input.prompt,\n attempt: 0,\n createdAt: new Date(input.createdAt ?? new Date()),\n }\n this.runs.set(key, cloneRecord(record))\n return cloneRecord(record)\n }\n\n async start(input: StartWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireStatus(input.projectId, input.nodeRunId, \"queued\")\n const next: WorkflowAgentNodeRunRecord = {\n ...run,\n status: \"running\",\n ...(input.modelId ? { modelId: input.modelId } : {}),\n attempt: 1,\n execution: cloneRecord(input.execution),\n startedAt: new Date(input.startedAt ?? new Date()),\n }\n return this.save(next)\n }\n\n async reclaim(input: ReclaimWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireStatus(input.projectId, input.nodeRunId, \"running\")\n return this.save({ ...run, attempt: run.attempt + 1, execution: cloneRecord(input.execution) })\n }\n\n async confirmExecutionOwnership(\n input: ConfirmWorkflowAgentNodeRunExecutionOwnershipInput\n ): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireOwned(input.projectId, input.nodeRunId, input.executionToken)\n return this.save({\n ...run,\n execution: {\n token: input.executionToken,\n queueLeaseExpiresAt: new Date(\n Math.max(\n run.execution!.queueLeaseExpiresAt.getTime(),\n input.queueLeaseExpiresAt.getTime()\n )\n ),\n },\n })\n }\n\n async finish(input: FinishWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireOwned(input.projectId, input.nodeRunId, input.executionToken)\n return this.save({\n ...run,\n status: input.status,\n ...(input.modelId === undefined ? {} : { modelId: input.modelId }),\n ...(input.finishReason === undefined ? {} : { finishReason: input.finishReason }),\n ...(input.trace === undefined ? {} : { trace: cloneRecord(input.trace) }),\n ...(input.diagnostics === undefined ? {} : { diagnostics: cloneRecord(input.diagnostics) }),\n ...(input.status === \"succeeded\" || input.error === undefined\n ? {}\n : { error: normalizeAgentFailure(input.error) }),\n execution: undefined,\n completedAt: new Date(input.completedAt ?? new Date()),\n })\n }\n\n async cancel(input: CancelWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord> {\n const run = this.requireExisting(input.projectId, input.nodeRunId)\n if (run.status !== \"queued\" && run.status !== \"running\") {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${input.nodeRunId}' cannot be cancelled from status '${run.status}'.`\n )\n }\n return this.save({\n ...run,\n status: \"cancelled\",\n execution: undefined,\n error: normalizeAgentFailure(input.error),\n completedAt: new Date(input.completedAt ?? new Date()),\n })\n }\n\n async getByNodeRunId(params: {\n projectId: string\n nodeRunId: string\n }): Promise<WorkflowAgentNodeRunRecord | null> {\n const run = this.runs.get(storageKey(params.projectId, params.nodeRunId))\n return run ? cloneRecord(run) : null\n }\n\n async list(input: ListWorkflowAgentNodeRunsInput): Promise<ListWorkflowAgentNodeRunsResult> {\n const statuses = input.statuses ? new Set(input.statuses) : null\n const order = input.order ?? \"desc\"\n const filtered = [...this.runs.values()]\n .filter((run) => run.projectId === input.projectId)\n .filter((run) => (input.actorId ? run.actorId === input.actorId : true))\n .filter((run) => (statuses ? statuses.has(run.status) : true))\n .sort((a, b) =>\n order === \"asc\"\n ? a.createdAt.getTime() - b.createdAt.getTime()\n : b.createdAt.getTime() - a.createdAt.getTime()\n )\n const { page, total, hasMore } = paginate(filtered, input)\n return { runs: page.map(cloneRecord), total, hasMore }\n }\n\n private requireStatus(\n projectId: string,\n nodeRunId: string,\n status: WorkflowAgentNodeRunRecord[\"status\"]\n ): WorkflowAgentNodeRunRecord {\n const run = this.runs.get(storageKey(projectId, nodeRunId))\n if (!run) throw new WorkflowRunError(`[Sixb] Agent workflow node run '${nodeRunId}' not found.`)\n if (run.status !== status) {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${nodeRunId}' must be ${status} (status '${run.status}').`\n )\n }\n return run\n }\n\n private requireExisting(projectId: string, nodeRunId: string): WorkflowAgentNodeRunRecord {\n const run = this.runs.get(storageKey(projectId, nodeRunId))\n if (!run) {\n throw new WorkflowRunError(\n `[Sixb] Agent workflow node run '${nodeRunId}' not found for project '${projectId}'.`\n )\n }\n return run\n }\n\n private requireOwned(\n projectId: string,\n nodeRunId: string,\n token: string\n ): WorkflowAgentNodeRunRecord {\n const run = this.requireStatus(projectId, nodeRunId, \"running\")\n if (run.execution?.token !== token) {\n throw new WorkflowRunError(\n `[Sixb] Execution token is no longer current on agent workflow node run '${nodeRunId}'.`\n )\n }\n return run\n }\n\n private save(record: WorkflowAgentNodeRunRecord): WorkflowAgentNodeRunRecord {\n this.runs.set(storageKey(record.projectId, record.nodeRunId), cloneRecord(record))\n return cloneRecord(record)\n }\n}\n\nexport interface InMemoryWorkflowRunStorageSnapshot {\n readonly runs: Map<string, WorkflowRunRecord>\n readonly nodes: InMemoryWorkflowNodeRunStorageSnapshot\n readonly agentNodes: InMemoryWorkflowAgentNodeRunStorageSnapshot\n}\n\nexport type InMemoryWorkflowNodeRunStorageSnapshot = Map<string, WorkflowNodeRunRecord>\nexport type InMemoryWorkflowAgentNodeRunStorageSnapshot = Map<string, WorkflowAgentNodeRunRecord>\n",
48
49
  "import type { InMemoryStorageSnapshot } from \".\"\n\nexport interface InMemoryStorageTestingAdapter {\n snapshot(): InMemoryStorageSnapshot\n}\n\nconst testingAdapters = new WeakMap<object, InMemoryStorageTestingAdapter>()\n\nexport function registerInMemoryStorageTestingAdapter(\n storage: object,\n adapter: InMemoryStorageTestingAdapter\n): void {\n testingAdapters.set(storage, adapter)\n}\n\n/** @internal Relative test-only access; intentionally absent from every package barrel. */\nexport function getInMemoryStorageTestingAdapter(storage: object): InMemoryStorageTestingAdapter {\n const adapter = testingAdapters.get(storage)\n if (!adapter) throw new Error(\"[Sixb] In-memory storage testing adapter is unavailable.\")\n return adapter\n}\n",
49
50
  "import type { Storage } from \"../types\"\nimport type { MigrationCapableStorage, MigrationReport, StorageMigrationResult } from \"./types\"\n\nexport function isMigrationCapableStorage(storage: Storage): storage is MigrationCapableStorage {\n return Array.isArray((storage as { migrators?: unknown }).migrators)\n}\n\n/** Runs storage adapter migrators when the configured storage exposes them. */\nexport async function migrateStorage(storage: Storage): Promise<StorageMigrationResult> {\n if (!isMigrationCapableStorage(storage) || storage.migrators.length === 0) {\n return { status: \"skipped\", reports: [] }\n }\n\n const reports: MigrationReport[] = []\n\n for (const migrator of storage.migrators) {\n reports.push(await migrator.migrate())\n }\n\n return {\n status: reports.some((report) => report.status === \"migrated\") ? \"migrated\" : \"current\",\n reports,\n }\n}\n",
50
51
  "import type { Storage } from \"../types\"\nimport { isMigrationCapableStorage } from \"./migrate-storage\"\n\nexport interface StorageSchemaCheck {\n readonly ok: boolean\n /**\n * Whether anything was read. False when the storage exposes no migrators: usable on the\n * strength of having no schema rather than of a verified one.\n */\n readonly verified: boolean\n /** Absent only when `ok`. Names the adapter, the state, and what to do about it. */\n readonly reason?: string\n}\n\n/**\n * Reports whether the configured storage's schema is usable, without touching it.\n *\n * Storage with no migrators is usable by definition. Failures are returned rather than thrown,\n * because both callers report instead of aborting: `/ready` and `sixb check`.\n */\nexport async function checkStorageSchema(storage: Storage): Promise<StorageSchemaCheck> {\n if (!isMigrationCapableStorage(storage)) return { ok: true, verified: false }\n\n try {\n // `status()` is the only read-only member of the migrator contract: `migrate()` calls\n // `ensure()` first, so it runs DDL and takes an advisory lock. This serves `/ready`.\n const statuses = await Promise.all(storage.migrators.map((migrator) => migrator.status()))\n const unusable = statuses.filter((status) => status.state !== \"current\")\n\n if (unusable.length === 0) return { ok: true, verified: true }\n\n return {\n ok: false,\n verified: true,\n // Named, because \"could not be verified\" leaves an operator guessing between a missing\n // migration, a schema newer than the build, and no database at all.\n reason: unusable\n .map((status) => `${status.adapterId}: ${status.state} — ${status.reason ?? \"\"}`)\n .join(\"; \"),\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return {\n ok: false,\n verified: false,\n reason: `Storage schema could not be verified: ${message}`,\n }\n }\n}\n",
51
52
  "import type {\n DefineMigrationsOptions,\n MigrationHistoryStore,\n MigrationPlan,\n MigrationRecord,\n MigrationReport,\n MigrationSet,\n MigrationStatus,\n MigrationStep,\n MigrationStepOptions,\n} from \"./types\"\n\nexport interface PlanMigrationSetParams<TContext> {\n readonly migrations: MigrationSet<TContext>\n readonly state: MigrationHistoryStore\n}\n\nexport interface RunMigrationSetParams<TContext> extends PlanMigrationSetParams<TContext> {\n readonly context: TContext\n readonly now?: () => string\n}\n\nexport function step<TContext>(\n id: string,\n up: (context: TContext) => void | Promise<void>,\n options: MigrationStepOptions = {}\n): MigrationStep<TContext> {\n const { version, name } = parseMigrationId(id)\n\n return {\n id,\n version,\n name,\n checksum: options.checksum,\n up,\n }\n}\n\nexport function defineMigrations<TContext>(\n options: DefineMigrationsOptions<TContext>\n): MigrationSet<TContext> {\n const steps = [...options.steps]\n assertValidSteps(options.adapterId, steps)\n\n return {\n adapterId: options.adapterId,\n latestVersion: steps.at(-1)?.version ?? 0,\n steps,\n }\n}\n\nasync function planMigrationSet<TContext>(\n params: PlanMigrationSetParams<TContext>\n): Promise<MigrationPlan<TContext>> {\n await params.state.ensure()\n\n const rows = await params.state.readHistory(params.migrations.adapterId)\n const applied = assertAppliedPrefix(params.migrations, rows)\n\n return {\n adapterId: params.migrations.adapterId,\n latestVersion: params.migrations.latestVersion,\n applied,\n pending: params.migrations.steps.slice(applied.length),\n }\n}\n\nexport async function runMigrationSet<TContext>(\n params: RunMigrationSetParams<TContext>\n): Promise<MigrationReport> {\n const now = params.now ?? (() => new Date().toISOString())\n const plan = await planMigrationSet(params)\n const applied: string[] = []\n\n for (const migration of plan.pending) {\n await params.state.transaction(async () => {\n await params.state.markStarted(plan.adapterId, migration, now())\n await migration.up(params.context)\n await params.state.markApplied(plan.adapterId, migration, now())\n })\n\n applied.push(migration.id)\n }\n\n return {\n adapterId: plan.adapterId,\n latestVersion: plan.latestVersion,\n status: applied.length > 0 ? \"migrated\" : \"current\",\n applied,\n skipped: plan.applied.map((migration) => migration.id),\n }\n}\n\nfunction parseMigrationId(id: string): { version: number; name: string } {\n const match = /^(\\d+)(?:[-_](.+))?$/.exec(id)\n\n if (!match) {\n throw new Error(`[Sixb] Migration id must start with a numeric prefix: ${id}`)\n }\n\n const version = Number(match[1])\n\n if (!Number.isInteger(version) || version < 1) {\n throw new Error(`[Sixb] Migration id must start with a positive version: ${id}`)\n }\n\n return {\n version,\n name: match[2] ?? id,\n }\n}\n\nfunction assertValidSteps<TContext>(\n adapterId: string,\n steps: readonly MigrationStep<TContext>[]\n): void {\n let previousVersion = 0\n\n for (const migration of steps) {\n if (migration.version <= previousVersion) {\n throw new Error(`[${adapterId}] Migrations must be ordered by ascending version.`)\n }\n\n previousVersion = migration.version\n }\n}\n\n/**\n * Classifies migration history without touching the database.\n *\n * The single source of truth for what a history means. `status()` reports the result\n * and `assertAppliedPrefix` throws on it, so the read-only probe and the migration\n * path can never disagree about whether a database is usable.\n *\n * `rows: null` means the history table itself is absent, which a probe must be able to\n * express without creating it.\n */\nexport function describeMigrationHistory<TContext>(params: {\n readonly migrations: MigrationSet<TContext>\n readonly rows: readonly MigrationRecord[] | null\n}): MigrationStatus {\n const { migrations, rows } = params\n const base = { adapterId: migrations.adapterId, latestVersion: migrations.latestVersion }\n\n // An adapter that declares no migrations and has recorded none is as current as it can\n // be. Reading that as `uninitialized` sent an operator to run `sixb db migrate`, which\n // would have applied nothing and reported the same state again. Only the empty history\n // qualifies: an adapter with no steps whose database recorded some is `ahead`, which\n // the walk below still finds.\n if (rows === null) {\n return migrations.steps.length === 0\n ? { ...base, appliedVersion: 0, state: \"current\" }\n : {\n ...base,\n appliedVersion: 0,\n state: \"uninitialized\",\n reason: \"No migration history exists. Run `sixb db migrate`.\",\n }\n }\n\n const applied = [...rows].sort((a, b) => a.version - b.version)\n const appliedVersion = applied.at(-1)?.version ?? 0\n const found = { ...base, appliedVersion }\n const seen = new Set<number>()\n\n for (const row of applied) {\n if (row.adapterId !== migrations.adapterId) {\n return {\n ...found,\n state: \"incompatible\",\n reason: `Migration state belongs to a different adapter: ${row.adapterId}`,\n }\n }\n\n if (row.status === \"started\") {\n return {\n ...found,\n state: \"dirty\",\n reason: `Migration '${row.id}' started and never finished. Resolve it by hand before serving traffic.`,\n }\n }\n\n if (row.status !== \"applied\") {\n return {\n ...found,\n state: \"incompatible\",\n reason: `Invalid migration status: ${row.status}`,\n }\n }\n\n if (seen.has(row.version)) {\n return {\n ...found,\n state: \"incompatible\",\n reason: `Duplicate applied migration: ${row.version}`,\n }\n }\n\n seen.add(row.version)\n }\n\n for (const [index, row] of applied.entries()) {\n const migration = migrations.steps[index]\n\n if (!migration || row.version > migrations.latestVersion) {\n return {\n ...found,\n state: \"ahead\",\n reason:\n \"Database schema is newer than this Sixb version. Downgrades are not supported; \" +\n \"deploy a build that knows this schema.\",\n }\n }\n\n if (row.version !== migration.version || row.id !== migration.id) {\n return {\n ...found,\n state: \"incompatible\",\n reason: \"Applied migration history does not match declared migrations\",\n }\n }\n\n if ((row.checksum ?? null) !== (migration.checksum ?? null)) {\n return {\n ...found,\n state: \"incompatible\",\n reason: `Applied migration checksum changed: ${row.id}`,\n }\n }\n }\n\n if (applied.length === 0) {\n return migrations.steps.length === 0\n ? { ...found, state: \"current\" }\n : {\n ...found,\n state: \"uninitialized\",\n reason: \"Migration history is empty. Run `sixb db migrate`.\",\n }\n }\n\n const pendingCount = migrations.steps.length - applied.length\n if (pendingCount > 0) {\n return {\n ...found,\n state: \"pending\",\n reason: `${pendingCount} migration(s) are not applied. Run \\`sixb db migrate\\`.`,\n }\n }\n\n return { ...found, state: \"current\" }\n}\n\nfunction assertAppliedPrefix<TContext>(\n migrations: MigrationSet<TContext>,\n rows: readonly MigrationRecord[]\n): readonly MigrationRecord[] {\n const status = describeMigrationHistory({ migrations, rows })\n\n // `uninitialized` and `pending` are the normal inputs to a migration, not failures.\n if (\n status.state !== \"current\" &&\n status.state !== \"uninitialized\" &&\n status.state !== \"pending\"\n ) {\n throw new Error(`[${migrations.adapterId}] ${status.reason}`)\n }\n\n return [...rows].sort((a, b) => a.version - b.version)\n}\n"
52
53
  ],
53
- "mappings": "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",
54
- "debugId": "9ED097CBB9250C8464756E2164756E21",
54
+ "mappings": "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",
55
+ "debugId": "472382EF0F10AB3864756E2164756E21",
55
56
  "names": []
56
57
  }