@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.
- package/dist/actions/index.js +77 -89
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +2 -0
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +33 -37
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/adapters.d.ts +3 -3
- package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
- package/dist/agents/context/entries.d.ts.map +1 -0
- package/dist/agents/context/index.d.ts +4 -0
- package/dist/agents/context/index.d.ts.map +1 -0
- package/dist/agents/context/index.js +19 -0
- package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
- package/dist/agents/context-model.d.ts +1 -1
- package/dist/agents/context-model.d.ts.map +1 -1
- package/dist/agents/context-resolution.d.ts +1 -1
- package/dist/agents/context-resolution.d.ts.map +1 -1
- package/dist/agents/index.d.ts +4 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +192 -204
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +1 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +2 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/request.d.ts +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams/index.d.ts +4 -0
- package/dist/agents/streams/index.d.ts.map +1 -0
- package/dist/agents/streams/index.js +20 -0
- package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
- package/dist/agents/streams/internal.d.ts +3 -0
- package/dist/agents/streams/internal.d.ts.map +1 -0
- package/dist/agents/streams/internal.js +40 -0
- package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
- package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
- package/dist/agents/streams/protocol.d.ts.map +1 -0
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +96 -108
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/strategy.js +8 -9
- package/dist/auth/strategy.js.map +1 -1
- package/dist/authorization/index.js +51 -56
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/browser.js +15 -17
- package/dist/blob-storage/browser.js.map +1 -1
- package/dist/blob-storage/index.js +36 -38
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/bootstrap/discovery.d.ts +14 -1
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -2
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +79 -88
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/index.js +8 -10
- package/dist/broker/index.js.map +1 -1
- package/dist/{chunk-k34z5rvh.js → chunk-0rdrecsb.js} +18 -18
- package/dist/{chunk-k34z5rvh.js.map → chunk-0rdrecsb.js.map} +2 -2
- package/dist/{chunk-q0k9nc5a.js → chunk-0w35wavj.js} +98 -98
- package/dist/{chunk-q0k9nc5a.js.map → chunk-0w35wavj.js.map} +2 -2
- package/dist/chunk-0y39rgsb.js +43 -0
- package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
- package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
- package/dist/chunk-17kfctj6.js.map +10 -0
- package/dist/{chunk-aa2pen2v.js → chunk-1enhpacz.js} +188 -175
- package/dist/{chunk-aa2pen2v.js.map → chunk-1enhpacz.js.map} +2 -2
- package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
- package/dist/{chunk-5gd7tpv6.js.map → chunk-2c4j899j.js.map} +2 -2
- package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
- package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
- package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
- package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
- package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
- package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
- package/dist/{chunk-8m5ejdpn.js → chunk-3f7veca0.js} +4 -4
- package/dist/{chunk-8m5ejdpn.js.map → chunk-3f7veca0.js.map} +2 -2
- package/dist/chunk-3frsnm7x.js +32 -0
- package/dist/chunk-3frsnm7x.js.map +11 -0
- package/dist/{chunk-n2w475r0.js → chunk-3tgwrcyh.js} +81 -81
- package/dist/{chunk-n2w475r0.js.map → chunk-3tgwrcyh.js.map} +2 -2
- package/dist/{chunk-mwsxn98e.js → chunk-52hbv0ak.js} +170 -170
- package/dist/{chunk-mwsxn98e.js.map → chunk-52hbv0ak.js.map} +4 -4
- package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
- package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
- package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
- package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
- package/dist/chunk-653vwrzr.js +39 -0
- package/dist/chunk-653vwrzr.js.map +10 -0
- package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
- package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
- package/dist/chunk-7apz6hg4.js +50 -0
- package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
- package/dist/chunk-7bs40fe1.js +218 -0
- package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
- package/dist/chunk-7zgecwy1.js +113 -0
- package/dist/chunk-7zgecwy1.js.map +10 -0
- package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
- package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
- package/dist/chunk-8vj0rjgs.js +165 -0
- package/dist/chunk-8vj0rjgs.js.map +15 -0
- package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
- package/dist/chunk-92vk7gta.js.map +10 -0
- package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
- package/dist/chunk-93csa55g.js.map +11 -0
- package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
- package/dist/chunk-98cw09sw.js.map +10 -0
- package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
- package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
- package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
- package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
- package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
- package/dist/{chunk-f26bck4t.js → chunk-an5tt9y0.js} +353 -353
- package/dist/{chunk-f26bck4t.js.map → chunk-an5tt9y0.js.map} +2 -2
- package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
- package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
- package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
- package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
- package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
- package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
- package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
- package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
- package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
- package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
- package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
- package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
- package/dist/chunk-d62kjtbg.js +7 -0
- package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
- package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
- package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
- package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
- package/dist/chunk-dmn70ztd.js.map +11 -0
- package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
- package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
- package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
- package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
- package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
- package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
- package/dist/{chunk-wtf06et8.js → chunk-emyyk7dx.js} +55 -55
- package/dist/{chunk-wtf06et8.js.map → chunk-emyyk7dx.js.map} +2 -2
- package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
- package/dist/chunk-f0rwz2vh.js.map +11 -0
- package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
- package/dist/chunk-f4w3yp4f.js.map +12 -0
- package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
- package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
- package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
- package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
- package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
- package/dist/chunk-g53f0e4j.js.map +15 -0
- package/dist/chunk-g6cke204.js +124 -0
- package/dist/chunk-g6cke204.js.map +10 -0
- package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
- package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
- package/dist/chunk-h1gfhhbh.js +602 -0
- package/dist/chunk-h1gfhhbh.js.map +18 -0
- package/dist/chunk-h3v76ams.js +32 -0
- package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
- package/dist/{chunk-xajtptbw.js → chunk-hpr1r6av.js} +1367 -418
- package/dist/chunk-hpr1r6av.js.map +44 -0
- package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
- package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
- package/dist/{chunk-w9tg6yyb.js → chunk-jjy0fhrn.js} +36 -36
- package/dist/{chunk-w9tg6yyb.js.map → chunk-jjy0fhrn.js.map} +2 -2
- package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-ajnan18g.js → chunk-k3cqkkn2.js} +58 -55
- package/dist/chunk-k3cqkkn2.js.map +12 -0
- package/dist/{chunk-s5y30bc9.js → chunk-kxwa347f.js} +51 -49
- package/dist/{chunk-s5y30bc9.js.map → chunk-kxwa347f.js.map} +4 -4
- package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
- package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
- package/dist/{chunk-3z1qec12.js → chunk-m3z3x9v0.js} +107 -64
- package/dist/{chunk-3z1qec12.js.map → chunk-m3z3x9v0.js.map} +3 -3
- package/dist/{chunk-sbzzr4kx.js → chunk-mjbk2djy.js} +1061 -1195
- package/dist/{chunk-sbzzr4kx.js.map → chunk-mjbk2djy.js.map} +9 -15
- package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
- package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
- package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
- package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
- package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
- package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
- package/dist/{chunk-rv2hkwwa.js → chunk-ppytyr6w.js} +156 -179
- package/dist/{chunk-rv2hkwwa.js.map → chunk-ppytyr6w.js.map} +3 -5
- package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
- package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
- package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
- package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
- package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
- package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
- package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
- package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
- package/dist/{chunk-mth82m8t.js → chunk-qhcpj9wc.js} +77 -77
- package/dist/{chunk-mth82m8t.js.map → chunk-qhcpj9wc.js.map} +2 -2
- package/dist/{chunk-tpnd31c1.js → chunk-r29fxdhn.js} +12 -12
- package/dist/{chunk-tpnd31c1.js.map → chunk-r29fxdhn.js.map} +2 -2
- package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
- package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
- package/dist/{chunk-3xep5cjx.js → chunk-r4tfx1sf.js} +104 -86
- package/dist/chunk-r4tfx1sf.js.map +15 -0
- package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
- package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
- package/dist/chunk-s3csryxe.js +152 -0
- package/dist/chunk-s3csryxe.js.map +11 -0
- package/dist/chunk-s670k14v.js +60 -0
- package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
- package/dist/chunk-skz0hst3.js +788 -0
- package/dist/chunk-skz0hst3.js.map +19 -0
- package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
- package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
- package/dist/{chunk-v1xppd0y.js → chunk-vf691g1r.js} +60 -60
- package/dist/{chunk-v1xppd0y.js.map → chunk-vf691g1r.js.map} +2 -2
- package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
- package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
- package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
- package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
- package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
- package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
- package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
- package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
- package/dist/{chunk-8tsf6dmc.js → chunk-x57ycxq0.js} +204 -204
- package/dist/{chunk-8tsf6dmc.js.map → chunk-x57ycxq0.js.map} +2 -2
- package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
- package/dist/{chunk-gbejpkex.js → chunk-xfbydgzy.js} +26 -26
- package/dist/{chunk-gbejpkex.js.map → chunk-xfbydgzy.js.map} +2 -2
- package/dist/{chunk-gzasd5b6.js → chunk-xyr8kppc.js} +22 -22
- package/dist/{chunk-gzasd5b6.js.map → chunk-xyr8kppc.js.map} +2 -2
- package/dist/{chunk-h5vqbfmd.js → chunk-ypbtykv6.js} +117 -117
- package/dist/{chunk-h5vqbfmd.js.map → chunk-ypbtykv6.js.map} +3 -3
- package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
- package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
- package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
- package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
- package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
- package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
- package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
- package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
- package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
- package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
- package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
- package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
- package/dist/{chunk-xhy826cz.js → chunk-zcnq6105.js} +7 -7
- package/dist/{chunk-xhy826cz.js.map → chunk-zcnq6105.js.map} +2 -2
- package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
- package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
- package/dist/connectors/connections/internal.js +9 -10
- package/dist/connectors/connections/internal.js.map +1 -1
- package/dist/datasets/write.js +8 -12
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/index.js +7 -8
- package/dist/edits/index.js.map +1 -1
- package/dist/error-reporting/internal.js +22 -24
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/errors/internal.d.ts +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +22 -24
- package/dist/errors/internal.js.map +1 -1
- package/dist/errors/redaction.d.ts +8 -0
- package/dist/errors/redaction.d.ts.map +1 -0
- package/dist/errors/types.d.ts +4 -0
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/events/index.js +60 -63
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.js +4 -5
- package/dist/events/scope.js.map +1 -1
- package/dist/events/selectors/index.js +9 -10
- package/dist/events/selectors/index.js.map +1 -1
- package/dist/execution/agent.d.ts +3 -3
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +70 -82
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/durable.d.ts +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +2 -0
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +63 -71
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +65 -75
- package/dist/execution/request.js.map +3 -3
- package/dist/http/index.js +10 -11
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +14 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +455 -477
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +38 -42
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/logging/index.d.ts +3 -4
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +18 -40
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/internal.d.ts +5 -0
- package/dist/logging/internal.d.ts.map +1 -0
- package/dist/logging/internal.js +43 -0
- package/dist/logging/internal.js.map +9 -0
- package/dist/materialization/index.js +46 -49
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/index.js +137 -145
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/errors.d.ts +4 -0
- package/dist/models/errors.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +9 -0
- package/dist/models/execution/binding.d.ts.map +1 -0
- package/dist/models/execution/errors.d.ts +9 -0
- package/dist/models/execution/errors.d.ts.map +1 -0
- package/dist/models/execution/index.d.ts +11 -0
- package/dist/models/execution/index.d.ts.map +1 -0
- package/dist/models/execution/index.js +55 -0
- package/dist/models/execution/index.js.map +9 -0
- package/dist/models/execution/model-call-accounting.d.ts +17 -0
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
- package/dist/models/execution/model-call-admission.d.ts +47 -0
- package/dist/models/execution/model-call-admission.d.ts.map +1 -0
- package/dist/models/execution/model-call-limits.d.ts +15 -0
- package/dist/models/execution/model-call-limits.d.ts.map +1 -0
- package/dist/models/execution/model-call-recorder.d.ts +40 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
- package/dist/models/execution/model-call-recovery.d.ts +12 -0
- package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
- package/dist/models/execution/recovery-queue.d.ts +5 -0
- package/dist/models/execution/recovery-queue.d.ts.map +1 -0
- package/dist/models/execution/types.d.ts +44 -0
- package/dist/models/execution/types.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts +5 -0
- package/dist/models/execution/usage.d.ts.map +1 -0
- package/dist/models/execution.d.ts +6 -0
- package/dist/models/execution.d.ts.map +1 -0
- package/dist/models/generation-types.d.ts +40 -0
- package/dist/models/generation-types.d.ts.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +42 -43
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +3 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/output.d.ts +5 -0
- package/dist/models/output.d.ts.map +1 -0
- package/dist/models/resolve.d.ts +4 -0
- package/dist/models/resolve.d.ts.map +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +75 -87
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +67 -76
- package/dist/objects/query/index.js.map +1 -1
- package/dist/ontology/index.d.ts +1 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +62 -113
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.d.ts +7 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +65 -116
- package/dist/ontology/internal.js.map +3 -4
- package/dist/pipelines/index.js +57 -66
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +58 -67
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +11 -15
- package/dist/query.js.map +1 -1
- package/dist/queues/index.d.ts +2 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +6 -7
- package/dist/queues/index.js.map +1 -1
- package/dist/queues/types.d.ts +3 -20
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/rules/internal.js +4 -5
- package/dist/rules/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +2 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +2 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.js +13 -14
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/sandboxes/errors.d.ts +4 -0
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +2 -2
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +14 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -7
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/scheduler/index.js +9 -10
- package/dist/scheduler/index.js.map +1 -1
- package/dist/schedules/index.js +31 -33
- package/dist/schedules/index.js.map +1 -1
- package/dist/shares/internal.js +46 -54
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +7 -9
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +4 -8
- package/dist/storage/action-runs/provider.js.map +1 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +26 -30
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +0 -3
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/attribution.d.ts +4 -0
- package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
- package/dist/storage/ai-cost/groups.d.ts +3 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +1 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +30 -143
- package/dist/storage/ai-cost/provider.js.map +3 -4
- package/dist/storage/ai-cost/types.d.ts +15 -0
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +14 -16
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.js +56 -57
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/auth/in-memory.d.ts +1 -1
- package/dist/storage/auth/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +34 -36
- package/dist/storage/connector-connections/provider.js.map +2 -2
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +14 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +6 -2
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +2 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +221 -256
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -0
- package/dist/storage/internal.d.ts.map +1 -0
- package/dist/storage/internal.js +47 -0
- package/dist/storage/internal.js.map +9 -0
- package/dist/storage/ontology/provider.js +105 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/operation-scope.js +18 -19
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +4 -6
- package/dist/storage/pipeline-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/provider.js +66 -70
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/share-grants/provider.js +17 -19
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-sessions/provider.js +14 -15
- package/dist/storage/share-sessions/provider.js.map +1 -1
- package/dist/storage/sync-runs/provider.js +4 -6
- package/dist/storage/sync-runs/provider.js.map +1 -1
- package/dist/storage/webhook-runs/provider.js +4 -6
- package/dist/storage/webhook-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +13 -21
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +0 -3
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +55 -65
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -1
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/agent-execution.d.ts +1 -0
- package/dist/testing/agent-execution.d.ts.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -0
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/index.js +911 -799
- package/dist/testing/index.js.map +9 -9
- package/dist/testing/workflow-execution.d.ts +1 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -1
- package/dist/webhooks/internal.js +51 -59
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +11 -13
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts +2 -0
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +135 -147
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/run-dispatch.d.ts +0 -1
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +48 -30
- package/src/actions/run-dispatch.ts +2 -6
- package/src/actions/types/context.ts +2 -0
- package/src/actions/validation.ts +2 -1
- package/src/agents/adapters.ts +4 -9
- package/src/agents/{context.ts → context/entries.ts} +4 -4
- package/src/agents/context/index.ts +15 -0
- package/src/agents/context-model.ts +1 -1
- package/src/agents/context-resolution.ts +1 -1
- package/src/agents/index.ts +4 -4
- package/src/agents/message.ts +1 -1
- package/src/agents/model-loop.ts +8 -0
- package/src/agents/request.ts +11 -26
- package/src/agents/streams/index.ts +18 -0
- package/src/agents/streams/internal.ts +19 -0
- package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
- package/src/agents/types.ts +1 -1
- package/src/agents/validation.ts +3 -7
- package/src/auth/index.ts +0 -1
- package/src/bootstrap/discovery.ts +81 -24
- package/src/bootstrap/index.ts +8 -1
- package/src/errors/internal.ts +90 -10
- package/src/errors/redaction.ts +98 -0
- package/src/errors/types.ts +4 -0
- package/src/execution/agent.ts +5 -3
- package/src/execution/durable.ts +11 -1
- package/src/execution/primitive.ts +5 -1
- package/src/execution/request.ts +3 -0
- package/src/index.ts +20 -18
- package/src/logging/index.ts +2 -33
- package/src/logging/internal.ts +43 -0
- package/src/models/errors.ts +12 -0
- package/src/models/execution/binding.ts +29 -0
- package/src/models/execution/errors.ts +18 -0
- package/src/models/execution/index.ts +26 -0
- package/src/models/execution/model-call-accounting.ts +211 -0
- package/src/models/execution/model-call-admission.ts +127 -0
- package/src/models/execution/model-call-limits.ts +135 -0
- package/src/models/execution/model-call-recorder.ts +235 -0
- package/src/models/execution/model-call-recovery.ts +125 -0
- package/src/models/execution/recovery-queue.ts +31 -0
- package/src/models/execution/types.ts +58 -0
- package/src/models/execution/usage.ts +23 -0
- package/src/models/execution.ts +207 -0
- package/src/models/generation-types.ts +50 -0
- package/src/models/index.ts +8 -0
- package/src/models/language-model.ts +3 -0
- package/src/models/output.ts +45 -0
- package/src/models/resolve.ts +27 -0
- package/src/objects/execution.ts +1 -1
- package/src/ontology/index.ts +1 -2
- package/src/ontology/internal.ts +35 -0
- package/src/projections/run-dispatch.ts +1 -0
- package/src/query.ts +0 -1
- package/src/queues/index.ts +4 -2
- package/src/queues/types.ts +6 -25
- package/src/runtime/create.ts +2 -1
- package/src/runtime/host.ts +2 -1
- package/src/runtime/sixb.ts +4 -0
- package/src/sandboxes/errors.ts +5 -0
- package/src/sandboxes/index.ts +3 -0
- package/src/sandboxes/sandbox.ts +35 -7
- package/src/storage/agents/in-memory.ts +0 -3
- package/src/storage/agents/types.ts +0 -3
- package/src/storage/ai-cost/analytics.ts +1 -1
- package/src/storage/ai-cost/attribution.ts +15 -0
- package/src/storage/ai-cost/groups.ts +5 -1
- package/src/storage/ai-cost/provider.ts +1 -0
- package/src/storage/ai-cost/types.ts +7 -0
- package/src/storage/auth/in-memory.ts +1 -1
- package/src/storage/executions/in-memory.ts +4 -9
- package/src/storage/executions/provider.ts +4 -0
- package/src/storage/executions/types.ts +6 -2
- package/src/storage/executions/validation.ts +32 -0
- package/src/storage/in-memory/index.ts +16 -1
- package/src/storage/index.ts +3 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/testing/action-execution.ts +9 -2
- package/src/testing/agent-execution.ts +3 -0
- package/src/testing/agent-storage-contract.ts +0 -5
- package/src/testing/ai-model-call-groups-contract.ts +74 -2
- package/src/testing/execution-storage-contract.ts +59 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +0 -9
- package/src/workflows/run-dispatch.ts +0 -3
- package/src/workflows/types.ts +2 -0
- package/src/workflows/validation.ts +1 -1
- package/dist/agents/context.d.ts.map +0 -1
- package/dist/agents/context.js +0 -23
- package/dist/agents/streams.d.ts.map +0 -1
- package/dist/agents/streams.js +0 -55
- package/dist/chunk-08m3b6w8.js +0 -32
- package/dist/chunk-19jp6g9d.js.map +0 -11
- package/dist/chunk-2xns679x.js.map +0 -11
- package/dist/chunk-3xep5cjx.js.map +0 -15
- package/dist/chunk-407j3msh.js +0 -60
- package/dist/chunk-4qfkag59.js +0 -1568
- package/dist/chunk-4qfkag59.js.map +0 -20
- package/dist/chunk-5e3pq99w.js.map +0 -11
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-ajnan18g.js.map +0 -12
- package/dist/chunk-c15dr03f.js +0 -43
- package/dist/chunk-d8qkxt2v.js.map +0 -10
- package/dist/chunk-jq43kdvk.js +0 -50
- package/dist/chunk-k522z7v6.js.map +0 -10
- package/dist/chunk-p03r0h5s.js.map +0 -16
- package/dist/chunk-p1rzczbt.js +0 -218
- package/dist/chunk-rafagrwr.js.map +0 -11
- package/dist/chunk-xajtptbw.js.map +0 -40
- package/dist/chunk-y64skrwp.js +0 -19
- package/dist/chunk-zcnhxkvd.js +0 -7
- package/dist/logging/types.js +0 -27
- package/dist/logging/types.js.map +0 -9
- /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
- /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
- /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
- /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
- /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
- /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
|
-
/**
|
|
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
|
|
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,
|
package/src/storage/index.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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(
|
|
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 },
|
package/src/testing/execution.ts
CHANGED
|
@@ -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}` },
|