@sixb/core 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +77 -89
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +2 -0
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +33 -37
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/adapters.d.ts +3 -3
- package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
- package/dist/agents/context/entries.d.ts.map +1 -0
- package/dist/agents/context/index.d.ts +4 -0
- package/dist/agents/context/index.d.ts.map +1 -0
- package/dist/agents/context/index.js +19 -0
- package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
- package/dist/agents/context-model.d.ts +1 -1
- package/dist/agents/context-model.d.ts.map +1 -1
- package/dist/agents/context-resolution.d.ts +1 -1
- package/dist/agents/context-resolution.d.ts.map +1 -1
- package/dist/agents/index.d.ts +4 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +192 -204
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +1 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +2 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/request.d.ts +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams/index.d.ts +4 -0
- package/dist/agents/streams/index.d.ts.map +1 -0
- package/dist/agents/streams/index.js +20 -0
- package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
- package/dist/agents/streams/internal.d.ts +3 -0
- package/dist/agents/streams/internal.d.ts.map +1 -0
- package/dist/agents/streams/internal.js +40 -0
- package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
- package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
- package/dist/agents/streams/protocol.d.ts.map +1 -0
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +96 -108
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/strategy.js +8 -9
- package/dist/auth/strategy.js.map +1 -1
- package/dist/authorization/index.js +51 -56
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/browser.js +15 -17
- package/dist/blob-storage/browser.js.map +1 -1
- package/dist/blob-storage/index.js +36 -38
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/bootstrap/discovery.d.ts +14 -1
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -2
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +79 -88
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/index.js +8 -10
- package/dist/broker/index.js.map +1 -1
- package/dist/{chunk-k34z5rvh.js → chunk-0rdrecsb.js} +18 -18
- package/dist/{chunk-k34z5rvh.js.map → chunk-0rdrecsb.js.map} +2 -2
- package/dist/{chunk-q0k9nc5a.js → chunk-0w35wavj.js} +98 -98
- package/dist/{chunk-q0k9nc5a.js.map → chunk-0w35wavj.js.map} +2 -2
- package/dist/chunk-0y39rgsb.js +43 -0
- package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
- package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
- package/dist/chunk-17kfctj6.js.map +10 -0
- package/dist/{chunk-aa2pen2v.js → chunk-1enhpacz.js} +188 -175
- package/dist/{chunk-aa2pen2v.js.map → chunk-1enhpacz.js.map} +2 -2
- package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
- package/dist/{chunk-5gd7tpv6.js.map → chunk-2c4j899j.js.map} +2 -2
- package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
- package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
- package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
- package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
- package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
- package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
- package/dist/{chunk-8m5ejdpn.js → chunk-3f7veca0.js} +4 -4
- package/dist/{chunk-8m5ejdpn.js.map → chunk-3f7veca0.js.map} +2 -2
- package/dist/chunk-3frsnm7x.js +32 -0
- package/dist/chunk-3frsnm7x.js.map +11 -0
- package/dist/{chunk-n2w475r0.js → chunk-3tgwrcyh.js} +81 -81
- package/dist/{chunk-n2w475r0.js.map → chunk-3tgwrcyh.js.map} +2 -2
- package/dist/{chunk-mwsxn98e.js → chunk-52hbv0ak.js} +170 -170
- package/dist/{chunk-mwsxn98e.js.map → chunk-52hbv0ak.js.map} +4 -4
- package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
- package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
- package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
- package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
- package/dist/chunk-653vwrzr.js +39 -0
- package/dist/chunk-653vwrzr.js.map +10 -0
- package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
- package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
- package/dist/chunk-7apz6hg4.js +50 -0
- package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
- package/dist/chunk-7bs40fe1.js +218 -0
- package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
- package/dist/chunk-7zgecwy1.js +113 -0
- package/dist/chunk-7zgecwy1.js.map +10 -0
- package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
- package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
- package/dist/chunk-8vj0rjgs.js +165 -0
- package/dist/chunk-8vj0rjgs.js.map +15 -0
- package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
- package/dist/chunk-92vk7gta.js.map +10 -0
- package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
- package/dist/chunk-93csa55g.js.map +11 -0
- package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
- package/dist/chunk-98cw09sw.js.map +10 -0
- package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
- package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
- package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
- package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
- package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
- package/dist/{chunk-f26bck4t.js → chunk-an5tt9y0.js} +353 -353
- package/dist/{chunk-f26bck4t.js.map → chunk-an5tt9y0.js.map} +2 -2
- package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
- package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
- package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
- package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
- package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
- package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
- package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
- package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
- package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
- package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
- package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
- package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
- package/dist/chunk-d62kjtbg.js +7 -0
- package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
- package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
- package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
- package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
- package/dist/chunk-dmn70ztd.js.map +11 -0
- package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
- package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
- package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
- package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
- package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
- package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
- package/dist/{chunk-wtf06et8.js → chunk-emyyk7dx.js} +55 -55
- package/dist/{chunk-wtf06et8.js.map → chunk-emyyk7dx.js.map} +2 -2
- package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
- package/dist/chunk-f0rwz2vh.js.map +11 -0
- package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
- package/dist/chunk-f4w3yp4f.js.map +12 -0
- package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
- package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
- package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
- package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
- package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
- package/dist/chunk-g53f0e4j.js.map +15 -0
- package/dist/chunk-g6cke204.js +124 -0
- package/dist/chunk-g6cke204.js.map +10 -0
- package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
- package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
- package/dist/chunk-h1gfhhbh.js +602 -0
- package/dist/chunk-h1gfhhbh.js.map +18 -0
- package/dist/chunk-h3v76ams.js +32 -0
- package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
- package/dist/{chunk-xajtptbw.js → chunk-hpr1r6av.js} +1367 -418
- package/dist/chunk-hpr1r6av.js.map +44 -0
- package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
- package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
- package/dist/{chunk-w9tg6yyb.js → chunk-jjy0fhrn.js} +36 -36
- package/dist/{chunk-w9tg6yyb.js.map → chunk-jjy0fhrn.js.map} +2 -2
- package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-ajnan18g.js → chunk-k3cqkkn2.js} +58 -55
- package/dist/chunk-k3cqkkn2.js.map +12 -0
- package/dist/{chunk-s5y30bc9.js → chunk-kxwa347f.js} +51 -49
- package/dist/{chunk-s5y30bc9.js.map → chunk-kxwa347f.js.map} +4 -4
- package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
- package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
- package/dist/{chunk-3z1qec12.js → chunk-m3z3x9v0.js} +107 -64
- package/dist/{chunk-3z1qec12.js.map → chunk-m3z3x9v0.js.map} +3 -3
- package/dist/{chunk-sbzzr4kx.js → chunk-mjbk2djy.js} +1061 -1195
- package/dist/{chunk-sbzzr4kx.js.map → chunk-mjbk2djy.js.map} +9 -15
- package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
- package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
- package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
- package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
- package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
- package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
- package/dist/{chunk-rv2hkwwa.js → chunk-ppytyr6w.js} +156 -179
- package/dist/{chunk-rv2hkwwa.js.map → chunk-ppytyr6w.js.map} +3 -5
- package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
- package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
- package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
- package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
- package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
- package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
- package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
- package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
- package/dist/{chunk-mth82m8t.js → chunk-qhcpj9wc.js} +77 -77
- package/dist/{chunk-mth82m8t.js.map → chunk-qhcpj9wc.js.map} +2 -2
- package/dist/{chunk-tpnd31c1.js → chunk-r29fxdhn.js} +12 -12
- package/dist/{chunk-tpnd31c1.js.map → chunk-r29fxdhn.js.map} +2 -2
- package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
- package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
- package/dist/{chunk-3xep5cjx.js → chunk-r4tfx1sf.js} +104 -86
- package/dist/chunk-r4tfx1sf.js.map +15 -0
- package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
- package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
- package/dist/chunk-s3csryxe.js +152 -0
- package/dist/chunk-s3csryxe.js.map +11 -0
- package/dist/chunk-s670k14v.js +60 -0
- package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
- package/dist/chunk-skz0hst3.js +788 -0
- package/dist/chunk-skz0hst3.js.map +19 -0
- package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
- package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
- package/dist/{chunk-v1xppd0y.js → chunk-vf691g1r.js} +60 -60
- package/dist/{chunk-v1xppd0y.js.map → chunk-vf691g1r.js.map} +2 -2
- package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
- package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
- package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
- package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
- package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
- package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
- package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
- package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
- package/dist/{chunk-8tsf6dmc.js → chunk-x57ycxq0.js} +204 -204
- package/dist/{chunk-8tsf6dmc.js.map → chunk-x57ycxq0.js.map} +2 -2
- package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
- package/dist/{chunk-gbejpkex.js → chunk-xfbydgzy.js} +26 -26
- package/dist/{chunk-gbejpkex.js.map → chunk-xfbydgzy.js.map} +2 -2
- package/dist/{chunk-gzasd5b6.js → chunk-xyr8kppc.js} +22 -22
- package/dist/{chunk-gzasd5b6.js.map → chunk-xyr8kppc.js.map} +2 -2
- package/dist/{chunk-h5vqbfmd.js → chunk-ypbtykv6.js} +117 -117
- package/dist/{chunk-h5vqbfmd.js.map → chunk-ypbtykv6.js.map} +3 -3
- package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
- package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
- package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
- package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
- package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
- package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
- package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
- package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
- package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
- package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
- package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
- package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
- package/dist/{chunk-xhy826cz.js → chunk-zcnq6105.js} +7 -7
- package/dist/{chunk-xhy826cz.js.map → chunk-zcnq6105.js.map} +2 -2
- package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
- package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
- package/dist/connectors/connections/internal.js +9 -10
- package/dist/connectors/connections/internal.js.map +1 -1
- package/dist/datasets/write.js +8 -12
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/index.js +7 -8
- package/dist/edits/index.js.map +1 -1
- package/dist/error-reporting/internal.js +22 -24
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/errors/internal.d.ts +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +22 -24
- package/dist/errors/internal.js.map +1 -1
- package/dist/errors/redaction.d.ts +8 -0
- package/dist/errors/redaction.d.ts.map +1 -0
- package/dist/errors/types.d.ts +4 -0
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/events/index.js +60 -63
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.js +4 -5
- package/dist/events/scope.js.map +1 -1
- package/dist/events/selectors/index.js +9 -10
- package/dist/events/selectors/index.js.map +1 -1
- package/dist/execution/agent.d.ts +3 -3
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +70 -82
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/durable.d.ts +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +2 -0
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +63 -71
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +65 -75
- package/dist/execution/request.js.map +3 -3
- package/dist/http/index.js +10 -11
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +14 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +455 -477
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +38 -42
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/logging/index.d.ts +3 -4
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +18 -40
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/internal.d.ts +5 -0
- package/dist/logging/internal.d.ts.map +1 -0
- package/dist/logging/internal.js +43 -0
- package/dist/logging/internal.js.map +9 -0
- package/dist/materialization/index.js +46 -49
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/index.js +137 -145
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/errors.d.ts +4 -0
- package/dist/models/errors.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +9 -0
- package/dist/models/execution/binding.d.ts.map +1 -0
- package/dist/models/execution/errors.d.ts +9 -0
- package/dist/models/execution/errors.d.ts.map +1 -0
- package/dist/models/execution/index.d.ts +11 -0
- package/dist/models/execution/index.d.ts.map +1 -0
- package/dist/models/execution/index.js +55 -0
- package/dist/models/execution/index.js.map +9 -0
- package/dist/models/execution/model-call-accounting.d.ts +17 -0
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
- package/dist/models/execution/model-call-admission.d.ts +47 -0
- package/dist/models/execution/model-call-admission.d.ts.map +1 -0
- package/dist/models/execution/model-call-limits.d.ts +15 -0
- package/dist/models/execution/model-call-limits.d.ts.map +1 -0
- package/dist/models/execution/model-call-recorder.d.ts +40 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
- package/dist/models/execution/model-call-recovery.d.ts +12 -0
- package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
- package/dist/models/execution/recovery-queue.d.ts +5 -0
- package/dist/models/execution/recovery-queue.d.ts.map +1 -0
- package/dist/models/execution/types.d.ts +44 -0
- package/dist/models/execution/types.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts +5 -0
- package/dist/models/execution/usage.d.ts.map +1 -0
- package/dist/models/execution.d.ts +6 -0
- package/dist/models/execution.d.ts.map +1 -0
- package/dist/models/generation-types.d.ts +40 -0
- package/dist/models/generation-types.d.ts.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +42 -43
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +3 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/output.d.ts +5 -0
- package/dist/models/output.d.ts.map +1 -0
- package/dist/models/resolve.d.ts +4 -0
- package/dist/models/resolve.d.ts.map +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +75 -87
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +67 -76
- package/dist/objects/query/index.js.map +1 -1
- package/dist/ontology/index.d.ts +1 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +62 -113
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.d.ts +7 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +65 -116
- package/dist/ontology/internal.js.map +3 -4
- package/dist/pipelines/index.js +57 -66
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +58 -67
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +11 -15
- package/dist/query.js.map +1 -1
- package/dist/queues/index.d.ts +2 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +6 -7
- package/dist/queues/index.js.map +1 -1
- package/dist/queues/types.d.ts +3 -20
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/rules/internal.js +4 -5
- package/dist/rules/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +2 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +2 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.js +13 -14
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/sandboxes/errors.d.ts +4 -0
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +2 -2
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +14 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -7
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/scheduler/index.js +9 -10
- package/dist/scheduler/index.js.map +1 -1
- package/dist/schedules/index.js +31 -33
- package/dist/schedules/index.js.map +1 -1
- package/dist/shares/internal.js +46 -54
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +7 -9
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +4 -8
- package/dist/storage/action-runs/provider.js.map +1 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +26 -30
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +0 -3
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/attribution.d.ts +4 -0
- package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
- package/dist/storage/ai-cost/groups.d.ts +3 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +1 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +30 -143
- package/dist/storage/ai-cost/provider.js.map +3 -4
- package/dist/storage/ai-cost/types.d.ts +15 -0
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +14 -16
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.js +56 -57
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/auth/in-memory.d.ts +1 -1
- package/dist/storage/auth/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +34 -36
- package/dist/storage/connector-connections/provider.js.map +2 -2
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +14 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +6 -2
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +2 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +221 -256
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -0
- package/dist/storage/internal.d.ts.map +1 -0
- package/dist/storage/internal.js +47 -0
- package/dist/storage/internal.js.map +9 -0
- package/dist/storage/ontology/provider.js +105 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/operation-scope.js +18 -19
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +4 -6
- package/dist/storage/pipeline-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/provider.js +66 -70
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/share-grants/provider.js +17 -19
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-sessions/provider.js +14 -15
- package/dist/storage/share-sessions/provider.js.map +1 -1
- package/dist/storage/sync-runs/provider.js +4 -6
- package/dist/storage/sync-runs/provider.js.map +1 -1
- package/dist/storage/webhook-runs/provider.js +4 -6
- package/dist/storage/webhook-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +13 -21
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +0 -3
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +55 -65
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -1
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/agent-execution.d.ts +1 -0
- package/dist/testing/agent-execution.d.ts.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -0
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/index.js +911 -799
- package/dist/testing/index.js.map +9 -9
- package/dist/testing/workflow-execution.d.ts +1 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -1
- package/dist/webhooks/internal.js +51 -59
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +11 -13
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts +2 -0
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +135 -147
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/run-dispatch.d.ts +0 -1
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +48 -30
- package/src/actions/run-dispatch.ts +2 -6
- package/src/actions/types/context.ts +2 -0
- package/src/actions/validation.ts +2 -1
- package/src/agents/adapters.ts +4 -9
- package/src/agents/{context.ts → context/entries.ts} +4 -4
- package/src/agents/context/index.ts +15 -0
- package/src/agents/context-model.ts +1 -1
- package/src/agents/context-resolution.ts +1 -1
- package/src/agents/index.ts +4 -4
- package/src/agents/message.ts +1 -1
- package/src/agents/model-loop.ts +8 -0
- package/src/agents/request.ts +11 -26
- package/src/agents/streams/index.ts +18 -0
- package/src/agents/streams/internal.ts +19 -0
- package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
- package/src/agents/types.ts +1 -1
- package/src/agents/validation.ts +3 -7
- package/src/auth/index.ts +0 -1
- package/src/bootstrap/discovery.ts +81 -24
- package/src/bootstrap/index.ts +8 -1
- package/src/errors/internal.ts +90 -10
- package/src/errors/redaction.ts +98 -0
- package/src/errors/types.ts +4 -0
- package/src/execution/agent.ts +5 -3
- package/src/execution/durable.ts +11 -1
- package/src/execution/primitive.ts +5 -1
- package/src/execution/request.ts +3 -0
- package/src/index.ts +20 -18
- package/src/logging/index.ts +2 -33
- package/src/logging/internal.ts +43 -0
- package/src/models/errors.ts +12 -0
- package/src/models/execution/binding.ts +29 -0
- package/src/models/execution/errors.ts +18 -0
- package/src/models/execution/index.ts +26 -0
- package/src/models/execution/model-call-accounting.ts +211 -0
- package/src/models/execution/model-call-admission.ts +127 -0
- package/src/models/execution/model-call-limits.ts +135 -0
- package/src/models/execution/model-call-recorder.ts +235 -0
- package/src/models/execution/model-call-recovery.ts +125 -0
- package/src/models/execution/recovery-queue.ts +31 -0
- package/src/models/execution/types.ts +58 -0
- package/src/models/execution/usage.ts +23 -0
- package/src/models/execution.ts +207 -0
- package/src/models/generation-types.ts +50 -0
- package/src/models/index.ts +8 -0
- package/src/models/language-model.ts +3 -0
- package/src/models/output.ts +45 -0
- package/src/models/resolve.ts +27 -0
- package/src/objects/execution.ts +1 -1
- package/src/ontology/index.ts +1 -2
- package/src/ontology/internal.ts +35 -0
- package/src/projections/run-dispatch.ts +1 -0
- package/src/query.ts +0 -1
- package/src/queues/index.ts +4 -2
- package/src/queues/types.ts +6 -25
- package/src/runtime/create.ts +2 -1
- package/src/runtime/host.ts +2 -1
- package/src/runtime/sixb.ts +4 -0
- package/src/sandboxes/errors.ts +5 -0
- package/src/sandboxes/index.ts +3 -0
- package/src/sandboxes/sandbox.ts +35 -7
- package/src/storage/agents/in-memory.ts +0 -3
- package/src/storage/agents/types.ts +0 -3
- package/src/storage/ai-cost/analytics.ts +1 -1
- package/src/storage/ai-cost/attribution.ts +15 -0
- package/src/storage/ai-cost/groups.ts +5 -1
- package/src/storage/ai-cost/provider.ts +1 -0
- package/src/storage/ai-cost/types.ts +7 -0
- package/src/storage/auth/in-memory.ts +1 -1
- package/src/storage/executions/in-memory.ts +4 -9
- package/src/storage/executions/provider.ts +4 -0
- package/src/storage/executions/types.ts +6 -2
- package/src/storage/executions/validation.ts +32 -0
- package/src/storage/in-memory/index.ts +16 -1
- package/src/storage/index.ts +3 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/testing/action-execution.ts +9 -2
- package/src/testing/agent-execution.ts +3 -0
- package/src/testing/agent-storage-contract.ts +0 -5
- package/src/testing/ai-model-call-groups-contract.ts +74 -2
- package/src/testing/execution-storage-contract.ts +59 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +0 -9
- package/src/workflows/run-dispatch.ts +0 -3
- package/src/workflows/types.ts +2 -0
- package/src/workflows/validation.ts +1 -1
- package/dist/agents/context.d.ts.map +0 -1
- package/dist/agents/context.js +0 -23
- package/dist/agents/streams.d.ts.map +0 -1
- package/dist/agents/streams.js +0 -55
- package/dist/chunk-08m3b6w8.js +0 -32
- package/dist/chunk-19jp6g9d.js.map +0 -11
- package/dist/chunk-2xns679x.js.map +0 -11
- package/dist/chunk-3xep5cjx.js.map +0 -15
- package/dist/chunk-407j3msh.js +0 -60
- package/dist/chunk-4qfkag59.js +0 -1568
- package/dist/chunk-4qfkag59.js.map +0 -20
- package/dist/chunk-5e3pq99w.js.map +0 -11
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-ajnan18g.js.map +0 -12
- package/dist/chunk-c15dr03f.js +0 -43
- package/dist/chunk-d8qkxt2v.js.map +0 -10
- package/dist/chunk-jq43kdvk.js +0 -50
- package/dist/chunk-k522z7v6.js.map +0 -10
- package/dist/chunk-p03r0h5s.js.map +0 -16
- package/dist/chunk-p1rzczbt.js +0 -218
- package/dist/chunk-rafagrwr.js.map +0 -11
- package/dist/chunk-xajtptbw.js.map +0 -40
- package/dist/chunk-y64skrwp.js +0 -19
- package/dist/chunk-zcnhxkvd.js +0 -7
- package/dist/logging/types.js +0 -27
- package/dist/logging/types.js.map +0 -9
- /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
- /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
- /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
- /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
- /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
- /package/dist/{chunk-z4ccwbkz.js.map → chunk-x9v4cx1d.js.map} +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
createSixbError2
|
|
4
|
+
} from "./chunk-f4w3yp4f.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
compileSelectedObjectReadScope2
|
|
7
|
+
} from "./chunk-v4jbb3rs.js";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
resolveSemanticType2
|
|
10
|
+
} from "./chunk-ms2tmn1k.js";
|
|
11
11
|
import {
|
|
12
12
|
compareStrings
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-wy0qdqfm.js";
|
|
14
14
|
|
|
15
15
|
// src/execution/authorization.ts
|
|
16
16
|
import { isDeepStrictEqual } from "util";
|
|
17
17
|
|
|
18
18
|
// src/agents/identity.ts
|
|
19
|
-
function
|
|
19
|
+
function agentServiceAccountId2(actorId) {
|
|
20
20
|
return `svc_agent_${actorId}`;
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -144,10 +144,10 @@ function emptyGrantSets() {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
// src/storage/objects/execution-limits.ts
|
|
147
|
-
var
|
|
147
|
+
var MAX_OBJECT_READ_FACETS2 = 16;
|
|
148
148
|
var MAX_OUTPUT_JSON_DEPTH = 64;
|
|
149
149
|
|
|
150
|
-
class
|
|
150
|
+
class ObjectReadLimitExceededError2 extends Error {
|
|
151
151
|
metric;
|
|
152
152
|
limit;
|
|
153
153
|
name = "ObjectReadLimitExceededError";
|
|
@@ -158,7 +158,7 @@ class ObjectReadLimitExceededError extends Error {
|
|
|
158
158
|
this.limit = limit;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
function
|
|
161
|
+
function snapshotObjectReadExecutionLimits2(limits) {
|
|
162
162
|
if (typeof limits !== "object" || limits === null) {
|
|
163
163
|
throw new Error("[Sixb] Object read execution limits must be provided.");
|
|
164
164
|
}
|
|
@@ -167,14 +167,14 @@ function snapshotObjectReadExecutionLimits(limits) {
|
|
|
167
167
|
maxOutputJsonBytes: positiveSafeInteger(limits.maxOutputJsonBytes, "maxOutputJsonBytes")
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
|
-
function
|
|
171
|
-
if (!Number.isSafeInteger(count) || count < 0 || count >
|
|
172
|
-
throw new Error(`[Sixb] An object read supports between 0 and ${
|
|
170
|
+
function assertObjectReadFacetCount2(count) {
|
|
171
|
+
if (!Number.isSafeInteger(count) || count < 0 || count > MAX_OBJECT_READ_FACETS2) {
|
|
172
|
+
throw new Error(`[Sixb] An object read supports between 0 and ${MAX_OBJECT_READ_FACETS2} facets.`);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
function
|
|
175
|
+
function assertObjectReadOutputWithinLimit2(value, limits) {
|
|
176
176
|
const fail = () => {
|
|
177
|
-
throw new
|
|
177
|
+
throw new ObjectReadLimitExceededError2("outputJsonBytes", limits.maxOutputJsonBytes);
|
|
178
178
|
};
|
|
179
179
|
const stack = [];
|
|
180
180
|
let bytes = 0;
|
|
@@ -278,7 +278,7 @@ function assertObjectReadOutputWithinLimit(value, limits) {
|
|
|
278
278
|
return current;
|
|
279
279
|
});
|
|
280
280
|
} catch (error) {
|
|
281
|
-
if (error instanceof
|
|
281
|
+
if (error instanceof ObjectReadLimitExceededError2)
|
|
282
282
|
throw error;
|
|
283
283
|
if (error instanceof RangeError || error instanceof TypeError)
|
|
284
284
|
fail();
|
|
@@ -462,8 +462,8 @@ function createDelegatedRuntimeAuthorization(input) {
|
|
|
462
462
|
throw new Error("[Sixb] Delegated runtime authorization requires a request execution without a principal.");
|
|
463
463
|
}
|
|
464
464
|
const objectRead = Object.freeze({
|
|
465
|
-
scope:
|
|
466
|
-
limits:
|
|
465
|
+
scope: compileSelectedObjectReadScope2(objectReadInput.selection),
|
|
466
|
+
limits: snapshotObjectReadExecutionLimits2(objectReadInput.limits)
|
|
467
467
|
});
|
|
468
468
|
return register(execution, {
|
|
469
469
|
type: "delegated",
|
|
@@ -520,7 +520,7 @@ function snapshotSharedDelegation(input) {
|
|
|
520
520
|
function assertExecutionScopeProject(projectId, scope) {
|
|
521
521
|
assertNonEmpty(projectId, "Project id");
|
|
522
522
|
if (scope.execution.projectId !== projectId) {
|
|
523
|
-
throw
|
|
523
|
+
throw createSixbError2("internal.unexpected", `[Sixb] Execution scope belongs to project '${scope.execution.projectId}', not '${projectId}'.`, {
|
|
524
524
|
details: {
|
|
525
525
|
executionId: scope.execution.id,
|
|
526
526
|
expectedProjectId: projectId,
|
|
@@ -530,10 +530,10 @@ function assertExecutionScopeProject(projectId, scope) {
|
|
|
530
530
|
}
|
|
531
531
|
const resolved = resolveRuntimeAuthorization(scope.authorization);
|
|
532
532
|
if (resolved.type === "denied") {
|
|
533
|
-
throw
|
|
533
|
+
throw createSixbError2("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId: scope.execution.id, projectId } });
|
|
534
534
|
}
|
|
535
535
|
if (resolved.projectId !== projectId) {
|
|
536
|
-
throw
|
|
536
|
+
throw createSixbError2("internal.unexpected", `[Sixb] Execution authorization belongs to project '${resolved.projectId}', not '${projectId}'.`, {
|
|
537
537
|
details: {
|
|
538
538
|
authorizationProjectId: resolved.projectId,
|
|
539
539
|
executionId: scope.execution.id,
|
|
@@ -552,7 +552,7 @@ function resolveExecutionScopeAuthorization(projectId, scope) {
|
|
|
552
552
|
assertExecutionScopeProject(projectId, capturedScope);
|
|
553
553
|
const resolved = resolveRuntimeAuthorization(capturedScope.authorization);
|
|
554
554
|
if (resolved.type === "denied") {
|
|
555
|
-
throw
|
|
555
|
+
throw createSixbError2("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId: capturedScope.execution.id, projectId } });
|
|
556
556
|
}
|
|
557
557
|
const registration = registeredAuthorizations.get(capturedScope.authorization);
|
|
558
558
|
if (!registration || !executionMatchesBinding(registration.execution, capturedScope.execution)) {
|
|
@@ -591,7 +591,7 @@ function assertResolvedAuthorizationMatchesExecution(resolved, execution) {
|
|
|
591
591
|
if (resolved.type === "principal" && resolved.ref.type === "principal") {
|
|
592
592
|
if (resolved.ref.principal.type === "serviceAccount") {
|
|
593
593
|
const actorId = execution.executor.actorId;
|
|
594
|
-
if (actorId === undefined || resolved.ref.principal.id !==
|
|
594
|
+
if (actorId === undefined || resolved.ref.principal.id !== agentServiceAccountId2(actorId) || resolved.ref.credential !== undefined) {
|
|
595
595
|
throw invalidExecutionAuthority(execution.id, "agent authority must reference its managed service account");
|
|
596
596
|
}
|
|
597
597
|
} else if (resolved.ref.credential === undefined) {
|
|
@@ -613,7 +613,7 @@ function principalsEqual(left, right) {
|
|
|
613
613
|
return left?.type === right?.type && left?.id === right?.id;
|
|
614
614
|
}
|
|
615
615
|
function invalidExecutionAuthority(executionId, reason) {
|
|
616
|
-
return
|
|
616
|
+
return createSixbError2("internal.unexpected", `[Sixb] Execution '${executionId}' is incompatible with its authority: ${reason}.`, { details: { executionId, reason } });
|
|
617
617
|
}
|
|
618
618
|
function register(execution, input) {
|
|
619
619
|
assertNonEmpty(input.projectId, "Authorization project id");
|
|
@@ -873,7 +873,7 @@ function assertNonEmpty(value, label) {
|
|
|
873
873
|
}
|
|
874
874
|
|
|
875
875
|
// src/authorization/errors.ts
|
|
876
|
-
class
|
|
876
|
+
class AuthorizationError2 extends Error {
|
|
877
877
|
grantKey;
|
|
878
878
|
name = "AuthorizationError";
|
|
879
879
|
constructor(grantKey, message) {
|
|
@@ -932,58 +932,58 @@ function holds(grants, atom) {
|
|
|
932
932
|
return grants[atom.kind];
|
|
933
933
|
return grants[atom.kind].has(atom.id);
|
|
934
934
|
}
|
|
935
|
-
function
|
|
935
|
+
function evaluate2(authorization, request) {
|
|
936
936
|
const atoms = atomsFor(request);
|
|
937
937
|
const requirements = atoms.map(atomKey);
|
|
938
938
|
const missing = authorization ? atoms.filter((atom) => !holds(authorization.grants, atom)).map(atomKey) : [];
|
|
939
939
|
return { allowed: missing.length === 0, requirements, missing };
|
|
940
940
|
}
|
|
941
|
-
function
|
|
942
|
-
return
|
|
941
|
+
function isAllowed2(authorization, request) {
|
|
942
|
+
return evaluate2(authorization, request).allowed;
|
|
943
943
|
}
|
|
944
|
-
function
|
|
945
|
-
const resolved =
|
|
944
|
+
function assertAuthorized2(runtime, request) {
|
|
945
|
+
const resolved = assertRuntimeAuthorizationBound2(runtime);
|
|
946
946
|
if (resolved.type === "delegated") {
|
|
947
|
-
throw new
|
|
947
|
+
throw new AuthorizationError2(`delegated:${request.kind}`, `[Sixb] Operation '${request.kind}' is not covered by delegated authorization.`);
|
|
948
948
|
}
|
|
949
949
|
const authorization = resolved.type === "principal" ? resolved.context : undefined;
|
|
950
|
-
const decision =
|
|
950
|
+
const decision = evaluate2(authorization, request);
|
|
951
951
|
if (decision.allowed) {
|
|
952
952
|
return;
|
|
953
953
|
}
|
|
954
|
-
throw new
|
|
954
|
+
throw new AuthorizationError2(decision.missing[0] ?? request.kind, deniedMessage(authorization, request));
|
|
955
955
|
}
|
|
956
|
-
function
|
|
956
|
+
function isRuntimeAllowed2(runtime, request) {
|
|
957
957
|
const authority = resolveRuntimeAuthorizationForProject(runtime);
|
|
958
958
|
if (authority.type === "denied" || authority.type === "delegated")
|
|
959
959
|
return false;
|
|
960
|
-
return authority.type === "unrestricted" ||
|
|
960
|
+
return authority.type === "unrestricted" || isAllowed2(authority.context, request);
|
|
961
961
|
}
|
|
962
|
-
function
|
|
962
|
+
function assertRuntimeAuthorizationBound2(runtime) {
|
|
963
963
|
const resolved = resolveRuntimeAuthorizationForProject(runtime);
|
|
964
964
|
if (resolved.type === "denied") {
|
|
965
|
-
throw new
|
|
965
|
+
throw new AuthorizationError2("runtime:unbound", "[Sixb] Protected operations require a registered execution scope.");
|
|
966
966
|
}
|
|
967
967
|
return resolved;
|
|
968
968
|
}
|
|
969
|
-
function
|
|
970
|
-
|
|
971
|
-
|
|
969
|
+
function assertCanEdit2(runtime, objectTypeId) {
|
|
970
|
+
assertAuthorized2(runtime, { kind: "object.view", objectTypeId });
|
|
971
|
+
assertAuthorized2(runtime, { kind: "object.edit", objectTypeId });
|
|
972
972
|
}
|
|
973
|
-
function
|
|
974
|
-
|
|
973
|
+
function assertCanAppendTelemetry2(runtime, objectTypeId) {
|
|
974
|
+
assertAuthorized2(runtime, { kind: "telemetry.append", objectTypeId });
|
|
975
975
|
}
|
|
976
|
-
function
|
|
977
|
-
|
|
976
|
+
function assertCanManageConnector2(runtime, connectorId) {
|
|
977
|
+
assertAuthorized2(runtime, { kind: "connector.manage", connectorId });
|
|
978
978
|
}
|
|
979
|
-
function
|
|
980
|
-
const resolved =
|
|
979
|
+
function assertPrivileged2(runtime, operation) {
|
|
980
|
+
const resolved = assertRuntimeAuthorizationBound2(runtime);
|
|
981
981
|
if (resolved.type === "unrestricted") {
|
|
982
982
|
return;
|
|
983
983
|
}
|
|
984
|
-
throw new
|
|
984
|
+
throw new AuthorizationError2(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
|
|
985
985
|
}
|
|
986
|
-
function
|
|
986
|
+
function assertProviderAccess2(runtime, execution, operation) {
|
|
987
987
|
const resolved = resolveExecutionScopeAuthorization(runtime.projectId, {
|
|
988
988
|
execution,
|
|
989
989
|
authorization: runtime.runtimeAuthorization
|
|
@@ -994,7 +994,7 @@ function assertProviderAccess(runtime, execution, operation) {
|
|
|
994
994
|
if (execution.executor.type === "agent") {
|
|
995
995
|
return;
|
|
996
996
|
}
|
|
997
|
-
throw new
|
|
997
|
+
throw new AuthorizationError2(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
|
|
998
998
|
}
|
|
999
999
|
function deniedMessage(authorization, request) {
|
|
1000
1000
|
const principalId = authorization?.principal.id ?? "unknown";
|
|
@@ -1030,67 +1030,67 @@ function deniedMessage(authorization, request) {
|
|
|
1030
1030
|
case "connector.manage":
|
|
1031
1031
|
return `[Sixb] Principal '${principalId}' is not allowed to manage connector '${request.connectorId}'.`;
|
|
1032
1032
|
case "object.query": {
|
|
1033
|
-
const blocked = request.touchedObjectTypeIds.find((objectTypeId) => !
|
|
1033
|
+
const blocked = request.touchedObjectTypeIds.find((objectTypeId) => !isAllowed2(authorization, { kind: "object.view", objectTypeId }));
|
|
1034
1034
|
return `[Sixb] Principal '${principalId}' is not allowed to view object type '${blocked}'.`;
|
|
1035
1035
|
}
|
|
1036
1036
|
}
|
|
1037
1037
|
}
|
|
1038
1038
|
|
|
1039
1039
|
// src/authorization/application-access.ts
|
|
1040
|
-
function
|
|
1040
|
+
function isApplicationAccessControlled2(roles, audience) {
|
|
1041
1041
|
return roles.some((role) => role.grants["access:application"].has(audience));
|
|
1042
1042
|
}
|
|
1043
|
-
function
|
|
1044
|
-
return !
|
|
1043
|
+
function canAccessApplication2(authorization, roles, audience) {
|
|
1044
|
+
return !isApplicationAccessControlled2(roles, audience) || isAllowed2(authorization, { kind: "application.access", audience });
|
|
1045
1045
|
}
|
|
1046
1046
|
// src/authorization/event-visibility.ts
|
|
1047
|
-
function
|
|
1047
|
+
function canViewEvent2(authorization, event) {
|
|
1048
1048
|
if (!authorization) {
|
|
1049
1049
|
return true;
|
|
1050
1050
|
}
|
|
1051
1051
|
switch (event.topic) {
|
|
1052
1052
|
case "objects":
|
|
1053
1053
|
case "telemetry":
|
|
1054
|
-
return
|
|
1054
|
+
return isAllowed2(authorization, {
|
|
1055
1055
|
kind: "object.view",
|
|
1056
1056
|
objectTypeId: event.payload.objectTypeId
|
|
1057
1057
|
});
|
|
1058
1058
|
case "links":
|
|
1059
|
-
return
|
|
1059
|
+
return isAllowed2(authorization, {
|
|
1060
1060
|
kind: "object.view",
|
|
1061
1061
|
objectTypeId: event.payload.sourceTypeId
|
|
1062
|
-
}) &&
|
|
1062
|
+
}) && isAllowed2(authorization, { kind: "object.view", objectTypeId: event.payload.targetTypeId });
|
|
1063
1063
|
case "actions": {
|
|
1064
|
-
if (!
|
|
1064
|
+
if (!isAllowed2(authorization, { kind: "action.apply", actionId: event.payload.actionId })) {
|
|
1065
1065
|
return false;
|
|
1066
1066
|
}
|
|
1067
1067
|
const subject = event.payload.subject;
|
|
1068
|
-
return subject.kind === "object" ?
|
|
1068
|
+
return subject.kind === "object" ? isAllowed2(authorization, { kind: "object.view", objectTypeId: subject.objectTypeId }) : true;
|
|
1069
1069
|
}
|
|
1070
1070
|
case "workflows":
|
|
1071
|
-
return
|
|
1071
|
+
return isAllowed2(authorization, {
|
|
1072
1072
|
kind: "workflow.run",
|
|
1073
1073
|
workflowId: event.payload.workflowId
|
|
1074
1074
|
});
|
|
1075
1075
|
case "rules":
|
|
1076
|
-
return
|
|
1076
|
+
return isAllowed2(authorization, {
|
|
1077
1077
|
kind: "object.view",
|
|
1078
1078
|
objectTypeId: event.payload.subject.objectTypeId
|
|
1079
1079
|
});
|
|
1080
1080
|
case "syncs":
|
|
1081
|
-
return
|
|
1081
|
+
return isAllowed2(authorization, {
|
|
1082
1082
|
kind: "sync.run",
|
|
1083
1083
|
syncId: event.payload.syncId
|
|
1084
1084
|
});
|
|
1085
1085
|
case "pipelines":
|
|
1086
|
-
return
|
|
1086
|
+
return isAllowed2(authorization, {
|
|
1087
1087
|
kind: "pipeline.run",
|
|
1088
1088
|
pipelineId: event.payload.pipelineId
|
|
1089
1089
|
});
|
|
1090
1090
|
case "schedules":
|
|
1091
1091
|
return true;
|
|
1092
1092
|
case "datasets":
|
|
1093
|
-
return
|
|
1093
|
+
return isAllowed2(authorization, {
|
|
1094
1094
|
kind: "dataset.view",
|
|
1095
1095
|
datasetId: event.payload.datasetId
|
|
1096
1096
|
});
|
|
@@ -1099,7 +1099,7 @@ function canViewEvent(authorization, event) {
|
|
|
1099
1099
|
}
|
|
1100
1100
|
}
|
|
1101
1101
|
// src/authorization/resolve.ts
|
|
1102
|
-
function
|
|
1102
|
+
function resolveRoleGrants2(role, universe) {
|
|
1103
1103
|
const grants = emptyGrantSets();
|
|
1104
1104
|
for (const grant of role.grants) {
|
|
1105
1105
|
if (grant.capability === "run" && grant.target === "agent") {
|
|
@@ -1131,7 +1131,7 @@ function expandSelection(selection, universe, into, expand) {
|
|
|
1131
1131
|
}
|
|
1132
1132
|
}
|
|
1133
1133
|
}
|
|
1134
|
-
function
|
|
1134
|
+
function resolveAuthorizationContext2(input) {
|
|
1135
1135
|
const memberGroupIds = new Set(input.groupIds);
|
|
1136
1136
|
const roleIds = [];
|
|
1137
1137
|
const grants = emptyGrantSets();
|
|
@@ -1158,12 +1158,12 @@ function resolveAuthorizationContext(input) {
|
|
|
1158
1158
|
};
|
|
1159
1159
|
}
|
|
1160
1160
|
// src/projections/errors.ts
|
|
1161
|
-
class
|
|
1161
|
+
class ProjectionValidationError2 extends Error {
|
|
1162
1162
|
name = "ProjectionValidationError";
|
|
1163
1163
|
}
|
|
1164
1164
|
|
|
1165
1165
|
// src/projections/ownership.ts
|
|
1166
|
-
function
|
|
1166
|
+
function computeProjectionOwnership2(projection, ontology) {
|
|
1167
1167
|
if (projection._tag === "ObjectProjectionDefinition") {
|
|
1168
1168
|
const primaryId = ontology.getPrimaryPropertyId(projection.objectTypeId);
|
|
1169
1169
|
return freezeOwnership({
|
|
@@ -1199,7 +1199,7 @@ function computeProjectionOwnership(projection, ontology) {
|
|
|
1199
1199
|
}))
|
|
1200
1200
|
});
|
|
1201
1201
|
}
|
|
1202
|
-
function
|
|
1202
|
+
function validateProjectionOwnership2(projections) {
|
|
1203
1203
|
const existenceOwners = new Map;
|
|
1204
1204
|
const propertyOwners = new Map;
|
|
1205
1205
|
const linkOwners = new Map;
|
|
@@ -1224,7 +1224,7 @@ function validateProjectionOwnership(projections) {
|
|
|
1224
1224
|
function registerOwner(owners, key, projectionId, description) {
|
|
1225
1225
|
const existing = owners.get(key);
|
|
1226
1226
|
if (existing !== undefined) {
|
|
1227
|
-
throw new
|
|
1227
|
+
throw new ProjectionValidationError2(`[Sixb] Projection '${projectionId}' overlaps ${description} owned by projection '${existing}'.`);
|
|
1228
1228
|
}
|
|
1229
1229
|
owners.set(key, projectionId);
|
|
1230
1230
|
}
|
|
@@ -1243,16 +1243,16 @@ function validatePropertyMapping(objectType, mapping) {
|
|
|
1243
1243
|
for (const key of mappingKeys) {
|
|
1244
1244
|
if (!propertyIds.has(key)) {
|
|
1245
1245
|
const available = [...propertyIds].sort().join(", ");
|
|
1246
|
-
throw new
|
|
1246
|
+
throw new ProjectionValidationError2(`Property '${key}' does not exist on object type '${objectType.id}'. ` + `Available properties: ${available}`);
|
|
1247
1247
|
}
|
|
1248
1248
|
}
|
|
1249
1249
|
const primaryProperties = objectType.properties.filter((p) => p.primary === true);
|
|
1250
1250
|
if (primaryProperties.length !== 1) {
|
|
1251
|
-
throw new
|
|
1251
|
+
throw new ProjectionValidationError2(`Object type '${objectType.id}' must have exactly one primary property, ` + `found ${primaryProperties.length}.`);
|
|
1252
1252
|
}
|
|
1253
1253
|
const primaryId = primaryProperties[0].id;
|
|
1254
1254
|
if (!(primaryId in mapping)) {
|
|
1255
|
-
throw new
|
|
1255
|
+
throw new ProjectionValidationError2(`Primary property '${primaryId}' of object type '${objectType.id}' ` + `must be included in the property mapping.`);
|
|
1256
1256
|
}
|
|
1257
1257
|
}
|
|
1258
1258
|
function validateAndLowerLinkMapping(objectType, linkMapping, propertyMapping) {
|
|
@@ -1262,35 +1262,35 @@ function validateAndLowerLinkMapping(objectType, linkMapping, propertyMapping) {
|
|
|
1262
1262
|
for (const [key, descriptor] of Object.entries(linkMapping)) {
|
|
1263
1263
|
if (!linkIds.has(key)) {
|
|
1264
1264
|
const available = [...linkIds].sort().join(", ");
|
|
1265
|
-
throw new
|
|
1265
|
+
throw new ProjectionValidationError2(`Link '${key}' does not exist on object type '${objectType.id}'. ` + `Available links: ${available}`);
|
|
1266
1266
|
}
|
|
1267
1267
|
if (key !== descriptor.linkId) {
|
|
1268
|
-
throw new
|
|
1268
|
+
throw new ProjectionValidationError2(`Link mapping key '${key}' does not match descriptor linkId '${descriptor.linkId}'.`);
|
|
1269
1269
|
}
|
|
1270
1270
|
const link = linksById.get(key);
|
|
1271
1271
|
if (Array.isArray(link.targetObjectTypeId)) {
|
|
1272
|
-
throw new
|
|
1272
|
+
throw new ProjectionValidationError2(`Link '${key}' on object type '${objectType.id}' has a polymorphic target. ` + `FK projection of polymorphic links is not yet supported.`);
|
|
1273
1273
|
}
|
|
1274
1274
|
if (link.targetObjectTypeId === "*") {
|
|
1275
|
-
throw new
|
|
1275
|
+
throw new ProjectionValidationError2(`Link '${key}' on object type '${objectType.id}' has a wildcard target. ` + `FK projection of wildcard links is not supported.`);
|
|
1276
1276
|
}
|
|
1277
1277
|
const sourcePropertyId = descriptor.sourcePropertyId;
|
|
1278
1278
|
const sourceField = descriptor.sourceField;
|
|
1279
1279
|
if (sourcePropertyId && sourceField) {
|
|
1280
|
-
throw new
|
|
1280
|
+
throw new ProjectionValidationError2(`FK link '${key}' must use either sourceProperty or sourceField, not both.`);
|
|
1281
1281
|
}
|
|
1282
1282
|
if (!sourcePropertyId && !sourceField) {
|
|
1283
|
-
throw new
|
|
1283
|
+
throw new ProjectionValidationError2(`FK link '${key}' must declare sourceProperty or sourceField.`);
|
|
1284
1284
|
}
|
|
1285
1285
|
if (!sourcePropertyId) {
|
|
1286
1286
|
continue;
|
|
1287
1287
|
}
|
|
1288
1288
|
if (!propertyIds.has(sourcePropertyId)) {
|
|
1289
1289
|
const available = [...propertyIds].sort().join(", ");
|
|
1290
|
-
throw new
|
|
1290
|
+
throw new ProjectionValidationError2(`Source property '${sourcePropertyId}' does not exist on ` + `object type '${objectType.id}'. Available properties: ${available}`);
|
|
1291
1291
|
}
|
|
1292
1292
|
if (!(sourcePropertyId in propertyMapping)) {
|
|
1293
|
-
throw new
|
|
1293
|
+
throw new ProjectionValidationError2(`Source property '${sourcePropertyId}' for link '${key}' ` + `must be included in the property mapping.`);
|
|
1294
1294
|
}
|
|
1295
1295
|
}
|
|
1296
1296
|
return Object.fromEntries(Object.entries(linkMapping).map(([linkId, descriptor]) => [
|
|
@@ -1305,16 +1305,16 @@ function validateAndLowerLinkMapping(objectType, linkMapping, propertyMapping) {
|
|
|
1305
1305
|
}
|
|
1306
1306
|
function validateLinkProjectionTarget(linkToken) {
|
|
1307
1307
|
if (Array.isArray(linkToken.targetObjectTypeId)) {
|
|
1308
|
-
throw new
|
|
1308
|
+
throw new ProjectionValidationError2(`Link '${linkToken.id}' has a polymorphic target. ` + `Link projection of polymorphic links is not yet supported.`);
|
|
1309
1309
|
}
|
|
1310
1310
|
if (linkToken.targetObjectTypeId === "*") {
|
|
1311
|
-
throw new
|
|
1311
|
+
throw new ProjectionValidationError2(`Link '${linkToken.id}' has a wildcard target. ` + `Link projection of wildcard links is not supported.`);
|
|
1312
1312
|
}
|
|
1313
1313
|
}
|
|
1314
|
-
function
|
|
1314
|
+
function validateTelemetryProjectionFieldMapping2(projection, objectType, datasetColumnNames, valueTypesById, prefix) {
|
|
1315
1315
|
const mappedProperties = Object.entries(projection.properties);
|
|
1316
1316
|
if (mappedProperties.length === 0) {
|
|
1317
|
-
throw new
|
|
1317
|
+
throw new ProjectionValidationError2(`${prefix}: must map at least one telemetry property`);
|
|
1318
1318
|
}
|
|
1319
1319
|
const mappedFields = [
|
|
1320
1320
|
["objectId", projection.objectIdField],
|
|
@@ -1322,7 +1322,7 @@ function validateTelemetryProjectionFieldMapping(projection, objectType, dataset
|
|
|
1322
1322
|
];
|
|
1323
1323
|
for (const [fieldRole, columnName] of mappedFields) {
|
|
1324
1324
|
if (!datasetColumnNames.has(columnName)) {
|
|
1325
|
-
throw new
|
|
1325
|
+
throw new ProjectionValidationError2(`${prefix}: ${fieldRole} field "${columnName}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
|
|
1326
1326
|
}
|
|
1327
1327
|
}
|
|
1328
1328
|
const propertiesById = new Map(objectType.properties.map((property) => [property.id, property]));
|
|
@@ -1330,25 +1330,25 @@ function validateTelemetryProjectionFieldMapping(projection, objectType, dataset
|
|
|
1330
1330
|
for (const [propertyId, mapping] of mappedProperties) {
|
|
1331
1331
|
const property = propertiesById.get(propertyId);
|
|
1332
1332
|
if (!property) {
|
|
1333
|
-
throw new
|
|
1333
|
+
throw new ProjectionValidationError2(`${prefix}: unknown property "${propertyId}" on type "${projection.objectTypeId}"`);
|
|
1334
1334
|
}
|
|
1335
1335
|
if (property.mode !== "telemetry") {
|
|
1336
|
-
throw new
|
|
1336
|
+
throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" on type "${projection.objectTypeId}" must be telemetry-enabled`);
|
|
1337
1337
|
}
|
|
1338
1338
|
for (const [fieldRole, columnName] of [
|
|
1339
1339
|
["value", mapping.valueField],
|
|
1340
1340
|
...mapping.unitField !== undefined ? [["unit", mapping.unitField]] : []
|
|
1341
1341
|
]) {
|
|
1342
1342
|
if (!datasetColumnNames.has(columnName)) {
|
|
1343
|
-
throw new
|
|
1343
|
+
throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" ${fieldRole} field "${columnName}" references ` + `unknown dataset column on dataset "${projection.datasetId}"`);
|
|
1344
1344
|
}
|
|
1345
1345
|
}
|
|
1346
|
-
const semanticType =
|
|
1346
|
+
const semanticType = resolveSemanticType2(property, valueTypesById);
|
|
1347
1347
|
if (semanticType !== undefined && mapping.unitField === undefined) {
|
|
1348
|
-
throw new
|
|
1348
|
+
throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" requires a unit field because it uses semantic type "${semanticType}"`);
|
|
1349
1349
|
}
|
|
1350
1350
|
if (semanticType === undefined && mapping.unitField !== undefined) {
|
|
1351
|
-
throw new
|
|
1351
|
+
throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" cannot map a unit field because it has no semantic type`);
|
|
1352
1352
|
}
|
|
1353
1353
|
resolvedProperties.set(propertyId, property);
|
|
1354
1354
|
}
|
|
@@ -1366,140 +1366,140 @@ function validateProjectionsAtStartup(projections, ontology, datasetsById) {
|
|
|
1366
1366
|
const prefix = `Projection "${projection.id}"`;
|
|
1367
1367
|
const dataset = datasetsById.get(projection.datasetId);
|
|
1368
1368
|
if (!dataset) {
|
|
1369
|
-
throw new
|
|
1369
|
+
throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
|
|
1370
1370
|
}
|
|
1371
1371
|
const objectType = objectTypesById.get(projection.objectTypeId);
|
|
1372
1372
|
if (!objectType) {
|
|
1373
|
-
throw new
|
|
1373
|
+
throw new ProjectionValidationError2(`${prefix}: unknown object type "${projection.objectTypeId}"`);
|
|
1374
1374
|
}
|
|
1375
1375
|
const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
|
|
1376
1376
|
const conflictResolution = projection.conflictResolution ?? { strategy: "editsWin" };
|
|
1377
1377
|
if (conflictResolution.strategy === "mostRecent") {
|
|
1378
1378
|
const sourceTimestamp = dataset.schema.columns.find((column) => column.name === conflictResolution.sourceTimestamp);
|
|
1379
1379
|
if (!sourceTimestamp) {
|
|
1380
|
-
throw new
|
|
1380
|
+
throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" references unknown ` + `dataset column on dataset "${projection.datasetId}"`);
|
|
1381
1381
|
}
|
|
1382
1382
|
if (sourceTimestamp.type !== "timestamp") {
|
|
1383
|
-
throw new
|
|
1383
|
+
throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" must reference a ` + `timestamp dataset column`);
|
|
1384
1384
|
}
|
|
1385
1385
|
if (sourceTimestamp.nullable === true) {
|
|
1386
|
-
throw new
|
|
1386
|
+
throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" must reference a ` + `non-null timestamp dataset column`);
|
|
1387
1387
|
}
|
|
1388
1388
|
}
|
|
1389
1389
|
const propertyIds = new Set(objectType.properties.map((p) => p.id));
|
|
1390
1390
|
for (const [propId, columnName] of Object.entries(projection.properties)) {
|
|
1391
1391
|
if (!propertyIds.has(propId)) {
|
|
1392
|
-
throw new
|
|
1392
|
+
throw new ProjectionValidationError2(`${prefix}: unknown property "${propId}" on type "${projection.objectTypeId}"`);
|
|
1393
1393
|
}
|
|
1394
1394
|
if (!datasetColumnNames.has(columnName)) {
|
|
1395
|
-
throw new
|
|
1395
|
+
throw new ProjectionValidationError2(`${prefix}: property "${propId}" references unknown dataset column "${columnName}" ` + `on dataset "${projection.datasetId}"`);
|
|
1396
1396
|
}
|
|
1397
1397
|
const property = objectType.properties.find((candidate) => candidate.id === propId);
|
|
1398
1398
|
if (property?.mode === "telemetry") {
|
|
1399
|
-
throw new
|
|
1399
|
+
throw new ProjectionValidationError2(`[Sixb] ${prefix}: source mappings cannot own telemetry property "${projection.objectTypeId}.${propId}"`);
|
|
1400
1400
|
}
|
|
1401
1401
|
}
|
|
1402
1402
|
const primaryId = primaryByTypeId.get(projection.objectTypeId);
|
|
1403
1403
|
if (!(primaryId in projection.properties)) {
|
|
1404
|
-
throw new
|
|
1404
|
+
throw new ProjectionValidationError2(`${prefix}: primary property "${primaryId}" must be in property mapping`);
|
|
1405
1405
|
}
|
|
1406
1406
|
const linkIds = new Set(objectType.links.map((l) => l.id));
|
|
1407
1407
|
for (const [linkId, fk] of Object.entries(projection.links)) {
|
|
1408
1408
|
if (!linkIds.has(linkId)) {
|
|
1409
|
-
throw new
|
|
1409
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" references unknown link on type "${projection.objectTypeId}"`);
|
|
1410
1410
|
}
|
|
1411
1411
|
if (fk.linkId !== linkId) {
|
|
1412
|
-
throw new
|
|
1412
|
+
throw new ProjectionValidationError2(`${prefix}: FK link mapping key "${linkId}" does not match descriptor linkId "${fk.linkId}"`);
|
|
1413
1413
|
}
|
|
1414
1414
|
const sourcePropertyId = fk.sourcePropertyId;
|
|
1415
1415
|
const sourceField = fk.sourceField;
|
|
1416
1416
|
if (sourcePropertyId && sourceField) {
|
|
1417
|
-
throw new
|
|
1417
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" must use either sourcePropertyId or sourceField, not both`);
|
|
1418
1418
|
}
|
|
1419
1419
|
if (!sourcePropertyId && !sourceField) {
|
|
1420
|
-
throw new
|
|
1420
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" must declare sourcePropertyId or sourceField`);
|
|
1421
1421
|
}
|
|
1422
1422
|
if (sourcePropertyId && !propertyIds.has(sourcePropertyId)) {
|
|
1423
|
-
throw new
|
|
1423
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source property "${sourcePropertyId}" does not exist on type "${projection.objectTypeId}"`);
|
|
1424
1424
|
}
|
|
1425
1425
|
if (sourcePropertyId && !(sourcePropertyId in projection.properties)) {
|
|
1426
|
-
throw new
|
|
1426
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source property "${sourcePropertyId}" must be in property mapping`);
|
|
1427
1427
|
}
|
|
1428
1428
|
if (sourceField && !datasetColumnNames.has(sourceField)) {
|
|
1429
|
-
throw new
|
|
1429
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source field "${sourceField}" references unknown dataset column on dataset "${projection.datasetId}"`);
|
|
1430
1430
|
}
|
|
1431
1431
|
if (!objectTypesById.has(fk.targetObjectTypeId)) {
|
|
1432
|
-
throw new
|
|
1432
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" is unknown`);
|
|
1433
1433
|
}
|
|
1434
1434
|
if (!primaryByTypeId.has(fk.targetObjectTypeId)) {
|
|
1435
|
-
throw new
|
|
1435
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" has no primary property`);
|
|
1436
1436
|
}
|
|
1437
1437
|
const link = objectType.links.find((candidate) => candidate.id === linkId);
|
|
1438
1438
|
if (!ontology.isValidLinkTarget(link.targetObjectTypeId, fk.targetObjectTypeId)) {
|
|
1439
|
-
throw new
|
|
1439
|
+
throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" is not compatible with its declared target`);
|
|
1440
1440
|
}
|
|
1441
1441
|
}
|
|
1442
1442
|
validatedObjectProjections.push({
|
|
1443
1443
|
definition: projection,
|
|
1444
1444
|
dataset,
|
|
1445
|
-
ownership:
|
|
1445
|
+
ownership: computeProjectionOwnership2(projection, ontology)
|
|
1446
1446
|
});
|
|
1447
1447
|
}
|
|
1448
1448
|
for (const projection of linkProjections) {
|
|
1449
1449
|
const prefix = `Projection "${projection.id}"`;
|
|
1450
1450
|
const dataset = datasetsById.get(projection.datasetId);
|
|
1451
1451
|
if (!dataset) {
|
|
1452
|
-
throw new
|
|
1452
|
+
throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
|
|
1453
1453
|
}
|
|
1454
1454
|
if (!objectTypesById.has(projection.sourceObjectTypeId)) {
|
|
1455
|
-
throw new
|
|
1455
|
+
throw new ProjectionValidationError2(`${prefix}: unknown source type "${projection.sourceObjectTypeId}"`);
|
|
1456
1456
|
}
|
|
1457
1457
|
if (!objectTypesById.has(projection.targetObjectTypeId)) {
|
|
1458
|
-
throw new
|
|
1458
|
+
throw new ProjectionValidationError2(`${prefix}: unknown target type "${projection.targetObjectTypeId}"`);
|
|
1459
1459
|
}
|
|
1460
1460
|
const sourceType = objectTypesById.get(projection.sourceObjectTypeId);
|
|
1461
1461
|
const link = sourceType.links.find((candidate) => candidate.id === projection.linkId);
|
|
1462
1462
|
if (!link) {
|
|
1463
|
-
throw new
|
|
1463
|
+
throw new ProjectionValidationError2(`${prefix}: link "${projection.linkId}" does not exist on source type "${projection.sourceObjectTypeId}"`);
|
|
1464
1464
|
}
|
|
1465
1465
|
if (!ontology.isValidLinkTarget(link.targetObjectTypeId, projection.targetObjectTypeId)) {
|
|
1466
|
-
throw new
|
|
1466
|
+
throw new ProjectionValidationError2(`${prefix}: target type "${projection.targetObjectTypeId}" is not compatible with link "${projection.linkId}"`);
|
|
1467
1467
|
}
|
|
1468
1468
|
const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
|
|
1469
1469
|
if (!datasetColumnNames.has(projection.sourceField)) {
|
|
1470
|
-
throw new
|
|
1470
|
+
throw new ProjectionValidationError2(`${prefix}: source field "${projection.sourceField}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
|
|
1471
1471
|
}
|
|
1472
1472
|
if (!datasetColumnNames.has(projection.targetField)) {
|
|
1473
|
-
throw new
|
|
1473
|
+
throw new ProjectionValidationError2(`${prefix}: target field "${projection.targetField}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
|
|
1474
1474
|
}
|
|
1475
1475
|
if (!primaryByTypeId.has(projection.sourceObjectTypeId)) {
|
|
1476
|
-
throw new
|
|
1476
|
+
throw new ProjectionValidationError2(`${prefix}: source type "${projection.sourceObjectTypeId}" has no primary property`);
|
|
1477
1477
|
}
|
|
1478
1478
|
if (!primaryByTypeId.has(projection.targetObjectTypeId)) {
|
|
1479
|
-
throw new
|
|
1479
|
+
throw new ProjectionValidationError2(`${prefix}: target type "${projection.targetObjectTypeId}" has no primary property`);
|
|
1480
1480
|
}
|
|
1481
1481
|
validatedLinkProjections.push({
|
|
1482
1482
|
definition: projection,
|
|
1483
1483
|
dataset,
|
|
1484
|
-
ownership:
|
|
1484
|
+
ownership: computeProjectionOwnership2(projection, ontology)
|
|
1485
1485
|
});
|
|
1486
1486
|
}
|
|
1487
1487
|
for (const projection of telemetryProjections) {
|
|
1488
1488
|
const prefix = `Projection "${projection.id}"`;
|
|
1489
1489
|
const dataset = datasetsById.get(projection.datasetId);
|
|
1490
1490
|
if (!dataset) {
|
|
1491
|
-
throw new
|
|
1491
|
+
throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
|
|
1492
1492
|
}
|
|
1493
1493
|
const objectType = objectTypesById.get(projection.objectTypeId);
|
|
1494
1494
|
if (!objectType) {
|
|
1495
|
-
throw new
|
|
1495
|
+
throw new ProjectionValidationError2(`${prefix}: unknown object type "${projection.objectTypeId}"`);
|
|
1496
1496
|
}
|
|
1497
1497
|
const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
|
|
1498
|
-
|
|
1498
|
+
validateTelemetryProjectionFieldMapping2(projection, objectType, datasetColumnNames, ontology.getValueTypesById(), prefix);
|
|
1499
1499
|
validatedTelemetryProjections.push({
|
|
1500
1500
|
definition: projection,
|
|
1501
1501
|
dataset,
|
|
1502
|
-
ownership:
|
|
1502
|
+
ownership: computeProjectionOwnership2(projection, ontology)
|
|
1503
1503
|
});
|
|
1504
1504
|
}
|
|
1505
1505
|
const validatedProjections = [
|
|
@@ -1507,7 +1507,7 @@ function validateProjectionsAtStartup(projections, ontology, datasetsById) {
|
|
|
1507
1507
|
...validatedLinkProjections,
|
|
1508
1508
|
...validatedTelemetryProjections
|
|
1509
1509
|
];
|
|
1510
|
-
|
|
1510
|
+
validateProjectionOwnership2(validatedProjections);
|
|
1511
1511
|
return {
|
|
1512
1512
|
objectProjections: validatedObjectProjections,
|
|
1513
1513
|
linkProjections: validatedLinkProjections,
|
|
@@ -1518,13 +1518,13 @@ function validateMaterializationOntologyConstraints(ontology) {
|
|
|
1518
1518
|
for (const objectType of ontology.getObjectTypesById().values()) {
|
|
1519
1519
|
for (const property of objectType.properties) {
|
|
1520
1520
|
if (property.mode === "telemetry" && property.required === true) {
|
|
1521
|
-
throw new
|
|
1521
|
+
throw new ProjectionValidationError2(`[Sixb] Telemetry property '${objectType.id}.${property.id}' cannot be required.`);
|
|
1522
1522
|
}
|
|
1523
1523
|
}
|
|
1524
1524
|
for (const link of objectType.links) {
|
|
1525
1525
|
for (const property of link.properties ?? []) {
|
|
1526
1526
|
if (property.mode === "telemetry") {
|
|
1527
|
-
throw new
|
|
1527
|
+
throw new ProjectionValidationError2(`[Sixb] Link property '${objectType.id}.${link.id}.${property.id}' cannot use telemetry mode.`);
|
|
1528
1528
|
}
|
|
1529
1529
|
}
|
|
1530
1530
|
}
|
|
@@ -1534,12 +1534,12 @@ function validateMaterializationOntologyConstraints(ontology) {
|
|
|
1534
1534
|
// src/projections/builders.ts
|
|
1535
1535
|
function assertNonEmpty2(value, field) {
|
|
1536
1536
|
if (!value.trim()) {
|
|
1537
|
-
throw new
|
|
1537
|
+
throw new ProjectionValidationError2(`Projection ${field} must not be empty.`);
|
|
1538
1538
|
}
|
|
1539
1539
|
}
|
|
1540
1540
|
function assertProjectionDataset(dataset) {
|
|
1541
1541
|
if (!dataset || dataset.kind !== "dataset" || typeof dataset.id !== "string") {
|
|
1542
|
-
throw new
|
|
1542
|
+
throw new ProjectionValidationError2("Projection dataset must be a dataset definition.");
|
|
1543
1543
|
}
|
|
1544
1544
|
assertNonEmpty2(dataset.id, "dataset id");
|
|
1545
1545
|
}
|
|
@@ -1551,14 +1551,14 @@ function lowerForeignKeyMapping(mapping) {
|
|
|
1551
1551
|
for (const [linkId, descriptor] of Object.entries(mapping)) {
|
|
1552
1552
|
if (!descriptor)
|
|
1553
1553
|
continue;
|
|
1554
|
-
lowered[linkId] = isForeignKeyDescriptor(descriptor) ? descriptor :
|
|
1554
|
+
lowered[linkId] = isForeignKeyDescriptor(descriptor) ? descriptor : fromForeignKey2(descriptor);
|
|
1555
1555
|
}
|
|
1556
1556
|
return lowered;
|
|
1557
1557
|
}
|
|
1558
1558
|
function isForeignKeyDescriptor(value) {
|
|
1559
1559
|
return isRecord2(value) && typeof value.linkId === "string";
|
|
1560
1560
|
}
|
|
1561
|
-
function
|
|
1561
|
+
function defineProjection2(id, target) {
|
|
1562
1562
|
if ("link" in target)
|
|
1563
1563
|
return buildLinkProjection(id, target);
|
|
1564
1564
|
if ("property" in target)
|
|
@@ -1661,24 +1661,24 @@ function buildTelemetryProjection(id, propertyToken) {
|
|
|
1661
1661
|
}
|
|
1662
1662
|
function validateTelemetryProjectionProperty(propertyToken) {
|
|
1663
1663
|
if (propertyToken.property.mode !== "telemetry") {
|
|
1664
|
-
throw new
|
|
1664
|
+
throw new ProjectionValidationError2(`Projection property '${propertyToken.objectTypeId}.${propertyToken.id}' must be telemetry-enabled.`);
|
|
1665
1665
|
}
|
|
1666
1666
|
}
|
|
1667
1667
|
function lowerTelemetryPointMapping(mapping) {
|
|
1668
1668
|
const allowedKeys = new Set(["objectId", "at", "value", "unit"]);
|
|
1669
1669
|
for (const key of Object.keys(mapping)) {
|
|
1670
1670
|
if (!allowedKeys.has(key)) {
|
|
1671
|
-
throw new
|
|
1671
|
+
throw new ProjectionValidationError2(`Telemetry projection point mapping contains unknown key '${key}'.`);
|
|
1672
1672
|
}
|
|
1673
1673
|
}
|
|
1674
1674
|
if (mapping.objectId === undefined) {
|
|
1675
|
-
throw new
|
|
1675
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires objectId.");
|
|
1676
1676
|
}
|
|
1677
1677
|
if (mapping.at === undefined) {
|
|
1678
|
-
throw new
|
|
1678
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires at.");
|
|
1679
1679
|
}
|
|
1680
1680
|
if (mapping.value === undefined) {
|
|
1681
|
-
throw new
|
|
1681
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires value.");
|
|
1682
1682
|
}
|
|
1683
1683
|
assertNonEmpty2(mapping.objectId, "objectId field");
|
|
1684
1684
|
assertNonEmpty2(mapping.at, "at field");
|
|
@@ -1697,36 +1697,36 @@ function lowerTelemetryPropertiesPointMapping(objectType, mapping) {
|
|
|
1697
1697
|
const allowedKeys = new Set(["objectId", "at", "properties"]);
|
|
1698
1698
|
for (const key of Object.keys(mapping)) {
|
|
1699
1699
|
if (!allowedKeys.has(key)) {
|
|
1700
|
-
throw new
|
|
1700
|
+
throw new ProjectionValidationError2(`Telemetry projection point mapping contains unknown key '${key}'.`);
|
|
1701
1701
|
}
|
|
1702
1702
|
}
|
|
1703
1703
|
if (mapping.objectId === undefined) {
|
|
1704
|
-
throw new
|
|
1704
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires objectId.");
|
|
1705
1705
|
}
|
|
1706
1706
|
if (mapping.at === undefined) {
|
|
1707
|
-
throw new
|
|
1707
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires at.");
|
|
1708
1708
|
}
|
|
1709
1709
|
if (mapping.properties === undefined) {
|
|
1710
|
-
throw new
|
|
1710
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires properties.");
|
|
1711
1711
|
}
|
|
1712
1712
|
if (!isRecord2(mapping.properties)) {
|
|
1713
|
-
throw new
|
|
1713
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping properties must be an object.");
|
|
1714
1714
|
}
|
|
1715
1715
|
assertNonEmpty2(mapping.objectId, "objectId field");
|
|
1716
1716
|
assertNonEmpty2(mapping.at, "at field");
|
|
1717
1717
|
const propertyEntries = Object.entries(mapping.properties);
|
|
1718
1718
|
if (propertyEntries.length === 0) {
|
|
1719
|
-
throw new
|
|
1719
|
+
throw new ProjectionValidationError2("Telemetry projection point mapping requires at least one property.");
|
|
1720
1720
|
}
|
|
1721
1721
|
const propertiesById = new Map(objectType.properties.map((property) => [property.id, property]));
|
|
1722
1722
|
const properties = {};
|
|
1723
1723
|
for (const [propertyId, input] of propertyEntries) {
|
|
1724
1724
|
const property = propertiesById.get(propertyId);
|
|
1725
1725
|
if (!property) {
|
|
1726
|
-
throw new
|
|
1726
|
+
throw new ProjectionValidationError2(`Property '${propertyId}' does not exist on object type '${objectType.id}'.`);
|
|
1727
1727
|
}
|
|
1728
1728
|
if (property.mode !== "telemetry") {
|
|
1729
|
-
throw new
|
|
1729
|
+
throw new ProjectionValidationError2(`Projection property '${objectType.id}.${propertyId}' must be telemetry-enabled.`);
|
|
1730
1730
|
}
|
|
1731
1731
|
properties[propertyId] = lowerTelemetryPropertyMapping(propertyId, input);
|
|
1732
1732
|
}
|
|
@@ -1738,25 +1738,25 @@ function lowerTelemetryPropertyMapping(propertyId, input) {
|
|
|
1738
1738
|
return { valueField: input };
|
|
1739
1739
|
}
|
|
1740
1740
|
if (!isRecord2(input)) {
|
|
1741
|
-
throw new
|
|
1741
|
+
throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' must map a value column or value/unit columns.`);
|
|
1742
1742
|
}
|
|
1743
1743
|
const allowedKeys = new Set(["value", "unit"]);
|
|
1744
1744
|
for (const key of Object.keys(input)) {
|
|
1745
1745
|
if (!allowedKeys.has(key)) {
|
|
1746
|
-
throw new
|
|
1746
|
+
throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' contains unknown key '${key}'.`);
|
|
1747
1747
|
}
|
|
1748
1748
|
}
|
|
1749
1749
|
if (typeof input.value !== "string") {
|
|
1750
|
-
throw new
|
|
1750
|
+
throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' requires a value field.`);
|
|
1751
1751
|
}
|
|
1752
1752
|
if (typeof input.unit !== "string") {
|
|
1753
|
-
throw new
|
|
1753
|
+
throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' requires a unit field.`);
|
|
1754
1754
|
}
|
|
1755
1755
|
assertNonEmpty2(input.value, `property '${propertyId}' value field`);
|
|
1756
1756
|
assertNonEmpty2(input.unit, `property '${propertyId}' unit field`);
|
|
1757
1757
|
return { valueField: input.value, unitField: input.unit };
|
|
1758
1758
|
}
|
|
1759
|
-
function
|
|
1759
|
+
function fromForeignKey2(input) {
|
|
1760
1760
|
validateLinkProjectionTarget(input.link);
|
|
1761
1761
|
if (input.sourceProperty) {
|
|
1762
1762
|
return {
|
|
@@ -1766,7 +1766,7 @@ function fromForeignKey(input) {
|
|
|
1766
1766
|
};
|
|
1767
1767
|
}
|
|
1768
1768
|
if (input.sourceField === undefined) {
|
|
1769
|
-
throw new
|
|
1769
|
+
throw new ProjectionValidationError2("Foreign key sourceField is required.");
|
|
1770
1770
|
}
|
|
1771
1771
|
assertNonEmpty2(input.sourceField, "source field");
|
|
1772
1772
|
return {
|
|
@@ -1805,7 +1805,7 @@ function buildLinkProjection(id, linkToken) {
|
|
|
1805
1805
|
}
|
|
1806
1806
|
};
|
|
1807
1807
|
}
|
|
1808
|
-
function
|
|
1808
|
+
function isObjectProjectionDefinition2(value) {
|
|
1809
1809
|
if (!isRecord2(value))
|
|
1810
1810
|
return false;
|
|
1811
1811
|
return value._tag === "ObjectProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && isRecord2(value.properties) && isRecord2(value.links) && isSourceEditConflictResolution(value.conflictResolution);
|
|
@@ -1819,12 +1819,12 @@ function isSourceEditConflictResolution(value) {
|
|
|
1819
1819
|
return value.sourceTimestamp === undefined;
|
|
1820
1820
|
return value.strategy === "mostRecent" && typeof value.sourceTimestamp === "string";
|
|
1821
1821
|
}
|
|
1822
|
-
function
|
|
1822
|
+
function isLinkProjectionDefinition2(value) {
|
|
1823
1823
|
if (!isRecord2(value))
|
|
1824
1824
|
return false;
|
|
1825
1825
|
return value._tag === "LinkProjectionDefinition" && typeof value.id === "string" && typeof value.linkId === "string" && typeof value.sourceObjectTypeId === "string" && typeof value.targetObjectTypeId === "string" && typeof value.datasetId === "string" && typeof value.sourceField === "string" && typeof value.targetField === "string";
|
|
1826
1826
|
}
|
|
1827
|
-
function
|
|
1827
|
+
function isTelemetryProjectionDefinition2(value) {
|
|
1828
1828
|
if (!isRecord2(value))
|
|
1829
1829
|
return false;
|
|
1830
1830
|
return value._tag === "TelemetryProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && typeof value.objectIdField === "string" && typeof value.atField === "string" && isTelemetryProjectionProperties(value.properties);
|
|
@@ -1834,10 +1834,10 @@ function isTelemetryProjectionProperties(value) {
|
|
|
1834
1834
|
return false;
|
|
1835
1835
|
return Object.values(value).every((mapping) => isRecord2(mapping) && typeof mapping.valueField === "string" && (mapping.unitField === undefined || typeof mapping.unitField === "string"));
|
|
1836
1836
|
}
|
|
1837
|
-
function
|
|
1838
|
-
return
|
|
1837
|
+
function isProjectionDefinition2(value) {
|
|
1838
|
+
return isObjectProjectionDefinition2(value) || isLinkProjectionDefinition2(value) || isTelemetryProjectionDefinition2(value);
|
|
1839
1839
|
}
|
|
1840
|
-
function
|
|
1840
|
+
function projectionTargetOf2(projection) {
|
|
1841
1841
|
return projection._tag === "LinkProjectionDefinition" ? {
|
|
1842
1842
|
sourceObjectTypeId: projection.sourceObjectTypeId,
|
|
1843
1843
|
targetObjectTypeId: projection.targetObjectTypeId
|
|
@@ -1845,43 +1845,43 @@ function projectionTargetOf(projection) {
|
|
|
1845
1845
|
}
|
|
1846
1846
|
|
|
1847
1847
|
// src/authorization/run-visibility.ts
|
|
1848
|
-
function
|
|
1848
|
+
function canViewActionRun2(authorization, run) {
|
|
1849
1849
|
if (!authorization) {
|
|
1850
1850
|
return true;
|
|
1851
1851
|
}
|
|
1852
|
-
if (!
|
|
1852
|
+
if (!isAllowed2(authorization, { kind: "action.apply", actionId: run.actionId })) {
|
|
1853
1853
|
return false;
|
|
1854
1854
|
}
|
|
1855
|
-
return run.subject.kind !== "object" ? true :
|
|
1855
|
+
return run.subject.kind !== "object" ? true : isAllowed2(authorization, {
|
|
1856
1856
|
kind: "object.view",
|
|
1857
1857
|
objectTypeId: run.subject.objectTypeId
|
|
1858
1858
|
});
|
|
1859
1859
|
}
|
|
1860
|
-
function
|
|
1861
|
-
return !authorization ||
|
|
1860
|
+
function canViewWorkflowRun2(authorization, run) {
|
|
1861
|
+
return !authorization || isAllowed2(authorization, { kind: "workflow.run", workflowId: run.workflowId });
|
|
1862
1862
|
}
|
|
1863
|
-
function
|
|
1864
|
-
return !authorization ||
|
|
1863
|
+
function canViewWorkflowIntervention2(authorization, intervention) {
|
|
1864
|
+
return !authorization || isAllowed2(authorization, { kind: "workflow.run", workflowId: intervention.workflowId });
|
|
1865
1865
|
}
|
|
1866
|
-
function
|
|
1867
|
-
return !authorization ||
|
|
1866
|
+
function canViewPipelineRun2(authorization, run) {
|
|
1867
|
+
return !authorization || isAllowed2(authorization, { kind: "pipeline.run", pipelineId: run.pipelineId });
|
|
1868
1868
|
}
|
|
1869
|
-
function
|
|
1869
|
+
function canViewProjectionRun2(authorization, target) {
|
|
1870
1870
|
if (!authorization)
|
|
1871
1871
|
return true;
|
|
1872
|
-
const canView = (objectTypeId) =>
|
|
1872
|
+
const canView = (objectTypeId) => isAllowed2(authorization, { kind: "object.view", objectTypeId });
|
|
1873
1873
|
if ("sourceObjectTypeId" in target) {
|
|
1874
1874
|
return canView(target.sourceObjectTypeId) && canView(target.targetObjectTypeId);
|
|
1875
1875
|
}
|
|
1876
1876
|
return canView(target.objectTypeId);
|
|
1877
1877
|
}
|
|
1878
|
-
function
|
|
1879
|
-
return
|
|
1878
|
+
function canViewProjection2(authorization, projection) {
|
|
1879
|
+
return canViewProjectionRun2(authorization, projectionTargetOf2(projection));
|
|
1880
1880
|
}
|
|
1881
1881
|
// src/authorization/types.ts
|
|
1882
|
-
function
|
|
1882
|
+
function emptyGrantIndex2() {
|
|
1883
1883
|
return emptyGrantSets();
|
|
1884
1884
|
}
|
|
1885
|
-
export {
|
|
1885
|
+
export { ProjectionValidationError2, computeProjectionOwnership2, validateProjectionOwnership2, validateTelemetryProjectionFieldMapping2, validateProjectionsAtStartup, defineProjection2, fromForeignKey2, isObjectProjectionDefinition2, isLinkProjectionDefinition2, isTelemetryProjectionDefinition2, isProjectionDefinition2, projectionTargetOf2, agentServiceAccountId2, GRANT_KINDS, grantKindOf, MAX_OBJECT_READ_FACETS2, ObjectReadLimitExceededError2, snapshotObjectReadExecutionLimits2, assertObjectReadFacetCount2, assertObjectReadOutputWithinLimit2, createPrincipalRuntimeAuthorization, createAgentRuntimeAuthorization, createDisabledRuntimeAuthorization, createDelegatedRuntimeAuthorization, createTrustedPrimitiveRuntimeAuthorization, resolveRuntimeAuthorizationForProject, getAuthorizationRef, captureExecutionScope, resolveExecutionScopeAuthorization, AuthorizationError2, evaluate2, isAllowed2, assertAuthorized2, isRuntimeAllowed2, assertRuntimeAuthorizationBound2, assertCanEdit2, assertCanAppendTelemetry2, assertCanManageConnector2, assertPrivileged2, assertProviderAccess2, isApplicationAccessControlled2, canAccessApplication2, canViewEvent2, resolveRoleGrants2, resolveAuthorizationContext2, canViewActionRun2, canViewWorkflowRun2, canViewWorkflowIntervention2, canViewPipelineRun2, canViewProjectionRun2, canViewProjection2, emptyGrantIndex2 };
|
|
1886
1886
|
|
|
1887
|
-
//# debugId=
|
|
1887
|
+
//# debugId=C7649C713C108F6A64756E2164756E21
|