@sixb/core 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +193 -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 +80 -88
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/in-memory.d.ts +8 -2
- package/dist/broker/in-memory.d.ts.map +1 -1
- package/dist/broker/index.d.ts +4 -2
- package/dist/broker/index.d.ts.map +1 -1
- package/dist/broker/index.js +12 -10
- package/dist/broker/index.js.map +1 -1
- package/dist/broker/retention.d.ts +4 -0
- package/dist/broker/retention.d.ts.map +1 -0
- package/dist/broker/subscriber.d.ts +10 -0
- package/dist/broker/subscriber.d.ts.map +1 -0
- package/dist/broker/types.d.ts +14 -1
- package/dist/broker/types.d.ts.map +1 -1
- 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-ajnan18g.js → chunk-1824gssz.js} +74 -106
- package/dist/chunk-1824gssz.js.map +12 -0
- package/dist/chunk-28ja2cjs.js +602 -0
- package/dist/chunk-28ja2cjs.js.map +18 -0
- package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
- package/dist/chunk-2c4j899j.js.map +11 -0
- package/dist/{chunk-rv2hkwwa.js → chunk-358caqf5.js} +157 -180
- package/dist/chunk-358caqf5.js.map +12 -0
- 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-s5y30bc9.js → chunk-3qms4nax.js} +52 -50
- package/dist/{chunk-s5y30bc9.js.map → chunk-3qms4nax.js.map} +5 -5
- 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-wtf06et8.js → chunk-5c7ga8zz.js} +54 -177
- package/dist/chunk-5c7ga8zz.js.map +12 -0
- 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-xajtptbw.js → chunk-5p1v802y.js} +1401 -445
- package/dist/chunk-5p1v802y.js.map +44 -0
- 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-xhy826cz.js → chunk-85cd7e8c.js} +8 -7
- package/dist/chunk-85cd7e8c.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-aa2pen2v.js → chunk-976rxdpx.js} +188 -175
- package/dist/{chunk-aa2pen2v.js.map → chunk-976rxdpx.js.map} +2 -2
- 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-8m5ejdpn.js → chunk-9x8dybsb.js} +5 -5
- package/dist/chunk-9x8dybsb.js.map +10 -0
- package/dist/chunk-aa6z4a19.js +358 -0
- package/dist/chunk-aa6z4a19.js.map +12 -0
- package/dist/{chunk-3xep5cjx.js → chunk-agbbygvh.js} +104 -86
- package/dist/chunk-agbbygvh.js.map +15 -0
- 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-w9tg6yyb.js → chunk-b0ec55a1.js} +54 -37
- package/dist/chunk-b0ec55a1.js.map +12 -0
- 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-gbejpkex.js → chunk-bn138h9w.js} +27 -28
- package/dist/{chunk-gbejpkex.js.map → chunk-bn138h9w.js.map} +3 -3
- 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-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-f26bck4t.js → chunk-ftv470j8.js} +393 -355
- package/dist/{chunk-f26bck4t.js.map → chunk-ftv470j8.js.map} +7 -7
- 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-q0k9nc5a.js → chunk-g7knyczr.js} +98 -98
- package/dist/{chunk-q0k9nc5a.js.map → chunk-g7knyczr.js.map} +2 -2
- 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-8tsf6dmc.js → chunk-gqh45d2n.js} +244 -205
- package/dist/chunk-gqh45d2n.js.map +15 -0
- package/dist/chunk-h3v76ams.js +32 -0
- package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
- 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-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-k34z5rvh.js → chunk-kfee1h52.js} +132 -48
- package/dist/chunk-kfee1h52.js.map +13 -0
- 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-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-h5vqbfmd.js → chunk-nmbxcaqx.js} +117 -117
- package/dist/{chunk-h5vqbfmd.js.map → chunk-nmbxcaqx.js.map} +3 -3
- package/dist/{chunk-n2w475r0.js → chunk-nt99sxd6.js} +82 -82
- package/dist/{chunk-n2w475r0.js.map → chunk-nt99sxd6.js.map} +3 -3
- package/dist/{chunk-v1xppd0y.js → chunk-p5vcsw9c.js} +60 -60
- package/dist/{chunk-v1xppd0y.js.map → chunk-p5vcsw9c.js.map} +2 -2
- package/dist/{chunk-sbzzr4kx.js → chunk-p6a4npdx.js} +1260 -1289
- package/dist/chunk-p6a4npdx.js.map +58 -0
- 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-qma80ych.js +30 -0
- package/dist/chunk-qma80ych.js.map +11 -0
- package/dist/{chunk-mth82m8t.js → chunk-qyeptdyv.js} +171 -77
- package/dist/chunk-qyeptdyv.js.map +15 -0
- 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-mwsxn98e.js → chunk-r7fj830t.js} +253 -200
- package/dist/chunk-r7fj830t.js.map +36 -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-gzasd5b6.js → chunk-rtk71jzp.js} +22 -22
- package/dist/{chunk-gzasd5b6.js.map → chunk-rtk71jzp.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-3z1qec12.js → chunk-t1f4f1ve.js} +107 -64
- package/dist/{chunk-3z1qec12.js.map → chunk-t1f4f1ve.js.map} +3 -3
- package/dist/chunk-v2vcg0w6.js +151 -0
- package/dist/chunk-v2vcg0w6.js.map +11 -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-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-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
- 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-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
- package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
- package/dist/connectors/connections/authorizations.d.ts.map +1 -1
- package/dist/connectors/connections/contracts.d.ts +3 -0
- package/dist/connectors/connections/contracts.d.ts.map +1 -1
- package/dist/connectors/connections/internal.js +9 -10
- package/dist/connectors/connections/internal.js.map +1 -1
- package/dist/connectors/connections/request.d.ts +3 -1
- package/dist/connectors/connections/request.d.ts.map +1 -1
- package/dist/connectors/connections/runs.d.ts.map +1 -1
- package/dist/connectors/connections/tokens.d.ts.map +1 -1
- package/dist/connectors/connections/validation.d.ts +5 -1
- package/dist/connectors/connections/validation.d.ts.map +1 -1
- package/dist/connectors/types.d.ts +19 -4
- package/dist/connectors/types.d.ts.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/execution.d.ts +1 -1
- package/dist/events/execution.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/events/service.d.ts +2 -2
- package/dist/events/service.d.ts.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 +71 -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 +64 -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 +66 -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 +17 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +457 -477
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/changes.d.ts +5 -0
- package/dist/lake-storage/changes.d.ts.map +1 -0
- package/dist/lake-storage/in-memory.d.ts +2 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +2 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +40 -42
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +36 -0
- package/dist/lake-storage/types.d.ts.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.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +46 -49
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +12 -1
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/index.d.ts +1 -1
- package/dist/materializer/index.d.ts.map +1 -1
- package/dist/materializer/index.js +137 -145
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/materializer.d.ts +5 -1
- package/dist/materializer/materializer.d.ts.map +1 -1
- package/dist/materializer/projections/entry-validator.d.ts +2 -1
- package/dist/materializer/projections/entry-validator.d.ts.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +4 -3
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts +2 -1
- package/dist/materializer/shared/normalize.d.ts.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/pipelines/run-dispatch.d.ts.map +1 -1
- package/dist/projections/internal.js +56 -67
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/run-dispatch.d.ts.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/in-memory.d.ts +7 -3
- package/dist/queues/in-memory.d.ts.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/indexed-heap.d.ts +15 -0
- package/dist/queues/indexed-heap.d.ts.map +1 -0
- 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/ontology-mutations.d.ts +3 -1
- package/dist/runtime/ontology-mutations.d.ts.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/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +35 -37
- package/dist/storage/connector-connections/provider.js.map +3 -3
- package/dist/storage/connector-connections/types.d.ts +3 -2
- package/dist/storage/connector-connections/types.d.ts.map +1 -1
- 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 +7 -8
- 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/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/shared-state.d.ts +15 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +6 -0
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +16 -0
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +107 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/sources.d.ts +13 -4
- package/dist/storage/ontology/sources.d.ts.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/lifecycle.d.ts.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/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.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 +56 -65
- package/dist/syncs/index.js.map +1 -1
- package/dist/syncs/run-dispatch.d.ts.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/broker-contract.d.ts.map +1 -1
- package/dist/testing/connector-connection-storage-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.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2282 -1662
- package/dist/testing/index.js.map +16 -15
- package/dist/testing/lake-changes-contract.d.ts +6 -0
- package/dist/testing/lake-changes-contract.d.ts.map +1 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/workflow-execution.d.ts +1 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -1
- package/dist/webhooks/connections.d.ts +6 -0
- package/dist/webhooks/connections.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +1 -1
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/internal.d.ts +2 -0
- package/dist/webhooks/internal.d.ts.map +1 -1
- package/dist/webhooks/internal.js +98 -61
- package/dist/webhooks/internal.js.map +4 -3
- package/dist/webhooks/registry.d.ts +1 -1
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/types.d.ts +15 -4
- package/dist/webhooks/types.d.ts.map +1 -1
- 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 +136 -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 +3 -2
- 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/broker/in-memory.ts +104 -39
- package/src/broker/index.ts +4 -1
- package/src/broker/retention.ts +28 -0
- package/src/broker/subscriber.ts +21 -0
- package/src/broker/types.ts +15 -1
- package/src/connectors/builders.ts +0 -6
- package/src/connectors/connections/authorizations.ts +11 -5
- package/src/connectors/connections/contracts.ts +3 -0
- package/src/connectors/connections/request.ts +56 -22
- package/src/connectors/connections/runs.ts +1 -0
- package/src/connectors/connections/tokens.ts +4 -0
- package/src/connectors/connections/validation.ts +91 -5
- package/src/connectors/types.ts +19 -4
- package/src/errors/internal.ts +90 -10
- package/src/errors/redaction.ts +98 -0
- package/src/errors/types.ts +4 -0
- package/src/events/execution.ts +2 -2
- package/src/events/service.ts +3 -3
- 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 +30 -20
- package/src/lake-storage/changes.ts +43 -0
- package/src/lake-storage/in-memory.ts +73 -0
- package/src/lake-storage/index.ts +4 -0
- package/src/lake-storage/types.ts +40 -0
- package/src/logging/index.ts +2 -33
- package/src/logging/internal.ts +43 -0
- package/src/logging/service.ts +1 -1
- package/src/materialization/index.ts +2 -0
- package/src/materialization/model.ts +14 -1
- package/src/materializer/index.ts +2 -0
- package/src/materializer/materializer.ts +10 -0
- package/src/materializer/projections/entry-validator.ts +19 -1
- package/src/materializer/projections/replace.ts +36 -1
- package/src/materializer/projections/source-materialization.ts +26 -6
- package/src/materializer/shared/normalize.ts +1 -1
- 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/pipelines/run-dispatch.ts +21 -1
- package/src/projections/run-dispatch.ts +31 -68
- package/src/query.ts +0 -1
- package/src/queues/in-memory.ts +105 -62
- package/src/queues/index.ts +4 -2
- package/src/queues/indexed-heap.ts +74 -0
- package/src/queues/types.ts +6 -25
- package/src/runtime/create.ts +2 -1
- package/src/runtime/host.ts +2 -15
- package/src/runtime/ontology-mutations.ts +4 -0
- 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/connector-connections/in-memory.ts +3 -1
- package/src/storage/connector-connections/provider/runs.ts +3 -1
- package/src/storage/connector-connections/types.ts +3 -2
- 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 +4 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/ontology/in-memory/materializations-state.ts +5 -18
- package/src/storage/ontology/in-memory/materializations.ts +73 -92
- package/src/storage/ontology/in-memory/shared-state.ts +26 -1
- package/src/storage/ontology/in-memory/source-roots.ts +123 -0
- package/src/storage/ontology/in-memory/sources.ts +78 -23
- package/src/storage/ontology/index.ts +1 -0
- package/src/storage/ontology/provider.ts +70 -0
- package/src/storage/ontology/sources.ts +14 -3
- package/src/storage/projection-runs/lifecycle.ts +5 -2
- package/src/storage/projection-runs/types.ts +4 -3
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/syncs/run-dispatch.ts +19 -1
- 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/broker-contract.ts +95 -0
- package/src/testing/connector-connection-storage-contract.ts +18 -1
- package/src/testing/execution-storage-contract.ts +59 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/lake-changes-contract.ts +240 -0
- package/src/testing/materializer-storage-contract.ts +172 -1
- package/src/testing/ontology-storage-contract.ts +7 -0
- package/src/testing/projection-run-storage-contract.ts +34 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/webhooks/connections.ts +56 -0
- package/src/webhooks/index.ts +2 -0
- package/src/webhooks/internal.ts +2 -0
- package/src/webhooks/registry.ts +3 -4
- package/src/webhooks/types.ts +17 -4
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +0 -9
- package/src/workflows/run-dispatch.ts +42 -32
- 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-5gd7tpv6.js.map +0 -11
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-8m5ejdpn.js.map +0 -10
- package/dist/chunk-8tsf6dmc.js.map +0 -15
- 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-k34z5rvh.js.map +0 -11
- package/dist/chunk-k522z7v6.js.map +0 -10
- package/dist/chunk-mth82m8t.js.map +0 -14
- package/dist/chunk-mwsxn98e.js.map +0 -36
- 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-rv2hkwwa.js.map +0 -14
- package/dist/chunk-sbzzr4kx.js.map +0 -63
- package/dist/chunk-tpnd31c1.js +0 -242
- package/dist/chunk-tpnd31c1.js.map +0 -11
- package/dist/chunk-w9tg6yyb.js.map +0 -12
- package/dist/chunk-wtf06et8.js.map +0 -14
- package/dist/chunk-xajtptbw.js.map +0 -40
- package/dist/chunk-xhy826cz.js.map +0 -10
- 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
|
@@ -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
|
}
|
package/src/testing/index.ts
CHANGED
|
@@ -59,6 +59,7 @@ export {
|
|
|
59
59
|
type ExecutionStorageContractSuiteOptions,
|
|
60
60
|
runExecutionStorageContractSuite,
|
|
61
61
|
} from "./execution-storage-contract"
|
|
62
|
+
export { runLakeChangesContractSuite } from "./lake-changes-contract"
|
|
62
63
|
export {
|
|
63
64
|
type LakeMergeStorageContractSuiteOptions,
|
|
64
65
|
runLakeMergeStorageContractSuite,
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, test } from "bun:test"
|
|
2
|
+
import { col, defineDataset } from "../datasets"
|
|
3
|
+
import type { DatasetChanges, DatasetRow, DatasetRowChange, LakeStorage } from "../lake-storage"
|
|
4
|
+
|
|
5
|
+
export function runLakeChangesContractSuite<T extends LakeStorage>(
|
|
6
|
+
name: string,
|
|
7
|
+
harness: {
|
|
8
|
+
readonly createStorage: () => T | Promise<T>
|
|
9
|
+
readonly teardown?: (storage: T) => void | Promise<void>
|
|
10
|
+
}
|
|
11
|
+
): void {
|
|
12
|
+
describe(name, () => {
|
|
13
|
+
let storage: T
|
|
14
|
+
const dataset = defineDataset("delta.contract", {
|
|
15
|
+
schema: [
|
|
16
|
+
col("id", "string"),
|
|
17
|
+
col("part", "string"),
|
|
18
|
+
col("value", "string", { nullable: true }),
|
|
19
|
+
col("ignored", "string"),
|
|
20
|
+
],
|
|
21
|
+
})
|
|
22
|
+
const row = (id: string, value: string | null, part = "x", ignored = "unused"): DatasetRow => ({
|
|
23
|
+
id,
|
|
24
|
+
part,
|
|
25
|
+
value,
|
|
26
|
+
ignored,
|
|
27
|
+
})
|
|
28
|
+
const columns = ["id", "part", "value"]
|
|
29
|
+
beforeEach(async () => {
|
|
30
|
+
storage = await harness.createStorage()
|
|
31
|
+
await storage.createDataset(dataset)
|
|
32
|
+
})
|
|
33
|
+
afterEach(async () => {
|
|
34
|
+
if (harness.teardown) await harness.teardown(storage)
|
|
35
|
+
else await storage.close?.()
|
|
36
|
+
})
|
|
37
|
+
async function write(rows: readonly DatasetRow[]) {
|
|
38
|
+
const writer = await storage.beginWrite({ dataset })
|
|
39
|
+
await writer.writeRows(rows)
|
|
40
|
+
return (await writer.commit()).versionId
|
|
41
|
+
}
|
|
42
|
+
async function read(fromVersionId: string, toVersionId: string, keyColumns = ["id"]) {
|
|
43
|
+
if (!storage.readChanges) throw new Error("Provider does not implement readChanges")
|
|
44
|
+
return storage.readChanges({
|
|
45
|
+
datasetId: dataset.id,
|
|
46
|
+
fromVersionId,
|
|
47
|
+
toVersionId,
|
|
48
|
+
columns,
|
|
49
|
+
keyColumns,
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
async function collect(reader: DatasetChanges | null) {
|
|
53
|
+
if (!reader) throw new Error("Expected a complete delta")
|
|
54
|
+
const changes: DatasetRowChange[] = []
|
|
55
|
+
try {
|
|
56
|
+
for await (const change of reader.changes) changes.push(change)
|
|
57
|
+
} finally {
|
|
58
|
+
await reader.close()
|
|
59
|
+
}
|
|
60
|
+
expect(changes).toHaveLength(reader.changeCount)
|
|
61
|
+
return changes.sort((a, b) =>
|
|
62
|
+
JSON.stringify(a.after ?? a.before).localeCompare(JSON.stringify(b.after ?? b.before))
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Red proof: remove the provider's readChanges implementation; this suite must fail.
|
|
67
|
+
test("compares pinned states across skipped versions, including removals and key changes", async () => {
|
|
68
|
+
const first = await write([row("A", "one"), row("B", "two"), row("C", "three")])
|
|
69
|
+
await write([row("A", "temporary"), row("B", "two"), row("C", "three")])
|
|
70
|
+
const last = await write([row("A", "one"), row("B", "new"), row("D", "three")])
|
|
71
|
+
const reader = await read(first, last)
|
|
72
|
+
expect(reader?.fromRowCount).toBe(3)
|
|
73
|
+
expect(reader?.toRowCount).toBe(3)
|
|
74
|
+
expect(await collect(reader)).toEqual([
|
|
75
|
+
{
|
|
76
|
+
before: { id: "B", part: "x", value: "two" },
|
|
77
|
+
after: { id: "B", part: "x", value: "new" },
|
|
78
|
+
},
|
|
79
|
+
{ before: { id: "C", part: "x", value: "three" }, after: null },
|
|
80
|
+
{ before: null, after: { id: "D", part: "x", value: "three" } },
|
|
81
|
+
])
|
|
82
|
+
})
|
|
83
|
+
test("ignores row order and unrequested columns", async () => {
|
|
84
|
+
const first = await write([row("A", "one"), row("B", "two")])
|
|
85
|
+
const last = await write([row("B", "two", "x", "changed"), row("A", "one")])
|
|
86
|
+
expect(await collect(await read(first, last))).toEqual([])
|
|
87
|
+
expect(await collect(await read(last, last))).toEqual([])
|
|
88
|
+
})
|
|
89
|
+
test("distinguishes null from a value and handles an empty target", async () => {
|
|
90
|
+
const first = await write([row("A", null)])
|
|
91
|
+
const second = await write([row("A", "value")])
|
|
92
|
+
expect(await collect(await read(first, second))).toEqual([
|
|
93
|
+
{
|
|
94
|
+
before: { id: "A", part: "x", value: null },
|
|
95
|
+
after: { id: "A", part: "x", value: "value" },
|
|
96
|
+
},
|
|
97
|
+
])
|
|
98
|
+
const empty = await write([])
|
|
99
|
+
expect(await collect(await read(second, empty))).toEqual([
|
|
100
|
+
{ before: { id: "A", part: "x", value: "value" }, after: null },
|
|
101
|
+
])
|
|
102
|
+
expect(await collect(await read(empty, second))).toEqual([
|
|
103
|
+
{ before: null, after: { id: "A", part: "x", value: "value" } },
|
|
104
|
+
])
|
|
105
|
+
})
|
|
106
|
+
test("supports composite keys without concatenation collisions", async () => {
|
|
107
|
+
const first = await write([row("a:b", "one", "c"), row("a", "two", "b:c")])
|
|
108
|
+
const last = await write([row("a:b", "new", "c"), row("a", "two", "b:c")])
|
|
109
|
+
expect(await collect(await read(first, last, ["id", "part"]))).toEqual([
|
|
110
|
+
{
|
|
111
|
+
before: { id: "a:b", part: "c", value: "one" },
|
|
112
|
+
after: { id: "a:b", part: "c", value: "new" },
|
|
113
|
+
},
|
|
114
|
+
])
|
|
115
|
+
})
|
|
116
|
+
test("refuses duplicate keys in either snapshot rather than losing rows", async () => {
|
|
117
|
+
const first = await write([row("A", "one"), row("A", "two")])
|
|
118
|
+
const last = await write([row("A", "new")])
|
|
119
|
+
expect(await read(first, last)).toBeNull()
|
|
120
|
+
expect(await read(last, first)).toBeNull()
|
|
121
|
+
})
|
|
122
|
+
test("refuses blank identities and invalid column requests", async () => {
|
|
123
|
+
const first = await write([row(" ", "one")])
|
|
124
|
+
expect(await read(first, first)).toBeNull()
|
|
125
|
+
await expect(read(first, first, [])).rejects.toThrow("distinct columns")
|
|
126
|
+
await expect(read(first, first, ["missing"])).rejects.toThrow("distinct columns")
|
|
127
|
+
})
|
|
128
|
+
test("releases the connection between yielded changes and closes after early exit", async () => {
|
|
129
|
+
const first = await write([row("A", "one"), row("B", "two")])
|
|
130
|
+
const last = await write([row("A", "new"), row("B", "new")])
|
|
131
|
+
const reader = await read(first, last)
|
|
132
|
+
expect(reader).not.toBeNull()
|
|
133
|
+
try {
|
|
134
|
+
for await (const _change of reader!.changes) {
|
|
135
|
+
expect((await storage.getLatestVersion(dataset.id))?.versionId).toBe(last)
|
|
136
|
+
break
|
|
137
|
+
}
|
|
138
|
+
} finally {
|
|
139
|
+
await reader!.close()
|
|
140
|
+
}
|
|
141
|
+
expect((await storage.getLatestVersion(dataset.id))?.versionId).toBe(last)
|
|
142
|
+
})
|
|
143
|
+
test("pages a complete pinned delta while a newer snapshot is published", async () => {
|
|
144
|
+
const count = 5_007
|
|
145
|
+
const first = await write(Array.from({ length: count }, (_, i) => row(String(i), "old")))
|
|
146
|
+
const last = await write(Array.from({ length: count }, (_, i) => row(String(i), "new")))
|
|
147
|
+
const reader = await read(first, last)
|
|
148
|
+
expect(reader?.changeCount).toBe(count)
|
|
149
|
+
await write([row("later", "unrelated")])
|
|
150
|
+
const changes = await collect(reader)
|
|
151
|
+
expect(new Set(changes.map((change) => change.after?.id)).size).toBe(count)
|
|
152
|
+
expect(
|
|
153
|
+
changes.every((change) => change.before?.value === "old" && change.after?.value === "new")
|
|
154
|
+
).toBe(true)
|
|
155
|
+
})
|
|
156
|
+
test("returns complete typed images without exposing mutable stored values", async () => {
|
|
157
|
+
const typed = defineDataset("delta.typed", {
|
|
158
|
+
schema: [
|
|
159
|
+
col("id", "string"),
|
|
160
|
+
col("payload", "json"),
|
|
161
|
+
col("at", "timestamp"),
|
|
162
|
+
col("amount", "int64"),
|
|
163
|
+
],
|
|
164
|
+
})
|
|
165
|
+
await storage.createDataset(typed)
|
|
166
|
+
const writeTyped = async (value: number) => {
|
|
167
|
+
const writer = await storage.beginWrite({ dataset: typed })
|
|
168
|
+
await writer.writeRows([
|
|
169
|
+
{
|
|
170
|
+
id: "a",
|
|
171
|
+
payload: { nested: [value] },
|
|
172
|
+
at: "2026-01-01T00:00:00.000Z",
|
|
173
|
+
amount: "9007199254740993",
|
|
174
|
+
},
|
|
175
|
+
])
|
|
176
|
+
return (await writer.commit()).versionId
|
|
177
|
+
}
|
|
178
|
+
const first = await writeTyped(1)
|
|
179
|
+
const last = await writeTyped(2)
|
|
180
|
+
const reader = await storage.readChanges!({
|
|
181
|
+
datasetId: typed.id,
|
|
182
|
+
fromVersionId: first,
|
|
183
|
+
toVersionId: last,
|
|
184
|
+
keyColumns: ["id"],
|
|
185
|
+
columns: ["id", "payload", "at", "amount"],
|
|
186
|
+
})
|
|
187
|
+
const changes = await collect(reader)
|
|
188
|
+
expect(changes).toEqual([
|
|
189
|
+
{
|
|
190
|
+
before: {
|
|
191
|
+
id: "a",
|
|
192
|
+
payload: { nested: [1] },
|
|
193
|
+
at: "2026-01-01T00:00:00.000Z",
|
|
194
|
+
amount: "9007199254740993",
|
|
195
|
+
},
|
|
196
|
+
after: {
|
|
197
|
+
id: "a",
|
|
198
|
+
payload: { nested: [2] },
|
|
199
|
+
at: "2026-01-01T00:00:00.000Z",
|
|
200
|
+
amount: "9007199254740993",
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
])
|
|
204
|
+
;(changes[0]!.after!.payload as { nested: number[] }).nested.push(3)
|
|
205
|
+
const rows: DatasetRow[] = []
|
|
206
|
+
for await (const value of storage.readRows({ datasetId: typed.id, versionId: last }))
|
|
207
|
+
rows.push(value)
|
|
208
|
+
expect(rows[0]?.payload).toEqual({ nested: [2] })
|
|
209
|
+
})
|
|
210
|
+
test("returns unavailable for a version belonging to another dataset", async () => {
|
|
211
|
+
const first = await write([row("A", "one")])
|
|
212
|
+
const other = defineDataset("delta.other", { schema: [col("id", "string")] })
|
|
213
|
+
await storage.createDataset(other)
|
|
214
|
+
const writer = await storage.beginWrite({ dataset: other })
|
|
215
|
+
await writer.writeRows([{ id: "other" }])
|
|
216
|
+
const otherVersion = await writer.commit()
|
|
217
|
+
expect(await read(otherVersion.versionId, first)).toBeNull()
|
|
218
|
+
expect(await read(first, otherVersion.versionId)).toBeNull()
|
|
219
|
+
})
|
|
220
|
+
test("can close an unread delta and observes cancellation", async () => {
|
|
221
|
+
const first = await write([row("A", "one")])
|
|
222
|
+
const last = await write([row("A", "new")])
|
|
223
|
+
const reader = await read(first, last)
|
|
224
|
+
await reader!.close()
|
|
225
|
+
await reader!.close()
|
|
226
|
+
const controller = new AbortController()
|
|
227
|
+
controller.abort(new Error("cancelled delta"))
|
|
228
|
+
await expect(
|
|
229
|
+
storage.readChanges!({
|
|
230
|
+
datasetId: dataset.id,
|
|
231
|
+
fromVersionId: first,
|
|
232
|
+
toVersionId: last,
|
|
233
|
+
columns,
|
|
234
|
+
keyColumns: ["id"],
|
|
235
|
+
signal: controller.signal,
|
|
236
|
+
})
|
|
237
|
+
).rejects.toThrow("cancelled delta")
|
|
238
|
+
})
|
|
239
|
+
})
|
|
240
|
+
}
|
|
@@ -19,6 +19,8 @@ import {
|
|
|
19
19
|
createOntologyMaterializer,
|
|
20
20
|
type OntologyEditOperation,
|
|
21
21
|
ProjectionRegistry,
|
|
22
|
+
type ProjectionSourceBase,
|
|
23
|
+
type ProjectionSourceDeletion,
|
|
22
24
|
type ProjectionSourceEntry,
|
|
23
25
|
} from "../materializer"
|
|
24
26
|
import type { ActionRunStorage, ProjectionRunStorage } from "../storage"
|
|
@@ -125,6 +127,175 @@ export function runMaterializerStorageContractSuite<TStorage extends Storage>(
|
|
|
125
127
|
name: string,
|
|
126
128
|
provider: MaterializerStorageContractProvider<TStorage>
|
|
127
129
|
): void {
|
|
130
|
+
// Regression: replacing previousSourceRows with only the latest manifest loses "a" at v3.
|
|
131
|
+
// Removing root retirement checks from cleanup deletes "a" when v1 becomes terminal.
|
|
132
|
+
test(`${name} retains current roots across deltas, cleanup, overrides and full replacement`, async () => {
|
|
133
|
+
const createdStorage = await provider.createStorage()
|
|
134
|
+
const storage = requireContractStorage(createdStorage)
|
|
135
|
+
let ordinal = 0
|
|
136
|
+
const projectId = "materializer-storage-contract"
|
|
137
|
+
const source = { projectionId: devices.id }
|
|
138
|
+
const materializer = createOntologyMaterializer({
|
|
139
|
+
projectId,
|
|
140
|
+
ontology,
|
|
141
|
+
projections,
|
|
142
|
+
storage,
|
|
143
|
+
dependencies: { batching: { sourceStageRows: 1, statePageRows: 1, planChunkRows: 1 } },
|
|
144
|
+
})
|
|
145
|
+
const active = async (): Promise<ProjectionSourceBase> => {
|
|
146
|
+
const current = await materializer.projections.getActive(source)
|
|
147
|
+
if (!current?.lastCommitId) throw new Error("Missing source head")
|
|
148
|
+
return { materializationId: current.materializationId, lastCommitId: current.lastCommitId }
|
|
149
|
+
}
|
|
150
|
+
const replace = async (
|
|
151
|
+
values: readonly (ProjectionSourceEntry | ProjectionSourceDeletion)[],
|
|
152
|
+
base?: ProjectionSourceBase,
|
|
153
|
+
interleave?: { readonly version: number; readonly beforeSeal?: () => Promise<void> }
|
|
154
|
+
) => {
|
|
155
|
+
const version = interleave?.version ?? ++ordinal
|
|
156
|
+
const datasetVersion = {
|
|
157
|
+
datasetId: devices.id,
|
|
158
|
+
versionId: `delta-v${version}`,
|
|
159
|
+
createdAt: `2026-01-${String(version).padStart(2, "0")}T00:00:00.000Z`,
|
|
160
|
+
}
|
|
161
|
+
const execution = await claim(storage, {
|
|
162
|
+
runId: `delta-run-${version}`,
|
|
163
|
+
projectionId: devices.id,
|
|
164
|
+
protocol: "replacement",
|
|
165
|
+
datasetVersion,
|
|
166
|
+
})
|
|
167
|
+
const bound = await projectionMaterializer(
|
|
168
|
+
materializer,
|
|
169
|
+
storage,
|
|
170
|
+
devices.id,
|
|
171
|
+
execution.projectionRunId
|
|
172
|
+
)
|
|
173
|
+
return bound.projections.replace({
|
|
174
|
+
source,
|
|
175
|
+
datasetVersion,
|
|
176
|
+
execution,
|
|
177
|
+
entries: (async function* () {
|
|
178
|
+
yield* entries(values)
|
|
179
|
+
await interleave?.beforeSeal?.()
|
|
180
|
+
})(),
|
|
181
|
+
...(base ? { base } : {}),
|
|
182
|
+
})
|
|
183
|
+
}
|
|
184
|
+
const ref = (primaryId: string) => ({ objectTypeId: Device.id, primaryId })
|
|
185
|
+
const object = (id: string) => storage.objects.getByPrimaryId({ projectId, ...ref(id) })
|
|
186
|
+
const remove = (id: string): ProjectionSourceDeletion => ({
|
|
187
|
+
root: { kind: "object", ref: ref(id) },
|
|
188
|
+
deleted: true,
|
|
189
|
+
})
|
|
190
|
+
try {
|
|
191
|
+
await replace([sourceEntry("a", "A"), sourceEntry("b", "B", "a"), sourceEntry("c", "C")])
|
|
192
|
+
const stale = await active()
|
|
193
|
+
const initialA = await object("a")
|
|
194
|
+
const initialB = await object("b")
|
|
195
|
+
const transact = storage.transaction.bind(storage)
|
|
196
|
+
// Fail after finalize has moved the source pointers, written the commit and its outbox.
|
|
197
|
+
// Removing the enclosing transaction rollback must fail these head/value assertions.
|
|
198
|
+
storage.transaction = (run, options) =>
|
|
199
|
+
transact(async (tx) => {
|
|
200
|
+
const materializations = new Proxy(tx.ontology.materializations, {
|
|
201
|
+
get(target, key) {
|
|
202
|
+
if (key !== "finalize") return Reflect.get(target, key)
|
|
203
|
+
return async (input: Parameters<typeof target.finalize>[0]) => {
|
|
204
|
+
await target.finalize(input)
|
|
205
|
+
throw new Error("injected after source activation")
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
})
|
|
209
|
+
const ontology = new Proxy(tx.ontology, {
|
|
210
|
+
get(target, key) {
|
|
211
|
+
return key === "materializations" ? materializations : Reflect.get(target, key)
|
|
212
|
+
},
|
|
213
|
+
})
|
|
214
|
+
return run(
|
|
215
|
+
new Proxy(tx, {
|
|
216
|
+
get(target, key) {
|
|
217
|
+
return key === "ontology" ? ontology : Reflect.get(target, key)
|
|
218
|
+
},
|
|
219
|
+
})
|
|
220
|
+
)
|
|
221
|
+
}, options)
|
|
222
|
+
try {
|
|
223
|
+
await expect(replace([remove("a"), sourceEntry("b", "Failed B")], stale)).rejects.toThrow(
|
|
224
|
+
"injected after source activation"
|
|
225
|
+
)
|
|
226
|
+
} finally {
|
|
227
|
+
storage.transaction = transact
|
|
228
|
+
}
|
|
229
|
+
expect(await active()).toEqual(stale)
|
|
230
|
+
expect(await object("a")).toEqual(initialA)
|
|
231
|
+
expect(await object("b")).toEqual(initialB)
|
|
232
|
+
await replace([sourceEntry("b", "B2", "c")], await active())
|
|
233
|
+
await replace([sourceEntry("c", "C2")], await active())
|
|
234
|
+
expect(await object("a")).toEqual(initialA)
|
|
235
|
+
expect(await object("b")).toMatchObject({ properties: { name: "B2" } })
|
|
236
|
+
for (let pass = 0; pass < 20; pass++) {
|
|
237
|
+
const result = await storage.ontology.sources.cleanupTerminal({
|
|
238
|
+
projectId,
|
|
239
|
+
terminalBefore: "2100-01-01T00:00:00.000Z",
|
|
240
|
+
limit: 2,
|
|
241
|
+
})
|
|
242
|
+
if (result.rowsDeleted + result.materializationsDeleted === 0) break
|
|
243
|
+
}
|
|
244
|
+
const scoped = materializer.withScope(runtimeScope())
|
|
245
|
+
const edit = (operations: readonly OntologyEditOperation[]) =>
|
|
246
|
+
scoped.edits.commit({
|
|
247
|
+
mode: "atomic",
|
|
248
|
+
source: { kind: "runtime", requestId: `delta-edit-${++ordinal}` },
|
|
249
|
+
operations,
|
|
250
|
+
expectedObjects: [],
|
|
251
|
+
expectedLinks: [],
|
|
252
|
+
expectedLinkScopes: [],
|
|
253
|
+
})
|
|
254
|
+
await edit([
|
|
255
|
+
{ id: "edit-a", kind: "object.upsert", ref: ref("a"), properties: { name: "Edited A" } },
|
|
256
|
+
])
|
|
257
|
+
await edit([
|
|
258
|
+
{ id: "reset-a", kind: "object.patch", ref: ref("a"), set: {}, unset: [], reset: ["name"] },
|
|
259
|
+
])
|
|
260
|
+
expect(await object("a")).toMatchObject({ properties: { name: "A" } })
|
|
261
|
+
await replace([], await active())
|
|
262
|
+
expect(await object("a")).toMatchObject({ properties: { name: "A" } })
|
|
263
|
+
await expect(replace([remove("a")], stale)).rejects.toMatchObject({
|
|
264
|
+
kind: "source-materialization",
|
|
265
|
+
})
|
|
266
|
+
expect(await object("a")).not.toBeNull()
|
|
267
|
+
await replace([remove("a")], await active())
|
|
268
|
+
expect(await object("a")).toBeNull()
|
|
269
|
+
expect(await object("b")).toMatchObject({ properties: { name: "B2" } })
|
|
270
|
+
await replace([sourceEntry("b", "B3")])
|
|
271
|
+
expect(await object("b")).toMatchObject({ properties: { name: "B3" } })
|
|
272
|
+
expect(await object("c")).toBeNull()
|
|
273
|
+
await replace([], await active())
|
|
274
|
+
expect(await object("b")).toMatchObject({ properties: { name: "B3" } })
|
|
275
|
+
await replace([])
|
|
276
|
+
expect(await object("b")).toBeNull()
|
|
277
|
+
|
|
278
|
+
// A different run commits after base validation but before this candidate is sealed.
|
|
279
|
+
// Only checking the base before reading the delta would allow a stale publication here.
|
|
280
|
+
const base = await active()
|
|
281
|
+
const earlier = ++ordinal
|
|
282
|
+
const later = ++ordinal
|
|
283
|
+
await expect(
|
|
284
|
+
replace([sourceEntry("a", "Stale delta")], base, {
|
|
285
|
+
version: later,
|
|
286
|
+
beforeSeal: async () => {
|
|
287
|
+
await replace([sourceEntry("a", "Concurrent value")], base, { version: earlier })
|
|
288
|
+
},
|
|
289
|
+
})
|
|
290
|
+
).rejects.toMatchObject({ kind: "source-materialization" })
|
|
291
|
+
expect(await object("a")).toMatchObject({ properties: { name: "Concurrent value" } })
|
|
292
|
+
await replace([sourceEntry("a", "Fresh delta")], await active())
|
|
293
|
+
expect(await object("a")).toMatchObject({ properties: { name: "Fresh delta" } })
|
|
294
|
+
} finally {
|
|
295
|
+
await provider.cleanup?.(createdStorage)
|
|
296
|
+
}
|
|
297
|
+
})
|
|
298
|
+
|
|
128
299
|
test(`${name} persists replacement, Action, and telemetry commits atomically`, async () => {
|
|
129
300
|
const createdStorage = await provider.createStorage()
|
|
130
301
|
const storage = requireContractStorage(createdStorage)
|
|
@@ -811,7 +982,7 @@ function sourceEntry(id: string, name: string, parentId?: string): ProjectionSou
|
|
|
811
982
|
}
|
|
812
983
|
}
|
|
813
984
|
|
|
814
|
-
async function* entries(values: readonly ProjectionSourceEntry[]) {
|
|
985
|
+
async function* entries(values: readonly (ProjectionSourceEntry | ProjectionSourceDeletion)[]) {
|
|
815
986
|
for (const value of values) yield value
|
|
816
987
|
}
|
|
817
988
|
|
|
@@ -383,6 +383,13 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
383
383
|
limit: 1,
|
|
384
384
|
})
|
|
385
385
|
).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })
|
|
386
|
+
expect(
|
|
387
|
+
await storage.ontology.sources.cleanupTerminal({
|
|
388
|
+
projectId: "contract-project",
|
|
389
|
+
terminalBefore: "2026-02-01T00:00:00.000Z",
|
|
390
|
+
limit: 1,
|
|
391
|
+
})
|
|
392
|
+
).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })
|
|
386
393
|
expect(
|
|
387
394
|
await storage.ontology.sources.cleanupTerminal({
|
|
388
395
|
projectId: "contract-project",
|
|
@@ -256,6 +256,40 @@ export function runProjectionRunStorageContractSuite<TStorage extends Projection
|
|
|
256
256
|
})
|
|
257
257
|
})
|
|
258
258
|
|
|
259
|
+
test("persists independent incremental progress across reclaim without a physical-row floor", async () => {
|
|
260
|
+
await withStorage(async (context) => {
|
|
261
|
+
const storage = context.projectionRuns
|
|
262
|
+
await admitProjectionRun(context, replacementInput("delta-progress"))
|
|
263
|
+
const first = await storage.startOrReclaim(replacementInput("delta-progress"))
|
|
264
|
+
const updated = await storage.update({
|
|
265
|
+
...executionInput(first),
|
|
266
|
+
progress: { sourceChangesRead: 12 },
|
|
267
|
+
})
|
|
268
|
+
expect(updated.progress).toEqual({
|
|
269
|
+
sourceRowsRead: 0,
|
|
270
|
+
sourceRowsSkipped: 0,
|
|
271
|
+
sourceChangesRead: 12,
|
|
272
|
+
})
|
|
273
|
+
const second = await storage.startOrReclaim(replacementInput("delta-progress"))
|
|
274
|
+
expect(second.run.progress).toEqual(updated.progress)
|
|
275
|
+
await expect(
|
|
276
|
+
storage.update({ ...executionInput(first), progress: { sourceChangesRead: 13 } })
|
|
277
|
+
).rejects.toThrow()
|
|
278
|
+
await expect(
|
|
279
|
+
storage.update({ ...executionInput(second), progress: { sourceChangesRead: 11 } })
|
|
280
|
+
).rejects.toThrow("must not decrease")
|
|
281
|
+
const fallback = await storage.update({
|
|
282
|
+
...executionInput(second),
|
|
283
|
+
progress: { sourceRowsRead: 2 },
|
|
284
|
+
})
|
|
285
|
+
expect(fallback.progress).toEqual({
|
|
286
|
+
sourceRowsRead: 2,
|
|
287
|
+
sourceRowsSkipped: 0,
|
|
288
|
+
sourceChangesRead: 12,
|
|
289
|
+
})
|
|
290
|
+
})
|
|
291
|
+
})
|
|
292
|
+
|
|
259
293
|
test("rejects immutable dataset-version metadata reuse", async () => {
|
|
260
294
|
await withStorage(async (context) => {
|
|
261
295
|
await admitProjectionRun(context, replacementInput("dataset-metadata-first"))
|
|
@@ -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}` },
|