@sixb/core 0.1.7 → 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/delegated-admission.d.ts +24 -0
- package/dist/actions/delegated-admission.d.ts.map +1 -0
- package/dist/actions/descriptor.d.ts +29 -0
- package/dist/actions/descriptor.d.ts.map +1 -0
- package/dist/actions/execution.d.ts +5 -5
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +78 -84
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +20 -0
- package/dist/actions/run-authorization.d.ts.map +1 -0
- package/dist/actions/run-dispatch.d.ts +3 -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 +8 -125
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +1 -1
- package/dist/agents/authority.d.ts.map +1 -1
- 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/errors.d.ts +0 -9
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/identity.d.ts +3 -0
- package/dist/agents/identity.d.ts.map +1 -0
- package/dist/agents/index.d.ts +7 -7
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +193 -205
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +5 -6
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +4 -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/tool-definition.d.ts +0 -1
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +0 -4
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/ai-usage/execution.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 -105
- 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/decision.d.ts +10 -2
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -1
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +51 -53
- 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 +20 -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 -81
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/ontology-type-manifest.d.ts.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-3fqt22c4.js → chunk-0w35wavj.js} +360 -168
- package/dist/chunk-0w35wavj.js.map +14 -0
- package/dist/chunk-0y39rgsb.js +43 -0
- package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
- package/dist/{chunk-hdz94br2.js → chunk-17kfctj6.js} +23 -13
- package/dist/chunk-17kfctj6.js.map +10 -0
- package/dist/{chunk-e4rvtvpw.js → chunk-1enhpacz.js} +418 -233
- package/dist/chunk-1enhpacz.js.map +34 -0
- 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-7ds9620f.js → chunk-38zv5rkr.js} +24 -8
- package/dist/chunk-38zv5rkr.js.map +10 -0
- 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-qv38twt8.js → chunk-52hbv0ak.js} +192 -171
- package/dist/{chunk-qv38twt8.js.map → chunk-52hbv0ak.js.map} +6 -6
- 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-08twe8m6.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-tn7xcs2n.js → chunk-860dwwy0.js} +93 -30
- package/dist/chunk-860dwwy0.js.map +14 -0
- 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-gbrpsx4m.js → chunk-93csa55g.js} +72 -16
- 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-9qsh3p5y.js +111 -0
- package/dist/chunk-9qsh3p5y.js.map +11 -0
- package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
- package/dist/{chunk-z2sery1b.js → chunk-9vx5e9g1.js} +68 -28
- package/dist/chunk-9vx5e9g1.js.map +11 -0
- package/dist/{chunk-9aehf39w.js → chunk-an5tt9y0.js} +353 -353
- package/dist/{chunk-9aehf39w.js.map → chunk-an5tt9y0.js.map} +2 -2
- package/dist/{chunk-x0qhkqje.js → chunk-ap0g1g74.js} +37 -37
- package/dist/{chunk-x0qhkqje.js.map → chunk-ap0g1g74.js.map} +2 -2
- package/dist/chunk-awbhdqyc.js +252 -0
- package/dist/chunk-awbhdqyc.js.map +10 -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-br3k6qbf.js +436 -0
- package/dist/chunk-br3k6qbf.js.map +12 -0
- 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-atmkaf60.js → chunk-dmn70ztd.js} +30 -34
- package/dist/chunk-dmn70ztd.js.map +11 -0
- package/dist/chunk-dz5h08xv.js +1887 -0
- package/dist/chunk-dz5h08xv.js.map +25 -0
- 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-ha58tjtt.js → chunk-emyyk7dx.js} +59 -55
- package/dist/{chunk-ha58tjtt.js.map → chunk-emyyk7dx.js.map} +3 -3
- package/dist/{chunk-3kv70xwp.js → chunk-ey1nk510.js} +18 -2
- package/dist/chunk-ey1nk510.js.map +10 -0
- package/dist/chunk-f0rwz2vh.js +152 -0
- 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-rre42skh.js → chunk-g00bfdq6.js} +729 -296
- package/dist/{chunk-rre42skh.js.map → chunk-g00bfdq6.js.map} +11 -7
- 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-hpr1r6av.js +4006 -0
- 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-rp1mvzb4.js → chunk-jjy0fhrn.js} +40 -35
- package/dist/{chunk-rp1mvzb4.js.map → chunk-jjy0fhrn.js.map} +3 -3
- package/dist/{chunk-4nxeacx7.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-4nxeacx7.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-64sr682n.js → chunk-k3cqkkn2.js} +61 -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-qjycjdj6.js → chunk-m3z3x9v0.js} +106 -65
- package/dist/{chunk-qjycjdj6.js.map → chunk-m3z3x9v0.js.map} +3 -3
- package/dist/{chunk-6ed5bwnd.js → chunk-mjbk2djy.js} +2092 -1714
- package/dist/chunk-mjbk2djy.js.map +57 -0
- package/dist/{chunk-5jcdmjam.js → chunk-mmagke4x.js} +6 -6
- package/dist/{chunk-5jcdmjam.js.map → chunk-mmagke4x.js.map} +2 -2
- package/dist/chunk-mrp7k0pw.js +147 -0
- package/dist/chunk-mrp7k0pw.js.map +10 -0
- package/dist/{chunk-d63tybny.js → chunk-ms2tmn1k.js} +139 -139
- package/dist/{chunk-d63tybny.js.map → chunk-ms2tmn1k.js.map} +2 -2
- package/dist/{chunk-xdpwpkha.js → chunk-ppytyr6w.js} +156 -179
- package/dist/{chunk-xdpwpkha.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-qjzp9xyb.js → chunk-pr2h4bv4.js} +33 -35
- package/dist/chunk-pr2h4bv4.js.map +12 -0
- 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-agsvg9ar.js → chunk-qf954wje.js} +6 -6
- package/dist/{chunk-agsvg9ar.js.map → chunk-qf954wje.js.map} +2 -2
- package/dist/{chunk-wjgm6jjt.js → chunk-qhcpj9wc.js} +166 -132
- package/dist/chunk-qhcpj9wc.js.map +14 -0
- 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-2b5qtban.js → chunk-r4tfx1sf.js} +142 -89
- 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-v4jbb3rs.js +403 -0
- package/dist/chunk-v4jbb3rs.js.map +10 -0
- package/dist/{chunk-d2ndstdf.js → chunk-vf691g1r.js} +61 -59
- package/dist/{chunk-d2ndstdf.js.map → chunk-vf691g1r.js.map} +2 -2
- package/dist/{chunk-1kamz6j0.js → chunk-vsj3mdfj.js} +8 -8
- package/dist/{chunk-1kamz6j0.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-x9v4cx1d.js +139 -0
- package/dist/chunk-x9v4cx1d.js.map +10 -0
- package/dist/{chunk-kt81c11h.js → chunk-xfbydgzy.js} +27 -27
- package/dist/{chunk-kt81c11h.js.map → chunk-xfbydgzy.js.map} +2 -2
- package/dist/{chunk-vjjv9mrb.js → chunk-xyr8kppc.js} +22 -22
- package/dist/{chunk-vjjv9mrb.js.map → chunk-xyr8kppc.js.map} +3 -3
- package/dist/chunk-ypbtykv6.js +1537 -0
- package/dist/chunk-ypbtykv6.js.map +19 -0
- 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-xc7hq65b.js → chunk-z30bv4ga.js} +80 -33
- package/dist/chunk-z30bv4ga.js.map +11 -0
- 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-z8fx5cgb.js +159 -0
- package/dist/chunk-z8fx5cgb.js.map +11 -0
- 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/builders.d.ts +11 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/changes.d.ts +14 -4
- package/dist/datasets/changes.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +15 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -0
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/sequence.d.ts +7 -0
- package/dist/datasets/sequence.d.ts.map +1 -0
- package/dist/datasets/types.d.ts +1 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +37 -0
- package/dist/datasets/write.d.ts.map +1 -0
- package/dist/datasets/write.js +13 -0
- package/dist/datasets/write.js.map +9 -0
- 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.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/types/datasets.d.ts +2 -6
- package/dist/events/types/datasets.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 +70 -75
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts +58 -20
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +69 -0
- package/dist/execution/authorized-object-reader.d.ts.map +1 -0
- package/dist/execution/durable.d.ts +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.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 -64
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +12 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +97 -71
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/scopes.d.ts +16 -0
- package/dist/execution/scopes.d.ts.map +1 -1
- package/dist/execution/types.d.ts +9 -0
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/http/api-routes.d.ts +2 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +10 -11
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +21 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +455 -463
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/definition-updates.d.ts.map +1 -1
- package/dist/lake-storage/errors.d.ts +5 -1
- package/dist/lake-storage/errors.d.ts.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +1 -0
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +6 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +40 -27
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/merge-validation.d.ts.map +1 -1
- package/dist/lake-storage/merge.d.ts +13 -2
- package/dist/lake-storage/merge.d.ts.map +1 -1
- package/dist/lake-storage/source-ordering.d.ts +19 -0
- package/dist/lake-storage/source-ordering.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +2 -1
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +10 -5
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +4 -0
- package/dist/lake-storage/version-inputs.d.ts.map +1 -0
- 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 -142
- 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/authorized-ontology-view.d.ts +25 -0
- package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +1 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +75 -84
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +2 -7
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/query/executor.d.ts +4 -2
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +67 -73
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/links.d.ts +22 -1
- package/dist/objects/query/links.d.ts.map +1 -1
- package/dist/objects/query/selected-read-admission.d.ts +27 -0
- package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +60 -2
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/service/list-service.d.ts +2 -3
- package/dist/objects/service/list-service.d.ts.map +1 -1
- package/dist/objects/telemetry/history.d.ts +8 -6
- package/dist/objects/telemetry/history.d.ts.map +1 -1
- package/dist/objects/telemetry/index.d.ts +2 -2
- package/dist/objects/telemetry/index.d.ts.map +1 -1
- package/dist/objects/telemetry/workload.d.ts +11 -0
- package/dist/objects/telemetry/workload.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +2 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +61 -111
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +2 -1
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +7 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +65 -121
- package/dist/ontology/internal.js.map +3 -4
- package/dist/ontology/json-schema.d.ts +10 -6
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/link-path-selection.d.ts +35 -0
- package/dist/ontology/link-path-selection.d.ts.map +1 -0
- package/dist/ontology/refs.d.ts +2 -0
- package/dist/ontology/refs.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +2 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/pipelines/execution.d.ts.map +1 -1
- package/dist/pipelines/index.js +57 -63
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/request.d.ts.map +1 -1
- package/dist/projections/execution.d.ts.map +1 -1
- package/dist/projections/internal.js +58 -64
- 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/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/execution.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 +6 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +2 -0
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +4 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +13 -14
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts +2 -0
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +6 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +3 -0
- package/dist/runtime/types.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/execution.d.ts +2 -1
- package/dist/schedules/execution.d.ts.map +1 -1
- package/dist/schedules/index.js +31 -33
- package/dist/schedules/index.js.map +1 -1
- package/dist/security/every.d.ts +4 -1
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +7 -2
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/registry.d.ts +1 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +7 -1
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +2 -0
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/access-plan.d.ts +22 -0
- package/dist/shares/access-plan.d.ts.map +1 -0
- package/dist/shares/builders.d.ts +14 -0
- package/dist/shares/builders.d.ts.map +1 -0
- package/dist/shares/compiler.d.ts +14 -0
- package/dist/shares/compiler.d.ts.map +1 -0
- package/dist/shares/errors.d.ts +4 -0
- package/dist/shares/errors.d.ts.map +1 -0
- package/dist/shares/execution.d.ts +57 -0
- package/dist/shares/execution.d.ts.map +1 -0
- package/dist/shares/index.d.ts +10 -0
- package/dist/shares/index.d.ts.map +1 -0
- package/dist/shares/internal.d.ts +3 -0
- package/dist/shares/internal.d.ts.map +1 -0
- package/dist/shares/internal.js +231 -0
- package/dist/shares/internal.js.map +10 -0
- package/dist/shares/intersection.d.ts +9 -0
- package/dist/shares/intersection.d.ts.map +1 -0
- package/dist/shares/session-protocol.d.ts +41 -0
- package/dist/shares/session-protocol.d.ts.map +1 -0
- package/dist/shares/types.d.ts +51 -0
- package/dist/shares/types.d.ts.map +1 -0
- package/dist/shares/validation.d.ts +11 -0
- package/dist/shares/validation.d.ts.map +1 -0
- 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 +3 -0
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +6 -2
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +35 -12
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/run-link.d.ts +7 -0
- package/dist/storage/executions/run-link.d.ts.map +1 -1
- 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 +8 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts +8 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +14 -9
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +221 -227
- 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/objects/execution-limits.d.ts +25 -0
- package/dist/storage/objects/execution-limits.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +16 -0
- package/dist/storage/objects/guard.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/index.d.ts +3 -0
- package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/keys.d.ts +10 -0
- package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts +31 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
- package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
- package/dist/storage/objects/index.d.ts +4 -1
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/keys.d.ts +1 -1
- package/dist/storage/objects/keys.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +25 -0
- package/dist/storage/objects/read-scope.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +114 -22
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +105 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/operation-scope.d.ts +3 -0
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +18 -17
- 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/errors.d.ts +8 -0
- package/dist/storage/share-grants/errors.d.ts.map +1 -0
- package/dist/storage/share-grants/in-memory.d.ts +11 -0
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/share-grants/index.d.ts +5 -0
- package/dist/storage/share-grants/index.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.d.ts +4 -0
- package/dist/storage/share-grants/provider.d.ts.map +1 -0
- package/dist/storage/share-grants/provider.js +22 -0
- package/dist/storage/share-grants/provider.js.map +9 -0
- package/dist/storage/share-grants/record.d.ts +11 -0
- package/dist/storage/share-grants/record.d.ts.map +1 -0
- package/dist/storage/share-grants/types.d.ts +97 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -0
- package/dist/storage/share-sessions/errors.d.ts +8 -0
- package/dist/storage/share-sessions/errors.d.ts.map +1 -0
- package/dist/storage/share-sessions/in-memory.d.ts +14 -0
- package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
- package/dist/storage/share-sessions/index.d.ts +5 -0
- package/dist/storage/share-sessions/index.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.d.ts +3 -0
- package/dist/storage/share-sessions/provider.d.ts.map +1 -0
- package/dist/storage/share-sessions/provider.js +19 -0
- package/dist/storage/share-sessions/provider.js.map +9 -0
- package/dist/storage/share-sessions/record.d.ts +8 -0
- package/dist/storage/share-sessions/record.d.ts.map +1 -0
- package/dist/storage/share-sessions/types.d.ts +50 -0
- package/dist/storage/share-sessions/types.d.ts.map +1 -0
- package/dist/storage/sync-runs/provider.js +4 -6
- package/dist/storage/sync-runs/provider.js.map +1 -1
- package/dist/storage/transaction.d.ts +2 -1
- package/dist/storage/transaction.d.ts.map +1 -1
- package/dist/storage/types.d.ts +8 -0
- package/dist/storage/types.d.ts.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 -18
- 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/execution.d.ts.map +1 -1
- package/dist/syncs/index.js +55 -62
- package/dist/syncs/index.js.map +1 -1
- package/dist/syncs/request.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/dataset-sequence-contract.d.ts +4 -0
- package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts +4 -0
- 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 +3 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3087 -1328
- package/dist/testing/index.js.map +17 -13
- package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts +22 -0
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/share-grant-storage-contract.d.ts +10 -0
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/share-session-storage-contract.d.ts +9 -0
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
- 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 -56
- 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/execution.d.ts.map +1 -1
- package/dist/workflows/failure.d.ts +2 -0
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +135 -140
- 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 +72 -30
- package/src/actions/delegated-admission.ts +72 -0
- package/src/actions/descriptor.ts +58 -0
- package/src/actions/execution.ts +99 -24
- package/src/actions/request.ts +136 -19
- package/src/actions/run-authorization.ts +53 -0
- package/src/actions/run-dispatch.ts +10 -7
- package/src/actions/types/context.ts +2 -0
- package/src/actions/validation.ts +2 -1
- package/src/agents/adapters.ts +34 -429
- package/src/agents/authority.ts +3 -4
- 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 +2 -5
- package/src/agents/errors.ts +0 -10
- package/src/agents/execution.ts +13 -5
- package/src/agents/identity.ts +4 -0
- package/src/agents/index.ts +5 -24
- package/src/agents/message.ts +5 -6
- package/src/agents/model-loop.ts +62 -6
- package/src/agents/request.ts +27 -29
- 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/tool-definition.ts +0 -19
- package/src/agents/types.ts +1 -1
- package/src/agents/validation.ts +9 -72
- package/src/ai-usage/execution.ts +4 -11
- package/src/auth/index.ts +0 -1
- package/src/authorization/decision.ts +29 -14
- package/src/authorization/grant-kinds.ts +10 -0
- package/src/authorization/index.ts +1 -0
- package/src/bootstrap/discovery.ts +84 -24
- package/src/bootstrap/index.ts +8 -1
- package/src/bootstrap/ontology-type-manifest.ts +12 -6
- package/src/datasets/builders.ts +23 -2
- package/src/datasets/changes.ts +16 -4
- package/src/datasets/execution.ts +76 -5
- package/src/datasets/index.ts +1 -0
- package/src/datasets/sequence.ts +77 -0
- package/src/datasets/types.ts +1 -0
- package/src/datasets/validation.ts +26 -0
- package/src/datasets/write.ts +240 -0
- 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 +57 -7
- package/src/events/types/datasets.ts +2 -6
- package/src/execution/agent.ts +6 -7
- package/src/execution/authorization.ts +470 -90
- package/src/execution/authorized-object-reader.ts +695 -0
- package/src/execution/durable.ts +21 -3
- package/src/execution/index.ts +1 -0
- package/src/execution/primitive.ts +5 -1
- package/src/execution/request.ts +66 -13
- package/src/execution/scopes.ts +36 -6
- package/src/execution/types.ts +8 -0
- package/src/http/api-routes.ts +45 -0
- package/src/index.ts +56 -33
- package/src/lake-storage/definition-updates.ts +9 -0
- package/src/lake-storage/errors.ts +6 -1
- package/src/lake-storage/in-memory.ts +53 -17
- package/src/lake-storage/index.ts +10 -1
- package/src/lake-storage/merge-validation.ts +12 -2
- package/src/lake-storage/merge.ts +40 -2
- package/src/lake-storage/source-ordering.ts +95 -0
- package/src/lake-storage/sql-transforms.ts +2 -1
- package/src/lake-storage/types.ts +10 -5
- package/src/lake-storage/version-inputs.ts +14 -0
- 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/authorized-ontology-view.ts +512 -0
- package/src/objects/execution.ts +99 -144
- package/src/objects/link/authorization.ts +3 -2
- package/src/objects/query/executor.ts +45 -34
- package/src/objects/query/links.ts +84 -25
- package/src/objects/query/selected-read-admission.ts +310 -0
- package/src/objects/query/validate.ts +353 -36
- package/src/objects/sdk/object-handle.ts +2 -8
- package/src/objects/sdk/object-set.ts +10 -11
- package/src/objects/sdk/runtime-query-executor.ts +8 -28
- package/src/objects/sdk/telemetry-channel.ts +11 -7
- package/src/objects/service/list-service.ts +15 -29
- package/src/objects/telemetry/history.ts +297 -17
- package/src/objects/telemetry/index.ts +2 -2
- package/src/objects/telemetry/workload.ts +79 -0
- package/src/ontology/index.ts +7 -2
- package/src/ontology/inference/index.ts +4 -1
- package/src/ontology/internal.ts +35 -1
- package/src/ontology/json-schema.ts +13 -12
- package/src/ontology/link-path-selection.ts +193 -0
- package/src/ontology/refs.ts +19 -0
- package/src/ontology/tokens.ts +15 -8
- package/src/pipelines/execution.ts +30 -7
- package/src/pipelines/request.ts +5 -0
- package/src/projections/execution.ts +72 -11
- package/src/projections/run-dispatch.ts +7 -12
- package/src/query.ts +0 -1
- package/src/queues/index.ts +4 -2
- package/src/queues/types.ts +6 -25
- package/src/rules/execution.ts +20 -8
- package/src/runtime/create.ts +7 -2
- package/src/runtime/definitions.ts +2 -0
- package/src/runtime/host.ts +27 -7
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/resolve-definitions.ts +9 -0
- package/src/runtime/sixb.ts +27 -2
- package/src/runtime/types.ts +3 -0
- package/src/sandboxes/errors.ts +5 -0
- package/src/sandboxes/index.ts +3 -0
- package/src/sandboxes/sandbox.ts +35 -7
- package/src/schedules/execution.ts +24 -2
- package/src/security/every.ts +4 -0
- package/src/security/grants.ts +45 -3
- package/src/security/index.ts +1 -0
- package/src/security/registry.ts +3 -0
- package/src/security/types.ts +8 -0
- package/src/security/validation.ts +3 -0
- package/src/shares/access-plan.ts +225 -0
- package/src/shares/builders.ts +381 -0
- package/src/shares/compiler.ts +359 -0
- package/src/shares/errors.ts +3 -0
- package/src/shares/execution.ts +394 -0
- package/src/shares/index.ts +28 -0
- package/src/shares/internal.ts +9 -0
- package/src/shares/intersection.ts +178 -0
- package/src/shares/session-protocol.ts +258 -0
- package/src/shares/types.ts +76 -0
- package/src/shares/validation.ts +40 -0
- 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 +13 -10
- package/src/storage/executions/provider.ts +34 -1
- package/src/storage/executions/run-link.ts +29 -0
- package/src/storage/executions/types.ts +6 -2
- package/src/storage/executions/validation.ts +78 -1
- package/src/storage/in-memory/index.ts +37 -3
- package/src/storage/index.ts +54 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/objects/execution-limits.ts +283 -0
- package/src/storage/objects/guard.ts +55 -0
- package/src/storage/objects/in-memory/index.ts +2 -0
- package/src/storage/objects/in-memory/keys.ts +46 -0
- package/src/storage/objects/in-memory/query.ts +754 -0
- package/src/storage/objects/in-memory/read-scope.ts +211 -0
- package/src/storage/objects/in-memory/read-source.ts +10 -0
- package/src/storage/objects/in-memory/selected-reader.ts +252 -0
- package/src/storage/objects/in-memory/storage.ts +589 -0
- package/src/storage/objects/index.ts +21 -0
- package/src/storage/objects/keys.ts +1 -1
- package/src/storage/objects/read-scope.ts +672 -0
- package/src/storage/objects/types.ts +123 -19
- package/src/storage/operation-scope.ts +16 -0
- package/src/storage/share-grants/errors.ts +14 -0
- package/src/storage/share-grants/in-memory.ts +107 -0
- package/src/storage/share-grants/index.ts +14 -0
- package/src/storage/share-grants/provider.ts +11 -0
- package/src/storage/share-grants/record.ts +347 -0
- package/src/storage/share-grants/types.ts +112 -0
- package/src/storage/share-sessions/errors.ts +14 -0
- package/src/storage/share-sessions/in-memory.ts +105 -0
- package/src/storage/share-sessions/index.ts +11 -0
- package/src/storage/share-sessions/provider.ts +9 -0
- package/src/storage/share-sessions/record.ts +176 -0
- package/src/storage/share-sessions/types.ts +57 -0
- package/src/storage/transaction.ts +14 -2
- package/src/storage/types.ts +27 -0
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/syncs/execution.ts +25 -5
- package/src/syncs/request.ts +5 -0
- 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/dataset-sequence-contract.ts +373 -0
- package/src/testing/effective-storage-contract.ts +34 -0
- package/src/testing/execution-storage-contract.ts +138 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/index.ts +16 -0
- package/src/testing/lake-merge-storage-contract.ts +3 -0
- package/src/testing/lake-storage-contract.ts +58 -0
- package/src/testing/object-read-scope-contract.ts +939 -0
- package/src/testing/share-grant-storage-contract.ts +325 -0
- package/src/testing/share-session-storage-contract.ts +235 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/workflows/execution.ts +53 -14
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +5 -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-08twe8m6.js +0 -218
- package/dist/chunk-2b5qtban.js.map +0 -14
- package/dist/chunk-2xns679x.js.map +0 -11
- package/dist/chunk-37wk412q.js +0 -1370
- package/dist/chunk-37wk412q.js.map +0 -23
- package/dist/chunk-3fqt22c4.js.map +0 -14
- package/dist/chunk-3kv70xwp.js.map +0 -10
- package/dist/chunk-407j3msh.js +0 -60
- package/dist/chunk-64sr682n.js.map +0 -12
- package/dist/chunk-6ed5bwnd.js.map +0 -57
- package/dist/chunk-7ds9620f.js.map +0 -10
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-atmkaf60.js.map +0 -11
- package/dist/chunk-c15dr03f.js +0 -43
- package/dist/chunk-d8qkxt2v.js.map +0 -10
- package/dist/chunk-dqn23610.js +0 -72
- package/dist/chunk-dqn23610.js.map +0 -11
- package/dist/chunk-e4rvtvpw.js.map +0 -34
- package/dist/chunk-gbrpsx4m.js.map +0 -11
- package/dist/chunk-h0knpbz5.js +0 -2486
- package/dist/chunk-h0knpbz5.js.map +0 -38
- package/dist/chunk-hdz94br2.js.map +0 -10
- package/dist/chunk-jq43kdvk.js +0 -50
- package/dist/chunk-n2arzn6e.js +0 -1745
- package/dist/chunk-n2arzn6e.js.map +0 -20
- package/dist/chunk-p03r0h5s.js.map +0 -16
- package/dist/chunk-qjzp9xyb.js.map +0 -12
- package/dist/chunk-tn7xcs2n.js.map +0 -13
- package/dist/chunk-wjgm6jjt.js.map +0 -13
- package/dist/chunk-xc7hq65b.js.map +0 -10
- package/dist/chunk-y35ma3mj.js +0 -551
- package/dist/chunk-y35ma3mj.js.map +0 -15
- package/dist/chunk-y64skrwp.js +0 -19
- package/dist/chunk-z2sery1b.js.map +0 -11
- package/dist/chunk-zcnhxkvd.js +0 -7
- package/dist/logging/types.js +0 -27
- package/dist/logging/types.js.map +0 -9
- package/dist/storage/objects/in-memory.d.ts.map +0 -1
- package/src/storage/objects/in-memory.ts +0 -1241
- /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
|
@@ -1,24 +1,95 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assertPrivileged, isRuntimeAllowed } from "../authorization"
|
|
2
|
+
import type { BlobStorage } from "../blob-storage"
|
|
3
|
+
import type { ExecutionContext } from "../execution"
|
|
4
|
+
import { resolveRuntimeAuthorizationForProject } from "../execution/authorization"
|
|
5
|
+
import type { DatasetMergeCommitResult } from "../lake-storage/merge"
|
|
6
|
+
import { getDatasetPrimaryKeyColumns } from "../lake-storage/merge-validation"
|
|
7
|
+
import type { DatasetRow, LakeStorage } from "../lake-storage/types"
|
|
2
8
|
import type { SixbRuntimeContext } from "../runtime/types"
|
|
9
|
+
import type { MergeChange } from "./changes"
|
|
3
10
|
import type { DatasetDefinition } from "./types"
|
|
11
|
+
import { writeDataset } from "./write"
|
|
12
|
+
|
|
13
|
+
export interface DatasetIngestInput {
|
|
14
|
+
readonly changes:
|
|
15
|
+
| Iterable<MergeChange<DatasetRow, DatasetRow>>
|
|
16
|
+
| AsyncIterable<MergeChange<DatasetRow, DatasetRow>>
|
|
17
|
+
readonly signal?: AbortSignal
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Source commit result; downstream pipelines and projections run asynchronously. */
|
|
21
|
+
export type DatasetIngestResult = DatasetMergeCommitResult & { readonly rowsRead: number }
|
|
4
22
|
|
|
5
23
|
export interface DatasetsRuntime {
|
|
6
24
|
list(): readonly DatasetDefinition[]
|
|
7
25
|
getById(datasetId: string): DatasetDefinition | null
|
|
26
|
+
ingest(dataset: DatasetDefinition, input: DatasetIngestInput): Promise<DatasetIngestResult>
|
|
8
27
|
}
|
|
9
28
|
|
|
10
29
|
export function createDatasetsRuntime(
|
|
11
|
-
runtime:
|
|
12
|
-
|
|
30
|
+
runtime: SixbRuntimeContext,
|
|
31
|
+
execution: ExecutionContext,
|
|
32
|
+
source: Pick<DatasetsRuntime, "list" | "getById">,
|
|
33
|
+
lakeStorage: LakeStorage,
|
|
34
|
+
blobStorage: Pick<BlobStorage, "stat">
|
|
13
35
|
): DatasetsRuntime {
|
|
36
|
+
const authority = resolveRuntimeAuthorizationForProject(runtime)
|
|
14
37
|
const allowed = (datasetId: string) =>
|
|
15
|
-
|
|
38
|
+
isRuntimeAllowed(runtime, { kind: "dataset.view", datasetId })
|
|
16
39
|
|
|
17
40
|
return {
|
|
18
|
-
list: () =>
|
|
41
|
+
list: () =>
|
|
42
|
+
authority.type === "denied" || authority.type === "delegated"
|
|
43
|
+
? []
|
|
44
|
+
: source.list().filter((dataset) => allowed(dataset.id)),
|
|
19
45
|
getById: (datasetId) => {
|
|
46
|
+
if (authority.type === "denied" || authority.type === "delegated") return null
|
|
20
47
|
const dataset = source.getById(datasetId)
|
|
21
48
|
return dataset && allowed(datasetId) ? dataset : null
|
|
22
49
|
},
|
|
50
|
+
async ingest(dataset, input) {
|
|
51
|
+
assertPrivileged(runtime, "datasets.ingest")
|
|
52
|
+
const registered = source.getById(dataset.id)
|
|
53
|
+
if (!registered) throw new Error(`[Sixb] Dataset '${dataset.id}' is not registered.`)
|
|
54
|
+
if (getDatasetPrimaryKeyColumns(registered) === null) {
|
|
55
|
+
throw new Error(`[Sixb] Dataset '${dataset.id}' must define a primaryKey before ingestion.`)
|
|
56
|
+
}
|
|
57
|
+
if (typeof lakeStorage.beginMerge !== "function") {
|
|
58
|
+
throw new Error("[Sixb] Dataset ingestion requires a lake provider with merge support.")
|
|
59
|
+
}
|
|
60
|
+
const producer = { kind: "ingest" as const, id: execution.id }
|
|
61
|
+
const result = await writeDataset({
|
|
62
|
+
lakeStorage,
|
|
63
|
+
blobStorage,
|
|
64
|
+
dataset: registered,
|
|
65
|
+
mode: "merge",
|
|
66
|
+
signal: input.signal ?? new AbortController().signal,
|
|
67
|
+
producer,
|
|
68
|
+
readValues: async () =>
|
|
69
|
+
(async function* () {
|
|
70
|
+
for await (const value of input.changes) yield { value }
|
|
71
|
+
})(),
|
|
72
|
+
})
|
|
73
|
+
if (result.outcome === "created") {
|
|
74
|
+
await runtime.events.emit(
|
|
75
|
+
{
|
|
76
|
+
events: [
|
|
77
|
+
{
|
|
78
|
+
type: "dataset.version.committed",
|
|
79
|
+
payload: {
|
|
80
|
+
datasetId: registered.id,
|
|
81
|
+
versionId: result.version.versionId,
|
|
82
|
+
createdAt: result.version.createdAt.toISOString(),
|
|
83
|
+
producer,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
correlationId: execution.correlationId,
|
|
88
|
+
},
|
|
89
|
+
{ source: "SixbDatasets" }
|
|
90
|
+
)
|
|
91
|
+
}
|
|
92
|
+
return result
|
|
93
|
+
},
|
|
23
94
|
}
|
|
24
95
|
}
|
package/src/datasets/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { col, defineDataset } from "./builders"
|
|
|
2
2
|
export type { MergeChange } from "./changes"
|
|
3
3
|
export { change } from "./changes"
|
|
4
4
|
export { DatasetValidationError } from "./errors"
|
|
5
|
+
export type { DatasetIngestInput, DatasetIngestResult, DatasetsRuntime } from "./execution"
|
|
5
6
|
export type {
|
|
6
7
|
DatasetColumnDefinition,
|
|
7
8
|
DatasetColumnDefinitionOf,
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { DatasetDefinition } from "./types"
|
|
2
|
+
|
|
3
|
+
const MIN_INT64 = -(1n << 63n)
|
|
4
|
+
const MAX_INT64 = (1n << 63n) - 1n
|
|
5
|
+
|
|
6
|
+
/** Normalize source ordering to an exact integer (timestamp milliseconds or signed int64). */
|
|
7
|
+
export function datasetSequenceValue(dataset: DatasetDefinition, value: unknown): bigint {
|
|
8
|
+
const column = dataset.schema.columns.find((column) => column.name === dataset.sequenceBy)
|
|
9
|
+
if (column?.type === "int64") {
|
|
10
|
+
if (
|
|
11
|
+
(typeof value === "number" && Number.isSafeInteger(value)) ||
|
|
12
|
+
(typeof value === "string" && /^-?\d+$/.test(value))
|
|
13
|
+
) {
|
|
14
|
+
const integer = BigInt(value)
|
|
15
|
+
if (integer >= MIN_INT64 && integer <= MAX_INT64) return integer
|
|
16
|
+
}
|
|
17
|
+
throw new Error(
|
|
18
|
+
`Dataset '${dataset.id}' sequence must be a signed int64; use a string outside the safe integer range.`
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
if (column?.type === "timestamp") {
|
|
22
|
+
const millis = parseDatasetTimestamp(value)
|
|
23
|
+
if (millis !== null) return BigInt(millis)
|
|
24
|
+
throw new Error(
|
|
25
|
+
`Dataset '${dataset.id}' sequence must be a valid Date or ISO timestamp with an explicit timezone and at most millisecond precision.`
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
throw new Error(
|
|
29
|
+
`Dataset '${dataset.id}' sequenceBy must reference a non-nullable timestamp or int64 column.`
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Date.parse alone normalizes impossible calendar dates instead of rejecting them. */
|
|
34
|
+
export function parseDatasetTimestamp(value: unknown): number | null {
|
|
35
|
+
if (value instanceof Date && Number.isFinite(value.getTime())) return value.getTime()
|
|
36
|
+
if (typeof value === "string") {
|
|
37
|
+
const match =
|
|
38
|
+
/^([+-]\d{6}|\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,3}))?(Z|[+-]\d{2}:\d{2})$/.exec(
|
|
39
|
+
value
|
|
40
|
+
)
|
|
41
|
+
if (match) {
|
|
42
|
+
const [, year, month, day, hour, minute, second, , zone] = match
|
|
43
|
+
const numericYear = Number(year)
|
|
44
|
+
const leapYear = numericYear % 4 === 0 && (numericYear % 100 !== 0 || numericYear % 400 === 0)
|
|
45
|
+
const days =
|
|
46
|
+
Number(month) === 2 ? (leapYear ? 29 : 28) : [4, 6, 9, 11].includes(Number(month)) ? 30 : 31
|
|
47
|
+
const validZone =
|
|
48
|
+
zone === "Z" || (Number(zone?.slice(1, 3)) <= 23 && Number(zone?.slice(4)) <= 59)
|
|
49
|
+
const millis = Date.parse(value)
|
|
50
|
+
if (
|
|
51
|
+
Number(month) >= 1 &&
|
|
52
|
+
Number(month) <= 12 &&
|
|
53
|
+
Number(day) >= 1 &&
|
|
54
|
+
Number(day) <= days &&
|
|
55
|
+
Number(hour) < 24 &&
|
|
56
|
+
Number(minute) < 60 &&
|
|
57
|
+
Number(second) < 60 &&
|
|
58
|
+
validZone &&
|
|
59
|
+
Number.isFinite(millis)
|
|
60
|
+
)
|
|
61
|
+
return millis
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function getDatasetSequenceValidationError(
|
|
68
|
+
dataset: DatasetDefinition,
|
|
69
|
+
value: unknown
|
|
70
|
+
): string | null {
|
|
71
|
+
try {
|
|
72
|
+
datasetSequenceValue(dataset, value)
|
|
73
|
+
return null
|
|
74
|
+
} catch (error) {
|
|
75
|
+
return error instanceof Error ? error.message : String(error)
|
|
76
|
+
}
|
|
77
|
+
}
|
package/src/datasets/types.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { isFileRef } from "../blob-storage"
|
|
|
2
2
|
import { isJsonValue, isPlainRecord } from "../json"
|
|
3
3
|
import { isDecimalString } from "../ontology/decimal"
|
|
4
4
|
import { DatasetValidationError } from "./errors"
|
|
5
|
+
import { getDatasetSequenceValidationError, parseDatasetTimestamp } from "./sequence"
|
|
5
6
|
import type {
|
|
6
7
|
DatasetColumnDefinition,
|
|
7
8
|
DatasetColumnType,
|
|
@@ -185,6 +186,20 @@ export function assertDatasetDefinition(
|
|
|
185
186
|
assertDatasetPrimaryKey(definition.primaryKey, definition.schema, createError)
|
|
186
187
|
}
|
|
187
188
|
|
|
189
|
+
if (definition.sequenceBy !== undefined) {
|
|
190
|
+
const column = definition.schema.columns.find((column) => column.name === definition.sequenceBy)
|
|
191
|
+
if (
|
|
192
|
+
definition.primaryKey === undefined ||
|
|
193
|
+
!column ||
|
|
194
|
+
column.nullable ||
|
|
195
|
+
!["timestamp", "int64"].includes(column.type)
|
|
196
|
+
) {
|
|
197
|
+
throw createError(
|
|
198
|
+
"Dataset sequenceBy requires a primaryKey and a non-nullable timestamp or int64 column."
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
188
203
|
if (definition.partitionBy !== undefined) {
|
|
189
204
|
if (!Array.isArray(definition.partitionBy)) {
|
|
190
205
|
throw createError("Dataset partitionBy must be an array of column names.")
|
|
@@ -268,6 +283,9 @@ function getColumnValidationError(
|
|
|
268
283
|
): string | null {
|
|
269
284
|
const hasValue = Object.hasOwn(row, column.name)
|
|
270
285
|
const value = row[column.name]
|
|
286
|
+
if (column.name === dataset.sequenceBy) {
|
|
287
|
+
return getDatasetSequenceValidationError(dataset, value)
|
|
288
|
+
}
|
|
271
289
|
|
|
272
290
|
// Treat `undefined` the same as an omitted field so callers either send a real
|
|
273
291
|
// value or use `null` explicitly on nullable columns.
|
|
@@ -285,6 +303,14 @@ function getColumnValidationError(
|
|
|
285
303
|
return null
|
|
286
304
|
}
|
|
287
305
|
|
|
306
|
+
// Every timestamp contributes to a sequenced row's millisecond-precision content digest.
|
|
307
|
+
// Reject ambiguous or lossy values before staging, even when another column orders the row.
|
|
308
|
+
if (dataset.sequenceBy !== undefined && column.type === "timestamp") {
|
|
309
|
+
return parseDatasetTimestamp(value) === null
|
|
310
|
+
? `Dataset '${dataset.id}' column '${column.name}' must be a valid Date or ISO timestamp with an explicit timezone and at most millisecond precision.`
|
|
311
|
+
: null
|
|
312
|
+
}
|
|
313
|
+
|
|
288
314
|
if (!matchesColumnType(value, column.type)) {
|
|
289
315
|
return `Dataset '${dataset.id}' column '${column.name}' must match type '${column.type}'.`
|
|
290
316
|
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import type { BlobStorage, FileRef } from "../blob-storage"
|
|
2
|
+
import { isFileRef } from "../blob-storage"
|
|
3
|
+
import { isPlainRecord } from "../json"
|
|
4
|
+
import type { DatasetMergeCommitResult } from "../lake-storage/merge"
|
|
5
|
+
import { getDatasetMergeChangeValidationError } from "../lake-storage/merge-validation"
|
|
6
|
+
import type {
|
|
7
|
+
DatasetProducer,
|
|
8
|
+
DatasetRow,
|
|
9
|
+
DatasetWriteMode,
|
|
10
|
+
LakeStorage,
|
|
11
|
+
} from "../lake-storage/types"
|
|
12
|
+
import type { MergeChange } from "./changes"
|
|
13
|
+
import type { DatasetDefinition } from "./types"
|
|
14
|
+
import { getDatasetRowValidationError } from "./validation"
|
|
15
|
+
|
|
16
|
+
export interface DatasetWriteValue {
|
|
17
|
+
readonly value: unknown
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface WriteDatasetInput<TValue extends DatasetWriteValue = DatasetWriteValue> {
|
|
21
|
+
readonly lakeStorage: LakeStorage
|
|
22
|
+
readonly blobStorage: Pick<BlobStorage, "stat">
|
|
23
|
+
readonly dataset: DatasetDefinition
|
|
24
|
+
readonly mode: DatasetWriteMode | "merge"
|
|
25
|
+
readonly signal: AbortSignal
|
|
26
|
+
/** Lazy so a merge's latest-version guard is checked before fetching source data. */
|
|
27
|
+
readValues(): Promise<Iterable<TValue> | AsyncIterable<TValue>>
|
|
28
|
+
readonly producer?: DatasetProducer
|
|
29
|
+
readonly expectedLatestVersionId?: string
|
|
30
|
+
readonly commitMessage?: string
|
|
31
|
+
/** Diagnostic label for the caller, including its component prefix. */
|
|
32
|
+
readonly sourceLabel?: string
|
|
33
|
+
/** Progress includes validated values even if the operation subsequently fails. */
|
|
34
|
+
onRead?(rowsRead: number): void
|
|
35
|
+
/** Attach caller-owned source provenance to a validation failure. */
|
|
36
|
+
mapValidationError?(error: unknown, value: TValue, itemIndex: number): unknown
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type WriteDatasetResult = DatasetMergeCommitResult & { readonly rowsRead: number }
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Validate, stage, and commit one dataset write using existing lake sessions.
|
|
43
|
+
*
|
|
44
|
+
* The caller owns fetching/cancelling its source, execution bookkeeping, and publishing the
|
|
45
|
+
* dataset-update notification for a `created` result. This operation returns immediately after
|
|
46
|
+
* the lake commit; it does not wait for downstream pipelines or projections.
|
|
47
|
+
*/
|
|
48
|
+
export async function writeDataset<TValue extends DatasetWriteValue>(
|
|
49
|
+
input: WriteDatasetInput<TValue>
|
|
50
|
+
): Promise<WriteDatasetResult> {
|
|
51
|
+
const { lakeStorage, dataset, signal } = input
|
|
52
|
+
let abortWrite: (() => Promise<void>) | undefined
|
|
53
|
+
let rowsRead = 0
|
|
54
|
+
const onRead = () => {
|
|
55
|
+
rowsRead += 1
|
|
56
|
+
input.onRead?.(rowsRead)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
throwIfAborted(signal)
|
|
60
|
+
await lakeStorage.createDataset(dataset)
|
|
61
|
+
try {
|
|
62
|
+
throwIfAborted(signal)
|
|
63
|
+
const reconcileSnapshot = dataset.sequenceBy !== undefined && input.mode === "snapshot"
|
|
64
|
+
if (input.mode === "merge" || reconcileSnapshot) {
|
|
65
|
+
const session = await lakeStorage.beginMerge({
|
|
66
|
+
dataset,
|
|
67
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
68
|
+
producer: input.producer,
|
|
69
|
+
})
|
|
70
|
+
abortWrite = () => session.abort()
|
|
71
|
+
throwIfAborted(signal)
|
|
72
|
+
const values = await input.readValues()
|
|
73
|
+
throwIfAborted(signal)
|
|
74
|
+
await session.writeChanges(
|
|
75
|
+
validatedValues(
|
|
76
|
+
input,
|
|
77
|
+
values,
|
|
78
|
+
async (value, itemIndex) =>
|
|
79
|
+
reconcileSnapshot
|
|
80
|
+
? { kind: "upsert" as const, row: await validateRow(value, input, itemIndex) }
|
|
81
|
+
: validateMergeChange(value, input, itemIndex),
|
|
82
|
+
onRead
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
throwIfAborted(signal)
|
|
86
|
+
const result = await session.commit({
|
|
87
|
+
commitMessage: input.commitMessage,
|
|
88
|
+
createInitialVersion: reconcileSnapshot,
|
|
89
|
+
retryOnConflict: dataset.sequenceBy !== undefined,
|
|
90
|
+
signal,
|
|
91
|
+
})
|
|
92
|
+
return { ...result, rowsRead }
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const values = await input.readValues()
|
|
96
|
+
throwIfAborted(signal)
|
|
97
|
+
const session = await lakeStorage.beginWrite({
|
|
98
|
+
dataset,
|
|
99
|
+
mode: input.mode,
|
|
100
|
+
producer: input.producer,
|
|
101
|
+
})
|
|
102
|
+
abortWrite = () => session.abort()
|
|
103
|
+
await session.writeRows(
|
|
104
|
+
validatedValues(
|
|
105
|
+
input,
|
|
106
|
+
values,
|
|
107
|
+
(value, itemIndex) => validateRow(value, input, itemIndex),
|
|
108
|
+
onRead
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
throwIfAborted(signal)
|
|
112
|
+
|
|
113
|
+
// Preserve sync semantics: an empty append must not invent an initial dataset version.
|
|
114
|
+
if (rowsRead === 0 && input.mode === "append") {
|
|
115
|
+
const version = await lakeStorage.getLatestVersion(dataset.id)
|
|
116
|
+
await session.abort()
|
|
117
|
+
return { outcome: "unchanged", version, rowsRead }
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const { outcome, ...version } = await session.commit({
|
|
121
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
122
|
+
commitMessage: input.commitMessage,
|
|
123
|
+
})
|
|
124
|
+
return { outcome, version, rowsRead }
|
|
125
|
+
} catch (error) {
|
|
126
|
+
// Cleanup must not replace the source, validation, cancellation, or commit failure.
|
|
127
|
+
await abortWrite?.().catch(() => {})
|
|
128
|
+
throw error
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async function* validatedValues<TValue extends DatasetWriteValue, TResult>(
|
|
133
|
+
input: WriteDatasetInput<TValue>,
|
|
134
|
+
values: Iterable<TValue> | AsyncIterable<TValue>,
|
|
135
|
+
validate: (value: unknown, itemIndex: number) => Promise<TResult>,
|
|
136
|
+
onRead: () => void
|
|
137
|
+
): AsyncIterable<TResult> {
|
|
138
|
+
let itemIndex = 0
|
|
139
|
+
for await (const sourceValue of values) {
|
|
140
|
+
throwIfAborted(input.signal)
|
|
141
|
+
itemIndex += 1
|
|
142
|
+
let value: TResult
|
|
143
|
+
try {
|
|
144
|
+
value = await validate(sourceValue.value, itemIndex)
|
|
145
|
+
} catch (error) {
|
|
146
|
+
throw input.mapValidationError
|
|
147
|
+
? input.mapValidationError(error, sourceValue, itemIndex)
|
|
148
|
+
: error
|
|
149
|
+
}
|
|
150
|
+
onRead()
|
|
151
|
+
yield value
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function sourceLabel(input: Pick<WriteDatasetInput, "dataset" | "sourceLabel">): string {
|
|
156
|
+
return input.sourceLabel ?? `[Sixb] Dataset '${input.dataset.id}' writer`
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async function validateRow(
|
|
160
|
+
value: unknown,
|
|
161
|
+
input: WriteDatasetInput,
|
|
162
|
+
itemIndex: number
|
|
163
|
+
): Promise<DatasetRow> {
|
|
164
|
+
if (!isPlainRecord(value)) {
|
|
165
|
+
throw new Error(
|
|
166
|
+
`${sourceLabel(input)} returned an invalid row at item ${itemIndex}. Dataset rows must be plain objects.`
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
const validationError = getDatasetRowValidationError(value, input.dataset)
|
|
170
|
+
if (validationError) {
|
|
171
|
+
throw new Error(
|
|
172
|
+
`${sourceLabel(input)} returned an invalid row at item ${itemIndex}. ${validationError}`
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
await verifyRowFileRefs(value, input, itemIndex)
|
|
176
|
+
return value
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
async function validateMergeChange(
|
|
180
|
+
value: unknown,
|
|
181
|
+
input: WriteDatasetInput,
|
|
182
|
+
itemIndex: number
|
|
183
|
+
): Promise<MergeChange<DatasetRow, DatasetRow>> {
|
|
184
|
+
const validationError = getDatasetMergeChangeValidationError(value, input.dataset)
|
|
185
|
+
if (validationError) {
|
|
186
|
+
throw new Error(
|
|
187
|
+
`${sourceLabel(input)} returned an invalid merge change at item ${itemIndex}. ${validationError}`
|
|
188
|
+
)
|
|
189
|
+
}
|
|
190
|
+
const change = value as MergeChange<DatasetRow, DatasetRow>
|
|
191
|
+
if (change.kind === "upsert") await verifyRowFileRefs(change.row, input, itemIndex)
|
|
192
|
+
return change
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
async function verifyRowFileRefs(
|
|
196
|
+
row: DatasetRow,
|
|
197
|
+
input: WriteDatasetInput,
|
|
198
|
+
itemIndex: number
|
|
199
|
+
): Promise<void> {
|
|
200
|
+
for (const column of input.dataset.schema.columns) {
|
|
201
|
+
if (column.type !== "fileRef") continue
|
|
202
|
+
const value = row[column.name]
|
|
203
|
+
if (isFileRef(value)) await verifyFileRef(value, input, column.name, itemIndex)
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async function verifyFileRef(
|
|
208
|
+
fileRef: FileRef,
|
|
209
|
+
input: WriteDatasetInput,
|
|
210
|
+
columnName: string,
|
|
211
|
+
itemIndex: number
|
|
212
|
+
): Promise<void> {
|
|
213
|
+
const blobInfo = await input.blobStorage.stat(fileRef.blobId)
|
|
214
|
+
const context = `${sourceLabel(input)} returned row ${itemIndex} with dataset '${input.dataset.id}' column '${columnName}'`
|
|
215
|
+
if (!blobInfo) {
|
|
216
|
+
throw new Error(`${context} referencing unknown blob '${fileRef.blobId}'.`)
|
|
217
|
+
}
|
|
218
|
+
if (blobInfo.digest !== fileRef.digest) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
`${context} referencing blob '${fileRef.blobId}' with digest '${fileRef.digest}', but blob storage has '${blobInfo.digest}'.`
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
if (blobInfo.sizeBytes !== fileRef.sizeBytes) {
|
|
224
|
+
throw new Error(
|
|
225
|
+
`${context} referencing blob '${fileRef.blobId}' with size ${fileRef.sizeBytes}, but blob storage has ${blobInfo.sizeBytes}.`
|
|
226
|
+
)
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function throwIfAborted(signal: AbortSignal): void {
|
|
231
|
+
if (!signal.aborted) return
|
|
232
|
+
if (signal.reason instanceof Error) throw signal.reason
|
|
233
|
+
const error = new Error(
|
|
234
|
+
typeof signal.reason === "string" && signal.reason.length > 0
|
|
235
|
+
? signal.reason
|
|
236
|
+
: "[Sixb] Dataset write was cancelled."
|
|
237
|
+
)
|
|
238
|
+
error.name = "AbortError"
|
|
239
|
+
throw error
|
|
240
|
+
}
|
package/src/errors/internal.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { cloneJsonValue, isJsonValue, isPlainRecord, type ReadonlyJsonValue } from "../json"
|
|
2
2
|
import { SIXB_ERROR_CODES, SIXB_ERROR_DEFINITIONS } from "./catalog"
|
|
3
|
+
import { createFailureRedactor } from "./redaction"
|
|
3
4
|
import type { SixbErrorCode, SixbFailure } from "./types"
|
|
4
5
|
|
|
5
6
|
export const SIXB_FAILURE_MAX_MESSAGE_BYTES = 4 * 1024
|
|
@@ -103,7 +104,11 @@ export function captureSixbFailure<const TCodes extends SixbErrorCodeTuple>(
|
|
|
103
104
|
|
|
104
105
|
/** Identifies errors created by Sixb without making their class part of the contract. */
|
|
105
106
|
export function isSixbError(error: unknown): error is SixbCodedError {
|
|
106
|
-
|
|
107
|
+
try {
|
|
108
|
+
return error instanceof SixbError
|
|
109
|
+
} catch {
|
|
110
|
+
return false
|
|
111
|
+
}
|
|
107
112
|
}
|
|
108
113
|
|
|
109
114
|
/**
|
|
@@ -128,9 +133,12 @@ export function toSixbFailure(
|
|
|
128
133
|
throw new Error(`[Sixb] Error code '${error.code}' is not allowed by this failure contract.`)
|
|
129
134
|
}
|
|
130
135
|
const code = error.code
|
|
131
|
-
const
|
|
136
|
+
const redactor = createFailureRedactor()
|
|
137
|
+
const details = error.details === undefined ? undefined : redactor.context(error.details)
|
|
138
|
+
const { detail, truncated } = findFailureDetail(error, code)
|
|
139
|
+
const summary = SIXB_ERROR_DEFINITIONS[code].publicMessage
|
|
132
140
|
const message = truncateUtf8(
|
|
133
|
-
|
|
141
|
+
redactor.text(detail && detail.message !== summary ? `${summary} ${detail.message}` : summary),
|
|
134
142
|
SIXB_FAILURE_MAX_MESSAGE_BYTES
|
|
135
143
|
)
|
|
136
144
|
const failure: SixbFailure = {
|
|
@@ -139,7 +147,9 @@ export function toSixbFailure(
|
|
|
139
147
|
retryable: SIXB_ERROR_DEFINITIONS[code].retryable,
|
|
140
148
|
at: failureTimestamp(options.at),
|
|
141
149
|
...(details === undefined ? {} : { details: cloneJsonValue(details, "Sixb failure details") }),
|
|
142
|
-
...(
|
|
150
|
+
...(detail?.httpStatus === undefined ? {} : { httpStatus: detail.httpStatus }),
|
|
151
|
+
...(redactor.redacted ? { redacted: true } : {}),
|
|
152
|
+
...(message.truncated || truncated || redactor.truncated ? { truncated: true } : {}),
|
|
143
153
|
}
|
|
144
154
|
|
|
145
155
|
if (serializedByteLength(failure) <= SIXB_FAILURE_MAX_SERIALIZED_BYTES) return failure
|
|
@@ -149,10 +159,67 @@ export function toSixbFailure(
|
|
|
149
159
|
message: failure.message,
|
|
150
160
|
retryable: failure.retryable,
|
|
151
161
|
at: failure.at,
|
|
162
|
+
...(failure.httpStatus === undefined ? {} : { httpStatus: failure.httpStatus }),
|
|
163
|
+
...(failure.redacted ? { redacted: true } : {}),
|
|
152
164
|
truncated: true,
|
|
153
165
|
}
|
|
154
166
|
}
|
|
155
167
|
|
|
168
|
+
const NETWORK_MESSAGES: Readonly<Record<string, string>> = {
|
|
169
|
+
ECONNREFUSED: "The remote service refused the connection.",
|
|
170
|
+
ECONNRESET: "The remote service reset the connection.",
|
|
171
|
+
ENOTFOUND: "The remote host could not be resolved.",
|
|
172
|
+
EAI_AGAIN: "DNS resolution temporarily failed.",
|
|
173
|
+
ETIMEDOUT: "The connection timed out.",
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function isHttpStatus(value: unknown): value is number {
|
|
177
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 100 && value <= 599
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** Select one explanation along the causal chain; unrelated aggregate errors stay separate. */
|
|
181
|
+
function findFailureDetail(
|
|
182
|
+
error: SixbCodedError,
|
|
183
|
+
boundaryCode: SixbErrorCode
|
|
184
|
+
): { detail?: { message: string; httpStatus?: number }; truncated: boolean } {
|
|
185
|
+
const seen = new Set<object>()
|
|
186
|
+
let current: unknown = error
|
|
187
|
+
while (typeof current === "object" && current !== null && !seen.has(current)) {
|
|
188
|
+
if (seen.size === 8) return { truncated: true }
|
|
189
|
+
seen.add(current)
|
|
190
|
+
if (
|
|
191
|
+
isSixbError(current) &&
|
|
192
|
+
current.code !== boundaryCode &&
|
|
193
|
+
current.code !== "internal.unexpected"
|
|
194
|
+
) {
|
|
195
|
+
return {
|
|
196
|
+
detail: { message: SIXB_ERROR_DEFINITIONS[current.code].publicMessage },
|
|
197
|
+
truncated: false,
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
// Read only data properties: arbitrary messages and getters remain private.
|
|
202
|
+
const status =
|
|
203
|
+
Object.getOwnPropertyDescriptor(current, "status")?.value ??
|
|
204
|
+
Object.getOwnPropertyDescriptor(current, "statusCode")?.value
|
|
205
|
+
if (isHttpStatus(status)) {
|
|
206
|
+
return {
|
|
207
|
+
detail: { message: `Upstream request returned HTTP ${status}.`, httpStatus: status },
|
|
208
|
+
truncated: false,
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const code = Object.getOwnPropertyDescriptor(current, "code")?.value
|
|
212
|
+
if (typeof code === "string" && Object.hasOwn(NETWORK_MESSAGES, code)) {
|
|
213
|
+
return { detail: { message: NETWORK_MESSAGES[code] }, truncated: false }
|
|
214
|
+
}
|
|
215
|
+
current = Object.getOwnPropertyDescriptor(current, "cause")?.value
|
|
216
|
+
} catch {
|
|
217
|
+
break
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return { truncated: false }
|
|
221
|
+
}
|
|
222
|
+
|
|
156
223
|
/** Serializes a validated failure for durable storage. */
|
|
157
224
|
export function serializeSixbFailure<const TCodes extends SixbErrorCodeTuple>(
|
|
158
225
|
failure: SixbFailure<TCodes[number]>,
|
|
@@ -186,7 +253,7 @@ export function parseSixbFailure(
|
|
|
186
253
|
throw invalidStoredFailure("expected a JSON object")
|
|
187
254
|
}
|
|
188
255
|
|
|
189
|
-
const { code, message, retryable, at, details, truncated } = candidate
|
|
256
|
+
const { code, message, retryable, at, details, httpStatus, redacted, truncated } = candidate
|
|
190
257
|
if (typeof code !== "string" || !SIXB_ERROR_CODE_SET.has(code)) {
|
|
191
258
|
throw invalidStoredFailure("code is not a known Sixb error code")
|
|
192
259
|
}
|
|
@@ -215,15 +282,28 @@ export function parseSixbFailure(
|
|
|
215
282
|
throw invalidStoredFailure("truncated must be true when present")
|
|
216
283
|
}
|
|
217
284
|
|
|
285
|
+
if (redacted !== undefined && redacted !== true) {
|
|
286
|
+
throw invalidStoredFailure("redacted must be true when present")
|
|
287
|
+
}
|
|
288
|
+
if (httpStatus !== undefined && !isHttpStatus(httpStatus)) {
|
|
289
|
+
throw invalidStoredFailure("httpStatus must be an integer HTTP status")
|
|
290
|
+
}
|
|
291
|
+
const redactor = createFailureRedactor()
|
|
292
|
+
const safeMessage = truncateUtf8(redactor.text(message), SIXB_FAILURE_MAX_MESSAGE_BYTES)
|
|
293
|
+
const safeDetails =
|
|
294
|
+
details === undefined ? undefined : redactor.context(details as ReadonlyJsonValue)
|
|
295
|
+
|
|
218
296
|
const failure: SixbFailure = {
|
|
219
297
|
code: code as SixbErrorCode,
|
|
220
|
-
message,
|
|
298
|
+
message: safeMessage.value,
|
|
221
299
|
retryable,
|
|
222
300
|
at,
|
|
223
|
-
...(
|
|
301
|
+
...(safeDetails === undefined
|
|
224
302
|
? {}
|
|
225
|
-
: { details: cloneJsonValue(
|
|
226
|
-
...(
|
|
303
|
+
: { details: cloneJsonValue(safeDetails, "Stored Sixb failure details") }),
|
|
304
|
+
...(httpStatus === undefined ? {} : { httpStatus: httpStatus as number }),
|
|
305
|
+
...(redacted || redactor.redacted ? { redacted: true } : {}),
|
|
306
|
+
...(truncated || redactor.truncated || safeMessage.truncated ? { truncated: true } : {}),
|
|
227
307
|
}
|
|
228
308
|
if (serializedByteLength(failure) > SIXB_FAILURE_MAX_SERIALIZED_BYTES) {
|
|
229
309
|
throw invalidStoredFailure(
|
|
@@ -255,7 +335,7 @@ function invalidStoredFailure(reason: string): Error {
|
|
|
255
335
|
* Extracts a diagnostic message for an internal error or log entry.
|
|
256
336
|
*
|
|
257
337
|
* The result can contain provider data and must not be persisted or returned by an API.
|
|
258
|
-
* `toSixbFailure()`
|
|
338
|
+
* `toSixbFailure()` constructs a message from recognized HTTP, network, or Sixb information instead.
|
|
259
339
|
*/
|
|
260
340
|
export function summarizeErrorMessage(value: unknown, fallback?: string): string {
|
|
261
341
|
const message = readStringProperty(value, "message")
|