@sixb/core 0.1.8 → 0.1.9

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 (615) 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 +192 -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 +79 -88
  61. package/dist/bootstrap/index.js.map +1 -1
  62. package/dist/broker/index.js +8 -10
  63. package/dist/broker/index.js.map +1 -1
  64. package/dist/{chunk-k34z5rvh.js → chunk-0rdrecsb.js} +18 -18
  65. package/dist/{chunk-k34z5rvh.js.map → chunk-0rdrecsb.js.map} +2 -2
  66. package/dist/{chunk-q0k9nc5a.js → chunk-0w35wavj.js} +98 -98
  67. package/dist/{chunk-q0k9nc5a.js.map → chunk-0w35wavj.js.map} +2 -2
  68. package/dist/chunk-0y39rgsb.js +43 -0
  69. package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
  70. package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
  71. package/dist/chunk-17kfctj6.js.map +10 -0
  72. package/dist/{chunk-aa2pen2v.js → chunk-1enhpacz.js} +188 -175
  73. package/dist/{chunk-aa2pen2v.js.map → chunk-1enhpacz.js.map} +2 -2
  74. package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
  75. package/dist/{chunk-5gd7tpv6.js.map → chunk-2c4j899j.js.map} +2 -2
  76. package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
  77. package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
  78. package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
  79. package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
  80. package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
  81. package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
  82. package/dist/{chunk-8m5ejdpn.js → chunk-3f7veca0.js} +4 -4
  83. package/dist/{chunk-8m5ejdpn.js.map → chunk-3f7veca0.js.map} +2 -2
  84. package/dist/chunk-3frsnm7x.js +32 -0
  85. package/dist/chunk-3frsnm7x.js.map +11 -0
  86. package/dist/{chunk-n2w475r0.js → chunk-3tgwrcyh.js} +81 -81
  87. package/dist/{chunk-n2w475r0.js.map → chunk-3tgwrcyh.js.map} +2 -2
  88. package/dist/{chunk-mwsxn98e.js → chunk-52hbv0ak.js} +170 -170
  89. package/dist/{chunk-mwsxn98e.js.map → chunk-52hbv0ak.js.map} +4 -4
  90. package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
  91. package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
  92. package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
  93. package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
  94. package/dist/chunk-653vwrzr.js +39 -0
  95. package/dist/chunk-653vwrzr.js.map +10 -0
  96. package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
  97. package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
  98. package/dist/chunk-7apz6hg4.js +50 -0
  99. package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
  100. package/dist/chunk-7bs40fe1.js +218 -0
  101. package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
  102. package/dist/chunk-7zgecwy1.js +113 -0
  103. package/dist/chunk-7zgecwy1.js.map +10 -0
  104. package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
  105. package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
  106. package/dist/chunk-8vj0rjgs.js +165 -0
  107. package/dist/chunk-8vj0rjgs.js.map +15 -0
  108. package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
  109. package/dist/chunk-92vk7gta.js.map +10 -0
  110. package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
  111. package/dist/chunk-93csa55g.js.map +11 -0
  112. package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
  113. package/dist/chunk-98cw09sw.js.map +10 -0
  114. package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
  115. package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
  116. package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
  117. package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
  118. package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
  119. package/dist/{chunk-f26bck4t.js → chunk-an5tt9y0.js} +353 -353
  120. package/dist/{chunk-f26bck4t.js.map → chunk-an5tt9y0.js.map} +2 -2
  121. package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
  122. package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
  123. package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
  124. package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
  125. package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
  126. package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
  127. package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
  128. package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
  129. package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
  130. package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
  131. package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
  132. package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
  133. package/dist/chunk-d62kjtbg.js +7 -0
  134. package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
  135. package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
  136. package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
  137. package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
  138. package/dist/chunk-dmn70ztd.js.map +11 -0
  139. package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
  140. package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
  141. package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
  142. package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
  143. package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
  144. package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
  145. package/dist/{chunk-wtf06et8.js → chunk-emyyk7dx.js} +55 -55
  146. package/dist/{chunk-wtf06et8.js.map → chunk-emyyk7dx.js.map} +2 -2
  147. package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
  148. package/dist/chunk-f0rwz2vh.js.map +11 -0
  149. package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
  150. package/dist/chunk-f4w3yp4f.js.map +12 -0
  151. package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
  152. package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
  153. package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
  154. package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
  155. package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
  156. package/dist/chunk-g53f0e4j.js.map +15 -0
  157. package/dist/chunk-g6cke204.js +124 -0
  158. package/dist/chunk-g6cke204.js.map +10 -0
  159. package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
  160. package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
  161. package/dist/chunk-h1gfhhbh.js +602 -0
  162. package/dist/chunk-h1gfhhbh.js.map +18 -0
  163. package/dist/chunk-h3v76ams.js +32 -0
  164. package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
  165. package/dist/{chunk-xajtptbw.js → chunk-hpr1r6av.js} +1367 -418
  166. package/dist/chunk-hpr1r6av.js.map +44 -0
  167. package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
  168. package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
  169. package/dist/{chunk-w9tg6yyb.js → chunk-jjy0fhrn.js} +36 -36
  170. package/dist/{chunk-w9tg6yyb.js.map → chunk-jjy0fhrn.js.map} +2 -2
  171. package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
  172. package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
  173. package/dist/{chunk-ajnan18g.js → chunk-k3cqkkn2.js} +58 -55
  174. package/dist/chunk-k3cqkkn2.js.map +12 -0
  175. package/dist/{chunk-s5y30bc9.js → chunk-kxwa347f.js} +51 -49
  176. package/dist/{chunk-s5y30bc9.js.map → chunk-kxwa347f.js.map} +4 -4
  177. package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
  178. package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
  179. package/dist/{chunk-3z1qec12.js → chunk-m3z3x9v0.js} +107 -64
  180. package/dist/{chunk-3z1qec12.js.map → chunk-m3z3x9v0.js.map} +3 -3
  181. package/dist/{chunk-sbzzr4kx.js → chunk-mjbk2djy.js} +1061 -1195
  182. package/dist/{chunk-sbzzr4kx.js.map → chunk-mjbk2djy.js.map} +9 -15
  183. package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
  184. package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
  185. package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
  186. package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
  187. package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
  188. package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
  189. package/dist/{chunk-rv2hkwwa.js → chunk-ppytyr6w.js} +156 -179
  190. package/dist/{chunk-rv2hkwwa.js.map → chunk-ppytyr6w.js.map} +3 -5
  191. package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
  192. package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
  193. package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
  194. package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
  195. package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
  196. package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
  197. package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
  198. package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
  199. package/dist/{chunk-mth82m8t.js → chunk-qhcpj9wc.js} +77 -77
  200. package/dist/{chunk-mth82m8t.js.map → chunk-qhcpj9wc.js.map} +2 -2
  201. package/dist/{chunk-tpnd31c1.js → chunk-r29fxdhn.js} +12 -12
  202. package/dist/{chunk-tpnd31c1.js.map → chunk-r29fxdhn.js.map} +2 -2
  203. package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
  204. package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
  205. package/dist/{chunk-3xep5cjx.js → chunk-r4tfx1sf.js} +104 -86
  206. package/dist/chunk-r4tfx1sf.js.map +15 -0
  207. package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
  208. package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
  209. package/dist/chunk-s3csryxe.js +152 -0
  210. package/dist/chunk-s3csryxe.js.map +11 -0
  211. package/dist/chunk-s670k14v.js +60 -0
  212. package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
  213. package/dist/chunk-skz0hst3.js +788 -0
  214. package/dist/chunk-skz0hst3.js.map +19 -0
  215. package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
  216. package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
  217. package/dist/{chunk-v1xppd0y.js → chunk-vf691g1r.js} +60 -60
  218. package/dist/{chunk-v1xppd0y.js.map → chunk-vf691g1r.js.map} +2 -2
  219. package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
  220. package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
  221. package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
  222. package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
  223. package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
  224. package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
  225. package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
  226. package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
  227. package/dist/{chunk-8tsf6dmc.js → chunk-x57ycxq0.js} +204 -204
  228. package/dist/{chunk-8tsf6dmc.js.map → chunk-x57ycxq0.js.map} +2 -2
  229. package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
  230. package/dist/{chunk-gbejpkex.js → chunk-xfbydgzy.js} +26 -26
  231. package/dist/{chunk-gbejpkex.js.map → chunk-xfbydgzy.js.map} +2 -2
  232. package/dist/{chunk-gzasd5b6.js → chunk-xyr8kppc.js} +22 -22
  233. package/dist/{chunk-gzasd5b6.js.map → chunk-xyr8kppc.js.map} +2 -2
  234. package/dist/{chunk-h5vqbfmd.js → chunk-ypbtykv6.js} +117 -117
  235. package/dist/{chunk-h5vqbfmd.js.map → chunk-ypbtykv6.js.map} +3 -3
  236. package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
  237. package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
  238. package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
  239. package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
  240. package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
  241. package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
  242. package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
  243. package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
  244. package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
  245. package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
  246. package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
  247. package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
  248. package/dist/{chunk-xhy826cz.js → chunk-zcnq6105.js} +7 -7
  249. package/dist/{chunk-xhy826cz.js.map → chunk-zcnq6105.js.map} +2 -2
  250. package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
  251. package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
  252. package/dist/connectors/connections/internal.js +9 -10
  253. package/dist/connectors/connections/internal.js.map +1 -1
  254. package/dist/datasets/write.js +8 -12
  255. package/dist/datasets/write.js.map +1 -1
  256. package/dist/edits/index.js +7 -8
  257. package/dist/edits/index.js.map +1 -1
  258. package/dist/error-reporting/internal.js +22 -24
  259. package/dist/error-reporting/internal.js.map +1 -1
  260. package/dist/errors/internal.d.ts +1 -1
  261. package/dist/errors/internal.d.ts.map +1 -1
  262. package/dist/errors/internal.js +22 -24
  263. package/dist/errors/internal.js.map +1 -1
  264. package/dist/errors/redaction.d.ts +8 -0
  265. package/dist/errors/redaction.d.ts.map +1 -0
  266. package/dist/errors/types.d.ts +4 -0
  267. package/dist/errors/types.d.ts.map +1 -1
  268. package/dist/events/index.js +60 -63
  269. package/dist/events/index.js.map +1 -1
  270. package/dist/events/scope.js +4 -5
  271. package/dist/events/scope.js.map +1 -1
  272. package/dist/events/selectors/index.js +9 -10
  273. package/dist/events/selectors/index.js.map +1 -1
  274. package/dist/execution/agent.d.ts +3 -3
  275. package/dist/execution/agent.d.ts.map +1 -1
  276. package/dist/execution/agent.js +70 -82
  277. package/dist/execution/agent.js.map +1 -1
  278. package/dist/execution/durable.d.ts +1 -0
  279. package/dist/execution/durable.d.ts.map +1 -1
  280. package/dist/execution/primitive.d.ts +2 -0
  281. package/dist/execution/primitive.d.ts.map +1 -1
  282. package/dist/execution/primitive.js +63 -71
  283. package/dist/execution/primitive.js.map +3 -3
  284. package/dist/execution/request.d.ts +1 -0
  285. package/dist/execution/request.d.ts.map +1 -1
  286. package/dist/execution/request.js +65 -75
  287. package/dist/execution/request.js.map +3 -3
  288. package/dist/http/index.js +10 -11
  289. package/dist/http/index.js.map +1 -1
  290. package/dist/index.d.ts +14 -10
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +455 -477
  293. package/dist/index.js.map +1 -1
  294. package/dist/lake-storage/index.js +38 -42
  295. package/dist/lake-storage/index.js.map +1 -1
  296. package/dist/logging/index.d.ts +3 -4
  297. package/dist/logging/index.d.ts.map +1 -1
  298. package/dist/logging/index.js +18 -40
  299. package/dist/logging/index.js.map +1 -1
  300. package/dist/logging/internal.d.ts +5 -0
  301. package/dist/logging/internal.d.ts.map +1 -0
  302. package/dist/logging/internal.js +43 -0
  303. package/dist/logging/internal.js.map +9 -0
  304. package/dist/materialization/index.js +46 -49
  305. package/dist/materialization/index.js.map +1 -1
  306. package/dist/materializer/index.js +137 -145
  307. package/dist/materializer/index.js.map +1 -1
  308. package/dist/models/errors.d.ts +4 -0
  309. package/dist/models/errors.d.ts.map +1 -1
  310. package/dist/models/execution/binding.d.ts +9 -0
  311. package/dist/models/execution/binding.d.ts.map +1 -0
  312. package/dist/models/execution/errors.d.ts +9 -0
  313. package/dist/models/execution/errors.d.ts.map +1 -0
  314. package/dist/models/execution/index.d.ts +11 -0
  315. package/dist/models/execution/index.d.ts.map +1 -0
  316. package/dist/models/execution/index.js +55 -0
  317. package/dist/models/execution/index.js.map +9 -0
  318. package/dist/models/execution/model-call-accounting.d.ts +17 -0
  319. package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
  320. package/dist/models/execution/model-call-admission.d.ts +47 -0
  321. package/dist/models/execution/model-call-admission.d.ts.map +1 -0
  322. package/dist/models/execution/model-call-limits.d.ts +15 -0
  323. package/dist/models/execution/model-call-limits.d.ts.map +1 -0
  324. package/dist/models/execution/model-call-recorder.d.ts +40 -0
  325. package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
  326. package/dist/models/execution/model-call-recovery.d.ts +12 -0
  327. package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
  328. package/dist/models/execution/recovery-queue.d.ts +5 -0
  329. package/dist/models/execution/recovery-queue.d.ts.map +1 -0
  330. package/dist/models/execution/types.d.ts +44 -0
  331. package/dist/models/execution/types.d.ts.map +1 -0
  332. package/dist/models/execution/usage.d.ts +5 -0
  333. package/dist/models/execution/usage.d.ts.map +1 -0
  334. package/dist/models/execution.d.ts +6 -0
  335. package/dist/models/execution.d.ts.map +1 -0
  336. package/dist/models/generation-types.d.ts +40 -0
  337. package/dist/models/generation-types.d.ts.map +1 -0
  338. package/dist/models/index.d.ts +1 -0
  339. package/dist/models/index.d.ts.map +1 -1
  340. package/dist/models/index.js +42 -43
  341. package/dist/models/index.js.map +1 -1
  342. package/dist/models/language-model.d.ts +3 -0
  343. package/dist/models/language-model.d.ts.map +1 -1
  344. package/dist/models/output.d.ts +5 -0
  345. package/dist/models/output.d.ts.map +1 -0
  346. package/dist/models/resolve.d.ts +4 -0
  347. package/dist/models/resolve.d.ts.map +1 -0
  348. package/dist/objects/execution.d.ts.map +1 -1
  349. package/dist/objects/index.js +75 -87
  350. package/dist/objects/index.js.map +1 -1
  351. package/dist/objects/query/index.js +67 -76
  352. package/dist/objects/query/index.js.map +1 -1
  353. package/dist/ontology/index.d.ts +1 -2
  354. package/dist/ontology/index.d.ts.map +1 -1
  355. package/dist/ontology/index.js +62 -113
  356. package/dist/ontology/index.js.map +1 -1
  357. package/dist/ontology/internal.d.ts +7 -0
  358. package/dist/ontology/internal.d.ts.map +1 -1
  359. package/dist/ontology/internal.js +65 -116
  360. package/dist/ontology/internal.js.map +3 -4
  361. package/dist/pipelines/index.js +57 -66
  362. package/dist/pipelines/index.js.map +1 -1
  363. package/dist/projections/internal.js +58 -67
  364. package/dist/projections/internal.js.map +1 -1
  365. package/dist/query.d.ts +0 -1
  366. package/dist/query.d.ts.map +1 -1
  367. package/dist/query.js +11 -15
  368. package/dist/query.js.map +1 -1
  369. package/dist/queues/index.d.ts +2 -1
  370. package/dist/queues/index.d.ts.map +1 -1
  371. package/dist/queues/index.js +6 -7
  372. package/dist/queues/index.js.map +1 -1
  373. package/dist/queues/types.d.ts +3 -20
  374. package/dist/queues/types.d.ts.map +1 -1
  375. package/dist/rules/internal.js +4 -5
  376. package/dist/rules/internal.js.map +1 -1
  377. package/dist/runtime/create.d.ts +2 -1
  378. package/dist/runtime/create.d.ts.map +1 -1
  379. package/dist/runtime/host.d.ts +2 -1
  380. package/dist/runtime/host.d.ts.map +1 -1
  381. package/dist/runtime/internal.js +13 -14
  382. package/dist/runtime/internal.js.map +1 -1
  383. package/dist/runtime/sixb.d.ts +2 -0
  384. package/dist/runtime/sixb.d.ts.map +1 -1
  385. package/dist/sandboxes/errors.d.ts +4 -0
  386. package/dist/sandboxes/errors.d.ts.map +1 -1
  387. package/dist/sandboxes/index.d.ts +2 -2
  388. package/dist/sandboxes/index.d.ts.map +1 -1
  389. package/dist/sandboxes/index.js +14 -13
  390. package/dist/sandboxes/index.js.map +1 -1
  391. package/dist/sandboxes/sandbox.d.ts +35 -7
  392. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  393. package/dist/scheduler/index.js +9 -10
  394. package/dist/scheduler/index.js.map +1 -1
  395. package/dist/schedules/index.js +31 -33
  396. package/dist/schedules/index.js.map +1 -1
  397. package/dist/shares/internal.js +46 -54
  398. package/dist/shares/internal.js.map +2 -2
  399. package/dist/storage/action-runs/failure.js +7 -9
  400. package/dist/storage/action-runs/failure.js.map +1 -1
  401. package/dist/storage/action-runs/provider.js +4 -8
  402. package/dist/storage/action-runs/provider.js.map +1 -1
  403. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  404. package/dist/storage/agents/provider.js +26 -30
  405. package/dist/storage/agents/provider.js.map +1 -1
  406. package/dist/storage/agents/types.d.ts +0 -3
  407. package/dist/storage/agents/types.d.ts.map +1 -1
  408. package/dist/storage/ai-cost/attribution.d.ts +4 -0
  409. package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
  410. package/dist/storage/ai-cost/groups.d.ts +3 -0
  411. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  412. package/dist/storage/ai-cost/provider.d.ts +1 -0
  413. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  414. package/dist/storage/ai-cost/provider.js +30 -143
  415. package/dist/storage/ai-cost/provider.js.map +3 -4
  416. package/dist/storage/ai-cost/types.d.ts +15 -0
  417. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  418. package/dist/storage/ai-limits/enforcement.js +14 -16
  419. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  420. package/dist/storage/ai-limits/provider.js +56 -57
  421. package/dist/storage/ai-limits/provider.js.map +1 -1
  422. package/dist/storage/auth/in-memory.d.ts +1 -1
  423. package/dist/storage/auth/in-memory.d.ts.map +1 -1
  424. package/dist/storage/connector-connections/provider.js +34 -36
  425. package/dist/storage/connector-connections/provider.js.map +2 -2
  426. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  427. package/dist/storage/executions/provider.d.ts +2 -1
  428. package/dist/storage/executions/provider.d.ts.map +1 -1
  429. package/dist/storage/executions/provider.js +14 -11
  430. package/dist/storage/executions/provider.js.map +3 -3
  431. package/dist/storage/executions/types.d.ts +6 -2
  432. package/dist/storage/executions/types.d.ts.map +1 -1
  433. package/dist/storage/executions/validation.d.ts +2 -0
  434. package/dist/storage/executions/validation.d.ts.map +1 -1
  435. package/dist/storage/in-memory/index.d.ts.map +1 -1
  436. package/dist/storage/index.d.ts +6 -7
  437. package/dist/storage/index.d.ts.map +1 -1
  438. package/dist/storage/index.js +221 -256
  439. package/dist/storage/index.js.map +1 -1
  440. package/dist/storage/internal.d.ts +10 -0
  441. package/dist/storage/internal.d.ts.map +1 -0
  442. package/dist/storage/internal.js +47 -0
  443. package/dist/storage/internal.js.map +9 -0
  444. package/dist/storage/ontology/provider.js +105 -109
  445. package/dist/storage/ontology/provider.js.map +1 -1
  446. package/dist/storage/operation-scope.js +18 -19
  447. package/dist/storage/operation-scope.js.map +1 -1
  448. package/dist/storage/pipeline-runs/provider.js +4 -6
  449. package/dist/storage/pipeline-runs/provider.js.map +1 -1
  450. package/dist/storage/projection-runs/provider.js +66 -70
  451. package/dist/storage/projection-runs/provider.js.map +1 -1
  452. package/dist/storage/share-grants/provider.js +17 -19
  453. package/dist/storage/share-grants/provider.js.map +1 -1
  454. package/dist/storage/share-sessions/provider.js +14 -15
  455. package/dist/storage/share-sessions/provider.js.map +1 -1
  456. package/dist/storage/sync-runs/provider.js +4 -6
  457. package/dist/storage/sync-runs/provider.js.map +1 -1
  458. package/dist/storage/webhook-runs/provider.js +4 -6
  459. package/dist/storage/webhook-runs/provider.js.map +1 -1
  460. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  461. package/dist/storage/workflow-runs/provider.js +13 -21
  462. package/dist/storage/workflow-runs/provider.js.map +1 -1
  463. package/dist/storage/workflow-runs/types.d.ts +0 -3
  464. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  465. package/dist/syncs/index.js +55 -65
  466. package/dist/syncs/index.js.map +1 -1
  467. package/dist/testing/action-execution.d.ts +4 -1
  468. package/dist/testing/action-execution.d.ts.map +1 -1
  469. package/dist/testing/agent-execution.d.ts +1 -0
  470. package/dist/testing/agent-execution.d.ts.map +1 -1
  471. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  473. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  474. package/dist/testing/execution.d.ts +1 -0
  475. package/dist/testing/execution.d.ts.map +1 -1
  476. package/dist/testing/index.js +911 -799
  477. package/dist/testing/index.js.map +9 -9
  478. package/dist/testing/workflow-execution.d.ts +1 -0
  479. package/dist/testing/workflow-execution.d.ts.map +1 -1
  480. package/dist/webhooks/internal.js +51 -59
  481. package/dist/webhooks/internal.js.map +2 -2
  482. package/dist/workers/index.js +11 -13
  483. package/dist/workers/index.js.map +2 -2
  484. package/dist/workflows/failure.d.ts +2 -0
  485. package/dist/workflows/failure.d.ts.map +1 -1
  486. package/dist/workflows/index.js +135 -147
  487. package/dist/workflows/index.js.map +1 -1
  488. package/dist/workflows/request.d.ts.map +1 -1
  489. package/dist/workflows/run-dispatch.d.ts +0 -1
  490. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  491. package/dist/workflows/types.d.ts +2 -0
  492. package/dist/workflows/types.d.ts.map +1 -1
  493. package/package.json +48 -30
  494. package/src/actions/run-dispatch.ts +2 -6
  495. package/src/actions/types/context.ts +2 -0
  496. package/src/actions/validation.ts +2 -1
  497. package/src/agents/adapters.ts +4 -9
  498. package/src/agents/{context.ts → context/entries.ts} +4 -4
  499. package/src/agents/context/index.ts +15 -0
  500. package/src/agents/context-model.ts +1 -1
  501. package/src/agents/context-resolution.ts +1 -1
  502. package/src/agents/index.ts +4 -4
  503. package/src/agents/message.ts +1 -1
  504. package/src/agents/model-loop.ts +8 -0
  505. package/src/agents/request.ts +11 -26
  506. package/src/agents/streams/index.ts +18 -0
  507. package/src/agents/streams/internal.ts +19 -0
  508. package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
  509. package/src/agents/types.ts +1 -1
  510. package/src/agents/validation.ts +3 -7
  511. package/src/auth/index.ts +0 -1
  512. package/src/bootstrap/discovery.ts +81 -24
  513. package/src/bootstrap/index.ts +8 -1
  514. package/src/errors/internal.ts +90 -10
  515. package/src/errors/redaction.ts +98 -0
  516. package/src/errors/types.ts +4 -0
  517. package/src/execution/agent.ts +5 -3
  518. package/src/execution/durable.ts +11 -1
  519. package/src/execution/primitive.ts +5 -1
  520. package/src/execution/request.ts +3 -0
  521. package/src/index.ts +20 -18
  522. package/src/logging/index.ts +2 -33
  523. package/src/logging/internal.ts +43 -0
  524. package/src/models/errors.ts +12 -0
  525. package/src/models/execution/binding.ts +29 -0
  526. package/src/models/execution/errors.ts +18 -0
  527. package/src/models/execution/index.ts +26 -0
  528. package/src/models/execution/model-call-accounting.ts +211 -0
  529. package/src/models/execution/model-call-admission.ts +127 -0
  530. package/src/models/execution/model-call-limits.ts +135 -0
  531. package/src/models/execution/model-call-recorder.ts +235 -0
  532. package/src/models/execution/model-call-recovery.ts +125 -0
  533. package/src/models/execution/recovery-queue.ts +31 -0
  534. package/src/models/execution/types.ts +58 -0
  535. package/src/models/execution/usage.ts +23 -0
  536. package/src/models/execution.ts +207 -0
  537. package/src/models/generation-types.ts +50 -0
  538. package/src/models/index.ts +8 -0
  539. package/src/models/language-model.ts +3 -0
  540. package/src/models/output.ts +45 -0
  541. package/src/models/resolve.ts +27 -0
  542. package/src/objects/execution.ts +1 -1
  543. package/src/ontology/index.ts +1 -2
  544. package/src/ontology/internal.ts +35 -0
  545. package/src/projections/run-dispatch.ts +1 -0
  546. package/src/query.ts +0 -1
  547. package/src/queues/index.ts +4 -2
  548. package/src/queues/types.ts +6 -25
  549. package/src/runtime/create.ts +2 -1
  550. package/src/runtime/host.ts +2 -1
  551. package/src/runtime/sixb.ts +4 -0
  552. package/src/sandboxes/errors.ts +5 -0
  553. package/src/sandboxes/index.ts +3 -0
  554. package/src/sandboxes/sandbox.ts +35 -7
  555. package/src/storage/agents/in-memory.ts +0 -3
  556. package/src/storage/agents/types.ts +0 -3
  557. package/src/storage/ai-cost/analytics.ts +1 -1
  558. package/src/storage/ai-cost/attribution.ts +15 -0
  559. package/src/storage/ai-cost/groups.ts +5 -1
  560. package/src/storage/ai-cost/provider.ts +1 -0
  561. package/src/storage/ai-cost/types.ts +7 -0
  562. package/src/storage/auth/in-memory.ts +1 -1
  563. package/src/storage/executions/in-memory.ts +4 -9
  564. package/src/storage/executions/provider.ts +4 -0
  565. package/src/storage/executions/types.ts +6 -2
  566. package/src/storage/executions/validation.ts +32 -0
  567. package/src/storage/in-memory/index.ts +16 -1
  568. package/src/storage/index.ts +3 -29
  569. package/src/storage/internal.ts +20 -0
  570. package/src/storage/workflow-runs/in-memory.ts +0 -2
  571. package/src/storage/workflow-runs/types.ts +0 -3
  572. package/src/testing/action-execution.ts +9 -2
  573. package/src/testing/agent-execution.ts +3 -0
  574. package/src/testing/agent-storage-contract.ts +0 -5
  575. package/src/testing/ai-model-call-groups-contract.ts +74 -2
  576. package/src/testing/execution-storage-contract.ts +59 -1
  577. package/src/testing/execution.ts +6 -0
  578. package/src/testing/workflow-execution.ts +4 -0
  579. package/src/workflows/failure.ts +62 -1
  580. package/src/workflows/request.ts +0 -9
  581. package/src/workflows/run-dispatch.ts +0 -3
  582. package/src/workflows/types.ts +2 -0
  583. package/src/workflows/validation.ts +1 -1
  584. package/dist/agents/context.d.ts.map +0 -1
  585. package/dist/agents/context.js +0 -23
  586. package/dist/agents/streams.d.ts.map +0 -1
  587. package/dist/agents/streams.js +0 -55
  588. package/dist/chunk-08m3b6w8.js +0 -32
  589. package/dist/chunk-19jp6g9d.js.map +0 -11
  590. package/dist/chunk-2xns679x.js.map +0 -11
  591. package/dist/chunk-3xep5cjx.js.map +0 -15
  592. package/dist/chunk-407j3msh.js +0 -60
  593. package/dist/chunk-4qfkag59.js +0 -1568
  594. package/dist/chunk-4qfkag59.js.map +0 -20
  595. package/dist/chunk-5e3pq99w.js.map +0 -11
  596. package/dist/chunk-7y0f6rf1.js.map +0 -10
  597. package/dist/chunk-ajnan18g.js.map +0 -12
  598. package/dist/chunk-c15dr03f.js +0 -43
  599. package/dist/chunk-d8qkxt2v.js.map +0 -10
  600. package/dist/chunk-jq43kdvk.js +0 -50
  601. package/dist/chunk-k522z7v6.js.map +0 -10
  602. package/dist/chunk-p03r0h5s.js.map +0 -16
  603. package/dist/chunk-p1rzczbt.js +0 -218
  604. package/dist/chunk-rafagrwr.js.map +0 -11
  605. package/dist/chunk-xajtptbw.js.map +0 -40
  606. package/dist/chunk-y64skrwp.js +0 -19
  607. package/dist/chunk-zcnhxkvd.js +0 -7
  608. package/dist/logging/types.js +0 -27
  609. package/dist/logging/types.js.map +0 -9
  610. /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
  611. /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
  612. /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
  613. /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
  614. /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
  615. /package/dist/{chunk-z4ccwbkz.js.map → chunk-x9v4cx1d.js.map} +0 -0
@@ -0,0 +1,50 @@
1
+ import type { InferSchemaOrRef, SchemaOrRef } from "../ontology"
2
+ import type { ModelFinishReason, ModelUsage } from "./events"
3
+ import type { LanguageModel, ModelReasoning } from "./language-model"
4
+ import type { ModelMessage } from "./messages"
5
+ import type { ModelCallCost } from "./pricing"
6
+
7
+ export type LanguageModelOutputShape = Readonly<Record<string, SchemaOrRef>>
8
+
9
+ export type InferLanguageModelOutput<TShape extends LanguageModelOutputShape> =
10
+ string extends keyof TShape
11
+ ? Record<string, unknown>
12
+ : { -readonly [K in keyof TShape]: InferSchemaOrRef<TShape[K]> }
13
+
14
+ export type LanguageModelGenerateInput<
15
+ TShape extends LanguageModelOutputShape | undefined = undefined,
16
+ > = {
17
+ readonly instructions?: string
18
+ readonly model?: LanguageModel
19
+ readonly output?: TShape
20
+ readonly maxOutputTokens?: number
21
+ readonly reasoning?: ModelReasoning
22
+ readonly caching?: "auto" | "off"
23
+ readonly signal?: AbortSignal
24
+ } & (undefined extends TShape ? unknown : { readonly output: TShape }) &
25
+ (
26
+ | { readonly prompt: string; readonly messages?: never }
27
+ | { readonly messages: readonly ModelMessage[]; readonly prompt?: never }
28
+ )
29
+
30
+ export interface LanguageModelGenerateResult<TOutput = string> {
31
+ readonly output: TOutput
32
+ readonly usage: ModelUsage
33
+ readonly cost: ModelCallCost
34
+ readonly finishReason: ModelFinishReason
35
+ readonly callId: string
36
+ }
37
+
38
+ export interface LanguageModelsRuntime {
39
+ generate<const TShape extends LanguageModelOutputShape | undefined = undefined>(
40
+ input: LanguageModelGenerateInput<TShape>
41
+ ): Promise<
42
+ LanguageModelGenerateResult<
43
+ TShape extends LanguageModelOutputShape ? InferLanguageModelOutput<TShape> : string
44
+ >
45
+ >
46
+ }
47
+
48
+ export interface ModelsRuntime {
49
+ readonly language: LanguageModelsRuntime
50
+ }
@@ -35,6 +35,14 @@ export type {
35
35
  ModelUsage,
36
36
  } from "./events"
37
37
  export { normalizeModelProviderIds } from "./events"
38
+ export type {
39
+ InferLanguageModelOutput,
40
+ LanguageModelGenerateInput,
41
+ LanguageModelGenerateResult,
42
+ LanguageModelOutputShape,
43
+ LanguageModelsRuntime,
44
+ ModelsRuntime,
45
+ } from "./generation-types"
38
46
  export type {
39
47
  LanguageModel,
40
48
  LanguageModelProvider,
@@ -43,6 +43,7 @@ export interface ModelCapabilities {
43
43
  readonly reasoning?: false | ModelReasoningCapabilities
44
44
  readonly localTools?: boolean
45
45
  readonly parallelToolCalls?: boolean
46
+ /** `undefined` is unknown, not an assertion that schema-constrained output is unsupported. */
46
47
  readonly nativeStructuredOutput?: boolean
47
48
  readonly providerExecutedTools?: boolean
48
49
  }
@@ -90,6 +91,8 @@ export interface LanguageModel {
90
91
  * retry with an offline snapshot. Invalid definitions and other resolver errors remain fatal.
91
92
  */
92
93
  resolve?(options?: { readonly offline?: boolean }): Promise<LanguageModel>
94
+ /** Validate known output constraints without inference. Success does not certify endpoint support. */
95
+ validateResponseFormat?(format: ModelResponseFormat): void | Promise<void>
93
96
  stream(request: LanguageModelRequest): Promise<LanguageModelStream>
94
97
  }
95
98
 
@@ -0,0 +1,45 @@
1
+ import { assertJsonObject } from "../json"
2
+ import { schemaRecordToJsonSchema } from "../ontology/json-schema"
3
+ import { isObjectRefSchema, validateSchemaOrRefValue } from "../ontology/refs"
4
+ import type { ValueType } from "../ontology/types"
5
+ import { isRecord } from "../ontology/validation"
6
+ import { coerceSchemaValueToTyped, normalizeSchemaValue } from "../ontology/validation/normalize"
7
+ import type { LanguageModelOutputShape } from "./generation-types"
8
+ import type { ModelOutput } from "./tools"
9
+
10
+ export function languageModelOutput(
11
+ shape: LanguageModelOutputShape,
12
+ valueTypesById: ReadonlyMap<string, ValueType>
13
+ ): ModelOutput<Record<string, unknown>> {
14
+ if (!isRecord(shape)) throw new TypeError("[SixbModels] output must be a Sixb schema record.")
15
+ const schema = schemaRecordToJsonSchema({ shape, valueTypesById })
16
+ assertJsonObject(schema, "model output schema")
17
+ return {
18
+ name: "sixb_output",
19
+ schema,
20
+ validate(value) {
21
+ if (!isRecord(value)) throw new TypeError("[SixbModels] Output must be an object.")
22
+ for (const key of Object.keys(value)) {
23
+ if (!Object.hasOwn(shape, key)) {
24
+ throw new TypeError(`[SixbModels] Unknown output field '${key}'.`)
25
+ }
26
+ }
27
+ return Object.fromEntries(
28
+ Object.entries(shape).map(([key, field]) => {
29
+ if (!Object.hasOwn(value, key)) {
30
+ throw new TypeError(`[SixbModels] Missing output field '${key}'.`)
31
+ }
32
+ validateSchemaOrRefValue(field, value[key], `output.${key}`, valueTypesById)
33
+ const output = isObjectRefSchema(field)
34
+ ? value[key]
35
+ : coerceSchemaValueToTyped(
36
+ field,
37
+ normalizeSchemaValue(field, value[key], `output.${key}`, valueTypesById),
38
+ valueTypesById
39
+ )
40
+ return [key, output]
41
+ })
42
+ )
43
+ },
44
+ }
45
+ }
@@ -0,0 +1,27 @@
1
+ import { defineLanguageModel } from "./definitions"
2
+ import { ModelCatalogUnavailableError } from "./errors"
3
+ import type { LanguageModel } from "./language-model"
4
+
5
+ /** Pin operational metadata once, falling back offline only when the catalog is unavailable. */
6
+ export async function resolveLanguageModel(binding: LanguageModel): Promise<LanguageModel> {
7
+ const offline =
8
+ binding.definition.contextWindow !== undefined ||
9
+ binding.definition.maxInputTokens !== undefined
10
+ let model: LanguageModel
11
+ try {
12
+ model = (await binding.resolve?.({ offline })) ?? binding
13
+ } catch (cause) {
14
+ if (offline || !(cause instanceof ModelCatalogUnavailableError)) throw cause
15
+ model = (await binding.resolve?.({ offline: true })) ?? binding
16
+ }
17
+ const definition = defineLanguageModel(model.definition)
18
+ if (
19
+ definition.providerId !== binding.providerId ||
20
+ definition.modelId !== binding.modelId ||
21
+ model.providerId !== binding.providerId ||
22
+ model.modelId !== binding.modelId
23
+ ) {
24
+ throw new TypeError("[SixbModels] Resolved model identity does not match the selected model.")
25
+ }
26
+ return model
27
+ }
@@ -5,8 +5,8 @@ import {
5
5
  getAuthorizedOntologyView,
6
6
  } from "../execution/authorized-object-reader"
7
7
  import type { ValueType } from "../ontology"
8
- import { assertObjectTypeRegistered } from "../ontology"
9
8
  import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
9
+ import { assertObjectTypeRegistered } from "../ontology/validation/properties"
10
10
  import { shareOntologyMutationRuntime } from "../runtime/ontology-mutations"
11
11
  import type {
12
12
  ListResult,
@@ -25,7 +25,7 @@ export type {
25
25
  LinkPathSelectionMode,
26
26
  } from "./link-path-selection"
27
27
  export type { InferSchemaOrRef, ObjectRef, ObjectRefSchema, SchemaOrRef } from "./refs"
28
- export { isObjectRefSchema, objectRef, ref, validateSchemaOrRefValue } from "./refs"
28
+ export { isObjectRefSchema, objectRef, ref } from "./refs"
29
29
  export type {
30
30
  LinkToken,
31
31
  LinkTokenMap,
@@ -88,4 +88,3 @@ export {
88
88
  valueTypeRef,
89
89
  } from "./builders"
90
90
  export * from "./units"
91
- export * from "./validation"
@@ -1,2 +1,37 @@
1
1
  export { schemaFieldsToJsonSchema, schemaRecordToJsonSchema } from "./json-schema"
2
+ export { validateSchemaOrRefValue } from "./refs"
2
3
  export { createLinkTokenMap, createPropertyTokenMap } from "./tokens"
4
+ export {
5
+ assertLinkTargetType,
6
+ assertTargetTypeCompatible,
7
+ normalizeLinkProperties,
8
+ validateLinkProperties,
9
+ } from "./validation/links"
10
+ export {
11
+ coerceSchemaValueToTyped,
12
+ normalizeObjectProperties,
13
+ normalizeSchemaValue,
14
+ } from "./validation/normalize"
15
+ export {
16
+ assertKnownProperties,
17
+ assertLinkTokenBelongsToObjectType,
18
+ assertObjectTypeRegistered,
19
+ assertPropertyTokenBelongsToObjectType,
20
+ assertRequiredProperties,
21
+ validateObjectProperties,
22
+ validatePrimaryProperties,
23
+ validatePropertyDefinitions,
24
+ validatePropertyValue,
25
+ } from "./validation/properties"
26
+ export { validateQueryMetadata } from "./validation/query"
27
+ export {
28
+ isRecord,
29
+ resolveValueTypeRef,
30
+ resolveValueTypeSchema,
31
+ validateSchemaValue,
32
+ } from "./validation/schema"
33
+ export {
34
+ assertTelemetryProperty,
35
+ resolveSemanticType,
36
+ validateTelemetryUnit,
37
+ } from "./validation/telemetry"
@@ -144,6 +144,7 @@ async function persistProjectionRun(input: {
144
144
  versionId: input.identity.datasetVersion.versionId,
145
145
  },
146
146
  correlationId: input.producerExecution?.correlationId ?? input.runId,
147
+ requesterGroupIds: input.producerExecution?.requesterGroupIds,
147
148
  ...(input.producerExecution?.requestedBy === undefined
148
149
  ? {}
149
150
  : { requestedBy: input.producerExecution.requestedBy }),
package/src/query.ts CHANGED
@@ -40,7 +40,6 @@ export type {
40
40
  ObjectQueryTraverse,
41
41
  ObjectQueryVector,
42
42
  } from "./objects/query/ir"
43
- export { normalizeObjectQuery } from "./objects/query/normalize"
44
43
  export { createObjectQueryBuilder } from "./objects/sdk/query-builder"
45
44
  export type {
46
45
  ObjectQueryExecutor,
@@ -7,14 +7,16 @@ export type {
7
7
  ModelRoute,
8
8
  } from "../models"
9
9
  export type { ModelProviderIds } from "../models/events"
10
+ export type {
11
+ AiModelCallAccountingPayload,
12
+ AiModelCallRecordPayload,
13
+ } from "../models/execution/types"
10
14
  export type { ProviderScope } from "../provider-scope"
11
15
  export { QueueError } from "./errors"
12
16
  export { InMemoryQueues } from "./in-memory"
13
17
  export type {
14
18
  ActionQueueJobFailureCode,
15
19
  ActionRunRequestedQueueJob,
16
- AgentAiUsageAccountingPayload,
17
- AgentAiUsageRecordPayload,
18
20
  AgentAiUsageRecordRequestedQueueJob,
19
21
  AgentQueueJob,
20
22
  AgentQueueJobFailureCode,
@@ -1,11 +1,13 @@
1
1
  import type { SixbErrorCode, SixbFailure } from "../errors/types"
2
2
  import type { JsonValue } from "../json"
3
- import type { ModelCallCost, ModelCostEstimate, ModelRoute } from "../models"
3
+ import type {
4
+ AiModelCallAccountingPayload,
5
+ AiModelCallRecordPayload,
6
+ } from "../models/execution/types"
4
7
  import type { ProjectionRunFailureCode } from "../projections/types"
5
8
  import type { ProviderScope } from "../provider-scope"
6
9
  import type { ActionRunFailureCode } from "../storage/action-runs/types"
7
10
  import type { AgentRunFailureCode } from "../storage/agents/types"
8
- import type { RecordAiModelCallInput } from "../storage/ai-usage"
9
11
  import type { PipelineRunFailureCode } from "../storage/pipeline-runs/types"
10
12
  import type { SyncRunFailureCode } from "../storage/sync-runs/types"
11
13
  import type { WorkflowRunFailureCode } from "../storage/workflow-runs/types"
@@ -210,33 +212,12 @@ export interface AgentWorkflowNodeRequestedQueueJob
210
212
  }
211
213
  > {}
212
214
 
213
- /** JSON-safe representation of one model-call ledger append awaiting durable recovery. */
214
- export type AgentAiUsageRecordPayload = Omit<
215
- RecordAiModelCallInput,
216
- "projectId" | "usage" | "occurredAt" | "recordedAt"
217
- > & {
218
- readonly usage: {
219
- readonly [Field in keyof RecordAiModelCallInput["usage"]]: RecordAiModelCallInput["usage"][Field]
220
- }
221
- readonly occurredAt: string
222
- }
223
-
224
- export interface AgentAiUsageAccountingPayload {
225
- readonly estimate?: ModelCostEstimate
226
- readonly cost: ModelCallCost
227
- readonly route?: ModelRoute
228
- readonly ratedAt: string
229
- /** Absent on pre-limit jobs; those model calls did not create a reservation. */
230
- readonly reconcileLimitReservation?: boolean
231
- }
232
-
233
215
  export interface AgentAiUsageRecordRequestedQueueJob
234
216
  extends QueueJob<
235
217
  "agent.ai-usage.record.requested",
236
218
  {
237
- readonly record: AgentAiUsageRecordPayload
238
- /** Absent only on legacy jobs that predate atomic valuation recovery. */
239
- readonly accounting?: AgentAiUsageAccountingPayload
219
+ readonly record: AiModelCallRecordPayload
220
+ readonly accounting: AiModelCallAccountingPayload
240
221
  }
241
222
  > {}
242
223
 
@@ -10,7 +10,8 @@ import type { ConnectorConnectionOptions, ConnectorDefinition } from "../connect
10
10
  import type { DatasetDefinition } from "../datasets"
11
11
  import type { SixbErrorHandler } from "../error-reporting/types"
12
12
  import type { LakeStorage } from "../lake-storage"
13
- import type { LoggerProvider, ObservabilityOptions } from "../logging"
13
+ import type { LoggerProvider } from "../logging"
14
+ import type { ObservabilityOptions } from "../logging/service"
14
15
  import type { OntologyMaintenanceOptions } from "../maintenance"
15
16
  import type { ModelCatalogInput } from "../models"
16
17
  import type { PipelineDefinition } from "../pipelines/types"
@@ -43,7 +43,8 @@ import {
43
43
  import { createAuthorizedObjectReader } from "../execution/authorized-object-reader"
44
44
  import type { ExecutionScope } from "../execution/types"
45
45
  import type { LakeStorage } from "../lake-storage"
46
- import { type LoggerProvider, LoggingService, type ObservabilityOptions } from "../logging"
46
+ import type { LoggerProvider } from "../logging"
47
+ import { LoggingService, type ObservabilityOptions } from "../logging/service"
47
48
  import {
48
49
  OntologyMaintenance,
49
50
  type OntologyMaintenanceHandle,
@@ -16,6 +16,8 @@ import { assertAuthorizedObjectReaderBinding } from "../execution/authorized-obj
16
16
  import type { LakeStorage } from "../lake-storage/types"
17
17
  import { createLogsRuntime, type LogsRuntime } from "../logging/execution"
18
18
  import type { LoggingService } from "../logging/service"
19
+ import { createModelsRuntime } from "../models/execution"
20
+ import type { ModelsRuntime } from "../models/generation-types"
19
21
  import { createObjectsRuntime, type ObjectsRuntime } from "../objects/execution"
20
22
  import { createPipelinesRuntime, type PipelinesRuntime } from "../pipelines/execution"
21
23
  import { createProjectionsRuntime, type ProjectionsRuntime } from "../projections/execution"
@@ -42,6 +44,7 @@ export interface Sixb<
42
44
  readonly projections: ProjectionsRuntime
43
45
  readonly rules: RulesRuntime
44
46
  readonly agent: AgentRuntime
47
+ readonly models: ModelsRuntime
45
48
  readonly aiUsage: AiUsageRuntime
46
49
  readonly events: EventsRuntime
47
50
  readonly logs: LogsRuntime
@@ -118,6 +121,7 @@ function createExecutionFacades<TOntologySources extends readonly OntologySource
118
121
  projections: createProjectionsRuntime(runtime, dependencies.definitions.projections),
119
122
  rules: createRulesRuntime(runtime, dependencies.definitions.rules),
120
123
  agent: createAgentRuntime(runtime, execution, dependencies.definitions.models),
124
+ models: createModelsRuntime(runtime, execution, dependencies.definitions.models),
121
125
  aiUsage: createAiUsageRuntime(runtime, dependencies.definitions.security),
122
126
  events: createEventsRuntime(runtime),
123
127
  logs: createLogsRuntime(runtime, dependencies.logging),
@@ -6,6 +6,11 @@ export class SandboxError extends Error {
6
6
  readonly name: string = "SandboxError"
7
7
  }
8
8
 
9
+ /** The named sandbox or its saved filesystem no longer exists. Explicit recreation is required. */
10
+ export class SandboxStateUnavailableError extends SandboxError {
11
+ override readonly name = "SandboxStateUnavailableError"
12
+ }
13
+
9
14
  /** runCommand / stop / destroy called after the sandbox is stopped or destroyed. */
10
15
  export class SandboxNotRunningError extends SandboxError {
11
16
  override readonly name = "SandboxNotRunningError"
@@ -2,6 +2,7 @@ export {
2
2
  SandboxError,
3
3
  SandboxIsolationUnavailableError,
4
4
  SandboxNotRunningError,
5
+ SandboxStateUnavailableError,
5
6
  SandboxTimeoutError,
6
7
  } from "./errors"
7
8
  export type { ExecOptions } from "./exec"
@@ -9,11 +10,13 @@ export { exec } from "./exec"
9
10
  export type {
10
11
  CommandResult,
11
12
  CreateSandboxOptions,
13
+ ResumeSandboxOptions,
12
14
  RunCommandOptions,
13
15
  Sandbox,
14
16
  SandboxFactory,
15
17
  SandboxFileRecord,
16
18
  SandboxNetworkPolicy,
17
19
  SandboxNetworkTarget,
20
+ SandboxSessionOptions,
18
21
  SandboxStatus,
19
22
  } from "./sandbox"
@@ -72,17 +72,25 @@ export interface SandboxNetworkTarget {
72
72
  readonly origin: string
73
73
  }
74
74
 
75
- /**
76
- * Options accepted by every SandboxFactory.create. Provider-specific factories
77
- * may extend this type with their own options.
78
- */
79
- export interface CreateSandboxOptions {
75
+ /** Current execution defaults, supplied on both creation and resume, never recovered from files. */
76
+ export interface SandboxSessionOptions {
80
77
  readonly workingDirectory?: string
81
78
  readonly env?: Readonly<Record<string, string>>
82
79
  readonly timeout?: number
83
80
  readonly network?: SandboxNetworkPolicy
84
81
  }
85
82
 
83
+ /** Options accepted by every SandboxFactory.create. */
84
+ export interface CreateSandboxOptions extends SandboxSessionOptions {
85
+ /** Create new named state; reject an existing name or unsupported persistence before provisioning. */
86
+ readonly persistence?: { readonly name: string }
87
+ }
88
+
89
+ /** Resume changes execution defaults, not the identity or creation configuration of saved state. */
90
+ export interface ResumeSandboxOptions extends SandboxSessionOptions {
91
+ readonly persistence?: never
92
+ }
93
+
86
94
  export interface Sandbox {
87
95
  readonly id: string
88
96
  /** Provider id matching the package suffix, for example "local". */
@@ -109,16 +117,36 @@ export interface Sandbox {
109
117
  */
110
118
  writeFiles(files: readonly SandboxFileRecord[]): Promise<void>
111
119
 
112
- /** Mark the sandbox stopped; subsequent runCommand calls reject. Idempotent. */
120
+ /** Stop this session; subsequent operations reject. Idempotent.
121
+ * Persistent handles confirm preservation and share the outcome, including failure,
122
+ * across repeated/concurrent calls.
123
+ */
113
124
  stop(): Promise<void>
114
- /** Stop and reclaim any provider-side resources. Idempotent. */
125
+ /** Stop and reclaim resources, permanently deleting named state when persistent. Idempotent.
126
+ * Requires exclusive lifecycle ownership, including after stop(); never routine persistent teardown.
127
+ */
115
128
  destroy(): Promise<void>
116
129
  }
117
130
 
118
131
  /**
119
132
  * What createSixb({ sandboxes }) accepts. Provider-specific factories hold
120
133
  * their defaults set once and expose create(options) for each run.
134
+ * Persistent files are retention-bound, not a durable file store or a distributed lock.
135
+ * Callers own namespacing and must serialize the entire create/resume/use/stop/destroy lifecycle.
136
+ * Credentials and current authority must be supplied again, never inferred from saved files.
121
137
  */
122
138
  export interface SandboxFactory {
139
+ /** Create an ephemeral sandbox unless persistence is requested. Existing names must fail,
140
+ * never attach or overwrite. Unsupported providers must reject persistence before provisioning.
141
+ * A persistent handle targets one session; operations must not automatically resume another VM.
142
+ */
123
143
  create(options?: CreateSandboxOptions): Promise<Sandbox>
144
+ /**
145
+ * Present only when named persistent creation and resume are supported.
146
+ * Resume an existing, stopped sandbox. Missing/expired state throws SandboxStateUnavailableError;
147
+ * it must never create an empty replacement. An already running sandbox must be rejected.
148
+ * Returns a handle bound to the resumed session, with no automatic resume on use.
149
+ * Runtime options must be provided again; no creation settings or persistence option are accepted.
150
+ */
151
+ resume?(name: string, options?: ResumeSandboxOptions): Promise<Sandbox>
124
152
  }
@@ -1,6 +1,5 @@
1
1
  import { AGENT_MESSAGE_CONTENT_VERSION } from "../../agents/message"
2
2
  import { principalsEqual } from "../../auth"
3
- import { normalizeRequesterGroupIds } from "../../auth/attribution"
4
3
  import { parseSixbFailure } from "../../errors/internal"
5
4
  import type { SixbFailure } from "../../errors/types"
6
5
  import type { ExecutionStorage } from "../executions"
@@ -234,7 +233,6 @@ class InMemoryAgentRunStore implements AgentRunStore {
234
233
  threadId: input.threadId,
235
234
  triggerMessageId: input.triggerMessageId,
236
235
  spec: clone(input.spec),
237
- requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),
238
236
  status: "queued",
239
237
  attempt: 0,
240
238
  createdAt,
@@ -330,7 +328,6 @@ class InMemoryAgentRunStore implements AgentRunStore {
330
328
  parentRunId: input.parentRunId,
331
329
  spawnKey: input.spawnKey,
332
330
  spec: clone(input.spec),
333
- requesterGroupIds: clone(parent.requesterGroupIds),
334
331
  status: "queued",
335
332
  attempt: 0,
336
333
  createdAt: new Date(input.createdAt ?? new Date()),
@@ -148,8 +148,6 @@ interface AgentRunRecordBase {
148
148
  readonly id: string
149
149
  readonly projectId: string
150
150
  readonly executionId: string
151
- /** Durable group memberships snapshotted when the run was admitted. */
152
- readonly requesterGroupIds: readonly string[]
153
151
  readonly status: AgentRunStatus
154
152
  readonly modelId?: string
155
153
  /** Why the run ended (our own SDK-independent enum). */
@@ -215,7 +213,6 @@ export interface CreateAgentRunInput {
215
213
  readonly threadId: string
216
214
  readonly triggerMessageId: string
217
215
  readonly spec: ConversationAgentRunSpec
218
- readonly requesterGroupIds: readonly string[]
219
216
  readonly createdAt?: Date
220
217
  }
221
218
 
@@ -168,7 +168,7 @@ export function buildAiAccountingOverview(
168
168
  item
169
169
  )
170
170
  }
171
- if (item.attribution?.kind === "workflowAgent") {
171
+ if (item.attribution?.kind === "workflowAgent" || item.attribution?.kind === "workflow") {
172
172
  appendGrouped(workflowItems, item.attribution.workflowId, item)
173
173
  }
174
174
  }
@@ -0,0 +1,15 @@
1
+ import type { AiAccountingAttribution } from "./types"
2
+
3
+ /** Direct calls are identified by durable provenance, even when their run has been removed. */
4
+ export function directModelCallAttribution(
5
+ kind: string | null,
6
+ id: string | null,
7
+ primitiveId: string | null
8
+ ): AiAccountingAttribution | undefined {
9
+ if (!id) return undefined
10
+ if (kind === "request") return { kind, requestId: id }
11
+ if (kind === "action" && primitiveId) return { kind, actionId: primitiveId, actionRunId: id }
12
+ if (kind === "workflow" && primitiveId)
13
+ return { kind, workflowId: primitiveId, workflowRunId: id }
14
+ return undefined
15
+ }
@@ -1,5 +1,6 @@
1
1
  import type { AiAccountingRecordSetItem } from "./analytics"
2
2
  import { aiAccountingItemMatchesQuery, normalizeAiModelCallAccountingQuery } from "./analytics"
3
+ import { directModelCallAttribution } from "./attribution"
3
4
  import type {
4
5
  AiAccountingAttribution,
5
6
  AiBillingIdentity,
@@ -56,12 +57,15 @@ export interface AiModelCallGroupRow {
56
57
  readonly workflow_node_run_id: string | null
57
58
  readonly workflow_id: string | null
58
59
  readonly workflow_run_id: string | null
60
+ readonly executor_kind: string | null
61
+ readonly executor_id: string | null
62
+ readonly primitive_id: string | null
59
63
  }
60
64
 
61
65
  export function aiModelCallGroupFragmentFromRow(
62
66
  row: AiModelCallGroupRow
63
67
  ): AiModelCallGroupFragment {
64
- let attribution: AiAccountingAttribution | undefined
68
+ let attribution = directModelCallAttribution(row.executor_kind, row.executor_id, row.primitive_id)
65
69
  if (row.root_agent_run_id && row.root_thread_id) {
66
70
  attribution = {
67
71
  kind: "agent",
@@ -12,6 +12,7 @@ export {
12
12
  normalizeAiModelCallAccountingQuery,
13
13
  toAccountingItem,
14
14
  } from "./analytics"
15
+ export { directModelCallAttribution } from "./attribution"
15
16
  export type { AiModelCallCostDetails } from "./codec"
16
17
  export { aiModelCallCostDetails, parseAiModelCallCostDetails } from "./codec"
17
18
  export type {
@@ -181,7 +181,14 @@ export interface AiAccountingOverview {
181
181
  readonly workflows: readonly AiAccountingWorkflowBreakdown[]
182
182
  }
183
183
 
184
+ /**
185
+ * The execution that made the model call, rather than the request that triggered its work.
186
+ * `request` identifies a direct call from a request-bound SDK, outside an action or workflow.
187
+ */
184
188
  export type AiAccountingAttribution =
189
+ | { readonly kind: "request"; readonly requestId: string }
190
+ | { readonly kind: "action"; readonly actionId: string; readonly actionRunId: string }
191
+ | { readonly kind: "workflow"; readonly workflowId: string; readonly workflowRunId: string }
185
192
  | {
186
193
  readonly kind: "agent"
187
194
  readonly agentRunId: string
@@ -1 +1 @@
1
- export { InMemoryAuthStorage } from "./in-memory/index"
1
+ export { InMemoryAuthStorage } from "./in-memory/auth-storage"
@@ -2,11 +2,7 @@ import type { AuthStorage } from "../auth"
2
2
  import type { ShareSessionStorage } from "../share-sessions"
3
3
  import { ExecutionStorageError } from "./errors"
4
4
  import type { CreateExecutionInput, ExecutionRecord, ExecutionStorage } from "./types"
5
- import {
6
- cloneExecutionRecord,
7
- normalizeExecutionRecord,
8
- validateExecutionRecordReferences,
9
- } from "./validation"
5
+ import { cloneExecutionRecord, prepareExecutionRecord } from "./validation"
10
6
 
11
7
  type RunRootOperation = <T>(run: () => Promise<T> | T) => Promise<T>
12
8
 
@@ -45,16 +41,15 @@ export class InMemoryExecutionStorage implements ExecutionStorage {
45
41
 
46
42
  async create(input: CreateExecutionInput): Promise<ExecutionRecord> {
47
43
  return this.runRootOperation(async () => {
48
- const record = normalizeExecutionRecord(input)
49
- const key = executionKey(record.projectId, record.id)
44
+ const key = executionKey(input.projectId, input.id)
50
45
  if (this.rows.has(key)) {
51
46
  throw new ExecutionStorageError(
52
47
  "duplicate_execution",
53
- `[Sixb] Execution '${record.id}' already exists in project '${record.projectId}'.`
48
+ `[Sixb] Execution '${input.id}' already exists in project '${input.projectId}'.`
54
49
  )
55
50
  }
56
51
 
57
- await validateExecutionRecordReferences(record, {
52
+ const record = await prepareExecutionRecord(input, {
58
53
  auth: this.auth,
59
54
  getExecution: async ({ projectId, id }) => {
60
55
  const existing = this.rows.get(executionKey(projectId, id))
@@ -6,6 +6,7 @@ import { normalizeExecutionRecord } from "./validation"
6
6
  export {
7
7
  type ExecutionValidationLookup,
8
8
  normalizeExecutionRecord,
9
+ prepareExecutionRecord,
9
10
  validateExecutionRecordReferences,
10
11
  } from "./validation"
11
12
 
@@ -19,6 +20,7 @@ export interface ExecutionStorageRow {
19
20
  readonly sourceId: string
20
21
  readonly requestedByUserId: string | null
21
22
  readonly requestedByServiceAccountId: string | null
23
+ readonly requesterGroupIds: readonly string[]
22
24
  readonly correlationId: string
23
25
  /** SQL-only projection of an execution source, used to enforce the parent foreign key. */
24
26
  readonly parentExecutionId: string | null
@@ -43,6 +45,7 @@ export function executionRecordToStorageRow(record: ExecutionRecord): ExecutionS
43
45
  return {
44
46
  projectId: record.projectId,
45
47
  id: record.id,
48
+ requesterGroupIds: [...record.requesterGroupIds],
46
49
  ...executor,
47
50
  ...source,
48
51
  requestedByUserId: record.requestedBy?.type === "user" ? record.requestedBy.id : null,
@@ -70,6 +73,7 @@ export function executionRecordFromStorageRow(row: ExecutionStorageRow): Executi
70
73
  {
71
74
  id: row.id,
72
75
  projectId: row.projectId,
76
+ requesterGroupIds: row.requesterGroupIds,
73
77
  ...(requestedBy === undefined ? {} : { requestedBy }),
74
78
  executor,
75
79
  source,