@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,15 +1,13 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
createSixbError2,
|
|
4
|
+
toSixbFailure2,
|
|
5
|
+
parseSixbFailure2
|
|
6
|
+
} from "../../chunk-f4w3yp4f.js";
|
|
6
7
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from "../../chunk-2xns679x.js";
|
|
11
|
-
import"../../chunk-n6jxh8sw.js";
|
|
12
|
-
import"../../chunk-y64skrwp.js";
|
|
8
|
+
ConnectorConnectionStorageError2,
|
|
9
|
+
CONNECTOR_CONNECTION_RUN_FAILURE_CODES2
|
|
10
|
+
} from "../../chunk-2c4j899j.js";
|
|
13
11
|
|
|
14
12
|
// src/storage/connector-connections/provider/shared.ts
|
|
15
13
|
import { timingSafeEqual } from "crypto";
|
|
@@ -84,7 +82,7 @@ function failExpiredProcessingRun(record, now) {
|
|
|
84
82
|
...connectionRunBase(record, now),
|
|
85
83
|
status: "failed",
|
|
86
84
|
...record.authorizationId === undefined ? {} : { authorizationId: record.authorizationId },
|
|
87
|
-
error:
|
|
85
|
+
error: toSixbFailure2(createSixbError2("internal.unexpected", "[Sixb] Connector callback processing did not complete before its deadline."), { allowedCodes: CONNECTOR_CONNECTION_RUN_FAILURE_CODES2, at: now }),
|
|
88
86
|
finishedAt: new Date(now)
|
|
89
87
|
};
|
|
90
88
|
}
|
|
@@ -101,7 +99,7 @@ function markAuthorizationRevocationPending(authorization, now) {
|
|
|
101
99
|
return authorization;
|
|
102
100
|
}
|
|
103
101
|
if (authorization.credentialMutation) {
|
|
104
|
-
throw new
|
|
102
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Connector authorization cannot begin revocation while credentials are being mutated.");
|
|
105
103
|
}
|
|
106
104
|
return {
|
|
107
105
|
...authorization,
|
|
@@ -114,10 +112,10 @@ function markAuthorizationRevocationPending(authorization, now) {
|
|
|
114
112
|
function assertConnectionCanMove(authorization, removingLastConnection = true) {
|
|
115
113
|
const mutation = authorization.credentialMutation;
|
|
116
114
|
if (mutation?.kind === "reauthorization") {
|
|
117
|
-
throw new
|
|
115
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Connections cannot change while their connector authorization is being reauthorized.");
|
|
118
116
|
}
|
|
119
117
|
if (removingLastConnection && mutation) {
|
|
120
|
-
throw new
|
|
118
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] The last connector connection cannot be removed while credentials are being mutated.");
|
|
121
119
|
}
|
|
122
120
|
}
|
|
123
121
|
function safeEqual(left, right) {
|
|
@@ -126,7 +124,7 @@ function safeEqual(left, right) {
|
|
|
126
124
|
return leftBytes.length === rightBytes.length && timingSafeEqual(leftBytes, rightBytes);
|
|
127
125
|
}
|
|
128
126
|
function invalidRun() {
|
|
129
|
-
return new
|
|
127
|
+
return new ConnectorConnectionStorageError2("run_invalid", "[Sixb] Connector connection run is invalid, expired, or already used.");
|
|
130
128
|
}
|
|
131
129
|
function sameIds(left, right) {
|
|
132
130
|
const leftSorted = [...left].sort();
|
|
@@ -134,14 +132,14 @@ function sameIds(left, right) {
|
|
|
134
132
|
return leftSorted.length === rightSorted.length && leftSorted.every((value, index) => value === rightSorted[index]);
|
|
135
133
|
}
|
|
136
134
|
function invalidAttempt() {
|
|
137
|
-
return new
|
|
135
|
+
return new ConnectorConnectionStorageError2("attempt_invalid", "[Sixb] Connector authorization attempt is invalid, expired, or already used.");
|
|
138
136
|
}
|
|
139
137
|
function authorizationConflict() {
|
|
140
|
-
return new
|
|
138
|
+
return new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Connector connection requires a selectable authorization from the same project and connector.");
|
|
141
139
|
}
|
|
142
140
|
function assertPositiveDuration(value, name) {
|
|
143
141
|
if (!Number.isFinite(value) || value <= 0) {
|
|
144
|
-
throw new
|
|
142
|
+
throw new ConnectorConnectionStorageError2("invalid_input", `[Sixb] Connector ${name} must be positive.`);
|
|
145
143
|
}
|
|
146
144
|
}
|
|
147
145
|
function canClaimMutation(status, kind) {
|
|
@@ -494,7 +492,7 @@ class DurableConnectorAuthorizations extends ConnectorConnectionOperations {
|
|
|
494
492
|
}
|
|
495
493
|
}
|
|
496
494
|
function authorizationConflict2(message) {
|
|
497
|
-
return new
|
|
495
|
+
return new ConnectorConnectionStorageError2("authorization_conflict", message);
|
|
498
496
|
}
|
|
499
497
|
|
|
500
498
|
// src/storage/connector-connections/provider/connections.ts
|
|
@@ -570,7 +568,7 @@ class DurableConnectorConnections extends ConnectorConnectionOperations {
|
|
|
570
568
|
return null;
|
|
571
569
|
const authorization = await persistence.getAuthorization(connection.authorizationId);
|
|
572
570
|
if (!authorization) {
|
|
573
|
-
throw new
|
|
571
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Connector connection references an unavailable authorization.");
|
|
574
572
|
}
|
|
575
573
|
if (connection.status === "disconnected") {
|
|
576
574
|
return {
|
|
@@ -615,23 +613,23 @@ class DurableConnectorConnections extends ConnectorConnectionOperations {
|
|
|
615
613
|
}
|
|
616
614
|
const account = authorization.accounts.find((candidate) => candidate.id === input.account.id);
|
|
617
615
|
if (!account) {
|
|
618
|
-
throw new
|
|
616
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Connector connection account is not exposed by its authorization.");
|
|
619
617
|
}
|
|
620
618
|
const existing = await persistence.getConnectionBySelector(input);
|
|
621
619
|
const sameAccount = existing?.account.id === account.id;
|
|
622
620
|
if (existing && !sameAccount && !input.replace) {
|
|
623
|
-
throw new
|
|
621
|
+
throw new ConnectorConnectionStorageError2("connection_conflict", `[Sixb] Connector slot '${input.slot}' is already connected to another account; explicit replacement is required.`);
|
|
624
622
|
}
|
|
625
623
|
if (!existing && await persistence.getConnectionById(input.id)) {
|
|
626
|
-
throw new
|
|
624
|
+
throw new ConnectorConnectionStorageError2("connection_conflict", "[Sixb] Connector connection id already exists.");
|
|
627
625
|
}
|
|
628
626
|
let revocationPendingAuthorizationId;
|
|
629
627
|
if (existing?.status === "connected" && existing.authorizationId !== authorization.id) {
|
|
630
628
|
const previous = await persistence.getAuthorization(existing.authorizationId);
|
|
631
629
|
if (!previous) {
|
|
632
|
-
throw new
|
|
630
|
+
throw new ConnectorConnectionStorageError2("authorization_conflict", "[Sixb] Existing connector connection references an unavailable authorization.");
|
|
633
631
|
}
|
|
634
|
-
const remaining = (await persistence.listConnectionsByAuthorization(previous.id, { connectedOnly: true })).filter((
|
|
632
|
+
const remaining = (await persistence.listConnectionsByAuthorization(previous.id, { connectedOnly: true })).filter((connection) => connection.id !== existing.id);
|
|
635
633
|
assertConnectionCanMove(previous, remaining.length === 0);
|
|
636
634
|
if (remaining.length === 0) {
|
|
637
635
|
await persistence.updateAuthorization(markAuthorizationRevocationPending(previous, now));
|
|
@@ -674,7 +672,7 @@ class DurableConnectorConnections extends ConnectorConnectionOperations {
|
|
|
674
672
|
if (existing) {
|
|
675
673
|
await persistence.updateConnection(connection);
|
|
676
674
|
} else if (!await persistence.insertConnection(connection)) {
|
|
677
|
-
throw new
|
|
675
|
+
throw new ConnectorConnectionStorageError2("connection_conflict", "[Sixb] Connector connection id already exists.");
|
|
678
676
|
}
|
|
679
677
|
return {
|
|
680
678
|
connection: structuredClone(connection),
|
|
@@ -695,7 +693,7 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
695
693
|
const run = await persistence.getConnectionRun(input.connectionRunId);
|
|
696
694
|
const existingAttempt = await persistence.getAuthorizationAttemptByConnectionRunId(input.connectionRunId);
|
|
697
695
|
if (!run || existingAttempt || run.status !== "waiting" || run.waitingFor !== "provider_authorization" || run.slot !== input.slot || run.initiatedByExecutionId !== input.initiatedByExecutionId) {
|
|
698
|
-
throw new
|
|
696
|
+
throw new ConnectorConnectionStorageError2("attempt_conflict", "[Sixb] Connector authorization attempt does not match its connection run.");
|
|
699
697
|
}
|
|
700
698
|
}
|
|
701
699
|
const now = await persistence.now();
|
|
@@ -707,7 +705,7 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
707
705
|
slot: input.slot,
|
|
708
706
|
initiatedByExecutionId: input.initiatedByExecutionId,
|
|
709
707
|
stateHash: input.stateHash,
|
|
710
|
-
codeVerifier: structuredClone(input.codeVerifier),
|
|
708
|
+
...input.codeVerifier === undefined ? {} : { codeVerifier: structuredClone(input.codeVerifier) },
|
|
711
709
|
redirectUri: input.redirectUri,
|
|
712
710
|
...input.connectionRunId === undefined ? {} : { connectionRunId: input.connectionRunId },
|
|
713
711
|
...input.returnTo === undefined ? {} : { returnTo: input.returnTo },
|
|
@@ -719,24 +717,24 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
719
717
|
expiresAt: new Date(now.getTime() + input.ttlMs)
|
|
720
718
|
};
|
|
721
719
|
if (!await persistence.insertAuthorizationAttempt(record)) {
|
|
722
|
-
throw new
|
|
720
|
+
throw new ConnectorConnectionStorageError2("attempt_conflict", "[Sixb] Connector authorization attempt already exists.");
|
|
723
721
|
}
|
|
724
722
|
return structuredClone(record);
|
|
725
723
|
});
|
|
726
724
|
}
|
|
727
725
|
async consumeAuthorizationAttempt(input) {
|
|
728
726
|
const record = await this.write(input, async (persistence) => {
|
|
729
|
-
const
|
|
727
|
+
const record = await persistence.getAuthorizationAttempt(input.id);
|
|
730
728
|
const now = await persistence.now();
|
|
731
|
-
if (
|
|
732
|
-
await persistence.deleteAuthorizationAttempt(
|
|
729
|
+
if (record && record.expiresAt.getTime() <= now.getTime()) {
|
|
730
|
+
await persistence.deleteAuthorizationAttempt(record.id);
|
|
733
731
|
return null;
|
|
734
732
|
}
|
|
735
|
-
if (!
|
|
733
|
+
if (!record || record.redirectUri !== input.redirectUri || !safeEqual(record.stateHash, input.stateHash)) {
|
|
736
734
|
return null;
|
|
737
735
|
}
|
|
738
736
|
await persistence.deleteAuthorizationAttempt(input.id);
|
|
739
|
-
return structuredClone(
|
|
737
|
+
return structuredClone(record);
|
|
740
738
|
});
|
|
741
739
|
if (!record)
|
|
742
740
|
throw invalidAttempt();
|
|
@@ -761,7 +759,7 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
761
759
|
expiresAt: new Date(now.getTime() + input.ttlMs)
|
|
762
760
|
};
|
|
763
761
|
if (!await persistence.insertConnectionRun(record)) {
|
|
764
|
-
throw new
|
|
762
|
+
throw new ConnectorConnectionStorageError2("run_conflict", "[Sixb] Connector connection run already exists.");
|
|
765
763
|
}
|
|
766
764
|
return structuredClone(record);
|
|
767
765
|
});
|
|
@@ -790,7 +788,7 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
790
788
|
expiresAt: new Date(now.getTime() + input.ttlMs)
|
|
791
789
|
};
|
|
792
790
|
if (!await persistence.insertConnectionRun(record)) {
|
|
793
|
-
throw new
|
|
791
|
+
throw new ConnectorConnectionStorageError2("run_conflict", "[Sixb] Connector connection run already exists.");
|
|
794
792
|
}
|
|
795
793
|
return structuredClone(record);
|
|
796
794
|
});
|
|
@@ -893,7 +891,7 @@ class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {
|
|
|
893
891
|
...base,
|
|
894
892
|
status: "failed",
|
|
895
893
|
...authorizationId === undefined ? {} : { authorizationId },
|
|
896
|
-
error:
|
|
894
|
+
error: parseSixbFailure2(input.error, CONNECTOR_CONNECTION_RUN_FAILURE_CODES2),
|
|
897
895
|
finishedAt: now
|
|
898
896
|
} : {
|
|
899
897
|
...base,
|
|
@@ -1022,4 +1020,4 @@ export {
|
|
|
1022
1020
|
DurableConnectorConnectionStorage
|
|
1023
1021
|
};
|
|
1024
1022
|
|
|
1025
|
-
//# debugId=
|
|
1023
|
+
//# debugId=20536B53DD385A8C64756E2164756E21
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"import { timingSafeEqual } from \"node:crypto\"\nimport { createSixbError, toSixbFailure } from \"../../../errors/internal\"\nimport { ConnectorConnectionStorageError } from \"../errors\"\nimport type {\n ClaimConnectorCredentialMutationInput,\n ConnectorAuthorizationAttemptRecord,\n ConnectorAuthorizationRecord,\n ConnectorConnectionRecord,\n ConnectorConnectionRunProcessingRecord,\n ConnectorConnectionRunRecord,\n ConnectorCredentialMutationFence,\n GetConnectorConnectionInput,\n} from \"../types\"\nimport { CONNECTOR_CONNECTION_RUN_FAILURE_CODES } from \"../types\"\n\nexport interface ConnectorConnectionPersistenceScope {\n readonly projectId: string\n /** Omitted only while resolving a callback whose public proof intentionally carries no id. */\n readonly connectorId?: string\n}\n\n/** Database-specific record access used by the shared connector lifecycle state machine. */\nexport interface ConnectorConnectionPersistence {\n now(): Promise<Date>\n\n insertAuthorizationAttempt(record: ConnectorAuthorizationAttemptRecord): Promise<boolean>\n getAuthorizationAttempt(id: string): Promise<ConnectorAuthorizationAttemptRecord | null>\n getAuthorizationAttemptByConnectionRunId(\n connectionRunId: string\n ): Promise<ConnectorAuthorizationAttemptRecord | null>\n deleteAuthorizationAttempt(id: string): Promise<boolean>\n\n insertConnectionRun(record: ConnectorConnectionRunRecord): Promise<boolean>\n getConnectionRun(id: string): Promise<ConnectorConnectionRunRecord | null>\n updateConnectionRun(record: ConnectorConnectionRunRecord): Promise<void>\n\n insertAuthorization(record: ConnectorAuthorizationRecord): Promise<boolean>\n getAuthorization(id: string): Promise<ConnectorAuthorizationRecord | null>\n updateAuthorization(record: ConnectorAuthorizationRecord): Promise<void>\n\n insertConnection(record: ConnectorConnectionRecord): Promise<boolean>\n getConnectionById(id: string): Promise<ConnectorConnectionRecord | null>\n getConnectionBySelector(\n input: Pick<GetConnectorConnectionInput, \"owner\" | \"slot\">\n ): Promise<ConnectorConnectionRecord | null>\n listConnections(): Promise<readonly ConnectorConnectionRecord[]>\n listConnectionsByAuthorization(\n authorizationId: string,\n options?: { readonly connectedOnly?: boolean }\n ): Promise<readonly ConnectorConnectionRecord[]>\n updateConnection(record: ConnectorConnectionRecord): Promise<void>\n}\n\n/** Transaction and lock boundary supplied by a concrete durable storage provider. */\nexport interface ConnectorConnectionPersistenceBackend {\n read<T>(\n scope: ConnectorConnectionPersistenceScope,\n run: (persistence: ConnectorConnectionPersistence) => Promise<T>\n ): Promise<T>\n transaction<T>(\n scope: ConnectorConnectionPersistenceScope,\n run: (persistence: ConnectorConnectionPersistence) => Promise<T>\n ): Promise<T>\n}\n\nexport abstract class ConnectorConnectionOperations {\n constructor(private readonly backend: ConnectorConnectionPersistenceBackend) {}\n\n protected read<T>(\n scope: ConnectorConnectionPersistenceScope,\n run: (persistence: ConnectorConnectionPersistence) => Promise<T>\n ): Promise<T> {\n return this.backend.read(scope, run)\n }\n\n protected write<T>(\n scope: ConnectorConnectionPersistenceScope,\n run: (persistence: ConnectorConnectionPersistence) => Promise<T>\n ): Promise<T> {\n return this.backend.transaction(scope, run)\n }\n}\n\nexport async function currentConnectionRun(\n persistence: ConnectorConnectionPersistence,\n runId: string\n): Promise<ConnectorConnectionRunRecord | null> {\n const run = await persistence.getConnectionRun(runId)\n if (!run || (run.status !== \"waiting\" && run.status !== \"running\")) return run\n\n const now = await persistence.now()\n if (run.expiresAt.getTime() > now.getTime()) return run\n\n if (run.status === \"waiting\" && run.waitingFor === \"provider_authorization\") {\n const attempt = await persistence.getAuthorizationAttemptByConnectionRunId(run.id)\n if (attempt) await persistence.deleteAuthorizationAttempt(attempt.id)\n }\n if (run.status === \"waiting\") {\n if (run.kind === \"connect\" && run.waitingFor === \"account_selection\") {\n await markPendingAuthorizationForCleanup(persistence, run.authorizationId, now)\n }\n const expired = expireConnectionRun(run, now)\n await persistence.updateConnectionRun(expired)\n return expired\n }\n\n if (run.kind === \"connect\" && run.authorizationId) {\n await markPendingAuthorizationForCleanup(persistence, run.authorizationId, now)\n }\n const failed = failExpiredProcessingRun(run, now)\n await persistence.updateConnectionRun(failed)\n return failed\n}\n\nexport async function markPendingAuthorizationForCleanup(\n persistence: ConnectorConnectionPersistence,\n authorizationId: string,\n now: Date\n): Promise<void> {\n const authorization = await persistence.getAuthorization(authorizationId)\n if (!authorization || authorization.status !== \"pending_selection\") return\n await persistence.updateAuthorization(markAuthorizationRevocationPending(authorization, now))\n}\n\nexport function connectionRunBase(record: ConnectorConnectionRunRecord, updatedAt: Date) {\n return {\n id: record.id,\n projectId: record.projectId,\n connectorId: record.connectorId,\n kind: record.kind,\n owner: structuredClone(record.owner),\n slot: record.slot,\n initiatedByExecutionId: record.initiatedByExecutionId,\n createdAt: new Date(record.createdAt),\n updatedAt: new Date(updatedAt),\n }\n}\n\nfunction expireConnectionRun(\n record: Extract<ConnectorConnectionRunRecord, { readonly status: \"waiting\" }>,\n now: Date\n) {\n return {\n ...connectionRunBase(record, now),\n status: \"expired\" as const,\n ...(record.waitingFor === \"account_selection\"\n ? { authorizationId: record.authorizationId }\n : {}),\n finishedAt: new Date(now),\n }\n}\n\nfunction failExpiredProcessingRun(record: ConnectorConnectionRunProcessingRecord, now: Date) {\n return {\n ...connectionRunBase(record, now),\n status: \"failed\" as const,\n ...(record.authorizationId === undefined ? {} : { authorizationId: record.authorizationId }),\n error: toSixbFailure(\n createSixbError(\n \"internal.unexpected\",\n \"[Sixb] Connector callback processing did not complete before its deadline.\"\n ),\n { allowedCodes: CONNECTOR_CONNECTION_RUN_FAILURE_CODES, at: now }\n ),\n finishedAt: new Date(now),\n }\n}\n\nexport function disconnectConnectionRecord(\n connection: ConnectorConnectionRecord,\n now: Date\n): ConnectorConnectionRecord {\n return {\n ...connection,\n status: \"disconnected\",\n disconnectedAt: new Date(now),\n updatedAt: new Date(now),\n }\n}\n\nexport function markAuthorizationRevocationPending(\n authorization: ConnectorAuthorizationRecord,\n now: Date\n): ConnectorAuthorizationRecord {\n if (authorization.status === \"revocation_pending\" || authorization.status === \"revoked\") {\n return authorization\n }\n if (authorization.credentialMutation) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector authorization cannot begin revocation while credentials are being mutated.\"\n )\n }\n return {\n ...authorization,\n status: \"revocation_pending\",\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: new Date(now),\n }\n}\n\nexport function assertConnectionCanMove(\n authorization: ConnectorAuthorizationRecord,\n removingLastConnection = true\n): void {\n const mutation = authorization.credentialMutation\n if (mutation?.kind === \"reauthorization\") {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connections cannot change while their connector authorization is being reauthorized.\"\n )\n }\n if (removingLastConnection && mutation) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] The last connector connection cannot be removed while credentials are being mutated.\"\n )\n }\n}\n\nexport function safeEqual(left: string, right: string): boolean {\n const leftBytes = Buffer.from(left)\n const rightBytes = Buffer.from(right)\n return leftBytes.length === rightBytes.length && timingSafeEqual(leftBytes, rightBytes)\n}\n\nexport function invalidRun(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"run_invalid\",\n \"[Sixb] Connector connection run is invalid, expired, or already used.\"\n )\n}\n\nexport function sameIds(left: readonly string[], right: readonly string[]): boolean {\n const leftSorted = [...left].sort()\n const rightSorted = [...right].sort()\n return (\n leftSorted.length === rightSorted.length &&\n leftSorted.every((value, index) => value === rightSorted[index])\n )\n}\n\nexport function invalidAttempt(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"attempt_invalid\",\n \"[Sixb] Connector authorization attempt is invalid, expired, or already used.\"\n )\n}\n\nexport function authorizationConflict(): ConnectorConnectionStorageError {\n return new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection requires a selectable authorization from the same project and connector.\"\n )\n}\n\nexport function assertPositiveDuration(value: number, name: string): void {\n if (!Number.isFinite(value) || value <= 0) {\n throw new ConnectorConnectionStorageError(\n \"invalid_input\",\n `[Sixb] Connector ${name} must be positive.`\n )\n }\n}\n\nexport function canClaimMutation(\n status: ConnectorAuthorizationRecord[\"status\"],\n kind: ClaimConnectorCredentialMutationInput[\"mutation\"][\"kind\"]\n): boolean {\n if (kind === \"refresh\") return status === \"active\"\n if (kind === \"reauthorization\") {\n return status === \"active\" || status === \"needs_reauthorization\"\n }\n return status !== \"revoked\"\n}\n\nexport function isSelectable(status: ConnectorAuthorizationRecord[\"status\"]): boolean {\n return status === \"pending_selection\" || status === \"active\"\n}\n\nexport function leaseExpiry(now: Date, durationMs: number, deadlineAt: Date): Date {\n return new Date(Math.min(now.getTime() + durationMs, deadlineAt.getTime()))\n}\n\nexport function mutationExpired(record: ConnectorAuthorizationRecord, now: Date): boolean {\n return (\n record.credentialMutation!.expiresAt.getTime() <= now.getTime() ||\n record.credentialMutation!.deadlineAt.getTime() <= now.getTime()\n )\n}\n\nexport function matchesMutation(\n record: ConnectorAuthorizationRecord | null,\n input: ConnectorCredentialMutationFence,\n holderId?: string\n): record is ConnectorAuthorizationRecord & {\n readonly credentialMutation: NonNullable<ConnectorAuthorizationRecord[\"credentialMutation\"]>\n} {\n return (\n record !== null &&\n record.revision === input.expectedRevision &&\n record.credentialMutation?.id === input.mutationId &&\n (holderId === undefined || record.credentialMutation.holderId === holderId)\n )\n}\n\nexport function stagedCredentials(\n record: ConnectorAuthorizationRecord | null,\n input: ConnectorCredentialMutationFence,\n kind: \"refresh\" | \"reauthorization\"\n) {\n if (\n !matchesMutation(record, input) ||\n record.credentialMutation.kind !== kind ||\n record.credentialMutation.phase !== \"result_staged\"\n ) {\n return null\n }\n return record.credentialMutation.stagedCredentials ?? null\n}\n\nexport function applyStagedCredentials(\n record: ConnectorAuthorizationRecord,\n staged: NonNullable<ReturnType<typeof stagedCredentials>>,\n now: Date,\n input: { readonly accounts: readonly ConnectorAuthorizationRecord[\"accounts\"][number][] }\n): ConnectorAuthorizationRecord {\n return {\n ...record,\n credentials: structuredClone(staged.credentials),\n credentialExpiresAt:\n staged.credentialExpiresAt === undefined ? undefined : new Date(staged.credentialExpiresAt),\n scopes: [...staged.scopes],\n accounts: structuredClone(input.accounts),\n status: \"active\",\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: now,\n }\n}\n",
|
|
6
6
|
"import { ConnectorConnectionStorageError } from \"../errors\"\nimport type {\n ClaimConnectorCredentialMutationInput,\n ClaimConnectorCredentialMutationResult,\n ConnectorAuthorizationKey,\n ConnectorAuthorizationRecord,\n ConnectorConnectionKey,\n ConnectorConnectionRecord,\n ConnectorCredentialMutationFence,\n CreateConnectorAuthorizationInput,\n FinalizeConnectorReauthorizationInput,\n InitializeConnectorAuthorizationAccountsInput,\n MarkConnectorAuthorizationNeedsReauthorizationInput,\n MarkConnectorCredentialMutationExecutingInput,\n RecoverExpiredConnectorCredentialMutationInput,\n ReleaseConnectorCredentialMutationInput,\n RenewConnectorCredentialMutationInput,\n StageConnectorCredentialMutationCredentialsInput,\n StageConnectorCredentialMutationRevocationInput,\n} from \"../types\"\nimport {\n applyStagedCredentials,\n assertPositiveDuration,\n ConnectorConnectionOperations,\n canClaimMutation,\n disconnectConnectionRecord,\n leaseExpiry,\n matchesMutation,\n mutationExpired,\n sameIds,\n stagedCredentials,\n} from \"./shared\"\n\nexport class DurableConnectorAuthorizations extends ConnectorConnectionOperations {\n createAuthorization(\n input: CreateConnectorAuthorizationInput\n ): Promise<ConnectorAuthorizationRecord> {\n assertPositiveDuration(input.selectionTtlMs, \"account selection TTL\")\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record: ConnectorAuthorizationRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n authorizedBy: structuredClone(input.authorizedBy),\n credentials: structuredClone(input.credentials),\n ...(input.credentialExpiresAt === undefined\n ? {}\n : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),\n scopes: [...input.scopes],\n accounts: structuredClone(input.accounts),\n status: \"pending_selection\",\n selectionExpiresAt: new Date(now.getTime() + input.selectionTtlMs),\n revision: 0,\n createdAt: now,\n updatedAt: now,\n }\n if (!(await persistence.insertAuthorization(record))) {\n throw authorizationConflict(\"[Sixb] Connector authorization already exists.\")\n }\n return structuredClone(record)\n })\n }\n\n initializeAuthorizationAccounts(\n input: InitializeConnectorAuthorizationAccountsInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !record ||\n record.revision !== input.expectedRevision ||\n record.status !== \"pending_selection\" ||\n record.credentialMutation\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n accounts: structuredClone(input.accounts),\n revision: record.revision + 1,\n updatedAt: await persistence.now(),\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n getAuthorization(input: ConnectorAuthorizationKey): Promise<ConnectorAuthorizationRecord | null> {\n return this.read(input, async (persistence) => {\n const authorization = await persistence.getAuthorization(input.authorizationId)\n return authorization ? structuredClone(authorization) : null\n })\n }\n\n getAuthorizationByConnectionId(\n input: ConnectorConnectionKey\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.read(input, async (persistence) => {\n const connection = await persistence.getConnectionById(input.connectionId)\n if (!connection) return null\n const authorization = await persistence.getAuthorization(connection.authorizationId)\n return authorization ? structuredClone(authorization) : null\n })\n }\n\n claimCredentialMutation(\n input: ClaimConnectorCredentialMutationInput\n ): Promise<ClaimConnectorCredentialMutationResult | null> {\n assertPositiveDuration(input.leaseDurationMs, \"credential mutation lease duration\")\n assertPositiveDuration(input.operationTimeoutMs, \"credential mutation timeout\")\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !record ||\n record.revision !== input.expectedRevision ||\n !canClaimMutation(record.status, input.mutation.kind)\n ) {\n return null\n }\n\n if (record.credentialMutation) {\n const canReplacePrepared =\n record.credentialMutation.phase === \"prepared\" &&\n record.credentialMutation.expiresAt.getTime() <= now.getTime()\n if (!canReplacePrepared) return null\n }\n\n const attached = await persistence.listConnectionsByAuthorization(record.id, {\n connectedOnly: true,\n })\n if (\n input.mutation.kind === \"reauthorization\" &&\n !sameIds(\n attached.map((connection) => connection.id),\n input.expectedConnectionIds ?? []\n )\n ) {\n return null\n }\n\n const deadlineAt = new Date(now.getTime() + input.operationTimeoutMs)\n const mutation = {\n ...structuredClone(input.mutation),\n phase: \"prepared\" as const,\n expiresAt: leaseExpiry(now, input.leaseDurationMs, deadlineAt),\n deadlineAt,\n ...(input.mutation.kind === \"reauthorization\"\n ? { expectedConnectionIds: [...(input.expectedConnectionIds ?? [])] }\n : {}),\n }\n const startsRevocation =\n input.mutation.kind === \"revocation\" && record.status !== \"revocation_pending\"\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: input.mutation.kind === \"revocation\" ? \"revocation_pending\" : record.status,\n selectionExpiresAt:\n input.mutation.kind === \"revocation\" ? undefined : record.selectionExpiresAt,\n revision: startsRevocation ? record.revision + 1 : record.revision,\n credentialMutation: mutation,\n updatedAt: now,\n }\n await persistence.updateAuthorization(updated)\n\n const disconnected: ConnectorConnectionRecord[] = []\n if (input.mutation.kind === \"revocation\") {\n for (const connection of attached) {\n const updatedConnection = disconnectConnectionRecord(connection, now)\n await persistence.updateConnection(updatedConnection)\n disconnected.push(structuredClone(updatedConnection))\n }\n }\n return { authorization: structuredClone(updated), disconnected }\n })\n }\n\n markCredentialMutationExecuting(\n input: MarkConnectorCredentialMutationExecutingInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"prepared\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: { ...record.credentialMutation, phase: \"executing\" },\n updatedAt: now,\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n renewCredentialMutation(\n input: RenewConnectorCredentialMutationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n assertPositiveDuration(input.leaseDurationMs, \"credential mutation lease duration\")\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase === \"result_staged\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: {\n ...record.credentialMutation,\n expiresAt: leaseExpiry(now, input.leaseDurationMs, record.credentialMutation.deadlineAt),\n },\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n stageCredentialMutationCredentials(\n input: StageConnectorCredentialMutationCredentialsInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"executing\" ||\n mutationExpired(record, now) ||\n record.credentialMutation.kind === \"revocation\"\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: {\n ...record.credentialMutation,\n phase: \"result_staged\",\n stagedCredentials: {\n credentials: structuredClone(input.credentials),\n ...(input.credentialExpiresAt === undefined\n ? {}\n : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),\n scopes: [...input.scopes],\n },\n },\n updatedAt: now,\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n stageCredentialMutationRevocation(\n input: StageConnectorCredentialMutationRevocationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase !== \"executing\" ||\n record.credentialMutation.kind !== \"revocation\" ||\n mutationExpired(record, now)\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n credentialMutation: { ...record.credentialMutation, phase: \"result_staged\" },\n updatedAt: now,\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n releaseCredentialMutation(input: ReleaseConnectorCredentialMutationInput): Promise<boolean> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input, input.holderId) ||\n record.credentialMutation.phase === \"result_staged\"\n ) {\n return false\n }\n await persistence.updateAuthorization({\n ...record,\n credentialMutation: undefined,\n updatedAt: await persistence.now(),\n })\n return true\n })\n }\n\n recoverExpiredCredentialMutation(\n input: RecoverExpiredConnectorCredentialMutationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n if (!record?.credentialMutation) return null\n if (record.credentialMutation.phase === \"result_staged\") return structuredClone(record)\n\n const now = await persistence.now()\n if (!mutationExpired(record, now)) return null\n const ambiguous = record.credentialMutation.phase === \"executing\"\n const failClosed = ambiguous && record.credentialMutation.kind !== \"revocation\"\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: failClosed ? \"needs_reauthorization\" : record.status,\n selectionExpiresAt: failClosed ? undefined : record.selectionExpiresAt,\n revision: failClosed ? record.revision + 1 : record.revision,\n credentialMutation: undefined,\n updatedAt: now,\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n markNeedsReauthorization(\n input: MarkConnectorAuthorizationNeedsReauthorizationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n if (!matchesMutation(record, input)) return null\n const staged = record.credentialMutation.stagedCredentials\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n ...(staged\n ? {\n credentials: structuredClone(staged.credentials),\n credentialExpiresAt:\n staged.credentialExpiresAt === undefined\n ? undefined\n : new Date(staged.credentialExpiresAt),\n scopes: [...staged.scopes],\n }\n : {}),\n status: \"needs_reauthorization\",\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: await persistence.now(),\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n finalizeRefresh(\n input: ConnectorCredentialMutationFence\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n const staged = stagedCredentials(record, input, \"refresh\")\n if (!record || !staged) return null\n const updated = applyStagedCredentials(record, staged, await persistence.now(), {\n accounts: record.accounts,\n })\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n\n finalizeReauthorization(\n input: FinalizeConnectorReauthorizationInput\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n const staged = stagedCredentials(record, input, \"reauthorization\")\n if (!record || !staged || !record.credentialMutation) return null\n const attached = await persistence.listConnectionsByAuthorization(record.id, {\n connectedOnly: true,\n })\n if (\n !sameIds(\n attached.map((connection) => connection.id),\n record.credentialMutation.expectedConnectionIds ?? []\n )\n ) {\n throw authorizationConflict(\n \"[Sixb] Connections attached to the connector authorization changed during reauthorization.\"\n )\n }\n const accountsById = new Map(input.accounts.map((account) => [account.id, account]))\n if (attached.some((connection) => !accountsById.has(connection.account.id))) {\n throw authorizationConflict(\n \"[Sixb] Reauthorized connector grant no longer exposes every attached account.\"\n )\n }\n\n const now = await persistence.now()\n const updated = applyStagedCredentials(record, staged, now, { accounts: input.accounts })\n await persistence.updateAuthorization(updated)\n for (const connection of attached) {\n await persistence.updateConnection({\n ...connection,\n account: structuredClone(accountsById.get(connection.account.id)!),\n updatedAt: now,\n })\n }\n return structuredClone(updated)\n })\n }\n\n finalizeRevocation(\n input: ConnectorCredentialMutationFence\n ): Promise<ConnectorAuthorizationRecord | null> {\n return this.write(input, async (persistence) => {\n const record = await persistence.getAuthorization(input.authorizationId)\n if (\n !matchesMutation(record, input) ||\n record.credentialMutation.kind !== \"revocation\" ||\n record.credentialMutation.phase !== \"result_staged\"\n ) {\n return null\n }\n const updated: ConnectorAuthorizationRecord = {\n ...record,\n status: \"revoked\",\n credentials: undefined,\n credentialExpiresAt: undefined,\n scopes: [],\n accounts: [],\n selectionExpiresAt: undefined,\n revision: record.revision + 1,\n credentialMutation: undefined,\n updatedAt: await persistence.now(),\n }\n await persistence.updateAuthorization(updated)\n return structuredClone(updated)\n })\n }\n}\n\nfunction authorizationConflict(message: string) {\n return new ConnectorConnectionStorageError(\"authorization_conflict\", message)\n}\n",
|
|
7
7
|
"import { ConnectorConnectionStorageError } from \"../errors\"\nimport type {\n ConnectorConnectionKey,\n ConnectorConnectionRecord,\n ConnectorConnectionRunSucceededRecord,\n DisconnectConnectorConnectionResult,\n GetConnectorConnectionInput,\n ListConnectorConnectionsInput,\n PutConnectorConnectionFromRunInput,\n PutConnectorConnectionFromRunResult,\n PutConnectorConnectionInput,\n PutConnectorConnectionResult,\n} from \"../types\"\nimport {\n assertConnectionCanMove,\n authorizationConflict,\n ConnectorConnectionOperations,\n type ConnectorConnectionPersistence,\n connectionRunBase,\n currentConnectionRun,\n disconnectConnectionRecord,\n invalidRun,\n isSelectable,\n markAuthorizationRevocationPending,\n} from \"./shared\"\n\nexport class DurableConnectorConnections extends ConnectorConnectionOperations {\n async putConnection(input: PutConnectorConnectionInput): Promise<PutConnectorConnectionResult> {\n const outcome = await this.write(input, async (persistence) =>\n this.putConnectionNow(persistence, input, await persistence.now())\n )\n if (\"error\" in outcome) throw outcome.error\n return outcome\n }\n\n async putConnectionFromRun(\n input: PutConnectorConnectionFromRunInput\n ): Promise<PutConnectorConnectionFromRunResult> {\n const outcome = await this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n if (!run || run.status !== \"waiting\" || run.waitingFor !== \"account_selection\") {\n return { error: invalidRun() }\n }\n const now = await persistence.now()\n const result = await this.putConnectionNow(\n persistence,\n {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: run.owner,\n slot: run.slot,\n authorizationId: run.authorizationId,\n account: input.account,\n replace: input.replace,\n },\n now\n )\n if (\"error\" in result) return result\n const succeeded: ConnectorConnectionRunSucceededRecord = {\n ...connectionRunBase(run, now),\n status: \"succeeded\",\n authorizationId: run.authorizationId,\n ...(result.revocationPendingAuthorizationId === undefined\n ? {}\n : { cleanupAuthorizationId: result.revocationPendingAuthorizationId }),\n connections: [structuredClone(result.connection)],\n finishedAt: now,\n }\n await persistence.updateConnectionRun(succeeded)\n return { ...result, run: structuredClone(succeeded) }\n })\n if (\"error\" in outcome) throw outcome.error\n return outcome\n }\n\n getConnection(input: GetConnectorConnectionInput): Promise<ConnectorConnectionRecord | null> {\n return this.read(input, async (persistence) => {\n const connection = await persistence.getConnectionBySelector(input)\n return connection?.status === \"connected\" ? structuredClone(connection) : null\n })\n }\n\n getConnectionById(input: ConnectorConnectionKey): Promise<ConnectorConnectionRecord | null> {\n return this.read(input, async (persistence) => {\n const connection = await persistence.getConnectionById(input.connectionId)\n return connection ? structuredClone(connection) : null\n })\n }\n\n listConnections(\n input: ListConnectorConnectionsInput\n ): Promise<readonly ConnectorConnectionRecord[]> {\n return this.read(input, async (persistence) =>\n structuredClone(await persistence.listConnections())\n )\n }\n\n listConnectionsByAuthorization(input: {\n readonly projectId: string\n readonly connectorId: string\n readonly authorizationId: string\n }): Promise<readonly ConnectorConnectionRecord[]> {\n return this.read(input, async (persistence) => {\n if (!(await persistence.getAuthorization(input.authorizationId))) return []\n return structuredClone(\n await persistence.listConnectionsByAuthorization(input.authorizationId, {\n connectedOnly: true,\n })\n )\n })\n }\n\n disconnectConnection(\n input: ConnectorConnectionKey\n ): Promise<DisconnectConnectorConnectionResult | null> {\n return this.write(input, async (persistence) => {\n const connection = await persistence.getConnectionById(input.connectionId)\n if (!connection) return null\n const authorization = await persistence.getAuthorization(connection.authorizationId)\n if (!authorization) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection references an unavailable authorization.\"\n )\n }\n if (connection.status === \"disconnected\") {\n return {\n connection: structuredClone(connection),\n authorization: structuredClone(authorization),\n ...(authorization.status === \"revocation_pending\"\n ? { revocationPendingAuthorizationId: authorization.id }\n : {}),\n }\n }\n\n const now = await persistence.now()\n const remaining = (\n await persistence.listConnectionsByAuthorization(authorization.id, {\n connectedOnly: true,\n })\n ).filter((candidate) => candidate.id !== connection.id)\n assertConnectionCanMove(authorization, remaining.length === 0)\n const disconnected = disconnectConnectionRecord(connection, now)\n await persistence.updateConnection(disconnected)\n const updatedAuthorization =\n remaining.length === 0\n ? markAuthorizationRevocationPending(authorization, now)\n : authorization\n if (updatedAuthorization !== authorization) {\n await persistence.updateAuthorization(updatedAuthorization)\n }\n return {\n connection: structuredClone(disconnected),\n authorization: structuredClone(updatedAuthorization),\n ...(updatedAuthorization.status === \"revocation_pending\" && remaining.length === 0\n ? { revocationPendingAuthorizationId: updatedAuthorization.id }\n : {}),\n }\n })\n }\n\n private async putConnectionNow(\n persistence: ConnectorConnectionPersistence,\n input: PutConnectorConnectionInput,\n now: Date\n ): Promise<PutConnectorConnectionResult | CommittedConnectorConnectionError> {\n let authorization = await persistence.getAuthorization(input.authorizationId)\n if (\n !authorization ||\n !isSelectable(authorization.status) ||\n authorization.credentialMutation?.kind === \"reauthorization\"\n ) {\n throw authorizationConflict()\n }\n if (\n authorization.status === \"pending_selection\" &&\n authorization.selectionExpiresAt!.getTime() <= now.getTime()\n ) {\n authorization = {\n ...authorization,\n status: \"revocation_pending\",\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: now,\n }\n await persistence.updateAuthorization(authorization)\n return { error: authorizationConflict() }\n }\n const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)\n if (!account) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Connector connection account is not exposed by its authorization.\"\n )\n }\n const existing = await persistence.getConnectionBySelector(input)\n const sameAccount = existing?.account.id === account.id\n if (existing && !sameAccount && !input.replace) {\n throw new ConnectorConnectionStorageError(\n \"connection_conflict\",\n `[Sixb] Connector slot '${input.slot}' is already connected to another account; explicit replacement is required.`\n )\n }\n if (!existing && (await persistence.getConnectionById(input.id))) {\n throw new ConnectorConnectionStorageError(\n \"connection_conflict\",\n \"[Sixb] Connector connection id already exists.\"\n )\n }\n\n let revocationPendingAuthorizationId: string | undefined\n if (existing?.status === \"connected\" && existing.authorizationId !== authorization.id) {\n const previous = await persistence.getAuthorization(existing.authorizationId)\n if (!previous) {\n throw new ConnectorConnectionStorageError(\n \"authorization_conflict\",\n \"[Sixb] Existing connector connection references an unavailable authorization.\"\n )\n }\n const remaining = (\n await persistence.listConnectionsByAuthorization(previous.id, { connectedOnly: true })\n ).filter((connection) => connection.id !== existing.id)\n assertConnectionCanMove(previous, remaining.length === 0)\n if (remaining.length === 0) {\n await persistence.updateAuthorization(markAuthorizationRevocationPending(previous, now))\n revocationPendingAuthorizationId = previous.id\n }\n } else if (existing?.status === \"connected\") {\n const previous = await persistence.getAuthorization(existing.authorizationId)\n if (previous) assertConnectionCanMove(previous, false)\n }\n\n const updatedAuthorization =\n authorization.status === \"pending_selection\"\n ? {\n ...authorization,\n status: \"active\" as const,\n selectionExpiresAt: undefined,\n revision: authorization.revision + 1,\n updatedAt: now,\n }\n : authorization\n const connection: ConnectorConnectionRecord = existing\n ? {\n ...existing,\n authorizationId: input.authorizationId,\n account: structuredClone(account),\n status: \"connected\",\n disconnectedAt: undefined,\n updatedAt: now,\n }\n : {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: structuredClone(input.owner),\n slot: input.slot,\n authorizationId: input.authorizationId,\n account: structuredClone(account),\n status: \"connected\",\n createdAt: now,\n updatedAt: now,\n }\n\n if (updatedAuthorization !== authorization) {\n await persistence.updateAuthorization(updatedAuthorization)\n }\n if (existing) {\n await persistence.updateConnection(connection)\n } else if (!(await persistence.insertConnection(connection))) {\n throw new ConnectorConnectionStorageError(\n \"connection_conflict\",\n \"[Sixb] Connector connection id already exists.\"\n )\n }\n return {\n connection: structuredClone(connection),\n authorization: structuredClone(updatedAuthorization),\n ...(revocationPendingAuthorizationId === undefined\n ? {}\n : { revocationPendingAuthorizationId }),\n created: existing === null,\n replaced: existing !== null && !sameAccount,\n }\n }\n}\n\ninterface CommittedConnectorConnectionError {\n readonly error: ConnectorConnectionStorageError\n}\n",
|
|
8
|
-
"import { parseSixbFailure } from \"../../../errors/internal\"\nimport { ConnectorConnectionStorageError } from \"../errors\"\nimport type {\n AttachConnectorConnectionRunAuthorizationInput,\n ClaimConnectorConnectionRunCallbackInput,\n ClaimConnectorConnectionRunCallbackResult,\n ConnectorAuthorizationAttemptRecord,\n ConnectorConnectionRunAwaitingProviderRecord,\n ConnectorConnectionRunAwaitingSelectionRecord,\n ConnectorConnectionRunProcessingRecord,\n ConnectorConnectionRunRecord,\n ConnectorConnectionStorage,\n CreateConnectorAuthorizationAttemptInput,\n CreateConnectorConnectionRunInput,\n CreateConnectorConnectionSelectionRunInput,\n FinishConnectorConnectionRunInput,\n GetConnectorConnectionRunInput,\n WaitForConnectorConnectionRunSelectionInput,\n} from \"../types\"\nimport { CONNECTOR_CONNECTION_RUN_FAILURE_CODES } from \"../types\"\nimport {\n assertPositiveDuration,\n authorizationConflict,\n ConnectorConnectionOperations,\n connectionRunBase,\n currentConnectionRun,\n invalidAttempt,\n markPendingAuthorizationForCleanup,\n safeEqual,\n} from \"./shared\"\n\nexport class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {\n createAuthorizationAttempt(\n input: CreateConnectorAuthorizationAttemptInput\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n assertPositiveDuration(input.ttlMs, \"authorization attempt TTL\")\n return this.write(input, async (persistence) => {\n if (input.connectionRunId !== undefined) {\n const run = await persistence.getConnectionRun(input.connectionRunId)\n const existingAttempt = await persistence.getAuthorizationAttemptByConnectionRunId(\n input.connectionRunId\n )\n if (\n !run ||\n existingAttempt ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== input.slot ||\n run.initiatedByExecutionId !== input.initiatedByExecutionId\n ) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt does not match its connection run.\"\n )\n }\n }\n const now = await persistence.now()\n const record: ConnectorAuthorizationAttemptRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n stateHash: input.stateHash,\n codeVerifier: structuredClone(input.codeVerifier),\n redirectUri: input.redirectUri,\n ...(input.connectionRunId === undefined ? {} : { connectionRunId: input.connectionRunId }),\n ...(input.returnTo === undefined ? {} : { returnTo: input.returnTo }),\n ...(input.callbackBindingHash === undefined\n ? {}\n : { callbackBindingHash: input.callbackBindingHash }),\n ...(input.reauthorizationId === undefined\n ? {}\n : { reauthorizationId: input.reauthorizationId }),\n ...(input.reauthorizationRevision === undefined\n ? {}\n : { reauthorizationRevision: input.reauthorizationRevision }),\n ...(input.reauthorizationConnectionIds === undefined\n ? {}\n : { reauthorizationConnectionIds: [...input.reauthorizationConnectionIds] }),\n createdAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertAuthorizationAttempt(record))) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n async consumeAuthorizationAttempt(\n input: Parameters<ConnectorConnectionStorage[\"consumeAuthorizationAttempt\"]>[0]\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n const record = await this.write(input, async (persistence) => {\n const record = await persistence.getAuthorizationAttempt(input.id)\n const now = await persistence.now()\n if (record && record.expiresAt.getTime() <= now.getTime()) {\n await persistence.deleteAuthorizationAttempt(record.id)\n return null\n }\n if (\n !record ||\n record.redirectUri !== input.redirectUri ||\n !safeEqual(record.stateHash, input.stateHash)\n ) {\n return null\n }\n\n await persistence.deleteAuthorizationAttempt(input.id)\n return structuredClone(record)\n })\n if (!record) throw invalidAttempt()\n return record\n }\n\n createConnectionRun(\n input: CreateConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record: ConnectorConnectionRunAwaitingProviderRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: input.kind,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"provider_authorization\",\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertConnectionRun(record))) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n createConnectionSelectionRun(\n input: CreateConnectorConnectionSelectionRunInput\n ): Promise<ConnectorConnectionRunAwaitingSelectionRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n return this.write(input, async (persistence) => {\n const authorization = await persistence.getAuthorization(input.authorizationId)\n if (!authorization || authorization.status !== \"active\" || authorization.credentialMutation) {\n throw authorizationConflict()\n }\n const now = await persistence.now()\n const record: ConnectorConnectionRunAwaitingSelectionRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: \"connect\",\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"account_selection\",\n authorizationId: input.authorizationId,\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertConnectionRun(record))) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n async claimConnectionRunCallback(\n input: ClaimConnectorConnectionRunCallbackInput\n ): Promise<ClaimConnectorConnectionRunCallbackResult | null> {\n assertPositiveDuration(input.processingTtlMs, \"connection run processing TTL\")\n // Resolve the opaque attempt before entering the connector-scoped critical section. The\n // transaction re-reads every proof, but now all writers acquire the connector lock before row\n // locks instead of letting callback and expiry paths lock attempt/run rows in opposite orders.\n const candidate = await this.read({ projectId: input.projectId }, (persistence) =>\n persistence.getAuthorizationAttempt(input.attemptId)\n )\n if (!candidate) return null\n\n return this.write(\n { projectId: input.projectId, connectorId: candidate.connectorId },\n async (persistence) => {\n const attempt = await persistence.getAuthorizationAttempt(input.attemptId)\n if (\n !attempt ||\n attempt.connectionRunId === undefined ||\n attempt.returnTo === undefined ||\n attempt.callbackBindingHash === undefined ||\n attempt.redirectUri !== input.redirectUri ||\n !safeEqual(attempt.stateHash, input.stateHash) ||\n !safeEqual(attempt.callbackBindingHash, input.callbackBindingHash)\n ) {\n return null\n }\n\n const run = await persistence.getConnectionRun(attempt.connectionRunId)\n if (\n !run ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== attempt.slot ||\n run.initiatedByExecutionId !== attempt.initiatedByExecutionId\n ) {\n return null\n }\n\n const now = await persistence.now()\n await persistence.deleteAuthorizationAttempt(attempt.id)\n if (\n attempt.expiresAt.getTime() <= now.getTime() ||\n run.expiresAt.getTime() <= now.getTime()\n ) {\n const expired: Extract<ConnectorConnectionRunRecord, { status: \"expired\" }> = {\n ...connectionRunBase(run, now),\n status: \"expired\",\n finishedAt: now,\n }\n await persistence.updateConnectionRun(expired)\n return { type: \"expired\", run: structuredClone(expired), returnTo: attempt.returnTo }\n }\n\n const processing: ConnectorConnectionRunProcessingRecord = {\n ...connectionRunBase(run, now),\n status: \"running\",\n processingId: input.processingId,\n callbackStartedAt: now,\n expiresAt: new Date(now.getTime() + input.processingTtlMs),\n ...(attempt.reauthorizationId === undefined\n ? {}\n : { authorizationId: attempt.reauthorizationId }),\n }\n await persistence.updateConnectionRun(processing)\n return {\n type: \"claimed\",\n run: structuredClone(processing),\n attempt: structuredClone(attempt),\n returnTo: attempt.returnTo,\n }\n }\n )\n }\n\n attachConnectionRunAuthorization(\n input: AttachConnectorConnectionRunAuthorizationInput\n ): Promise<ConnectorConnectionRunProcessingRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n const authorization = await persistence.getAuthorization(input.authorizationId)\n if (\n !run ||\n run.status !== \"running\" ||\n run.processingId !== input.processingId ||\n (run.authorizationId !== undefined && run.authorizationId !== input.authorizationId) ||\n !authorization ||\n authorization.status !== \"pending_selection\"\n ) {\n return null\n }\n const updated: ConnectorConnectionRunProcessingRecord = {\n ...run,\n authorizationId: input.authorizationId,\n updatedAt: await persistence.now(),\n }\n await persistence.updateConnectionRun(updated)\n return structuredClone(updated)\n })\n }\n\n waitForConnectionRunSelection(\n input: WaitForConnectorConnectionRunSelectionInput\n ): Promise<ConnectorConnectionRunAwaitingSelectionRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n if (\n !run ||\n run.status !== \"running\" ||\n run.kind !== \"connect\" ||\n run.processingId !== input.processingId ||\n run.authorizationId !== input.authorizationId\n ) {\n return null\n }\n const now = await persistence.now()\n const waiting: ConnectorConnectionRunAwaitingSelectionRecord = {\n ...connectionRunBase(run, now),\n status: \"waiting\",\n waitingFor: \"account_selection\",\n authorizationId: input.authorizationId,\n expiresAt: new Date(input.expiresAt),\n }\n await persistence.updateConnectionRun(waiting)\n return structuredClone(waiting)\n })\n }\n\n finishConnectionRun(\n input: FinishConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n if (!run || run.status !== \"running\" || input.processingId !== run.processingId) return null\n const now = await persistence.now()\n const authorizationId =\n input.status === \"succeeded\"\n ? input.authorizationId\n : input.status === \"failed\"\n ? (input.authorizationId ?? run.authorizationId)\n : run.authorizationId\n if (input.status !== \"succeeded\" && run.kind === \"connect\" && authorizationId) {\n await markPendingAuthorizationForCleanup(persistence, authorizationId, now)\n }\n const base = connectionRunBase(run, now)\n const finished: ConnectorConnectionRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n status: \"succeeded\",\n authorizationId: input.authorizationId,\n ...(input.cleanupAuthorizationId === undefined\n ? {}\n : { cleanupAuthorizationId: input.cleanupAuthorizationId }),\n connections: structuredClone(input.connections),\n finishedAt: now,\n }\n : input.status === \"failed\"\n ? {\n ...base,\n status: \"failed\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n error: parseSixbFailure(input.error, CONNECTOR_CONNECTION_RUN_FAILURE_CODES),\n finishedAt: now,\n }\n : {\n ...base,\n status: \"cancelled\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n finishedAt: now,\n }\n await persistence.updateConnectionRun(finished)\n return structuredClone(finished)\n })\n }\n\n getConnectionRun(\n input: GetConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n return run ? structuredClone(run) : null\n })\n }\n}\n",
|
|
8
|
+
"import { parseSixbFailure } from \"../../../errors/internal\"\nimport { ConnectorConnectionStorageError } from \"../errors\"\nimport type {\n AttachConnectorConnectionRunAuthorizationInput,\n ClaimConnectorConnectionRunCallbackInput,\n ClaimConnectorConnectionRunCallbackResult,\n ConnectorAuthorizationAttemptRecord,\n ConnectorConnectionRunAwaitingProviderRecord,\n ConnectorConnectionRunAwaitingSelectionRecord,\n ConnectorConnectionRunProcessingRecord,\n ConnectorConnectionRunRecord,\n ConnectorConnectionStorage,\n CreateConnectorAuthorizationAttemptInput,\n CreateConnectorConnectionRunInput,\n CreateConnectorConnectionSelectionRunInput,\n FinishConnectorConnectionRunInput,\n GetConnectorConnectionRunInput,\n WaitForConnectorConnectionRunSelectionInput,\n} from \"../types\"\nimport { CONNECTOR_CONNECTION_RUN_FAILURE_CODES } from \"../types\"\nimport {\n assertPositiveDuration,\n authorizationConflict,\n ConnectorConnectionOperations,\n connectionRunBase,\n currentConnectionRun,\n invalidAttempt,\n markPendingAuthorizationForCleanup,\n safeEqual,\n} from \"./shared\"\n\nexport class DurableConnectorConnectionRuns extends ConnectorConnectionOperations {\n createAuthorizationAttempt(\n input: CreateConnectorAuthorizationAttemptInput\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n assertPositiveDuration(input.ttlMs, \"authorization attempt TTL\")\n return this.write(input, async (persistence) => {\n if (input.connectionRunId !== undefined) {\n const run = await persistence.getConnectionRun(input.connectionRunId)\n const existingAttempt = await persistence.getAuthorizationAttemptByConnectionRunId(\n input.connectionRunId\n )\n if (\n !run ||\n existingAttempt ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== input.slot ||\n run.initiatedByExecutionId !== input.initiatedByExecutionId\n ) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt does not match its connection run.\"\n )\n }\n }\n const now = await persistence.now()\n const record: ConnectorAuthorizationAttemptRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n stateHash: input.stateHash,\n ...(input.codeVerifier === undefined\n ? {}\n : { codeVerifier: structuredClone(input.codeVerifier) }),\n redirectUri: input.redirectUri,\n ...(input.connectionRunId === undefined ? {} : { connectionRunId: input.connectionRunId }),\n ...(input.returnTo === undefined ? {} : { returnTo: input.returnTo }),\n ...(input.callbackBindingHash === undefined\n ? {}\n : { callbackBindingHash: input.callbackBindingHash }),\n ...(input.reauthorizationId === undefined\n ? {}\n : { reauthorizationId: input.reauthorizationId }),\n ...(input.reauthorizationRevision === undefined\n ? {}\n : { reauthorizationRevision: input.reauthorizationRevision }),\n ...(input.reauthorizationConnectionIds === undefined\n ? {}\n : { reauthorizationConnectionIds: [...input.reauthorizationConnectionIds] }),\n createdAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertAuthorizationAttempt(record))) {\n throw new ConnectorConnectionStorageError(\n \"attempt_conflict\",\n \"[Sixb] Connector authorization attempt already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n async consumeAuthorizationAttempt(\n input: Parameters<ConnectorConnectionStorage[\"consumeAuthorizationAttempt\"]>[0]\n ): Promise<ConnectorAuthorizationAttemptRecord> {\n const record = await this.write(input, async (persistence) => {\n const record = await persistence.getAuthorizationAttempt(input.id)\n const now = await persistence.now()\n if (record && record.expiresAt.getTime() <= now.getTime()) {\n await persistence.deleteAuthorizationAttempt(record.id)\n return null\n }\n if (\n !record ||\n record.redirectUri !== input.redirectUri ||\n !safeEqual(record.stateHash, input.stateHash)\n ) {\n return null\n }\n\n await persistence.deleteAuthorizationAttempt(input.id)\n return structuredClone(record)\n })\n if (!record) throw invalidAttempt()\n return record\n }\n\n createConnectionRun(\n input: CreateConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n return this.write(input, async (persistence) => {\n const now = await persistence.now()\n const record: ConnectorConnectionRunAwaitingProviderRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: input.kind,\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"provider_authorization\",\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertConnectionRun(record))) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n createConnectionSelectionRun(\n input: CreateConnectorConnectionSelectionRunInput\n ): Promise<ConnectorConnectionRunAwaitingSelectionRecord> {\n assertPositiveDuration(input.ttlMs, \"connection run TTL\")\n return this.write(input, async (persistence) => {\n const authorization = await persistence.getAuthorization(input.authorizationId)\n if (!authorization || authorization.status !== \"active\" || authorization.credentialMutation) {\n throw authorizationConflict()\n }\n const now = await persistence.now()\n const record: ConnectorConnectionRunAwaitingSelectionRecord = {\n id: input.id,\n projectId: input.projectId,\n connectorId: input.connectorId,\n kind: \"connect\",\n owner: structuredClone(input.owner),\n slot: input.slot,\n initiatedByExecutionId: input.initiatedByExecutionId,\n status: \"waiting\",\n waitingFor: \"account_selection\",\n authorizationId: input.authorizationId,\n createdAt: now,\n updatedAt: now,\n expiresAt: new Date(now.getTime() + input.ttlMs),\n }\n if (!(await persistence.insertConnectionRun(record))) {\n throw new ConnectorConnectionStorageError(\n \"run_conflict\",\n \"[Sixb] Connector connection run already exists.\"\n )\n }\n return structuredClone(record)\n })\n }\n\n async claimConnectionRunCallback(\n input: ClaimConnectorConnectionRunCallbackInput\n ): Promise<ClaimConnectorConnectionRunCallbackResult | null> {\n assertPositiveDuration(input.processingTtlMs, \"connection run processing TTL\")\n // Resolve the opaque attempt before entering the connector-scoped critical section. The\n // transaction re-reads every proof, but now all writers acquire the connector lock before row\n // locks instead of letting callback and expiry paths lock attempt/run rows in opposite orders.\n const candidate = await this.read({ projectId: input.projectId }, (persistence) =>\n persistence.getAuthorizationAttempt(input.attemptId)\n )\n if (!candidate) return null\n\n return this.write(\n { projectId: input.projectId, connectorId: candidate.connectorId },\n async (persistence) => {\n const attempt = await persistence.getAuthorizationAttempt(input.attemptId)\n if (\n !attempt ||\n attempt.connectionRunId === undefined ||\n attempt.returnTo === undefined ||\n attempt.callbackBindingHash === undefined ||\n attempt.redirectUri !== input.redirectUri ||\n !safeEqual(attempt.stateHash, input.stateHash) ||\n !safeEqual(attempt.callbackBindingHash, input.callbackBindingHash)\n ) {\n return null\n }\n\n const run = await persistence.getConnectionRun(attempt.connectionRunId)\n if (\n !run ||\n run.status !== \"waiting\" ||\n run.waitingFor !== \"provider_authorization\" ||\n run.slot !== attempt.slot ||\n run.initiatedByExecutionId !== attempt.initiatedByExecutionId\n ) {\n return null\n }\n\n const now = await persistence.now()\n await persistence.deleteAuthorizationAttempt(attempt.id)\n if (\n attempt.expiresAt.getTime() <= now.getTime() ||\n run.expiresAt.getTime() <= now.getTime()\n ) {\n const expired: Extract<ConnectorConnectionRunRecord, { status: \"expired\" }> = {\n ...connectionRunBase(run, now),\n status: \"expired\",\n finishedAt: now,\n }\n await persistence.updateConnectionRun(expired)\n return { type: \"expired\", run: structuredClone(expired), returnTo: attempt.returnTo }\n }\n\n const processing: ConnectorConnectionRunProcessingRecord = {\n ...connectionRunBase(run, now),\n status: \"running\",\n processingId: input.processingId,\n callbackStartedAt: now,\n expiresAt: new Date(now.getTime() + input.processingTtlMs),\n ...(attempt.reauthorizationId === undefined\n ? {}\n : { authorizationId: attempt.reauthorizationId }),\n }\n await persistence.updateConnectionRun(processing)\n return {\n type: \"claimed\",\n run: structuredClone(processing),\n attempt: structuredClone(attempt),\n returnTo: attempt.returnTo,\n }\n }\n )\n }\n\n attachConnectionRunAuthorization(\n input: AttachConnectorConnectionRunAuthorizationInput\n ): Promise<ConnectorConnectionRunProcessingRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n const authorization = await persistence.getAuthorization(input.authorizationId)\n if (\n !run ||\n run.status !== \"running\" ||\n run.processingId !== input.processingId ||\n (run.authorizationId !== undefined && run.authorizationId !== input.authorizationId) ||\n !authorization ||\n authorization.status !== \"pending_selection\"\n ) {\n return null\n }\n const updated: ConnectorConnectionRunProcessingRecord = {\n ...run,\n authorizationId: input.authorizationId,\n updatedAt: await persistence.now(),\n }\n await persistence.updateConnectionRun(updated)\n return structuredClone(updated)\n })\n }\n\n waitForConnectionRunSelection(\n input: WaitForConnectorConnectionRunSelectionInput\n ): Promise<ConnectorConnectionRunAwaitingSelectionRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n if (\n !run ||\n run.status !== \"running\" ||\n run.kind !== \"connect\" ||\n run.processingId !== input.processingId ||\n run.authorizationId !== input.authorizationId\n ) {\n return null\n }\n const now = await persistence.now()\n const waiting: ConnectorConnectionRunAwaitingSelectionRecord = {\n ...connectionRunBase(run, now),\n status: \"waiting\",\n waitingFor: \"account_selection\",\n authorizationId: input.authorizationId,\n expiresAt: new Date(input.expiresAt),\n }\n await persistence.updateConnectionRun(waiting)\n return structuredClone(waiting)\n })\n }\n\n finishConnectionRun(\n input: FinishConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n if (!run || run.status !== \"running\" || input.processingId !== run.processingId) return null\n const now = await persistence.now()\n const authorizationId =\n input.status === \"succeeded\"\n ? input.authorizationId\n : input.status === \"failed\"\n ? (input.authorizationId ?? run.authorizationId)\n : run.authorizationId\n if (input.status !== \"succeeded\" && run.kind === \"connect\" && authorizationId) {\n await markPendingAuthorizationForCleanup(persistence, authorizationId, now)\n }\n const base = connectionRunBase(run, now)\n const finished: ConnectorConnectionRunRecord =\n input.status === \"succeeded\"\n ? {\n ...base,\n status: \"succeeded\",\n authorizationId: input.authorizationId,\n ...(input.cleanupAuthorizationId === undefined\n ? {}\n : { cleanupAuthorizationId: input.cleanupAuthorizationId }),\n connections: structuredClone(input.connections),\n finishedAt: now,\n }\n : input.status === \"failed\"\n ? {\n ...base,\n status: \"failed\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n error: parseSixbFailure(input.error, CONNECTOR_CONNECTION_RUN_FAILURE_CODES),\n finishedAt: now,\n }\n : {\n ...base,\n status: \"cancelled\",\n ...(authorizationId === undefined ? {} : { authorizationId }),\n finishedAt: now,\n }\n await persistence.updateConnectionRun(finished)\n return structuredClone(finished)\n })\n }\n\n getConnectionRun(\n input: GetConnectorConnectionRunInput\n ): Promise<ConnectorConnectionRunRecord | null> {\n return this.write(input, async (persistence) => {\n const run = await currentConnectionRun(persistence, input.runId)\n return run ? structuredClone(run) : null\n })\n }\n}\n",
|
|
9
9
|
"import { DurableConnectorAuthorizations } from \"./provider/authorizations\"\nimport { DurableConnectorConnections } from \"./provider/connections\"\nimport { DurableConnectorConnectionRuns } from \"./provider/runs\"\nimport type { ConnectorConnectionPersistenceBackend } from \"./provider/shared\"\nimport type { ConnectorConnectionStorage } from \"./types\"\n\nexport type {\n ConnectorConnectionPersistence,\n ConnectorConnectionPersistenceBackend,\n ConnectorConnectionPersistenceScope,\n} from \"./provider/shared\"\n\n/**\n * Shared durable implementation of the Connector connection lifecycle.\n *\n * Concrete providers own SQL, transactions, database time and per-connector serialization. The\n * focused services below own protocol runs, authorization mutations and stable connections so\n * SQLite and PostgreSQL cannot drift semantically.\n */\nexport class DurableConnectorConnectionStorage implements ConnectorConnectionStorage {\n readonly durability = \"durable\" as const\n private readonly runs: DurableConnectorConnectionRuns\n private readonly authorizations: DurableConnectorAuthorizations\n private readonly connections: DurableConnectorConnections\n\n constructor(backend: ConnectorConnectionPersistenceBackend) {\n this.runs = new DurableConnectorConnectionRuns(backend)\n this.authorizations = new DurableConnectorAuthorizations(backend)\n this.connections = new DurableConnectorConnections(backend)\n }\n\n async createAuthorizationAttempt(\n ...args: Parameters<ConnectorConnectionStorage[\"createAuthorizationAttempt\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"createAuthorizationAttempt\"]>>> {\n return this.runs.createAuthorizationAttempt(...args)\n }\n\n async consumeAuthorizationAttempt(\n ...args: Parameters<ConnectorConnectionStorage[\"consumeAuthorizationAttempt\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"consumeAuthorizationAttempt\"]>>> {\n return this.runs.consumeAuthorizationAttempt(...args)\n }\n\n async createConnectionRun(\n ...args: Parameters<ConnectorConnectionStorage[\"createConnectionRun\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"createConnectionRun\"]>>> {\n return this.runs.createConnectionRun(...args)\n }\n\n async createConnectionSelectionRun(\n ...args: Parameters<ConnectorConnectionStorage[\"createConnectionSelectionRun\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"createConnectionSelectionRun\"]>>> {\n return this.runs.createConnectionSelectionRun(...args)\n }\n\n async claimConnectionRunCallback(\n ...args: Parameters<ConnectorConnectionStorage[\"claimConnectionRunCallback\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"claimConnectionRunCallback\"]>>> {\n return this.runs.claimConnectionRunCallback(...args)\n }\n\n async attachConnectionRunAuthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"attachConnectionRunAuthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"attachConnectionRunAuthorization\"]>>> {\n return this.runs.attachConnectionRunAuthorization(...args)\n }\n\n async waitForConnectionRunSelection(\n ...args: Parameters<ConnectorConnectionStorage[\"waitForConnectionRunSelection\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"waitForConnectionRunSelection\"]>>> {\n return this.runs.waitForConnectionRunSelection(...args)\n }\n\n async finishConnectionRun(\n ...args: Parameters<ConnectorConnectionStorage[\"finishConnectionRun\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"finishConnectionRun\"]>>> {\n return this.runs.finishConnectionRun(...args)\n }\n\n async getConnectionRun(\n ...args: Parameters<ConnectorConnectionStorage[\"getConnectionRun\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"getConnectionRun\"]>>> {\n return this.runs.getConnectionRun(...args)\n }\n\n async createAuthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"createAuthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"createAuthorization\"]>>> {\n return this.authorizations.createAuthorization(...args)\n }\n\n async initializeAuthorizationAccounts(\n ...args: Parameters<ConnectorConnectionStorage[\"initializeAuthorizationAccounts\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"initializeAuthorizationAccounts\"]>>> {\n return this.authorizations.initializeAuthorizationAccounts(...args)\n }\n\n async getAuthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"getAuthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"getAuthorization\"]>>> {\n return this.authorizations.getAuthorization(...args)\n }\n\n async getAuthorizationByConnectionId(\n ...args: Parameters<ConnectorConnectionStorage[\"getAuthorizationByConnectionId\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"getAuthorizationByConnectionId\"]>>> {\n return this.authorizations.getAuthorizationByConnectionId(...args)\n }\n\n async claimCredentialMutation(\n ...args: Parameters<ConnectorConnectionStorage[\"claimCredentialMutation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"claimCredentialMutation\"]>>> {\n return this.authorizations.claimCredentialMutation(...args)\n }\n\n async markCredentialMutationExecuting(\n ...args: Parameters<ConnectorConnectionStorage[\"markCredentialMutationExecuting\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"markCredentialMutationExecuting\"]>>> {\n return this.authorizations.markCredentialMutationExecuting(...args)\n }\n\n async renewCredentialMutation(\n ...args: Parameters<ConnectorConnectionStorage[\"renewCredentialMutation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"renewCredentialMutation\"]>>> {\n return this.authorizations.renewCredentialMutation(...args)\n }\n\n async stageCredentialMutationCredentials(\n ...args: Parameters<ConnectorConnectionStorage[\"stageCredentialMutationCredentials\"]>\n ): Promise<\n Awaited<ReturnType<ConnectorConnectionStorage[\"stageCredentialMutationCredentials\"]>>\n > {\n return this.authorizations.stageCredentialMutationCredentials(...args)\n }\n\n async stageCredentialMutationRevocation(\n ...args: Parameters<ConnectorConnectionStorage[\"stageCredentialMutationRevocation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"stageCredentialMutationRevocation\"]>>> {\n return this.authorizations.stageCredentialMutationRevocation(...args)\n }\n\n async releaseCredentialMutation(\n ...args: Parameters<ConnectorConnectionStorage[\"releaseCredentialMutation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"releaseCredentialMutation\"]>>> {\n return this.authorizations.releaseCredentialMutation(...args)\n }\n\n async recoverExpiredCredentialMutation(\n ...args: Parameters<ConnectorConnectionStorage[\"recoverExpiredCredentialMutation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"recoverExpiredCredentialMutation\"]>>> {\n return this.authorizations.recoverExpiredCredentialMutation(...args)\n }\n\n async markNeedsReauthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"markNeedsReauthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"markNeedsReauthorization\"]>>> {\n return this.authorizations.markNeedsReauthorization(...args)\n }\n\n async finalizeRefresh(\n ...args: Parameters<ConnectorConnectionStorage[\"finalizeRefresh\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"finalizeRefresh\"]>>> {\n return this.authorizations.finalizeRefresh(...args)\n }\n\n async finalizeReauthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"finalizeReauthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"finalizeReauthorization\"]>>> {\n return this.authorizations.finalizeReauthorization(...args)\n }\n\n async finalizeRevocation(\n ...args: Parameters<ConnectorConnectionStorage[\"finalizeRevocation\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"finalizeRevocation\"]>>> {\n return this.authorizations.finalizeRevocation(...args)\n }\n\n async putConnection(\n ...args: Parameters<ConnectorConnectionStorage[\"putConnection\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"putConnection\"]>>> {\n return this.connections.putConnection(...args)\n }\n\n async putConnectionFromRun(\n ...args: Parameters<ConnectorConnectionStorage[\"putConnectionFromRun\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"putConnectionFromRun\"]>>> {\n return this.connections.putConnectionFromRun(...args)\n }\n\n async getConnection(\n ...args: Parameters<ConnectorConnectionStorage[\"getConnection\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"getConnection\"]>>> {\n return this.connections.getConnection(...args)\n }\n\n async getConnectionById(\n ...args: Parameters<ConnectorConnectionStorage[\"getConnectionById\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"getConnectionById\"]>>> {\n return this.connections.getConnectionById(...args)\n }\n\n async listConnections(\n ...args: Parameters<ConnectorConnectionStorage[\"listConnections\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"listConnections\"]>>> {\n return this.connections.listConnections(...args)\n }\n\n async listConnectionsByAuthorization(\n ...args: Parameters<ConnectorConnectionStorage[\"listConnectionsByAuthorization\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"listConnectionsByAuthorization\"]>>> {\n return this.connections.listConnectionsByAuthorization(...args)\n }\n\n async disconnectConnection(\n ...args: Parameters<ConnectorConnectionStorage[\"disconnectConnection\"]>\n ): Promise<Awaited<ReturnType<ConnectorConnectionStorage[\"disconnectConnection\"]>>> {\n return this.connections.disconnectConnection(...args)\n }\n}\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "20536B53DD385A8C64756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
|
@@ -149,7 +149,8 @@ export interface ConnectorAuthorizationAttemptRecord extends ConnectorConnection
|
|
|
149
149
|
/** Durable execution that initiated and authorizes completion of this OAuth attempt. */
|
|
150
150
|
readonly initiatedByExecutionId: string;
|
|
151
151
|
readonly stateHash: string;
|
|
152
|
-
|
|
152
|
+
/** Absent when the authorization attempt explicitly disabled PKCE. */
|
|
153
|
+
readonly codeVerifier?: SealedConnectorCredential;
|
|
153
154
|
readonly redirectUri: string;
|
|
154
155
|
/** Present only for attempts created by the headless connection-run API. */
|
|
155
156
|
readonly connectionRunId?: string;
|
|
@@ -169,7 +170,7 @@ export interface CreateConnectorAuthorizationAttemptInput extends ConnectorConne
|
|
|
169
170
|
readonly connectorId: string;
|
|
170
171
|
readonly initiatedByExecutionId: string;
|
|
171
172
|
readonly stateHash: string;
|
|
172
|
-
readonly codeVerifier
|
|
173
|
+
readonly codeVerifier?: SealedConnectorCredential;
|
|
173
174
|
readonly redirectUri: string;
|
|
174
175
|
readonly connectionRunId?: string;
|
|
175
176
|
readonly returnTo?: string;
|