@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
@@ -29,6 +29,8 @@ export interface ExecutionRecord {
29
29
  readonly id: string
30
30
  readonly projectId: string
31
31
  readonly requestedBy?: AuthorizablePrincipal
32
+ /** Requester memberships at admission, independent of current execution authority. */
33
+ readonly requesterGroupIds: readonly string[]
32
34
  readonly executor: DurableExecutionExecutor
33
35
  readonly source: DurableExecutionSource
34
36
  readonly correlationId: string
@@ -36,8 +38,10 @@ export interface ExecutionRecord {
36
38
  readonly createdAt: Date
37
39
  }
38
40
 
39
- /** Creation input; the storage boundary assigns the immutable creation timestamp. */
40
- export type CreateExecutionInput = Omit<ExecutionRecord, "createdAt">
41
+ /** Storage captures root memberships or inherits the parent's snapshot when omitted. */
42
+ export type CreateExecutionInput = Omit<ExecutionRecord, "createdAt" | "requesterGroupIds"> & {
43
+ readonly requesterGroupIds?: readonly string[]
44
+ }
41
45
 
42
46
  /** Immutable execution ledger. Records can be created and read, never updated or deleted. */
43
47
  export interface ExecutionStorage {
@@ -1,4 +1,5 @@
1
1
  import { isDeepStrictEqual } from "node:util"
2
+ import { normalizeRequesterGroupIds, snapshotRequesterGroupIds } from "../../auth/attribution"
2
3
  import type {
3
4
  AuthorizablePrincipal,
4
5
  AuthorizationRef,
@@ -25,6 +26,30 @@ export interface ExecutionValidationLookup {
25
26
  }): Promise<{ readonly grantId: string } | null>
26
27
  }
27
28
 
29
+ /** Capture accounting attribution at the same storage boundary that admits the execution. */
30
+ export async function prepareExecutionRecord(
31
+ input: CreateExecutionInput,
32
+ lookup: ExecutionValidationLookup
33
+ ): Promise<ExecutionRecord> {
34
+ let groups = input.requesterGroupIds
35
+ if (groups === undefined && input.source.type === "execution") {
36
+ const parent = await lookup.getExecution({
37
+ projectId: input.projectId,
38
+ id: input.source.executionId,
39
+ })
40
+ groups = parent?.requesterGroupIds
41
+ } else if (groups === undefined && input.requestedBy) {
42
+ groups = await snapshotRequesterGroupIds({
43
+ auth: lookup.auth,
44
+ projectId: input.projectId,
45
+ principal: input.requestedBy,
46
+ })
47
+ }
48
+ const record = normalizeExecutionRecord({ ...input, requesterGroupIds: groups ?? [] })
49
+ await validateExecutionRecordReferences(record, lookup)
50
+ return record
51
+ }
52
+
28
53
  export function normalizeExecutionRecord(
29
54
  input: CreateExecutionInput,
30
55
  createdAt: Date = new Date()
@@ -32,6 +57,7 @@ export function normalizeExecutionRecord(
32
57
  const record: ExecutionRecord = {
33
58
  id: input.id,
34
59
  projectId: input.projectId,
60
+ requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds ?? []),
35
61
  ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),
36
62
  executor: structuredClone(input.executor),
37
63
  source: structuredClone(input.source),
@@ -368,6 +394,12 @@ async function validateParent(
368
394
  `[Sixb] Child execution '${record.id}' must preserve its parent requested-by principal.`
369
395
  )
370
396
  }
397
+ if (!isDeepStrictEqual(parent.requesterGroupIds, record.requesterGroupIds)) {
398
+ throw new ExecutionStorageError(
399
+ "invalid_parent_execution",
400
+ `[Sixb] Child execution '${record.id}' must preserve its parent requester-group snapshot.`
401
+ )
402
+ }
371
403
  if (
372
404
  record.executor.type === "agent" &&
373
405
  isInheritedAgentAuthority(record.authorizationRef) &&
@@ -2,6 +2,7 @@ import { AsyncLocalStorage } from "node:async_hooks"
2
2
  import { InMemoryActionRunStorage } from "../action-runs"
3
3
  import { type AgentStorage, InMemoryAgentStorage } from "../agents"
4
4
  import { type AiAccountingAttribution, type AiCostStorage, InMemoryAiCostStorage } from "../ai-cost"
5
+ import { directModelCallAttribution } from "../ai-cost/attribution"
5
6
  import { type AiLimitStorage, InMemoryAiLimitStorage } from "../ai-limits"
6
7
  import { type AiUsageStorage, InMemoryAiUsageStorage } from "../ai-usage"
7
8
  import { type AuthStorage, InMemoryAuthStorage } from "../auth"
@@ -188,7 +189,21 @@ export class InMemoryStorage implements Storage {
188
189
  projectId: input.projectId,
189
190
  id: input.executionId,
190
191
  })
191
- if (!execution || execution.executor.type !== "agent") return undefined
192
+ if (!execution) return undefined
193
+ if (execution.executor.type !== "agent") {
194
+ const executor = execution.executor
195
+ return directModelCallAttribution(
196
+ executor.type === "primitive" ? executor.kind : executor.type,
197
+ executor.type === "request"
198
+ ? executor.requestId
199
+ : executor.type === "primitive"
200
+ ? executor.runId
201
+ : null,
202
+ execution.authorizationRef.type === "trustedPrimitive"
203
+ ? execution.authorizationRef.primitive.id
204
+ : null
205
+ )
206
+ }
192
207
  const directRun = await this.agentStorage.runs.getById({
193
208
  projectId: input.projectId,
194
209
  id: execution.executor.runId,
@@ -51,11 +51,6 @@ export {
51
51
  ACTION_RUN_FAILURE_CODES,
52
52
  ACTION_RUN_PHASES,
53
53
  ActionRunError,
54
- actionRunParamsEqual,
55
- actionRunPhaseRecordsEqual,
56
- actionSubjectsEqual,
57
- canRequeueActionRunAfterEnqueueFailure,
58
- finishActionRunPhase,
59
54
  InMemoryActionRunStorage,
60
55
  isTerminalActionRun,
61
56
  } from "./action-runs"
@@ -197,14 +192,7 @@ export type {
197
192
  SummarizeAiUsageExecutionInput,
198
193
  SummarizeAiUsageExecutionsInput,
199
194
  } from "./ai-usage"
200
- export {
201
- AiUsageStorageError,
202
- aggregateAiModelCallUsage,
203
- assertAiUsageExecutionId,
204
- InMemoryAiUsageStorage,
205
- normalizeAiModelCallRecord,
206
- normalizeAiModelCallUsage,
207
- } from "./ai-usage"
195
+ export { AiUsageStorageError, aggregateAiModelCallUsage, InMemoryAiUsageStorage } from "./ai-usage"
208
196
  export type {
209
197
  AccessTokenRecord,
210
198
  AccessTokenSubjectType,
@@ -367,8 +355,6 @@ export type {
367
355
  FileUploadStrategy,
368
356
  } from "./file-upload-sessions"
369
357
  export {
370
- createFileUploadId,
371
- createUploadExpiresAt,
372
358
  DEFAULT_FILE_UPLOAD_SESSION_TTL_MS,
373
359
  DEFAULT_FILE_UPLOAD_TERMINAL_SESSION_TTL_MS,
374
360
  FileUploadSessionError,
@@ -584,7 +570,6 @@ export type {
584
570
  StartPipelineStepRunInput,
585
571
  } from "./pipeline-runs"
586
572
  export {
587
- canRequeuePipelineRunAfterEnqueueFailure,
588
573
  InMemoryPipelineRunStorage,
589
574
  PIPELINE_RUN_FAILURE_CODES,
590
575
  PipelineRunError,
@@ -623,8 +608,6 @@ export {
623
608
  PROJECTION_RUN_FAILURE_CODES,
624
609
  PROJECTION_RUN_PROGRESS_KEYS,
625
610
  ProjectionRunError,
626
- projectionRunObjectTypesVisible,
627
- zeroProjectionRunProgress,
628
611
  } from "./projection-runs"
629
612
  export type {
630
613
  ListActiveRuleStatesInput,
@@ -675,12 +658,7 @@ export type {
675
658
  SyncRunStatus,
676
659
  SyncRunStorage,
677
660
  } from "./sync-runs"
678
- export {
679
- canRequeueSyncRunAfterEnqueueFailure,
680
- InMemorySyncRunStorage,
681
- SYNC_RUN_FAILURE_CODES,
682
- SyncRunError,
683
- } from "./sync-runs"
661
+ export { InMemorySyncRunStorage, SYNC_RUN_FAILURE_CODES, SyncRunError } from "./sync-runs"
684
662
  export type {
685
663
  TimeseriesHistoryBatchInput,
686
664
  TimeseriesHistoryBatchResult,
@@ -688,11 +666,7 @@ export type {
688
666
  TimeseriesPoint,
689
667
  TimeseriesStorage,
690
668
  } from "./timeseries"
691
- export {
692
- assertTransactionActive,
693
- createTransactionStorageProxy,
694
- throwNestedStorageTransaction,
695
- } from "./transaction"
669
+
696
670
  export type { Storage, StorageTransactionOptions } from "./types"
697
671
  export type {
698
672
  FinishWebhookRunInput,
@@ -0,0 +1,20 @@
1
+ /** Implementation exports for Sixb packages only. */
2
+
3
+ export {
4
+ actionRunParamsEqual,
5
+ actionRunPhaseRecordsEqual,
6
+ actionSubjectsEqual,
7
+ canRequeueActionRunAfterEnqueueFailure,
8
+ finishActionRunPhase,
9
+ } from "./action-runs/idempotency"
10
+ export { assertAiUsageExecutionId, normalizeAiModelCallRecord } from "./ai-usage/record"
11
+ export { normalizeAiModelCallUsage } from "./ai-usage/usage"
12
+ export { createFileUploadId, createUploadExpiresAt } from "./file-upload-sessions/utils"
13
+ export { canRequeuePipelineRunAfterEnqueueFailure } from "./pipeline-runs/idempotency"
14
+ export { projectionRunObjectTypesVisible, zeroProjectionRunProgress } from "./projection-runs/types"
15
+ export { canRequeueSyncRunAfterEnqueueFailure } from "./sync-runs/idempotency"
16
+ export {
17
+ assertTransactionActive,
18
+ createTransactionStorageProxy,
19
+ throwNestedStorageTransaction,
20
+ } from "./transaction"
@@ -1,4 +1,3 @@
1
- import { normalizeRequesterGroupIds } from "../../auth/attribution"
2
1
  import { parseSixbFailure } from "../../errors/internal"
3
2
  import type { SixbFailure } from "../../errors/types"
4
3
  import type { AgentRunFailureCode } from "../agents"
@@ -143,7 +142,6 @@ export class InMemoryWorkflowRunStorage implements WorkflowRunStorage {
143
142
  queuedAt,
144
143
  startedAt: queuedAt,
145
144
  attempt: 0,
146
- requesterGroupIds: normalizeRequesterGroupIds(input.requesterGroupIds),
147
145
  }
148
146
 
149
147
  this.runs.set(key, cloneRecord(record))
@@ -144,8 +144,6 @@ export interface WorkflowRunRecord {
144
144
  readonly startedAt: Date
145
145
  readonly finishedAt?: Date
146
146
  readonly error?: SixbFailure<WorkflowRunFailureCode>
147
- /** Durable group memberships snapshotted when the workflow run was admitted. */
148
- readonly requesterGroupIds: readonly string[]
149
147
  readonly attempt: number
150
148
  readonly execution?: WorkflowRunExecution
151
149
  }
@@ -181,7 +179,6 @@ export interface QueueWorkflowRunInput {
181
179
  readonly workflowId: string
182
180
  readonly input: WorkflowIOSnapshot
183
181
  readonly queuedAt?: Date
184
- readonly requesterGroupIds: readonly string[]
185
182
  }
186
183
 
187
184
  export interface ReclaimWorkflowRunInput {
@@ -10,6 +10,7 @@ export async function createTestActionExecution(
10
10
  readonly actionId: string
11
11
  readonly runId: string
12
12
  readonly executionId?: string
13
+ readonly requesterGroupIds?: readonly string[]
13
14
  }
14
15
  ): Promise<string> {
15
16
  const parentExecutionId = `test_request_execution:${input.runId}`
@@ -27,6 +28,7 @@ export async function createTestActionExecution(
27
28
  if (!parent) {
28
29
  await executions.create({
29
30
  id: parentExecutionId,
31
+ requesterGroupIds: input.requesterGroupIds ?? [],
30
32
  projectId: input.projectId,
31
33
  executor: { type: "request", requestId: `test_request:${input.runId}` },
32
34
  source: { type: "http", requestId: `test_request:${input.runId}` },
@@ -36,6 +38,7 @@ export async function createTestActionExecution(
36
38
  }
37
39
  await executions.create({
38
40
  id: executionId,
41
+ requesterGroupIds: input.requesterGroupIds ?? [],
39
42
  projectId: input.projectId,
40
43
  executor: { type: "primitive", kind: primitive.kind, runId: primitive.runId },
41
44
  source: { type: "execution", executionId: parentExecutionId },
@@ -49,13 +52,17 @@ export async function createTestActionExecution(
49
52
  /** Queue an Action run with the valid durable execution fixture required by every provider. */
50
53
  export async function queueTestActionRun(
51
54
  storage: Pick<Storage, "actionRuns" | "executions">,
52
- input: Omit<QueueActionRunInput, "executionId">
55
+ input: Omit<QueueActionRunInput, "executionId"> & {
56
+ readonly requesterGroupIds?: readonly string[]
57
+ }
53
58
  ): Promise<ActionRunRecord> {
54
59
  if (!storage.actionRuns) throw new Error("Action run storage is not configured for this test.")
55
60
  const executionId = await createTestActionExecution(storage.executions, {
56
61
  projectId: input.projectId,
57
62
  actionId: input.actionId,
58
63
  runId: input.id,
64
+ requesterGroupIds: input.requesterGroupIds,
59
65
  })
60
- return storage.actionRuns.queue({ ...input, executionId })
66
+ const { requesterGroupIds: _groups, ...run } = input
67
+ return storage.actionRuns.queue({ ...run, executionId })
61
68
  }
@@ -13,6 +13,7 @@ export async function createTestAgentExecution(
13
13
  readonly runId: string
14
14
  readonly executionId?: string
15
15
  readonly sourceExecutionId?: string
16
+ readonly requesterGroupIds?: readonly string[]
16
17
  /** Conversational runs inherit authority; workflow fixtures use managed authority. */
17
18
  readonly authority?: "managed" | "inherited"
18
19
  }
@@ -65,6 +66,7 @@ export async function createTestAgentExecution(
65
66
  if (!parent) {
66
67
  parent = await storage.executions.create({
67
68
  id: sourceExecutionId,
69
+ requesterGroupIds: input.requesterGroupIds ?? [],
68
70
  projectId: input.projectId,
69
71
  executor: { type: "request", requestId: `test_request:${input.runId}` },
70
72
  source: { type: "http", requestId: `test_request:${input.runId}` },
@@ -74,6 +76,7 @@ export async function createTestAgentExecution(
74
76
  }
75
77
  await storage.executions.create({
76
78
  id: executionId,
79
+ requesterGroupIds: parent.requesterGroupIds,
77
80
  projectId: input.projectId,
78
81
  executor: { type: "agent", runId: input.runId },
79
82
  source: { type: "execution", executionId: sourceExecutionId },
@@ -93,7 +93,6 @@ function runInput(overrides: Partial<TestRunInput> = {}): TestRunInput {
93
93
  triggerMessageId: "msg_user_1",
94
94
  spec: { model: { provider: "test", modelId: "large" } },
95
95
  executionId: "test_agent_execution:run_1",
96
- requesterGroupIds: ["support", "engineering", "support"],
97
96
  execution: execution("exec_1"),
98
97
  createdAt: at("2026-06-23T10:00:10.000Z"),
99
98
  ...overrides,
@@ -491,7 +490,6 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
491
490
  spawnKey: "research-orders",
492
491
  status: "queued",
493
492
  attempt: 0,
494
- requesterGroupIds: ["engineering", "support"],
495
493
  spec: input.spec,
496
494
  })
497
495
  expect(child).not.toHaveProperty("threadId")
@@ -655,7 +653,6 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
655
653
  const run = await createAndStartRun(storage, fixture, runInput({ id: "run_1" }))
656
654
  expect(run).toMatchObject({ status: "running", attempt: 1, threadId: "thr_1" })
657
655
  expect(run.executionId).toBe("test_agent_execution:run_1")
658
- expect(run.requesterGroupIds).toEqual(["engineering", "support"])
659
656
  expect(run.execution?.token).toBe("exec_1")
660
657
  await expect(storage.threads.getById({ projectId, id: "thr_1" })).resolves.toMatchObject({
661
658
  activeRunId: "run_1",
@@ -791,10 +788,8 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
791
788
  mutableExecution.token = "mutated"
792
789
  mutableExecution.queueLeaseExpiresAt.setTime(0)
793
790
  }
794
- ;(run.requesterGroupIds as string[]).push("mutated")
795
791
  const reread = await storage.runs.getById({ projectId, id: "run_1" })
796
792
  expect(reread?.execution?.token).toBe("exec_1")
797
- expect(reread?.requesterGroupIds).toEqual(["engineering", "support"])
798
793
  })
799
794
  })
800
795
 
@@ -22,6 +22,80 @@ export function runAiModelCallGroupsContractSuite<T extends AiModelCallGroupsCon
22
22
  options: AiStorageContractSuiteOptions<T>
23
23
  ): void {
24
24
  describe(name, () => {
25
+ test("attributes direct calls and retries to requests, actions, and workflows", async () => {
26
+ // Removal proof: return undefined from directModelCallAttribution and run this suite.
27
+ const storage = await options.createStorage()
28
+ try {
29
+ await options.setup?.(storage)
30
+ const expected = [
31
+ { kind: "request", requestId: "request" },
32
+ { kind: "action", actionId: "summarize", actionRunId: "action" },
33
+ { kind: "workflow", workflowId: "summarize", workflowRunId: "workflow" },
34
+ ] as const
35
+ for (const attribution of expected) {
36
+ const kind = attribution.kind
37
+ const primitive = {
38
+ kind: kind === "action" ? ("action" as const) : ("workflow" as const),
39
+ id: "summarize",
40
+ runId: kind,
41
+ }
42
+ const execution = await storage.executions.create({
43
+ projectId,
44
+ id: kind,
45
+ executor:
46
+ kind === "request"
47
+ ? { type: "request", requestId: kind }
48
+ : { type: "primitive", kind, runId: kind },
49
+ source:
50
+ kind === "request"
51
+ ? { type: "http", requestId: kind }
52
+ : { type: "event", eventId: kind },
53
+ correlationId: kind,
54
+ authorizationRef:
55
+ kind === "request" ? { type: "disabled" } : { type: "trustedPrimitive", primitive },
56
+ })
57
+ for (const attempt of [1, 2]) {
58
+ await storage.aiUsage.recordModelCall({
59
+ projectId,
60
+ id: `${kind}:${attempt}`,
61
+ executionId: execution.id,
62
+ attempt,
63
+ callId: `${kind}:${attempt}`,
64
+ requesterGroupIds: execution.requesterGroupIds,
65
+ providerId: "test",
66
+ requestedModelId: "small",
67
+ responseId: `${kind}:${attempt}`,
68
+ usage: { inputTokens: 2, outputTokens: 3 },
69
+ occurredAt: new Date("2026-09-01T12:00:00Z"),
70
+ })
71
+ }
72
+ const calls = await storage.aiCosts.listModelCalls({
73
+ ...range,
74
+ executionId: execution.id,
75
+ })
76
+ expect(calls.total).toBe(2)
77
+ expect(calls.items.map((call) => call.attribution)).toEqual([attribution, attribution])
78
+ }
79
+ const groups = await storage.aiCosts.listModelCallGroups(range)
80
+ expect(groups.total).toBe(3)
81
+ for (const attribution of expected) {
82
+ const group = groups.items.find((item) => item.executionId === attribution.kind)
83
+ expect(group).toMatchObject({
84
+ attribution,
85
+ modelCallCount: 2,
86
+ totalTokens: 10,
87
+ executions: [{ attribution, modelCallCount: 2 }],
88
+ })
89
+ }
90
+ const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: "day" })
91
+ expect(overview.totals.modelCallCount).toBe(6)
92
+ expect(overview.agents).toEqual([])
93
+ expect(overview.workflows).toMatchObject([{ workflowId: "summarize", modelCallCount: 2 }])
94
+ } finally {
95
+ await options.cleanup?.(storage)
96
+ }
97
+ })
98
+
25
99
  test("attributes workflow usage to step references and keeps same-named steps separate", async () => {
26
100
  const storage = await options.createStorage()
27
101
  try {
@@ -195,7 +269,6 @@ async function seedWorkflowCall(
195
269
  workflowId,
196
270
  executionId: sourceExecutionId,
197
271
  input: {},
198
- requesterGroupIds: [],
199
272
  })
200
273
  await storage.workflowRuns.start({ projectId, id: runId })
201
274
  const nodeRunId = `${runId}:node:0`
@@ -275,7 +348,6 @@ async function seed(storage: AiModelCallGroupsContractStorage) {
275
348
  threadId: "thread",
276
349
  triggerMessageId: `message_${runId}`,
277
350
  spec: { model: { provider: "parent-provider", modelId: "large" } },
278
- requesterGroupIds: [],
279
351
  })
280
352
  await storage.agents.runs.start({
281
353
  id: runId,
@@ -43,6 +43,56 @@ export function runExecutionStorageContractSuite<TStorage extends ExecutionStora
43
43
  }
44
44
 
45
45
  describe(label, () => {
46
+ test("captures memberships once and inherits them independently of current authority", async () => {
47
+ // Removal proof: skip prepareExecutionRecord's membership capture or parent inheritance.
48
+ await withStorage(async (storage) => {
49
+ await seedAuth(storage.auth)
50
+ for (const groupId of ["support", "finance"]) {
51
+ await storage.auth.groupMemberships.upsert({
52
+ projectId,
53
+ userId: "user-one",
54
+ groupId,
55
+ source: "manual",
56
+ })
57
+ }
58
+ const parent = await storage.executions.create({
59
+ ...principalRequest({ id: "parent" }),
60
+ requesterGroupIds: undefined,
61
+ })
62
+ expect(parent.requesterGroupIds).toEqual(["finance", "support"])
63
+ await storage.auth.groupMemberships.remove({
64
+ projectId,
65
+ userId: "user-one",
66
+ groupId: "finance",
67
+ })
68
+ const childInput = trustedPrimitive("child", {
69
+ source: { type: "execution", executionId: parent.id },
70
+ correlationId: parent.correlationId,
71
+ })
72
+ const child = await storage.executions.create({
73
+ ...childInput,
74
+ requesterGroupIds: undefined,
75
+ })
76
+ expect(child.requesterGroupIds).toEqual(["finance", "support"])
77
+ ;(child.requesterGroupIds as string[]).push("mutated")
78
+ await expect(
79
+ storage.executions.getById({ projectId, id: child.id })
80
+ ).resolves.toMatchObject({ requesterGroupIds: ["finance", "support"] })
81
+ await expect(
82
+ storage.executions.create({
83
+ ...childInput,
84
+ id: "wrong-groups",
85
+ requesterGroupIds: ["support"],
86
+ })
87
+ ).rejects.toMatchObject({ code: "invalid_parent_execution" })
88
+ const next = await storage.executions.create({
89
+ ...principalRequest({ id: "next" }),
90
+ requesterGroupIds: undefined,
91
+ })
92
+ expect(next.requesterGroupIds).toEqual(["support"])
93
+ })
94
+ })
95
+
46
96
  test("round-trips every durable executor and authority shape", async () => {
47
97
  await withStorage(async (storage) => {
48
98
  await seedAuth(storage.auth)
@@ -69,7 +119,10 @@ export function runExecutionStorageContractSuite<TStorage extends ExecutionStora
69
119
  const creationStartedAt = new Date()
70
120
  const created = await storage.executions.create(input)
71
121
  const { createdAt: persistedAt, ...persistedInput } = created
72
- expect(persistedInput).toEqual(input)
122
+ expect(persistedInput).toEqual({
123
+ ...input,
124
+ requesterGroupIds: input.requesterGroupIds ?? [],
125
+ })
73
126
  expect(Number.isFinite(persistedAt.getTime())).toBe(true)
74
127
  expect(persistedAt.getTime()).toBeGreaterThanOrEqual(creationStartedAt.getTime())
75
128
  expect(
@@ -395,6 +448,7 @@ function principalRequest(input: {
395
448
  id: input.id,
396
449
  projectId,
397
450
  requestedBy: principal,
451
+ requesterGroupIds: [],
398
452
  executor: { type: "request", requestId: `request-${input.id}` },
399
453
  source: { type: "http", requestId: `request-${input.id}` },
400
454
  correlationId: input.id === "parent" ? "correlation-parent" : `correlation-${input.id}`,
@@ -410,6 +464,7 @@ function disabledRequest(id: string, inputProjectId = projectId): CreateExecutio
410
464
  return {
411
465
  id,
412
466
  projectId: inputProjectId,
467
+ requesterGroupIds: [],
413
468
  executor: { type: "request", requestId: `request-${id}` },
414
469
  source: { type: "http", requestId: `request-${id}` },
415
470
  correlationId: `correlation-${id}`,
@@ -445,6 +500,7 @@ function trustedPrimitive(
445
500
  id,
446
501
  projectId,
447
502
  requestedBy: { type: "user", id: "user-one" },
503
+ requesterGroupIds: [],
448
504
  executor: { type: "primitive", kind, runId },
449
505
  source: trustedPrimitiveSource(kind, id),
450
506
  correlationId: `correlation-${id}`,
@@ -491,6 +547,7 @@ function agentExecution(id: string): CreateExecutionInput {
491
547
  id,
492
548
  projectId,
493
549
  requestedBy: { type: "user", id: "user-one" },
550
+ requesterGroupIds: [],
494
551
  executor: { type: "agent", runId: `run-${id}` },
495
552
  source: { type: "execution", executionId: "principal-request" },
496
553
  correlationId: "correlation-principal-request",
@@ -507,6 +564,7 @@ function kernelExecution(id: string): CreateExecutionInput {
507
564
  id,
508
565
  projectId,
509
566
  executor: { type: "kernel", operation },
567
+ requesterGroupIds: [],
510
568
  source: { type: "event", eventId: `event-${id}` },
511
569
  correlationId: `correlation-${id}`,
512
570
  authorizationRef: { type: "kernel", operation },
@@ -1,6 +1,7 @@
1
1
  import type { AuthorizationContext } from "../authorization"
2
2
  import { createTestingScope } from "../execution/scopes"
3
3
  import type { ExecutionScope } from "../execution/types"
4
+ import { bindModelExecutionAttempt } from "../models/execution/binding"
4
5
  import type { OntologySource } from "../ontology"
5
6
  import { SixbHost, type SixbHostOptions } from "../runtime/host"
6
7
  import { isBoundSixb, type Sixb } from "../runtime/sixb"
@@ -8,6 +9,7 @@ import { isBoundSixb, type Sixb } from "../runtime/sixb"
8
9
  export type { AuthorizationContext } from "../authorization"
9
10
 
10
11
  export interface TestExecutionOptions {
12
+ readonly signal?: AbortSignal
11
13
  readonly authorization?: AuthorizationContext
12
14
  readonly executionId?: string
13
15
  readonly requestId?: string
@@ -44,5 +46,9 @@ export function createTestSixb<
44
46
  if (!isBoundSixb<TOntologySources>(sixb)) {
45
47
  throw new Error("[Sixb] Test host did not return an execution-bound Sixb SDK.")
46
48
  }
49
+ bindModelExecutionAttempt(sixb.models, {
50
+ attempt: 1,
51
+ signal: options.signal ?? new AbortController().signal,
52
+ })
47
53
  return sixb
48
54
  }
@@ -10,6 +10,7 @@ export async function createTestWorkflowExecution(
10
10
  readonly runId: string
11
11
  readonly executionId?: string
12
12
  readonly requestedBy?: AuthorizablePrincipal
13
+ readonly requesterGroupIds?: readonly string[]
13
14
  }
14
15
  ): Promise<string> {
15
16
  const parentExecutionId = `test_request_execution:${input.runId}`
@@ -22,6 +23,7 @@ export async function createTestWorkflowExecution(
22
23
 
23
24
  await executions.create({
24
25
  id: parentExecutionId,
26
+ requesterGroupIds: input.requesterGroupIds ?? [],
25
27
  projectId: input.projectId,
26
28
  executor: { type: "request", requestId: `test_request:${input.runId}` },
27
29
  source: { type: "http", requestId: `test_request:${input.runId}` },
@@ -34,6 +36,7 @@ export async function createTestWorkflowExecution(
34
36
  })
35
37
  await executions.create({
36
38
  id: executionId,
39
+ requesterGroupIds: input.requesterGroupIds ?? [],
37
40
  projectId: input.projectId,
38
41
  executor: { type: "primitive", kind: primitive.kind, runId: primitive.runId },
39
42
  source: { type: "execution", executionId: parentExecutionId },
@@ -66,6 +69,7 @@ export async function createTestAutomaticWorkflowExecution(
66
69
 
67
70
  await executions.create({
68
71
  id: executionId,
72
+ requesterGroupIds: [],
69
73
  projectId: input.projectId,
70
74
  executor: { type: "primitive", kind: primitive.kind, runId: primitive.runId },
71
75
  source: input.source ?? { type: "event", eventId: `test_event:${input.runId}` },