@sixb/core 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +77 -89
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +2 -0
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +33 -37
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/adapters.d.ts +3 -3
- package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
- package/dist/agents/context/entries.d.ts.map +1 -0
- package/dist/agents/context/index.d.ts +4 -0
- package/dist/agents/context/index.d.ts.map +1 -0
- package/dist/agents/context/index.js +19 -0
- package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
- package/dist/agents/context-model.d.ts +1 -1
- package/dist/agents/context-model.d.ts.map +1 -1
- package/dist/agents/context-resolution.d.ts +1 -1
- package/dist/agents/context-resolution.d.ts.map +1 -1
- package/dist/agents/index.d.ts +4 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +193 -204
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +1 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +2 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/request.d.ts +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams/index.d.ts +4 -0
- package/dist/agents/streams/index.d.ts.map +1 -0
- package/dist/agents/streams/index.js +20 -0
- package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
- package/dist/agents/streams/internal.d.ts +3 -0
- package/dist/agents/streams/internal.d.ts.map +1 -0
- package/dist/agents/streams/internal.js +40 -0
- package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
- package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
- package/dist/agents/streams/protocol.d.ts.map +1 -0
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +96 -108
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/strategy.js +8 -9
- package/dist/auth/strategy.js.map +1 -1
- package/dist/authorization/index.js +51 -56
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/browser.js +15 -17
- package/dist/blob-storage/browser.js.map +1 -1
- package/dist/blob-storage/index.js +36 -38
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/bootstrap/discovery.d.ts +14 -1
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -2
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +80 -88
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/in-memory.d.ts +8 -2
- package/dist/broker/in-memory.d.ts.map +1 -1
- package/dist/broker/index.d.ts +4 -2
- package/dist/broker/index.d.ts.map +1 -1
- package/dist/broker/index.js +12 -10
- package/dist/broker/index.js.map +1 -1
- package/dist/broker/retention.d.ts +4 -0
- package/dist/broker/retention.d.ts.map +1 -0
- package/dist/broker/subscriber.d.ts +10 -0
- package/dist/broker/subscriber.d.ts.map +1 -0
- package/dist/broker/types.d.ts +14 -1
- package/dist/broker/types.d.ts.map +1 -1
- package/dist/chunk-0y39rgsb.js +43 -0
- package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
- package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
- package/dist/chunk-17kfctj6.js.map +10 -0
- package/dist/{chunk-ajnan18g.js → chunk-1824gssz.js} +74 -106
- package/dist/chunk-1824gssz.js.map +12 -0
- package/dist/chunk-28ja2cjs.js +602 -0
- package/dist/chunk-28ja2cjs.js.map +18 -0
- package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
- package/dist/chunk-2c4j899j.js.map +11 -0
- package/dist/{chunk-rv2hkwwa.js → chunk-358caqf5.js} +157 -180
- package/dist/chunk-358caqf5.js.map +12 -0
- package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
- package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
- package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
- package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
- package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
- package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
- package/dist/{chunk-s5y30bc9.js → chunk-3qms4nax.js} +52 -50
- package/dist/{chunk-s5y30bc9.js.map → chunk-3qms4nax.js.map} +5 -5
- package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
- package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
- package/dist/{chunk-wtf06et8.js → chunk-5c7ga8zz.js} +54 -177
- package/dist/chunk-5c7ga8zz.js.map +12 -0
- package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
- package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
- package/dist/{chunk-xajtptbw.js → chunk-5p1v802y.js} +1401 -445
- package/dist/chunk-5p1v802y.js.map +44 -0
- package/dist/chunk-653vwrzr.js +39 -0
- package/dist/chunk-653vwrzr.js.map +10 -0
- package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
- package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
- package/dist/chunk-7apz6hg4.js +50 -0
- package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
- package/dist/chunk-7bs40fe1.js +218 -0
- package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
- package/dist/chunk-7zgecwy1.js +113 -0
- package/dist/chunk-7zgecwy1.js.map +10 -0
- package/dist/{chunk-xhy826cz.js → chunk-85cd7e8c.js} +8 -7
- package/dist/chunk-85cd7e8c.js.map +10 -0
- package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
- package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
- package/dist/chunk-8vj0rjgs.js +165 -0
- package/dist/chunk-8vj0rjgs.js.map +15 -0
- package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
- package/dist/chunk-92vk7gta.js.map +10 -0
- package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
- package/dist/chunk-93csa55g.js.map +11 -0
- package/dist/{chunk-aa2pen2v.js → chunk-976rxdpx.js} +188 -175
- package/dist/{chunk-aa2pen2v.js.map → chunk-976rxdpx.js.map} +2 -2
- package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
- package/dist/chunk-98cw09sw.js.map +10 -0
- package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
- package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
- package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
- package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
- package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
- package/dist/{chunk-8m5ejdpn.js → chunk-9x8dybsb.js} +5 -5
- package/dist/chunk-9x8dybsb.js.map +10 -0
- package/dist/chunk-aa6z4a19.js +358 -0
- package/dist/chunk-aa6z4a19.js.map +12 -0
- package/dist/{chunk-3xep5cjx.js → chunk-agbbygvh.js} +104 -86
- package/dist/chunk-agbbygvh.js.map +15 -0
- package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
- package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
- package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
- package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
- package/dist/{chunk-w9tg6yyb.js → chunk-b0ec55a1.js} +54 -37
- package/dist/chunk-b0ec55a1.js.map +12 -0
- package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
- package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
- package/dist/{chunk-gbejpkex.js → chunk-bn138h9w.js} +27 -28
- package/dist/{chunk-gbejpkex.js.map → chunk-bn138h9w.js.map} +3 -3
- package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
- package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
- package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
- package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
- package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
- package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
- package/dist/chunk-d62kjtbg.js +7 -0
- package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
- package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
- package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
- package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
- package/dist/chunk-dmn70ztd.js.map +11 -0
- package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
- package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
- package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
- package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
- package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
- package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
- package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
- package/dist/chunk-f0rwz2vh.js.map +11 -0
- package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
- package/dist/chunk-f4w3yp4f.js.map +12 -0
- package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
- package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
- package/dist/{chunk-f26bck4t.js → chunk-ftv470j8.js} +393 -355
- package/dist/{chunk-f26bck4t.js.map → chunk-ftv470j8.js.map} +7 -7
- package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
- package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
- package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
- package/dist/chunk-g53f0e4j.js.map +15 -0
- package/dist/chunk-g6cke204.js +124 -0
- package/dist/chunk-g6cke204.js.map +10 -0
- package/dist/{chunk-q0k9nc5a.js → chunk-g7knyczr.js} +98 -98
- package/dist/{chunk-q0k9nc5a.js.map → chunk-g7knyczr.js.map} +2 -2
- package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
- package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
- package/dist/{chunk-8tsf6dmc.js → chunk-gqh45d2n.js} +244 -205
- package/dist/chunk-gqh45d2n.js.map +15 -0
- package/dist/chunk-h3v76ams.js +32 -0
- package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
- package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
- package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
- package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-k34z5rvh.js → chunk-kfee1h52.js} +132 -48
- package/dist/chunk-kfee1h52.js.map +13 -0
- package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
- package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
- package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
- package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
- package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
- package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
- package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
- package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
- package/dist/{chunk-h5vqbfmd.js → chunk-nmbxcaqx.js} +117 -117
- package/dist/{chunk-h5vqbfmd.js.map → chunk-nmbxcaqx.js.map} +3 -3
- package/dist/{chunk-n2w475r0.js → chunk-nt99sxd6.js} +82 -82
- package/dist/{chunk-n2w475r0.js.map → chunk-nt99sxd6.js.map} +3 -3
- package/dist/{chunk-v1xppd0y.js → chunk-p5vcsw9c.js} +60 -60
- package/dist/{chunk-v1xppd0y.js.map → chunk-p5vcsw9c.js.map} +2 -2
- package/dist/{chunk-sbzzr4kx.js → chunk-p6a4npdx.js} +1260 -1289
- package/dist/chunk-p6a4npdx.js.map +58 -0
- package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
- package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
- package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
- package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
- package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
- package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
- package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
- package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
- package/dist/chunk-qma80ych.js +30 -0
- package/dist/chunk-qma80ych.js.map +11 -0
- package/dist/{chunk-mth82m8t.js → chunk-qyeptdyv.js} +171 -77
- package/dist/chunk-qyeptdyv.js.map +15 -0
- package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
- package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
- package/dist/{chunk-mwsxn98e.js → chunk-r7fj830t.js} +253 -200
- package/dist/chunk-r7fj830t.js.map +36 -0
- package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
- package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
- package/dist/{chunk-gzasd5b6.js → chunk-rtk71jzp.js} +22 -22
- package/dist/{chunk-gzasd5b6.js.map → chunk-rtk71jzp.js.map} +2 -2
- package/dist/chunk-s3csryxe.js +152 -0
- package/dist/chunk-s3csryxe.js.map +11 -0
- package/dist/chunk-s670k14v.js +60 -0
- package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
- package/dist/chunk-skz0hst3.js +788 -0
- package/dist/chunk-skz0hst3.js.map +19 -0
- package/dist/{chunk-3z1qec12.js → chunk-t1f4f1ve.js} +107 -64
- package/dist/{chunk-3z1qec12.js.map → chunk-t1f4f1ve.js.map} +3 -3
- package/dist/chunk-v2vcg0w6.js +151 -0
- package/dist/chunk-v2vcg0w6.js.map +11 -0
- package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
- package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
- package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
- package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
- package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
- package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
- package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
- package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
- package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
- package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
- package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
- package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
- package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
- package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
- package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
- package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
- package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
- package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
- package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
- package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
- package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
- package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
- package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
- package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
- package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
- package/dist/connectors/connections/authorizations.d.ts.map +1 -1
- package/dist/connectors/connections/contracts.d.ts +3 -0
- package/dist/connectors/connections/contracts.d.ts.map +1 -1
- package/dist/connectors/connections/internal.js +9 -10
- package/dist/connectors/connections/internal.js.map +1 -1
- package/dist/connectors/connections/request.d.ts +3 -1
- package/dist/connectors/connections/request.d.ts.map +1 -1
- package/dist/connectors/connections/runs.d.ts.map +1 -1
- package/dist/connectors/connections/tokens.d.ts.map +1 -1
- package/dist/connectors/connections/validation.d.ts +5 -1
- package/dist/connectors/connections/validation.d.ts.map +1 -1
- package/dist/connectors/types.d.ts +19 -4
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/datasets/write.js +8 -12
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/index.js +7 -8
- package/dist/edits/index.js.map +1 -1
- package/dist/error-reporting/internal.js +22 -24
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/errors/internal.d.ts +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +22 -24
- package/dist/errors/internal.js.map +1 -1
- package/dist/errors/redaction.d.ts +8 -0
- package/dist/errors/redaction.d.ts.map +1 -0
- package/dist/errors/types.d.ts +4 -0
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/events/execution.d.ts +1 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.js +60 -63
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.js +4 -5
- package/dist/events/scope.js.map +1 -1
- package/dist/events/selectors/index.js +9 -10
- package/dist/events/selectors/index.js.map +1 -1
- package/dist/events/service.d.ts +2 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +3 -3
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +71 -82
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/durable.d.ts +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +2 -0
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +64 -71
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +66 -75
- package/dist/execution/request.js.map +3 -3
- package/dist/http/index.js +10 -11
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +17 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +457 -477
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/changes.d.ts +5 -0
- package/dist/lake-storage/changes.d.ts.map +1 -0
- package/dist/lake-storage/in-memory.d.ts +2 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +2 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +40 -42
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +36 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/logging/index.d.ts +3 -4
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +18 -40
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/internal.d.ts +5 -0
- package/dist/logging/internal.d.ts.map +1 -0
- package/dist/logging/internal.js +43 -0
- package/dist/logging/internal.js.map +9 -0
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +46 -49
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +12 -1
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/index.d.ts +1 -1
- package/dist/materializer/index.d.ts.map +1 -1
- package/dist/materializer/index.js +137 -145
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/materializer.d.ts +5 -1
- package/dist/materializer/materializer.d.ts.map +1 -1
- package/dist/materializer/projections/entry-validator.d.ts +2 -1
- package/dist/materializer/projections/entry-validator.d.ts.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +4 -3
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts +2 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/models/errors.d.ts +4 -0
- package/dist/models/errors.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +9 -0
- package/dist/models/execution/binding.d.ts.map +1 -0
- package/dist/models/execution/errors.d.ts +9 -0
- package/dist/models/execution/errors.d.ts.map +1 -0
- package/dist/models/execution/index.d.ts +11 -0
- package/dist/models/execution/index.d.ts.map +1 -0
- package/dist/models/execution/index.js +55 -0
- package/dist/models/execution/index.js.map +9 -0
- package/dist/models/execution/model-call-accounting.d.ts +17 -0
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
- package/dist/models/execution/model-call-admission.d.ts +47 -0
- package/dist/models/execution/model-call-admission.d.ts.map +1 -0
- package/dist/models/execution/model-call-limits.d.ts +15 -0
- package/dist/models/execution/model-call-limits.d.ts.map +1 -0
- package/dist/models/execution/model-call-recorder.d.ts +40 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
- package/dist/models/execution/model-call-recovery.d.ts +12 -0
- package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
- package/dist/models/execution/recovery-queue.d.ts +5 -0
- package/dist/models/execution/recovery-queue.d.ts.map +1 -0
- package/dist/models/execution/types.d.ts +44 -0
- package/dist/models/execution/types.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts +5 -0
- package/dist/models/execution/usage.d.ts.map +1 -0
- package/dist/models/execution.d.ts +6 -0
- package/dist/models/execution.d.ts.map +1 -0
- package/dist/models/generation-types.d.ts +40 -0
- package/dist/models/generation-types.d.ts.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +42 -43
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +3 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/output.d.ts +5 -0
- package/dist/models/output.d.ts.map +1 -0
- package/dist/models/resolve.d.ts +4 -0
- package/dist/models/resolve.d.ts.map +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +75 -87
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +67 -76
- package/dist/objects/query/index.js.map +1 -1
- package/dist/ontology/index.d.ts +1 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +62 -113
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.d.ts +7 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +65 -116
- package/dist/ontology/internal.js.map +3 -4
- package/dist/pipelines/index.js +57 -66
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/run-dispatch.d.ts.map +1 -1
- package/dist/projections/internal.js +56 -67
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +11 -15
- package/dist/query.js.map +1 -1
- package/dist/queues/in-memory.d.ts +7 -3
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.d.ts +2 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +6 -7
- package/dist/queues/index.js.map +1 -1
- package/dist/queues/indexed-heap.d.ts +15 -0
- package/dist/queues/indexed-heap.d.ts.map +1 -0
- package/dist/queues/types.d.ts +3 -20
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/rules/internal.js +4 -5
- package/dist/rules/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +2 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +2 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.js +13 -14
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/ontology-mutations.d.ts +3 -1
- package/dist/runtime/ontology-mutations.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/sandboxes/errors.d.ts +4 -0
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +2 -2
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +14 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -7
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/scheduler/index.js +9 -10
- package/dist/scheduler/index.js.map +1 -1
- package/dist/schedules/index.js +31 -33
- package/dist/schedules/index.js.map +1 -1
- package/dist/shares/internal.js +46 -54
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +7 -9
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +4 -8
- package/dist/storage/action-runs/provider.js.map +1 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +26 -30
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +0 -3
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/attribution.d.ts +4 -0
- package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
- package/dist/storage/ai-cost/groups.d.ts +3 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +1 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +30 -143
- package/dist/storage/ai-cost/provider.js.map +3 -4
- package/dist/storage/ai-cost/types.d.ts +15 -0
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +14 -16
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.js +56 -57
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/auth/in-memory.d.ts +1 -1
- package/dist/storage/auth/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +35 -37
- package/dist/storage/connector-connections/provider.js.map +3 -3
- package/dist/storage/connector-connections/types.d.ts +3 -2
- package/dist/storage/connector-connections/types.d.ts.map +1 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +14 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +6 -2
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +2 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +7 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +221 -256
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -0
- package/dist/storage/internal.d.ts.map +1 -0
- package/dist/storage/internal.js +47 -0
- package/dist/storage/internal.js.map +9 -0
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/shared-state.d.ts +15 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +6 -0
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +16 -0
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +107 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/sources.d.ts +13 -4
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +18 -19
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +4 -6
- package/dist/storage/pipeline-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +66 -70
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/share-grants/provider.js +17 -19
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-sessions/provider.js +14 -15
- package/dist/storage/share-sessions/provider.js.map +1 -1
- package/dist/storage/sync-runs/provider.js +4 -6
- package/dist/storage/sync-runs/provider.js.map +1 -1
- package/dist/storage/webhook-runs/provider.js +4 -6
- package/dist/storage/webhook-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +13 -21
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +0 -3
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +56 -65
- package/dist/syncs/index.js.map +1 -1
- package/dist/syncs/run-dispatch.d.ts.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -1
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/agent-execution.d.ts +1 -0
- package/dist/testing/agent-execution.d.ts.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/connector-connection-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -0
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2282 -1662
- package/dist/testing/index.js.map +16 -15
- package/dist/testing/lake-changes-contract.d.ts +6 -0
- package/dist/testing/lake-changes-contract.d.ts.map +1 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/workflow-execution.d.ts +1 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -1
- package/dist/webhooks/connections.d.ts +6 -0
- package/dist/webhooks/connections.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +1 -1
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/internal.d.ts +2 -0
- package/dist/webhooks/internal.d.ts.map +1 -1
- package/dist/webhooks/internal.js +98 -61
- package/dist/webhooks/internal.js.map +4 -3
- package/dist/webhooks/registry.d.ts +1 -1
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/types.d.ts +15 -4
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/workers/index.js +11 -13
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts +2 -0
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +136 -147
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/run-dispatch.d.ts +3 -2
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +48 -30
- package/src/actions/run-dispatch.ts +2 -6
- package/src/actions/types/context.ts +2 -0
- package/src/actions/validation.ts +2 -1
- package/src/agents/adapters.ts +4 -9
- package/src/agents/{context.ts → context/entries.ts} +4 -4
- package/src/agents/context/index.ts +15 -0
- package/src/agents/context-model.ts +1 -1
- package/src/agents/context-resolution.ts +1 -1
- package/src/agents/index.ts +4 -4
- package/src/agents/message.ts +1 -1
- package/src/agents/model-loop.ts +8 -0
- package/src/agents/request.ts +11 -26
- package/src/agents/streams/index.ts +18 -0
- package/src/agents/streams/internal.ts +19 -0
- package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
- package/src/agents/types.ts +1 -1
- package/src/agents/validation.ts +3 -7
- package/src/auth/index.ts +0 -1
- package/src/bootstrap/discovery.ts +81 -24
- package/src/bootstrap/index.ts +8 -1
- package/src/broker/in-memory.ts +104 -39
- package/src/broker/index.ts +4 -1
- package/src/broker/retention.ts +28 -0
- package/src/broker/subscriber.ts +21 -0
- package/src/broker/types.ts +15 -1
- package/src/connectors/builders.ts +0 -6
- package/src/connectors/connections/authorizations.ts +11 -5
- package/src/connectors/connections/contracts.ts +3 -0
- package/src/connectors/connections/request.ts +56 -22
- package/src/connectors/connections/runs.ts +1 -0
- package/src/connectors/connections/tokens.ts +4 -0
- package/src/connectors/connections/validation.ts +91 -5
- package/src/connectors/types.ts +19 -4
- package/src/errors/internal.ts +90 -10
- package/src/errors/redaction.ts +98 -0
- package/src/errors/types.ts +4 -0
- package/src/events/execution.ts +2 -2
- package/src/events/service.ts +3 -3
- package/src/execution/agent.ts +5 -3
- package/src/execution/durable.ts +11 -1
- package/src/execution/primitive.ts +5 -1
- package/src/execution/request.ts +3 -0
- package/src/index.ts +30 -20
- package/src/lake-storage/changes.ts +43 -0
- package/src/lake-storage/in-memory.ts +73 -0
- package/src/lake-storage/index.ts +4 -0
- package/src/lake-storage/types.ts +40 -0
- package/src/logging/index.ts +2 -33
- package/src/logging/internal.ts +43 -0
- package/src/logging/service.ts +1 -1
- package/src/materialization/index.ts +2 -0
- package/src/materialization/model.ts +14 -1
- package/src/materializer/index.ts +2 -0
- package/src/materializer/materializer.ts +10 -0
- package/src/materializer/projections/entry-validator.ts +19 -1
- package/src/materializer/projections/replace.ts +36 -1
- package/src/materializer/projections/source-materialization.ts +26 -6
- package/src/materializer/shared/normalize.ts +1 -1
- package/src/models/errors.ts +12 -0
- package/src/models/execution/binding.ts +29 -0
- package/src/models/execution/errors.ts +18 -0
- package/src/models/execution/index.ts +26 -0
- package/src/models/execution/model-call-accounting.ts +211 -0
- package/src/models/execution/model-call-admission.ts +127 -0
- package/src/models/execution/model-call-limits.ts +135 -0
- package/src/models/execution/model-call-recorder.ts +235 -0
- package/src/models/execution/model-call-recovery.ts +125 -0
- package/src/models/execution/recovery-queue.ts +31 -0
- package/src/models/execution/types.ts +58 -0
- package/src/models/execution/usage.ts +23 -0
- package/src/models/execution.ts +207 -0
- package/src/models/generation-types.ts +50 -0
- package/src/models/index.ts +8 -0
- package/src/models/language-model.ts +3 -0
- package/src/models/output.ts +45 -0
- package/src/models/resolve.ts +27 -0
- package/src/objects/execution.ts +1 -1
- package/src/ontology/index.ts +1 -2
- package/src/ontology/internal.ts +35 -0
- package/src/pipelines/run-dispatch.ts +21 -1
- package/src/projections/run-dispatch.ts +31 -68
- package/src/query.ts +0 -1
- package/src/queues/in-memory.ts +105 -62
- package/src/queues/index.ts +4 -2
- package/src/queues/indexed-heap.ts +74 -0
- package/src/queues/types.ts +6 -25
- package/src/runtime/create.ts +2 -1
- package/src/runtime/host.ts +2 -15
- package/src/runtime/ontology-mutations.ts +4 -0
- package/src/runtime/sixb.ts +4 -0
- package/src/sandboxes/errors.ts +5 -0
- package/src/sandboxes/index.ts +3 -0
- package/src/sandboxes/sandbox.ts +35 -7
- package/src/storage/agents/in-memory.ts +0 -3
- package/src/storage/agents/types.ts +0 -3
- package/src/storage/ai-cost/analytics.ts +1 -1
- package/src/storage/ai-cost/attribution.ts +15 -0
- package/src/storage/ai-cost/groups.ts +5 -1
- package/src/storage/ai-cost/provider.ts +1 -0
- package/src/storage/ai-cost/types.ts +7 -0
- package/src/storage/auth/in-memory.ts +1 -1
- package/src/storage/connector-connections/in-memory.ts +3 -1
- package/src/storage/connector-connections/provider/runs.ts +3 -1
- package/src/storage/connector-connections/types.ts +3 -2
- package/src/storage/executions/in-memory.ts +4 -9
- package/src/storage/executions/provider.ts +4 -0
- package/src/storage/executions/types.ts +6 -2
- package/src/storage/executions/validation.ts +32 -0
- package/src/storage/in-memory/index.ts +16 -1
- package/src/storage/index.ts +4 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/ontology/in-memory/materializations-state.ts +5 -18
- package/src/storage/ontology/in-memory/materializations.ts +73 -92
- package/src/storage/ontology/in-memory/shared-state.ts +26 -1
- package/src/storage/ontology/in-memory/source-roots.ts +123 -0
- package/src/storage/ontology/in-memory/sources.ts +78 -23
- package/src/storage/ontology/index.ts +1 -0
- package/src/storage/ontology/provider.ts +70 -0
- package/src/storage/ontology/sources.ts +14 -3
- package/src/storage/projection-runs/lifecycle.ts +5 -2
- package/src/storage/projection-runs/types.ts +4 -3
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/syncs/run-dispatch.ts +19 -1
- package/src/testing/action-execution.ts +9 -2
- package/src/testing/agent-execution.ts +3 -0
- package/src/testing/agent-storage-contract.ts +0 -5
- package/src/testing/ai-model-call-groups-contract.ts +74 -2
- package/src/testing/broker-contract.ts +95 -0
- package/src/testing/connector-connection-storage-contract.ts +18 -1
- package/src/testing/execution-storage-contract.ts +59 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/lake-changes-contract.ts +240 -0
- package/src/testing/materializer-storage-contract.ts +172 -1
- package/src/testing/ontology-storage-contract.ts +7 -0
- package/src/testing/projection-run-storage-contract.ts +34 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/webhooks/connections.ts +56 -0
- package/src/webhooks/index.ts +2 -0
- package/src/webhooks/internal.ts +2 -0
- package/src/webhooks/registry.ts +3 -4
- package/src/webhooks/types.ts +17 -4
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +0 -9
- package/src/workflows/run-dispatch.ts +42 -32
- package/src/workflows/types.ts +2 -0
- package/src/workflows/validation.ts +1 -1
- package/dist/agents/context.d.ts.map +0 -1
- package/dist/agents/context.js +0 -23
- package/dist/agents/streams.d.ts.map +0 -1
- package/dist/agents/streams.js +0 -55
- package/dist/chunk-08m3b6w8.js +0 -32
- package/dist/chunk-19jp6g9d.js.map +0 -11
- package/dist/chunk-2xns679x.js.map +0 -11
- package/dist/chunk-3xep5cjx.js.map +0 -15
- package/dist/chunk-407j3msh.js +0 -60
- package/dist/chunk-4qfkag59.js +0 -1568
- package/dist/chunk-4qfkag59.js.map +0 -20
- package/dist/chunk-5e3pq99w.js.map +0 -11
- package/dist/chunk-5gd7tpv6.js.map +0 -11
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-8m5ejdpn.js.map +0 -10
- package/dist/chunk-8tsf6dmc.js.map +0 -15
- package/dist/chunk-ajnan18g.js.map +0 -12
- package/dist/chunk-c15dr03f.js +0 -43
- package/dist/chunk-d8qkxt2v.js.map +0 -10
- package/dist/chunk-jq43kdvk.js +0 -50
- package/dist/chunk-k34z5rvh.js.map +0 -11
- package/dist/chunk-k522z7v6.js.map +0 -10
- package/dist/chunk-mth82m8t.js.map +0 -14
- package/dist/chunk-mwsxn98e.js.map +0 -36
- package/dist/chunk-p03r0h5s.js.map +0 -16
- package/dist/chunk-p1rzczbt.js +0 -218
- package/dist/chunk-rafagrwr.js.map +0 -11
- package/dist/chunk-rv2hkwwa.js.map +0 -14
- package/dist/chunk-sbzzr4kx.js.map +0 -63
- package/dist/chunk-tpnd31c1.js +0 -242
- package/dist/chunk-tpnd31c1.js.map +0 -11
- package/dist/chunk-w9tg6yyb.js.map +0 -12
- package/dist/chunk-wtf06et8.js.map +0 -14
- package/dist/chunk-xajtptbw.js.map +0 -40
- package/dist/chunk-xhy826cz.js.map +0 -10
- package/dist/chunk-y64skrwp.js +0 -19
- package/dist/chunk-zcnhxkvd.js +0 -7
- package/dist/logging/types.js +0 -27
- package/dist/logging/types.js.map +0 -9
- /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
- /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
- /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
- /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
- /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
- /package/dist/{chunk-z4ccwbkz.js.map → chunk-x9v4cx1d.js.map} +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
createSixbError2,
|
|
4
|
+
toSixbFailure2,
|
|
5
|
+
serializeSixbFailure2
|
|
6
|
+
} from "./chunk-f4w3yp4f.js";
|
|
5
7
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./chunk-qw9gvjv5.js";
|
|
8
|
+
ONTOLOGY_OUTBOX_FAILURE_CODES2
|
|
9
|
+
} from "./chunk-d62kjtbg.js";
|
|
9
10
|
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "./chunk-2xns679x.js";
|
|
11
|
+
SixbErrorReporter2,
|
|
12
|
+
reportEventDeliveryFailure3
|
|
13
|
+
} from "./chunk-72w2pxk7.js";
|
|
14
14
|
import {
|
|
15
|
-
|
|
16
|
-
} from "./chunk-
|
|
15
|
+
getInvalidJsonValueReason2
|
|
16
|
+
} from "./chunk-wy0qdqfm.js";
|
|
17
17
|
|
|
18
18
|
// src/events/errors.ts
|
|
19
|
-
class
|
|
19
|
+
class EventsError2 extends Error {
|
|
20
20
|
name = "EventsError";
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ class EventsError extends Error {
|
|
|
24
24
|
function defineEventGroup(definitions) {
|
|
25
25
|
return definitions;
|
|
26
26
|
}
|
|
27
|
-
var
|
|
27
|
+
var OBJECT_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
28
28
|
"object.created": {
|
|
29
29
|
topic: "objects",
|
|
30
30
|
partitionKey: (payload) => `${payload.objectTypeId}:${payload.primaryId}`
|
|
@@ -38,13 +38,13 @@ var OBJECT_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
38
38
|
partitionKey: (payload) => `${payload.objectTypeId}:${payload.primaryId}`
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
|
-
var
|
|
41
|
+
var TELEMETRY_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
42
42
|
"telemetry.appended": {
|
|
43
43
|
topic: "telemetry",
|
|
44
44
|
partitionKey: (payload) => `${payload.objectTypeId}:${payload.objectId}:${payload.propertyId}`
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
|
-
var
|
|
47
|
+
var LINK_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
48
48
|
"link.created": {
|
|
49
49
|
topic: "links",
|
|
50
50
|
partitionKey: (payload) => `${payload.sourceTypeId}:${payload.sourceId}:${payload.linkId}`
|
|
@@ -58,7 +58,7 @@ var LINK_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
58
58
|
partitionKey: (payload) => `${payload.sourceTypeId}:${payload.sourceId}:${payload.linkId}`
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
|
-
var
|
|
61
|
+
var ACTION_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
62
62
|
"action.requested": {
|
|
63
63
|
topic: "actions",
|
|
64
64
|
partitionKey: (payload) => payload.actionId
|
|
@@ -72,13 +72,13 @@ var ACTION_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
72
72
|
partitionKey: (payload) => payload.actionId
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
|
-
var
|
|
75
|
+
var SCHEDULE_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
76
76
|
"schedule.triggered": {
|
|
77
77
|
topic: "schedules",
|
|
78
78
|
partitionKey: (payload) => payload.scheduleId
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
|
-
var
|
|
81
|
+
var RULE_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
82
82
|
"rule.triggered": {
|
|
83
83
|
topic: "rules",
|
|
84
84
|
partitionKey: (payload) => `${payload.ruleId}:${payload.subject.objectTypeId}:${payload.subject.primaryId}`
|
|
@@ -88,7 +88,7 @@ var RULE_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
88
88
|
partitionKey: (payload) => `${payload.ruleId}:${payload.subject.objectTypeId}:${payload.subject.primaryId}`
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
|
-
var
|
|
91
|
+
var SYNC_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
92
92
|
"sync.run.started": {
|
|
93
93
|
topic: "syncs",
|
|
94
94
|
partitionKey: (payload) => `${payload.syncId}:${payload.runId}`
|
|
@@ -98,7 +98,7 @@ var SYNC_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
98
98
|
partitionKey: (payload) => `${payload.syncId}:${payload.runId}`
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
|
-
var
|
|
101
|
+
var PIPELINE_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
102
102
|
"pipeline.run.started": {
|
|
103
103
|
topic: "pipelines",
|
|
104
104
|
partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`
|
|
@@ -116,7 +116,7 @@ var PIPELINE_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
116
116
|
partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
|
-
var
|
|
119
|
+
var WORKFLOW_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
120
120
|
"workflow.run.queued": {
|
|
121
121
|
topic: "workflows",
|
|
122
122
|
partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`
|
|
@@ -162,40 +162,40 @@ var WORKFLOW_EVENT_DEFINITIONS = defineEventGroup({
|
|
|
162
162
|
partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`
|
|
163
163
|
}
|
|
164
164
|
});
|
|
165
|
-
var
|
|
165
|
+
var DATASET_EVENT_DEFINITIONS2 = defineEventGroup({
|
|
166
166
|
"dataset.version.committed": {
|
|
167
167
|
topic: "datasets",
|
|
168
168
|
partitionKey: (payload) => payload.datasetId
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
|
-
var
|
|
172
|
-
...
|
|
173
|
-
...
|
|
174
|
-
...
|
|
175
|
-
...
|
|
176
|
-
...
|
|
177
|
-
...
|
|
178
|
-
...
|
|
179
|
-
...
|
|
180
|
-
...
|
|
181
|
-
...
|
|
171
|
+
var EVENT_DEFINITIONS2 = {
|
|
172
|
+
...OBJECT_EVENT_DEFINITIONS2,
|
|
173
|
+
...TELEMETRY_EVENT_DEFINITIONS2,
|
|
174
|
+
...LINK_EVENT_DEFINITIONS2,
|
|
175
|
+
...ACTION_EVENT_DEFINITIONS2,
|
|
176
|
+
...SCHEDULE_EVENT_DEFINITIONS2,
|
|
177
|
+
...SYNC_EVENT_DEFINITIONS2,
|
|
178
|
+
...PIPELINE_EVENT_DEFINITIONS2,
|
|
179
|
+
...WORKFLOW_EVENT_DEFINITIONS2,
|
|
180
|
+
...DATASET_EVENT_DEFINITIONS2,
|
|
181
|
+
...RULE_EVENT_DEFINITIONS2
|
|
182
182
|
};
|
|
183
|
-
var
|
|
184
|
-
var
|
|
185
|
-
...new Set(Object.values(
|
|
183
|
+
var EVENT_TYPES2 = Object.keys(EVENT_DEFINITIONS2);
|
|
184
|
+
var EVENT_TOPICS2 = [
|
|
185
|
+
...new Set(Object.values(EVENT_DEFINITIONS2).map((definition) => definition.topic))
|
|
186
186
|
];
|
|
187
|
-
function
|
|
188
|
-
return Object.hasOwn(
|
|
187
|
+
function isDomainEventType2(value) {
|
|
188
|
+
return Object.hasOwn(EVENT_DEFINITIONS2, value);
|
|
189
189
|
}
|
|
190
|
-
function
|
|
191
|
-
return Object.hasOwn(
|
|
190
|
+
function isOntologyFactType2(value) {
|
|
191
|
+
return Object.hasOwn(OBJECT_EVENT_DEFINITIONS2, value) || Object.hasOwn(LINK_EVENT_DEFINITIONS2, value) || Object.hasOwn(TELEMETRY_EVENT_DEFINITIONS2, value);
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function resolveEventStorage2(event) {
|
|
194
194
|
const eventType = event.type;
|
|
195
|
-
if (!
|
|
196
|
-
throw new
|
|
195
|
+
if (!isDomainEventType2(eventType)) {
|
|
196
|
+
throw new EventsError2(`Unknown event type: ${eventType}`);
|
|
197
197
|
}
|
|
198
|
-
const definition =
|
|
198
|
+
const definition = EVENT_DEFINITIONS2[eventType];
|
|
199
199
|
return {
|
|
200
200
|
topic: definition.topic,
|
|
201
201
|
partitionKey: definition.partitionKey(event.payload)
|
|
@@ -234,7 +234,7 @@ class ClaimedBatch {
|
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
class
|
|
237
|
+
class OntologyOutboxDispatcher2 {
|
|
238
238
|
projectId;
|
|
239
239
|
storage;
|
|
240
240
|
events;
|
|
@@ -417,8 +417,8 @@ class OntologyOutboxDispatcher {
|
|
|
417
417
|
const failedAt = this.now();
|
|
418
418
|
for (const [attempts, attemptRows] of rowsByAttempts(settling)) {
|
|
419
419
|
const deliveryError = createEventDeliveryError(error, attempts);
|
|
420
|
-
const failure =
|
|
421
|
-
allowedCodes:
|
|
420
|
+
const failure = toSixbFailure2(deliveryError, {
|
|
421
|
+
allowedCodes: ONTOLOGY_OUTBOX_FAILURE_CODES2,
|
|
422
422
|
at: failedAt
|
|
423
423
|
});
|
|
424
424
|
failures.add(deliveryError, failure, failedAt.toISOString(), attempts, attemptRows);
|
|
@@ -482,7 +482,7 @@ class OntologyOutboxDispatcher {
|
|
|
482
482
|
class DeliveryFailureAccumulator {
|
|
483
483
|
groups = new Map;
|
|
484
484
|
add(error, failure, occurredAt, attempts, rows) {
|
|
485
|
-
const key =
|
|
485
|
+
const key = serializeSixbFailure2(failure, ONTOLOGY_OUTBOX_FAILURE_CODES2);
|
|
486
486
|
const group = this.groups.get(key) ?? {
|
|
487
487
|
error,
|
|
488
488
|
failure,
|
|
@@ -547,7 +547,7 @@ function sharedLeaseId(rows) {
|
|
|
547
547
|
return leaseId;
|
|
548
548
|
}
|
|
549
549
|
function createEventDeliveryError(cause, attempts) {
|
|
550
|
-
return
|
|
550
|
+
return createSixbError2("event.delivery_failed", "[Sixb] Could not deliver persisted ontology events.", {
|
|
551
551
|
cause,
|
|
552
552
|
details: {
|
|
553
553
|
attempts
|
|
@@ -589,13 +589,13 @@ async function settlesWithin(promise, timeoutMs) {
|
|
|
589
589
|
}
|
|
590
590
|
// src/events/service.ts
|
|
591
591
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
592
|
-
var
|
|
593
|
-
var
|
|
592
|
+
var DEFAULT_EVENTS_RETENTION_MS2 = 2 * 24 * 60 * 60 * 1000;
|
|
593
|
+
var EVENTS_STREAM2 = {
|
|
594
594
|
id: "__events",
|
|
595
|
-
retention: { maxAgeMs:
|
|
595
|
+
retention: { maxAgeMs: DEFAULT_EVENTS_RETENTION_MS2 }
|
|
596
596
|
};
|
|
597
597
|
|
|
598
|
-
class
|
|
598
|
+
class DomainEventService2 {
|
|
599
599
|
projectId;
|
|
600
600
|
broker;
|
|
601
601
|
stream;
|
|
@@ -604,8 +604,8 @@ class DomainEventService {
|
|
|
604
604
|
constructor(options) {
|
|
605
605
|
this.projectId = options.projectId;
|
|
606
606
|
this.broker = options.broker;
|
|
607
|
-
this.stream = options.stream ??
|
|
608
|
-
this.errorReporter = options.errorReporter ?? new
|
|
607
|
+
this.stream = options.stream ?? EVENTS_STREAM2;
|
|
608
|
+
this.errorReporter = options.errorReporter ?? new SixbErrorReporter2;
|
|
609
609
|
}
|
|
610
610
|
async emit(input, _options) {
|
|
611
611
|
try {
|
|
@@ -613,7 +613,7 @@ class DomainEventService {
|
|
|
613
613
|
} catch (error) {
|
|
614
614
|
try {
|
|
615
615
|
const eventTypes = input.events.map((event) => event.type);
|
|
616
|
-
|
|
616
|
+
reportEventDeliveryFailure3(this.errorReporter, error, {
|
|
617
617
|
projectId: this.projectId,
|
|
618
618
|
eventTypes
|
|
619
619
|
});
|
|
@@ -625,8 +625,8 @@ class DomainEventService {
|
|
|
625
625
|
return [];
|
|
626
626
|
}
|
|
627
627
|
for (const event of input.events) {
|
|
628
|
-
if (
|
|
629
|
-
throw new
|
|
628
|
+
if (isOntologyFactType2(event.type)) {
|
|
629
|
+
throw new EventsError2(`Event type '${event.type}' is an authoritative ontology fact and cannot be appended directly.`);
|
|
630
630
|
}
|
|
631
631
|
}
|
|
632
632
|
const payloads = input.events.map((event) => toStoredEventPayload({
|
|
@@ -648,7 +648,7 @@ class DomainEventService {
|
|
|
648
648
|
}))
|
|
649
649
|
});
|
|
650
650
|
if (records.length !== payloads.length) {
|
|
651
|
-
throw new
|
|
651
|
+
throw new EventsError2(`Broker returned ${records.length} record(s) for ${payloads.length} appended event(s).`);
|
|
652
652
|
}
|
|
653
653
|
return records.map(hydrateEventRecord);
|
|
654
654
|
}
|
|
@@ -658,13 +658,13 @@ class DomainEventService {
|
|
|
658
658
|
}
|
|
659
659
|
for (const envelope of envelopes) {
|
|
660
660
|
if (envelope.projectId !== this.projectId) {
|
|
661
|
-
throw new
|
|
661
|
+
throw new EventsError2(`Event '${envelope.id}' belongs to project '${envelope.projectId}', not '${this.projectId}'.`);
|
|
662
662
|
}
|
|
663
|
-
if (!
|
|
664
|
-
throw new
|
|
663
|
+
if (!isDomainEventType2(envelope.type)) {
|
|
664
|
+
throw new EventsError2(`Event '${envelope.id}' has unknown event type.`);
|
|
665
665
|
}
|
|
666
|
-
if (
|
|
667
|
-
throw new
|
|
666
|
+
if (EVENT_DEFINITIONS2[envelope.type].topic !== envelope.topic) {
|
|
667
|
+
throw new EventsError2(`Event '${envelope.id}' topic '${envelope.topic}' does not match type '${envelope.type}'.`);
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
670
|
await this.ensureStream();
|
|
@@ -679,7 +679,7 @@ class DomainEventService {
|
|
|
679
679
|
}))
|
|
680
680
|
});
|
|
681
681
|
if (records.length !== envelopes.length) {
|
|
682
|
-
throw new
|
|
682
|
+
throw new EventsError2(`Broker returned ${records.length} record(s) for ${envelopes.length} published event(s).`);
|
|
683
683
|
}
|
|
684
684
|
return records.map(hydrateEventRecord);
|
|
685
685
|
}
|
|
@@ -715,14 +715,14 @@ class DomainEventService {
|
|
|
715
715
|
streamId: this.stream.id,
|
|
716
716
|
from: input.from,
|
|
717
717
|
afterCursor: input.afterCursor,
|
|
718
|
-
names: input.types && input.types.length > 0 ? input.types :
|
|
718
|
+
names: input.types && input.types.length > 0 ? input.types : EVENT_TYPES2
|
|
719
719
|
}, (records) => {
|
|
720
720
|
const events = records.map(hydrateEventRecord);
|
|
721
721
|
if (events.length === 0) {
|
|
722
722
|
return;
|
|
723
723
|
}
|
|
724
724
|
try {
|
|
725
|
-
handler(events);
|
|
725
|
+
return handler(events);
|
|
726
726
|
} catch {}
|
|
727
727
|
});
|
|
728
728
|
}
|
|
@@ -744,11 +744,11 @@ class DomainEventService {
|
|
|
744
744
|
return promise;
|
|
745
745
|
}
|
|
746
746
|
}
|
|
747
|
-
function
|
|
748
|
-
return new
|
|
747
|
+
function createDomainEventService2(options) {
|
|
748
|
+
return new DomainEventService2(options);
|
|
749
749
|
}
|
|
750
750
|
function toStoredEventPayload(params) {
|
|
751
|
-
const storage =
|
|
751
|
+
const storage = resolveEventStorage2(params.event);
|
|
752
752
|
const payload = {
|
|
753
753
|
id: randomUUID2(),
|
|
754
754
|
schemaVersion: 1,
|
|
@@ -768,23 +768,23 @@ function toStoredEventPayload(params) {
|
|
|
768
768
|
return payload;
|
|
769
769
|
}
|
|
770
770
|
function toBrokerRecordPayload(payload) {
|
|
771
|
-
const reason =
|
|
771
|
+
const reason = getInvalidJsonValueReason2(payload, `event '${payload.type}' payload`);
|
|
772
772
|
if (reason) {
|
|
773
|
-
throw new
|
|
773
|
+
throw new EventsError2(`Event '${payload.type}' cannot be stored in broker; ${reason}`);
|
|
774
774
|
}
|
|
775
775
|
return payload;
|
|
776
776
|
}
|
|
777
777
|
function hydrateEventRecord(record) {
|
|
778
778
|
const payload = record.payload;
|
|
779
779
|
if (!isObjectRecord(payload)) {
|
|
780
|
-
throw new
|
|
780
|
+
throw new EventsError2(`Broker record at cursor '${record.cursor}' is not an event object.`);
|
|
781
781
|
}
|
|
782
782
|
const eventType = payload.type;
|
|
783
|
-
if (typeof eventType !== "string" || !
|
|
784
|
-
throw new
|
|
783
|
+
if (typeof eventType !== "string" || !isDomainEventType2(eventType)) {
|
|
784
|
+
throw new EventsError2(`Broker record at cursor '${record.cursor}' has unknown event type.`);
|
|
785
785
|
}
|
|
786
786
|
if (record.name !== undefined && record.name !== eventType) {
|
|
787
|
-
throw new
|
|
787
|
+
throw new EventsError2(`Broker record name '${record.name}' does not match event type '${eventType}'.`);
|
|
788
788
|
}
|
|
789
789
|
return {
|
|
790
790
|
...payload,
|
|
@@ -792,9 +792,9 @@ function hydrateEventRecord(record) {
|
|
|
792
792
|
};
|
|
793
793
|
}
|
|
794
794
|
function resolveTypeFilter(input) {
|
|
795
|
-
const topicTypes = input.topics && input.topics.length > 0 ?
|
|
795
|
+
const topicTypes = input.topics && input.topics.length > 0 ? EVENT_TYPES2.filter((type) => input.topics?.includes(EVENT_DEFINITIONS2[type].topic)) : undefined;
|
|
796
796
|
if (!topicTypes) {
|
|
797
|
-
return input.types && input.types.length > 0 ? input.types :
|
|
797
|
+
return input.types && input.types.length > 0 ? input.types : EVENT_TYPES2;
|
|
798
798
|
}
|
|
799
799
|
if (!input.types || input.types.length === 0) {
|
|
800
800
|
return topicTypes;
|
|
@@ -812,7 +812,7 @@ function setIfDefined(target, key, value) {
|
|
|
812
812
|
}
|
|
813
813
|
// src/events/toStoredEvent.ts
|
|
814
814
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
815
|
-
function
|
|
815
|
+
function toStoredEvent2(params) {
|
|
816
816
|
const base = {
|
|
817
817
|
id: randomUUID3(),
|
|
818
818
|
schemaVersion: 1,
|
|
@@ -826,7 +826,7 @@ function toStoredEvent(params) {
|
|
|
826
826
|
metadata: params.event.metadata,
|
|
827
827
|
cursor: params.cursor
|
|
828
828
|
};
|
|
829
|
-
const storage =
|
|
829
|
+
const storage = resolveEventStorage2(params.event);
|
|
830
830
|
return {
|
|
831
831
|
...base,
|
|
832
832
|
type: params.event.type,
|
|
@@ -835,6 +835,6 @@ function toStoredEvent(params) {
|
|
|
835
835
|
payload: params.event.payload
|
|
836
836
|
};
|
|
837
837
|
}
|
|
838
|
-
export {
|
|
838
|
+
export { EventsError2, OBJECT_EVENT_DEFINITIONS2, TELEMETRY_EVENT_DEFINITIONS2, LINK_EVENT_DEFINITIONS2, ACTION_EVENT_DEFINITIONS2, SCHEDULE_EVENT_DEFINITIONS2, RULE_EVENT_DEFINITIONS2, SYNC_EVENT_DEFINITIONS2, PIPELINE_EVENT_DEFINITIONS2, WORKFLOW_EVENT_DEFINITIONS2, DATASET_EVENT_DEFINITIONS2, EVENT_DEFINITIONS2, EVENT_TYPES2, EVENT_TOPICS2, isDomainEventType2, isOntologyFactType2, resolveEventStorage2, OntologyOutboxDispatcher2, DEFAULT_EVENTS_RETENTION_MS2, EVENTS_STREAM2, DomainEventService2, createDomainEventService2, toStoredEvent2 };
|
|
839
839
|
|
|
840
|
-
//# debugId=
|
|
840
|
+
//# debugId=6DB9F008F37DD64564756E2164756E21
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"/**\n * Error for event runtime invariants and failures (e.g., unknown event\n * types encountered when converting new events to their stored form).\n */\nexport class EventsError extends Error {\n readonly name = \"EventsError\"\n}\n",
|
|
6
6
|
"import { EventsError } from \"./errors\"\nimport type { ActionEvent } from \"./types/actions\"\nimport type { DatasetEvent } from \"./types/datasets\"\nimport type { DomainEvent, DomainEventDraft } from \"./types/index\"\nimport type { LinkEvent } from \"./types/links\"\nimport type { ObjectEvent } from \"./types/objects\"\nimport type { PipelineEvent } from \"./types/pipelines\"\nimport type { RuleEvent } from \"./types/rules\"\nimport type { ScheduleEvent } from \"./types/schedules\"\nimport type { SyncEvent } from \"./types/syncs\"\nimport type { TelemetryEvent } from \"./types/telemetry\"\nimport type { WorkflowEvent } from \"./types/workflows\"\n\nexport type EventDefinition<Event extends DomainEvent = DomainEvent> = {\n readonly topic: Event[\"topic\"]\n readonly partitionKey: (payload: Event[\"payload\"]) => string\n}\n\nexport type EventDefinitionGroup<Event extends DomainEvent> = {\n readonly [Type in Event[\"type\"]]: EventDefinition<Extract<Event, { type: Type }>>\n}\n\nexport type EventDefinitionMap = {\n readonly [Type in DomainEvent[\"type\"]]: EventDefinition<Extract<DomainEvent, { type: Type }>>\n}\n\nfunction defineEventGroup<Event extends DomainEvent>(\n definitions: EventDefinitionGroup<Event>\n): EventDefinitionGroup<Event> {\n return definitions\n}\n\nexport const OBJECT_EVENT_DEFINITIONS = defineEventGroup<ObjectEvent>({\n \"object.created\": {\n topic: \"objects\",\n partitionKey: (payload) => `${payload.objectTypeId}:${payload.primaryId}`,\n },\n \"object.updated\": {\n topic: \"objects\",\n partitionKey: (payload) => `${payload.objectTypeId}:${payload.primaryId}`,\n },\n \"object.deleted\": {\n topic: \"objects\",\n partitionKey: (payload) => `${payload.objectTypeId}:${payload.primaryId}`,\n },\n})\n\nexport const TELEMETRY_EVENT_DEFINITIONS = defineEventGroup<TelemetryEvent>({\n \"telemetry.appended\": {\n topic: \"telemetry\",\n partitionKey: (payload) => `${payload.objectTypeId}:${payload.objectId}:${payload.propertyId}`,\n },\n})\n\nexport const LINK_EVENT_DEFINITIONS = defineEventGroup<LinkEvent>({\n \"link.created\": {\n topic: \"links\",\n partitionKey: (payload) => `${payload.sourceTypeId}:${payload.sourceId}:${payload.linkId}`,\n },\n \"link.updated\": {\n topic: \"links\",\n partitionKey: (payload) => `${payload.sourceTypeId}:${payload.sourceId}:${payload.linkId}`,\n },\n \"link.deleted\": {\n topic: \"links\",\n partitionKey: (payload) => `${payload.sourceTypeId}:${payload.sourceId}:${payload.linkId}`,\n },\n})\n\nexport const ACTION_EVENT_DEFINITIONS = defineEventGroup<ActionEvent>({\n \"action.requested\": {\n topic: \"actions\",\n partitionKey: (payload) => payload.actionId,\n },\n \"action.completed\": {\n topic: \"actions\",\n partitionKey: (payload) => payload.actionId,\n },\n \"action.failed\": {\n topic: \"actions\",\n partitionKey: (payload) => payload.actionId,\n },\n})\n\nexport const SCHEDULE_EVENT_DEFINITIONS = defineEventGroup<ScheduleEvent>({\n \"schedule.triggered\": {\n topic: \"schedules\",\n partitionKey: (payload) => payload.scheduleId,\n },\n})\n\nexport const RULE_EVENT_DEFINITIONS = defineEventGroup<RuleEvent>({\n \"rule.triggered\": {\n topic: \"rules\",\n partitionKey: (payload) =>\n `${payload.ruleId}:${payload.subject.objectTypeId}:${payload.subject.primaryId}`,\n },\n \"rule.resolved\": {\n topic: \"rules\",\n partitionKey: (payload) =>\n `${payload.ruleId}:${payload.subject.objectTypeId}:${payload.subject.primaryId}`,\n },\n})\n\nexport const SYNC_EVENT_DEFINITIONS = defineEventGroup<SyncEvent>({\n \"sync.run.started\": {\n topic: \"syncs\",\n partitionKey: (payload) => `${payload.syncId}:${payload.runId}`,\n },\n \"sync.run.finished\": {\n topic: \"syncs\",\n partitionKey: (payload) => `${payload.syncId}:${payload.runId}`,\n },\n})\n\nexport const PIPELINE_EVENT_DEFINITIONS = defineEventGroup<PipelineEvent>({\n \"pipeline.run.started\": {\n topic: \"pipelines\",\n partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`,\n },\n \"pipeline.run.step.started\": {\n topic: \"pipelines\",\n partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`,\n },\n \"pipeline.run.step.finished\": {\n topic: \"pipelines\",\n partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`,\n },\n \"pipeline.run.finished\": {\n topic: \"pipelines\",\n partitionKey: (payload) => `${payload.pipelineId}:${payload.runId}`,\n },\n})\n\nexport const WORKFLOW_EVENT_DEFINITIONS = defineEventGroup<WorkflowEvent>({\n \"workflow.run.queued\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.started\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.node.started\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.waiting\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.node.waiting\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.node.finished\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.run.finished\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.intervention.requested\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.intervention.submitted\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.intervention.cancelled\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n \"workflow.intervention.expired\": {\n topic: \"workflows\",\n partitionKey: (payload) => `${payload.workflowId}:${payload.runId}`,\n },\n})\n\nexport const DATASET_EVENT_DEFINITIONS = defineEventGroup<DatasetEvent>({\n \"dataset.version.committed\": {\n topic: \"datasets\",\n partitionKey: (payload) => payload.datasetId,\n },\n})\n\nexport const EVENT_DEFINITIONS = {\n ...OBJECT_EVENT_DEFINITIONS,\n ...TELEMETRY_EVENT_DEFINITIONS,\n ...LINK_EVENT_DEFINITIONS,\n ...ACTION_EVENT_DEFINITIONS,\n ...SCHEDULE_EVENT_DEFINITIONS,\n ...SYNC_EVENT_DEFINITIONS,\n ...PIPELINE_EVENT_DEFINITIONS,\n ...WORKFLOW_EVENT_DEFINITIONS,\n ...DATASET_EVENT_DEFINITIONS,\n ...RULE_EVENT_DEFINITIONS,\n} as const satisfies EventDefinitionMap\n\nexport const EVENT_TYPES = Object.keys(EVENT_DEFINITIONS) as readonly DomainEvent[\"type\"][]\nexport const EVENT_TOPICS = [\n ...new Set(\n Object.values(EVENT_DEFINITIONS).map((definition): DomainEvent[\"topic\"] => definition.topic)\n ),\n] as readonly DomainEvent[\"topic\"][]\n\nexport function isDomainEventType(value: string): value is DomainEvent[\"type\"] {\n return Object.hasOwn(EVENT_DEFINITIONS, value)\n}\n\nexport function isOntologyFactType(\n value: string\n): value is ObjectEvent[\"type\"] | LinkEvent[\"type\"] | TelemetryEvent[\"type\"] {\n return (\n Object.hasOwn(OBJECT_EVENT_DEFINITIONS, value) ||\n Object.hasOwn(LINK_EVENT_DEFINITIONS, value) ||\n Object.hasOwn(TELEMETRY_EVENT_DEFINITIONS, value)\n )\n}\n\nexport function resolveEventStorage(event: DomainEventDraft): {\n readonly topic: DomainEvent[\"topic\"]\n readonly partitionKey: string\n} {\n const eventType = event.type as string\n if (!isDomainEventType(eventType)) {\n throw new EventsError(`Unknown event type: ${eventType}`)\n }\n\n const definition = EVENT_DEFINITIONS[eventType] as EventDefinition\n return {\n topic: definition.topic,\n partitionKey: definition.partitionKey(event.payload),\n }\n}\n",
|
|
7
7
|
"import { randomUUID } from \"node:crypto\"\nimport { createSixbError, serializeSixbFailure, toSixbFailure } from \"../errors/internal\"\nimport type {\n ClaimedOntologyOutboxRow,\n OntologyOutboxFailure,\n OntologyOutboxStorage,\n Storage,\n} from \"../storage\"\nimport { ONTOLOGY_OUTBOX_FAILURE_CODES } from \"../storage/ontology/outbox\"\nimport type { StableEventPublisher } from \"./service\"\n\nconst DEFAULT_BATCH_SIZE = 1_000\nconst DEFAULT_LEASE_DURATION_MS = 30_000\nconst DEFAULT_INITIAL_RETRY_DELAY_MS = 1_000\nconst DEFAULT_MAX_RETRY_DELAY_MS = 5 * 60_000\nconst DEFAULT_RETRY_JITTER_RATIO = 0.2\n// Isolating one poison row from a 1,000-row batch needs up to 21 broker calls: one failed call\n// and, at each split depth, one healthy sibling plus the failing half. Keep bounded headroom for\n// uneven splits while rescheduling unresolved groups once this pass reaches the cap.\nconst DEFAULT_MAX_ISOLATION_ATTEMPTS = 32\nconst DEFAULT_MAX_CLAIMS_PER_DRAIN = 10\nconst DEFAULT_SHUTDOWN_TIMEOUT_MS = 30_000\n\nexport interface OntologyOutboxDeliveryFailure {\n readonly occurredAt: string\n /** Exact failure persisted on every envelope represented by this report. */\n readonly failure: OntologyOutboxFailure\n readonly attempts: number\n readonly eventIds: readonly string[]\n /** Types of the undelivered envelopes. The one field both delivery paths can always report. */\n readonly eventTypes: readonly string[]\n}\n\nexport interface OntologyOutboxDispatcherOptions {\n readonly projectId: string\n readonly storage: Storage\n /** Internal publisher port. It cannot author or mutate persisted ontology facts. */\n readonly events: StableEventPublisher\n readonly batchSize?: number\n readonly leaseDurationMs?: number\n readonly initialRetryDelayMs?: number\n readonly maxRetryDelayMs?: number\n /** Symmetric jitter ratio in the inclusive range 0..1. */\n readonly retryJitterRatio?: number\n /** Maximum broker calls used to isolate poison envelopes in one claimed batch. */\n readonly maxIsolationAttempts?: number\n /** Maximum claimed batches handled by one drain pass. */\n readonly maxClaimsPerDrain?: number\n readonly shutdownTimeoutMs?: number\n readonly now?: () => Date\n readonly random?: () => number\n readonly createLeaseId?: () => string\n readonly onDeliveryFailure?: (error: unknown, failure: OntologyOutboxDeliveryFailure) => void\n readonly onError?: (error: unknown) => void\n}\n\n/**\n * One claimed batch whose unsettled rows remain recoverable during shutdown.\n *\n * Rows leave the set immediately before their lease is settled in storage. If storage settlement\n * itself fails, lease expiry remains the durable recovery path.\n */\nclass ClaimedBatch {\n private readonly unsettled = new Map<string, ClaimedOntologyOutboxRow>()\n private closed = false\n\n constructor(rows: readonly ClaimedOntologyOutboxRow[]) {\n for (const row of rows) this.unsettled.set(row.envelope.id, row)\n }\n\n take(rows: readonly ClaimedOntologyOutboxRow[]): readonly ClaimedOntologyOutboxRow[] {\n if (this.closed || rows.some((row) => !this.unsettled.has(row.envelope.id))) return []\n for (const row of rows) this.unsettled.delete(row.envelope.id)\n return rows\n }\n\n close(): readonly ClaimedOntologyOutboxRow[] {\n this.closed = true\n const rows = [...this.unsettled.values()]\n this.unsettled.clear()\n return rows\n }\n}\n\n/** Lease-based, at-least-once publisher for the authoritative ontology outbox. */\nexport class OntologyOutboxDispatcher {\n private readonly projectId: string\n private readonly storage: Storage\n private readonly events: StableEventPublisher\n private readonly batchSize: number\n private readonly leaseDurationMs: number\n private readonly initialRetryDelayMs: number\n private readonly maxRetryDelayMs: number\n private readonly retryJitterRatio: number\n private readonly maxIsolationAttempts: number\n private readonly maxClaimsPerDrain: number\n private readonly shutdownTimeoutMs: number\n private readonly now: () => Date\n private readonly random: () => number\n private readonly createLeaseId: () => string\n private readonly onDeliveryFailure?: OntologyOutboxDispatcherOptions[\"onDeliveryFailure\"]\n private readonly onError: (error: unknown) => void\n private readonly inFlight = new Set<ClaimedBatch>()\n private draining: Promise<void> | null = null\n private pendingDrain: Promise<void> | null = null\n private stopping: Promise<void> | null = null\n private stopRequested = false\n private readonly forcedStop = new AbortController()\n\n constructor(options: OntologyOutboxDispatcherOptions) {\n assertNonblank(options.projectId, \"projectId\")\n this.projectId = options.projectId\n this.storage = options.storage\n this.events = options.events\n this.batchSize = positiveInteger(options.batchSize ?? DEFAULT_BATCH_SIZE, \"batchSize\")\n this.leaseDurationMs = positiveInteger(\n options.leaseDurationMs ?? DEFAULT_LEASE_DURATION_MS,\n \"leaseDurationMs\"\n )\n this.initialRetryDelayMs = positiveInteger(\n options.initialRetryDelayMs ?? DEFAULT_INITIAL_RETRY_DELAY_MS,\n \"initialRetryDelayMs\"\n )\n this.maxRetryDelayMs = positiveInteger(\n options.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS,\n \"maxRetryDelayMs\"\n )\n if (this.maxRetryDelayMs < this.initialRetryDelayMs) {\n throw new Error(\n \"[Sixb] Ontology outbox dispatcher maxRetryDelayMs must be at least initialRetryDelayMs.\"\n )\n }\n this.retryJitterRatio = options.retryJitterRatio ?? DEFAULT_RETRY_JITTER_RATIO\n if (\n !Number.isFinite(this.retryJitterRatio) ||\n this.retryJitterRatio < 0 ||\n this.retryJitterRatio > 1\n ) {\n throw new Error(\"[Sixb] Ontology outbox dispatcher retryJitterRatio must be between 0 and 1.\")\n }\n this.maxIsolationAttempts = positiveInteger(\n options.maxIsolationAttempts ?? DEFAULT_MAX_ISOLATION_ATTEMPTS,\n \"maxIsolationAttempts\"\n )\n this.maxClaimsPerDrain = positiveInteger(\n options.maxClaimsPerDrain ?? DEFAULT_MAX_CLAIMS_PER_DRAIN,\n \"maxClaimsPerDrain\"\n )\n this.shutdownTimeoutMs = nonnegativeInteger(\n options.shutdownTimeoutMs ?? DEFAULT_SHUTDOWN_TIMEOUT_MS,\n \"shutdownTimeoutMs\"\n )\n this.now = options.now ?? (() => new Date())\n this.random = options.random ?? Math.random\n this.createLeaseId = options.createLeaseId ?? randomUUID\n this.onDeliveryFailure = options.onDeliveryFailure\n this.onError =\n options.onError ?? ((error) => console.error(\"[Sixb] Outbox dispatcher error:\", error))\n }\n\n /**\n * Publishes one bounded pass of currently due rows without starting an idle polling loop.\n *\n * Concurrent callers share one pass and at most one coalesced follow-up pass. This gives every\n * post-commit notification a chance to observe its own rows without serializing one pass per\n * mutation.\n */\n drain(): Promise<void> {\n if (this.stopRequested) return Promise.resolve()\n if (!this.draining) return this.startDrainPass()\n\n this.pendingDrain ??= settled(this.draining).then(() => {\n this.pendingDrain = null\n if (!this.stopRequested) return this.startDrainPass()\n })\n return this.pendingDrain\n }\n\n /** Starts a tracked, best-effort drain without extending mutation latency. */\n notify(): void {\n if (this.stopRequested) return\n void this.drain().catch((error) => this.reportError(error))\n }\n\n stop(): Promise<void> {\n this.stopping ??= this.stopOnce()\n return this.stopping\n }\n\n private async stopOnce(): Promise<void> {\n if (this.stopRequested) return\n\n // Include one final bounded pass so commits whose notifications were coalesced immediately\n // before shutdown are not left pending merely because the process is stopping.\n const gracefulDrain = this.drain().catch((error) => this.reportError(error))\n if (await settlesWithin(gracefulDrain, this.shutdownTimeoutMs)) {\n this.stopRequested = true\n return\n }\n\n this.stopRequested = true\n this.forcedStop.abort()\n await settlesWithin(\n this.rescheduleUnsettledForShutdown(),\n Math.min(this.shutdownTimeoutMs, 1_000)\n )\n this.draining = null\n this.pendingDrain = null\n }\n\n private startDrainPass(): Promise<void> {\n const pass = this.drainAvailable()\n this.draining = pass\n void settled(pass).then(() => {\n if (this.draining === pass) this.draining = null\n })\n return pass\n }\n\n private async drainAvailable(): Promise<void> {\n for (let claimCount = 0; claimCount < this.maxClaimsPerDrain; claimCount += 1) {\n if (this.stopRequested) return\n const rows = await this.claimBatch()\n if (rows.length === 0) return\n const publishedCount = await this.publishClaim(rows)\n if (this.stopRequested || publishedCount === 0 || rows.length < this.batchSize) return\n }\n\n // A healthy full slice means more due rows may remain. Reuse the existing coalescing path so\n // catch-up continues without recursion, an idle polling loop, or an unbounded individual pass.\n if (!this.stopRequested) this.notify()\n }\n\n private claimBatch(): Promise<readonly ClaimedOntologyOutboxRow[]> {\n const now = this.now().getTime()\n return this.withOutbox((outbox) =>\n outbox.claim({\n projectId: this.projectId,\n now: new Date(now).toISOString(),\n limit: this.batchSize,\n leaseId: this.createLeaseId(),\n leaseExpiresAt: new Date(now + this.leaseDurationMs).toISOString(),\n })\n )\n }\n\n private async publishClaim(rows: readonly ClaimedOntologyOutboxRow[]): Promise<number> {\n const claim = new ClaimedBatch(rows)\n const failures = new DeliveryFailureAccumulator()\n this.inFlight.add(claim)\n const pending: PublicationGroup[] = [{ rows }]\n let publishAttempts = 0\n let publishedCount = 0\n\n try {\n while (pending.length > 0 && !this.stopRequested) {\n const group = pending.shift()\n if (!group || group.rows.length === 0) continue\n if (publishAttempts >= this.maxIsolationAttempts && group.failure) {\n await this.rescheduleFailed(claim, group.rows, group.failure.error, failures)\n continue\n }\n publishAttempts += 1\n\n try {\n const publication = await publishUntilStopped(\n this.events.publishEnvelopes(group.rows.map((row) => row.envelope)),\n this.forcedStop.signal\n )\n if (publication === \"stopped\") break\n } catch (error) {\n if (group.rows.length > 1 && publishAttempts < this.maxIsolationAttempts) {\n const middle = Math.ceil(group.rows.length / 2)\n pending.unshift(\n { rows: group.rows.slice(middle), failure: { error } },\n { rows: group.rows.slice(0, middle), failure: { error } }\n )\n continue\n }\n await this.rescheduleFailed(claim, group.rows, error, failures)\n continue\n }\n\n await this.markPublished(claim, group.rows)\n publishedCount += group.rows.length\n }\n } finally {\n if (this.stopRequested) {\n await this.rescheduleClaimedForShutdown(claim.close())\n }\n this.inFlight.delete(claim)\n for (const failure of failures.list()) {\n this.reportDeliveryFailure(failure.error, failure.context)\n }\n }\n return publishedCount\n }\n\n private async markPublished(\n claim: ClaimedBatch,\n rows: readonly ClaimedOntologyOutboxRow[]\n ): Promise<void> {\n const settling = claim.take(rows)\n if (settling.length === 0) return\n try {\n await this.withOutbox((outbox) =>\n outbox.markPublished({\n projectId: this.projectId,\n ids: eventIds(settling),\n leaseId: sharedLeaseId(settling),\n publishedAt: this.now().toISOString(),\n })\n )\n } catch (error) {\n this.reportError(error)\n throw error\n }\n }\n\n private async rescheduleFailed(\n claim: ClaimedBatch,\n rows: readonly ClaimedOntologyOutboxRow[],\n error: unknown,\n failures: DeliveryFailureAccumulator\n ): Promise<void> {\n const settling = claim.take(rows)\n if (settling.length === 0) return\n const failedAt = this.now()\n\n for (const [attempts, attemptRows] of rowsByAttempts(settling)) {\n const deliveryError = createEventDeliveryError(error, attempts)\n const failure = toSixbFailure(deliveryError, {\n allowedCodes: ONTOLOGY_OUTBOX_FAILURE_CODES,\n at: failedAt,\n })\n failures.add(deliveryError, failure, failedAt.toISOString(), attempts, attemptRows)\n try {\n await this.withOutbox((outbox) =>\n outbox.reschedule({\n projectId: this.projectId,\n ids: eventIds(attemptRows),\n leaseId: sharedLeaseId(attemptRows),\n availableAt: new Date(failedAt.getTime() + this.retryDelayMs(attempts)).toISOString(),\n failure,\n })\n )\n } catch (rescheduleError) {\n this.reportError(rescheduleError)\n throw rescheduleError\n }\n }\n }\n\n private retryDelayMs(attempts: number): number {\n const exponent = Math.max(0, Math.min(52, attempts - 1))\n const exponential = Math.min(this.maxRetryDelayMs, this.initialRetryDelayMs * 2 ** exponent)\n const random = this.random()\n const unitRandom = Number.isFinite(random) ? Math.max(0, Math.min(1, random)) : 0.5\n const jitterFactor = 1 - this.retryJitterRatio + 2 * this.retryJitterRatio * unitRandom\n return Math.min(this.maxRetryDelayMs, Math.max(0, Math.round(exponential * jitterFactor)))\n }\n\n private async rescheduleClaimedForShutdown(\n rows: readonly ClaimedOntologyOutboxRow[]\n ): Promise<void> {\n if (rows.length === 0) return\n try {\n await this.withOutbox((outbox) =>\n outbox.reschedule({\n projectId: this.projectId,\n ids: eventIds(rows),\n leaseId: sharedLeaseId(rows),\n availableAt: this.now().toISOString(),\n })\n )\n } catch (error) {\n this.reportError(error)\n }\n }\n\n private async rescheduleUnsettledForShutdown(): Promise<void> {\n for (const claim of [...this.inFlight]) {\n await this.rescheduleClaimedForShutdown(claim.close())\n this.inFlight.delete(claim)\n }\n }\n\n private withOutbox<T>(run: (outbox: OntologyOutboxStorage) => Promise<T> | T): Promise<T> {\n return this.storage.transaction((tx) => run(tx.ontology.outbox))\n }\n\n private reportDeliveryFailure(error: unknown, failure: OntologyOutboxDeliveryFailure): void {\n try {\n this.onDeliveryFailure?.(error, failure)\n } catch {\n // Failure observers cannot stop delivery or create an unhandled rejection.\n }\n }\n\n private reportError(error: unknown): void {\n try {\n this.onError(error)\n } catch {\n // Error observers cannot stop delivery or create an unhandled rejection.\n }\n }\n}\n\ninterface PublicationGroup {\n readonly rows: readonly ClaimedOntologyOutboxRow[]\n readonly failure?: { readonly error: unknown }\n}\n\ninterface AccumulatedDeliveryFailure {\n readonly error: unknown\n readonly context: OntologyOutboxDeliveryFailure\n}\n\n/** Coalesces bisection failures so one claimed row is reported once per delivery attempt. */\nclass DeliveryFailureAccumulator {\n private readonly groups = new Map<\n string,\n {\n error: unknown\n failure: OntologyOutboxFailure\n occurredAt: string\n attempts: number\n eventIds: Set<string>\n eventTypes: Set<string>\n }\n >()\n\n add(\n error: unknown,\n failure: OntologyOutboxFailure,\n occurredAt: string,\n attempts: number,\n rows: readonly ClaimedOntologyOutboxRow[]\n ): void {\n const key = serializeSixbFailure(failure, ONTOLOGY_OUTBOX_FAILURE_CODES)\n const group = this.groups.get(key) ?? {\n error,\n failure,\n occurredAt,\n attempts,\n eventIds: new Set<string>(),\n eventTypes: new Set<string>(),\n }\n for (const row of rows) {\n group.eventIds.add(row.envelope.id)\n group.eventTypes.add(row.envelope.type)\n }\n this.groups.set(key, group)\n }\n\n list(): readonly AccumulatedDeliveryFailure[] {\n return [...this.groups.values()].map((group) => ({\n error: group.error,\n context: {\n occurredAt: group.occurredAt,\n failure: group.failure,\n attempts: group.attempts,\n eventIds: [...group.eventIds].sort(),\n eventTypes: [...group.eventTypes].sort(),\n },\n }))\n }\n}\n\nfunction positiveInteger(value: number, name: string): number {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`[Sixb] Ontology outbox dispatcher ${name} must be a positive integer.`)\n }\n return value\n}\n\nfunction nonnegativeInteger(value: number, name: string): number {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`[Sixb] Ontology outbox dispatcher ${name} must be a nonnegative integer.`)\n }\n return value\n}\n\nfunction assertNonblank(value: string, name: string): void {\n if (value.trim().length === 0) {\n throw new Error(`[Sixb] Ontology outbox dispatcher ${name} must not be blank.`)\n }\n}\n\nfunction rowsByAttempts(\n rows: readonly ClaimedOntologyOutboxRow[]\n): ReadonlyMap<number, readonly ClaimedOntologyOutboxRow[]> {\n const groups = new Map<number, ClaimedOntologyOutboxRow[]>()\n for (const row of rows) {\n const group = groups.get(row.attempts) ?? []\n group.push(row)\n groups.set(row.attempts, group)\n }\n return groups\n}\n\nfunction eventIds(rows: readonly ClaimedOntologyOutboxRow[]): string[] {\n return rows.map((row) => row.envelope.id)\n}\n\nfunction sharedLeaseId(rows: readonly ClaimedOntologyOutboxRow[]): string {\n const leaseId = rows[0]?.leaseId\n if (!leaseId || rows.some((row) => row.leaseId !== leaseId)) {\n throw new Error(\"[Sixb] Claimed ontology outbox batch does not share one lease.\")\n }\n return leaseId\n}\n\nfunction createEventDeliveryError(cause: unknown, attempts: number) {\n return createSixbError(\n \"event.delivery_failed\",\n \"[Sixb] Could not deliver persisted ontology events.\",\n {\n cause,\n details: {\n attempts,\n },\n }\n )\n}\n\nasync function publishUntilStopped(\n publication: Promise<unknown>,\n signal: AbortSignal\n): Promise<\"published\" | \"stopped\"> {\n if (signal.aborted) return \"stopped\"\n\n return new Promise((resolve, reject) => {\n const stop = () => finish(() => resolve(\"stopped\"))\n const finish = (settle: () => void) => {\n signal.removeEventListener(\"abort\", stop)\n settle()\n }\n signal.addEventListener(\"abort\", stop, { once: true })\n void publication.then(\n () => finish(() => resolve(\"published\")),\n (error) => finish(() => reject(error))\n )\n })\n}\n\n/** Awaits a pass without adopting its failure, so one failed drain cannot reject the next. */\nfunction settled(promise: Promise<void>): Promise<void> {\n return promise.then(\n () => undefined,\n () => undefined\n )\n}\n\nasync function settlesWithin(promise: Promise<void>, timeoutMs: number): Promise<boolean> {\n let timer: ReturnType<typeof setTimeout> | undefined\n const timedOut = new Promise<false>((resolve) => {\n timer = setTimeout(() => resolve(false), timeoutMs)\n })\n const result = await Promise.race([\n promise.then(\n () => true as const,\n () => true as const\n ),\n timedOut,\n ])\n if (timer !== undefined) clearTimeout(timer)\n return result\n}\n",
|
|
8
|
-
"import { randomUUID } from \"node:crypto\"\nimport type { Broker, BrokerCursor, BrokerRecord, BrokerStreamDefinition } from \"../broker\"\nimport { type ErrorReporter, SixbErrorReporter } from \"../error-reporting/reporter\"\nimport { reportEventDeliveryFailure } from \"../error-reporting/reports\"\nimport { getInvalidJsonValueReason, type JsonValue } from \"../json\"\nimport type { OntologyMaterializationEvent } from \"../materialization/events\"\nimport {\n EVENT_DEFINITIONS,\n EVENT_TYPES,\n isDomainEventType,\n isOntologyFactType,\n resolveEventStorage,\n} from \"./definitions\"\nimport { EventsError } from \"./errors\"\nimport type {\n DomainEvent,\n EventActor,\n EventDraft,\n StoredAuthorableEvent,\n StoredDomainEvent,\n} from \"./types\"\n\n// Keep domain events as a short recent log. This is 2 days in milliseconds.\nexport const DEFAULT_EVENTS_RETENTION_MS = 2 * 24 * 60 * 60 * 1000\n\nexport const EVENTS_STREAM: BrokerStreamDefinition = {\n id: \"__events\",\n retention: { maxAgeMs: DEFAULT_EVENTS_RETENTION_MS },\n}\n\nexport interface DomainEventServiceOptions {\n readonly projectId: string\n readonly broker: Broker\n readonly stream?: BrokerStreamDefinition\n /** Internal failure reporter. Defaults to the console when this runtime is used standalone. */\n readonly errorReporter?: ErrorReporter\n}\n\nexport interface EventsAppendInput {\n readonly actor?: EventActor\n readonly correlationId?: string\n readonly causationId?: string\n readonly events: readonly EventDraft[]\n}\n\nexport interface EventsEmitOptions {\n /** Framework component that initiated the emission, such as `SixbPipelineWorker`. */\n readonly source: string\n}\n\nexport interface EventsReadInput {\n readonly afterCursor?: string\n readonly limit?: number\n readonly topics?: readonly DomainEvent[\"topic\"][]\n readonly types?: readonly DomainEvent[\"type\"][]\n}\n\nexport interface EventsSubscribeInput {\n /** Defaults to live-only delivery. `afterCursor` takes precedence when provided. */\n readonly from?: \"latest\" | \"earliest\"\n readonly afterCursor?: BrokerCursor\n readonly types?: readonly DomainEvent[\"type\"][]\n}\n\n/** Exact, already-identified materialization event persisted before broker publication. @internal */\nexport type StableEventEnvelope = OntologyMaterializationEvent\n\n/** Public domain-event log. Stable ontology envelopes are intentionally absent. */\nexport interface DomainEventLog {\n append(input: EventsAppendInput): Promise<readonly StoredDomainEvent[]>\n /**\n * Append events after the work that produced them has already succeeded.\n *\n * Contract: this never rejects. The caller's unit of work is done, so a delivery failure must not\n * turn a successful run into a failed one — the implementation escalates the loss instead.\n */\n emit(input: EventsAppendInput, options: EventsEmitOptions): Promise<void>\n read(input?: EventsReadInput): Promise<readonly StoredDomainEvent[]>\n latestCursor(): Promise<string | undefined>\n subscribe(\n input: EventsSubscribeInput,\n handler: (events: readonly StoredDomainEvent[]) => void\n ): Promise<() => void>\n}\n\n/** Narrow internal port used to publish envelopes already persisted in the ontology outbox. */\nexport interface StableEventPublisher {\n publishEnvelopes(envelopes: readonly StableEventEnvelope[]): Promise<readonly StoredDomainEvent[]>\n}\n\n/** Project-scoped domain event service backed by the shared broker provider. */\nexport class DomainEventService implements DomainEventLog, StableEventPublisher {\n private readonly projectId: string\n private readonly broker: Broker\n private readonly stream: BrokerStreamDefinition\n private readonly errorReporter: ErrorReporter\n private readonly ensureStreamPromises = new Map<string, Promise<void>>()\n\n constructor(options: DomainEventServiceOptions) {\n this.projectId = options.projectId\n this.broker = options.broker\n this.stream = options.stream ?? EVENTS_STREAM\n this.errorReporter = options.errorReporter ?? new SixbErrorReporter()\n }\n\n /**\n * Append events after the work that produced them has already succeeded.\n *\n * Unlike `append`, this never rejects: the caller's unit of work is done, so a broker outage must not\n * turn a successful run into a failed one. It is not a swallow either — every event Sixb publishes is\n * a potential trigger edge (a rule's `.when()`, an event schedule, a workflow's wait node), so a lost\n * batch is a handler that silently never runs. The loss is escalated to `onError` as\n * `event.delivery.failed`, or to the default console reporter when no handler was configured.\n *\n * Framework emit sites want this. Application code wants `append`, which reports failure to the\n * caller and returns the stored envelopes.\n */\n async emit(input: EventsAppendInput, _options: EventsEmitOptions): Promise<void> {\n try {\n await this.append(input)\n } catch (error) {\n try {\n const eventTypes = input.events.map((event) => event.type)\n reportEventDeliveryFailure(this.errorReporter, error, {\n projectId: this.projectId,\n eventTypes,\n })\n } catch {\n // The contract above is absolute, so escalation cannot be the thing that breaks it.\n }\n }\n }\n\n async append(input: EventsAppendInput): Promise<readonly StoredDomainEvent[]> {\n if (input.events.length === 0) {\n return []\n }\n for (const event of input.events) {\n if (isOntologyFactType(event.type)) {\n throw new EventsError(\n `Event type '${event.type}' is an authoritative ontology fact and cannot be appended directly.`\n )\n }\n }\n\n const payloads = input.events.map((event) =>\n toStoredEventPayload({\n projectId: this.projectId,\n actor: input.actor,\n correlationId: input.correlationId,\n causationId: input.causationId,\n event,\n })\n )\n\n await this.ensureStream()\n const records = await this.broker.append({\n projectId: this.projectId,\n streamId: this.stream.id,\n records: payloads.map((payload) => ({\n name: payload.type,\n key: payload.partitionKey,\n payload: toBrokerRecordPayload(payload),\n idempotencyKey: payload.idempotencyKey,\n })),\n })\n\n if (records.length !== payloads.length) {\n throw new EventsError(\n `Broker returned ${records.length} record(s) for ${payloads.length} appended event(s).`\n )\n }\n\n return records.map(hydrateEventRecord)\n }\n\n /** Publishes persisted envelopes without changing their stable event identity. @internal */\n async publishEnvelopes(\n envelopes: readonly StableEventEnvelope[]\n ): Promise<readonly StoredDomainEvent[]> {\n if (envelopes.length === 0) {\n return []\n }\n\n for (const envelope of envelopes) {\n if (envelope.projectId !== this.projectId) {\n throw new EventsError(\n `Event '${envelope.id}' belongs to project '${envelope.projectId}', not '${this.projectId}'.`\n )\n }\n if (!isDomainEventType(envelope.type)) {\n throw new EventsError(`Event '${envelope.id}' has unknown event type.`)\n }\n if (EVENT_DEFINITIONS[envelope.type].topic !== envelope.topic) {\n throw new EventsError(\n `Event '${envelope.id}' topic '${envelope.topic}' does not match type '${envelope.type}'.`\n )\n }\n }\n\n await this.ensureStream()\n const records = await this.broker.append({\n projectId: this.projectId,\n streamId: this.stream.id,\n records: envelopes.map((envelope) => ({\n name: envelope.type,\n key: envelope.partitionKey,\n payload: toBrokerRecordPayload(envelope),\n idempotencyKey: envelope.id,\n })),\n })\n\n if (records.length !== envelopes.length) {\n throw new EventsError(\n `Broker returned ${records.length} record(s) for ${envelopes.length} published event(s).`\n )\n }\n\n return records.map(hydrateEventRecord)\n }\n\n async read(input: EventsReadInput = {}): Promise<readonly StoredDomainEvent[]> {\n if (input.limit !== undefined && input.limit <= 0) {\n return []\n }\n\n const names = resolveTypeFilter(input)\n if (names && names.length === 0) {\n return []\n }\n\n await this.ensureStream()\n const page = await this.broker.read({\n projectId: this.projectId,\n streamId: this.stream.id,\n afterCursor: input.afterCursor,\n limit: input.limit,\n names,\n })\n\n return page.records.map(hydrateEventRecord)\n }\n\n async latestCursor(): Promise<string | undefined> {\n await this.ensureStream()\n return this.broker.latestCursor({\n projectId: this.projectId,\n streamId: this.stream.id,\n })\n }\n\n async subscribe(\n input: EventsSubscribeInput,\n handler: (events: readonly StoredDomainEvent[]) => void\n ): Promise<() => void> {\n await this.ensureStream()\n return this.broker.subscribe(\n {\n projectId: this.projectId,\n streamId: this.stream.id,\n from: input.from,\n afterCursor: input.afterCursor,\n names: input.types && input.types.length > 0 ? input.types : EVENT_TYPES,\n },\n (records) => {\n const events = records.map(hydrateEventRecord)\n if (events.length === 0) {\n return\n }\n\n try {\n handler(events)\n } catch {\n // Preserve fire-and-forget subscriber semantics.\n }\n }\n )\n }\n\n private ensureStream(): Promise<void> {\n const key = `${this.projectId}\\0${this.stream.id}`\n let promise = this.ensureStreamPromises.get(key)\n if (!promise) {\n promise = this.broker\n .ensureStream({\n projectId: this.projectId,\n stream: this.stream,\n })\n .catch((error) => {\n if (this.ensureStreamPromises.get(key) === promise) {\n this.ensureStreamPromises.delete(key)\n }\n throw error\n })\n this.ensureStreamPromises.set(key, promise)\n }\n return promise\n }\n}\n\nexport function createDomainEventService(options: DomainEventServiceOptions): DomainEventService {\n return new DomainEventService(options)\n}\n\ntype StoredEventPayload = Omit<StoredAuthorableEvent, \"cursor\">\n\nfunction toStoredEventPayload(params: {\n projectId: string\n actor?: EventActor\n correlationId?: string\n causationId?: string\n event: EventDraft\n}): StoredEventPayload {\n const storage = resolveEventStorage(params.event)\n const payload: Record<string, unknown> = {\n id: randomUUID(),\n schemaVersion: 1,\n projectId: params.projectId,\n occurredAt: params.event.occurredAt ?? new Date().toISOString(),\n type: params.event.type,\n topic: storage.topic,\n partitionKey: storage.partitionKey,\n payload: params.event.payload,\n }\n\n setIfDefined(payload, \"correlationId\", params.correlationId)\n setIfDefined(payload, \"causationId\", params.causationId)\n setIfDefined(payload, \"idempotencyKey\", params.event.idempotencyKey)\n setIfDefined(payload, \"actor\", params.actor)\n setIfDefined(payload, \"origin\", params.event.origin)\n setIfDefined(payload, \"metadata\", params.event.metadata)\n\n return payload as StoredEventPayload\n}\n\nfunction toBrokerRecordPayload(payload: StoredEventPayload | StableEventEnvelope): JsonValue {\n const reason = getInvalidJsonValueReason(payload, `event '${payload.type}' payload`)\n if (reason) {\n throw new EventsError(`Event '${payload.type}' cannot be stored in broker; ${reason}`)\n }\n\n return payload as unknown as JsonValue\n}\n\nfunction hydrateEventRecord(record: BrokerRecord): StoredDomainEvent {\n const payload = record.payload\n if (!isObjectRecord(payload)) {\n throw new EventsError(`Broker record at cursor '${record.cursor}' is not an event object.`)\n }\n\n const eventType = payload.type\n if (typeof eventType !== \"string\" || !isDomainEventType(eventType)) {\n throw new EventsError(`Broker record at cursor '${record.cursor}' has unknown event type.`)\n }\n\n if (record.name !== undefined && record.name !== eventType) {\n throw new EventsError(\n `Broker record name '${record.name}' does not match event type '${eventType}'.`\n )\n }\n\n return {\n ...payload,\n cursor: record.cursor,\n } as StoredDomainEvent\n}\n\nfunction resolveTypeFilter(input: {\n topics?: readonly DomainEvent[\"topic\"][]\n types?: readonly DomainEvent[\"type\"][]\n}): readonly DomainEvent[\"type\"][] {\n const topicTypes =\n input.topics && input.topics.length > 0\n ? EVENT_TYPES.filter((type) => input.topics?.includes(EVENT_DEFINITIONS[type].topic))\n : undefined\n\n if (!topicTypes) {\n return input.types && input.types.length > 0 ? input.types : EVENT_TYPES\n }\n\n if (!input.types || input.types.length === 0) {\n return topicTypes\n }\n\n const requestedTypes = new Set(input.types)\n return topicTypes.filter((type) => requestedTypes.has(type))\n}\n\nfunction isObjectRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null\n}\n\nfunction setIfDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value\n }\n}\n",
|
|
8
|
+
"import { randomUUID } from \"node:crypto\"\nimport type { Broker, BrokerCursor, BrokerRecord, BrokerStreamDefinition } from \"../broker\"\nimport { type ErrorReporter, SixbErrorReporter } from \"../error-reporting/reporter\"\nimport { reportEventDeliveryFailure } from \"../error-reporting/reports\"\nimport { getInvalidJsonValueReason, type JsonValue } from \"../json\"\nimport type { OntologyMaterializationEvent } from \"../materialization/events\"\nimport {\n EVENT_DEFINITIONS,\n EVENT_TYPES,\n isDomainEventType,\n isOntologyFactType,\n resolveEventStorage,\n} from \"./definitions\"\nimport { EventsError } from \"./errors\"\nimport type {\n DomainEvent,\n EventActor,\n EventDraft,\n StoredAuthorableEvent,\n StoredDomainEvent,\n} from \"./types\"\n\n// Keep domain events as a short recent log. This is 2 days in milliseconds.\nexport const DEFAULT_EVENTS_RETENTION_MS = 2 * 24 * 60 * 60 * 1000\n\nexport const EVENTS_STREAM: BrokerStreamDefinition = {\n id: \"__events\",\n retention: { maxAgeMs: DEFAULT_EVENTS_RETENTION_MS },\n}\n\nexport interface DomainEventServiceOptions {\n readonly projectId: string\n readonly broker: Broker\n readonly stream?: BrokerStreamDefinition\n /** Internal failure reporter. Defaults to the console when this runtime is used standalone. */\n readonly errorReporter?: ErrorReporter\n}\n\nexport interface EventsAppendInput {\n readonly actor?: EventActor\n readonly correlationId?: string\n readonly causationId?: string\n readonly events: readonly EventDraft[]\n}\n\nexport interface EventsEmitOptions {\n /** Framework component that initiated the emission, such as `SixbPipelineWorker`. */\n readonly source: string\n}\n\nexport interface EventsReadInput {\n readonly afterCursor?: string\n readonly limit?: number\n readonly topics?: readonly DomainEvent[\"topic\"][]\n readonly types?: readonly DomainEvent[\"type\"][]\n}\n\nexport interface EventsSubscribeInput {\n /** Defaults to live-only delivery. `afterCursor` takes precedence when provided. */\n readonly from?: \"latest\" | \"earliest\"\n readonly afterCursor?: BrokerCursor\n readonly types?: readonly DomainEvent[\"type\"][]\n}\n\n/** Exact, already-identified materialization event persisted before broker publication. @internal */\nexport type StableEventEnvelope = OntologyMaterializationEvent\n\n/** Public domain-event log. Stable ontology envelopes are intentionally absent. */\nexport interface DomainEventLog {\n append(input: EventsAppendInput): Promise<readonly StoredDomainEvent[]>\n /**\n * Append events after the work that produced them has already succeeded.\n *\n * Contract: this never rejects. The caller's unit of work is done, so a delivery failure must not\n * turn a successful run into a failed one — the implementation escalates the loss instead.\n */\n emit(input: EventsAppendInput, options: EventsEmitOptions): Promise<void>\n read(input?: EventsReadInput): Promise<readonly StoredDomainEvent[]>\n latestCursor(): Promise<string | undefined>\n subscribe(\n input: EventsSubscribeInput,\n handler: (events: readonly StoredDomainEvent[]) => unknown\n ): Promise<() => void>\n}\n\n/** Narrow internal port used to publish envelopes already persisted in the ontology outbox. */\nexport interface StableEventPublisher {\n publishEnvelopes(envelopes: readonly StableEventEnvelope[]): Promise<readonly StoredDomainEvent[]>\n}\n\n/** Project-scoped domain event service backed by the shared broker provider. */\nexport class DomainEventService implements DomainEventLog, StableEventPublisher {\n private readonly projectId: string\n private readonly broker: Broker\n private readonly stream: BrokerStreamDefinition\n private readonly errorReporter: ErrorReporter\n private readonly ensureStreamPromises = new Map<string, Promise<void>>()\n\n constructor(options: DomainEventServiceOptions) {\n this.projectId = options.projectId\n this.broker = options.broker\n this.stream = options.stream ?? EVENTS_STREAM\n this.errorReporter = options.errorReporter ?? new SixbErrorReporter()\n }\n\n /**\n * Append events after the work that produced them has already succeeded.\n *\n * Unlike `append`, this never rejects: the caller's unit of work is done, so a broker outage must not\n * turn a successful run into a failed one. It is not a swallow either — every event Sixb publishes is\n * a potential trigger edge (a rule's `.when()`, an event schedule, a workflow's wait node), so a lost\n * batch is a handler that silently never runs. The loss is escalated to `onError` as\n * `event.delivery.failed`, or to the default console reporter when no handler was configured.\n *\n * Framework emit sites want this. Application code wants `append`, which reports failure to the\n * caller and returns the stored envelopes.\n */\n async emit(input: EventsAppendInput, _options: EventsEmitOptions): Promise<void> {\n try {\n await this.append(input)\n } catch (error) {\n try {\n const eventTypes = input.events.map((event) => event.type)\n reportEventDeliveryFailure(this.errorReporter, error, {\n projectId: this.projectId,\n eventTypes,\n })\n } catch {\n // The contract above is absolute, so escalation cannot be the thing that breaks it.\n }\n }\n }\n\n async append(input: EventsAppendInput): Promise<readonly StoredDomainEvent[]> {\n if (input.events.length === 0) {\n return []\n }\n for (const event of input.events) {\n if (isOntologyFactType(event.type)) {\n throw new EventsError(\n `Event type '${event.type}' is an authoritative ontology fact and cannot be appended directly.`\n )\n }\n }\n\n const payloads = input.events.map((event) =>\n toStoredEventPayload({\n projectId: this.projectId,\n actor: input.actor,\n correlationId: input.correlationId,\n causationId: input.causationId,\n event,\n })\n )\n\n await this.ensureStream()\n const records = await this.broker.append({\n projectId: this.projectId,\n streamId: this.stream.id,\n records: payloads.map((payload) => ({\n name: payload.type,\n key: payload.partitionKey,\n payload: toBrokerRecordPayload(payload),\n idempotencyKey: payload.idempotencyKey,\n })),\n })\n\n if (records.length !== payloads.length) {\n throw new EventsError(\n `Broker returned ${records.length} record(s) for ${payloads.length} appended event(s).`\n )\n }\n\n return records.map(hydrateEventRecord)\n }\n\n /** Publishes persisted envelopes without changing their stable event identity. @internal */\n async publishEnvelopes(\n envelopes: readonly StableEventEnvelope[]\n ): Promise<readonly StoredDomainEvent[]> {\n if (envelopes.length === 0) {\n return []\n }\n\n for (const envelope of envelopes) {\n if (envelope.projectId !== this.projectId) {\n throw new EventsError(\n `Event '${envelope.id}' belongs to project '${envelope.projectId}', not '${this.projectId}'.`\n )\n }\n if (!isDomainEventType(envelope.type)) {\n throw new EventsError(`Event '${envelope.id}' has unknown event type.`)\n }\n if (EVENT_DEFINITIONS[envelope.type].topic !== envelope.topic) {\n throw new EventsError(\n `Event '${envelope.id}' topic '${envelope.topic}' does not match type '${envelope.type}'.`\n )\n }\n }\n\n await this.ensureStream()\n const records = await this.broker.append({\n projectId: this.projectId,\n streamId: this.stream.id,\n records: envelopes.map((envelope) => ({\n name: envelope.type,\n key: envelope.partitionKey,\n payload: toBrokerRecordPayload(envelope),\n idempotencyKey: envelope.id,\n })),\n })\n\n if (records.length !== envelopes.length) {\n throw new EventsError(\n `Broker returned ${records.length} record(s) for ${envelopes.length} published event(s).`\n )\n }\n\n return records.map(hydrateEventRecord)\n }\n\n async read(input: EventsReadInput = {}): Promise<readonly StoredDomainEvent[]> {\n if (input.limit !== undefined && input.limit <= 0) {\n return []\n }\n\n const names = resolveTypeFilter(input)\n if (names && names.length === 0) {\n return []\n }\n\n await this.ensureStream()\n const page = await this.broker.read({\n projectId: this.projectId,\n streamId: this.stream.id,\n afterCursor: input.afterCursor,\n limit: input.limit,\n names,\n })\n\n return page.records.map(hydrateEventRecord)\n }\n\n async latestCursor(): Promise<string | undefined> {\n await this.ensureStream()\n return this.broker.latestCursor({\n projectId: this.projectId,\n streamId: this.stream.id,\n })\n }\n\n async subscribe(\n input: EventsSubscribeInput,\n handler: (events: readonly StoredDomainEvent[]) => unknown\n ): Promise<() => void> {\n await this.ensureStream()\n return this.broker.subscribe(\n {\n projectId: this.projectId,\n streamId: this.stream.id,\n from: input.from,\n afterCursor: input.afterCursor,\n names: input.types && input.types.length > 0 ? input.types : EVENT_TYPES,\n },\n (records) => {\n const events = records.map(hydrateEventRecord)\n if (events.length === 0) {\n return\n }\n\n try {\n return handler(events)\n } catch {\n // Preserve fire-and-forget subscriber semantics.\n }\n }\n )\n }\n\n private ensureStream(): Promise<void> {\n const key = `${this.projectId}\\0${this.stream.id}`\n let promise = this.ensureStreamPromises.get(key)\n if (!promise) {\n promise = this.broker\n .ensureStream({\n projectId: this.projectId,\n stream: this.stream,\n })\n .catch((error) => {\n if (this.ensureStreamPromises.get(key) === promise) {\n this.ensureStreamPromises.delete(key)\n }\n throw error\n })\n this.ensureStreamPromises.set(key, promise)\n }\n return promise\n }\n}\n\nexport function createDomainEventService(options: DomainEventServiceOptions): DomainEventService {\n return new DomainEventService(options)\n}\n\ntype StoredEventPayload = Omit<StoredAuthorableEvent, \"cursor\">\n\nfunction toStoredEventPayload(params: {\n projectId: string\n actor?: EventActor\n correlationId?: string\n causationId?: string\n event: EventDraft\n}): StoredEventPayload {\n const storage = resolveEventStorage(params.event)\n const payload: Record<string, unknown> = {\n id: randomUUID(),\n schemaVersion: 1,\n projectId: params.projectId,\n occurredAt: params.event.occurredAt ?? new Date().toISOString(),\n type: params.event.type,\n topic: storage.topic,\n partitionKey: storage.partitionKey,\n payload: params.event.payload,\n }\n\n setIfDefined(payload, \"correlationId\", params.correlationId)\n setIfDefined(payload, \"causationId\", params.causationId)\n setIfDefined(payload, \"idempotencyKey\", params.event.idempotencyKey)\n setIfDefined(payload, \"actor\", params.actor)\n setIfDefined(payload, \"origin\", params.event.origin)\n setIfDefined(payload, \"metadata\", params.event.metadata)\n\n return payload as StoredEventPayload\n}\n\nfunction toBrokerRecordPayload(payload: StoredEventPayload | StableEventEnvelope): JsonValue {\n const reason = getInvalidJsonValueReason(payload, `event '${payload.type}' payload`)\n if (reason) {\n throw new EventsError(`Event '${payload.type}' cannot be stored in broker; ${reason}`)\n }\n\n return payload as unknown as JsonValue\n}\n\nfunction hydrateEventRecord(record: BrokerRecord): StoredDomainEvent {\n const payload = record.payload\n if (!isObjectRecord(payload)) {\n throw new EventsError(`Broker record at cursor '${record.cursor}' is not an event object.`)\n }\n\n const eventType = payload.type\n if (typeof eventType !== \"string\" || !isDomainEventType(eventType)) {\n throw new EventsError(`Broker record at cursor '${record.cursor}' has unknown event type.`)\n }\n\n if (record.name !== undefined && record.name !== eventType) {\n throw new EventsError(\n `Broker record name '${record.name}' does not match event type '${eventType}'.`\n )\n }\n\n return {\n ...payload,\n cursor: record.cursor,\n } as StoredDomainEvent\n}\n\nfunction resolveTypeFilter(input: {\n topics?: readonly DomainEvent[\"topic\"][]\n types?: readonly DomainEvent[\"type\"][]\n}): readonly DomainEvent[\"type\"][] {\n const topicTypes =\n input.topics && input.topics.length > 0\n ? EVENT_TYPES.filter((type) => input.topics?.includes(EVENT_DEFINITIONS[type].topic))\n : undefined\n\n if (!topicTypes) {\n return input.types && input.types.length > 0 ? input.types : EVENT_TYPES\n }\n\n if (!input.types || input.types.length === 0) {\n return topicTypes\n }\n\n const requestedTypes = new Set(input.types)\n return topicTypes.filter((type) => requestedTypes.has(type))\n}\n\nfunction isObjectRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null\n}\n\nfunction setIfDefined(target: Record<string, unknown>, key: string, value: unknown): void {\n if (value !== undefined) {\n target[key] = value\n }\n}\n",
|
|
9
9
|
"import { randomUUID } from \"node:crypto\"\nimport { resolveEventStorage } from \"./definitions\"\nimport type { EventActor, EventDraft, StoredAuthorableEvent } from \"./types/index\"\n\nexport function toStoredEvent(params: {\n projectId: string\n actor?: EventActor\n correlationId?: string\n causationId?: string\n event: EventDraft\n cursor: string\n}): StoredAuthorableEvent {\n const base = {\n id: randomUUID(),\n schemaVersion: 1 as const,\n projectId: params.projectId,\n occurredAt: params.event.occurredAt ?? new Date().toISOString(),\n correlationId: params.correlationId,\n causationId: params.causationId,\n idempotencyKey: params.event.idempotencyKey,\n actor: params.actor,\n origin: params.event.origin,\n metadata: params.event.metadata,\n cursor: params.cursor,\n }\n\n const storage = resolveEventStorage(params.event)\n return {\n ...base,\n type: params.event.type,\n topic: storage.topic,\n partitionKey: storage.partitionKey,\n payload: params.event.payload,\n } as StoredAuthorableEvent\n}\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "6DB9F008F37DD64564756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|