@sixb/core 0.1.8 → 0.1.10

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 (785) hide show
  1. package/dist/actions/index.js +77 -89
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/run-dispatch.d.ts.map +1 -1
  4. package/dist/actions/types/context.d.ts +2 -0
  5. package/dist/actions/types/context.d.ts.map +1 -1
  6. package/dist/actions/validation.d.ts +1 -1
  7. package/dist/actions/validation.d.ts.map +1 -1
  8. package/dist/actions/worker.js +33 -37
  9. package/dist/actions/worker.js.map +2 -2
  10. package/dist/agents/adapters.d.ts +3 -3
  11. package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
  12. package/dist/agents/context/entries.d.ts.map +1 -0
  13. package/dist/agents/context/index.d.ts +4 -0
  14. package/dist/agents/context/index.d.ts.map +1 -0
  15. package/dist/agents/context/index.js +19 -0
  16. package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
  17. package/dist/agents/context-model.d.ts +1 -1
  18. package/dist/agents/context-model.d.ts.map +1 -1
  19. package/dist/agents/context-resolution.d.ts +1 -1
  20. package/dist/agents/context-resolution.d.ts.map +1 -1
  21. package/dist/agents/index.d.ts +4 -4
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +193 -204
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/message.d.ts +1 -1
  26. package/dist/agents/message.d.ts.map +1 -1
  27. package/dist/agents/model-loop.d.ts +2 -0
  28. package/dist/agents/model-loop.d.ts.map +1 -1
  29. package/dist/agents/request.d.ts +1 -1
  30. package/dist/agents/request.d.ts.map +1 -1
  31. package/dist/agents/streams/index.d.ts +4 -0
  32. package/dist/agents/streams/index.d.ts.map +1 -0
  33. package/dist/agents/streams/index.js +20 -0
  34. package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
  35. package/dist/agents/streams/internal.d.ts +3 -0
  36. package/dist/agents/streams/internal.d.ts.map +1 -0
  37. package/dist/agents/streams/internal.js +40 -0
  38. package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
  39. package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
  40. package/dist/agents/streams/protocol.d.ts.map +1 -0
  41. package/dist/agents/types.d.ts +1 -1
  42. package/dist/agents/types.d.ts.map +1 -1
  43. package/dist/agents/validation.d.ts.map +1 -1
  44. package/dist/auth/index.d.ts +0 -1
  45. package/dist/auth/index.d.ts.map +1 -1
  46. package/dist/auth/index.js +96 -108
  47. package/dist/auth/index.js.map +1 -1
  48. package/dist/auth/strategy.js +8 -9
  49. package/dist/auth/strategy.js.map +1 -1
  50. package/dist/authorization/index.js +51 -56
  51. package/dist/authorization/index.js.map +1 -1
  52. package/dist/blob-storage/browser.js +15 -17
  53. package/dist/blob-storage/browser.js.map +1 -1
  54. package/dist/blob-storage/index.js +36 -38
  55. package/dist/blob-storage/index.js.map +1 -1
  56. package/dist/bootstrap/discovery.d.ts +14 -1
  57. package/dist/bootstrap/discovery.d.ts.map +1 -1
  58. package/dist/bootstrap/index.d.ts +2 -2
  59. package/dist/bootstrap/index.d.ts.map +1 -1
  60. package/dist/bootstrap/index.js +80 -88
  61. package/dist/bootstrap/index.js.map +1 -1
  62. package/dist/broker/in-memory.d.ts +8 -2
  63. package/dist/broker/in-memory.d.ts.map +1 -1
  64. package/dist/broker/index.d.ts +4 -2
  65. package/dist/broker/index.d.ts.map +1 -1
  66. package/dist/broker/index.js +12 -10
  67. package/dist/broker/index.js.map +1 -1
  68. package/dist/broker/retention.d.ts +4 -0
  69. package/dist/broker/retention.d.ts.map +1 -0
  70. package/dist/broker/subscriber.d.ts +10 -0
  71. package/dist/broker/subscriber.d.ts.map +1 -0
  72. package/dist/broker/types.d.ts +14 -1
  73. package/dist/broker/types.d.ts.map +1 -1
  74. package/dist/chunk-0y39rgsb.js +43 -0
  75. package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
  76. package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
  77. package/dist/chunk-17kfctj6.js.map +10 -0
  78. package/dist/{chunk-ajnan18g.js → chunk-1824gssz.js} +74 -106
  79. package/dist/chunk-1824gssz.js.map +12 -0
  80. package/dist/chunk-28ja2cjs.js +602 -0
  81. package/dist/chunk-28ja2cjs.js.map +18 -0
  82. package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
  83. package/dist/chunk-2c4j899j.js.map +11 -0
  84. package/dist/{chunk-rv2hkwwa.js → chunk-358caqf5.js} +157 -180
  85. package/dist/chunk-358caqf5.js.map +12 -0
  86. package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
  87. package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
  88. package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
  89. package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
  90. package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
  91. package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
  92. package/dist/{chunk-s5y30bc9.js → chunk-3qms4nax.js} +52 -50
  93. package/dist/{chunk-s5y30bc9.js.map → chunk-3qms4nax.js.map} +5 -5
  94. package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
  95. package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
  96. package/dist/{chunk-wtf06et8.js → chunk-5c7ga8zz.js} +54 -177
  97. package/dist/chunk-5c7ga8zz.js.map +12 -0
  98. package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
  99. package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
  100. package/dist/{chunk-xajtptbw.js → chunk-5p1v802y.js} +1401 -445
  101. package/dist/chunk-5p1v802y.js.map +44 -0
  102. package/dist/chunk-653vwrzr.js +39 -0
  103. package/dist/chunk-653vwrzr.js.map +10 -0
  104. package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
  105. package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
  106. package/dist/chunk-7apz6hg4.js +50 -0
  107. package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
  108. package/dist/chunk-7bs40fe1.js +218 -0
  109. package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
  110. package/dist/chunk-7zgecwy1.js +113 -0
  111. package/dist/chunk-7zgecwy1.js.map +10 -0
  112. package/dist/{chunk-xhy826cz.js → chunk-85cd7e8c.js} +8 -7
  113. package/dist/chunk-85cd7e8c.js.map +10 -0
  114. package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
  115. package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
  116. package/dist/chunk-8vj0rjgs.js +165 -0
  117. package/dist/chunk-8vj0rjgs.js.map +15 -0
  118. package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
  119. package/dist/chunk-92vk7gta.js.map +10 -0
  120. package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
  121. package/dist/chunk-93csa55g.js.map +11 -0
  122. package/dist/{chunk-aa2pen2v.js → chunk-976rxdpx.js} +188 -175
  123. package/dist/{chunk-aa2pen2v.js.map → chunk-976rxdpx.js.map} +2 -2
  124. package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
  125. package/dist/chunk-98cw09sw.js.map +10 -0
  126. package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
  127. package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
  128. package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
  129. package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
  130. package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
  131. package/dist/{chunk-8m5ejdpn.js → chunk-9x8dybsb.js} +5 -5
  132. package/dist/chunk-9x8dybsb.js.map +10 -0
  133. package/dist/chunk-aa6z4a19.js +358 -0
  134. package/dist/chunk-aa6z4a19.js.map +12 -0
  135. package/dist/{chunk-3xep5cjx.js → chunk-agbbygvh.js} +104 -86
  136. package/dist/chunk-agbbygvh.js.map +15 -0
  137. package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
  138. package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
  139. package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
  140. package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
  141. package/dist/{chunk-w9tg6yyb.js → chunk-b0ec55a1.js} +54 -37
  142. package/dist/chunk-b0ec55a1.js.map +12 -0
  143. package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
  144. package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
  145. package/dist/{chunk-gbejpkex.js → chunk-bn138h9w.js} +27 -28
  146. package/dist/{chunk-gbejpkex.js.map → chunk-bn138h9w.js.map} +3 -3
  147. package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
  148. package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
  149. package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
  150. package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
  151. package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
  152. package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
  153. package/dist/chunk-d62kjtbg.js +7 -0
  154. package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
  155. package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
  156. package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
  157. package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
  158. package/dist/chunk-dmn70ztd.js.map +11 -0
  159. package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
  160. package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
  161. package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
  162. package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
  163. package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
  164. package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
  165. package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
  166. package/dist/chunk-f0rwz2vh.js.map +11 -0
  167. package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
  168. package/dist/chunk-f4w3yp4f.js.map +12 -0
  169. package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
  170. package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
  171. package/dist/{chunk-f26bck4t.js → chunk-ftv470j8.js} +393 -355
  172. package/dist/{chunk-f26bck4t.js.map → chunk-ftv470j8.js.map} +7 -7
  173. package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
  174. package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
  175. package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
  176. package/dist/chunk-g53f0e4j.js.map +15 -0
  177. package/dist/chunk-g6cke204.js +124 -0
  178. package/dist/chunk-g6cke204.js.map +10 -0
  179. package/dist/{chunk-q0k9nc5a.js → chunk-g7knyczr.js} +98 -98
  180. package/dist/{chunk-q0k9nc5a.js.map → chunk-g7knyczr.js.map} +2 -2
  181. package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
  182. package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
  183. package/dist/{chunk-8tsf6dmc.js → chunk-gqh45d2n.js} +244 -205
  184. package/dist/chunk-gqh45d2n.js.map +15 -0
  185. package/dist/chunk-h3v76ams.js +32 -0
  186. package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
  187. package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
  188. package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
  189. package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
  190. package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
  191. package/dist/{chunk-k34z5rvh.js → chunk-kfee1h52.js} +132 -48
  192. package/dist/chunk-kfee1h52.js.map +13 -0
  193. package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
  194. package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
  195. package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
  196. package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
  197. package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
  198. package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
  199. package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
  200. package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
  201. package/dist/{chunk-h5vqbfmd.js → chunk-nmbxcaqx.js} +117 -117
  202. package/dist/{chunk-h5vqbfmd.js.map → chunk-nmbxcaqx.js.map} +3 -3
  203. package/dist/{chunk-n2w475r0.js → chunk-nt99sxd6.js} +82 -82
  204. package/dist/{chunk-n2w475r0.js.map → chunk-nt99sxd6.js.map} +3 -3
  205. package/dist/{chunk-v1xppd0y.js → chunk-p5vcsw9c.js} +60 -60
  206. package/dist/{chunk-v1xppd0y.js.map → chunk-p5vcsw9c.js.map} +2 -2
  207. package/dist/{chunk-sbzzr4kx.js → chunk-p6a4npdx.js} +1260 -1289
  208. package/dist/chunk-p6a4npdx.js.map +58 -0
  209. package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
  210. package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
  211. package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
  212. package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
  213. package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
  214. package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
  215. package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
  216. package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
  217. package/dist/chunk-qma80ych.js +30 -0
  218. package/dist/chunk-qma80ych.js.map +11 -0
  219. package/dist/{chunk-mth82m8t.js → chunk-qyeptdyv.js} +171 -77
  220. package/dist/chunk-qyeptdyv.js.map +15 -0
  221. package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
  222. package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
  223. package/dist/{chunk-mwsxn98e.js → chunk-r7fj830t.js} +253 -200
  224. package/dist/chunk-r7fj830t.js.map +36 -0
  225. package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
  226. package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
  227. package/dist/{chunk-gzasd5b6.js → chunk-rtk71jzp.js} +22 -22
  228. package/dist/{chunk-gzasd5b6.js.map → chunk-rtk71jzp.js.map} +2 -2
  229. package/dist/chunk-s3csryxe.js +152 -0
  230. package/dist/chunk-s3csryxe.js.map +11 -0
  231. package/dist/chunk-s670k14v.js +60 -0
  232. package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
  233. package/dist/chunk-skz0hst3.js +788 -0
  234. package/dist/chunk-skz0hst3.js.map +19 -0
  235. package/dist/{chunk-3z1qec12.js → chunk-t1f4f1ve.js} +107 -64
  236. package/dist/{chunk-3z1qec12.js.map → chunk-t1f4f1ve.js.map} +3 -3
  237. package/dist/chunk-v2vcg0w6.js +151 -0
  238. package/dist/chunk-v2vcg0w6.js.map +11 -0
  239. package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
  240. package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
  241. package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
  242. package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
  243. package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
  244. package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
  245. package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
  246. package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
  247. package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
  248. package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
  249. package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
  250. package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
  251. package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
  252. package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
  253. package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
  254. package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
  255. package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
  256. package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
  257. package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
  258. package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
  259. package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
  260. package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
  261. package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
  262. package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
  263. package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
  264. package/dist/connectors/connections/authorizations.d.ts.map +1 -1
  265. package/dist/connectors/connections/contracts.d.ts +3 -0
  266. package/dist/connectors/connections/contracts.d.ts.map +1 -1
  267. package/dist/connectors/connections/internal.js +9 -10
  268. package/dist/connectors/connections/internal.js.map +1 -1
  269. package/dist/connectors/connections/request.d.ts +3 -1
  270. package/dist/connectors/connections/request.d.ts.map +1 -1
  271. package/dist/connectors/connections/runs.d.ts.map +1 -1
  272. package/dist/connectors/connections/tokens.d.ts.map +1 -1
  273. package/dist/connectors/connections/validation.d.ts +5 -1
  274. package/dist/connectors/connections/validation.d.ts.map +1 -1
  275. package/dist/connectors/types.d.ts +19 -4
  276. package/dist/connectors/types.d.ts.map +1 -1
  277. package/dist/datasets/write.js +8 -12
  278. package/dist/datasets/write.js.map +1 -1
  279. package/dist/edits/index.js +7 -8
  280. package/dist/edits/index.js.map +1 -1
  281. package/dist/error-reporting/internal.js +22 -24
  282. package/dist/error-reporting/internal.js.map +1 -1
  283. package/dist/errors/internal.d.ts +1 -1
  284. package/dist/errors/internal.d.ts.map +1 -1
  285. package/dist/errors/internal.js +22 -24
  286. package/dist/errors/internal.js.map +1 -1
  287. package/dist/errors/redaction.d.ts +8 -0
  288. package/dist/errors/redaction.d.ts.map +1 -0
  289. package/dist/errors/types.d.ts +4 -0
  290. package/dist/errors/types.d.ts.map +1 -1
  291. package/dist/events/execution.d.ts +1 -1
  292. package/dist/events/execution.d.ts.map +1 -1
  293. package/dist/events/index.js +60 -63
  294. package/dist/events/index.js.map +1 -1
  295. package/dist/events/scope.js +4 -5
  296. package/dist/events/scope.js.map +1 -1
  297. package/dist/events/selectors/index.js +9 -10
  298. package/dist/events/selectors/index.js.map +1 -1
  299. package/dist/events/service.d.ts +2 -2
  300. package/dist/events/service.d.ts.map +1 -1
  301. package/dist/execution/agent.d.ts +3 -3
  302. package/dist/execution/agent.d.ts.map +1 -1
  303. package/dist/execution/agent.js +71 -82
  304. package/dist/execution/agent.js.map +1 -1
  305. package/dist/execution/durable.d.ts +1 -0
  306. package/dist/execution/durable.d.ts.map +1 -1
  307. package/dist/execution/primitive.d.ts +2 -0
  308. package/dist/execution/primitive.d.ts.map +1 -1
  309. package/dist/execution/primitive.js +64 -71
  310. package/dist/execution/primitive.js.map +3 -3
  311. package/dist/execution/request.d.ts +1 -0
  312. package/dist/execution/request.d.ts.map +1 -1
  313. package/dist/execution/request.js +66 -75
  314. package/dist/execution/request.js.map +3 -3
  315. package/dist/http/index.js +10 -11
  316. package/dist/http/index.js.map +1 -1
  317. package/dist/index.d.ts +17 -13
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +457 -477
  320. package/dist/index.js.map +1 -1
  321. package/dist/lake-storage/changes.d.ts +5 -0
  322. package/dist/lake-storage/changes.d.ts.map +1 -0
  323. package/dist/lake-storage/in-memory.d.ts +2 -1
  324. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  325. package/dist/lake-storage/index.d.ts +2 -1
  326. package/dist/lake-storage/index.d.ts.map +1 -1
  327. package/dist/lake-storage/index.js +40 -42
  328. package/dist/lake-storage/index.js.map +1 -1
  329. package/dist/lake-storage/types.d.ts +36 -0
  330. package/dist/lake-storage/types.d.ts.map +1 -1
  331. package/dist/logging/index.d.ts +3 -4
  332. package/dist/logging/index.d.ts.map +1 -1
  333. package/dist/logging/index.js +18 -40
  334. package/dist/logging/index.js.map +1 -1
  335. package/dist/logging/internal.d.ts +5 -0
  336. package/dist/logging/internal.d.ts.map +1 -0
  337. package/dist/logging/internal.js +43 -0
  338. package/dist/logging/internal.js.map +9 -0
  339. package/dist/materialization/index.d.ts +1 -1
  340. package/dist/materialization/index.d.ts.map +1 -1
  341. package/dist/materialization/index.js +46 -49
  342. package/dist/materialization/index.js.map +1 -1
  343. package/dist/materialization/model.d.ts +12 -1
  344. package/dist/materialization/model.d.ts.map +1 -1
  345. package/dist/materializer/index.d.ts +1 -1
  346. package/dist/materializer/index.d.ts.map +1 -1
  347. package/dist/materializer/index.js +137 -145
  348. package/dist/materializer/index.js.map +1 -1
  349. package/dist/materializer/materializer.d.ts +5 -1
  350. package/dist/materializer/materializer.d.ts.map +1 -1
  351. package/dist/materializer/projections/entry-validator.d.ts +2 -1
  352. package/dist/materializer/projections/entry-validator.d.ts.map +1 -1
  353. package/dist/materializer/projections/replace.d.ts.map +1 -1
  354. package/dist/materializer/projections/source-materialization.d.ts +4 -3
  355. package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
  356. package/dist/materializer/shared/normalize.d.ts +2 -1
  357. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  358. package/dist/models/errors.d.ts +4 -0
  359. package/dist/models/errors.d.ts.map +1 -1
  360. package/dist/models/execution/binding.d.ts +9 -0
  361. package/dist/models/execution/binding.d.ts.map +1 -0
  362. package/dist/models/execution/errors.d.ts +9 -0
  363. package/dist/models/execution/errors.d.ts.map +1 -0
  364. package/dist/models/execution/index.d.ts +11 -0
  365. package/dist/models/execution/index.d.ts.map +1 -0
  366. package/dist/models/execution/index.js +55 -0
  367. package/dist/models/execution/index.js.map +9 -0
  368. package/dist/models/execution/model-call-accounting.d.ts +17 -0
  369. package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
  370. package/dist/models/execution/model-call-admission.d.ts +47 -0
  371. package/dist/models/execution/model-call-admission.d.ts.map +1 -0
  372. package/dist/models/execution/model-call-limits.d.ts +15 -0
  373. package/dist/models/execution/model-call-limits.d.ts.map +1 -0
  374. package/dist/models/execution/model-call-recorder.d.ts +40 -0
  375. package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
  376. package/dist/models/execution/model-call-recovery.d.ts +12 -0
  377. package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
  378. package/dist/models/execution/recovery-queue.d.ts +5 -0
  379. package/dist/models/execution/recovery-queue.d.ts.map +1 -0
  380. package/dist/models/execution/types.d.ts +44 -0
  381. package/dist/models/execution/types.d.ts.map +1 -0
  382. package/dist/models/execution/usage.d.ts +5 -0
  383. package/dist/models/execution/usage.d.ts.map +1 -0
  384. package/dist/models/execution.d.ts +6 -0
  385. package/dist/models/execution.d.ts.map +1 -0
  386. package/dist/models/generation-types.d.ts +40 -0
  387. package/dist/models/generation-types.d.ts.map +1 -0
  388. package/dist/models/index.d.ts +1 -0
  389. package/dist/models/index.d.ts.map +1 -1
  390. package/dist/models/index.js +42 -43
  391. package/dist/models/index.js.map +1 -1
  392. package/dist/models/language-model.d.ts +3 -0
  393. package/dist/models/language-model.d.ts.map +1 -1
  394. package/dist/models/output.d.ts +5 -0
  395. package/dist/models/output.d.ts.map +1 -0
  396. package/dist/models/resolve.d.ts +4 -0
  397. package/dist/models/resolve.d.ts.map +1 -0
  398. package/dist/objects/execution.d.ts.map +1 -1
  399. package/dist/objects/index.js +75 -87
  400. package/dist/objects/index.js.map +1 -1
  401. package/dist/objects/query/index.js +67 -76
  402. package/dist/objects/query/index.js.map +1 -1
  403. package/dist/ontology/index.d.ts +1 -2
  404. package/dist/ontology/index.d.ts.map +1 -1
  405. package/dist/ontology/index.js +62 -113
  406. package/dist/ontology/index.js.map +1 -1
  407. package/dist/ontology/internal.d.ts +7 -0
  408. package/dist/ontology/internal.d.ts.map +1 -1
  409. package/dist/ontology/internal.js +65 -116
  410. package/dist/ontology/internal.js.map +3 -4
  411. package/dist/pipelines/index.js +57 -66
  412. package/dist/pipelines/index.js.map +1 -1
  413. package/dist/pipelines/run-dispatch.d.ts.map +1 -1
  414. package/dist/projections/internal.js +56 -67
  415. package/dist/projections/internal.js.map +1 -1
  416. package/dist/projections/run-dispatch.d.ts.map +1 -1
  417. package/dist/query.d.ts +0 -1
  418. package/dist/query.d.ts.map +1 -1
  419. package/dist/query.js +11 -15
  420. package/dist/query.js.map +1 -1
  421. package/dist/queues/in-memory.d.ts +7 -3
  422. package/dist/queues/in-memory.d.ts.map +1 -1
  423. package/dist/queues/index.d.ts +2 -1
  424. package/dist/queues/index.d.ts.map +1 -1
  425. package/dist/queues/index.js +6 -7
  426. package/dist/queues/index.js.map +1 -1
  427. package/dist/queues/indexed-heap.d.ts +15 -0
  428. package/dist/queues/indexed-heap.d.ts.map +1 -0
  429. package/dist/queues/types.d.ts +3 -20
  430. package/dist/queues/types.d.ts.map +1 -1
  431. package/dist/rules/internal.js +4 -5
  432. package/dist/rules/internal.js.map +1 -1
  433. package/dist/runtime/create.d.ts +2 -1
  434. package/dist/runtime/create.d.ts.map +1 -1
  435. package/dist/runtime/host.d.ts +2 -1
  436. package/dist/runtime/host.d.ts.map +1 -1
  437. package/dist/runtime/internal.js +13 -14
  438. package/dist/runtime/internal.js.map +1 -1
  439. package/dist/runtime/ontology-mutations.d.ts +3 -1
  440. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  441. package/dist/runtime/sixb.d.ts +2 -0
  442. package/dist/runtime/sixb.d.ts.map +1 -1
  443. package/dist/sandboxes/errors.d.ts +4 -0
  444. package/dist/sandboxes/errors.d.ts.map +1 -1
  445. package/dist/sandboxes/index.d.ts +2 -2
  446. package/dist/sandboxes/index.d.ts.map +1 -1
  447. package/dist/sandboxes/index.js +14 -13
  448. package/dist/sandboxes/index.js.map +1 -1
  449. package/dist/sandboxes/sandbox.d.ts +35 -7
  450. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  451. package/dist/scheduler/index.js +9 -10
  452. package/dist/scheduler/index.js.map +1 -1
  453. package/dist/schedules/index.js +31 -33
  454. package/dist/schedules/index.js.map +1 -1
  455. package/dist/shares/internal.js +46 -54
  456. package/dist/shares/internal.js.map +2 -2
  457. package/dist/storage/action-runs/failure.js +7 -9
  458. package/dist/storage/action-runs/failure.js.map +1 -1
  459. package/dist/storage/action-runs/provider.js +4 -8
  460. package/dist/storage/action-runs/provider.js.map +1 -1
  461. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  462. package/dist/storage/agents/provider.js +26 -30
  463. package/dist/storage/agents/provider.js.map +1 -1
  464. package/dist/storage/agents/types.d.ts +0 -3
  465. package/dist/storage/agents/types.d.ts.map +1 -1
  466. package/dist/storage/ai-cost/attribution.d.ts +4 -0
  467. package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
  468. package/dist/storage/ai-cost/groups.d.ts +3 -0
  469. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  470. package/dist/storage/ai-cost/provider.d.ts +1 -0
  471. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  472. package/dist/storage/ai-cost/provider.js +30 -143
  473. package/dist/storage/ai-cost/provider.js.map +3 -4
  474. package/dist/storage/ai-cost/types.d.ts +15 -0
  475. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  476. package/dist/storage/ai-limits/enforcement.js +14 -16
  477. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  478. package/dist/storage/ai-limits/provider.js +56 -57
  479. package/dist/storage/ai-limits/provider.js.map +1 -1
  480. package/dist/storage/auth/in-memory.d.ts +1 -1
  481. package/dist/storage/auth/in-memory.d.ts.map +1 -1
  482. package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
  483. package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
  484. package/dist/storage/connector-connections/provider.js +35 -37
  485. package/dist/storage/connector-connections/provider.js.map +3 -3
  486. package/dist/storage/connector-connections/types.d.ts +3 -2
  487. package/dist/storage/connector-connections/types.d.ts.map +1 -1
  488. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  489. package/dist/storage/executions/provider.d.ts +2 -1
  490. package/dist/storage/executions/provider.d.ts.map +1 -1
  491. package/dist/storage/executions/provider.js +14 -11
  492. package/dist/storage/executions/provider.js.map +3 -3
  493. package/dist/storage/executions/types.d.ts +6 -2
  494. package/dist/storage/executions/types.d.ts.map +1 -1
  495. package/dist/storage/executions/validation.d.ts +2 -0
  496. package/dist/storage/executions/validation.d.ts.map +1 -1
  497. package/dist/storage/in-memory/index.d.ts.map +1 -1
  498. package/dist/storage/index.d.ts +7 -8
  499. package/dist/storage/index.d.ts.map +1 -1
  500. package/dist/storage/index.js +221 -256
  501. package/dist/storage/index.js.map +1 -1
  502. package/dist/storage/internal.d.ts +10 -0
  503. package/dist/storage/internal.d.ts.map +1 -0
  504. package/dist/storage/internal.js +47 -0
  505. package/dist/storage/internal.js.map +9 -0
  506. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  507. package/dist/storage/ontology/in-memory/materializations.d.ts +1 -1
  508. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  509. package/dist/storage/ontology/in-memory/shared-state.d.ts +15 -2
  510. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  511. package/dist/storage/ontology/in-memory/source-roots.d.ts +6 -0
  512. package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -0
  513. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  514. package/dist/storage/ontology/index.d.ts +1 -1
  515. package/dist/storage/ontology/index.d.ts.map +1 -1
  516. package/dist/storage/ontology/provider.d.ts +16 -0
  517. package/dist/storage/ontology/provider.d.ts.map +1 -1
  518. package/dist/storage/ontology/provider.js +107 -109
  519. package/dist/storage/ontology/provider.js.map +1 -1
  520. package/dist/storage/ontology/sources.d.ts +13 -4
  521. package/dist/storage/ontology/sources.d.ts.map +1 -1
  522. package/dist/storage/operation-scope.js +18 -19
  523. package/dist/storage/operation-scope.js.map +1 -1
  524. package/dist/storage/pipeline-runs/provider.js +4 -6
  525. package/dist/storage/pipeline-runs/provider.js.map +1 -1
  526. package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
  527. package/dist/storage/projection-runs/provider.js +66 -70
  528. package/dist/storage/projection-runs/provider.js.map +1 -1
  529. package/dist/storage/projection-runs/types.d.ts +2 -0
  530. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  531. package/dist/storage/share-grants/provider.js +17 -19
  532. package/dist/storage/share-grants/provider.js.map +1 -1
  533. package/dist/storage/share-sessions/provider.js +14 -15
  534. package/dist/storage/share-sessions/provider.js.map +1 -1
  535. package/dist/storage/sync-runs/provider.js +4 -6
  536. package/dist/storage/sync-runs/provider.js.map +1 -1
  537. package/dist/storage/webhook-runs/provider.js +4 -6
  538. package/dist/storage/webhook-runs/provider.js.map +1 -1
  539. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  540. package/dist/storage/workflow-runs/provider.js +13 -21
  541. package/dist/storage/workflow-runs/provider.js.map +1 -1
  542. package/dist/storage/workflow-runs/types.d.ts +0 -3
  543. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  544. package/dist/syncs/index.js +56 -65
  545. package/dist/syncs/index.js.map +1 -1
  546. package/dist/syncs/run-dispatch.d.ts.map +1 -1
  547. package/dist/testing/action-execution.d.ts +4 -1
  548. package/dist/testing/action-execution.d.ts.map +1 -1
  549. package/dist/testing/agent-execution.d.ts +1 -0
  550. package/dist/testing/agent-execution.d.ts.map +1 -1
  551. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  552. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  553. package/dist/testing/broker-contract.d.ts.map +1 -1
  554. package/dist/testing/connector-connection-storage-contract.d.ts.map +1 -1
  555. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  556. package/dist/testing/execution.d.ts +1 -0
  557. package/dist/testing/execution.d.ts.map +1 -1
  558. package/dist/testing/index.d.ts +1 -0
  559. package/dist/testing/index.d.ts.map +1 -1
  560. package/dist/testing/index.js +2282 -1662
  561. package/dist/testing/index.js.map +16 -15
  562. package/dist/testing/lake-changes-contract.d.ts +6 -0
  563. package/dist/testing/lake-changes-contract.d.ts.map +1 -0
  564. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  565. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  566. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  567. package/dist/testing/workflow-execution.d.ts +1 -0
  568. package/dist/testing/workflow-execution.d.ts.map +1 -1
  569. package/dist/webhooks/connections.d.ts +6 -0
  570. package/dist/webhooks/connections.d.ts.map +1 -0
  571. package/dist/webhooks/index.d.ts +1 -1
  572. package/dist/webhooks/index.d.ts.map +1 -1
  573. package/dist/webhooks/internal.d.ts +2 -0
  574. package/dist/webhooks/internal.d.ts.map +1 -1
  575. package/dist/webhooks/internal.js +98 -61
  576. package/dist/webhooks/internal.js.map +4 -3
  577. package/dist/webhooks/registry.d.ts +1 -1
  578. package/dist/webhooks/registry.d.ts.map +1 -1
  579. package/dist/webhooks/types.d.ts +15 -4
  580. package/dist/webhooks/types.d.ts.map +1 -1
  581. package/dist/workers/index.js +11 -13
  582. package/dist/workers/index.js.map +2 -2
  583. package/dist/workflows/failure.d.ts +2 -0
  584. package/dist/workflows/failure.d.ts.map +1 -1
  585. package/dist/workflows/index.js +136 -147
  586. package/dist/workflows/index.js.map +1 -1
  587. package/dist/workflows/request.d.ts.map +1 -1
  588. package/dist/workflows/run-dispatch.d.ts +3 -2
  589. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  590. package/dist/workflows/types.d.ts +2 -0
  591. package/dist/workflows/types.d.ts.map +1 -1
  592. package/package.json +48 -30
  593. package/src/actions/run-dispatch.ts +2 -6
  594. package/src/actions/types/context.ts +2 -0
  595. package/src/actions/validation.ts +2 -1
  596. package/src/agents/adapters.ts +4 -9
  597. package/src/agents/{context.ts → context/entries.ts} +4 -4
  598. package/src/agents/context/index.ts +15 -0
  599. package/src/agents/context-model.ts +1 -1
  600. package/src/agents/context-resolution.ts +1 -1
  601. package/src/agents/index.ts +4 -4
  602. package/src/agents/message.ts +1 -1
  603. package/src/agents/model-loop.ts +8 -0
  604. package/src/agents/request.ts +11 -26
  605. package/src/agents/streams/index.ts +18 -0
  606. package/src/agents/streams/internal.ts +19 -0
  607. package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
  608. package/src/agents/types.ts +1 -1
  609. package/src/agents/validation.ts +3 -7
  610. package/src/auth/index.ts +0 -1
  611. package/src/bootstrap/discovery.ts +81 -24
  612. package/src/bootstrap/index.ts +8 -1
  613. package/src/broker/in-memory.ts +104 -39
  614. package/src/broker/index.ts +4 -1
  615. package/src/broker/retention.ts +28 -0
  616. package/src/broker/subscriber.ts +21 -0
  617. package/src/broker/types.ts +15 -1
  618. package/src/connectors/builders.ts +0 -6
  619. package/src/connectors/connections/authorizations.ts +11 -5
  620. package/src/connectors/connections/contracts.ts +3 -0
  621. package/src/connectors/connections/request.ts +56 -22
  622. package/src/connectors/connections/runs.ts +1 -0
  623. package/src/connectors/connections/tokens.ts +4 -0
  624. package/src/connectors/connections/validation.ts +91 -5
  625. package/src/connectors/types.ts +19 -4
  626. package/src/errors/internal.ts +90 -10
  627. package/src/errors/redaction.ts +98 -0
  628. package/src/errors/types.ts +4 -0
  629. package/src/events/execution.ts +2 -2
  630. package/src/events/service.ts +3 -3
  631. package/src/execution/agent.ts +5 -3
  632. package/src/execution/durable.ts +11 -1
  633. package/src/execution/primitive.ts +5 -1
  634. package/src/execution/request.ts +3 -0
  635. package/src/index.ts +30 -20
  636. package/src/lake-storage/changes.ts +43 -0
  637. package/src/lake-storage/in-memory.ts +73 -0
  638. package/src/lake-storage/index.ts +4 -0
  639. package/src/lake-storage/types.ts +40 -0
  640. package/src/logging/index.ts +2 -33
  641. package/src/logging/internal.ts +43 -0
  642. package/src/logging/service.ts +1 -1
  643. package/src/materialization/index.ts +2 -0
  644. package/src/materialization/model.ts +14 -1
  645. package/src/materializer/index.ts +2 -0
  646. package/src/materializer/materializer.ts +10 -0
  647. package/src/materializer/projections/entry-validator.ts +19 -1
  648. package/src/materializer/projections/replace.ts +36 -1
  649. package/src/materializer/projections/source-materialization.ts +26 -6
  650. package/src/materializer/shared/normalize.ts +1 -1
  651. package/src/models/errors.ts +12 -0
  652. package/src/models/execution/binding.ts +29 -0
  653. package/src/models/execution/errors.ts +18 -0
  654. package/src/models/execution/index.ts +26 -0
  655. package/src/models/execution/model-call-accounting.ts +211 -0
  656. package/src/models/execution/model-call-admission.ts +127 -0
  657. package/src/models/execution/model-call-limits.ts +135 -0
  658. package/src/models/execution/model-call-recorder.ts +235 -0
  659. package/src/models/execution/model-call-recovery.ts +125 -0
  660. package/src/models/execution/recovery-queue.ts +31 -0
  661. package/src/models/execution/types.ts +58 -0
  662. package/src/models/execution/usage.ts +23 -0
  663. package/src/models/execution.ts +207 -0
  664. package/src/models/generation-types.ts +50 -0
  665. package/src/models/index.ts +8 -0
  666. package/src/models/language-model.ts +3 -0
  667. package/src/models/output.ts +45 -0
  668. package/src/models/resolve.ts +27 -0
  669. package/src/objects/execution.ts +1 -1
  670. package/src/ontology/index.ts +1 -2
  671. package/src/ontology/internal.ts +35 -0
  672. package/src/pipelines/run-dispatch.ts +21 -1
  673. package/src/projections/run-dispatch.ts +31 -68
  674. package/src/query.ts +0 -1
  675. package/src/queues/in-memory.ts +105 -62
  676. package/src/queues/index.ts +4 -2
  677. package/src/queues/indexed-heap.ts +74 -0
  678. package/src/queues/types.ts +6 -25
  679. package/src/runtime/create.ts +2 -1
  680. package/src/runtime/host.ts +2 -15
  681. package/src/runtime/ontology-mutations.ts +4 -0
  682. package/src/runtime/sixb.ts +4 -0
  683. package/src/sandboxes/errors.ts +5 -0
  684. package/src/sandboxes/index.ts +3 -0
  685. package/src/sandboxes/sandbox.ts +35 -7
  686. package/src/storage/agents/in-memory.ts +0 -3
  687. package/src/storage/agents/types.ts +0 -3
  688. package/src/storage/ai-cost/analytics.ts +1 -1
  689. package/src/storage/ai-cost/attribution.ts +15 -0
  690. package/src/storage/ai-cost/groups.ts +5 -1
  691. package/src/storage/ai-cost/provider.ts +1 -0
  692. package/src/storage/ai-cost/types.ts +7 -0
  693. package/src/storage/auth/in-memory.ts +1 -1
  694. package/src/storage/connector-connections/in-memory.ts +3 -1
  695. package/src/storage/connector-connections/provider/runs.ts +3 -1
  696. package/src/storage/connector-connections/types.ts +3 -2
  697. package/src/storage/executions/in-memory.ts +4 -9
  698. package/src/storage/executions/provider.ts +4 -0
  699. package/src/storage/executions/types.ts +6 -2
  700. package/src/storage/executions/validation.ts +32 -0
  701. package/src/storage/in-memory/index.ts +16 -1
  702. package/src/storage/index.ts +4 -29
  703. package/src/storage/internal.ts +20 -0
  704. package/src/storage/ontology/in-memory/materializations-state.ts +5 -18
  705. package/src/storage/ontology/in-memory/materializations.ts +73 -92
  706. package/src/storage/ontology/in-memory/shared-state.ts +26 -1
  707. package/src/storage/ontology/in-memory/source-roots.ts +123 -0
  708. package/src/storage/ontology/in-memory/sources.ts +78 -23
  709. package/src/storage/ontology/index.ts +1 -0
  710. package/src/storage/ontology/provider.ts +70 -0
  711. package/src/storage/ontology/sources.ts +14 -3
  712. package/src/storage/projection-runs/lifecycle.ts +5 -2
  713. package/src/storage/projection-runs/types.ts +4 -3
  714. package/src/storage/workflow-runs/in-memory.ts +0 -2
  715. package/src/storage/workflow-runs/types.ts +0 -3
  716. package/src/syncs/run-dispatch.ts +19 -1
  717. package/src/testing/action-execution.ts +9 -2
  718. package/src/testing/agent-execution.ts +3 -0
  719. package/src/testing/agent-storage-contract.ts +0 -5
  720. package/src/testing/ai-model-call-groups-contract.ts +74 -2
  721. package/src/testing/broker-contract.ts +95 -0
  722. package/src/testing/connector-connection-storage-contract.ts +18 -1
  723. package/src/testing/execution-storage-contract.ts +59 -1
  724. package/src/testing/execution.ts +6 -0
  725. package/src/testing/index.ts +1 -0
  726. package/src/testing/lake-changes-contract.ts +240 -0
  727. package/src/testing/materializer-storage-contract.ts +172 -1
  728. package/src/testing/ontology-storage-contract.ts +7 -0
  729. package/src/testing/projection-run-storage-contract.ts +34 -0
  730. package/src/testing/workflow-execution.ts +4 -0
  731. package/src/webhooks/connections.ts +56 -0
  732. package/src/webhooks/index.ts +2 -0
  733. package/src/webhooks/internal.ts +2 -0
  734. package/src/webhooks/registry.ts +3 -4
  735. package/src/webhooks/types.ts +17 -4
  736. package/src/workflows/failure.ts +62 -1
  737. package/src/workflows/request.ts +0 -9
  738. package/src/workflows/run-dispatch.ts +42 -32
  739. package/src/workflows/types.ts +2 -0
  740. package/src/workflows/validation.ts +1 -1
  741. package/dist/agents/context.d.ts.map +0 -1
  742. package/dist/agents/context.js +0 -23
  743. package/dist/agents/streams.d.ts.map +0 -1
  744. package/dist/agents/streams.js +0 -55
  745. package/dist/chunk-08m3b6w8.js +0 -32
  746. package/dist/chunk-19jp6g9d.js.map +0 -11
  747. package/dist/chunk-2xns679x.js.map +0 -11
  748. package/dist/chunk-3xep5cjx.js.map +0 -15
  749. package/dist/chunk-407j3msh.js +0 -60
  750. package/dist/chunk-4qfkag59.js +0 -1568
  751. package/dist/chunk-4qfkag59.js.map +0 -20
  752. package/dist/chunk-5e3pq99w.js.map +0 -11
  753. package/dist/chunk-5gd7tpv6.js.map +0 -11
  754. package/dist/chunk-7y0f6rf1.js.map +0 -10
  755. package/dist/chunk-8m5ejdpn.js.map +0 -10
  756. package/dist/chunk-8tsf6dmc.js.map +0 -15
  757. package/dist/chunk-ajnan18g.js.map +0 -12
  758. package/dist/chunk-c15dr03f.js +0 -43
  759. package/dist/chunk-d8qkxt2v.js.map +0 -10
  760. package/dist/chunk-jq43kdvk.js +0 -50
  761. package/dist/chunk-k34z5rvh.js.map +0 -11
  762. package/dist/chunk-k522z7v6.js.map +0 -10
  763. package/dist/chunk-mth82m8t.js.map +0 -14
  764. package/dist/chunk-mwsxn98e.js.map +0 -36
  765. package/dist/chunk-p03r0h5s.js.map +0 -16
  766. package/dist/chunk-p1rzczbt.js +0 -218
  767. package/dist/chunk-rafagrwr.js.map +0 -11
  768. package/dist/chunk-rv2hkwwa.js.map +0 -14
  769. package/dist/chunk-sbzzr4kx.js.map +0 -63
  770. package/dist/chunk-tpnd31c1.js +0 -242
  771. package/dist/chunk-tpnd31c1.js.map +0 -11
  772. package/dist/chunk-w9tg6yyb.js.map +0 -12
  773. package/dist/chunk-wtf06et8.js.map +0 -14
  774. package/dist/chunk-xajtptbw.js.map +0 -40
  775. package/dist/chunk-xhy826cz.js.map +0 -10
  776. package/dist/chunk-y64skrwp.js +0 -19
  777. package/dist/chunk-zcnhxkvd.js +0 -7
  778. package/dist/logging/types.js +0 -27
  779. package/dist/logging/types.js.map +0 -9
  780. /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
  781. /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
  782. /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
  783. /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
  784. /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
  785. /package/dist/{chunk-z4ccwbkz.js.map → chunk-x9v4cx1d.js.map} +0 -0
@@ -0,0 +1,135 @@
1
+ import { isSixbError } from "../../errors/internal"
2
+ import type { AuthorizablePrincipal } from "../../execution"
3
+ import type {
4
+ AiLimitPolicy,
5
+ AiLimitQuantity,
6
+ AiModelCallReservationIdentity,
7
+ ReserveAiModelCallResult,
8
+ } from "../../storage"
9
+ import {
10
+ aiLimitSubjectsFromAttribution,
11
+ aiUsageLimitExceededError,
12
+ aiUsageLimitUnavailableError,
13
+ applicableAiLimitPolicies,
14
+ } from "../../storage/ai-limits/enforcement"
15
+ import type {
16
+ AiModelCallAdmissionDecision,
17
+ AiModelCallAdmissionInput,
18
+ BeforeAiModelCall,
19
+ MarkAiModelCallUnknown,
20
+ } from "./model-call-admission"
21
+ import type { ModelCallAccountingStorage } from "./types"
22
+
23
+ export interface AiModelCallLimitController {
24
+ readonly beforeModelCall: BeforeAiModelCall
25
+ readonly markModelCallUnknown: MarkAiModelCallUnknown
26
+ }
27
+
28
+ /** Build the reservation lifecycle for model calls from any execution. */
29
+ export function createAiModelCallLimitController(input: {
30
+ readonly storage: Pick<ModelCallAccountingStorage, "aiLimits">
31
+ readonly projectId: string
32
+ readonly requestedBy?: AuthorizablePrincipal
33
+ readonly requesterGroupIds: readonly string[]
34
+ }): AiModelCallLimitController {
35
+ const subjects = aiLimitSubjectsFromAttribution(input.requestedBy, input.requesterGroupIds)
36
+
37
+ return {
38
+ beforeModelCall: async (admission) => {
39
+ let applicable: readonly AiLimitPolicy[]
40
+ try {
41
+ const policies = await input.storage.aiLimits.listPolicies({
42
+ projectId: input.projectId,
43
+ })
44
+ applicable = applicableAiLimitPolicies(policies, subjects)
45
+ } catch (error) {
46
+ throw limitStorageUnavailable(error)
47
+ }
48
+ // This read is the fast no-policy path. A concurrently created policy linearizes after it;
49
+ // every later call will see it, while existing policies always continue to atomic reserve.
50
+ if (applicable.length === 0) return { reservation: "none" }
51
+
52
+ const estimates = reservationEstimates(
53
+ admission,
54
+ applicable.some((policy) => policy.limit.meter === "cost.catalogEstimated")
55
+ )
56
+ if (estimates.length === 0) {
57
+ throw aiUsageLimitUnavailableError(["missingEstimate"])
58
+ }
59
+
60
+ let result: ReserveAiModelCallResult
61
+ try {
62
+ result = await input.storage.aiLimits.reserveModelCall({
63
+ ...reservationIdentity(admission),
64
+ subjects,
65
+ estimates,
66
+ })
67
+ } catch (error) {
68
+ throw limitStorageUnavailable(error)
69
+ }
70
+ switch (result.status) {
71
+ case "reserved":
72
+ return { reservation: "active" } satisfies AiModelCallAdmissionDecision
73
+ case "notRequired":
74
+ return { reservation: "none" } satisfies AiModelCallAdmissionDecision
75
+ case "denied":
76
+ throw aiUsageLimitExceededError(result.resetAt)
77
+ case "unavailable":
78
+ throw aiUsageLimitUnavailableError(result.reasons)
79
+ case "terminal":
80
+ throw aiUsageLimitUnavailableError(["terminalReservationReplay"])
81
+ }
82
+ },
83
+ markModelCallUnknown: async (identity) => {
84
+ try {
85
+ await input.storage.aiLimits.markReservationUnknown(identity)
86
+ } catch (error) {
87
+ throw limitStorageUnavailable(error)
88
+ }
89
+ },
90
+ }
91
+ }
92
+
93
+ function reservationEstimates(
94
+ input: AiModelCallAdmissionInput,
95
+ needsCost: boolean
96
+ ): readonly AiLimitQuantity[] {
97
+ if (input.inputTokens.status !== "estimated" || input.estimatedTotalTokens === undefined) {
98
+ return []
99
+ }
100
+ const estimates: AiLimitQuantity[] = [
101
+ { meter: "tokens.total", amount: input.estimatedTotalTokens },
102
+ ]
103
+ if (needsCost) {
104
+ try {
105
+ const money = input.costEstimator?.estimateReservation?.({
106
+ inputTokens: input.inputTokens.tokens,
107
+ outputTokens: input.outputTokenAllowance,
108
+ })
109
+ if (money) estimates.push({ meter: "cost.catalogEstimated", amount: money })
110
+ } catch {
111
+ // An unavailable price must not prevent a token-only policy from being evaluated.
112
+ return estimates
113
+ }
114
+ }
115
+ return estimates
116
+ }
117
+
118
+ function reservationIdentity(input: AiModelCallAdmissionInput): AiModelCallReservationIdentity {
119
+ return {
120
+ projectId: input.projectId,
121
+ executionId: input.executionId,
122
+ attempt: input.attempt,
123
+ callId: input.callId,
124
+ }
125
+ }
126
+
127
+ function limitStorageUnavailable(error: unknown): unknown {
128
+ if (
129
+ isSixbError(error) &&
130
+ (error.code === "ai.usage_limit_exceeded" || error.code === "ai.usage_limit_unavailable")
131
+ ) {
132
+ return error
133
+ }
134
+ return aiUsageLimitUnavailableError(["limitStorageUnavailable"])
135
+ }
@@ -0,0 +1,235 @@
1
+ import { randomUUID } from "node:crypto"
2
+ import type { ReadonlyJsonObject, RecordAiModelCallInput } from "../../storage"
3
+ import type { ModelCallEndEvent, ModelUsage } from "../events"
4
+ import type { LanguageModel, LanguageModelRequest } from "../language-model"
5
+ import { ModelUsageRecordingError } from "./errors"
6
+ import {
7
+ normalizeModelCallAccounting,
8
+ recordAiModelCallAccounting,
9
+ requireAccountingCapabilities,
10
+ } from "./model-call-accounting"
11
+ import {
12
+ aiModelCallOutputTokenAllowance,
13
+ type BeforeAiModelCall,
14
+ estimateAiModelCallInputTokens,
15
+ estimatedAiModelCallTotalTokens,
16
+ } from "./model-call-admission"
17
+ import type { AiModelCallLimitController } from "./model-call-limits"
18
+ import { isPermanentAiUsageRecoveryError } from "./model-call-recovery"
19
+ import type {
20
+ ModelCallAccountingStorage,
21
+ RecoverAiModelCall,
22
+ RecoverAiModelCallInput,
23
+ } from "./types"
24
+ import { aiModelCallUsageFromModel } from "./usage"
25
+
26
+ const STORAGE_RETRY_DELAYS_MS = [50, 200, 600] as const
27
+
28
+ export interface AiModelCallRecorderInput {
29
+ readonly storage: ModelCallAccountingStorage
30
+ readonly projectId: string
31
+ readonly executionId: string
32
+ readonly attempt: number
33
+ readonly requesterGroupIds: readonly string[]
34
+ readonly limits: AiModelCallLimitController
35
+ readonly recoverAiModelCall: RecoverAiModelCall
36
+ }
37
+
38
+ interface AiModelCallRecorderInternals {
39
+ readonly generateId?: () => string
40
+ readonly now?: () => Date
41
+ readonly retryDelaysMs?: readonly number[]
42
+ readonly sleep?: (ms: number) => Promise<void>
43
+ readonly recordAccounting?: (input: RecoverAiModelCallInput) => Promise<void>
44
+ }
45
+
46
+ /** Persist every completed provider call before another billable loop step can start. */
47
+ export class AiModelCallRecorder {
48
+ private readonly generateId: () => string
49
+ private readonly now: () => Date
50
+ private readonly retryDelaysMs: readonly number[]
51
+ private readonly sleep: (ms: number) => Promise<void>
52
+ private readonly recordAccounting: (input: RecoverAiModelCallInput) => Promise<void>
53
+ private readonly reservations = new Set<string>()
54
+ private admissionError: unknown
55
+ private recordingError: ModelUsageRecordingError | undefined
56
+
57
+ constructor(
58
+ private readonly input: AiModelCallRecorderInput,
59
+ internals: AiModelCallRecorderInternals = {}
60
+ ) {
61
+ requireAccountingCapabilities(input.storage)
62
+ this.generateId = internals.generateId ?? (() => `ai_usage_${randomUUID()}`)
63
+ this.now = internals.now ?? (() => new Date())
64
+ this.retryDelaysMs = internals.retryDelaysMs ?? STORAGE_RETRY_DELAYS_MS
65
+ this.sleep = internals.sleep ?? sleep
66
+ this.recordAccounting =
67
+ internals.recordAccounting ??
68
+ (async (recovery) => {
69
+ await recordAiModelCallAccounting({ storage: this.input.storage, ...recovery })
70
+ })
71
+ }
72
+
73
+ /** Wrap the resolved model so all calls in an execution share admission. */
74
+ wrapModel(model: LanguageModel): LanguageModel {
75
+ return {
76
+ providerId: model.providerId,
77
+ modelId: model.modelId,
78
+ definition: model.definition,
79
+ costEstimator: model.costEstimator,
80
+ ...(model.validateResponseFormat === undefined
81
+ ? {}
82
+ : { validateResponseFormat: model.validateResponseFormat.bind(model) }),
83
+ stream: async (request) => {
84
+ this.assertHealthy()
85
+ const inputTokens = estimateAiModelCallInputTokens({
86
+ prompt: request.messages,
87
+ tools: request.tools,
88
+ responseFormat: request.responseFormat,
89
+ })
90
+ const outputTokenAllowance = aiModelCallOutputTokenAllowance(request.maxOutputTokens)
91
+ let decision: Awaited<ReturnType<BeforeAiModelCall>>
92
+ try {
93
+ decision = await this.input.limits.beforeModelCall({
94
+ ...this.identity(request),
95
+ requesterGroupIds: this.input.requesterGroupIds,
96
+ providerId: model.providerId,
97
+ modelId: model.modelId,
98
+ costEstimator: model.costEstimator,
99
+ inputTokens,
100
+ outputTokenAllowance,
101
+ estimatedTotalTokens: estimatedAiModelCallTotalTokens(
102
+ inputTokens,
103
+ outputTokenAllowance
104
+ ),
105
+ })
106
+ } catch (error) {
107
+ // Execution boundaries must retain the original coded admission failure.
108
+ this.admissionError = error
109
+ throw error
110
+ }
111
+ if (decision.reservation === "active") this.reservations.add(request.callId)
112
+ try {
113
+ return await model.stream(request)
114
+ } catch (error) {
115
+ if (this.reservations.has(request.callId)) {
116
+ await this.input.limits.markModelCallUnknown(this.identity(request))
117
+ }
118
+ throw error
119
+ }
120
+ },
121
+ }
122
+ }
123
+
124
+ private identity(request: Pick<LanguageModelRequest, "callId">) {
125
+ return {
126
+ projectId: this.input.projectId,
127
+ executionId: this.input.executionId,
128
+ attempt: this.input.attempt,
129
+ callId: request.callId,
130
+ }
131
+ }
132
+
133
+ readonly onModelCallEnd = async (event: ModelCallEndEvent): Promise<void> => {
134
+ // Calls already in flight still need their own accounting after another call fails.
135
+ // Only admission is gated by the execution's sticky failure.
136
+ try {
137
+ const occurredAt = this.now()
138
+ const record: RecordAiModelCallInput = {
139
+ id: this.generateId(),
140
+ projectId: this.input.projectId,
141
+ executionId: this.input.executionId,
142
+ attempt: this.input.attempt,
143
+ callId: event.callId,
144
+ requesterGroupIds: this.input.requesterGroupIds,
145
+ providerId: event.providerId,
146
+ ...(event.providerIds === undefined ? {} : { providerIds: event.providerIds }),
147
+ requestedModelId: event.modelId,
148
+ ...(event.requestedReasoning === undefined
149
+ ? {}
150
+ : { requestedReasoning: event.requestedReasoning }),
151
+ ...(event.responseModelId === undefined ? {} : { responseModelId: event.responseModelId }),
152
+ responseId: event.responseId,
153
+ usage: aiModelCallUsageFromModel(event.usage),
154
+ ...(event.usage.raw === undefined ? {} : { rawUsage: rawUsage(event.usage) }),
155
+ occurredAt,
156
+ }
157
+ const recoveryInput = normalizeModelCallAccounting({
158
+ usage: record,
159
+ cost: event.cost,
160
+ ...(event.estimate === undefined ? {} : { estimate: event.estimate }),
161
+ ...(event.route === undefined ? {} : { route: event.route }),
162
+ ratedAt: new Date(occurredAt),
163
+ ...(this.reservations.has(event.callId) ? { reconcileLimitReservation: true } : {}),
164
+ })
165
+
166
+ try {
167
+ await retryOperation(
168
+ () => this.recordAccounting(recoveryInput),
169
+ this.retryDelaysMs,
170
+ this.sleep,
171
+ (error) => !isPermanentAiUsageRecoveryError(error)
172
+ )
173
+ } catch (storageError) {
174
+ if (isPermanentAiUsageRecoveryError(storageError)) throw storageError
175
+
176
+ try {
177
+ await retryOperation(
178
+ () => this.input.recoverAiModelCall(recoveryInput),
179
+ this.retryDelaysMs,
180
+ this.sleep,
181
+ (error) => !isPermanentAiUsageRecoveryError(error)
182
+ )
183
+ } catch (recoveryError) {
184
+ throw new AggregateError(
185
+ [storageError, recoveryError],
186
+ "Direct AI accounting and durable recovery both failed."
187
+ )
188
+ }
189
+ throw new ModelUsageRecordingError(this.input.executionId, event.callId, true, {
190
+ cause: storageError,
191
+ })
192
+ }
193
+ } catch (error) {
194
+ const recordingError =
195
+ error instanceof ModelUsageRecordingError
196
+ ? error
197
+ : new ModelUsageRecordingError(this.input.executionId, event.callId, false, {
198
+ cause: error,
199
+ })
200
+ this.recordingError ??= recordingError
201
+ throw recordingError
202
+ }
203
+ }
204
+
205
+ assertHealthy(): void {
206
+ if (this.admissionError !== undefined) throw this.admissionError
207
+ if (this.recordingError) throw this.recordingError
208
+ }
209
+ }
210
+
211
+ function rawUsage(usage: ModelUsage): ReadonlyJsonObject {
212
+ return structuredClone(usage.raw ?? {})
213
+ }
214
+
215
+ async function retryOperation<TResult>(
216
+ operation: () => Promise<TResult>,
217
+ retryDelaysMs: readonly number[],
218
+ wait: (ms: number) => Promise<void>,
219
+ shouldRetry: (error: unknown) => boolean
220
+ ): Promise<TResult> {
221
+ for (let attempt = 0; ; attempt += 1) {
222
+ try {
223
+ return await operation()
224
+ } catch (error) {
225
+ if (!shouldRetry(error)) throw error
226
+ const delay = retryDelaysMs[attempt]
227
+ if (delay === undefined) throw error
228
+ await wait(delay)
229
+ }
230
+ }
231
+ }
232
+
233
+ function sleep(ms: number): Promise<void> {
234
+ return new Promise((resolve) => setTimeout(resolve, ms))
235
+ }
@@ -0,0 +1,125 @@
1
+ import type { RecordAiModelCallInput, RecordAiModelCallResult } from "../../storage"
2
+ import { AiCostStorageError, AiLimitStorageError, AiUsageStorageError } from "../../storage"
3
+ import { normalizeAiModelCallRecord } from "../../storage/ai-usage/record"
4
+ import { recordAiModelCallAccounting } from "./model-call-accounting"
5
+ import type {
6
+ AiModelCallAccountingPayload,
7
+ AiModelCallRecordPayload,
8
+ AiModelCallRecoveryRecord,
9
+ ModelCallAccountingStorage,
10
+ RecoverAiModelCallInput,
11
+ } from "./types"
12
+ import { aiModelCallUsageFromModel } from "./usage"
13
+
14
+ class InvalidAiUsageRecoveryJobError extends Error {
15
+ readonly name = "InvalidAiUsageRecoveryJobError"
16
+
17
+ constructor(message: string, options?: ErrorOptions) {
18
+ super(`[SixbModels] ${message}`, options)
19
+ }
20
+ }
21
+
22
+ /** Encode one failed accounting transaction for a durable, JSON-safe handoff. */
23
+ export function modelCallRecoveryPayload(input: RecoverAiModelCallInput): {
24
+ readonly record: AiModelCallRecordPayload
25
+ readonly accounting: AiModelCallAccountingPayload
26
+ } {
27
+ normalizeAiModelCallRecord(input.usage)
28
+ return {
29
+ record: toQueuePayload(input.usage),
30
+ accounting: toAccountingPayload(input),
31
+ }
32
+ }
33
+
34
+ /** Replay one durable handoff through the idempotent atomic accounting boundary. */
35
+ export async function recordRecoveredAiModelCall(
36
+ storage: Pick<ModelCallAccountingStorage, "transaction">,
37
+ job: AiModelCallRecoveryRecord
38
+ ): Promise<RecordAiModelCallResult> {
39
+ const usage = fromQueuePayload(job)
40
+ const accounting = accountingFromQueuePayload(job)
41
+ return recordAiModelCallAccounting({ storage, usage, ...accounting })
42
+ }
43
+
44
+ /** Validation and referential-integrity failures cannot become valid through queue redelivery. */
45
+ export function isPermanentAiUsageRecoveryError(error: unknown): boolean {
46
+ return (
47
+ error instanceof InvalidAiUsageRecoveryJobError ||
48
+ error instanceof TypeError ||
49
+ (error instanceof AiUsageStorageError &&
50
+ (error.code === "duplicate_id" || error.code === "missing_execution")) ||
51
+ (error instanceof AiCostStorageError &&
52
+ (error.code === "missing_usage" || error.code === "cost_mismatch")) ||
53
+ (error instanceof AiLimitStorageError &&
54
+ (error.code === "missing_execution" ||
55
+ error.code === "missing_reservation" ||
56
+ error.code === "missing_usage_record" ||
57
+ error.code === "usage_mismatch" ||
58
+ error.code === "reservation_conflict" ||
59
+ error.code === "reconciliation_conflict" ||
60
+ error.code === "invalid_reservation_state"))
61
+ )
62
+ }
63
+
64
+ function toQueuePayload(record: RecordAiModelCallInput): AiModelCallRecordPayload {
65
+ return {
66
+ id: record.id,
67
+ executionId: record.executionId,
68
+ attempt: record.attempt,
69
+ callId: record.callId,
70
+ requesterGroupIds: [...record.requesterGroupIds],
71
+ providerId: record.providerId,
72
+ ...(record.providerIds === undefined
73
+ ? {}
74
+ : { providerIds: structuredClone(record.providerIds) }),
75
+ requestedModelId: record.requestedModelId,
76
+ ...(record.requestedReasoning === undefined
77
+ ? {}
78
+ : { requestedReasoning: structuredClone(record.requestedReasoning) }),
79
+ ...(record.responseModelId === undefined ? {} : { responseModelId: record.responseModelId }),
80
+ responseId: record.responseId,
81
+ usage: aiModelCallUsageFromModel(record.usage),
82
+ ...(record.rawUsage === undefined ? {} : { rawUsage: structuredClone(record.rawUsage) }),
83
+ occurredAt: record.occurredAt.toISOString(),
84
+ }
85
+ }
86
+
87
+ function toAccountingPayload(input: RecoverAiModelCallInput): AiModelCallAccountingPayload {
88
+ return {
89
+ cost: structuredClone(input.cost),
90
+ ...(input.estimate === undefined ? {} : { estimate: structuredClone(input.estimate) }),
91
+ ...(input.route === undefined ? {} : { route: structuredClone(input.route) }),
92
+ ratedAt: input.ratedAt.toISOString(),
93
+ ...(input.reconcileLimitReservation ? { reconcileLimitReservation: true } : {}),
94
+ }
95
+ }
96
+
97
+ function fromQueuePayload(job: AiModelCallRecoveryRecord): RecordAiModelCallInput {
98
+ const occurredAt = parseDate(job.payload.record.occurredAt, job.id, "occurredAt")
99
+ return { ...job.payload.record, projectId: job.projectId, occurredAt }
100
+ }
101
+
102
+ function accountingFromQueuePayload(
103
+ job: AiModelCallRecoveryRecord
104
+ ): Omit<RecoverAiModelCallInput, "usage"> {
105
+ const accounting = job.payload.accounting
106
+ return {
107
+ cost: structuredClone(accounting.cost),
108
+ ...(accounting.estimate === undefined
109
+ ? {}
110
+ : { estimate: structuredClone(accounting.estimate) }),
111
+ ...(accounting.route === undefined ? {} : { route: structuredClone(accounting.route) }),
112
+ ratedAt: parseDate(accounting.ratedAt, job.id, "ratedAt"),
113
+ reconcileLimitReservation: accounting.reconcileLimitReservation === true,
114
+ }
115
+ }
116
+
117
+ function parseDate(value: string, jobId: string, field: string): Date {
118
+ const date = new Date(value)
119
+ if (!Number.isFinite(date.getTime())) {
120
+ throw new InvalidAiUsageRecoveryJobError(
121
+ `AI usage recovery job '${jobId}' has an invalid ${field} timestamp.`
122
+ )
123
+ }
124
+ return date
125
+ }
@@ -0,0 +1,31 @@
1
+ import { createSixbError } from "../../errors/internal"
2
+ import type { AgentQueueJob, Queue } from "../../queues"
3
+ import { modelCallRecoveryPayload } from "./model-call-recovery"
4
+ import type { RecoverAiModelCallInput } from "./types"
5
+
6
+ /** Stable queue identity: a lost enqueue response can safely retry the same accounting handoff. */
7
+ function agentAiUsageRecoveryJobId(recordId: string): string {
8
+ return `agt_usage_job_${recordId}`
9
+ }
10
+
11
+ /** Transport adapter for the agent worker's existing durable recovery lane. */
12
+ export async function enqueueAiModelCallRecovery(
13
+ queue: Pick<Queue<AgentQueueJob>, "enqueue">,
14
+ input: RecoverAiModelCallInput
15
+ ): Promise<void> {
16
+ const payload = modelCallRecoveryPayload(input)
17
+ const record = input.usage
18
+ const jobId = agentAiUsageRecoveryJobId(record.id)
19
+ const [job] = await queue.enqueue({
20
+ projectId: record.projectId,
21
+ jobs: [{ id: jobId, type: "agent.ai-usage.record.requested", payload }],
22
+ })
23
+
24
+ if (job?.id !== jobId || job.type !== "agent.ai-usage.record.requested") {
25
+ throw createSixbError(
26
+ "internal.unexpected",
27
+ `[SixbModels] Agent queue did not confirm AI usage recovery job '${jobId}'.`,
28
+ { details: { jobId } }
29
+ )
30
+ }
31
+ }
@@ -0,0 +1,58 @@
1
+ import type {
2
+ AiCostStorage,
3
+ AiLimitStorage,
4
+ AiUsageStorage,
5
+ RecordAiModelCallInput,
6
+ Storage,
7
+ } from "../../storage"
8
+ import type { ModelRoute } from "../events"
9
+ import type { ModelCallCost, ModelCostEstimate } from "../pricing"
10
+
11
+ /** Only the stores and transaction boundary needed by model-call accounting. */
12
+ export interface ModelCallAccountingStorage extends Pick<Storage, "transaction"> {
13
+ readonly aiUsage: AiUsageStorage
14
+ readonly aiCosts: AiCostStorage
15
+ readonly aiLimits: AiLimitStorage
16
+ }
17
+
18
+ export interface RecoverAiModelCallInput {
19
+ readonly usage: RecordAiModelCallInput
20
+ readonly cost: ModelCallCost
21
+ readonly estimate?: ModelCostEstimate
22
+ readonly route?: ModelRoute
23
+ readonly ratedAt: Date
24
+ /** True only when admission created an aggregate-budget reservation for this provider attempt. */
25
+ readonly reconcileLimitReservation?: boolean
26
+ }
27
+
28
+ export type RecoverAiModelCall = (input: RecoverAiModelCallInput) => Promise<void>
29
+
30
+ /** JSON-safe ledger input shared by durable recovery transports. */
31
+ export type AiModelCallRecordPayload = Omit<
32
+ RecordAiModelCallInput,
33
+ "projectId" | "usage" | "occurredAt" | "recordedAt"
34
+ > & {
35
+ readonly usage: {
36
+ readonly [Field in keyof RecordAiModelCallInput["usage"]]: RecordAiModelCallInput["usage"][Field]
37
+ }
38
+ readonly occurredAt: string
39
+ }
40
+
41
+ export interface AiModelCallAccountingPayload {
42
+ readonly estimate?: ModelCostEstimate
43
+ readonly cost: ModelCallCost
44
+ readonly route?: ModelRoute
45
+ readonly ratedAt: string
46
+ /** True when admission created a reservation that recovery must reconcile. */
47
+ readonly reconcileLimitReservation?: boolean
48
+ }
49
+
50
+ /** Transport identity is used only for recovery diagnostics, not accounting identity. */
51
+ export interface AiModelCallRecoveryRecord {
52
+ readonly id: string
53
+ readonly projectId: string
54
+ readonly payload: {
55
+ readonly record: AiModelCallRecordPayload
56
+ readonly accounting: AiModelCallAccountingPayload
57
+ }
58
+ }
@@ -0,0 +1,23 @@
1
+ import type { AiModelCallUsageInput } from "../../storage"
2
+ import type { ModelUsage } from "../events"
3
+
4
+ /** Map one provider-neutral model call into Sixb's durable accounting vocabulary. */
5
+ export function aiModelCallUsageFromModel(usage: ModelUsage): AiModelCallUsageInput {
6
+ return {
7
+ ...(usage.inputTokens === undefined ? {} : { inputTokens: usage.inputTokens }),
8
+ ...(usage.outputTokens === undefined ? {} : { outputTokens: usage.outputTokens }),
9
+ ...(usage.uncachedInputTokens === undefined
10
+ ? {}
11
+ : { uncachedInputTokens: usage.uncachedInputTokens }),
12
+ ...(usage.cacheReadInputTokens === undefined
13
+ ? {}
14
+ : { cacheReadInputTokens: usage.cacheReadInputTokens }),
15
+ ...(usage.cacheWriteInputTokens === undefined
16
+ ? {}
17
+ : { cacheWriteInputTokens: usage.cacheWriteInputTokens }),
18
+ ...(usage.textOutputTokens === undefined ? {} : { textOutputTokens: usage.textOutputTokens }),
19
+ ...(usage.reasoningOutputTokens === undefined
20
+ ? {}
21
+ : { reasoningOutputTokens: usage.reasoningOutputTokens }),
22
+ }
23
+ }