@sixb/core 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +77 -89
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +2 -0
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +33 -37
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/adapters.d.ts +3 -3
- package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
- package/dist/agents/context/entries.d.ts.map +1 -0
- package/dist/agents/context/index.d.ts +4 -0
- package/dist/agents/context/index.d.ts.map +1 -0
- package/dist/agents/context/index.js +19 -0
- package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
- package/dist/agents/context-model.d.ts +1 -1
- package/dist/agents/context-model.d.ts.map +1 -1
- package/dist/agents/context-resolution.d.ts +1 -1
- package/dist/agents/context-resolution.d.ts.map +1 -1
- package/dist/agents/index.d.ts +4 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +192 -204
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +1 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +2 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/request.d.ts +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams/index.d.ts +4 -0
- package/dist/agents/streams/index.d.ts.map +1 -0
- package/dist/agents/streams/index.js +20 -0
- package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
- package/dist/agents/streams/internal.d.ts +3 -0
- package/dist/agents/streams/internal.d.ts.map +1 -0
- package/dist/agents/streams/internal.js +40 -0
- package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
- package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
- package/dist/agents/streams/protocol.d.ts.map +1 -0
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +96 -108
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/strategy.js +8 -9
- package/dist/auth/strategy.js.map +1 -1
- package/dist/authorization/index.js +51 -56
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/browser.js +15 -17
- package/dist/blob-storage/browser.js.map +1 -1
- package/dist/blob-storage/index.js +36 -38
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/bootstrap/discovery.d.ts +14 -1
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -2
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +79 -88
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/index.js +8 -10
- package/dist/broker/index.js.map +1 -1
- package/dist/{chunk-k34z5rvh.js → chunk-0rdrecsb.js} +18 -18
- package/dist/{chunk-k34z5rvh.js.map → chunk-0rdrecsb.js.map} +2 -2
- package/dist/{chunk-q0k9nc5a.js → chunk-0w35wavj.js} +98 -98
- package/dist/{chunk-q0k9nc5a.js.map → chunk-0w35wavj.js.map} +2 -2
- package/dist/chunk-0y39rgsb.js +43 -0
- package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
- package/dist/{chunk-k522z7v6.js → chunk-17kfctj6.js} +16 -11
- package/dist/chunk-17kfctj6.js.map +10 -0
- package/dist/{chunk-aa2pen2v.js → chunk-1enhpacz.js} +188 -175
- package/dist/{chunk-aa2pen2v.js.map → chunk-1enhpacz.js.map} +2 -2
- package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
- package/dist/{chunk-5gd7tpv6.js.map → chunk-2c4j899j.js.map} +2 -2
- package/dist/{chunk-fvt9rjsa.js → chunk-38zv5rkr.js} +4 -4
- package/dist/{chunk-fvt9rjsa.js.map → chunk-38zv5rkr.js.map} +1 -1
- package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
- package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
- package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
- package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
- package/dist/{chunk-8m5ejdpn.js → chunk-3f7veca0.js} +4 -4
- package/dist/{chunk-8m5ejdpn.js.map → chunk-3f7veca0.js.map} +2 -2
- package/dist/chunk-3frsnm7x.js +32 -0
- package/dist/chunk-3frsnm7x.js.map +11 -0
- package/dist/{chunk-n2w475r0.js → chunk-3tgwrcyh.js} +81 -81
- package/dist/{chunk-n2w475r0.js.map → chunk-3tgwrcyh.js.map} +2 -2
- package/dist/{chunk-mwsxn98e.js → chunk-52hbv0ak.js} +170 -170
- package/dist/{chunk-mwsxn98e.js.map → chunk-52hbv0ak.js.map} +4 -4
- package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
- package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
- package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
- package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
- package/dist/chunk-653vwrzr.js +39 -0
- package/dist/chunk-653vwrzr.js.map +10 -0
- package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
- package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
- package/dist/chunk-7apz6hg4.js +50 -0
- package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
- package/dist/chunk-7bs40fe1.js +218 -0
- package/dist/{chunk-p1rzczbt.js.map → chunk-7bs40fe1.js.map} +3 -3
- package/dist/chunk-7zgecwy1.js +113 -0
- package/dist/chunk-7zgecwy1.js.map +10 -0
- package/dist/{chunk-pc7ys28c.js → chunk-860dwwy0.js} +29 -29
- package/dist/{chunk-pc7ys28c.js.map → chunk-860dwwy0.js.map} +2 -2
- package/dist/chunk-8vj0rjgs.js +165 -0
- package/dist/chunk-8vj0rjgs.js.map +15 -0
- package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
- package/dist/chunk-92vk7gta.js.map +10 -0
- package/dist/{chunk-rafagrwr.js → chunk-93csa55g.js} +45 -17
- package/dist/chunk-93csa55g.js.map +11 -0
- package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
- package/dist/chunk-98cw09sw.js.map +10 -0
- package/dist/{chunk-n4khvw9n.js → chunk-9qsh3p5y.js} +17 -17
- package/dist/{chunk-n4khvw9n.js.map → chunk-9qsh3p5y.js.map} +2 -2
- package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
- package/dist/{chunk-9nbmsvn5.js → chunk-9vx5e9g1.js} +9 -9
- package/dist/{chunk-9nbmsvn5.js.map → chunk-9vx5e9g1.js.map} +2 -2
- package/dist/{chunk-f26bck4t.js → chunk-an5tt9y0.js} +353 -353
- package/dist/{chunk-f26bck4t.js.map → chunk-an5tt9y0.js.map} +2 -2
- package/dist/{chunk-2dw777qw.js → chunk-ap0g1g74.js} +37 -82
- package/dist/{chunk-2dw777qw.js.map → chunk-ap0g1g74.js.map} +3 -4
- package/dist/{chunk-v4en4jc2.js → chunk-awbhdqyc.js} +7 -7
- package/dist/{chunk-v4en4jc2.js.map → chunk-awbhdqyc.js.map} +2 -2
- package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
- package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
- package/dist/{chunk-nx7k8tpr.js → chunk-br3k6qbf.js} +23 -23
- package/dist/{chunk-nx7k8tpr.js.map → chunk-br3k6qbf.js.map} +2 -2
- package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
- package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
- package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
- package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
- package/dist/chunk-d62kjtbg.js +7 -0
- package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
- package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
- package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
- package/dist/{chunk-5e3pq99w.js → chunk-dmn70ztd.js} +30 -30
- package/dist/chunk-dmn70ztd.js.map +11 -0
- package/dist/{chunk-p1x242ad.js → chunk-dz5h08xv.js} +175 -175
- package/dist/{chunk-p1x242ad.js.map → chunk-dz5h08xv.js.map} +2 -2
- package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
- package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
- package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
- package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
- package/dist/{chunk-wtf06et8.js → chunk-emyyk7dx.js} +55 -55
- package/dist/{chunk-wtf06et8.js.map → chunk-emyyk7dx.js.map} +2 -2
- package/dist/{chunk-19jp6g9d.js → chunk-f0rwz2vh.js} +54 -33
- package/dist/chunk-f0rwz2vh.js.map +11 -0
- package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
- package/dist/chunk-f4w3yp4f.js.map +12 -0
- package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
- package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
- package/dist/{chunk-4sm0aznx.js → chunk-g00bfdq6.js} +254 -256
- package/dist/{chunk-4sm0aznx.js.map → chunk-g00bfdq6.js.map} +3 -3
- package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
- package/dist/chunk-g53f0e4j.js.map +15 -0
- package/dist/chunk-g6cke204.js +124 -0
- package/dist/chunk-g6cke204.js.map +10 -0
- package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
- package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
- package/dist/chunk-h1gfhhbh.js +602 -0
- package/dist/chunk-h1gfhhbh.js.map +18 -0
- package/dist/chunk-h3v76ams.js +32 -0
- package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
- package/dist/{chunk-xajtptbw.js → chunk-hpr1r6av.js} +1367 -418
- package/dist/chunk-hpr1r6av.js.map +44 -0
- package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
- package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
- package/dist/{chunk-w9tg6yyb.js → chunk-jjy0fhrn.js} +36 -36
- package/dist/{chunk-w9tg6yyb.js.map → chunk-jjy0fhrn.js.map} +2 -2
- package/dist/{chunk-wdage1eb.js → chunk-jmfet9r4.js} +6 -6
- package/dist/{chunk-wdage1eb.js.map → chunk-jmfet9r4.js.map} +2 -2
- package/dist/{chunk-ajnan18g.js → chunk-k3cqkkn2.js} +58 -55
- package/dist/chunk-k3cqkkn2.js.map +12 -0
- package/dist/{chunk-s5y30bc9.js → chunk-kxwa347f.js} +51 -49
- package/dist/{chunk-s5y30bc9.js.map → chunk-kxwa347f.js.map} +4 -4
- package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
- package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
- package/dist/{chunk-3z1qec12.js → chunk-m3z3x9v0.js} +107 -64
- package/dist/{chunk-3z1qec12.js.map → chunk-m3z3x9v0.js.map} +3 -3
- package/dist/{chunk-sbzzr4kx.js → chunk-mjbk2djy.js} +1061 -1195
- package/dist/{chunk-sbzzr4kx.js.map → chunk-mjbk2djy.js.map} +9 -15
- package/dist/{chunk-4jjp5k14.js → chunk-mmagke4x.js} +6 -6
- package/dist/{chunk-4jjp5k14.js.map → chunk-mmagke4x.js.map} +2 -2
- package/dist/{chunk-359jm1jw.js → chunk-mrp7k0pw.js} +20 -20
- package/dist/{chunk-359jm1jw.js.map → chunk-mrp7k0pw.js.map} +2 -2
- package/dist/{chunk-h0k55pc7.js → chunk-ms2tmn1k.js} +139 -139
- package/dist/{chunk-h0k55pc7.js.map → chunk-ms2tmn1k.js.map} +2 -2
- package/dist/{chunk-rv2hkwwa.js → chunk-ppytyr6w.js} +156 -179
- package/dist/{chunk-rv2hkwwa.js.map → chunk-ppytyr6w.js.map} +3 -5
- package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
- package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
- package/dist/{chunk-nn0tekr1.js → chunk-pr2h4bv4.js} +33 -33
- package/dist/{chunk-nn0tekr1.js.map → chunk-pr2h4bv4.js.map} +2 -2
- package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
- package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
- package/dist/{chunk-5ntny1qx.js → chunk-qf954wje.js} +6 -6
- package/dist/{chunk-5ntny1qx.js.map → chunk-qf954wje.js.map} +2 -2
- package/dist/{chunk-mth82m8t.js → chunk-qhcpj9wc.js} +77 -77
- package/dist/{chunk-mth82m8t.js.map → chunk-qhcpj9wc.js.map} +2 -2
- package/dist/{chunk-tpnd31c1.js → chunk-r29fxdhn.js} +12 -12
- package/dist/{chunk-tpnd31c1.js.map → chunk-r29fxdhn.js.map} +2 -2
- package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
- package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
- package/dist/{chunk-3xep5cjx.js → chunk-r4tfx1sf.js} +104 -86
- package/dist/chunk-r4tfx1sf.js.map +15 -0
- package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
- package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
- package/dist/chunk-s3csryxe.js +152 -0
- package/dist/chunk-s3csryxe.js.map +11 -0
- package/dist/chunk-s670k14v.js +60 -0
- package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
- package/dist/chunk-skz0hst3.js +788 -0
- package/dist/chunk-skz0hst3.js.map +19 -0
- package/dist/{chunk-r8jrnexe.js → chunk-v4jbb3rs.js} +4 -4
- package/dist/{chunk-r8jrnexe.js.map → chunk-v4jbb3rs.js.map} +2 -2
- package/dist/{chunk-v1xppd0y.js → chunk-vf691g1r.js} +60 -60
- package/dist/{chunk-v1xppd0y.js.map → chunk-vf691g1r.js.map} +2 -2
- package/dist/{chunk-w1tvjszy.js → chunk-vsj3mdfj.js} +8 -8
- package/dist/{chunk-w1tvjszy.js.map → chunk-vsj3mdfj.js.map} +2 -2
- package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
- package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
- package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
- package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
- package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
- package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
- package/dist/{chunk-8tsf6dmc.js → chunk-x57ycxq0.js} +204 -204
- package/dist/{chunk-8tsf6dmc.js.map → chunk-x57ycxq0.js.map} +2 -2
- package/dist/{chunk-z4ccwbkz.js → chunk-x9v4cx1d.js} +1 -1
- package/dist/{chunk-gbejpkex.js → chunk-xfbydgzy.js} +26 -26
- package/dist/{chunk-gbejpkex.js.map → chunk-xfbydgzy.js.map} +2 -2
- package/dist/{chunk-gzasd5b6.js → chunk-xyr8kppc.js} +22 -22
- package/dist/{chunk-gzasd5b6.js.map → chunk-xyr8kppc.js.map} +2 -2
- package/dist/{chunk-h5vqbfmd.js → chunk-ypbtykv6.js} +117 -117
- package/dist/{chunk-h5vqbfmd.js.map → chunk-ypbtykv6.js.map} +3 -3
- package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
- package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
- package/dist/{chunk-yp8ee62z.js → chunk-z30bv4ga.js} +35 -35
- package/dist/{chunk-yp8ee62z.js.map → chunk-z30bv4ga.js.map} +2 -2
- package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
- package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
- package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
- package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
- package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
- package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
- package/dist/{chunk-4yqmp43v.js → chunk-z8fx5cgb.js} +12 -12
- package/dist/{chunk-4yqmp43v.js.map → chunk-z8fx5cgb.js.map} +2 -2
- package/dist/{chunk-xhy826cz.js → chunk-zcnq6105.js} +7 -7
- package/dist/{chunk-xhy826cz.js.map → chunk-zcnq6105.js.map} +2 -2
- package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
- package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
- package/dist/connectors/connections/internal.js +9 -10
- package/dist/connectors/connections/internal.js.map +1 -1
- package/dist/datasets/write.js +8 -12
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/index.js +7 -8
- package/dist/edits/index.js.map +1 -1
- package/dist/error-reporting/internal.js +22 -24
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/errors/internal.d.ts +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +22 -24
- package/dist/errors/internal.js.map +1 -1
- package/dist/errors/redaction.d.ts +8 -0
- package/dist/errors/redaction.d.ts.map +1 -0
- package/dist/errors/types.d.ts +4 -0
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/events/index.js +60 -63
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.js +4 -5
- package/dist/events/scope.js.map +1 -1
- package/dist/events/selectors/index.js +9 -10
- package/dist/events/selectors/index.js.map +1 -1
- package/dist/execution/agent.d.ts +3 -3
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +70 -82
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/durable.d.ts +1 -0
- package/dist/execution/durable.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +2 -0
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +63 -71
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -0
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +65 -75
- package/dist/execution/request.js.map +3 -3
- package/dist/http/index.js +10 -11
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +14 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +455 -477
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +38 -42
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/logging/index.d.ts +3 -4
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +18 -40
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/internal.d.ts +5 -0
- package/dist/logging/internal.d.ts.map +1 -0
- package/dist/logging/internal.js +43 -0
- package/dist/logging/internal.js.map +9 -0
- package/dist/materialization/index.js +46 -49
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/index.js +137 -145
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/errors.d.ts +4 -0
- package/dist/models/errors.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +9 -0
- package/dist/models/execution/binding.d.ts.map +1 -0
- package/dist/models/execution/errors.d.ts +9 -0
- package/dist/models/execution/errors.d.ts.map +1 -0
- package/dist/models/execution/index.d.ts +11 -0
- package/dist/models/execution/index.d.ts.map +1 -0
- package/dist/models/execution/index.js +55 -0
- package/dist/models/execution/index.js.map +9 -0
- package/dist/models/execution/model-call-accounting.d.ts +17 -0
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
- package/dist/models/execution/model-call-admission.d.ts +47 -0
- package/dist/models/execution/model-call-admission.d.ts.map +1 -0
- package/dist/models/execution/model-call-limits.d.ts +15 -0
- package/dist/models/execution/model-call-limits.d.ts.map +1 -0
- package/dist/models/execution/model-call-recorder.d.ts +40 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
- package/dist/models/execution/model-call-recovery.d.ts +12 -0
- package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
- package/dist/models/execution/recovery-queue.d.ts +5 -0
- package/dist/models/execution/recovery-queue.d.ts.map +1 -0
- package/dist/models/execution/types.d.ts +44 -0
- package/dist/models/execution/types.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts +5 -0
- package/dist/models/execution/usage.d.ts.map +1 -0
- package/dist/models/execution.d.ts +6 -0
- package/dist/models/execution.d.ts.map +1 -0
- package/dist/models/generation-types.d.ts +40 -0
- package/dist/models/generation-types.d.ts.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +42 -43
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +3 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/output.d.ts +5 -0
- package/dist/models/output.d.ts.map +1 -0
- package/dist/models/resolve.d.ts +4 -0
- package/dist/models/resolve.d.ts.map +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +75 -87
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +67 -76
- package/dist/objects/query/index.js.map +1 -1
- package/dist/ontology/index.d.ts +1 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +62 -113
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.d.ts +7 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +65 -116
- package/dist/ontology/internal.js.map +3 -4
- package/dist/pipelines/index.js +57 -66
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +58 -67
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +0 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +11 -15
- package/dist/query.js.map +1 -1
- package/dist/queues/index.d.ts +2 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +6 -7
- package/dist/queues/index.js.map +1 -1
- package/dist/queues/types.d.ts +3 -20
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/rules/internal.js +4 -5
- package/dist/rules/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +2 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +2 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.js +13 -14
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/sandboxes/errors.d.ts +4 -0
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +2 -2
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +14 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -7
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/scheduler/index.js +9 -10
- package/dist/scheduler/index.js.map +1 -1
- package/dist/schedules/index.js +31 -33
- package/dist/schedules/index.js.map +1 -1
- package/dist/shares/internal.js +46 -54
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +7 -9
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +4 -8
- package/dist/storage/action-runs/provider.js.map +1 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +26 -30
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +0 -3
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/attribution.d.ts +4 -0
- package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
- package/dist/storage/ai-cost/groups.d.ts +3 -0
- package/dist/storage/ai-cost/groups.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.d.ts +1 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +30 -143
- package/dist/storage/ai-cost/provider.js.map +3 -4
- package/dist/storage/ai-cost/types.d.ts +15 -0
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +14 -16
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.js +56 -57
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/auth/in-memory.d.ts +1 -1
- package/dist/storage/auth/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +34 -36
- package/dist/storage/connector-connections/provider.js.map +2 -2
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -1
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +14 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +6 -2
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts +2 -0
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +221 -256
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +10 -0
- package/dist/storage/internal.d.ts.map +1 -0
- package/dist/storage/internal.js +47 -0
- package/dist/storage/internal.js.map +9 -0
- package/dist/storage/ontology/provider.js +105 -109
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/operation-scope.js +18 -19
- package/dist/storage/operation-scope.js.map +1 -1
- package/dist/storage/pipeline-runs/provider.js +4 -6
- package/dist/storage/pipeline-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/provider.js +66 -70
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/share-grants/provider.js +17 -19
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/share-sessions/provider.js +14 -15
- package/dist/storage/share-sessions/provider.js.map +1 -1
- package/dist/storage/sync-runs/provider.js +4 -6
- package/dist/storage/sync-runs/provider.js.map +1 -1
- package/dist/storage/webhook-runs/provider.js +4 -6
- package/dist/storage/webhook-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +13 -21
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +0 -3
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +55 -65
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -1
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/agent-execution.d.ts +1 -0
- package/dist/testing/agent-execution.d.ts.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -0
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/index.js +911 -799
- package/dist/testing/index.js.map +9 -9
- package/dist/testing/workflow-execution.d.ts +1 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -1
- package/dist/webhooks/internal.js +51 -59
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +11 -13
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts +2 -0
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +135 -147
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/run-dispatch.d.ts +0 -1
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +48 -30
- package/src/actions/run-dispatch.ts +2 -6
- package/src/actions/types/context.ts +2 -0
- package/src/actions/validation.ts +2 -1
- package/src/agents/adapters.ts +4 -9
- package/src/agents/{context.ts → context/entries.ts} +4 -4
- package/src/agents/context/index.ts +15 -0
- package/src/agents/context-model.ts +1 -1
- package/src/agents/context-resolution.ts +1 -1
- package/src/agents/index.ts +4 -4
- package/src/agents/message.ts +1 -1
- package/src/agents/model-loop.ts +8 -0
- package/src/agents/request.ts +11 -26
- package/src/agents/streams/index.ts +18 -0
- package/src/agents/streams/internal.ts +19 -0
- package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
- package/src/agents/types.ts +1 -1
- package/src/agents/validation.ts +3 -7
- package/src/auth/index.ts +0 -1
- package/src/bootstrap/discovery.ts +81 -24
- package/src/bootstrap/index.ts +8 -1
- package/src/errors/internal.ts +90 -10
- package/src/errors/redaction.ts +98 -0
- package/src/errors/types.ts +4 -0
- package/src/execution/agent.ts +5 -3
- package/src/execution/durable.ts +11 -1
- package/src/execution/primitive.ts +5 -1
- package/src/execution/request.ts +3 -0
- package/src/index.ts +20 -18
- package/src/logging/index.ts +2 -33
- package/src/logging/internal.ts +43 -0
- package/src/models/errors.ts +12 -0
- package/src/models/execution/binding.ts +29 -0
- package/src/models/execution/errors.ts +18 -0
- package/src/models/execution/index.ts +26 -0
- package/src/models/execution/model-call-accounting.ts +211 -0
- package/src/models/execution/model-call-admission.ts +127 -0
- package/src/models/execution/model-call-limits.ts +135 -0
- package/src/models/execution/model-call-recorder.ts +235 -0
- package/src/models/execution/model-call-recovery.ts +125 -0
- package/src/models/execution/recovery-queue.ts +31 -0
- package/src/models/execution/types.ts +58 -0
- package/src/models/execution/usage.ts +23 -0
- package/src/models/execution.ts +207 -0
- package/src/models/generation-types.ts +50 -0
- package/src/models/index.ts +8 -0
- package/src/models/language-model.ts +3 -0
- package/src/models/output.ts +45 -0
- package/src/models/resolve.ts +27 -0
- package/src/objects/execution.ts +1 -1
- package/src/ontology/index.ts +1 -2
- package/src/ontology/internal.ts +35 -0
- package/src/projections/run-dispatch.ts +1 -0
- package/src/query.ts +0 -1
- package/src/queues/index.ts +4 -2
- package/src/queues/types.ts +6 -25
- package/src/runtime/create.ts +2 -1
- package/src/runtime/host.ts +2 -1
- package/src/runtime/sixb.ts +4 -0
- package/src/sandboxes/errors.ts +5 -0
- package/src/sandboxes/index.ts +3 -0
- package/src/sandboxes/sandbox.ts +35 -7
- package/src/storage/agents/in-memory.ts +0 -3
- package/src/storage/agents/types.ts +0 -3
- package/src/storage/ai-cost/analytics.ts +1 -1
- package/src/storage/ai-cost/attribution.ts +15 -0
- package/src/storage/ai-cost/groups.ts +5 -1
- package/src/storage/ai-cost/provider.ts +1 -0
- package/src/storage/ai-cost/types.ts +7 -0
- package/src/storage/auth/in-memory.ts +1 -1
- package/src/storage/executions/in-memory.ts +4 -9
- package/src/storage/executions/provider.ts +4 -0
- package/src/storage/executions/types.ts +6 -2
- package/src/storage/executions/validation.ts +32 -0
- package/src/storage/in-memory/index.ts +16 -1
- package/src/storage/index.ts +3 -29
- package/src/storage/internal.ts +20 -0
- package/src/storage/workflow-runs/in-memory.ts +0 -2
- package/src/storage/workflow-runs/types.ts +0 -3
- package/src/testing/action-execution.ts +9 -2
- package/src/testing/agent-execution.ts +3 -0
- package/src/testing/agent-storage-contract.ts +0 -5
- package/src/testing/ai-model-call-groups-contract.ts +74 -2
- package/src/testing/execution-storage-contract.ts +59 -1
- package/src/testing/execution.ts +6 -0
- package/src/testing/workflow-execution.ts +4 -0
- package/src/workflows/failure.ts +62 -1
- package/src/workflows/request.ts +0 -9
- package/src/workflows/run-dispatch.ts +0 -3
- package/src/workflows/types.ts +2 -0
- package/src/workflows/validation.ts +1 -1
- package/dist/agents/context.d.ts.map +0 -1
- package/dist/agents/context.js +0 -23
- package/dist/agents/streams.d.ts.map +0 -1
- package/dist/agents/streams.js +0 -55
- package/dist/chunk-08m3b6w8.js +0 -32
- package/dist/chunk-19jp6g9d.js.map +0 -11
- package/dist/chunk-2xns679x.js.map +0 -11
- package/dist/chunk-3xep5cjx.js.map +0 -15
- package/dist/chunk-407j3msh.js +0 -60
- package/dist/chunk-4qfkag59.js +0 -1568
- package/dist/chunk-4qfkag59.js.map +0 -20
- package/dist/chunk-5e3pq99w.js.map +0 -11
- package/dist/chunk-7y0f6rf1.js.map +0 -10
- package/dist/chunk-ajnan18g.js.map +0 -12
- package/dist/chunk-c15dr03f.js +0 -43
- package/dist/chunk-d8qkxt2v.js.map +0 -10
- package/dist/chunk-jq43kdvk.js +0 -50
- package/dist/chunk-k522z7v6.js.map +0 -10
- package/dist/chunk-p03r0h5s.js.map +0 -16
- package/dist/chunk-p1rzczbt.js +0 -218
- package/dist/chunk-rafagrwr.js.map +0 -11
- package/dist/chunk-xajtptbw.js.map +0 -40
- package/dist/chunk-y64skrwp.js +0 -19
- package/dist/chunk-zcnhxkvd.js +0 -7
- package/dist/logging/types.js +0 -27
- package/dist/logging/types.js.map +0 -9
- /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
- /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
- /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
- /package/dist/{chunk-j1sbhm7p.js → chunk-ey1nk510.js} +0 -0
- /package/dist/{chunk-j1sbhm7p.js.map → chunk-ey1nk510.js.map} +0 -0
- /package/dist/{chunk-z4ccwbkz.js.map → chunk-x9v4cx1d.js.map} +0 -0
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/testing/action-execution.ts", "../src/testing/agent-execution.ts", "../src/testing/agent-storage-contract.ts", "../src/testing/ai-cost-storage-contract.ts", "../src/testing/ai-limit-storage-contract.ts", "../src/testing/ai-model-call-groups-contract.ts", "../src/testing/workflow-execution.ts", "../src/testing/ai-usage-storage-contract.ts", "../src/testing/auth-storage-contract.ts", "../src/testing/blob-storage-contract.ts", "../src/testing/broker-contract.ts", "../src/testing/connector-connection-storage-contract.ts", "../src/testing/effective-storage-contract.ts", "../src/testing/materializer-fixture.ts", "../src/testing/execution.ts", "../src/testing/execution-storage-contract.ts", "../src/testing/lake-merge-storage-contract.ts", "../src/testing/dataset-sequence-contract.ts", "../src/testing/lake-storage-contract.ts", "../src/testing/materialization-failure-contract.ts", "../src/testing/ontology-contract-fixture.ts", "../src/testing/materializer-storage-contract.ts", "../src/testing/projection-execution.ts", "../src/testing/object-query-contract.ts", "../src/testing/object-read-scope-contract.ts", "../src/testing/ontology-storage-contract.ts", "../src/testing/pipeline-execution.ts", "../src/testing/projection-run-storage-contract.ts", "../src/testing/queues-contract.ts", "../src/testing/sandboxes-contract.ts", "../src/testing/share-grant-storage-contract.ts", "../src/testing/share-session-storage-contract.ts", "../src/testing/sync-execution.ts", "../src/testing/webhook-execution.ts", "../src/testing/webhook-run-storage-contract.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { TrustedPrimitiveRef } from \"../execution\"\nimport type { ActionRunRecord, QueueActionRunInput, Storage } from \"../storage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by an Action-run storage fixture. */\nexport async function createTestActionExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly actionId: string\n readonly runId: string\n readonly executionId?: string\n }\n): Promise<string> {\n const parentExecutionId = `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_action_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"action\",\n id: input.actionId,\n runId: input.runId,\n }\n\n const existing = await executions.getById({ projectId: input.projectId, id: executionId })\n if (existing) return executionId\n\n const parent = await executions.getById({ projectId: input.projectId, id: parentExecutionId })\n if (!parent) {\n await executions.create({\n id: parentExecutionId,\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"disabled\" },\n })\n }\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"execution\", executionId: parentExecutionId },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n\n/** Queue an Action run with the valid durable execution fixture required by every provider. */\nexport async function queueTestActionRun(\n storage: Pick<Storage, \"actionRuns\" | \"executions\">,\n input: Omit<QueueActionRunInput, \"executionId\"
|
|
6
|
-
"import { agentServiceAccountId } from \"../agents/authority\"\nimport { SYSTEM_PRINCIPAL } from \"../auth\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by an Agent-run storage fixture. */\nexport async function createTestAgentExecution(\n storage: { readonly auth?: AuthStorage; readonly executions: ExecutionStorage },\n input: {\n readonly projectId: string\n readonly actorId?: string\n readonly runId: string\n readonly executionId?: string\n readonly sourceExecutionId?: string\n /** Conversational runs inherit authority; workflow fixtures use managed authority. */\n readonly authority?: \"managed\" | \"inherited\"\n }\n): Promise<string> {\n const authority = input.authority ?? (input.actorId === undefined ? \"inherited\" : \"managed\")\n if (authority === \"managed\" && input.actorId === undefined) {\n throw new Error(\"Managed Agent execution fixtures require an agent id.\")\n }\n const serviceAccountId = input.actorId ? agentServiceAccountId(input.actorId) : undefined\n if (authority === \"managed\") {\n const auth = storage.auth\n if (!auth) throw new Error(\"Managed Agent execution fixtures require auth storage.\")\n const serviceAccount = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: serviceAccountId!,\n })\n if (!serviceAccount) {\n const now = new Date()\n try {\n await auth.serviceAccounts.create({\n id: serviceAccountId!,\n projectId: input.projectId,\n name: `Test Agent ${input.actorId}`,\n description: `Test service account for Agent '${input.actorId}'.`,\n status: \"active\",\n createdByPrincipal: SYSTEM_PRINCIPAL,\n createdAt: now,\n updatedAt: now,\n })\n } catch (error) {\n if (!(error instanceof AuthStorageError) || error.code !== \"duplicate_service_account\") {\n throw error\n }\n }\n }\n }\n\n const sourceExecutionId = input.sourceExecutionId ?? `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_agent_execution:${input.runId}`\n const existing = await storage.executions.getById({\n projectId: input.projectId,\n id: executionId,\n })\n if (existing) return executionId\n\n let parent = await storage.executions.getById({\n projectId: input.projectId,\n id: sourceExecutionId,\n })\n if (!parent) {\n parent = await storage.executions.create({\n id: sourceExecutionId,\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"disabled\" },\n })\n }\n await storage.executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"agent\", runId: input.runId },\n source: { type: \"execution\", executionId: sourceExecutionId },\n ...(parent.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(parent.requestedBy) }),\n correlationId: parent.correlationId,\n authorizationRef:\n authority === \"inherited\"\n ? structuredClone(parent.authorizationRef)\n : {\n type: \"principal\",\n principal: { type: \"serviceAccount\", id: serviceAccountId! },\n },\n })\n return executionId\n}\n",
|
|
7
|
-
"import { describe, expect, test } from \"bun:test\"\nimport { AGENT_MESSAGE_CONTENT_VERSION } from \"../agents/message\"\nimport type { Principal } from \"../auth\"\nimport type { SixbFailure } from \"../errors/types\"\nimport {\n type AgentRunExecution,\n type AgentRunFailureCode,\n type AgentStorage,\n AgentStorageError,\n type AgentStorageErrorCode,\n type CreateAgentContextCheckpointInput,\n type CreateAgentRunInput,\n type CreateAgentThreadInput,\n type CreateSubagentRunInput,\n type StartAgentRunInput,\n} from \"../storage/agents\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport type { ExecutionStorage } from \"../storage/executions\"\nimport type { Storage } from \"../storage/types\"\nimport { createTestAgentExecution } from \"./agent-execution\"\n\nexport interface AgentStorageContractStorage extends Pick<Storage, \"transaction\"> {\n readonly agents: AgentStorage\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n}\n\nexport interface AgentStorageContractSuiteOptions<\n TStorage extends AgentStorageContractStorage = AgentStorageContractStorage,\n> {\n /** Factory that produces a fresh storage bundle for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst otherProjectId = \"project-b\"\nconst owner: Principal = { type: \"user\", id: \"usr_1\" }\nconst serviceAccount: Extract<Principal, { readonly type: \"serviceAccount\" }> = {\n type: \"serviceAccount\",\n id: \"svc_agent_sales\",\n}\n\nfunction failure(\n message: string,\n at: string,\n code: AgentRunFailureCode = \"internal.unexpected\"\n): SixbFailure<AgentRunFailureCode> {\n return { code, message, retryable: false, at }\n}\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nasync function expectAgentError(\n promise: Promise<unknown>,\n code: AgentStorageErrorCode\n): Promise<void> {\n await expect(promise).rejects.toBeInstanceOf(AgentStorageError)\n await expect(promise).rejects.toMatchObject({ code })\n}\n\nfunction threadInput(overrides: Partial<CreateAgentThreadInput> = {}): CreateAgentThreadInput {\n return {\n id: \"thr_1\",\n projectId,\n ownerPrincipal: owner,\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n ...overrides,\n }\n}\n\nfunction execution(\n token: string,\n queueLeaseExpiresAt = at(\"2026-06-23T10:05:00.000Z\")\n): AgentRunExecution {\n return { token, queueLeaseExpiresAt }\n}\n\ntype TestRunInput = CreateAgentRunInput &\n Omit<StartAgentRunInput, \"id\" | \"projectId\"> & {\n readonly id: string\n readonly projectId: string\n }\n\nfunction runInput(overrides: Partial<TestRunInput> = {}): TestRunInput {\n const input = {\n id: \"run_1\",\n projectId,\n threadId: \"thr_1\",\n triggerMessageId: \"msg_user_1\",\n spec: { model: { provider: \"test\", modelId: \"large\" } },\n executionId: \"test_agent_execution:run_1\",\n requesterGroupIds: [\"support\", \"engineering\", \"support\"],\n execution: execution(\"exec_1\"),\n createdAt: at(\"2026-06-23T10:00:10.000Z\"),\n ...overrides,\n }\n return {\n ...input,\n executionId: overrides.executionId ?? `test_agent_execution:${input.id}`,\n }\n}\n\nfunction subagentInput(\n parentExecutionToken: string,\n overrides: Partial<CreateSubagentRunInput> = {}\n): CreateSubagentRunInput {\n const id = overrides.id ?? \"child_1\"\n return {\n id,\n projectId,\n executionId: overrides.executionId ?? `test_agent_execution:${id}`,\n parentRunId: \"parent_1\",\n parentExecutionToken,\n spawnKey: \"research-orders\",\n spec: {\n model: { provider: \"test\", modelId: \"small\" },\n reasoning: \"medium\",\n task: \"Research the open orders.\",\n toolNames: [\"search_orders\"],\n maxSteps: 25,\n },\n maxActiveChildren: 4,\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n ...overrides,\n }\n}\n\nasync function createRunningParent(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage\n): Promise<void> {\n await storage.threads.create(threadInput({ id: \"parent_thread\" }))\n const parent = runInput({\n id: \"parent_1\",\n threadId: \"parent_thread\",\n execution: execution(\"parent_token\"),\n })\n await createTestAgentExecution(fixture, {\n projectId,\n runId: parent.id,\n executionId: parent.executionId,\n authority: \"inherited\",\n })\n await storage.runs.create(parent)\n await storage.runs.start({\n projectId,\n id: parent.id,\n modelId: \"large\",\n execution: parent.execution,\n })\n}\n\nasync function createSubagent(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n overrides: Partial<CreateSubagentRunInput> = {}\n) {\n const input = subagentInput(\"parent_token\", overrides)\n const parent = await storage.runs.getById({ projectId: input.projectId, id: input.parentRunId })\n if (!parent || parent.kind !== \"conversation\") throw new Error(\"Expected child parent fixture\")\n await createTestAgentExecution(fixture, {\n projectId: input.projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: parent.executionId,\n authority: \"inherited\",\n })\n return storage.runs.createSubagent(input)\n}\n\nfunction checkpointInput(\n overrides: Partial<CreateAgentContextCheckpointInput> = {}\n): CreateAgentContextCheckpointInput {\n return {\n id: \"checkpoint_1\",\n projectId,\n threadId: \"thr_1\",\n createdByRunId: \"run_2\",\n expectedPreviousCheckpointId: null,\n expectedHeadSeq: 3,\n executionToken: \"exec_2\",\n reason: \"threshold\",\n summary: \"The user asked for one and the agent answered two.\",\n summaryFormatVersion: 1,\n summarizedThroughSeq: 2,\n observedHeadSeq: 3,\n estimatedInputTokensBefore: 1_000,\n estimatedInputTokensAfter: 300,\n summaryModelId: \"test-model\",\n createdAt: at(\"2026-06-23T10:03:00.000Z\"),\n ...overrides,\n }\n}\n\nasync function createAndStartRun(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n input: TestRunInput\n): Promise<Awaited<ReturnType<AgentStorage[\"runs\"][\"start\"]>>> {\n await createRun(storage, fixture, input)\n return storage.runs.start({\n id: input.id,\n projectId: input.projectId,\n modelId: input.modelId,\n execution: input.execution,\n startedAt: input.startedAt,\n })\n}\n\nasync function createRun(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n input: CreateAgentRunInput\n) {\n await createTestAgentExecution(fixture, {\n projectId: input.projectId,\n runId: input.id,\n executionId: input.executionId,\n authority: \"inherited\",\n })\n return storage.runs.create(input)\n}\n\nasync function prepareCheckpointCandidate(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage\n): Promise<void> {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"one\" }],\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"two\" }],\n })\n await storage.runs.finish({\n id: \"run_1\",\n projectId,\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n await storage.messages.append({\n id: \"m3\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"three\" }],\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", triggerMessageId: \"m3\", execution: execution(\"exec_2\") })\n )\n}\n\n/**\n * Runs the shared `AgentStorage` contract against any storage implementation.\n *\n * This is the storage-independent specification for Sixb agent persistence: thread lifecycle and\n * project isolation, single-flight run reservation, execution reclaim, run finalization with\n * execution metadata, message append with thread-stats bookkeeping, and fenced context checkpoints.\n */\nexport function runAgentStorageContractSuite<TStorage extends AgentStorageContractStorage>(\n label: string,\n options: AgentStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (\n body: (storage: AgentStorage, fixture: TStorage) => Promise<void>\n ): Promise<void> => {\n const fixture = await options.createStorage()\n try {\n await body(fixture.agents, fixture)\n } finally {\n await options.teardown?.(fixture)\n }\n }\n\n describe(label, () => {\n // ── threads ───────────────────────────────────────────────────────────────────────────────\n\n test(\"creates threads, isolates projects, and rejects duplicate ids\", async () => {\n await withStorage(async (storage) => {\n const thread = await storage.threads.create(threadInput({ title: \"Q3 pipeline\" }))\n expect(thread).toMatchObject({\n id: \"thr_1\",\n title: \"Q3 pipeline\",\n status: \"active\",\n activeRunId: null,\n messageCount: 0,\n })\n expect(thread.ownerPrincipal).toEqual(owner)\n\n await expectAgentError(storage.threads.create(threadInput()), \"duplicate_id\")\n\n // Same id under a different project is allowed and isolated.\n await expect(\n storage.threads.create(threadInput({ projectId: otherProjectId }))\n ).resolves.toMatchObject({ projectId: otherProjectId })\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n title: \"Q3 pipeline\",\n })\n await expect(\n storage.threads.getById({ projectId: \"nope\", id: \"thr_1\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"lists threads with filters, ordering, and pagination\", async () => {\n await withStorage(async (storage) => {\n await storage.threads.create(\n threadInput({ id: \"thr_a\", createdAt: at(\"2026-06-23T10:00:00.000Z\") })\n )\n await storage.threads.create(\n threadInput({\n id: \"thr_b\",\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n )\n await storage.threads.create(\n threadInput({\n id: \"thr_c\",\n status: \"archived\",\n createdAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n )\n await storage.threads.create(threadInput({ id: \"thr_other\", projectId: otherProjectId }))\n\n const all = await storage.threads.list({ projectId, order: \"asc\" })\n expect(all.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\", \"thr_c\"])\n expect(all.total).toBe(3)\n expect(all.hasMore).toBe(false)\n\n const active = await storage.threads.list({ projectId, statuses: [\"active\"], order: \"asc\" })\n expect(active.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\"])\n\n const firstPage = await storage.threads.list({ projectId, order: \"asc\", limit: 2 })\n expect(firstPage.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\"])\n expect(firstPage.hasMore).toBe(true)\n expect(firstPage.total).toBe(3)\n\n const secondPage = await storage.threads.list({\n projectId,\n order: \"asc\",\n limit: 2,\n offset: 2,\n })\n expect(secondPage.threads.map((thread) => thread.id)).toEqual([\"thr_c\"])\n expect(secondPage.hasMore).toBe(false)\n })\n })\n\n // ── durable queued runs ────────────────────────────────────────────────────────────────────\n\n test(\"creates a queued run before execution and claims the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const queued = await createRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(queued).toMatchObject({\n status: \"queued\",\n attempt: 0,\n threadId: \"thr_1\",\n spec: { model: { provider: \"test\", modelId: \"large\" } },\n })\n expect(queued.execution).toBeUndefined()\n expect(queued.startedAt).toBeUndefined()\n await expect(storage.runs.list({ projectId, statuses: [\"queued\"] })).resolves.toMatchObject(\n {\n runs: [{ id: \"run_1\", status: \"queued\" }],\n total: 1,\n }\n )\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: \"run_1\",\n })\n\n const started = await storage.runs.start({\n projectId,\n id: \"run_1\",\n modelId: \"test-model\",\n execution: execution(\"exec_1\"),\n startedAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(started).toMatchObject({ status: \"running\", attempt: 1, modelId: \"test-model\" })\n expect(started.execution).toEqual(execution(\"exec_1\"))\n expect(started.executionId).toBe(\"test_agent_execution:run_1\")\n expect(started.startedAt?.toISOString()).toBe(\"2026-06-23T10:01:00.000Z\")\n })\n })\n\n test(\"rejects a run whose durable execution does not match its Agent authority\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n const executionId = await createTestAgentExecution(fixture, {\n projectId,\n actorId: \"support\",\n runId: \"run_1\",\n })\n\n await expectAgentError(\n storage.runs.create(runInput({ id: \"run_1\", executionId })),\n \"invalid_input\"\n )\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n })\n })\n\n test(\"finishes a queued run and releases the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const cancelled = await storage.runs.finishQueued({\n projectId,\n id: \"run_1\",\n status: \"cancelled\",\n error: failure(\n \"Cancelled before execution\",\n \"2026-06-23T10:01:00.000Z\",\n \"runtime.cancelled\"\n ),\n completedAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(cancelled).toMatchObject({\n status: \"cancelled\",\n attempt: 0,\n error: failure(\n \"Cancelled before execution\",\n \"2026-06-23T10:01:00.000Z\",\n \"runtime.cancelled\"\n ),\n })\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n await expectAgentError(\n storage.runs.start({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_1\"),\n }),\n \"invalid_state\"\n )\n\n await createRun(storage, fixture, runInput({ id: \"run_2\" }))\n await expect(\n storage.runs.finishQueued({\n projectId,\n id: \"run_2\",\n status: \"failed\",\n error: failure(\"Agent is unavailable\", \"2026-06-23T10:02:00.000Z\"),\n completedAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n status: \"failed\",\n attempt: 0,\n error: failure(\"Agent is unavailable\", \"2026-06-23T10:02:00.000Z\"),\n })\n })\n })\n\n // ── durable child runs ─────────────────────────────────────────────────────────────────────\n\n test(\"creates and exactly replays a child run without claiming a thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const input = subagentInput(\"parent_token\")\n const child = await createSubagent(storage, fixture)\n\n expect(child).toMatchObject({\n kind: \"subagent\",\n id: \"child_1\",\n parentRunId: \"parent_1\",\n spawnKey: \"research-orders\",\n status: \"queued\",\n attempt: 0,\n requesterGroupIds: [\"engineering\", \"support\"],\n spec: input.spec,\n })\n expect(child).not.toHaveProperty(\"threadId\")\n await expect(storage.runs.createSubagent(input)).resolves.toEqual(child)\n await expectAgentError(\n storage.runs.createSubagent({\n ...input,\n spec: { ...input.spec, task: \"Research different orders.\" },\n }),\n \"duplicate_id\"\n )\n\n const listed = await storage.runs.list({\n projectId,\n kinds: [\"subagent\"],\n parentRunId: \"parent_1\",\n })\n expect(listed.runs.map((run) => run.id)).toEqual([\"child_1\"])\n await expect(\n storage.runs.list({ projectId, kinds: [\"conversation\"] })\n ).resolves.toMatchObject({ runs: [{ id: \"parent_1\" }], total: 1 })\n await expect(\n storage.threads.getById({ projectId, id: \"parent_thread\" })\n ).resolves.toMatchObject({ activeRunId: \"parent_1\" })\n })\n })\n\n test(\"fences child admission by the active parent execution\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const wrongLineage = subagentInput(\"parent_token\", {\n id: \"child_wrong_parent\",\n executionId: \"test_agent_execution:child_wrong_parent\",\n spawnKey: \"wrong-parent\",\n })\n await createTestAgentExecution(fixture, {\n projectId,\n runId: wrongLineage.id,\n executionId: wrongLineage.executionId,\n sourceExecutionId: \"unrelated_request_execution\",\n authority: \"inherited\",\n })\n await expectAgentError(storage.runs.createSubagent(wrongLineage), \"invalid_input\")\n\n const input = subagentInput(\"stale_parent_token\")\n await createTestAgentExecution(fixture, {\n projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: \"test_agent_execution:parent_1\",\n authority: \"inherited\",\n })\n await expectAgentError(storage.runs.createSubagent(input), \"execution_lost\")\n\n await storage.runs.finish({\n projectId,\n id: \"parent_1\",\n executionToken: \"parent_token\",\n status: \"succeeded\",\n })\n await expectAgentError(\n storage.runs.createSubagent({ ...input, parentExecutionToken: \"parent_token\" }),\n \"invalid_state\"\n )\n })\n })\n\n test(\"enforces the active-child limit atomically\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const inputs = [\"child_a\", \"child_b\"].map((id) =>\n subagentInput(\"parent_token\", {\n id,\n executionId: `test_agent_execution:${id}`,\n spawnKey: id,\n maxActiveChildren: 1,\n })\n )\n for (const input of inputs) {\n await createTestAgentExecution(fixture, {\n projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: \"test_agent_execution:parent_1\",\n authority: \"inherited\",\n })\n }\n\n const settled = await Promise.allSettled(\n inputs.map((input) => storage.runs.createSubagent(input))\n )\n expect(settled.filter((result) => result.status === \"fulfilled\")).toHaveLength(1)\n const rejected = settled.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\"\n )\n expect(rejected).toHaveLength(1)\n expect(rejected[0]?.reason).toMatchObject({ code: \"active_child_limit\" })\n })\n })\n\n test(\"requires and round-trips a successful child result\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n await createSubagent(storage, fixture)\n await storage.runs.start({\n projectId,\n id: \"child_1\",\n modelId: \"small\",\n execution: execution(\"child_token\"),\n })\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n }),\n \"invalid_input\"\n )\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n result: {},\n }),\n \"invalid_input\"\n )\n\n const result = {\n text: \"Three open orders.\",\n files: [\n {\n blobId: `blob_${\"a\".repeat(64)}`,\n digest: `sha256:${\"a\".repeat(64)}` as const,\n fileName: \"orders.csv\",\n mediaType: \"text/csv\",\n sizeBytes: 42,\n },\n ],\n }\n const completed = await storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n result,\n })\n expect(completed).toMatchObject({ status: \"succeeded\", result })\n await expect(storage.runs.getById({ projectId, id: \"child_1\" })).resolves.toEqual(completed)\n })\n })\n\n // ── single-flight execution ─────────────────────────────────────────────────────────────────\n\n test(\"allows a single active run per thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(run).toMatchObject({ status: \"running\", attempt: 1, threadId: \"thr_1\" })\n expect(run.executionId).toBe(\"test_agent_execution:run_1\")\n expect(run.requesterGroupIds).toEqual([\"engineering\", \"support\"])\n expect(run.execution?.token).toBe(\"exec_1\")\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: \"run_1\",\n })\n\n await expectAgentError(\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", execution: execution(\"exec_2\") })\n ),\n \"active_run_exists\"\n )\n\n // Reservation against an unknown thread / duplicate run id.\n await expectAgentError(\n createAndStartRun(storage, fixture, runInput({ id: \"run_x\", threadId: \"ghost\" })),\n \"thread_not_found\"\n )\n })\n })\n\n test(\"never lets two concurrent queued runs both claim one thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const results = await Promise.allSettled([\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_a\", execution: execution(\"exec_a\") })\n ),\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_b\", execution: execution(\"exec_b\") })\n ),\n ])\n const fulfilled = results.filter((result) => result.status === \"fulfilled\")\n const rejected = results.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\"\n )\n expect(fulfilled).toHaveLength(1)\n expect(rejected).toHaveLength(1)\n expect(rejected[0].reason).toBeInstanceOf(AgentStorageError)\n expect(rejected[0].reason.code).toBe(\"active_run_exists\")\n })\n })\n\n // ── execution reclaim ───────────────────────────────────────────────────────────────────────\n\n test(\"reclaim rotates the execution token and bumps the attempt\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const reclaimed = await storage.runs.reclaim({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_2\"),\n })\n expect(reclaimed).toMatchObject({ status: \"running\", attempt: 2 })\n expect(reclaimed.execution?.token).toBe(\"exec_2\")\n\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n }),\n \"execution_lost\"\n )\n })\n })\n\n test(\"projects confirmed queue ownership monotonically and fences stale executions\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_1\",\n execution: execution(\"exec_1\", at(\"2026-06-23T10:02:00.000Z\")),\n })\n )\n\n const confirmed = await storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:03:00.000Z\"),\n })\n expect(confirmed.execution?.queueLeaseExpiresAt.toISOString()).toBe(\n \"2026-06-23T10:03:00.000Z\"\n )\n\n const older = await storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:02:30.000Z\"),\n })\n expect(older.execution?.queueLeaseExpiresAt.toISOString()).toBe(\"2026-06-23T10:03:00.000Z\")\n\n await storage.runs.reclaim({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_2\", at(\"2026-06-23T10:04:00.000Z\")),\n })\n await expectAgentError(\n storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:05:00.000Z\"),\n }),\n \"execution_lost\"\n )\n })\n })\n\n test(\"does not alias stored run records to callers\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const mutableExecution = run.execution as\n | { token: string; queueLeaseExpiresAt: Date }\n | undefined\n if (mutableExecution) {\n mutableExecution.token = \"mutated\"\n mutableExecution.queueLeaseExpiresAt.setTime(0)\n }\n ;(run.requesterGroupIds as string[]).push(\"mutated\")\n const reread = await storage.runs.getById({ projectId, id: \"run_1\" })\n expect(reread?.execution?.token).toBe(\"exec_1\")\n expect(reread?.requesterGroupIds).toEqual([\"engineering\", \"support\"])\n })\n })\n\n // ── finalization ────────────────────────────────────────────────────────────────────────────\n\n test(\"releasing a run only clears its own thread's active pointer\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_1\" }))\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\", threadId: \"thr_1\" }))\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_2\",\n threadId: \"thr_2\",\n execution: execution(\"exec_2\"),\n })\n )\n\n await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n // thr_2's pointer is untouched — the release is scoped to the run's own thread + matching id.\n await expect(storage.threads.getById({ projectId, id: \"thr_2\" })).resolves.toMatchObject({\n activeRunId: \"run_2\",\n })\n })\n })\n\n test(\"finishes a run, records execution metadata, and releases the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const finished = await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n modelId: \"claude-haiku-4-5\",\n finishReason: \"stop\",\n diagnostics: [\n {\n code: \"output_file_too_large\",\n severity: \"warning\",\n scope: \"output\",\n path: \"reports/full.csv\",\n message: \"This generated file was skipped.\",\n },\n ],\n completedAt: at(\"2026-06-23T10:07:00.000Z\"),\n })\n expect(finished).toMatchObject({\n status: \"succeeded\",\n modelId: \"claude-haiku-4-5\",\n finishReason: \"stop\",\n })\n expect(finished.diagnostics).toEqual([\n {\n code: \"output_file_too_large\",\n severity: \"warning\",\n scope: \"output\",\n path: \"reports/full.csv\",\n message: \"This generated file was skipped.\",\n },\n ])\n await expect(\n storage.runs.getByIds({ projectId, ids: [\"run_1\", \"missing\", \"run_1\"] })\n ).resolves.toEqual([finished])\n expect(finished.execution).toBeUndefined()\n expect(finished.completedAt?.toISOString()).toBe(\"2026-06-23T10:07:00.000Z\")\n\n // The thread is released → a new queued run can be created and started.\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n await expect(\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", execution: execution(\"exec_2\") })\n )\n ).resolves.toMatchObject({ status: \"running\" })\n })\n })\n\n test(\"records failure detail and rejects a non-running run or stale execution\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"wrong\",\n status: \"failed\",\n error: failure(\"boom\", \"2026-06-23T10:08:00.000Z\"),\n }),\n \"execution_lost\"\n )\n\n const failed = await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"failed\",\n error: failure(\"ProviderError: boom\", \"2026-06-23T10:08:00.000Z\"),\n completedAt: at(\"2026-06-23T10:08:00.000Z\"),\n })\n expect(failed.status).toBe(\"failed\")\n expect(failed.error).toEqual(failure(\"ProviderError: boom\", \"2026-06-23T10:08:00.000Z\"))\n\n // Already terminal → cannot finish again.\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n }),\n \"invalid_state\"\n )\n })\n })\n\n test(\"lists runs with thread, status, and ordering filters\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_1\" }))\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_1\",\n threadId: \"thr_1\",\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n )\n await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_2\",\n threadId: \"thr_1\",\n execution: execution(\"exec_2\"),\n createdAt: at(\"2026-06-23T10:30:00.000Z\"),\n })\n )\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_3\",\n threadId: \"thr_2\",\n execution: execution(\"exec_3\"),\n createdAt: at(\"2026-06-23T10:45:00.000Z\"),\n })\n )\n\n const forThread1 = await storage.runs.list({ projectId, threadId: \"thr_1\", order: \"asc\" })\n expect(forThread1.runs.map((run) => run.id)).toEqual([\"run_1\", \"run_2\"])\n\n const running = await storage.runs.list({ projectId, statuses: [\"running\"], order: \"asc\" })\n expect(running.runs.map((run) => run.id)).toEqual([\"run_2\", \"run_3\"])\n\n const all = await storage.runs.list({ projectId, order: \"desc\" })\n expect(all.runs.map((run) => run.id)).toEqual([\"run_3\", \"run_2\", \"run_1\"])\n })\n })\n\n test(\"filters queued runs by their effective created timestamp\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_before\" }))\n await storage.threads.create(threadInput({ id: \"thr_inside\" }))\n await storage.threads.create(threadInput({ id: \"thr_after\" }))\n\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_before\",\n threadId: \"thr_before\",\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n )\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_inside\",\n threadId: \"thr_inside\",\n createdAt: at(\"2026-06-23T11:00:00.000Z\"),\n })\n )\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_after\",\n threadId: \"thr_after\",\n createdAt: at(\"2026-06-23T12:00:00.000Z\"),\n })\n )\n\n const result = await storage.runs.list({\n projectId,\n statuses: [\"queued\"],\n startedAfter: at(\"2026-06-23T10:30:00.000Z\"),\n startedBefore: at(\"2026-06-23T11:30:00.000Z\"),\n order: \"asc\",\n })\n expect(result.runs.map((run) => run.id)).toEqual([\"run_inside\"])\n expect(result.total).toBe(1)\n expect(result.hasMore).toBe(false)\n })\n })\n\n // ── messages ──────────────────────────────────────────────────────────────────────────────\n\n test(\"appends messages, assigns seq, and bumps thread stats\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const userMessage = await storage.messages.append({\n id: \"msg_user_1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"Hello agent\" }],\n authorPrincipal: owner,\n createdAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n expect(userMessage).toMatchObject({\n seq: 1,\n role: \"user\",\n runId: null,\n contentVersion: AGENT_MESSAGE_CONTENT_VERSION,\n })\n expect(userMessage.authorPrincipal).toEqual(owner)\n\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(run.executionId).toBe(\"test_agent_execution:run_1\")\n const assistantMessage = await storage.messages.append({\n id: \"msg_asst_1\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n authorPrincipal: serviceAccount,\n parts: [\n { type: \"reasoning\", text: \"thinking about it\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"bash\",\n input: { cmd: \"ls\" },\n state: \"output-available\",\n output: \"file.txt\",\n },\n { type: \"text\", text: \"Here is the result\" },\n ],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(assistantMessage).toMatchObject({ seq: 2, role: \"assistant\", runId: \"run_1\" })\n expect(assistantMessage.authorPrincipal).toEqual(serviceAccount)\n\n const thread = await storage.threads.getById({ projectId, id: \"thr_1\" })\n expect(thread).toMatchObject({ messageCount: 2 })\n expect(thread?.lastMessageAt?.toISOString()).toBe(\"2026-06-23T10:01:00.000Z\")\n\n // The message's `parts` are the canonical content and round-trip verbatim through storage.\n const stored = await storage.messages.getById({ projectId, id: \"msg_asst_1\" })\n expect(stored?.seq).toBe(2)\n expect(stored?.parts).toEqual([\n { type: \"reasoning\", text: \"thinking about it\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"bash\",\n input: { cmd: \"ls\" },\n state: \"output-available\",\n output: \"file.txt\",\n },\n { type: \"text\", text: \"Here is the result\" },\n ])\n })\n })\n\n test(\"deletes messages produced by a run and repairs thread stats\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"msg_user_1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"Try this\" }],\n createdAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"msg_asst_1\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [\n { type: \"text\", text: \"Partial answer\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"search\",\n input: { query: \"sixb\" },\n state: \"output-available\",\n output: { matches: 1 },\n },\n ],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n\n await expect(\n storage.messages.deleteByRunId({ projectId, threadId: \"thr_1\", runId: \"run_1\" })\n ).resolves.toBe(1)\n await expect(storage.messages.getById({ projectId, id: \"msg_asst_1\" })).resolves.toBeNull()\n\n const messages = await storage.messages.list({ projectId, threadId: \"thr_1\" })\n expect(messages.messages.map((message) => message.id)).toEqual([\"msg_user_1\"])\n expect(messages.total).toBe(1)\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n messageCount: 1,\n lastMessageAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n\n await expect(\n storage.messages.deleteByRunId({ projectId, threadId: \"thr_1\", runId: \"run_1\" })\n ).resolves.toBe(0)\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n messageCount: 1,\n lastMessageAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n })\n })\n\n test(\"lists messages with role filter, ordering, and pagination\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"one\" }],\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"two\" }],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n await storage.messages.append({\n id: \"m3\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"three\" }],\n createdAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n\n const asc = await storage.messages.list({ projectId, threadId: \"thr_1\", order: \"asc\" })\n expect(asc.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\", \"m3\"])\n expect(asc.total).toBe(3)\n\n const desc = await storage.messages.list({ projectId, threadId: \"thr_1\", order: \"desc\" })\n expect(desc.messages.map((message) => message.id)).toEqual([\"m3\", \"m2\", \"m1\"])\n\n const users = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n roles: [\"user\"],\n order: \"asc\",\n })\n expect(users.messages.map((message) => message.id)).toEqual([\"m1\", \"m3\"])\n\n const retainedTail = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n afterSeq: 1,\n order: \"asc\",\n })\n expect(retainedTail.messages.map((message) => message.id)).toEqual([\"m2\", \"m3\"])\n expect(retainedTail.total).toBe(2)\n\n const firstPage = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n order: \"asc\",\n limit: 2,\n })\n expect(firstPage.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\"])\n expect(firstPage.hasMore).toBe(true)\n })\n })\n\n test(\"rejects appends to missing threads, duplicate messages, and unknown runs\", async () => {\n await withStorage(async (storage) => {\n await expectAgentError(\n storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"ghost\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"hi\" }],\n }),\n \"thread_not_found\"\n )\n\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"hi\" }],\n })\n await expectAgentError(\n storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"dup\" }],\n }),\n \"duplicate_id\"\n )\n await expectAgentError(\n storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"ghost-run\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"hi\" }],\n }),\n \"run_not_found\"\n )\n })\n })\n\n // ── context checkpoints ─────────────────────────────────────────────────────────────────\n\n test(\"creates an idempotent checkpoint without mutating the transcript\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n const threadBefore = await storage.threads.getById({ projectId, id: \"thr_1\" })\n const [created, replayed] = await Promise.all([\n storage.checkpoints.create(checkpointInput()),\n storage.checkpoints.create(checkpointInput()),\n ])\n\n expect(replayed).toEqual(created)\n expect(created).toMatchObject({\n id: \"checkpoint_1\",\n createdByRunId: \"run_2\",\n summarizedThroughSeq: 2,\n observedHeadSeq: 3,\n })\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n created\n )\n expect(\n await storage.checkpoints.getLatest({ projectId: otherProjectId, threadId: \"thr_1\" })\n ).toBeNull()\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_2\" })).toBeNull()\n await expect(\n storage.checkpoints.getByRunIds({\n projectId,\n runIds: [\"run_2\", \"missing\", \"run_2\"],\n })\n ).resolves.toEqual([created])\n await expect(\n storage.checkpoints.getByRunIds({\n projectId: otherProjectId,\n runIds: [\"run_2\"],\n })\n ).resolves.toEqual([])\n\n const retained = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n afterSeq: created.summarizedThroughSeq,\n order: \"asc\",\n })\n expect(retained.messages.map((message) => message.id)).toEqual([\"m3\"])\n\n const complete = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n order: \"asc\",\n })\n expect(complete.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\", \"m3\"])\n expect(await storage.threads.getById({ projectId, id: \"thr_1\" })).toEqual(threadBefore)\n })\n })\n\n test(\"rejects checkpoints from an inactive run or a different thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ threadId: \"thr_2\" })),\n \"invalid_input\"\n )\n\n await storage.runs.finish({\n id: \"run_2\",\n projectId,\n executionToken: \"exec_2\",\n status: \"failed\",\n })\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"invalid_state\")\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toBeNull()\n })\n })\n\n test(\"rolls back a checkpoint with its containing storage transaction\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n const rollback = new Error(\"rollback checkpoint\")\n\n await expect(\n fixture.transaction(async (tx) => {\n if (!tx.agents) throw new Error(\"Expected agent storage in transaction.\")\n const created = await tx.agents.checkpoints.create(checkpointInput())\n expect(await tx.agents.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n created\n )\n throw rollback\n })\n ).rejects.toBe(rollback)\n\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toBeNull()\n })\n })\n\n test(\"fences checkpoint creation by execution, message head, and prior checkpoint\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ executionToken: \"stale\" })),\n \"execution_lost\"\n )\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({ expectedHeadSeq: 2, observedHeadSeq: 2, summarizedThroughSeq: 1 })\n ),\n \"invalid_state\"\n )\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({ expectedPreviousCheckpointId: \"checkpoint_missing\" })\n ),\n \"invalid_state\"\n )\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ summarizedThroughSeq: 1 })),\n \"invalid_input\"\n )\n\n await storage.runs.reclaim({\n id: \"run_2\",\n projectId,\n execution: execution(\"exec_2_reclaimed\"),\n })\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"execution_lost\")\n\n const reclaimedInput = checkpointInput({ executionToken: \"exec_2_reclaimed\" })\n await storage.checkpoints.create(reclaimedInput)\n await expectAgentError(\n storage.checkpoints.create({ ...reclaimedInput, summary: \"different\" }),\n \"invalid_state\"\n )\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"execution_lost\")\n await storage.messages.append({\n id: \"m4\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_2\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"four\" }],\n })\n await expectAgentError(storage.checkpoints.create(reclaimedInput), \"invalid_state\")\n })\n })\n\n test(\"chains checkpoints only when the retained boundary advances\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.checkpoints.create(checkpointInput())\n await storage.messages.append({\n id: \"m4\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_2\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"four\" }],\n })\n await storage.runs.finish({\n id: \"run_2\",\n projectId,\n executionToken: \"exec_2\",\n status: \"succeeded\",\n })\n await storage.messages.append({\n id: \"m5\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"five\" }],\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_3\", triggerMessageId: \"m5\", execution: execution(\"exec_3\") })\n )\n\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({\n id: \"checkpoint_2\",\n createdByRunId: \"run_3\",\n expectedPreviousCheckpointId: \"checkpoint_1\",\n expectedHeadSeq: 5,\n executionToken: \"exec_3\",\n summarizedThroughSeq: 2,\n observedHeadSeq: 5,\n })\n ),\n \"invalid_input\"\n )\n\n const second = await storage.checkpoints.create(\n checkpointInput({\n id: \"checkpoint_2\",\n createdByRunId: \"run_3\",\n expectedPreviousCheckpointId: \"checkpoint_1\",\n expectedHeadSeq: 5,\n executionToken: \"exec_3\",\n summary: \"The prior summary was extended through the fourth message.\",\n summarizedThroughSeq: 4,\n observedHeadSeq: 5,\n createdAt: at(\"2026-06-23T10:05:00.000Z\"),\n })\n )\n expect(second.previousCheckpointId).toBe(\"checkpoint_1\")\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n second\n )\n })\n })\n })\n}\n",
|
|
5
|
+
"import type { TrustedPrimitiveRef } from \"../execution\"\nimport type { ActionRunRecord, QueueActionRunInput, Storage } from \"../storage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by an Action-run storage fixture. */\nexport async function createTestActionExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly actionId: string\n readonly runId: string\n readonly executionId?: string\n readonly requesterGroupIds?: readonly string[]\n }\n): Promise<string> {\n const parentExecutionId = `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_action_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"action\",\n id: input.actionId,\n runId: input.runId,\n }\n\n const existing = await executions.getById({ projectId: input.projectId, id: executionId })\n if (existing) return executionId\n\n const parent = await executions.getById({ projectId: input.projectId, id: parentExecutionId })\n if (!parent) {\n await executions.create({\n id: parentExecutionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"disabled\" },\n })\n }\n await executions.create({\n id: executionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"execution\", executionId: parentExecutionId },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n\n/** Queue an Action run with the valid durable execution fixture required by every provider. */\nexport async function queueTestActionRun(\n storage: Pick<Storage, \"actionRuns\" | \"executions\">,\n input: Omit<QueueActionRunInput, \"executionId\"> & {\n readonly requesterGroupIds?: readonly string[]\n }\n): Promise<ActionRunRecord> {\n if (!storage.actionRuns) throw new Error(\"Action run storage is not configured for this test.\")\n const executionId = await createTestActionExecution(storage.executions, {\n projectId: input.projectId,\n actionId: input.actionId,\n runId: input.id,\n requesterGroupIds: input.requesterGroupIds,\n })\n const { requesterGroupIds: _groups, ...run } = input\n return storage.actionRuns.queue({ ...run, executionId })\n}\n",
|
|
6
|
+
"import { agentServiceAccountId } from \"../agents/authority\"\nimport { SYSTEM_PRINCIPAL } from \"../auth\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by an Agent-run storage fixture. */\nexport async function createTestAgentExecution(\n storage: { readonly auth?: AuthStorage; readonly executions: ExecutionStorage },\n input: {\n readonly projectId: string\n readonly actorId?: string\n readonly runId: string\n readonly executionId?: string\n readonly sourceExecutionId?: string\n readonly requesterGroupIds?: readonly string[]\n /** Conversational runs inherit authority; workflow fixtures use managed authority. */\n readonly authority?: \"managed\" | \"inherited\"\n }\n): Promise<string> {\n const authority = input.authority ?? (input.actorId === undefined ? \"inherited\" : \"managed\")\n if (authority === \"managed\" && input.actorId === undefined) {\n throw new Error(\"Managed Agent execution fixtures require an agent id.\")\n }\n const serviceAccountId = input.actorId ? agentServiceAccountId(input.actorId) : undefined\n if (authority === \"managed\") {\n const auth = storage.auth\n if (!auth) throw new Error(\"Managed Agent execution fixtures require auth storage.\")\n const serviceAccount = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: serviceAccountId!,\n })\n if (!serviceAccount) {\n const now = new Date()\n try {\n await auth.serviceAccounts.create({\n id: serviceAccountId!,\n projectId: input.projectId,\n name: `Test Agent ${input.actorId}`,\n description: `Test service account for Agent '${input.actorId}'.`,\n status: \"active\",\n createdByPrincipal: SYSTEM_PRINCIPAL,\n createdAt: now,\n updatedAt: now,\n })\n } catch (error) {\n if (!(error instanceof AuthStorageError) || error.code !== \"duplicate_service_account\") {\n throw error\n }\n }\n }\n }\n\n const sourceExecutionId = input.sourceExecutionId ?? `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_agent_execution:${input.runId}`\n const existing = await storage.executions.getById({\n projectId: input.projectId,\n id: executionId,\n })\n if (existing) return executionId\n\n let parent = await storage.executions.getById({\n projectId: input.projectId,\n id: sourceExecutionId,\n })\n if (!parent) {\n parent = await storage.executions.create({\n id: sourceExecutionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"disabled\" },\n })\n }\n await storage.executions.create({\n id: executionId,\n requesterGroupIds: parent.requesterGroupIds,\n projectId: input.projectId,\n executor: { type: \"agent\", runId: input.runId },\n source: { type: \"execution\", executionId: sourceExecutionId },\n ...(parent.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(parent.requestedBy) }),\n correlationId: parent.correlationId,\n authorizationRef:\n authority === \"inherited\"\n ? structuredClone(parent.authorizationRef)\n : {\n type: \"principal\",\n principal: { type: \"serviceAccount\", id: serviceAccountId! },\n },\n })\n return executionId\n}\n",
|
|
7
|
+
"import { describe, expect, test } from \"bun:test\"\nimport { AGENT_MESSAGE_CONTENT_VERSION } from \"../agents/message\"\nimport type { Principal } from \"../auth\"\nimport type { SixbFailure } from \"../errors/types\"\nimport {\n type AgentRunExecution,\n type AgentRunFailureCode,\n type AgentStorage,\n AgentStorageError,\n type AgentStorageErrorCode,\n type CreateAgentContextCheckpointInput,\n type CreateAgentRunInput,\n type CreateAgentThreadInput,\n type CreateSubagentRunInput,\n type StartAgentRunInput,\n} from \"../storage/agents\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport type { ExecutionStorage } from \"../storage/executions\"\nimport type { Storage } from \"../storage/types\"\nimport { createTestAgentExecution } from \"./agent-execution\"\n\nexport interface AgentStorageContractStorage extends Pick<Storage, \"transaction\"> {\n readonly agents: AgentStorage\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n}\n\nexport interface AgentStorageContractSuiteOptions<\n TStorage extends AgentStorageContractStorage = AgentStorageContractStorage,\n> {\n /** Factory that produces a fresh storage bundle for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst otherProjectId = \"project-b\"\nconst owner: Principal = { type: \"user\", id: \"usr_1\" }\nconst serviceAccount: Extract<Principal, { readonly type: \"serviceAccount\" }> = {\n type: \"serviceAccount\",\n id: \"svc_agent_sales\",\n}\n\nfunction failure(\n message: string,\n at: string,\n code: AgentRunFailureCode = \"internal.unexpected\"\n): SixbFailure<AgentRunFailureCode> {\n return { code, message, retryable: false, at }\n}\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nasync function expectAgentError(\n promise: Promise<unknown>,\n code: AgentStorageErrorCode\n): Promise<void> {\n await expect(promise).rejects.toBeInstanceOf(AgentStorageError)\n await expect(promise).rejects.toMatchObject({ code })\n}\n\nfunction threadInput(overrides: Partial<CreateAgentThreadInput> = {}): CreateAgentThreadInput {\n return {\n id: \"thr_1\",\n projectId,\n ownerPrincipal: owner,\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n ...overrides,\n }\n}\n\nfunction execution(\n token: string,\n queueLeaseExpiresAt = at(\"2026-06-23T10:05:00.000Z\")\n): AgentRunExecution {\n return { token, queueLeaseExpiresAt }\n}\n\ntype TestRunInput = CreateAgentRunInput &\n Omit<StartAgentRunInput, \"id\" | \"projectId\"> & {\n readonly id: string\n readonly projectId: string\n }\n\nfunction runInput(overrides: Partial<TestRunInput> = {}): TestRunInput {\n const input = {\n id: \"run_1\",\n projectId,\n threadId: \"thr_1\",\n triggerMessageId: \"msg_user_1\",\n spec: { model: { provider: \"test\", modelId: \"large\" } },\n executionId: \"test_agent_execution:run_1\",\n execution: execution(\"exec_1\"),\n createdAt: at(\"2026-06-23T10:00:10.000Z\"),\n ...overrides,\n }\n return {\n ...input,\n executionId: overrides.executionId ?? `test_agent_execution:${input.id}`,\n }\n}\n\nfunction subagentInput(\n parentExecutionToken: string,\n overrides: Partial<CreateSubagentRunInput> = {}\n): CreateSubagentRunInput {\n const id = overrides.id ?? \"child_1\"\n return {\n id,\n projectId,\n executionId: overrides.executionId ?? `test_agent_execution:${id}`,\n parentRunId: \"parent_1\",\n parentExecutionToken,\n spawnKey: \"research-orders\",\n spec: {\n model: { provider: \"test\", modelId: \"small\" },\n reasoning: \"medium\",\n task: \"Research the open orders.\",\n toolNames: [\"search_orders\"],\n maxSteps: 25,\n },\n maxActiveChildren: 4,\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n ...overrides,\n }\n}\n\nasync function createRunningParent(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage\n): Promise<void> {\n await storage.threads.create(threadInput({ id: \"parent_thread\" }))\n const parent = runInput({\n id: \"parent_1\",\n threadId: \"parent_thread\",\n execution: execution(\"parent_token\"),\n })\n await createTestAgentExecution(fixture, {\n projectId,\n runId: parent.id,\n executionId: parent.executionId,\n authority: \"inherited\",\n })\n await storage.runs.create(parent)\n await storage.runs.start({\n projectId,\n id: parent.id,\n modelId: \"large\",\n execution: parent.execution,\n })\n}\n\nasync function createSubagent(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n overrides: Partial<CreateSubagentRunInput> = {}\n) {\n const input = subagentInput(\"parent_token\", overrides)\n const parent = await storage.runs.getById({ projectId: input.projectId, id: input.parentRunId })\n if (!parent || parent.kind !== \"conversation\") throw new Error(\"Expected child parent fixture\")\n await createTestAgentExecution(fixture, {\n projectId: input.projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: parent.executionId,\n authority: \"inherited\",\n })\n return storage.runs.createSubagent(input)\n}\n\nfunction checkpointInput(\n overrides: Partial<CreateAgentContextCheckpointInput> = {}\n): CreateAgentContextCheckpointInput {\n return {\n id: \"checkpoint_1\",\n projectId,\n threadId: \"thr_1\",\n createdByRunId: \"run_2\",\n expectedPreviousCheckpointId: null,\n expectedHeadSeq: 3,\n executionToken: \"exec_2\",\n reason: \"threshold\",\n summary: \"The user asked for one and the agent answered two.\",\n summaryFormatVersion: 1,\n summarizedThroughSeq: 2,\n observedHeadSeq: 3,\n estimatedInputTokensBefore: 1_000,\n estimatedInputTokensAfter: 300,\n summaryModelId: \"test-model\",\n createdAt: at(\"2026-06-23T10:03:00.000Z\"),\n ...overrides,\n }\n}\n\nasync function createAndStartRun(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n input: TestRunInput\n): Promise<Awaited<ReturnType<AgentStorage[\"runs\"][\"start\"]>>> {\n await createRun(storage, fixture, input)\n return storage.runs.start({\n id: input.id,\n projectId: input.projectId,\n modelId: input.modelId,\n execution: input.execution,\n startedAt: input.startedAt,\n })\n}\n\nasync function createRun(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage,\n input: CreateAgentRunInput\n) {\n await createTestAgentExecution(fixture, {\n projectId: input.projectId,\n runId: input.id,\n executionId: input.executionId,\n authority: \"inherited\",\n })\n return storage.runs.create(input)\n}\n\nasync function prepareCheckpointCandidate(\n storage: AgentStorage,\n fixture: AgentStorageContractStorage\n): Promise<void> {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"one\" }],\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"two\" }],\n })\n await storage.runs.finish({\n id: \"run_1\",\n projectId,\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n await storage.messages.append({\n id: \"m3\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"three\" }],\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", triggerMessageId: \"m3\", execution: execution(\"exec_2\") })\n )\n}\n\n/**\n * Runs the shared `AgentStorage` contract against any storage implementation.\n *\n * This is the storage-independent specification for Sixb agent persistence: thread lifecycle and\n * project isolation, single-flight run reservation, execution reclaim, run finalization with\n * execution metadata, message append with thread-stats bookkeeping, and fenced context checkpoints.\n */\nexport function runAgentStorageContractSuite<TStorage extends AgentStorageContractStorage>(\n label: string,\n options: AgentStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (\n body: (storage: AgentStorage, fixture: TStorage) => Promise<void>\n ): Promise<void> => {\n const fixture = await options.createStorage()\n try {\n await body(fixture.agents, fixture)\n } finally {\n await options.teardown?.(fixture)\n }\n }\n\n describe(label, () => {\n // ── threads ───────────────────────────────────────────────────────────────────────────────\n\n test(\"creates threads, isolates projects, and rejects duplicate ids\", async () => {\n await withStorage(async (storage) => {\n const thread = await storage.threads.create(threadInput({ title: \"Q3 pipeline\" }))\n expect(thread).toMatchObject({\n id: \"thr_1\",\n title: \"Q3 pipeline\",\n status: \"active\",\n activeRunId: null,\n messageCount: 0,\n })\n expect(thread.ownerPrincipal).toEqual(owner)\n\n await expectAgentError(storage.threads.create(threadInput()), \"duplicate_id\")\n\n // Same id under a different project is allowed and isolated.\n await expect(\n storage.threads.create(threadInput({ projectId: otherProjectId }))\n ).resolves.toMatchObject({ projectId: otherProjectId })\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n title: \"Q3 pipeline\",\n })\n await expect(\n storage.threads.getById({ projectId: \"nope\", id: \"thr_1\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"lists threads with filters, ordering, and pagination\", async () => {\n await withStorage(async (storage) => {\n await storage.threads.create(\n threadInput({ id: \"thr_a\", createdAt: at(\"2026-06-23T10:00:00.000Z\") })\n )\n await storage.threads.create(\n threadInput({\n id: \"thr_b\",\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n )\n await storage.threads.create(\n threadInput({\n id: \"thr_c\",\n status: \"archived\",\n createdAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n )\n await storage.threads.create(threadInput({ id: \"thr_other\", projectId: otherProjectId }))\n\n const all = await storage.threads.list({ projectId, order: \"asc\" })\n expect(all.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\", \"thr_c\"])\n expect(all.total).toBe(3)\n expect(all.hasMore).toBe(false)\n\n const active = await storage.threads.list({ projectId, statuses: [\"active\"], order: \"asc\" })\n expect(active.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\"])\n\n const firstPage = await storage.threads.list({ projectId, order: \"asc\", limit: 2 })\n expect(firstPage.threads.map((thread) => thread.id)).toEqual([\"thr_a\", \"thr_b\"])\n expect(firstPage.hasMore).toBe(true)\n expect(firstPage.total).toBe(3)\n\n const secondPage = await storage.threads.list({\n projectId,\n order: \"asc\",\n limit: 2,\n offset: 2,\n })\n expect(secondPage.threads.map((thread) => thread.id)).toEqual([\"thr_c\"])\n expect(secondPage.hasMore).toBe(false)\n })\n })\n\n // ── durable queued runs ────────────────────────────────────────────────────────────────────\n\n test(\"creates a queued run before execution and claims the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const queued = await createRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(queued).toMatchObject({\n status: \"queued\",\n attempt: 0,\n threadId: \"thr_1\",\n spec: { model: { provider: \"test\", modelId: \"large\" } },\n })\n expect(queued.execution).toBeUndefined()\n expect(queued.startedAt).toBeUndefined()\n await expect(storage.runs.list({ projectId, statuses: [\"queued\"] })).resolves.toMatchObject(\n {\n runs: [{ id: \"run_1\", status: \"queued\" }],\n total: 1,\n }\n )\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: \"run_1\",\n })\n\n const started = await storage.runs.start({\n projectId,\n id: \"run_1\",\n modelId: \"test-model\",\n execution: execution(\"exec_1\"),\n startedAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(started).toMatchObject({ status: \"running\", attempt: 1, modelId: \"test-model\" })\n expect(started.execution).toEqual(execution(\"exec_1\"))\n expect(started.executionId).toBe(\"test_agent_execution:run_1\")\n expect(started.startedAt?.toISOString()).toBe(\"2026-06-23T10:01:00.000Z\")\n })\n })\n\n test(\"rejects a run whose durable execution does not match its Agent authority\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n const executionId = await createTestAgentExecution(fixture, {\n projectId,\n actorId: \"support\",\n runId: \"run_1\",\n })\n\n await expectAgentError(\n storage.runs.create(runInput({ id: \"run_1\", executionId })),\n \"invalid_input\"\n )\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n })\n })\n\n test(\"finishes a queued run and releases the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const cancelled = await storage.runs.finishQueued({\n projectId,\n id: \"run_1\",\n status: \"cancelled\",\n error: failure(\n \"Cancelled before execution\",\n \"2026-06-23T10:01:00.000Z\",\n \"runtime.cancelled\"\n ),\n completedAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(cancelled).toMatchObject({\n status: \"cancelled\",\n attempt: 0,\n error: failure(\n \"Cancelled before execution\",\n \"2026-06-23T10:01:00.000Z\",\n \"runtime.cancelled\"\n ),\n })\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n await expectAgentError(\n storage.runs.start({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_1\"),\n }),\n \"invalid_state\"\n )\n\n await createRun(storage, fixture, runInput({ id: \"run_2\" }))\n await expect(\n storage.runs.finishQueued({\n projectId,\n id: \"run_2\",\n status: \"failed\",\n error: failure(\"Agent is unavailable\", \"2026-06-23T10:02:00.000Z\"),\n completedAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n status: \"failed\",\n attempt: 0,\n error: failure(\"Agent is unavailable\", \"2026-06-23T10:02:00.000Z\"),\n })\n })\n })\n\n // ── durable child runs ─────────────────────────────────────────────────────────────────────\n\n test(\"creates and exactly replays a child run without claiming a thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const input = subagentInput(\"parent_token\")\n const child = await createSubagent(storage, fixture)\n\n expect(child).toMatchObject({\n kind: \"subagent\",\n id: \"child_1\",\n parentRunId: \"parent_1\",\n spawnKey: \"research-orders\",\n status: \"queued\",\n attempt: 0,\n spec: input.spec,\n })\n expect(child).not.toHaveProperty(\"threadId\")\n await expect(storage.runs.createSubagent(input)).resolves.toEqual(child)\n await expectAgentError(\n storage.runs.createSubagent({\n ...input,\n spec: { ...input.spec, task: \"Research different orders.\" },\n }),\n \"duplicate_id\"\n )\n\n const listed = await storage.runs.list({\n projectId,\n kinds: [\"subagent\"],\n parentRunId: \"parent_1\",\n })\n expect(listed.runs.map((run) => run.id)).toEqual([\"child_1\"])\n await expect(\n storage.runs.list({ projectId, kinds: [\"conversation\"] })\n ).resolves.toMatchObject({ runs: [{ id: \"parent_1\" }], total: 1 })\n await expect(\n storage.threads.getById({ projectId, id: \"parent_thread\" })\n ).resolves.toMatchObject({ activeRunId: \"parent_1\" })\n })\n })\n\n test(\"fences child admission by the active parent execution\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const wrongLineage = subagentInput(\"parent_token\", {\n id: \"child_wrong_parent\",\n executionId: \"test_agent_execution:child_wrong_parent\",\n spawnKey: \"wrong-parent\",\n })\n await createTestAgentExecution(fixture, {\n projectId,\n runId: wrongLineage.id,\n executionId: wrongLineage.executionId,\n sourceExecutionId: \"unrelated_request_execution\",\n authority: \"inherited\",\n })\n await expectAgentError(storage.runs.createSubagent(wrongLineage), \"invalid_input\")\n\n const input = subagentInput(\"stale_parent_token\")\n await createTestAgentExecution(fixture, {\n projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: \"test_agent_execution:parent_1\",\n authority: \"inherited\",\n })\n await expectAgentError(storage.runs.createSubagent(input), \"execution_lost\")\n\n await storage.runs.finish({\n projectId,\n id: \"parent_1\",\n executionToken: \"parent_token\",\n status: \"succeeded\",\n })\n await expectAgentError(\n storage.runs.createSubagent({ ...input, parentExecutionToken: \"parent_token\" }),\n \"invalid_state\"\n )\n })\n })\n\n test(\"enforces the active-child limit atomically\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n const inputs = [\"child_a\", \"child_b\"].map((id) =>\n subagentInput(\"parent_token\", {\n id,\n executionId: `test_agent_execution:${id}`,\n spawnKey: id,\n maxActiveChildren: 1,\n })\n )\n for (const input of inputs) {\n await createTestAgentExecution(fixture, {\n projectId,\n runId: input.id,\n executionId: input.executionId,\n sourceExecutionId: \"test_agent_execution:parent_1\",\n authority: \"inherited\",\n })\n }\n\n const settled = await Promise.allSettled(\n inputs.map((input) => storage.runs.createSubagent(input))\n )\n expect(settled.filter((result) => result.status === \"fulfilled\")).toHaveLength(1)\n const rejected = settled.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\"\n )\n expect(rejected).toHaveLength(1)\n expect(rejected[0]?.reason).toMatchObject({ code: \"active_child_limit\" })\n })\n })\n\n test(\"requires and round-trips a successful child result\", async () => {\n await withStorage(async (storage, fixture) => {\n await createRunningParent(storage, fixture)\n await createSubagent(storage, fixture)\n await storage.runs.start({\n projectId,\n id: \"child_1\",\n modelId: \"small\",\n execution: execution(\"child_token\"),\n })\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n }),\n \"invalid_input\"\n )\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n result: {},\n }),\n \"invalid_input\"\n )\n\n const result = {\n text: \"Three open orders.\",\n files: [\n {\n blobId: `blob_${\"a\".repeat(64)}`,\n digest: `sha256:${\"a\".repeat(64)}` as const,\n fileName: \"orders.csv\",\n mediaType: \"text/csv\",\n sizeBytes: 42,\n },\n ],\n }\n const completed = await storage.runs.finish({\n projectId,\n id: \"child_1\",\n executionToken: \"child_token\",\n status: \"succeeded\",\n result,\n })\n expect(completed).toMatchObject({ status: \"succeeded\", result })\n await expect(storage.runs.getById({ projectId, id: \"child_1\" })).resolves.toEqual(completed)\n })\n })\n\n // ── single-flight execution ─────────────────────────────────────────────────────────────────\n\n test(\"allows a single active run per thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(run).toMatchObject({ status: \"running\", attempt: 1, threadId: \"thr_1\" })\n expect(run.executionId).toBe(\"test_agent_execution:run_1\")\n expect(run.execution?.token).toBe(\"exec_1\")\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: \"run_1\",\n })\n\n await expectAgentError(\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", execution: execution(\"exec_2\") })\n ),\n \"active_run_exists\"\n )\n\n // Reservation against an unknown thread / duplicate run id.\n await expectAgentError(\n createAndStartRun(storage, fixture, runInput({ id: \"run_x\", threadId: \"ghost\" })),\n \"thread_not_found\"\n )\n })\n })\n\n test(\"never lets two concurrent queued runs both claim one thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const results = await Promise.allSettled([\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_a\", execution: execution(\"exec_a\") })\n ),\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_b\", execution: execution(\"exec_b\") })\n ),\n ])\n const fulfilled = results.filter((result) => result.status === \"fulfilled\")\n const rejected = results.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\"\n )\n expect(fulfilled).toHaveLength(1)\n expect(rejected).toHaveLength(1)\n expect(rejected[0].reason).toBeInstanceOf(AgentStorageError)\n expect(rejected[0].reason.code).toBe(\"active_run_exists\")\n })\n })\n\n // ── execution reclaim ───────────────────────────────────────────────────────────────────────\n\n test(\"reclaim rotates the execution token and bumps the attempt\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const reclaimed = await storage.runs.reclaim({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_2\"),\n })\n expect(reclaimed).toMatchObject({ status: \"running\", attempt: 2 })\n expect(reclaimed.execution?.token).toBe(\"exec_2\")\n\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n }),\n \"execution_lost\"\n )\n })\n })\n\n test(\"projects confirmed queue ownership monotonically and fences stale executions\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_1\",\n execution: execution(\"exec_1\", at(\"2026-06-23T10:02:00.000Z\")),\n })\n )\n\n const confirmed = await storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:03:00.000Z\"),\n })\n expect(confirmed.execution?.queueLeaseExpiresAt.toISOString()).toBe(\n \"2026-06-23T10:03:00.000Z\"\n )\n\n const older = await storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:02:30.000Z\"),\n })\n expect(older.execution?.queueLeaseExpiresAt.toISOString()).toBe(\"2026-06-23T10:03:00.000Z\")\n\n await storage.runs.reclaim({\n projectId,\n id: \"run_1\",\n execution: execution(\"exec_2\", at(\"2026-06-23T10:04:00.000Z\")),\n })\n await expectAgentError(\n storage.runs.confirmExecutionOwnership({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n queueLeaseExpiresAt: at(\"2026-06-23T10:05:00.000Z\"),\n }),\n \"execution_lost\"\n )\n })\n })\n\n test(\"does not alias stored run records to callers\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const mutableExecution = run.execution as\n | { token: string; queueLeaseExpiresAt: Date }\n | undefined\n if (mutableExecution) {\n mutableExecution.token = \"mutated\"\n mutableExecution.queueLeaseExpiresAt.setTime(0)\n }\n const reread = await storage.runs.getById({ projectId, id: \"run_1\" })\n expect(reread?.execution?.token).toBe(\"exec_1\")\n })\n })\n\n // ── finalization ────────────────────────────────────────────────────────────────────────────\n\n test(\"releasing a run only clears its own thread's active pointer\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_1\" }))\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\", threadId: \"thr_1\" }))\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_2\",\n threadId: \"thr_2\",\n execution: execution(\"exec_2\"),\n })\n )\n\n await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n // thr_2's pointer is untouched — the release is scoped to the run's own thread + matching id.\n await expect(storage.threads.getById({ projectId, id: \"thr_2\" })).resolves.toMatchObject({\n activeRunId: \"run_2\",\n })\n })\n })\n\n test(\"finishes a run, records execution metadata, and releases the thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n const finished = await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n modelId: \"claude-haiku-4-5\",\n finishReason: \"stop\",\n diagnostics: [\n {\n code: \"output_file_too_large\",\n severity: \"warning\",\n scope: \"output\",\n path: \"reports/full.csv\",\n message: \"This generated file was skipped.\",\n },\n ],\n completedAt: at(\"2026-06-23T10:07:00.000Z\"),\n })\n expect(finished).toMatchObject({\n status: \"succeeded\",\n modelId: \"claude-haiku-4-5\",\n finishReason: \"stop\",\n })\n expect(finished.diagnostics).toEqual([\n {\n code: \"output_file_too_large\",\n severity: \"warning\",\n scope: \"output\",\n path: \"reports/full.csv\",\n message: \"This generated file was skipped.\",\n },\n ])\n await expect(\n storage.runs.getByIds({ projectId, ids: [\"run_1\", \"missing\", \"run_1\"] })\n ).resolves.toEqual([finished])\n expect(finished.execution).toBeUndefined()\n expect(finished.completedAt?.toISOString()).toBe(\"2026-06-23T10:07:00.000Z\")\n\n // The thread is released → a new queued run can be created and started.\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n activeRunId: null,\n })\n await expect(\n createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_2\", execution: execution(\"exec_2\") })\n )\n ).resolves.toMatchObject({ status: \"running\" })\n })\n })\n\n test(\"records failure detail and rejects a non-running run or stale execution\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"wrong\",\n status: \"failed\",\n error: failure(\"boom\", \"2026-06-23T10:08:00.000Z\"),\n }),\n \"execution_lost\"\n )\n\n const failed = await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"failed\",\n error: failure(\"ProviderError: boom\", \"2026-06-23T10:08:00.000Z\"),\n completedAt: at(\"2026-06-23T10:08:00.000Z\"),\n })\n expect(failed.status).toBe(\"failed\")\n expect(failed.error).toEqual(failure(\"ProviderError: boom\", \"2026-06-23T10:08:00.000Z\"))\n\n // Already terminal → cannot finish again.\n await expectAgentError(\n storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n }),\n \"invalid_state\"\n )\n })\n })\n\n test(\"lists runs with thread, status, and ordering filters\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_1\" }))\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_1\",\n threadId: \"thr_1\",\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n )\n await storage.runs.finish({\n projectId,\n id: \"run_1\",\n executionToken: \"exec_1\",\n status: \"succeeded\",\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_2\",\n threadId: \"thr_1\",\n execution: execution(\"exec_2\"),\n createdAt: at(\"2026-06-23T10:30:00.000Z\"),\n })\n )\n await createAndStartRun(\n storage,\n fixture,\n runInput({\n id: \"run_3\",\n threadId: \"thr_2\",\n execution: execution(\"exec_3\"),\n createdAt: at(\"2026-06-23T10:45:00.000Z\"),\n })\n )\n\n const forThread1 = await storage.runs.list({ projectId, threadId: \"thr_1\", order: \"asc\" })\n expect(forThread1.runs.map((run) => run.id)).toEqual([\"run_1\", \"run_2\"])\n\n const running = await storage.runs.list({ projectId, statuses: [\"running\"], order: \"asc\" })\n expect(running.runs.map((run) => run.id)).toEqual([\"run_2\", \"run_3\"])\n\n const all = await storage.runs.list({ projectId, order: \"desc\" })\n expect(all.runs.map((run) => run.id)).toEqual([\"run_3\", \"run_2\", \"run_1\"])\n })\n })\n\n test(\"filters queued runs by their effective created timestamp\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput({ id: \"thr_before\" }))\n await storage.threads.create(threadInput({ id: \"thr_inside\" }))\n await storage.threads.create(threadInput({ id: \"thr_after\" }))\n\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_before\",\n threadId: \"thr_before\",\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n )\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_inside\",\n threadId: \"thr_inside\",\n createdAt: at(\"2026-06-23T11:00:00.000Z\"),\n })\n )\n await createRun(\n storage,\n fixture,\n runInput({\n id: \"run_after\",\n threadId: \"thr_after\",\n createdAt: at(\"2026-06-23T12:00:00.000Z\"),\n })\n )\n\n const result = await storage.runs.list({\n projectId,\n statuses: [\"queued\"],\n startedAfter: at(\"2026-06-23T10:30:00.000Z\"),\n startedBefore: at(\"2026-06-23T11:30:00.000Z\"),\n order: \"asc\",\n })\n expect(result.runs.map((run) => run.id)).toEqual([\"run_inside\"])\n expect(result.total).toBe(1)\n expect(result.hasMore).toBe(false)\n })\n })\n\n // ── messages ──────────────────────────────────────────────────────────────────────────────\n\n test(\"appends messages, assigns seq, and bumps thread stats\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n\n const userMessage = await storage.messages.append({\n id: \"msg_user_1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"Hello agent\" }],\n authorPrincipal: owner,\n createdAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n expect(userMessage).toMatchObject({\n seq: 1,\n role: \"user\",\n runId: null,\n contentVersion: AGENT_MESSAGE_CONTENT_VERSION,\n })\n expect(userMessage.authorPrincipal).toEqual(owner)\n\n const run = await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n expect(run.executionId).toBe(\"test_agent_execution:run_1\")\n const assistantMessage = await storage.messages.append({\n id: \"msg_asst_1\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n authorPrincipal: serviceAccount,\n parts: [\n { type: \"reasoning\", text: \"thinking about it\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"bash\",\n input: { cmd: \"ls\" },\n state: \"output-available\",\n output: \"file.txt\",\n },\n { type: \"text\", text: \"Here is the result\" },\n ],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n expect(assistantMessage).toMatchObject({ seq: 2, role: \"assistant\", runId: \"run_1\" })\n expect(assistantMessage.authorPrincipal).toEqual(serviceAccount)\n\n const thread = await storage.threads.getById({ projectId, id: \"thr_1\" })\n expect(thread).toMatchObject({ messageCount: 2 })\n expect(thread?.lastMessageAt?.toISOString()).toBe(\"2026-06-23T10:01:00.000Z\")\n\n // The message's `parts` are the canonical content and round-trip verbatim through storage.\n const stored = await storage.messages.getById({ projectId, id: \"msg_asst_1\" })\n expect(stored?.seq).toBe(2)\n expect(stored?.parts).toEqual([\n { type: \"reasoning\", text: \"thinking about it\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"bash\",\n input: { cmd: \"ls\" },\n state: \"output-available\",\n output: \"file.txt\",\n },\n { type: \"text\", text: \"Here is the result\" },\n ])\n })\n })\n\n test(\"deletes messages produced by a run and repairs thread stats\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"msg_user_1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"Try this\" }],\n createdAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"msg_asst_1\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [\n { type: \"text\", text: \"Partial answer\" },\n {\n type: \"tool-call\",\n toolCallId: \"call_1\",\n toolName: \"search\",\n input: { query: \"sixb\" },\n state: \"output-available\",\n output: { matches: 1 },\n },\n ],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n\n await expect(\n storage.messages.deleteByRunId({ projectId, threadId: \"thr_1\", runId: \"run_1\" })\n ).resolves.toBe(1)\n await expect(storage.messages.getById({ projectId, id: \"msg_asst_1\" })).resolves.toBeNull()\n\n const messages = await storage.messages.list({ projectId, threadId: \"thr_1\" })\n expect(messages.messages.map((message) => message.id)).toEqual([\"msg_user_1\"])\n expect(messages.total).toBe(1)\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n messageCount: 1,\n lastMessageAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n\n await expect(\n storage.messages.deleteByRunId({ projectId, threadId: \"thr_1\", runId: \"run_1\" })\n ).resolves.toBe(0)\n await expect(storage.threads.getById({ projectId, id: \"thr_1\" })).resolves.toMatchObject({\n messageCount: 1,\n lastMessageAt: at(\"2026-06-23T10:00:30.000Z\"),\n })\n })\n })\n\n test(\"lists messages with role filter, ordering, and pagination\", async () => {\n await withStorage(async (storage, fixture) => {\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"one\" }],\n createdAt: at(\"2026-06-23T10:00:00.000Z\"),\n })\n await createAndStartRun(storage, fixture, runInput({ id: \"run_1\" }))\n await storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_1\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"two\" }],\n createdAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n await storage.messages.append({\n id: \"m3\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"three\" }],\n createdAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n\n const asc = await storage.messages.list({ projectId, threadId: \"thr_1\", order: \"asc\" })\n expect(asc.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\", \"m3\"])\n expect(asc.total).toBe(3)\n\n const desc = await storage.messages.list({ projectId, threadId: \"thr_1\", order: \"desc\" })\n expect(desc.messages.map((message) => message.id)).toEqual([\"m3\", \"m2\", \"m1\"])\n\n const users = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n roles: [\"user\"],\n order: \"asc\",\n })\n expect(users.messages.map((message) => message.id)).toEqual([\"m1\", \"m3\"])\n\n const retainedTail = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n afterSeq: 1,\n order: \"asc\",\n })\n expect(retainedTail.messages.map((message) => message.id)).toEqual([\"m2\", \"m3\"])\n expect(retainedTail.total).toBe(2)\n\n const firstPage = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n order: \"asc\",\n limit: 2,\n })\n expect(firstPage.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\"])\n expect(firstPage.hasMore).toBe(true)\n })\n })\n\n test(\"rejects appends to missing threads, duplicate messages, and unknown runs\", async () => {\n await withStorage(async (storage) => {\n await expectAgentError(\n storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"ghost\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"hi\" }],\n }),\n \"thread_not_found\"\n )\n\n await storage.threads.create(threadInput())\n await storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"hi\" }],\n })\n await expectAgentError(\n storage.messages.append({\n id: \"m1\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"dup\" }],\n }),\n \"duplicate_id\"\n )\n await expectAgentError(\n storage.messages.append({\n id: \"m2\",\n projectId,\n threadId: \"thr_1\",\n runId: \"ghost-run\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"hi\" }],\n }),\n \"run_not_found\"\n )\n })\n })\n\n // ── context checkpoints ─────────────────────────────────────────────────────────────────\n\n test(\"creates an idempotent checkpoint without mutating the transcript\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n const threadBefore = await storage.threads.getById({ projectId, id: \"thr_1\" })\n const [created, replayed] = await Promise.all([\n storage.checkpoints.create(checkpointInput()),\n storage.checkpoints.create(checkpointInput()),\n ])\n\n expect(replayed).toEqual(created)\n expect(created).toMatchObject({\n id: \"checkpoint_1\",\n createdByRunId: \"run_2\",\n summarizedThroughSeq: 2,\n observedHeadSeq: 3,\n })\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n created\n )\n expect(\n await storage.checkpoints.getLatest({ projectId: otherProjectId, threadId: \"thr_1\" })\n ).toBeNull()\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_2\" })).toBeNull()\n await expect(\n storage.checkpoints.getByRunIds({\n projectId,\n runIds: [\"run_2\", \"missing\", \"run_2\"],\n })\n ).resolves.toEqual([created])\n await expect(\n storage.checkpoints.getByRunIds({\n projectId: otherProjectId,\n runIds: [\"run_2\"],\n })\n ).resolves.toEqual([])\n\n const retained = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n afterSeq: created.summarizedThroughSeq,\n order: \"asc\",\n })\n expect(retained.messages.map((message) => message.id)).toEqual([\"m3\"])\n\n const complete = await storage.messages.list({\n projectId,\n threadId: \"thr_1\",\n order: \"asc\",\n })\n expect(complete.messages.map((message) => message.id)).toEqual([\"m1\", \"m2\", \"m3\"])\n expect(await storage.threads.getById({ projectId, id: \"thr_1\" })).toEqual(threadBefore)\n })\n })\n\n test(\"rejects checkpoints from an inactive run or a different thread\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.threads.create(threadInput({ id: \"thr_2\" }))\n\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ threadId: \"thr_2\" })),\n \"invalid_input\"\n )\n\n await storage.runs.finish({\n id: \"run_2\",\n projectId,\n executionToken: \"exec_2\",\n status: \"failed\",\n })\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"invalid_state\")\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toBeNull()\n })\n })\n\n test(\"rolls back a checkpoint with its containing storage transaction\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n const rollback = new Error(\"rollback checkpoint\")\n\n await expect(\n fixture.transaction(async (tx) => {\n if (!tx.agents) throw new Error(\"Expected agent storage in transaction.\")\n const created = await tx.agents.checkpoints.create(checkpointInput())\n expect(await tx.agents.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n created\n )\n throw rollback\n })\n ).rejects.toBe(rollback)\n\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toBeNull()\n })\n })\n\n test(\"fences checkpoint creation by execution, message head, and prior checkpoint\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ executionToken: \"stale\" })),\n \"execution_lost\"\n )\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({ expectedHeadSeq: 2, observedHeadSeq: 2, summarizedThroughSeq: 1 })\n ),\n \"invalid_state\"\n )\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({ expectedPreviousCheckpointId: \"checkpoint_missing\" })\n ),\n \"invalid_state\"\n )\n await expectAgentError(\n storage.checkpoints.create(checkpointInput({ summarizedThroughSeq: 1 })),\n \"invalid_input\"\n )\n\n await storage.runs.reclaim({\n id: \"run_2\",\n projectId,\n execution: execution(\"exec_2_reclaimed\"),\n })\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"execution_lost\")\n\n const reclaimedInput = checkpointInput({ executionToken: \"exec_2_reclaimed\" })\n await storage.checkpoints.create(reclaimedInput)\n await expectAgentError(\n storage.checkpoints.create({ ...reclaimedInput, summary: \"different\" }),\n \"invalid_state\"\n )\n await expectAgentError(storage.checkpoints.create(checkpointInput()), \"execution_lost\")\n await storage.messages.append({\n id: \"m4\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_2\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"four\" }],\n })\n await expectAgentError(storage.checkpoints.create(reclaimedInput), \"invalid_state\")\n })\n })\n\n test(\"chains checkpoints only when the retained boundary advances\", async () => {\n await withStorage(async (storage, fixture) => {\n await prepareCheckpointCandidate(storage, fixture)\n await storage.checkpoints.create(checkpointInput())\n await storage.messages.append({\n id: \"m4\",\n projectId,\n threadId: \"thr_1\",\n runId: \"run_2\",\n role: \"assistant\",\n parts: [{ type: \"text\", text: \"four\" }],\n })\n await storage.runs.finish({\n id: \"run_2\",\n projectId,\n executionToken: \"exec_2\",\n status: \"succeeded\",\n })\n await storage.messages.append({\n id: \"m5\",\n projectId,\n threadId: \"thr_1\",\n runId: null,\n role: \"user\",\n parts: [{ type: \"text\", text: \"five\" }],\n })\n await createAndStartRun(\n storage,\n fixture,\n runInput({ id: \"run_3\", triggerMessageId: \"m5\", execution: execution(\"exec_3\") })\n )\n\n await expectAgentError(\n storage.checkpoints.create(\n checkpointInput({\n id: \"checkpoint_2\",\n createdByRunId: \"run_3\",\n expectedPreviousCheckpointId: \"checkpoint_1\",\n expectedHeadSeq: 5,\n executionToken: \"exec_3\",\n summarizedThroughSeq: 2,\n observedHeadSeq: 5,\n })\n ),\n \"invalid_input\"\n )\n\n const second = await storage.checkpoints.create(\n checkpointInput({\n id: \"checkpoint_2\",\n createdByRunId: \"run_3\",\n expectedPreviousCheckpointId: \"checkpoint_1\",\n expectedHeadSeq: 5,\n executionToken: \"exec_3\",\n summary: \"The prior summary was extended through the fourth message.\",\n summarizedThroughSeq: 4,\n observedHeadSeq: 5,\n createdAt: at(\"2026-06-23T10:05:00.000Z\"),\n })\n )\n expect(second.previousCheckpointId).toBe(\"checkpoint_1\")\n expect(await storage.checkpoints.getLatest({ projectId, threadId: \"thr_1\" })).toEqual(\n second\n )\n })\n })\n })\n}\n",
|
|
8
8
|
"import { describe, expect, test } from \"bun:test\"\nimport type { AiCostStorage, AiModelCallCostRecord } from \"../storage/ai-cost\"\nimport { AiCostStorageError } from \"../storage/ai-cost\"\nimport type { AiUsageStorage } from \"../storage/ai-usage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\nexport interface AiStorageContractSuiteOptions<TStorage> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly setup?: (storage: TStorage) => void | Promise<void>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"cost-contract-project\"\nconst executionId = \"exec_cost_1\"\nconst otherExecutionId = \"exec_cost_2\"\n\nfunction priceSource(entry: string) {\n return {\n sourceId: \"test-catalog\",\n sourceEntryId: entry,\n sourceVersion: \"test-catalog-v1\",\n sourceUrl: \"https://example.test/ai-pricing.json\",\n observedAt: new Date(\"2026-08-01T00:00:00.000Z\"),\n }\n}\n\nfunction ratedCost(\n usageRecordId = \"usage_1\",\n overrides: Partial<Extract<AiModelCallCostRecord, { status: \"rated\" }>> = {}\n): Extract<AiModelCallCostRecord, { status: \"rated\" }> {\n return {\n projectId,\n usageRecordId,\n status: \"rated\",\n billingIdentity: { providerId: \"vercel\", modelId: \"openai/gpt-5\" },\n pricingContext: {},\n priceSource: priceSource(\"vercel/openai/gpt-5\"),\n money: { currency: \"USD\", amountNanos: \"95000\" },\n components: [\n {\n meter: \"tokens.input.uncached\",\n quantity: \"12\",\n rateAmountNanosPerMillion: \"1250000000\",\n chargeAmountNanos: \"15000\",\n },\n {\n meter: \"tokens.input.cacheRead\",\n quantity: \"0\",\n rateAmountNanosPerMillion: \"125000000\",\n chargeAmountNanos: \"0\",\n },\n {\n meter: \"tokens.output.total\",\n quantity: \"8\",\n rateAmountNanosPerMillion: \"10000000000\",\n chargeAmountNanos: \"80000\",\n },\n ],\n ratedAt: new Date(\"2026-08-01T12:00:00.200Z\"),\n ...overrides,\n }\n}\n\nfunction unpriceableCost(): Extract<AiModelCallCostRecord, { status: \"unpriceable\" }> {\n return {\n projectId,\n usageRecordId: \"usage_2\",\n status: \"unpriceable\",\n billingIdentity: { providerId: \"vercel\", modelId: \"unpriced/model\" },\n pricingContext: {},\n reason: \"missingRateCard\",\n ratedAt: new Date(\"2026-08-01T12:00:00.200Z\"),\n }\n}\n\nexport function runAiCostStorageContractSuite<TStorage extends AiCostStorage>(\n name: string,\n options: AiStorageContractSuiteOptions<TStorage>\n): void {\n describe(name, () => {\n async function fixture(): Promise<TStorage> {\n const storage = await options.createStorage()\n await options.setup?.(storage)\n return storage\n }\n\n test(\"records model-call costs idempotently\", async () => {\n const storage = await fixture()\n try {\n await expect(storage.recordModelCallCost(ratedCost())).resolves.toBeUndefined()\n await expect(storage.recordModelCallCost(ratedCost())).resolves.toBeUndefined()\n await expect(\n storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n valuationStatus: \"rated\",\n })\n ).resolves.toMatchObject({\n total: 1,\n items: [\n {\n usage: {\n id: \"usage_1\",\n },\n cost: ratedCost(),\n valuationStatus: \"rated\",\n },\n ],\n })\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"retains named, budgeted, and absent reasoning in accounting listings\", async () => {\n // Regression proof: omit requested_reasoning in either SQL accounting usageFromRow decoder.\n const storage = await fixture()\n try {\n const page = await storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n })\n expect(page.items.map(({ usage }) => [usage.id, usage.requestedReasoning])).toEqual([\n [\"usage_1\", \"high\"],\n [\"usage_2\", { budgetTokens: 4_096 }],\n [\"usage_3\", undefined],\n ])\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"retains an estimate beside an inline provider cost without double counting\", async () => {\n // Removal proof: drop estimate from the cost codec/normalizer, or sum it into the selected cost.\n const storage = await fixture()\n try {\n const local = ratedCost()\n const estimate = {\n status: \"rated\" as const,\n money: local.money,\n components: local.components,\n }\n const report: AiModelCallCostRecord = {\n ...local,\n status: \"rated\",\n money: { currency: \"USD\", amountNanos: \"80000\" },\n components: [],\n priceSource: { ...priceSource(\"generation-1\"), sourceId: \"provider-reported\" },\n estimate,\n }\n await Promise.all([\n storage.recordModelCallCost(report),\n storage.recordModelCallCost(report),\n ])\n expect(\n (await storage.summarizeExecutions({ projectId, executionIds: [executionId] }))[0]\n ?.amounts\n ).toEqual([{ currency: \"USD\", amountNanos: \"80000\" }])\n const page = await storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-01\"),\n to: new Date(\"2026-08-02\"),\n valuationStatus: \"rated\",\n })\n expect(page.items[0]?.cost).toMatchObject({\n money: { amountNanos: \"80000\" },\n estimate,\n })\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"stores explicit unpriceable results and pricing context\", async () => {\n const storage = await fixture()\n try {\n const deploymentCost: AiModelCallCostRecord = {\n projectId,\n usageRecordId: \"usage_deployment\",\n status: \"unpriceable\",\n billingIdentity: { providerId: \"openai\", modelId: \"gpt-5\" },\n pricingContext: { deploymentId: \"production\" },\n reason: \"unsupportedPricingDimension\",\n ratedAt: new Date(\"2026-08-03T12:00:00.200Z\"),\n }\n // Historical API allowed a report source even when no charge was available. This is\n // ambiguous history, not a provider cost. Regression proof: classify solely by sourceId.\n await storage.recordModelCallCost({\n ...unpriceableCost(),\n priceSource: { ...priceSource(\"unavailable-report\"), sourceId: \"provider-reported\" },\n })\n await storage.recordModelCallCost(deploymentCost)\n await expect(\n storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-03T00:00:00.000Z\"),\n to: new Date(\"2026-08-04T00:00:00.000Z\"),\n valuationStatus: \"unpriceable\",\n })\n ).resolves.toMatchObject({\n total: 1,\n items: [{ cost: deploymentCost, valuationStatus: \"unpriceable\" }],\n })\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"summarizes and queries accounting without inventing missing costs\", async () => {\n const storage = await fixture()\n try {\n await storage.recordModelCallCost(ratedCost())\n await storage.recordModelCallCost(unpriceableCost())\n await expect(\n storage.summarizeExecutions({ projectId, executionIds: [executionId] })\n ).resolves.toEqual([\n {\n amounts: [{ currency: \"USD\", amountNanos: \"95000\" }],\n ratedCallCount: 1,\n unpriceableCallCount: 1,\n unvaluedCallCount: 1,\n },\n ])\n\n const overview = await storage.queryProjectOverview({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n bucket: \"day\",\n })\n expect(overview.totals).toEqual({\n modelCallCount: 3,\n usage: {\n inputTokens: 15,\n outputTokens: 12,\n totalTokens: 27,\n reportingStatus: \"complete\",\n },\n costs: {\n amounts: [{ currency: \"USD\", amountNanos: \"95000\" }],\n ratedCallCount: 1,\n unpriceableCallCount: 1,\n unvaluedCallCount: 1,\n },\n })\n expect(overview.series).toMatchObject([{ modelCallCount: 3 }])\n expect(overview.models).toMatchObject([\n { providerId: \"gateway\", modelId: \"openai/gpt-5\", modelCallCount: 2 },\n { providerId: \"gateway\", modelId: \"unpriced/model\", modelCallCount: 1 },\n ])\n await expect(\n storage.queryProjectOverview({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n bucket: \"day\",\n providerId: \"gateway\",\n modelId: \"unpriced/model\",\n })\n ).resolves.toMatchObject({ totals: { modelCallCount: 1 } })\n await expect(\n storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n limit: 1,\n offset: 1,\n })\n ).resolves.toMatchObject({\n total: 3,\n hasMore: true,\n items: [{ usage: { id: \"usage_2\" } }],\n })\n await expect(\n storage.listModelCalls({\n projectId,\n from: new Date(\"2026-08-01T00:00:00.000Z\"),\n to: new Date(\"2026-08-02T00:00:00.000Z\"),\n valuationStatus: \"unpriceable\",\n })\n ).resolves.toMatchObject({\n total: 1,\n hasMore: false,\n items: [{ usage: { id: \"usage_2\" }, valuationStatus: \"unpriceable\" }],\n })\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"rejects missing usage and mismatched billed quantities\", async () => {\n const storage = await fixture()\n try {\n const missing = ratedCost(\"missing\")\n const missingError = await storage.recordModelCallCost(missing).catch((value) => value)\n expect(missingError).toBeInstanceOf(AiCostStorageError)\n expect((missingError as AiCostStorageError).code).toBe(\"missing_usage\")\n\n const base = ratedCost()\n const mismatch = ratedCost(\"usage_1\", {\n money: { currency: \"USD\", amountNanos: \"96250\" },\n components: [\n { ...base.components[0]!, quantity: \"13\", chargeAmountNanos: \"16250\" },\n ...base.components.slice(1),\n ],\n })\n const mismatchError = await storage.recordModelCallCost(mismatch).catch((value) => value)\n expect(mismatchError).toBeInstanceOf(AiCostStorageError)\n expect((mismatchError as AiCostStorageError).code).toBe(\"cost_mismatch\")\n // Removal proof: skip the estimate check in aiModelCallCostMatchesUsage; this is accepted.\n await expect(\n storage.recordModelCallCost({\n ...base,\n money: { currency: \"USD\", amountNanos: \"1\" },\n components: [],\n priceSource: { ...base.priceSource, sourceId: \"provider-reported\" },\n estimate: { status: \"rated\", money: mismatch.money, components: mismatch.components },\n })\n ).rejects.toMatchObject({ code: \"cost_mismatch\" })\n } finally {\n await options.cleanup?.(storage)\n }\n })\n })\n}\n\n/** Seed immutable usage used by every cost-storage provider contract. */\nexport async function seedAiCostStorageContractUsage(\n executions: ExecutionStorage,\n usage: AiUsageStorage\n): Promise<void> {\n for (const fixture of [\n { projectId, executionId },\n { projectId, executionId: otherExecutionId },\n ]) {\n if (await executions.getById({ projectId: fixture.projectId, id: fixture.executionId }))\n continue\n const primitive = {\n kind: \"workflow\" as const,\n id: \"ai-cost-contract\",\n runId: fixture.executionId,\n }\n await executions.create({\n id: fixture.executionId,\n projectId: fixture.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${fixture.executionId}` },\n correlationId: `test_correlation:${fixture.executionId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n }\n\n for (const fixture of [\n { id: \"usage_1\", model: \"openai/gpt-5\", input: 12, output: 8, reasoning: \"high\" as const },\n {\n id: \"usage_2\",\n model: \"unpriced/model\",\n input: 1,\n output: 1,\n reasoning: { budgetTokens: 4_096 },\n },\n { id: \"usage_3\", model: \"openai/gpt-5\", input: 2, output: 3, reasoning: undefined },\n ]) {\n await usage.recordModelCall({\n id: fixture.id,\n projectId,\n executionId,\n attempt: 1,\n callId: `call_${fixture.id}`,\n requesterGroupIds: [],\n providerId: \"gateway\",\n requestedModelId: fixture.model,\n ...(fixture.reasoning === undefined ? {} : { requestedReasoning: fixture.reasoning }),\n responseId: `response_${projectId}_${fixture.id}`,\n usage: {\n inputTokens: fixture.input,\n outputTokens: fixture.output,\n ...(fixture.id === \"usage_1\"\n ? { uncachedInputTokens: fixture.input, cacheReadInputTokens: 0 }\n : {}),\n },\n occurredAt: new Date(\"2026-08-01T12:00:00.000Z\"),\n recordedAt: new Date(\"2026-08-01T12:00:00.100Z\"),\n })\n }\n\n await usage.recordModelCall({\n id: \"usage_deployment\",\n projectId,\n executionId: otherExecutionId,\n attempt: 1,\n callId: \"call_usage_deployment\",\n requesterGroupIds: [],\n providerId: \"openai.responses\",\n requestedModelId: \"gpt-5\",\n responseId: \"response_usage_deployment\",\n usage: {\n inputTokens: 2,\n outputTokens: 3,\n uncachedInputTokens: 2,\n cacheReadInputTokens: 0,\n },\n occurredAt: new Date(\"2026-08-03T12:00:00.000Z\"),\n recordedAt: new Date(\"2026-08-03T12:00:00.100Z\"),\n })\n}\n",
|
|
9
9
|
"import { describe, expect, test } from \"bun:test\"\nimport type {\n AiCostStorage,\n AiLimitQuantity,\n AiLimitStorage,\n AiLimitSubject,\n AiModelCallCostRecord,\n AiModelCallUsageInput,\n AiUsageStorage,\n AuthStorage,\n ExecutionStorage,\n ReserveAiModelCallInput,\n Storage,\n} from \"../storage\"\nimport { aiLimitCalendarMonth } from \"../storage\"\n\nexport interface AiLimitStorageContractStorage {\n readonly aiLimits: AiLimitStorage\n readonly aiCosts: AiCostStorage\n readonly aiUsage: AiUsageStorage\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n readonly transaction: Storage[\"transaction\"]\n}\n\nexport interface AiLimitStorageContractSuiteOptions<\n TStorage extends AiLimitStorageContractStorage = AiLimitStorageContractStorage,\n> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly setup?: (storage: TStorage) => void | Promise<void>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"ai-limit-contract\"\nconst executionId = \"exec_ai_limit_1\"\n\nconst project: AiLimitSubject = { type: \"project\" }\nconst support: AiLimitSubject = { type: \"group\", id: \"support\" }\nconst user = { type: \"user\" as const, id: \"user-1\" }\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction reservation(\n callId: string,\n tokens: number,\n overrides: Partial<ReserveAiModelCallInput> = {}\n): ReserveAiModelCallInput {\n return {\n projectId,\n executionId,\n attempt: 1,\n callId,\n subjects: [support, user],\n estimates: [{ meter: \"tokens.total\", amount: tokens }],\n reservedAt: at(\"2026-08-15T12:00:00.000Z\"),\n ...overrides,\n }\n}\n\n/** Run the provider-neutral AI policy, period-state, and reservation contract. */\nexport function runAiLimitStorageContractSuite<TStorage extends AiLimitStorageContractStorage>(\n label: string,\n options: AiLimitStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await seedAiLimitStorageContractExecution(storage.auth, storage.executions)\n await options.setup?.(storage)\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"uses inclusive-start, exclusive-end UTC calendar months\", () => {\n expect(aiLimitCalendarMonth(at(\"2026-12-31T23:59:59.999-05:00\"))).toEqual({\n kind: \"calendarMonth\",\n start: at(\"2027-01-01T00:00:00.000Z\"),\n end: at(\"2027-02-01T00:00:00.000Z\"),\n resetAt: at(\"2027-02-01T00:00:00.000Z\"),\n })\n })\n\n test(\"creates, lists, edits, disables, and deletes policies without ambiguous dimensions\", async () => {\n await withStorage(async ({ aiLimits }) => {\n const created = await aiLimits.createPolicy({\n id: \"project-tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 100 },\n createdAt: at(\"2026-08-10T00:00:00.000Z\"),\n })\n expect(created).toMatchObject({ enabled: true, period: \"calendarMonth\" })\n await expect(\n aiLimits.createPolicy({\n id: \"duplicate-dimension\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 200 },\n })\n ).rejects.toMatchObject({ code: \"duplicate_policy\" })\n\n await expect(\n aiLimits.updatePolicy({\n projectId,\n id: created.id,\n limit: { meter: \"tokens.total\", amount: 250 },\n enabled: false,\n updatedAt: at(\"2026-08-11T00:00:00.000Z\"),\n })\n ).resolves.toMatchObject({ limit: { amount: 250 }, enabled: false })\n await expect(aiLimits.listPolicies({ projectId })).resolves.toEqual([])\n await expect(\n aiLimits.listPolicies({ projectId, includeDisabled: true })\n ).resolves.toHaveLength(1)\n await expect(aiLimits.deletePolicy({ projectId, id: created.id })).resolves.toBe(true)\n await expect(aiLimits.deletePolicy({ projectId, id: created.id })).resolves.toBe(false)\n await expect(\n aiLimits.createPolicy({\n id: \"cost-out-of-range\",\n projectId,\n subject: project,\n limit: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"9223372036854775808\" },\n },\n })\n ).rejects.toThrow(\"exceeds the supported range\")\n await expect(\n aiLimits.createPolicy({\n id: \"cost-unsupported-currency\",\n projectId,\n subject: { type: \"group\", id: \"europe\" },\n limit: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"EUR\", amountNanos: \"100\" },\n } as unknown as AiLimitQuantity,\n })\n ).rejects.toThrow(\"catalog-estimated cost currency must be 'USD'\")\n })\n })\n\n test(\"returns every applicable exhausted policy and the earliest reset\", async () => {\n await withStorage(async ({ aiLimits }) => {\n for (const [id, subject, amount] of [\n [\"project\", project, 10],\n [\"support\", support, 8],\n [\"user\", user, 100],\n ] as const) {\n await aiLimits.createPolicy({\n id,\n projectId,\n subject,\n limit: { meter: \"tokens.total\", amount },\n })\n }\n const result = await aiLimits.reserveModelCall(reservation(\"denied\", 11))\n expect(result).toMatchObject({\n status: \"denied\",\n exhaustedPolicies: [{ policy: { id: \"project\" } }, { policy: { id: \"support\" } }],\n resetAt: at(\"2026-09-01T00:00:00.000Z\"),\n })\n const statuses = await aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-20T00:00:00.000Z\"),\n existingGroupIds: [],\n })\n expect(statuses.find((status) => status.policy.id === \"support\")?.orphaned).toBe(true)\n expect(statuses.every((status) => status.consumption.reserved.amount === 0)).toBe(true)\n })\n })\n\n test(\"atomically prevents concurrent reservations from oversubscribing\", async () => {\n await withStorage(async ({ aiLimits }) => {\n await aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const results = await Promise.all([\n aiLimits.reserveModelCall(reservation(\"call-a\", 6)),\n aiLimits.reserveModelCall(reservation(\"call-b\", 6)),\n ])\n expect(results.map((result) => result.status).sort()).toEqual([\"denied\", \"reserved\"])\n const [status] = await aiLimits.listPolicyStatuses({ projectId, at: at(\"2026-08-20Z\") })\n expect(status?.consumption).toMatchObject({\n actual: { amount: 0 },\n reserved: { amount: 6 },\n unknown: { amount: 0 },\n remaining: { amount: 4 },\n })\n })\n })\n\n // Regression check: remove the provider's local operation lock and run this suite. Database\n // locks do not serialize concurrent operations using the same transaction client.\n for (const initialized of [false, true]) {\n test(`serializes reservations within one transaction (initialized=${initialized})`, async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n if (initialized) {\n await storage.aiLimits.listPolicyStatuses({ projectId, at: at(\"2026-08-20Z\") })\n }\n await storage.transaction(async (tx) => {\n const limits = tx.aiLimits!\n const results = await Promise.all([\n limits.reserveModelCall(reservation(\"call-a\", 6)),\n limits.reserveModelCall(reservation(\"call-b\", 6)),\n ])\n expect(results.map((result) => result.status).sort()).toEqual([\"denied\", \"reserved\"])\n const [status] = await limits.listPolicyStatuses({ projectId, at: at(\"2026-08-20Z\") })\n expect(status?.consumption.reserved.amount).toBe(6)\n expect(status?.consumption.remaining.amount).toBe(4)\n })\n })\n })\n }\n\n test(\"serializes reservation replays and unknown transitions within one transaction\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n await storage.transaction(async (tx) => {\n const limits = tx.aiLimits!\n const identity = reservation(\"replay\", 6)\n const results = await Promise.all([\n limits.reserveModelCall(identity),\n limits.reserveModelCall(identity),\n ])\n expect(results).toMatchObject([\n { status: \"reserved\", created: true },\n { status: \"reserved\", created: false },\n ])\n await expect(limits.reserveModelCall(reservation(\"replay\", 7))).rejects.toMatchObject({\n code: \"reservation_conflict\",\n })\n await Promise.all([\n limits.markReservationUnknown(identity),\n limits.markReservationUnknown(identity),\n ])\n const [status] = await limits.listPolicyStatuses({ projectId, at: at(\"2026-08-20Z\") })\n expect(status?.consumption).toMatchObject({\n reserved: { amount: 0 },\n unknown: { amount: 6 },\n remaining: { amount: 4 },\n })\n })\n })\n })\n\n test(\"rolls back queued limit operations when a parallel operation rejects\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n await expect(\n storage.transaction(async (tx) => {\n await Promise.all([\n tx.aiLimits!.reserveModelCall(reservation(\"invalid\", 1, { attempt: 0 })),\n tx.aiLimits!.reserveModelCall(reservation(\"queued\", 6)),\n ])\n })\n ).rejects.toBeInstanceOf(TypeError)\n const [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-20Z\"),\n })\n expect(status?.consumption.reserved.amount).toBe(0)\n await expect(\n storage.aiLimits.reserveModelCall(reservation(\"queued\", 6))\n ).resolves.toMatchObject({\n status: \"reserved\",\n created: true,\n })\n })\n })\n\n test(\"reserves only exact subject-meter policy buckets\", async () => {\n await withStorage(async ({ aiLimits }) => {\n await aiLimits.createPolicy({\n id: \"project-tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 100 },\n })\n await aiLimits.createPolicy({\n id: \"user-cost\",\n projectId,\n subject: user,\n limit: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"100\" },\n },\n })\n const result = await aiLimits.reserveModelCall(\n reservation(\"exact-buckets\", 5, {\n estimates: [\n { meter: \"tokens.total\", amount: 5 },\n {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"7\" },\n },\n ],\n })\n )\n expect(result).toMatchObject({\n status: \"reserved\",\n reservation: {\n buckets: [\n { subject: project, estimate: { meter: \"tokens.total\", amount: 5 } },\n {\n subject: user,\n estimate: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"7\" },\n },\n },\n ],\n },\n })\n })\n })\n\n test(\"replays an identical reservation and rejects a mismatched identity replay\", async () => {\n await withStorage(async ({ aiLimits }) => {\n await aiLimits.createPolicy({\n id: \"replay-policy\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 100 },\n })\n const first = await aiLimits.reserveModelCall(reservation(\"replay\", 5))\n const replay = await aiLimits.reserveModelCall(reservation(\"replay\", 5))\n expect(first).toMatchObject({ status: \"reserved\", created: true })\n expect(replay).toMatchObject({ status: \"reserved\", created: false })\n await expect(aiLimits.reserveModelCall(reservation(\"replay\", 6))).rejects.toMatchObject({\n code: \"reservation_conflict\",\n })\n })\n })\n\n test(\"does not authorize a terminal reservation replay\", async () => {\n await withStorage(async (storage) => {\n const { aiLimits } = storage\n await aiLimits.createPolicy({\n id: \"terminal-policy\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const identity = reservation(\"terminal-replay\", 5)\n await aiLimits.reserveModelCall(identity)\n await recordUsage(storage.aiUsage, \"usage-terminal\", identity.callId, 3)\n await aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-terminal\",\n })\n await aiLimits.reconcileModelCall({ ...identity, usageRecordId: \"usage-terminal\" })\n await expect(aiLimits.reserveModelCall(identity)).resolves.toMatchObject({\n status: \"terminal\",\n created: false,\n reservation: { state: \"reconciled\" },\n })\n })\n })\n\n test(\"fails closed when an applicable policy has no estimate\", async () => {\n await withStorage(async ({ aiLimits }) => {\n await aiLimits.createPolicy({\n id: \"tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const result = await aiLimits.reserveModelCall(\n reservation(\"missing-estimate\", 1, {\n estimates: [\n {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"1\" },\n },\n ],\n })\n )\n expect(result).toMatchObject({\n status: \"unavailable\",\n unavailablePolicies: [{ policy: { id: \"tokens\" } }],\n reasons: [\"missingEstimate\"],\n })\n })\n })\n\n test(\"reconciles estimates to actual usage exactly once\", async () => {\n await withStorage(async (storage) => {\n const { aiLimits } = storage\n await aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 20 },\n })\n await aiLimits.reserveModelCall(reservation(\"reconcile\", 10))\n await recordUsage(storage.aiUsage, \"usage-reconcile\", \"reconcile\", 7)\n await aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-reconcile\",\n })\n const input = {\n projectId,\n executionId,\n attempt: 1,\n callId: \"reconcile\",\n usageRecordId: \"usage-reconcile\",\n reconciledAt: at(\"2026-08-15T12:00:01.000Z\"),\n }\n await expect(aiLimits.reconcileModelCall(input)).resolves.toMatchObject({\n state: \"reconciled\",\n usageRecordId: \"usage-reconcile\",\n })\n await expect(aiLimits.reconcileModelCall(input)).resolves.toMatchObject({\n state: \"reconciled\",\n })\n await expect(\n aiLimits.reconcileModelCall({ ...input, usageRecordId: \"another-usage\" })\n ).rejects.toMatchObject({ code: \"reconciliation_conflict\" })\n const [status] = await aiLimits.listPolicyStatuses({ projectId, at: input.reconciledAt })\n expect(status?.consumption).toMatchObject({\n actual: { amount: 7 },\n reserved: { amount: 0 },\n unknown: { amount: 0 },\n remaining: { amount: 13 },\n })\n })\n })\n\n test(\"rejects a usage record that belongs to another provider call\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"usage-mismatch-policy\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 100 },\n })\n const identity = reservation(\"expected-call\", 5)\n await storage.aiLimits.reserveModelCall(identity)\n await recordUsage(storage.aiUsage, \"usage-wrong-call\", \"different-call\", 3)\n await expect(\n storage.aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-wrong-call\",\n })\n ).rejects.toMatchObject({ code: \"usage_mismatch\" })\n })\n })\n\n test(\"conservatively converts a reservation to unknown when actuals are unavailable\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const identity = reservation(\"partial-reconciliation\", 5)\n await storage.aiLimits.reserveModelCall(identity)\n await recordUsageInput(storage.aiUsage, {\n id: \"usage-partial-reconciliation\",\n callId: identity.callId,\n usage: { inputTokens: 3 },\n })\n await storage.aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-partial-reconciliation\",\n })\n await expect(\n storage.aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-partial-reconciliation\",\n })\n ).resolves.toMatchObject({ state: \"reconciled\" })\n const [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: identity.reservedAt,\n })\n expect(status).toMatchObject({\n accountingStatus: \"unavailable\",\n consumption: { reserved: { amount: 0 }, unknown: { amount: 5 } },\n })\n })\n })\n\n test(\"fails closed when historical token accounting is incomplete\", async () => {\n await withStorage(async (storage) => {\n await recordUsageInput(storage.aiUsage, {\n id: \"usage-partial\",\n callId: \"partial\",\n usage: { inputTokens: 3 },\n })\n await storage.aiLimits.createPolicy({\n id: \"tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-15T12:00:01.000Z\"),\n })\n expect(status).toMatchObject({\n accountingStatus: \"unavailable\",\n consumption: { actual: { amount: 0 } },\n })\n await expect(\n storage.aiLimits.reserveModelCall(reservation(\"after-partial\", 1))\n ).resolves.toMatchObject({\n status: \"unavailable\",\n reasons: [\"incompleteAccounting\"],\n })\n })\n })\n\n test(\"charges actuals to the ledger occurrence month\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"tokens\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 20 },\n })\n const identity = reservation(\"month-boundary\", 10, {\n reservedAt: at(\"2026-08-31T23:59:59.000Z\"),\n })\n await storage.aiLimits.reserveModelCall(identity)\n await recordUsage(storage.aiUsage, \"usage-month-boundary\", \"month-boundary\", 7, {\n occurredAt: at(\"2026-09-01T00:00:00.000Z\"),\n })\n await storage.aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-month-boundary\",\n })\n await expect(\n storage.aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-month-boundary\",\n reconciledAt: at(\"2026-09-01T00:00:01.000Z\"),\n })\n ).resolves.toMatchObject({ state: \"reconciled\" })\n const [august] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-31T23:59:59.999Z\"),\n })\n const [september] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-09-01T00:00:00.000Z\"),\n })\n expect(august?.consumption).toMatchObject({\n actual: { amount: 0 },\n reserved: { amount: 0 },\n })\n expect(september?.consumption).toMatchObject({\n actual: { amount: 7 },\n remaining: { amount: 13 },\n })\n })\n })\n\n test(\"holds unknown capacity until it is reconciled\", async () => {\n await withStorage(async (storage) => {\n const { aiLimits } = storage\n await aiLimits.createPolicy({\n id: \"project\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const identity = reservation(\"unknown\", 8)\n await aiLimits.reserveModelCall(identity)\n await aiLimits.markReservationUnknown({ ...identity, markedAt: at(\"2026-08-15T12:01Z\") })\n let [status] = await aiLimits.listPolicyStatuses({ projectId, at: identity.reservedAt })\n expect(status?.consumption).toMatchObject({\n reserved: { amount: 0 },\n unknown: { amount: 8 },\n remaining: { amount: 2 },\n })\n await recordUsage(storage.aiUsage, \"usage-unknown\", identity.callId, 3)\n await aiLimits.recordModelCallActuals({ projectId, usageRecordId: \"usage-unknown\" })\n await aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-unknown\",\n reconciledAt: at(\"2026-08-15T12:02Z\"),\n })\n ;[status] = await aiLimits.listPolicyStatuses({ projectId, at: identity.reservedAt })\n expect(status?.consumption).toMatchObject({\n actual: { amount: 3 },\n unknown: { amount: 0 },\n remaining: { amount: 7 },\n })\n })\n })\n\n test(\"counts usage recorded before a policy is created and preserves it across recreation\", async () => {\n await withStorage(async (storage) => {\n const identity = reservation(\"before-policy\", 10)\n await recordUsage(storage.aiUsage, \"usage-before-policy\", \"before-policy\", 7)\n await storage.aiLimits.createPolicy({\n id: \"created-mid-month\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n let [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: identity.reservedAt,\n })\n expect(status?.consumption.actual).toEqual({ meter: \"tokens.total\", amount: 7 })\n await storage.aiLimits.updatePolicy({\n projectId,\n id: \"created-mid-month\",\n limit: { meter: \"tokens.total\", amount: 20 },\n })\n await storage.aiLimits.deletePolicy({ projectId, id: \"created-mid-month\" })\n await storage.aiLimits.createPolicy({\n id: \"recreated\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 30 },\n })\n ;[status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: identity.reservedAt,\n })\n expect(status?.consumption).toMatchObject({\n actual: { amount: 7 },\n remaining: { amount: 23 },\n })\n })\n })\n\n test(\"derives each subject's actuals from immutable execution and usage attribution\", async () => {\n await withStorage(async (storage) => {\n const engineering = { type: \"group\" as const, id: \"engineering\" }\n const serviceAccount = { type: \"serviceAccount\" as const, id: \"automation\" }\n await recordUsage(storage.aiUsage, \"usage-all-subjects\", \"all-subjects\", 7, {\n requesterGroupIds: [\"support\", \"engineering\"],\n })\n\n const serviceExecutionId = \"exec_ai_limit_service\"\n await seedPrincipalExecution(\n storage.auth,\n storage.executions,\n serviceExecutionId,\n serviceAccount\n )\n await recordUsage(storage.aiUsage, \"usage-service-account\", \"service-account\", 3, {\n executionId: serviceExecutionId,\n requesterGroupIds: [],\n })\n\n for (const [id, subject] of [\n [\"project-subject\", project],\n [\"support-subject\", support],\n [\"engineering-subject\", engineering],\n [\"user-subject\", user],\n [\"service-account-subject\", serviceAccount],\n ] as const) {\n await storage.aiLimits.createPolicy({\n id,\n projectId,\n subject,\n limit: { meter: \"tokens.total\", amount: 20 },\n })\n }\n const august = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-31T23:59:59.999Z\"),\n })\n expect(\n Object.fromEntries(\n august.map((status) => [status.policy.id, status.consumption.actual.amount])\n )\n ).toEqual({\n \"engineering-subject\": 7,\n \"project-subject\": 10,\n \"service-account-subject\": 3,\n \"support-subject\": 7,\n \"user-subject\": 7,\n })\n const september = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-09-01T00:00:00.000Z\"),\n })\n expect(september.map((status) => status.consumption.actual.amount)).toEqual([0, 0, 0, 0, 0])\n })\n })\n\n test(\"derives catalog-estimated cost from the immutable valuation ledger\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"cost\",\n projectId,\n subject: project,\n limit: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"1000000000\" },\n },\n })\n const identity = reservation(\"cost\", 1, {\n estimates: [\n {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"250000000\" },\n },\n ],\n })\n const result = await storage.aiLimits.reserveModelCall(identity)\n expect(result.status).toBe(\"reserved\")\n await recordUsage(storage.aiUsage, \"usage-cost\", \"cost\", 1)\n await storage.aiCosts.recordModelCallCost(ratedCost(\"usage-cost\", \"250000000\"))\n await storage.aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-cost\",\n })\n await expect(\n storage.aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-cost\",\n })\n ).resolves.toMatchObject({ state: \"reconciled\" })\n const [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-15T12:00:00.000Z\"),\n })\n expect(status).toMatchObject({\n accountingStatus: \"complete\",\n consumption: {\n actual: { amount: { currency: \"USD\", amountNanos: \"250000000\" } },\n reserved: { amount: { currency: \"USD\", amountNanos: \"0\" } },\n remaining: { amount: { currency: \"USD\", amountNanos: \"750000000\" } },\n },\n })\n })\n })\n\n // Regression check: remove the unavailable-period refresh in the provider's status\n // path and run this suite with --test-name-pattern \"refreshes repaired cost accounting\".\n for (const initialized of [false, true]) {\n for (const via of [\"status\", \"admission\"] as const) {\n test(`refreshes repaired cost accounting via ${via} (initialized=${initialized})`, async () => {\n await withStorage(async (storage) => {\n const cost = (amountNanos: string): AiLimitQuantity => ({\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos },\n })\n const request = (callId: string, amount: string) =>\n reservation(callId, 0, { estimates: [cost(amount)] })\n const statuses = () =>\n storage.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-15T12:00:00.000Z\"),\n })\n await storage.aiLimits.createPolicy({\n id: \"cost\",\n projectId,\n subject: support,\n limit: cost(\"1000\"),\n })\n if (initialized) {\n expect(\n (await storage.aiLimits.reserveModelCall(request(\"active\", \"100\"))).status\n ).toBe(\"reserved\")\n expect(\n (await storage.aiLimits.reserveModelCall(request(\"unknown\", \"200\"))).status\n ).toBe(\"reserved\")\n await storage.aiLimits.markReservationUnknown(request(\"unknown\", \"200\"))\n }\n for (const id of [\"missing-a\", \"missing-b\"]) {\n await recordUsage(storage.aiUsage, id, id, 1)\n if (initialized) {\n await storage.aiLimits.recordModelCallActuals({ projectId, usageRecordId: id })\n }\n }\n expect((await statuses())[0]?.accountingStatus).toBe(\"unavailable\")\n await storage.aiCosts.recordModelCallCost(ratedCost(\"missing-a\", \"150\"))\n expect((await statuses())[0]).toMatchObject({\n accountingStatus: \"unavailable\",\n consumption: { actual: cost(\"150\") },\n })\n await expect(\n storage.aiLimits.reserveModelCall(request(\"still-incomplete\", \"1\"))\n ).resolves.toMatchObject({ status: \"unavailable\", reasons: [\"incompleteAccounting\"] })\n\n await expect(\n storage.transaction(async (tx) => {\n if (!tx.aiCosts || !tx.aiLimits) throw new Error(\"Expected accounting storage\")\n await tx.aiCosts.recordModelCallCost(ratedCost(\"missing-b\", \"50\"))\n const [status] = await tx.aiLimits.listPolicyStatuses({\n projectId,\n at: at(\"2026-08-15T12:00:00.000Z\"),\n })\n expect(status?.accountingStatus).toBe(\"complete\")\n throw new Error(\"roll back accounting repair\")\n })\n ).rejects.toThrow(\"roll back accounting repair\")\n expect((await statuses())[0]?.accountingStatus).toBe(\"unavailable\")\n\n // Recovery appends the missing valuation, but replays an existing usage record:\n // recordModelCallActuals must not be called again or tokens would be double-counted.\n await storage.aiCosts.recordModelCallCost(ratedCost(\"missing-b\", \"50\"))\n if (via === \"admission\") {\n await expect(\n storage.aiLimits.reserveModelCall(request(\"too-large\", \"1001\"))\n ).resolves.toMatchObject({ status: \"denied\" })\n }\n for (let read = 0; read < 2; read++) {\n expect((await statuses())[0]).toMatchObject({\n accountingStatus: \"complete\",\n consumption: {\n actual: cost(\"200\"),\n reserved: cost(initialized ? \"100\" : \"0\"),\n unknown: cost(initialized ? \"200\" : \"0\"),\n remaining: cost(initialized ? \"500\" : \"800\"),\n },\n })\n }\n await recordUsage(storage.aiUsage, \"next-actual\", \"next-actual\", 1)\n await storage.aiCosts.recordModelCallCost(ratedCost(\"next-actual\", \"50\"))\n await storage.aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"next-actual\",\n })\n const remaining = initialized ? 450 : 750\n await expect(\n storage.aiLimits.reserveModelCall(request(\"over-budget\", String(remaining + 1)))\n ).resolves.toMatchObject({ status: \"denied\" })\n await expect(\n storage.aiLimits.reserveModelCall(request(\"fits\", String(remaining)))\n ).resolves.toMatchObject({ status: \"reserved\" })\n })\n })\n }\n }\n\n test(\"fails cost admission closed until every applicable call is valued\", async () => {\n await withStorage(async (storage) => {\n await recordUsage(storage.aiUsage, \"usage-unvalued\", \"unvalued\", 1)\n await storage.aiLimits.createPolicy({\n id: \"cost\",\n projectId,\n subject: project,\n limit: {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"1000000000\" },\n },\n })\n await expect(\n storage.aiLimits.reserveModelCall(\n reservation(\"after-unvalued\", 1, {\n estimates: [\n {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"1\" },\n },\n ],\n })\n )\n ).resolves.toMatchObject({\n status: \"unavailable\",\n reasons: [\"incompleteAccounting\"],\n })\n\n await storage.aiCosts.recordModelCallCost(unpriceableCost(\"usage-unvalued\"))\n await expect(\n storage.aiLimits.reserveModelCall(\n reservation(\"after-unpriceable\", 1, {\n estimates: [\n {\n meter: \"cost.catalogEstimated\",\n amount: { currency: \"USD\", amountNanos: \"1\" },\n },\n ],\n })\n )\n ).resolves.toMatchObject({\n status: \"unavailable\",\n reasons: [\"incompleteAccounting\"],\n })\n })\n })\n\n test(\"rolls policy and reservation state back with the root storage transaction\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.transaction(async (tx) => {\n const limits = tx.aiLimits\n if (!limits) throw new Error(\"Expected AI limit storage in transaction\")\n await limits.createPolicy({\n id: \"rolled-back\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n await limits.reserveModelCall(reservation(\"rolled-back\", 5))\n throw new Error(\"rollback\")\n })\n ).rejects.toThrow(\"rollback\")\n await expect(\n storage.aiLimits.getPolicy({ projectId, id: \"rolled-back\" })\n ).resolves.toBeNull()\n await expect(\n storage.aiLimits.reserveModelCall(reservation(\"after-rollback\", 10))\n ).resolves.toEqual({ status: \"notRequired\" })\n })\n })\n\n test(\"rolls ledger accounting and reconciliation back together\", async () => {\n await withStorage(async (storage) => {\n await storage.aiLimits.createPolicy({\n id: \"transactional-accounting\",\n projectId,\n subject: project,\n limit: { meter: \"tokens.total\", amount: 10 },\n })\n const identity = reservation(\"transactional-accounting\", 5)\n await storage.aiLimits.reserveModelCall(identity)\n\n await expect(\n storage.transaction(async (tx) => {\n if (!tx.aiUsage || !tx.aiLimits) {\n throw new Error(\"Expected AI accounting and limit storage in transaction\")\n }\n await recordUsage(tx.aiUsage, \"usage-transactional-accounting\", identity.callId, 3)\n await tx.aiLimits.recordModelCallActuals({\n projectId,\n usageRecordId: \"usage-transactional-accounting\",\n })\n await tx.aiLimits.reconcileModelCall({\n ...identity,\n usageRecordId: \"usage-transactional-accounting\",\n })\n throw new Error(\"rollback accounting\")\n })\n ).rejects.toThrow(\"rollback accounting\")\n\n await expect(\n storage.aiUsage.summarizeExecution({ projectId, executionId })\n ).resolves.toMatchObject({ modelCallCount: 0 })\n const [status] = await storage.aiLimits.listPolicyStatuses({\n projectId,\n at: identity.reservedAt,\n })\n expect(status?.consumption).toMatchObject({\n actual: { amount: 0 },\n reserved: { amount: 5 },\n remaining: { amount: 5 },\n })\n })\n })\n })\n}\n\nexport async function seedAiLimitStorageContractExecution(\n auth: AuthStorage,\n executions: ExecutionStorage\n): Promise<void> {\n if (!(await auth.users.getById({ projectId, id: user.id }))) {\n await auth.users.create({\n id: user.id,\n projectId,\n email: \"ai-limit-user@example.test\",\n createdAt: at(\"2026-08-01T00:00:00.000Z\"),\n updatedAt: at(\"2026-08-01T00:00:00.000Z\"),\n })\n }\n if (await executions.getById({ projectId, id: executionId })) return\n const primitive = { kind: \"workflow\" as const, id: \"ai-limit-contract\", runId: executionId }\n await executions.create({\n id: executionId,\n projectId,\n requestedBy: user,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${executionId}` },\n correlationId: `test_correlation:${executionId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n}\n\nasync function seedPrincipalExecution(\n auth: AuthStorage,\n executions: ExecutionStorage,\n id: string,\n principal:\n | { readonly type: \"user\"; readonly id: string }\n | { readonly type: \"serviceAccount\"; readonly id: string }\n): Promise<void> {\n if (principal.type === \"serviceAccount\") {\n if (!(await auth.serviceAccounts.getById({ projectId, id: principal.id }))) {\n await auth.serviceAccounts.create({\n id: principal.id,\n projectId,\n name: \"AI limit contract service account\",\n createdAt: at(\"2026-08-01T00:00:00.000Z\"),\n updatedAt: at(\"2026-08-01T00:00:00.000Z\"),\n })\n }\n }\n if (await executions.getById({ projectId, id })) return\n const primitive = { kind: \"workflow\" as const, id: \"ai-limit-contract\", runId: id }\n await executions.create({\n id,\n projectId,\n requestedBy: principal,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${id}` },\n correlationId: `test_correlation:${id}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n}\n\nasync function recordUsage(\n storage: AiUsageStorage,\n id: string,\n callId: string,\n totalTokens: number,\n overrides: {\n readonly executionId?: string\n readonly requesterGroupIds?: readonly string[]\n readonly occurredAt?: Date\n } = {}\n): Promise<void> {\n await recordUsageInput(storage, {\n id,\n callId,\n executionId: overrides.executionId,\n requesterGroupIds: overrides.requesterGroupIds,\n occurredAt: overrides.occurredAt,\n usage: { inputTokens: totalTokens, outputTokens: 0 },\n })\n}\n\nasync function recordUsageInput(\n storage: AiUsageStorage,\n input: {\n readonly id: string\n readonly callId: string\n readonly executionId?: string\n readonly requesterGroupIds?: readonly string[]\n readonly occurredAt?: Date\n readonly usage: AiModelCallUsageInput\n }\n): Promise<void> {\n await storage.recordModelCall({\n id: input.id,\n projectId,\n executionId: input.executionId ?? executionId,\n attempt: 1,\n callId: input.callId,\n requesterGroupIds: input.requesterGroupIds ?? [\"support\"],\n providerId: \"test\",\n requestedModelId: \"test/model\",\n responseId: `response:${input.callId}`,\n usage: input.usage,\n occurredAt: input.occurredAt ?? at(\"2026-08-15T12:00:00.500Z\"),\n recordedAt: at(\"2026-08-15T12:00:00.600Z\"),\n })\n}\n\nfunction ratedCost(usageRecordId: string, amountNanos: string): AiModelCallCostRecord {\n return {\n projectId,\n usageRecordId,\n status: \"rated\",\n billingIdentity: { providerId: \"test\", modelId: \"test/model\" },\n pricingContext: {},\n priceSource: {\n sourceId: \"test-catalog\",\n sourceEntryId: \"test/model\",\n sourceVersion: \"v1\",\n sourceUrl: \"https://example.test/catalog.json\",\n observedAt: at(\"2026-08-01T00:00:00.000Z\"),\n },\n money: { currency: \"USD\", amountNanos },\n components: [\n {\n meter: \"tokens.input.total\",\n quantity: \"1\",\n rateAmountNanosPerMillion: (BigInt(amountNanos) * 1_000_000n).toString(),\n chargeAmountNanos: amountNanos,\n },\n {\n meter: \"tokens.output.total\",\n quantity: \"0\",\n rateAmountNanosPerMillion: \"0\",\n chargeAmountNanos: \"0\",\n },\n ],\n ratedAt: at(\"2026-08-15T12:00:00.700Z\"),\n }\n}\n\nfunction unpriceableCost(usageRecordId: string): AiModelCallCostRecord {\n return {\n projectId,\n usageRecordId,\n status: \"unpriceable\",\n billingIdentity: { providerId: \"test\", modelId: \"test/model\" },\n pricingContext: {},\n priceSource: {\n sourceId: \"test-catalog\",\n sourceEntryId: \"test/model\",\n sourceVersion: \"v1\",\n sourceUrl: \"https://example.test/catalog.json\",\n observedAt: at(\"2026-08-01T00:00:00.000Z\"),\n },\n reason: \"unsupportedPricingDimension\",\n ratedAt: at(\"2026-08-15T12:00:00.700Z\"),\n }\n}\n",
|
|
10
|
-
"import { describe, expect, test } from \"bun:test\"\nimport type { Storage } from \"../storage/types\"\nimport { workflowAgentStepActorId } from \"../workflows/agent-step-identity\"\nimport { createTestAgentExecution } from \"./agent-execution\"\nimport type { AiStorageContractSuiteOptions } from \"./ai-cost-storage-contract\"\nimport { createTestWorkflowExecution } from \"./workflow-execution\"\n\nexport type AiModelCallGroupsContractStorage = Required<\n Pick<Storage, \"agents\" | \"aiUsage\" | \"aiCosts\" | \"executions\" | \"workflowRuns\">\n>\n\nconst projectId = \"model-call-groups\"\nconst range = {\n projectId,\n from: new Date(\"2026-09-01T00:00:00Z\"),\n to: new Date(\"2026-09-02T00:00:00Z\"),\n}\n\n/** Regression: grouping the raw-call page instead of the full filtered set breaks these totals. */\nexport function runAiModelCallGroupsContractSuite<T extends AiModelCallGroupsContractStorage>(\n name: string,\n options: AiStorageContractSuiteOptions<T>\n): void {\n describe(name, () => {\n test(\"attributes workflow usage to step references and keeps same-named steps separate\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n for (const [index, workflowId] of [\"billing\", \"billing\", \"shipping\"].entries()) {\n await seedWorkflowCall(storage, workflowId, `workflow-run-${index}`)\n }\n const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: \"day\" })\n // Regression proof: grouping only by step id merges billing and shipping; exposing\n // the actor id instead of the step references fails these exact projections.\n expect(\n overview.agents.map((entry) => ({\n kind: entry.kind,\n modelCallCount: entry.modelCallCount,\n ...(entry.kind === \"workflowAgent\"\n ? { workflowId: entry.workflowId, agentStepId: entry.agentStepId }\n : {}),\n }))\n ).toEqual([\n {\n kind: \"workflowAgent\",\n workflowId: \"billing\",\n agentStepId: \"review\",\n modelCallCount: 2,\n },\n {\n kind: \"workflowAgent\",\n workflowId: \"shipping\",\n agentStepId: \"review\",\n modelCallCount: 1,\n },\n ])\n expect(overview.totals.costs.amounts).toEqual([{ currency: \"USD\", amountNanos: \"30\" }])\n const calls = await storage.aiCosts.listModelCalls(range)\n const groups = await storage.aiCosts.listModelCallGroups(range)\n expect(calls.total).toBe(3)\n expect(groups.total).toBe(3)\n for (const call of calls.items) {\n const runId = call.usage.callId\n const workflowId = runId === \"workflow-run-2\" ? \"shipping\" : \"billing\"\n const attribution = {\n kind: \"workflowAgent\" as const,\n workflowId,\n agentStepId: \"review\",\n workflowRunId: runId,\n nodeRunId: `${runId}:node:0`,\n }\n expect(call.attribution).toEqual(attribution)\n const group = groups.items.find((item) => item.executionId === call.usage.executionId)\n expect(group?.attribution).toEqual(attribution)\n expect(group?.executions[0]?.attribution).toEqual(attribution)\n }\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"paginates whole runs, keeps filtered parents, and preserves exact accounting\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await seed(storage)\n const first = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1 })\n expect(first).toMatchObject({\n total: 2,\n hasMore: true,\n items: [{ executionId: \"exec_second\", modelCallCount: 1 }],\n })\n const second = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1, offset: 1 })\n expect(second).toMatchObject({\n total: 2,\n hasMore: false,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 32,\n attribution: { kind: \"agent\", agentRunId: \"parent\", threadId: \"thread\" },\n costs: {\n amounts: [\n { currency: \"EUR\", amountNanos: \"0\" },\n { currency: \"USD\", amountNanos: \"300\" },\n ],\n ratedCallCount: 31,\n unvaluedCallCount: 1,\n },\n executions: [\n { executionId: \"exec_parent\", modelCallCount: 1, totalTokens: 3 },\n {\n executionId: \"exec_child\",\n modelCallCount: 31,\n attribution: { kind: \"subagent\", parentRunId: \"parent\", subagentRunId: \"child\" },\n },\n ],\n },\n ],\n })\n expect(second.items[0]?.totalTokens).toBeUndefined()\n const filtered = await storage.aiCosts.listModelCallGroups({\n ...range,\n providerId: \"child-provider\",\n modelId: \"small\",\n valuationStatus: \"rated\",\n })\n expect(filtered).toMatchObject({\n total: 1,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 30,\n totalTokens: 90,\n costs: {\n amounts: [{ currency: \"USD\", amountNanos: \"300\" }],\n ratedCallCount: 30,\n unvaluedCallCount: 0,\n },\n executions: [{ executionId: \"exec_child\", modelCallCount: 30 }],\n },\n ],\n })\n expect(filtered.items[0]?.executions).toHaveLength(1)\n const late = await storage.aiCosts.listModelCallGroups({\n ...range,\n from: new Date(\"2026-09-01T12:00:01Z\"),\n to: new Date(\"2026-09-01T12:00:32Z\"),\n })\n expect(late).toMatchObject({\n total: 1,\n items: [{ executionId: \"exec_parent\", modelCallCount: 31 }],\n })\n const unknown = await storage.aiCosts.listModelCallGroups({\n ...range,\n valuationStatus: \"unvalued\",\n modelId: \"small\",\n })\n expect(unknown.items[0]?.costs.amounts).toEqual([])\n expect(unknown.items[0]?.totalTokens).toBeUndefined()\n expect(\n await storage.aiCosts.listModelCallGroups({ ...range, projectId: \"other-project\" })\n ).toEqual({ items: [], total: 0, hasMore: false })\n expect(await storage.aiCosts.listModelCallGroups({ ...range, offset: 20 })).toEqual({\n items: [],\n total: 2,\n hasMore: false,\n })\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, limit: 201 })\n ).rejects.toThrow()\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, to: range.from })\n ).rejects.toThrow()\n } finally {\n await options.cleanup?.(storage)\n }\n })\n })\n}\n\nasync function seedWorkflowCall(\n storage: AiModelCallGroupsContractStorage,\n workflowId: string,\n runId: string\n) {\n const sourceExecutionId = await createTestWorkflowExecution(storage.executions, {\n projectId,\n workflowId,\n runId,\n })\n await storage.workflowRuns.queue({\n projectId,\n id: runId,\n workflowId,\n executionId: sourceExecutionId,\n input: {},\n requesterGroupIds: [],\n })\n await storage.workflowRuns.start({ projectId, id: runId })\n const nodeRunId = `${runId}:node:0`\n await storage.workflowRuns.nodes.start({\n projectId,\n id: nodeRunId,\n workflowId,\n workflowRunId: runId,\n nodeIndex: 0,\n nodeType: \"agent\",\n nodeId: \"review\",\n nodeKey: \"review\",\n input: {},\n })\n const actorId = workflowAgentStepActorId(workflowId, \"review\")\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId: nodeRunId,\n actorId,\n sourceExecutionId,\n })\n await storage.workflowRuns.agentNodes.create({\n projectId,\n nodeRunId,\n executionId,\n actorId,\n prompt: \"Review the task.\",\n })\n const { record } = await storage.aiUsage.recordModelCall({\n projectId,\n id: `usage:${runId}`,\n executionId,\n attempt: 1,\n callId: runId,\n requesterGroupIds: [],\n providerId: \"test\",\n requestedModelId: \"small\",\n responseId: runId,\n usage: { inputTokens: 10, outputTokens: 5 },\n occurredAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: record.id,\n status: \"rated\",\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: runId,\n sourceVersion: \"1\",\n observedAt: new Date(\"2026-09-01T12:00:00Z\"),\n },\n components: [],\n billingIdentity: { providerId: \"test\", modelId: \"small\" },\n money: { currency: \"USD\", amountNanos: \"10\" },\n ratedAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n}\n\nasync function seed(storage: AiModelCallGroupsContractStorage) {\n await storage.agents.threads.create({\n id: \"thread\",\n projectId,\n ownerPrincipal: { type: \"user\", id: \"user\" },\n })\n for (const runId of [\"parent\", \"second\"]) {\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId,\n executionId: `exec_${runId}`,\n authority: \"inherited\",\n })\n await storage.agents.runs.create({\n id: runId,\n projectId,\n executionId,\n threadId: \"thread\",\n triggerMessageId: `message_${runId}`,\n spec: { model: { provider: \"parent-provider\", modelId: \"large\" } },\n requesterGroupIds: [],\n })\n await storage.agents.runs.start({\n id: runId,\n projectId,\n execution: { token: runId, queueLeaseExpiresAt: new Date(\"2100-01-01T00:00:00Z\") },\n })\n if (runId === \"parent\") {\n const childExecution = await createTestAgentExecution(storage, {\n projectId,\n actorId: \"child\",\n runId: \"child\",\n executionId: \"exec_child\",\n sourceExecutionId: executionId,\n authority: \"inherited\",\n })\n await storage.agents.runs.createSubagent({\n id: \"child\",\n projectId,\n executionId: childExecution,\n parentRunId: runId,\n parentExecutionToken: runId,\n spawnKey: \"research\",\n spec: {\n model: { provider: \"child-provider\", modelId: \"small\" },\n task: \"Research\",\n toolNames: [],\n maxSteps: 25,\n },\n maxActiveChildren: 4,\n })\n }\n await storage.agents.runs.finish({\n id: runId,\n projectId,\n executionToken: runId,\n status: \"succeeded\",\n })\n }\n for (let index = 0; index < 33; index++) {\n const child = index > 0 && index < 32\n const result = await storage.aiUsage.recordModelCall({\n id: `usage_${index}`,\n projectId,\n executionId: index === 0 ? \"exec_parent\" : child ? \"exec_child\" : \"exec_second\",\n attempt: 1,\n callId: `call_${index}`,\n requesterGroupIds: [],\n providerId: child ? \"child-provider\" : \"parent-provider\",\n requestedModelId: child ? \"small\" : \"large\",\n responseId: `response_${index}`,\n usage: index === 31 ? {} : { inputTokens: 1, outputTokens: 2 },\n occurredAt: new Date(Date.parse(\"2026-09-01T12:00:00Z\") + index * 1000),\n })\n if (index >= 31) continue\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: result.record.id,\n status: \"rated\",\n billingIdentity: {\n providerId: child ? \"child-provider\" : \"parent-provider\",\n modelId: child ? \"small\" : \"large\",\n },\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: `cost_${index}`,\n sourceVersion: \"test\",\n observedAt: new Date(\"2026-09-01T12:05:00Z\"),\n },\n components: [],\n money: { currency: index === 0 ? \"EUR\" : \"USD\", amountNanos: index === 0 ? \"0\" : \"10\" },\n ratedAt: new Date(\"2026-09-01T12:05:00Z\"),\n })\n }\n}\n",
|
|
11
|
-
"import type { AuthorizablePrincipal, TrustedPrimitiveRef } from \"../execution\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by a workflow-run storage fixture. */\nexport async function createTestWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly requestedBy?: AuthorizablePrincipal\n }\n): Promise<string> {\n const parentExecutionId = `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: parentExecutionId,\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef:\n input.requestedBy === undefined\n ? { type: \"disabled\" }\n : { type: \"principal\", principal: structuredClone(input.requestedBy) },\n })\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"execution\", executionId: parentExecutionId },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n\n/** Create a root workflow execution as produced by an automatic trigger. */\nexport async function createTestAutomaticWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly source?: { readonly type: \"schedule\" | \"event\"; readonly eventId: string }\n readonly correlationId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: input.source ?? { type: \"event\", eventId: `test_event:${input.runId}` },\n correlationId: input.correlationId ?? `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n",
|
|
10
|
+
"import { describe, expect, test } from \"bun:test\"\nimport type { Storage } from \"../storage/types\"\nimport { workflowAgentStepActorId } from \"../workflows/agent-step-identity\"\nimport { createTestAgentExecution } from \"./agent-execution\"\nimport type { AiStorageContractSuiteOptions } from \"./ai-cost-storage-contract\"\nimport { createTestWorkflowExecution } from \"./workflow-execution\"\n\nexport type AiModelCallGroupsContractStorage = Required<\n Pick<Storage, \"agents\" | \"aiUsage\" | \"aiCosts\" | \"executions\" | \"workflowRuns\">\n>\n\nconst projectId = \"model-call-groups\"\nconst range = {\n projectId,\n from: new Date(\"2026-09-01T00:00:00Z\"),\n to: new Date(\"2026-09-02T00:00:00Z\"),\n}\n\n/** Regression: grouping the raw-call page instead of the full filtered set breaks these totals. */\nexport function runAiModelCallGroupsContractSuite<T extends AiModelCallGroupsContractStorage>(\n name: string,\n options: AiStorageContractSuiteOptions<T>\n): void {\n describe(name, () => {\n test(\"attributes direct calls and retries to requests, actions, and workflows\", async () => {\n // Removal proof: return undefined from directModelCallAttribution and run this suite.\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n const expected = [\n { kind: \"request\", requestId: \"request\" },\n { kind: \"action\", actionId: \"summarize\", actionRunId: \"action\" },\n { kind: \"workflow\", workflowId: \"summarize\", workflowRunId: \"workflow\" },\n ] as const\n for (const attribution of expected) {\n const kind = attribution.kind\n const primitive = {\n kind: kind === \"action\" ? (\"action\" as const) : (\"workflow\" as const),\n id: \"summarize\",\n runId: kind,\n }\n const execution = await storage.executions.create({\n projectId,\n id: kind,\n executor:\n kind === \"request\"\n ? { type: \"request\", requestId: kind }\n : { type: \"primitive\", kind, runId: kind },\n source:\n kind === \"request\"\n ? { type: \"http\", requestId: kind }\n : { type: \"event\", eventId: kind },\n correlationId: kind,\n authorizationRef:\n kind === \"request\" ? { type: \"disabled\" } : { type: \"trustedPrimitive\", primitive },\n })\n for (const attempt of [1, 2]) {\n await storage.aiUsage.recordModelCall({\n projectId,\n id: `${kind}:${attempt}`,\n executionId: execution.id,\n attempt,\n callId: `${kind}:${attempt}`,\n requesterGroupIds: execution.requesterGroupIds,\n providerId: \"test\",\n requestedModelId: \"small\",\n responseId: `${kind}:${attempt}`,\n usage: { inputTokens: 2, outputTokens: 3 },\n occurredAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n }\n const calls = await storage.aiCosts.listModelCalls({\n ...range,\n executionId: execution.id,\n })\n expect(calls.total).toBe(2)\n expect(calls.items.map((call) => call.attribution)).toEqual([attribution, attribution])\n }\n const groups = await storage.aiCosts.listModelCallGroups(range)\n expect(groups.total).toBe(3)\n for (const attribution of expected) {\n const group = groups.items.find((item) => item.executionId === attribution.kind)\n expect(group).toMatchObject({\n attribution,\n modelCallCount: 2,\n totalTokens: 10,\n executions: [{ attribution, modelCallCount: 2 }],\n })\n }\n const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: \"day\" })\n expect(overview.totals.modelCallCount).toBe(6)\n expect(overview.agents).toEqual([])\n expect(overview.workflows).toMatchObject([{ workflowId: \"summarize\", modelCallCount: 2 }])\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"attributes workflow usage to step references and keeps same-named steps separate\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n for (const [index, workflowId] of [\"billing\", \"billing\", \"shipping\"].entries()) {\n await seedWorkflowCall(storage, workflowId, `workflow-run-${index}`)\n }\n const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: \"day\" })\n // Regression proof: grouping only by step id merges billing and shipping; exposing\n // the actor id instead of the step references fails these exact projections.\n expect(\n overview.agents.map((entry) => ({\n kind: entry.kind,\n modelCallCount: entry.modelCallCount,\n ...(entry.kind === \"workflowAgent\"\n ? { workflowId: entry.workflowId, agentStepId: entry.agentStepId }\n : {}),\n }))\n ).toEqual([\n {\n kind: \"workflowAgent\",\n workflowId: \"billing\",\n agentStepId: \"review\",\n modelCallCount: 2,\n },\n {\n kind: \"workflowAgent\",\n workflowId: \"shipping\",\n agentStepId: \"review\",\n modelCallCount: 1,\n },\n ])\n expect(overview.totals.costs.amounts).toEqual([{ currency: \"USD\", amountNanos: \"30\" }])\n const calls = await storage.aiCosts.listModelCalls(range)\n const groups = await storage.aiCosts.listModelCallGroups(range)\n expect(calls.total).toBe(3)\n expect(groups.total).toBe(3)\n for (const call of calls.items) {\n const runId = call.usage.callId\n const workflowId = runId === \"workflow-run-2\" ? \"shipping\" : \"billing\"\n const attribution = {\n kind: \"workflowAgent\" as const,\n workflowId,\n agentStepId: \"review\",\n workflowRunId: runId,\n nodeRunId: `${runId}:node:0`,\n }\n expect(call.attribution).toEqual(attribution)\n const group = groups.items.find((item) => item.executionId === call.usage.executionId)\n expect(group?.attribution).toEqual(attribution)\n expect(group?.executions[0]?.attribution).toEqual(attribution)\n }\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"paginates whole runs, keeps filtered parents, and preserves exact accounting\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await seed(storage)\n const first = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1 })\n expect(first).toMatchObject({\n total: 2,\n hasMore: true,\n items: [{ executionId: \"exec_second\", modelCallCount: 1 }],\n })\n const second = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1, offset: 1 })\n expect(second).toMatchObject({\n total: 2,\n hasMore: false,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 32,\n attribution: { kind: \"agent\", agentRunId: \"parent\", threadId: \"thread\" },\n costs: {\n amounts: [\n { currency: \"EUR\", amountNanos: \"0\" },\n { currency: \"USD\", amountNanos: \"300\" },\n ],\n ratedCallCount: 31,\n unvaluedCallCount: 1,\n },\n executions: [\n { executionId: \"exec_parent\", modelCallCount: 1, totalTokens: 3 },\n {\n executionId: \"exec_child\",\n modelCallCount: 31,\n attribution: { kind: \"subagent\", parentRunId: \"parent\", subagentRunId: \"child\" },\n },\n ],\n },\n ],\n })\n expect(second.items[0]?.totalTokens).toBeUndefined()\n const filtered = await storage.aiCosts.listModelCallGroups({\n ...range,\n providerId: \"child-provider\",\n modelId: \"small\",\n valuationStatus: \"rated\",\n })\n expect(filtered).toMatchObject({\n total: 1,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 30,\n totalTokens: 90,\n costs: {\n amounts: [{ currency: \"USD\", amountNanos: \"300\" }],\n ratedCallCount: 30,\n unvaluedCallCount: 0,\n },\n executions: [{ executionId: \"exec_child\", modelCallCount: 30 }],\n },\n ],\n })\n expect(filtered.items[0]?.executions).toHaveLength(1)\n const late = await storage.aiCosts.listModelCallGroups({\n ...range,\n from: new Date(\"2026-09-01T12:00:01Z\"),\n to: new Date(\"2026-09-01T12:00:32Z\"),\n })\n expect(late).toMatchObject({\n total: 1,\n items: [{ executionId: \"exec_parent\", modelCallCount: 31 }],\n })\n const unknown = await storage.aiCosts.listModelCallGroups({\n ...range,\n valuationStatus: \"unvalued\",\n modelId: \"small\",\n })\n expect(unknown.items[0]?.costs.amounts).toEqual([])\n expect(unknown.items[0]?.totalTokens).toBeUndefined()\n expect(\n await storage.aiCosts.listModelCallGroups({ ...range, projectId: \"other-project\" })\n ).toEqual({ items: [], total: 0, hasMore: false })\n expect(await storage.aiCosts.listModelCallGroups({ ...range, offset: 20 })).toEqual({\n items: [],\n total: 2,\n hasMore: false,\n })\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, limit: 201 })\n ).rejects.toThrow()\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, to: range.from })\n ).rejects.toThrow()\n } finally {\n await options.cleanup?.(storage)\n }\n })\n })\n}\n\nasync function seedWorkflowCall(\n storage: AiModelCallGroupsContractStorage,\n workflowId: string,\n runId: string\n) {\n const sourceExecutionId = await createTestWorkflowExecution(storage.executions, {\n projectId,\n workflowId,\n runId,\n })\n await storage.workflowRuns.queue({\n projectId,\n id: runId,\n workflowId,\n executionId: sourceExecutionId,\n input: {},\n })\n await storage.workflowRuns.start({ projectId, id: runId })\n const nodeRunId = `${runId}:node:0`\n await storage.workflowRuns.nodes.start({\n projectId,\n id: nodeRunId,\n workflowId,\n workflowRunId: runId,\n nodeIndex: 0,\n nodeType: \"agent\",\n nodeId: \"review\",\n nodeKey: \"review\",\n input: {},\n })\n const actorId = workflowAgentStepActorId(workflowId, \"review\")\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId: nodeRunId,\n actorId,\n sourceExecutionId,\n })\n await storage.workflowRuns.agentNodes.create({\n projectId,\n nodeRunId,\n executionId,\n actorId,\n prompt: \"Review the task.\",\n })\n const { record } = await storage.aiUsage.recordModelCall({\n projectId,\n id: `usage:${runId}`,\n executionId,\n attempt: 1,\n callId: runId,\n requesterGroupIds: [],\n providerId: \"test\",\n requestedModelId: \"small\",\n responseId: runId,\n usage: { inputTokens: 10, outputTokens: 5 },\n occurredAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: record.id,\n status: \"rated\",\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: runId,\n sourceVersion: \"1\",\n observedAt: new Date(\"2026-09-01T12:00:00Z\"),\n },\n components: [],\n billingIdentity: { providerId: \"test\", modelId: \"small\" },\n money: { currency: \"USD\", amountNanos: \"10\" },\n ratedAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n}\n\nasync function seed(storage: AiModelCallGroupsContractStorage) {\n await storage.agents.threads.create({\n id: \"thread\",\n projectId,\n ownerPrincipal: { type: \"user\", id: \"user\" },\n })\n for (const runId of [\"parent\", \"second\"]) {\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId,\n executionId: `exec_${runId}`,\n authority: \"inherited\",\n })\n await storage.agents.runs.create({\n id: runId,\n projectId,\n executionId,\n threadId: \"thread\",\n triggerMessageId: `message_${runId}`,\n spec: { model: { provider: \"parent-provider\", modelId: \"large\" } },\n })\n await storage.agents.runs.start({\n id: runId,\n projectId,\n execution: { token: runId, queueLeaseExpiresAt: new Date(\"2100-01-01T00:00:00Z\") },\n })\n if (runId === \"parent\") {\n const childExecution = await createTestAgentExecution(storage, {\n projectId,\n actorId: \"child\",\n runId: \"child\",\n executionId: \"exec_child\",\n sourceExecutionId: executionId,\n authority: \"inherited\",\n })\n await storage.agents.runs.createSubagent({\n id: \"child\",\n projectId,\n executionId: childExecution,\n parentRunId: runId,\n parentExecutionToken: runId,\n spawnKey: \"research\",\n spec: {\n model: { provider: \"child-provider\", modelId: \"small\" },\n task: \"Research\",\n toolNames: [],\n maxSteps: 25,\n },\n maxActiveChildren: 4,\n })\n }\n await storage.agents.runs.finish({\n id: runId,\n projectId,\n executionToken: runId,\n status: \"succeeded\",\n })\n }\n for (let index = 0; index < 33; index++) {\n const child = index > 0 && index < 32\n const result = await storage.aiUsage.recordModelCall({\n id: `usage_${index}`,\n projectId,\n executionId: index === 0 ? \"exec_parent\" : child ? \"exec_child\" : \"exec_second\",\n attempt: 1,\n callId: `call_${index}`,\n requesterGroupIds: [],\n providerId: child ? \"child-provider\" : \"parent-provider\",\n requestedModelId: child ? \"small\" : \"large\",\n responseId: `response_${index}`,\n usage: index === 31 ? {} : { inputTokens: 1, outputTokens: 2 },\n occurredAt: new Date(Date.parse(\"2026-09-01T12:00:00Z\") + index * 1000),\n })\n if (index >= 31) continue\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: result.record.id,\n status: \"rated\",\n billingIdentity: {\n providerId: child ? \"child-provider\" : \"parent-provider\",\n modelId: child ? \"small\" : \"large\",\n },\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: `cost_${index}`,\n sourceVersion: \"test\",\n observedAt: new Date(\"2026-09-01T12:05:00Z\"),\n },\n components: [],\n money: { currency: index === 0 ? \"EUR\" : \"USD\", amountNanos: index === 0 ? \"0\" : \"10\" },\n ratedAt: new Date(\"2026-09-01T12:05:00Z\"),\n })\n }\n}\n",
|
|
11
|
+
"import type { AuthorizablePrincipal, TrustedPrimitiveRef } from \"../execution\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by a workflow-run storage fixture. */\nexport async function createTestWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly requestedBy?: AuthorizablePrincipal\n readonly requesterGroupIds?: readonly string[]\n }\n): Promise<string> {\n const parentExecutionId = `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: parentExecutionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef:\n input.requestedBy === undefined\n ? { type: \"disabled\" }\n : { type: \"principal\", principal: structuredClone(input.requestedBy) },\n })\n await executions.create({\n id: executionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"execution\", executionId: parentExecutionId },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n\n/** Create a root workflow execution as produced by an automatic trigger. */\nexport async function createTestAutomaticWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly source?: { readonly type: \"schedule\" | \"event\"; readonly eventId: string }\n readonly correlationId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: executionId,\n requesterGroupIds: [],\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: input.source ?? { type: \"event\", eventId: `test_event:${input.runId}` },\n correlationId: input.correlationId ?? `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n",
|
|
12
12
|
"import { describe, expect, test } from \"bun:test\"\nimport {\n type AiUsageStorage,\n AiUsageStorageError,\n type RecordAiModelCallInput,\n} from \"../storage/ai-usage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\nexport interface AiUsageStorageContractSuiteOptions<\n TStorage extends AiUsageStorage = AiUsageStorage,\n> {\n /** Factory that returns an isolated AI usage store for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly setup?: (storage: TStorage) => void | Promise<void>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"contract-project\"\nconst agentExecutionId = \"exec_agent_1\"\nconst otherAgentExecutionId = \"exec_agent_2\"\nconst workflowExecutionId = \"exec_workflow_1\"\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction modelCallInput(overrides: Partial<RecordAiModelCallInput> = {}): RecordAiModelCallInput {\n return {\n id: \"usage_1\",\n projectId,\n executionId: agentExecutionId,\n attempt: 1,\n callId: \"call_1\",\n requesterGroupIds: [\"support\", \"engineering\"],\n providerId: \"gateway\",\n requestedModelId: \"openai/gpt-5\",\n requestedReasoning: { budgetTokens: 4_096 },\n responseModelId: \"gpt-5-2026-06-01\",\n responseId: \"response_1\",\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n },\n rawUsage: { input_tokens: 12, output_tokens: 8 },\n occurredAt: at(\"2026-06-23T10:00:00.000Z\"),\n recordedAt: at(\"2026-06-23T10:00:01.000Z\"),\n ...overrides,\n }\n}\n\n/** Runs the provider-neutral model-call ledger contract against one storage implementation. */\nexport function runAiUsageStorageContractSuite<TStorage extends AiUsageStorage>(\n label: string,\n options: AiUsageStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"retains native provider IDs across reads and replay\", async () => {\n // Regression proof: omit providerIds in normalization or a storage row codec.\n await withStorage(async (storage) => {\n const providerIds = {\n requestId: \"request-native\",\n responseId: \"response-native\",\n generationId: \"gen_native\",\n }\n await storage.recordModelCall(modelCallInput({ providerIds }))\n const latest = await storage.getLatestForExecution({\n projectId,\n executionId: agentExecutionId,\n })\n expect(latest?.providerIds).toEqual(providerIds)\n const replay = await storage.recordModelCall(modelCallInput())\n expect(replay.created).toBe(false)\n expect(replay.record.providerIds).toEqual(providerIds)\n await storage.recordModelCall(\n modelCallInput({ id: \"legacy\", callId: \"legacy\", occurredAt: at(\"2026-06-24T00:00:00Z\") })\n )\n expect(\n (await storage.getLatestForExecution({ projectId, executionId: agentExecutionId }))\n ?.providerIds\n ).toBeUndefined()\n await expect(\n storage.recordModelCall(modelCallInput({ providerIds: { requestId: \" \" } }))\n ).rejects.toThrow(\"requestId\")\n })\n })\n test(\"records normalized usage and one canonical row per requester group\", async () => {\n await withStorage(async (storage) => {\n const result = await storage.recordModelCall(\n modelCallInput({\n requesterGroupIds: [\"support\", \"engineering\", \"support\"],\n })\n )\n\n expect(result.created).toBe(true)\n expect(result.record).toEqual({\n ...modelCallInput(),\n requesterGroupIds: [\"engineering\", \"support\"],\n usage: {\n ...modelCallInput().usage,\n totalTokens: 20,\n reportingStatus: \"complete\",\n },\n recordedAt: at(\"2026-06-23T10:00:01.000Z\"),\n })\n })\n })\n\n test(\"returns the existing record when the idempotency key is replayed\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.recordModelCall(modelCallInput())\n const replay = await storage.recordModelCall(\n modelCallInput({\n id: \"ignored_retry_id\",\n requesterGroupIds: [\"different-group\"],\n usage: { inputTokens: 999, outputTokens: 1 },\n })\n )\n\n expect(first.created).toBe(true)\n expect(replay.created).toBe(false)\n expect(replay.record).toEqual(first.record)\n })\n })\n\n test(\"allows one generation call id to contain multiple billable responses\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n responseId: \"response_2\",\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n uncachedInputTokens: 4,\n cacheReadInputTokens: 0,\n cacheWriteInputTokens: 2,\n textOutputTokens: 5,\n reasoningOutputTokens: 1,\n },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 16,\n outputTokens: 14,\n totalTokens: 30,\n uncachedInputTokens: 13,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 3,\n textOutputTokens: 11,\n reasoningOutputTokens: 3,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"returns the latest completed call for one execution\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.getLatestForExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toBeNull()\n\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_later\",\n callId: \"call_later\",\n responseId: \"response_later\",\n occurredAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_earlier\",\n callId: \"call_earlier\",\n responseId: \"response_earlier\",\n occurredAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n )\n\n await expect(\n storage.getLatestForExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toMatchObject({ id: \"usage_later\", responseId: \"response_later\" })\n await expect(\n storage.getLatestForExecution({\n projectId: \"other-project\",\n executionId: agentExecutionId,\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"bills the same call and response IDs again on a later delivery attempt\", async () => {\n // Regression guard: remove `attempt` from a provider's idempotency key/query/index and the\n // second append collapses into the first, making the aggregate assertions fail.\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n attempt: 2,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n uncachedInputTokens: 4,\n cacheReadInputTokens: 0,\n cacheWriteInputTokens: 2,\n textOutputTokens: 5,\n reasoningOutputTokens: 1,\n },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 16,\n outputTokens: 14,\n totalTokens: 30,\n uncachedInputTokens: 13,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 3,\n textOutputTokens: 11,\n reasoningOutputTokens: 3,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"does not count concurrent idempotent appends twice\", async () => {\n await withStorage(async (storage) => {\n const results = await Promise.all([\n storage.recordModelCall(modelCallInput()),\n storage.recordModelCall(modelCallInput({ id: \"usage_retry\" })),\n ])\n\n expect(results.map((result) => result.created).sort()).toEqual([false, true])\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n totalTokens: 20,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"keeps projects and workflow executions isolated\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_workflow\",\n executionId: workflowExecutionId,\n usage: { inputTokens: 5, outputTokens: 3 },\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_other_project\",\n projectId: \"other-project\",\n executionId: workflowExecutionId,\n usage: { inputTokens: 100, outputTokens: 100 },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: workflowExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: {\n inputTokens: 5,\n outputTokens: 3,\n totalTokens: 8,\n reportingStatus: \"complete\",\n },\n })\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n await expect(\n storage.summarizeExecution({\n projectId,\n executionId: \"exec_workflow_2\",\n })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n\n test(\"summarizes multiple executions in input order with one zero-call entry per miss\", async () => {\n await withStorage(async (storage) => {\n await expect(storage.summarizeExecutions({ projectId, executionIds: [] })).resolves.toEqual(\n []\n )\n\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_agent_2\",\n executionId: otherAgentExecutionId,\n callId: \"call_agent_2\",\n responseId: \"response_agent_2\",\n usage: { inputTokens: 4, outputTokens: 6 },\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_workflow\",\n executionId: workflowExecutionId,\n callId: \"call_workflow\",\n responseId: \"response_workflow\",\n usage: { inputTokens: 5, outputTokens: 3 },\n })\n )\n\n await expect(\n storage.summarizeExecutions({\n projectId,\n executionIds: [\n otherAgentExecutionId,\n \"missing\",\n workflowExecutionId,\n agentExecutionId,\n otherAgentExecutionId,\n ],\n })\n ).resolves.toEqual([\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n totalTokens: 10,\n reportingStatus: \"complete\",\n },\n },\n { modelCallCount: 0, usage: { reportingStatus: \"unavailable\" } },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 5,\n outputTokens: 3,\n totalTokens: 8,\n reportingStatus: \"complete\",\n },\n },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n totalTokens: 20,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n reportingStatus: \"complete\",\n },\n },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n totalTokens: 10,\n reportingStatus: \"complete\",\n },\n },\n ])\n })\n })\n\n test(\"distinguishes no model calls from a call without reported usage\", async () => {\n // Regression guard: coerce nullable SQL token columns with `Number(null)` and this becomes a\n // complete zero-token report instead of an unavailable one.\n await withStorage(async (storage) => {\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n\n const result = await storage.recordModelCall(\n modelCallInput({ usage: {}, rawUsage: undefined })\n )\n\n expect(result.record.usage).toEqual({ reportingStatus: \"unavailable\" })\n expect(result.record.rawUsage).toBeUndefined()\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n\n test(\"normalizes offset timestamps to the same UTC instants\", async () => {\n // Regression guard: persist a timezone-naive SQL timestamp and these offset-derived instants\n // shift when read under a different database or process timezone.\n await withStorage(async (storage) => {\n const result = await storage.recordModelCall(\n modelCallInput({\n occurredAt: at(\"2026-06-23T03:04:05.678-07:00\"),\n recordedAt: at(\"2026-06-23T03:04:06.789-07:00\"),\n })\n )\n\n expect(result.record.occurredAt.toISOString()).toBe(\"2026-06-23T10:04:05.678Z\")\n expect(result.record.recordedAt.toISOString()).toBe(\"2026-06-23T10:04:06.789Z\")\n })\n })\n\n test(\"keeps incomplete execution totals partial instead of inventing zeroes\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(\n modelCallInput({ usage: { inputTokens: 10, outputTokens: 5 } })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n callId: \"call_2\",\n responseId: \"response_2\",\n usage: { inputTokens: 0 },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 10,\n reportingStatus: \"partial\",\n },\n })\n })\n })\n\n test(\"defensively snapshots inputs and returned records\", async () => {\n await withStorage(async (storage) => {\n const requesterGroupIds = [\"support\"]\n const rawUsage = { nested: { cached: 3 } }\n const occurredAt = at(\"2026-06-23T10:00:00.000Z\")\n const input = modelCallInput({ requesterGroupIds, rawUsage, occurredAt })\n const first = await storage.recordModelCall(input)\n\n requesterGroupIds.push(\"mutated-input\")\n rawUsage.nested.cached = 999\n occurredAt.setTime(0)\n\n const returnedGroups = first.record.requesterGroupIds as string[]\n returnedGroups.push(\"mutated-output\")\n const returnedRaw = first.record.rawUsage as { nested: { cached: number } }\n returnedRaw.nested.cached = 888\n first.record.occurredAt.setTime(1)\n\n const replay = await storage.recordModelCall(modelCallInput())\n expect(replay.record.requesterGroupIds).toEqual([\"support\"])\n expect(replay.record.rawUsage).toEqual({ nested: { cached: 3 } })\n expect(replay.record.occurredAt.toISOString()).toBe(\"2026-06-23T10:00:00.000Z\")\n })\n })\n\n test(\"rejects a reused record id with a different model-call identity\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n\n const error = storage.recordModelCall(\n modelCallInput({ callId: \"call_2\", responseId: \"response_2\" })\n )\n await expect(error).rejects.toBeInstanceOf(AiUsageStorageError)\n await expect(error).rejects.toMatchObject({ code: \"duplicate_id\" })\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toMatchObject({\n modelCallCount: 1,\n usage: { inputTokens: 12, outputTokens: 8, totalTokens: 20 },\n })\n })\n })\n\n test(\"rejects a model call whose durable execution does not exist\", async () => {\n await withStorage(async (storage) => {\n const error = storage.recordModelCall(\n modelCallInput({ id: \"usage_missing\", executionId: \"exec_missing\" })\n )\n await expect(error).rejects.toBeInstanceOf(AiUsageStorageError)\n await expect(error).rejects.toMatchObject({ code: \"missing_execution\" })\n })\n })\n\n test(\"rejects invalid execution IDs, usage, dates, groups, and raw JSON\", async () => {\n await withStorage(async (storage) => {\n const invalidInputs: RecordAiModelCallInput[] = [\n modelCallInput({ attempt: 0 }),\n modelCallInput({ providerId: \" \" }),\n modelCallInput({ requesterGroupIds: [\"\"] }),\n modelCallInput({ usage: { inputTokens: -1 } }),\n modelCallInput({ occurredAt: new Date(Number.NaN) }),\n modelCallInput({ rawUsage: { invalid: undefined } as never }),\n modelCallInput({ requestedReasoning: { budgetTokens: -1 } }),\n modelCallInput({ executionId: \"\" }),\n ]\n\n for (const input of invalidInputs) {\n await expect(storage.recordModelCall(input)).rejects.toThrow()\n }\n await expect(\n storage.summarizeExecutions({\n projectId,\n executionIds: [\"\"],\n })\n ).rejects.toThrow()\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n })\n}\n\n/** Seed the immutable execution references used by the provider-neutral AI usage contract. */\nexport async function seedAiUsageStorageContractExecutions(\n executions: ExecutionStorage\n): Promise<void> {\n for (const fixture of [\n { projectId, executionId: agentExecutionId },\n { projectId, executionId: otherAgentExecutionId },\n { projectId, executionId: workflowExecutionId },\n { projectId: \"other-project\", executionId: workflowExecutionId },\n ]) {\n const existing = await executions.getById({\n projectId: fixture.projectId,\n id: fixture.executionId,\n })\n if (existing) continue\n const primitive = {\n kind: \"workflow\" as const,\n id: \"ai-usage-contract\",\n runId: fixture.executionId,\n }\n await executions.create({\n id: fixture.executionId,\n projectId: fixture.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${fixture.executionId}` },\n correlationId: `test_correlation:${fixture.executionId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n }\n}\n",
|
|
13
13
|
"import { describe, expect, test } from \"bun:test\"\nimport type {\n AuthStorage,\n AuthStorageErrorCode,\n CompleteAuthSessionInput,\n UserRecord,\n} from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\n\nexport interface AuthStorageContractSuiteOptions<TStorage extends AuthStorage = AuthStorage> {\n /** Factory that produces a fresh `AuthStorage` instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst otherProjectId = \"project-b\"\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction sessionInput(\n id: string,\n tokenHash = `${id}-hash`,\n audience: CompleteAuthSessionInput[\"audience\"] = \"atlas\",\n absoluteExpiresAt?: Date\n): CompleteAuthSessionInput {\n return {\n id,\n audience,\n tokenHash,\n createdAt: at(\"2026-05-14T10:10:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:10:00.000Z\"),\n absoluteExpiresAt,\n }\n}\n\nasync function expectAuthError(\n promise: Promise<unknown>,\n code: AuthStorageErrorCode\n): Promise<void> {\n await expect(promise).rejects.toBeInstanceOf(AuthStorageError)\n await expect(promise).rejects.toMatchObject({ code })\n}\n\nasync function createUser(\n storage: AuthStorage,\n input: {\n readonly id?: string\n readonly email?: string\n readonly status?: UserRecord[\"status\"]\n readonly projectId?: string\n } = {}\n): Promise<UserRecord> {\n return storage.users.create({\n id: input.id ?? \"usr_1\",\n projectId: input.projectId ?? projectId,\n email: input.email ?? \"ava@acme.com\",\n status: input.status,\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n}\n\n/**\n * Runs the shared `AuthStorage` contract against any storage implementation.\n *\n * The suite is the storage-independent specification for Sixb auth state: users, identities,\n * sessions, invitations, group memberships, service accounts, access tokens,\n * magic links, OIDC attempts, and atomic sign-in completion.\n */\nexport function runAuthStorageContractSuite<TStorage extends AuthStorage>(\n label: string,\n options: AuthStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"creates users with normalized email and isolates projects\", async () => {\n await withStorage(async (storage) => {\n const user = await createUser(storage, {\n email: \" Ava@Acme.COM \",\n })\n\n expect(user.email).toBe(\"ava@acme.com\")\n await expectAuthError(\n storage.users.create({\n id: \"usr_duplicate\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"duplicate_user\"\n )\n\n await expect(\n storage.users.create({\n id: \"usr_other\",\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n })\n\n const page = await storage.users.list({ projectId, statuses: [\"active\"] })\n expect(page.users.map((row) => row.id)).toEqual([\"usr_1\"])\n })\n })\n\n test(\"upserts identities without mutating canonical user email\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n const updated = await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava.renamed@acme.com\" },\n updatedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n expect(updated.claims).toEqual({ email: \"ava.renamed@acme.com\" })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"keeps multiple concurrent sessions per user and never extends expiry on touch\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const first = await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const second = await storage.sessions.create({\n id: \"ses_2\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Creating a second session in the same audience no longer revokes the\n // first: both stay active and authenticate independently.\n expect(first.revokedAt).toBeUndefined()\n expect(second.revokedAt).toBeUndefined()\n const storedFirst = await storage.sessions.getById({ projectId, id: \"ses_1\" })\n expect(storedFirst?.revokedAt).toBeUndefined()\n\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_1\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // getActiveByUserId returns the most recently created active session.\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n const touched = await storage.sessions.touch({\n projectId,\n id: second.id,\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n expect(touched.lastSeenAt?.toISOString()).toBe(\"2026-05-15T10:00:00.000Z\")\n expect(touched.expiresAt.toISOString()).toBe(\"2026-05-21T10:05:00.000Z\")\n\n // A session in a different audience coexists and is cookie-scoped.\n const appSession = await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:06:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:06:00.000Z\"),\n })\n expect(appSession.revokedAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_app\",\n audience: \"atlas\",\n tokenHash: \"hash-app\",\n now: at(\"2026-05-14T10:07:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // Revoking a single session leaves the user's other sessions active.\n await storage.sessions.revoke({\n projectId,\n id: \"ses_1\",\n revokedAt: at(\"2026-05-14T10:08:00.000Z\"),\n })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n // \"Sign out everywhere\": revokeActiveForUser clears every remaining\n // active session for the user, across audiences.\n const revoked = await storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n revokedAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n expect(revoked.map((entry) => entry.id).sort()).toEqual([\"ses_2\", \"ses_app\"])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:11:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"persists and enforces an optional absolute session deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n const capped = await storage.sessions.create({\n id: \"ses_capped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n const uncapped = await storage.sessions.create({\n id: \"ses-uncapped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-uncapped\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n expect(capped.absoluteExpiresAt?.toISOString()).toBe(\"2026-05-16T10:00:00.000Z\")\n expect(uncapped.absoluteExpiresAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T09:59:59.999Z\"),\n })\n ).resolves.toMatchObject({ id: capped.id })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([uncapped.id])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n revokedAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toEqual([])\n })\n })\n\n test(\"atomically renews valid sessions without exceeding the absolute deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_renew\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-20T10:00:00.000Z\"),\n })\n\n const renewed = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-25T10:00:00.000Z\"),\n })\n expect(renewed?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n expect(renewed?.lastSeenAt?.toISOString()).toBe(\"2026-05-14T11:00:00.000Z\")\n\n const monotonic = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T12:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n })\n expect(monotonic?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"wrong-hash\",\n now: at(\"2026-05-14T13:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-20T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n await storage.sessions.create({\n id: \"ses_concurrent\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n await Promise.all([\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n }),\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n }),\n ])\n const concurrent = await storage.sessions.getById({ projectId, id: \"ses_concurrent\" })\n expect(concurrent?.expiresAt.toISOString()).toBe(\"2026-05-19T10:00:00.000Z\")\n })\n })\n\n test(\"persists best-effort device metadata on a session\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const withDevice = await storage.sessions.create({\n id: \"ses_device\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-device\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n expect(withDevice.userAgent).toBe(\"Mozilla/5.0 (iPhone)\")\n expect(withDevice.ipAddress).toBe(\"203.0.113.7\")\n await expect(\n storage.sessions.getById({ projectId, id: \"ses_device\" })\n ).resolves.toMatchObject({\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n\n // Device metadata is optional; omitting it round-trips as undefined.\n const withoutDevice = await storage.sessions.create({\n id: \"ses_plain\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-plain\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(withoutDevice.userAgent).toBeUndefined()\n expect(withoutDevice.ipAddress).toBeUndefined()\n })\n })\n\n test(\"lists a user's active sessions across audiences, newest activity first\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.sessions.create({\n id: \"ses_a\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-a\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_b\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-b\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Revoked sessions are excluded.\n await storage.sessions.create({\n id: \"ses_revoked\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-revoked\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n await storage.sessions.revoke({\n projectId,\n id: \"ses_revoked\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n // Another user's session must not leak in.\n await createUser(storage, { id: \"usr_2\", email: \"bo@acme.com\" })\n await storage.sessions.create({\n id: \"ses_other\",\n projectId,\n userId: \"usr_2\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-other\",\n createdAt: at(\"2026-05-14T10:03:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:03:00.000Z\"),\n })\n\n // ses_a is older than ses_b but has more recent activity, so it sorts first.\n await storage.sessions.touch({\n projectId,\n id: \"ses_a\",\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-15T11:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([\"ses_a\", \"ses_b\"])\n })\n })\n\n test(\"keeps one active invitation per normalized email\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \" Ava@Acme.COM \",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const updated = await storage.invitations.createOrUpdateActive({\n id: \"inv_2\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"finance\"],\n updatedAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-22T10:00:00.000Z\"),\n })\n\n expect(updated.id).toBe(first.id)\n expect(updated.groupIds).toEqual([\"finance\"])\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"inv_1\" })\n\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"upserts group memberships idempotently and preserves source\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n const repeated = await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n expect(repeated.source).toBe(\"invitation\")\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(1)\n })\n })\n\n test(\"rejects group memberships for missing users\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_user\"\n )\n })\n })\n\n test(\"removes group memberships and is idempotent for missing rows\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const removed = await storage.groupMemberships.remove({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n })\n expect(removed).toMatchObject({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(0)\n\n // Removing an already-removed membership is a no-op that returns null.\n await expect(\n storage.groupMemberships.remove({ projectId, userId: \"usr_1\", groupId: \"commercial\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"returns null when removing a membership for a missing user\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.groupMemberships.remove({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"manages service accounts and their group memberships\", async () => {\n await withStorage(async (storage) => {\n const serviceAccount = await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n description: \"Reads source data into Sixb.\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n expect(serviceAccount).toMatchObject({\n id: \"svc_ingest\",\n name: \"Ingest worker\",\n status: \"active\",\n })\n\n const membership = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n expect(membership.groupId).toBe(\"commercial\")\n const repeated = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n expect(repeated.source).toBe(\"manual\")\n\n await expect(\n storage.serviceAccountGroupMemberships.listForServiceAccount({\n projectId,\n serviceAccountId: \"svc_ingest\",\n })\n ).resolves.toHaveLength(1)\n await expect(\n storage.serviceAccountGroupMemberships.listForGroup({\n projectId,\n groupId: \"commercial\",\n })\n ).resolves.toMatchObject([{ serviceAccountId: \"svc_ingest\" }])\n\n const updated = await storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n name: \"Ingest worker v2\",\n status: \"suspended\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(updated).toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Reads source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n description: \"Imports source data into Sixb.\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Imports source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.list({ projectId, statuses: [\"suspended\"] })\n ).resolves.toMatchObject({\n serviceAccounts: [{ id: \"svc_ingest\" }],\n total: 1,\n })\n })\n })\n\n test(\"rejects service account memberships for missing service accounts\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"reconciles agent-managed service account memberships\", async () => {\n await withStorage(async (storage) => {\n await storage.serviceAccounts.create({\n id: \"svc_agent_ops\",\n projectId,\n name: \"Ops agent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"manual-extra\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"stale-agent\",\n source: \"agent\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n const first = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"agent-runtime\", \"agent-runtime\", \"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(first.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"agent-runtime\", \"agent\"],\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n\n const second = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n expect(second.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n })\n })\n\n test(\"creates, resolves, touches, lists, and revokes access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const personal = await storage.accessTokens.create({\n id: \"tok_personal\",\n projectId,\n name: \"Local CLI\",\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: \"hash-personal\",\n groupIds: [\"commercial\", \"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(personal.groupIds).toEqual([\"commercial\", \"finance\"])\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"tok_personal\" })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n const touched = await storage.accessTokens.touch({\n projectId,\n id: \"tok_personal\",\n lastUsedAt: at(\"2026-05-14T10:03:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(touched.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:03:00.000Z\")\n expect(touched.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n\n await storage.accessTokens.create({\n id: \"tok_service\",\n projectId,\n name: \"Sandbox agent\",\n kind: \"serviceAccount\",\n subjectType: \"serviceAccount\",\n subjectId: \"svc_ingest\",\n tokenHash: \"hash-service\",\n createdAt: at(\"2026-05-14T10:04:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:04:00.000Z\"),\n })\n await expect(\n storage.accessTokens.list({\n projectId,\n subjectType: \"serviceAccount\",\n subjectId: \"svc_ingest\",\n })\n ).resolves.toMatchObject({\n accessTokens: [{ id: \"tok_service\" }],\n total: 1,\n })\n\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_personal\",\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"round-trips the creator principal for service accounts and access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_creator\", email: \"creator@acme.com\" })\n await storage.serviceAccounts.create({\n id: \"svc_creator\",\n projectId,\n name: \"Creator service account\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_creator\",\n projectId,\n userId: \"usr_creator\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-creator\",\n createdAt: at(\"2026-05-14T10:00:30.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:30.000Z\"),\n })\n\n const principals = [\n { type: \"user\", id: \"usr_creator\" },\n { type: \"serviceAccount\", id: \"svc_creator\" },\n { type: \"system\", id: \"scheduler\" },\n ] as const\n\n for (const [index, principal] of principals.entries()) {\n const accountId = `svc_by_${principal.type}`\n const createdAccount = await storage.serviceAccounts.create({\n id: accountId,\n projectId,\n name: `Service account by ${principal.type}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:1${index}:00.000Z`),\n })\n expect(createdAccount.createdByPrincipal).toEqual(principal)\n expect(createdAccount.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.serviceAccounts.getById({ projectId, id: accountId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n\n const tokenId = `tok_by_${principal.type}`\n const createdToken = await storage.accessTokens.create({\n id: tokenId,\n projectId,\n name: `Token by ${principal.type}`,\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_creator\",\n tokenHash: `hash-${tokenId}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:2${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:2${index}:00.000Z`),\n })\n expect(createdToken.createdByPrincipal).toEqual(principal)\n expect(createdToken.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.accessTokens.getById({ projectId, id: tokenId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n }\n\n // Omitting the creator round-trips as undefined on every backend.\n const anonymous = await storage.serviceAccounts.create({\n id: \"svc_anonymous\",\n projectId,\n name: \"Anonymous service account\",\n createdAt: at(\"2026-05-14T10:30:00.000Z\"),\n })\n expect(anonymous.createdByPrincipal).toBeUndefined()\n expect(anonymous.createdBySessionId).toBeUndefined()\n await expect(\n storage.serviceAccounts.getById({ projectId, id: \"svc_anonymous\" })\n ).resolves.toMatchObject({ id: \"svc_anonymous\" })\n })\n })\n\n test(\"touch preserves prior access-token metadata when omitted\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.accessTokens.create({\n id: \"tok_touch\",\n projectId,\n name: \"Touch token\",\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: \"hash-touch\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n\n const first = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:01:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(first.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(first.lastUsedIpAddress).toBe(\"203.0.113.10\")\n\n // A later touch without metadata advances lastUsedAt but keeps the\n // previously captured user agent and IP address.\n const second = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n expect(second.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:05:00.000Z\")\n expect(second.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(second.lastUsedIpAddress).toBe(\"203.0.113.10\")\n await expect(\n storage.accessTokens.getById({ projectId, id: \"tok_touch\" })\n ).resolves.toMatchObject({\n lastUsedUserAgent: \"sixb-cli/0.1\",\n lastUsedIpAddress: \"203.0.113.10\",\n })\n })\n })\n\n test(\"lists access tokens with revoked, order, and pagination parity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const ids = [\"tok_a\", \"tok_b\", \"tok_c\", \"tok_d\"]\n for (const [index, id] of ids.entries()) {\n await storage.accessTokens.create({\n id,\n projectId,\n name: `Token ${id}`,\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: `hash-${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:0${index}:00.000Z`),\n })\n }\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_b\",\n revokedAt: at(\"2026-05-14T11:00:00.000Z\"),\n })\n\n // includeRevoked defaults to false: the revoked token is hidden.\n const active = await storage.accessTokens.list({ projectId })\n expect(active.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_c\", \"tok_d\"])\n expect(active.total).toBe(3)\n expect(active.hasMore).toBe(false)\n\n // includeRevoked: true surfaces it again, default order is ascending.\n const all = await storage.accessTokens.list({ projectId, includeRevoked: true })\n expect(all.accessTokens.map((token) => token.id)).toEqual([\n \"tok_a\",\n \"tok_b\",\n \"tok_c\",\n \"tok_d\",\n ])\n expect(all.total).toBe(4)\n\n // order: \"desc\" reverses by createdAt.\n const descending = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n order: \"desc\",\n })\n expect(descending.accessTokens.map((token) => token.id)).toEqual([\n \"tok_d\",\n \"tok_c\",\n \"tok_b\",\n \"tok_a\",\n ])\n\n // First page reports hasMore at the page boundary.\n const firstPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n })\n expect(firstPage.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_b\"])\n expect(firstPage.total).toBe(4)\n expect(firstPage.hasMore).toBe(true)\n\n // Second page exhausts the result set.\n const secondPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.accessTokens.map((token) => token.id)).toEqual([\"tok_c\", \"tok_d\"])\n expect(secondPage.hasMore).toBe(false)\n\n // A page that exactly consumes the remainder reports no more.\n const exactBoundary = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 4,\n })\n expect(exactBoundary.accessTokens.map((token) => token.id)).toEqual(ids)\n expect(exactBoundary.hasMore).toBe(false)\n })\n })\n\n test(\"lists service accounts with pagination parity\", async () => {\n await withStorage(async (storage) => {\n const ids = [\"svc_a\", \"svc_b\", \"svc_c\"]\n for (const [index, id] of ids.entries()) {\n await storage.serviceAccounts.create({\n id,\n projectId,\n name: `Service account ${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n })\n }\n\n // Default order is ascending by createdAt across every backend.\n const all = await storage.serviceAccounts.list({ projectId })\n expect(all.serviceAccounts.map((account) => account.id)).toEqual(ids)\n expect(all.total).toBe(3)\n expect(all.hasMore).toBe(false)\n\n const firstPage = await storage.serviceAccounts.list({ projectId, limit: 2 })\n expect(firstPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_a\", \"svc_b\"])\n expect(firstPage.total).toBe(3)\n expect(firstPage.hasMore).toBe(true)\n\n const secondPage = await storage.serviceAccounts.list({\n projectId,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_c\"])\n expect(secondPage.hasMore).toBe(false)\n })\n })\n\n test(\"rejects invalid access token subjects\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_bad_kind\",\n projectId,\n name: \"Bad kind\",\n kind: \"serviceAccount\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"invalid_input\"\n )\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_missing_subject\",\n projectId,\n name: \"Missing subject\",\n kind: \"serviceAccount\",\n subjectType: \"serviceAccount\",\n subjectId: \"svc_missing\",\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"creates one active magic link per email and consumes it once\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:15:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_2\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \" ava@acme.com \",\n tokenHash: \"hash-2\",\n returnTo: \"/dashboard\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n\n await expect(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n returnTo: \"/dashboard\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"stores OIDC attempts with one-time state consumption\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n returnTo: \"/objects\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n await expect(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n codeVerifier: \"verifier\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n })\n })\n\n test(\"authorizes a device and atomically creates its one-time access token\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_device\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"session-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.deviceAuthorizations.create({\n id: \"dva_1\",\n projectId,\n deviceCodeHash: \"device-code-hash\",\n userCode: \"BCDF-HJKM\",\n clientName: \"sixb CLI\",\n tokenName: \"codex\",\n tokenExpiresAt: at(\"2026-08-12T10:00:00.000Z\"),\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expect(\n storage.deviceAuthorizations.getByUserCode({ projectId, userCode: \"BCDF-HJKM\" })\n ).resolves.toMatchObject({ id: \"dva_1\", status: \"pending\" })\n await storage.deviceAuthorizations.approve({\n projectId,\n id: \"dva_1\",\n userId: \"usr_1\",\n sessionId: \"ses_device\",\n approvedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n const completed = await storage.completeDeviceAuthorization({\n projectId,\n id: \"dva_1\",\n deviceCodeHash: \"device-code-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n accessToken: {\n id: \"tok_device\",\n projectId,\n name: \"codex\",\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: \"access-token-hash\",\n createdByPrincipal: { type: \"user\", id: \"usr_1\" },\n createdBySessionId: \"ses_device\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-08-12T10:00:00.000Z\"),\n },\n })\n\n expect(completed.authorization).toMatchObject({ status: \"consumed\" })\n expect(completed.accessToken).toMatchObject({ id: \"tok_device\", subjectId: \"usr_1\" })\n await expectAuthError(\n storage.completeDeviceAuthorization({\n projectId,\n id: \"dva_1\",\n deviceCodeHash: \"device-code-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n accessToken: {\n id: \"tok_device_2\",\n projectId,\n name: \"codex\",\n kind: \"personal\",\n subjectType: \"user\",\n subjectId: \"usr_1\",\n tokenHash: \"access-token-hash-2\",\n createdBySessionId: \"ses_device\",\n createdAt: at(\"2026-05-14T10:03:00.000Z\"),\n expiresAt: at(\"2026-08-12T10:00:00.000Z\"),\n },\n }),\n \"invalid_device_authorization\"\n )\n await expect(\n storage.accessTokens.getById({ projectId, id: \"tok_device_2\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"completes magic-link sign-in for an existing user\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_old\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"old-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\", \"session-hash\", \"atlas\", at(\"2026-06-21T10:10:00.000Z\")),\n })\n\n expect(result.user.id).toBe(\"usr_1\")\n expect(result.session).toMatchObject({\n id: \"ses_new\",\n strategyId: \"magic-link\",\n tokenHash: \"session-hash\",\n absoluteExpiresAt: at(\"2026-06-21T10:10:00.000Z\"),\n })\n // Signing in again keeps the user's existing session active; concurrent\n // sessions are allowed.\n const oldSession = await storage.sessions.getById({ projectId, id: \"ses_old\" })\n expect(oldSession?.revokedAt).toBeUndefined()\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused_2\",\n session: sessionInput(\"ses_replay\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"creates invited users through magic-link completion and applies groups once\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_new\"),\n })\n\n expect(result.invitation).toMatchObject({\n id: \"inv_1\",\n status: \"accepted\",\n })\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_new\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"invitation\"],\n [\"finance\", \"invitation\"],\n [\"security-admins\", \"manual\"],\n ])\n })\n })\n\n test(\"preserves existing membership source when accepting an invitation\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_existing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_existing\"),\n })\n\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_existing\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"manual\"],\n [\"finance\", \"invitation\"],\n ])\n })\n })\n\n test(\"does not create missing users when invitation eligibility disappeared\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n session: sessionInput(\"ses_new\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n })\n })\n\n test(\"allows explicit bootstrap creation through magic-link completion\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"founder@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_founder\",\n allowUserCreationWithoutInvitation: true,\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_founder\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"closes bootstrap user creation when an active user already exists\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, {\n id: \"usr_existing\",\n email: \"existing@acme.com\",\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"founder@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_founder\",\n allowUserCreationWithoutInvitation: true,\n requireNoActiveUsersForUserCreation: true,\n session: sessionInput(\"ses_founder\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"founder@acme.com\" })\n ).resolves.toBeNull()\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n })\n })\n\n test(\"does not apply the bootstrap closure guard to invited user creation\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, {\n id: \"usr_existing\",\n email: \"existing@acme.com\",\n })\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"invited@acme.com\",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"invited@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_invited\",\n requireNoActiveUsersForUserCreation: true,\n session: sessionInput(\"ses_invited\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_invited\",\n email: \"invited@acme.com\",\n })\n expect(result.invitation).toMatchObject({\n id: \"inv_1\",\n status: \"accepted\",\n })\n })\n })\n\n test(\"consumes valid magic links when an existing user is suspended\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { status: \"suspended\" })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\"),\n }),\n \"suspended_user\"\n )\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n })\n })\n\n test(\"completes OIDC sign-in through an existing identity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:11:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n subject: \"00u1\",\n email: \"renamed@acme.com\",\n emailVerified: true,\n claims: { email: \"renamed@acme.com\" },\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"renamed@acme.com\" },\n })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"auto-links OIDC by verified email only when explicitly allowed\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_blocked\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"blocked-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_blocked\",\n stateHash: \"blocked-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: false,\n autoLinkByVerifiedEmail: true,\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_blocked\"),\n }),\n \"email_link_not_allowed\"\n )\n\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_allowed\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"allowed-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:12:00.000Z\"),\n })\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_allowed\",\n stateHash: \"allowed-state\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: true,\n autoLinkByVerifiedEmail: true,\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_allowed\"),\n })\n\n expect(result.user.id).toBe(\"usr_existing\")\n expect(result.identity).toMatchObject({\n userId: \"usr_existing\",\n })\n })\n })\n\n test(\"creates new OIDC users through active invitations and applies groups\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_oidc\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T09:59:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n emailVerified: true,\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_oidc\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n })\n expect(result.invitation).toMatchObject({\n id: \"inv_oidc\",\n status: \"accepted\",\n })\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_oidc\" })\n ).resolves.toMatchObject([{ groupId: \"commercial\", source: \"invitation\" }])\n })\n })\n\n test(\"does not create new OIDC users without invitation or bootstrap eligibility\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: true,\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"allows first OIDC bootstrap user creation with manual groups\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_bootstrap\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"bootstrap-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_bootstrap\",\n stateHash: \"bootstrap-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"founder@acme.com\",\n emailVerified: true,\n allowUserCreationWithoutInvitation: true,\n requireNoActiveUsersForUserCreation: true,\n manualGroupIds: [\"security-admins\"],\n newUserId: \"usr_founder\",\n session: sessionInput(\"ses_oidc_bootstrap\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"suspends users and revokes active sessions immediately\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n const suspended = await storage.suspendUserAndRevokeSessions({\n projectId,\n userId: \"usr_1\",\n suspendedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n\n expect(suspended.status).toBe(\"suspended\")\n await expect(storage.sessions.getById({ projectId, id: \"ses_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(storage.sessions.getById({ projectId, id: \"ses_app\" })).resolves.toMatchObject(\n {\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n }\n )\n })\n })\n })\n}\n",
|
|
14
14
|
"import { describe, expect, test } from \"bun:test\"\nimport { blobIdFromDigest, computeBlobDigest } from \"../blob-storage\"\nimport type { BlobStorage } from \"../blob-storage/types\"\n\nexport interface BlobStorageContractSuiteOptions<TStorage extends BlobStorage = BlobStorage> {\n /** Factory that produces an isolated storage instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\n/** Runs the shared content, streaming, size-validation, and cancellation contract. */\nexport function runBlobStorageContractSuite<TStorage extends BlobStorage>(\n label: string,\n options: BlobStorageContractSuiteOptions<TStorage>\n): void {\n const encoder = new TextEncoder()\n\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"streams bodies into stable content-addressed references\", async () => {\n await withStorage(async (storage) => {\n const body = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(encoder.encode(\"streamed \"))\n controller.enqueue(encoder.encode(\"body\"))\n controller.close()\n },\n })\n\n const fileRef = await storage.put({\n body,\n expectedSizeBytes: 13,\n fileName: \"report.bin\",\n mediaType: \"application/octet-stream\",\n logicalPath: \"reports/report.bin\",\n })\n\n expect(fileRef.sizeBytes).toBe(13)\n expect(fileRef.blobId).toBe(blobIdFromDigest(fileRef.digest))\n expect(fileRef.fileName).toBe(\"report.bin\")\n expect(fileRef.mediaType).toBe(\"application/octet-stream\")\n expect(fileRef.logicalPath).toBe(\"reports/report.bin\")\n expect(await new Response(await storage.open(fileRef.blobId)).text()).toBe(\"streamed body\")\n })\n })\n\n test(\"rejects an expected size mismatch without publishing a blob\", async () => {\n await withStorage(async (storage) => {\n const bytes = encoder.encode(\"wrong size\")\n const blobId = blobIdFromDigest(computeBlobDigest(bytes))\n\n await expect(\n storage.put({ body: bytes, expectedSizeBytes: bytes.byteLength + 1 })\n ).rejects.toThrow(\n `Blob size mismatch: expected ${bytes.byteLength + 1} bytes, received ${bytes.byteLength}.`\n )\n await expect(storage.stat(blobId)).resolves.toBeNull()\n })\n })\n\n test(\"rejects invalid expected sizes\", async () => {\n await withStorage(async (storage) => {\n const body = new ReadableStream<Uint8Array>({\n pull(controller) {\n controller.close()\n },\n })\n\n await expect(storage.put({ body, expectedSizeBytes: -1 })).rejects.toThrow(\n \"expectedSizeBytes must be a non-negative safe integer\"\n )\n })\n })\n\n test(\"cancels an active body without publishing partial bytes\", async () => {\n await withStorage(async (storage) => {\n const abort = new AbortController()\n let bodyCancelled = false\n const firstChunk = encoder.encode(\"partial\")\n const blobId = blobIdFromDigest(computeBlobDigest(firstChunk))\n const body = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(firstChunk)\n },\n cancel() {\n bodyCancelled = true\n },\n })\n\n const put = storage.put({ body, signal: abort.signal })\n abort.abort(new Error(\"cancel blob put\"))\n\n await expect(put).rejects.toThrow(\"cancel blob put\")\n expect(bodyCancelled).toBe(true)\n await expect(storage.stat(blobId)).resolves.toBeNull()\n })\n })\n })\n}\n",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"import { describe, expect, test } from \"bun:test\"\nimport type {\n ClaimConnectorConnectionRunCallbackInput,\n ClaimConnectorCredentialMutationResult,\n ConnectorAuthorizationRecord,\n ConnectorConnectionStorage,\n ConnectorCredentialMutationKind,\n CreateConnectorAuthorizationAttemptInput,\n CreateConnectorConnectionRunInput,\n} from \"../storage/connector-connections\"\nimport type { CreateExecutionInput } from \"../storage/executions\"\nimport type { Storage } from \"../storage/types\"\n\nexport type ConnectorConnectionStorageContractStorage = Storage & {\n readonly connectorConnections: ConnectorConnectionStorage\n}\n\nexport interface ConnectorConnectionStorageContractSuiteOptions<\n TStorage extends\n ConnectorConnectionStorageContractStorage = ConnectorConnectionStorageContractStorage,\n> {\n /** Factory that produces one isolated complete storage provider for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Advances the storage-authoritative clock without relying on wall-clock sleeps. */\n readonly advanceTime: (storage: TStorage, durationMs: number) => void | Promise<void>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst connectorId = \"social\"\nconst credentials = {\n version: 1,\n algorithm: \"A256GCM\",\n nonce: \"nonce\",\n ciphertext: \"ciphertext\",\n tag: \"tag\",\n} as const\n\n/** Runs the atomicity, fencing, slot uniqueness and project-isolation storage contract. */\nexport function runConnectorConnectionStorageContractSuite<\n TStorage extends ConnectorConnectionStorageContractStorage,\n>(label: string, options: ConnectorConnectionStorageContractSuiteOptions<TStorage>): void {\n const withStorage = async (\n body: (connections: TStorage[\"connectorConnections\"], storage: TStorage) => Promise<void>\n ): Promise<void> => {\n const root = await options.createStorage()\n try {\n await body(root.connectorConnections, root)\n } finally {\n await options.teardown?.(root)\n }\n }\n\n describe(label, () => {\n test(\"binds one-use authorization attempts to their initiating execution\", async () => {\n await withStorage(async (storage) => {\n const attempt = authorizationAttempt()\n await expect(storage.createAuthorizationAttempt(attempt)).resolves.toMatchObject({\n id: attempt.id,\n projectId,\n connectorId,\n initiatedByExecutionId: attempt.initiatedByExecutionId,\n })\n\n for (const mismatchedScope of [\n { projectId: \"project-b\" },\n { connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.consumeAuthorizationAttempt({\n ...authorizationAttemptConsumption(),\n ...mismatchedScope,\n })\n ).rejects.toThrow(\"invalid, expired, or already used\")\n }\n\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).resolves.toMatchObject({\n id: attempt.id,\n initiatedByExecutionId: attempt.initiatedByExecutionId,\n })\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).rejects.toThrow(\"invalid, expired, or already used\")\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt())\n ).resolves.toMatchObject({ id: \"attempt-a\" })\n })\n })\n\n test(\"expires authorization attempts from the authoritative storage clock\", async () => {\n await withStorage(async (storage, root) => {\n const ttlMs = 60_000\n const attempt = await storage.createAuthorizationAttempt(authorizationAttempt({ ttlMs }))\n expect(attempt.expiresAt.getTime() - attempt.createdAt.getTime()).toBe(ttlMs)\n\n await options.advanceTime(root, ttlMs)\n\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).rejects.toThrow(\"invalid, expired, or already used\")\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt())\n ).resolves.toMatchObject({ id: \"attempt-a\" })\n })\n })\n\n test(\"returns detached authorization attempt records\", async () => {\n await withStorage(async (storage) => {\n const created = await storage.createAuthorizationAttempt(authorizationAttempt())\n Object.assign(created.codeVerifier, { ciphertext: \"mutated\" })\n\n const consumed = await storage.consumeAuthorizationAttempt(\n authorizationAttemptConsumption()\n )\n expect(consumed.codeVerifier.ciphertext).toBe(credentials.ciphertext)\n })\n })\n\n test(\"commits and rolls back connection runs with their attempt and execution\", async () => {\n await withStorage(async (storage, root) => {\n const committedExecution = requestExecution(\"execution-commit\")\n const committedAttempt = authorizationAttempt({\n id: \"attempt-commit\",\n initiatedByExecutionId: committedExecution.id,\n connectionRunId: \"run-commit\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-commit\",\n })\n const committedRun = connectionRun({\n id: \"run-commit\",\n initiatedByExecutionId: committedExecution.id,\n })\n await root.transaction(\n async (tx) => {\n await tx.executions.create(committedExecution)\n const connections = requireTransactionConnections(tx)\n await connections.createConnectionRun(committedRun)\n await connections.createAuthorizationAttempt(committedAttempt)\n },\n { isolation: \"serializable\" }\n )\n\n expect(\n await root.executions.getById({ projectId, id: committedExecution.id })\n ).not.toBeNull()\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: committedRun.id })\n ).resolves.toMatchObject({ id: committedRun.id })\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption(committedAttempt.id))\n ).resolves.toMatchObject({ id: committedAttempt.id })\n\n const rolledBackExecution = requestExecution(\"execution-rollback\")\n const rolledBackAttempt = authorizationAttempt({\n id: \"attempt-rollback\",\n initiatedByExecutionId: rolledBackExecution.id,\n connectionRunId: \"run-rollback\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-rollback\",\n })\n const rolledBackRun = connectionRun({\n id: \"run-rollback\",\n initiatedByExecutionId: rolledBackExecution.id,\n })\n const rollback = new Error(\"rollback connector authorization attempt\")\n await expect(\n root.transaction(\n async (tx) => {\n await tx.executions.create(rolledBackExecution)\n const connections = requireTransactionConnections(tx)\n await connections.createConnectionRun(rolledBackRun)\n await connections.createAuthorizationAttempt(rolledBackAttempt)\n throw rollback\n },\n { isolation: \"serializable\" }\n )\n ).rejects.toBe(rollback)\n\n expect(await root.executions.getById({ projectId, id: rolledBackExecution.id })).toBeNull()\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: rolledBackRun.id })\n ).resolves.toBeNull()\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption(rolledBackAttempt.id))\n ).rejects.toThrow(\"invalid, expired, or already used\")\n })\n })\n\n test(\"links at most one headless attempt to an awaiting provider run\", async () => {\n await withStorage(async (storage) => {\n const headlessAttempt = {\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n } as const\n\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt(headlessAttempt))\n ).rejects.toThrow(\"does not match its connection run\")\n\n await storage.createConnectionRun(connectionRun())\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt(headlessAttempt))\n ).resolves.toMatchObject({ id: \"attempt-a\", connectionRunId: \"run-a\" })\n await expect(\n storage.createAuthorizationAttempt(\n authorizationAttempt({ ...headlessAttempt, id: \"attempt-b\" })\n )\n ).rejects.toThrow(\"does not match its connection run\")\n })\n })\n\n test(\"claims a headless callback once with state and browser binding\", async () => {\n await withStorage(async (storage) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"wrong-binding\",\n })\n )\n ).resolves.toBeNull()\n\n const claimed = await storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n expect(claimed).toMatchObject({\n type: \"claimed\",\n run: { id: \"run-a\", status: \"running\" },\n attempt: { id: \"attempt-a\", connectionRunId: \"run-a\" },\n returnTo: \"https://app.example.com/connectors\",\n })\n expect(claimed && \"returnTo\" in claimed.run).toBe(false)\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n ).resolves.toBeNull()\n })\n })\n\n test(\"expires a waiting run and removes its protocol attempt lazily\", async () => {\n await withStorage(async (storage, root) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n await options.advanceTime(root, 60_000)\n\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({ status: \"expired\" })\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n ).resolves.toBeNull()\n })\n })\n\n test(\"fails an expired processing run and fences its late result\", async () => {\n await withStorage(async (storage, root) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n const claimed = await storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({ processingTtlMs: 1_000 })\n )\n if (!claimed || claimed.type !== \"claimed\") throw new Error(\"Expected callback claim.\")\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await expect(\n storage.attachConnectionRunAuthorization({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n })\n ).resolves.not.toBeNull()\n\n await options.advanceTime(root, 1_000)\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({\n status: \"failed\",\n authorizationId: authorization.id,\n error: { code: \"internal.unexpected\" },\n })\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"revocation_pending\" })\n await expect(\n storage.finishConnectionRun({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n status: \"cancelled\",\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"keeps account selection atomic with its connection run\", async () => {\n await withStorage(async (storage) => {\n const active = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await connect(storage, active, \"connection-a\", \"account-a\")\n const pending = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n await createSelectionRun(storage, pending)\n\n await expect(\n storage.putConnectionFromRun({\n id: \"connection-b\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-b\", label: \"Account B\" },\n replace: false,\n })\n ).rejects.toThrow(\"explicit replacement is required\")\n expect(\n await storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).toMatchObject({ status: \"waiting\", waitingFor: \"account_selection\" })\n expect(await storage.getAuthorization(authorizationKey(pending.id))).toEqual(pending)\n\n const selected = await storage.putConnectionFromRun({\n id: \"connection-b\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-b\", label: \"Account B\" },\n replace: true,\n })\n expect(selected.run).toMatchObject({ status: \"succeeded\" })\n })\n })\n\n test(\"keeps one stable connection per project connector slot\", async () => {\n await withStorage(async (storage) => {\n const first = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const firstConnection = await connect(storage, first, \"connection-a\", \"account-a\")\n const second = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n\n await expect(connect(storage, second, \"connection-b\", \"account-b\")).rejects.toThrow(\n \"explicit replacement is required\"\n )\n const replaced = await storage.putConnection({\n id: \"connection-b\",\n projectId,\n connectorId,\n authorizationId: second.id,\n owner: { type: \"project\" },\n slot: \"default\",\n account: { id: \"account-b\", label: \"ignored\" },\n replace: true,\n })\n expect(replaced.connection.id).toBe(firstConnection.connection.id)\n expect(replaced.revocationPendingAuthorizationId).toBe(first.id)\n expect(await storage.getAuthorization(authorizationKey(first.id))).toMatchObject({\n status: \"revocation_pending\",\n })\n expect(\n await storage.getConnection({\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n })\n ).toMatchObject({ authorizationId: second.id, account: { id: \"account-b\" } })\n })\n })\n\n test(\"retains disconnected identities and reactivates the same slot id\", async () => {\n await withStorage(async (storage) => {\n const first = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const connected = await connect(storage, first, \"connection-a\", \"account-a\")\n\n const disconnected = await storage.disconnectConnection({\n projectId,\n connectorId,\n connectionId: connected.connection.id,\n })\n expect(disconnected).toMatchObject({\n connection: { id: connected.connection.id, status: \"disconnected\" },\n authorization: { status: \"revocation_pending\" },\n revocationPendingAuthorizationId: first.id,\n })\n expect(\n await storage.getConnection({\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n })\n ).toBeNull()\n expect(\n await storage.getConnectionById({\n projectId,\n connectorId,\n connectionId: connected.connection.id,\n })\n ).toMatchObject({ status: \"disconnected\" })\n\n const second = await createAuthorization(storage, \"authorization-b\", \"account-a\")\n const reconnected = await connect(storage, second, \"ignored-new-id\", \"account-a\")\n expect(reconnected.connection).toMatchObject({\n id: connected.connection.id,\n authorizationId: second.id,\n status: \"connected\",\n })\n })\n })\n\n test(\"keeps pending selection untouched when connection validation fails\", async () => {\n await withStorage(async (storage) => {\n const active = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const existing = await connect(storage, active, \"connection-a\", \"account-a\")\n const replacement = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n\n await expect(connect(storage, replacement, \"connection-b\", \"account-b\")).rejects.toThrow(\n \"explicit replacement is required\"\n )\n expect(await storage.getAuthorization(authorizationKey(replacement.id))).toEqual(\n replacement\n )\n\n const duplicateId = await createAuthorization(storage, \"authorization-c\", \"account-c\")\n await expect(\n storage.putConnection({\n id: existing.connection.id,\n projectId,\n connectorId,\n authorizationId: duplicateId.id,\n owner: { type: \"project\" },\n slot: \"secondary\",\n account: { id: \"account-c\", label: \"ignored\" },\n replace: false,\n })\n ).rejects.toThrow(\"connection id already exists\")\n expect(await storage.getAuthorization(authorizationKey(duplicateId.id))).toEqual(\n duplicateId\n )\n })\n })\n\n test(\"commits expiry cleanup before rejecting account selection\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await options.advanceTime(root, 60_000)\n\n await expect(connect(storage, authorization, \"connection-a\", \"account-a\")).rejects.toThrow(\n \"selectable authorization\"\n )\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"revocation_pending\" })\n })\n })\n\n test(\"commits lazy run expiry before rejecting a late selection\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await createSelectionRun(storage, authorization)\n await options.advanceTime(root, 60_000)\n\n await expect(\n storage.putConnectionFromRun({\n id: \"connection-a\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-a\", label: \"Account A\" },\n replace: false,\n })\n ).rejects.toThrow(\"invalid, expired, or already used\")\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({ status: \"expired\" })\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"revocation_pending\" })\n })\n })\n\n test(\"scopes direct record reads by project and connector\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const connected = await connect(storage, authorization, \"connection-a\", \"account-a\")\n\n expect(await storage.getAuthorization(authorizationKey(authorization.id))).toEqual(\n connected.authorization\n )\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n expect(\n await storage.getAuthorization({\n ...scope,\n authorizationId: authorization.id,\n })\n ).toBeNull()\n expect(\n await storage.getConnectionById({\n ...scope,\n connectionId: connected.connection.id,\n })\n ).toBeNull()\n expect(\n await storage.listConnectionsByAuthorization({\n ...scope,\n authorizationId: authorization.id,\n })\n ).toEqual([])\n }\n })\n })\n\n test(\"fences staged credentials by project, revision and mutation id\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createActiveAuthorization(storage)\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.claimCredentialMutation({\n ...scope,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: \"mutation-a\", kind: \"refresh\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n ).resolves.toBeNull()\n }\n\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: \"mutation-a\", kind: \"refresh\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n expect(claim).not.toBeNull()\n const claimed = claim!.authorization\n const executing = await storage.markCredentialMutationExecuting({\n ...fence(claimed),\n holderId: \"worker-a\",\n })\n expect(executing?.credentialMutation?.phase).toBe(\"executing\")\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n ...scope,\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n ).resolves.toBeNull()\n }\n await expect(\n storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n mutationId: \"stale-mutation\",\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n ).resolves.toBeNull()\n\n const staged = await storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n expect(staged?.credentialMutation?.phase).toBe(\"result_staged\")\n await expect(\n storage.finalizeRefresh({ ...fence(claimed), expectedRevision: claimed.revision + 1 })\n ).resolves.toBeNull()\n await expect(storage.finalizeRefresh(fence(claimed))).resolves.toMatchObject({\n revision: claimed.revision + 1,\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"releases an expired prepared mutation without changing credential state\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n await claimMutation(storage, authorization, \"mutation-prepared\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 60_000,\n })\n\n await options.advanceTime(root, 10_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"active\",\n revision: authorization.revision,\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"fails closed expired executing credential changes but keeps revocation retryable\", async () => {\n for (const kind of [\"refresh\", \"reauthorization\"] as const) {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, `mutation-${kind}`, kind, {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 60_000,\n })\n await markExecuting(storage, claim.authorization)\n\n await options.advanceTime(root, 10_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"needs_reauthorization\",\n revision: claim.authorization.revision + 1,\n credentialMutation: undefined,\n })\n })\n }\n\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(\n storage,\n authorization,\n \"mutation-revocation\",\n \"revocation\",\n { leaseDurationMs: 10_000, operationTimeoutMs: 60_000 }\n )\n await markExecuting(storage, claim.authorization)\n\n await options.advanceTime(root, 10_000)\n const recovered = await storage.recoverExpiredCredentialMutation(\n authorizationKey(authorization.id)\n )\n expect(recovered).toMatchObject({\n status: \"revocation_pending\",\n revision: claim.authorization.revision,\n credentialMutation: undefined,\n })\n if (!recovered) throw new Error(\"Expected expired revocation recovery.\")\n await expect(\n claimMutation(storage, recovered, \"mutation-revocation-retry\", \"revocation\")\n ).resolves.toBeDefined()\n })\n })\n\n test(\"preserves a staged provider result after its lease and deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, \"mutation-staged\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 20_000,\n })\n const executing = await markExecuting(storage, claim.authorization)\n const staged = await storage.stageCredentialMutationCredentials({\n ...fence(executing),\n holderId: \"worker-a\",\n credentials: { ...credentials, ciphertext: \"refreshed\" },\n scopes: [\"accounts.read\"],\n })\n expect(staged?.credentialMutation?.phase).toBe(\"result_staged\")\n\n await options.advanceTime(root, 20_000)\n const recovered = await storage.recoverExpiredCredentialMutation(\n authorizationKey(authorization.id)\n )\n expect(recovered?.credentialMutation?.phase).toBe(\"result_staged\")\n if (!recovered) throw new Error(\"Expected staged refresh recovery.\")\n await expect(storage.finalizeRefresh(fence(recovered))).resolves.toMatchObject({\n status: \"active\",\n revision: authorization.revision + 1,\n scopes: [\"accounts.read\"],\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"never renews a credential lease past its operation deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, \"mutation-renew\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 25_000,\n })\n const executing = await markExecuting(storage, claim.authorization)\n const deadline = executing.credentialMutation!.deadlineAt\n\n await options.advanceTime(root, 8_000)\n const renewed = await storage.renewCredentialMutation({\n ...fence(executing),\n holderId: \"worker-a\",\n leaseDurationMs: 30_000,\n })\n expect(renewed?.credentialMutation?.expiresAt).toEqual(deadline)\n\n await options.advanceTime(root, 17_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"needs_reauthorization\",\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"disconnects every local usage atomically when revocation starts\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const first = await connect(storage, authorization, \"connection-a\", \"account-a\")\n await storage.putConnection({\n id: \"connection-b\",\n projectId,\n connectorId,\n authorizationId: authorization.id,\n owner: { type: \"project\" },\n slot: \"secondary\",\n account: { id: \"account-a\", label: \"ignored\" },\n replace: false,\n })\n const active = (await storage.getAuthorization(authorizationKey(authorization.id)))!\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: active.revision,\n mutation: { id: \"mutation-revoke\", kind: \"revocation\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n\n expect(claim?.authorization.status).toBe(\"revocation_pending\")\n expect(claim?.disconnected.map((connection) => connection.id).sort()).toEqual(\n [first.connection.id, \"connection-b\"].sort()\n )\n expect(\n await storage.listConnectionsByAuthorization(authorizationKey(authorization.id))\n ).toEqual([])\n expect(\n await storage.getAuthorizationByConnectionId({\n projectId,\n connectorId,\n connectionId: first.connection.id,\n })\n ).toMatchObject({ id: authorization.id, status: \"revocation_pending\" })\n\n if (!claim) throw new Error(\"Expected revocation mutation claim.\")\n const executing = await markExecuting(storage, claim.authorization)\n const staged = await storage.stageCredentialMutationRevocation({\n ...fence(executing),\n holderId: \"worker-a\",\n })\n if (!staged) throw new Error(\"Expected staged revocation.\")\n const revoked = await storage.finalizeRevocation(fence(staged))\n expect(revoked).toMatchObject({\n status: \"revoked\",\n credentials: undefined,\n scopes: [],\n accounts: [],\n })\n expect(await storage.listConnections({ projectId, connectorId })).toEqual(\n expect.arrayContaining([\n expect.objectContaining({ id: first.connection.id, status: \"disconnected\" }),\n expect.objectContaining({ id: \"connection-b\", status: \"disconnected\" }),\n ])\n )\n })\n })\n\n test(\"freezes the attached connection set during reauthorization\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createActiveAuthorization(storage)\n const connections = await storage.listConnectionsByAuthorization(\n authorizationKey(authorization.id)\n )\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: {\n id: \"mutation-reauthorize\",\n kind: \"reauthorization\",\n holderId: \"worker-a\",\n },\n expectedConnectionIds: connections.map((connection) => connection.id),\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n expect(claim).not.toBeNull()\n\n await expect(\n storage.disconnectConnection({\n projectId,\n connectorId,\n connectionId: connections[0].id,\n })\n ).rejects.toThrow(\"being reauthorized\")\n })\n })\n })\n}\n\nfunction authorizationAttempt(\n overrides: Partial<CreateConnectorAuthorizationAttemptInput> = {}\n): CreateConnectorAuthorizationAttemptInput {\n return {\n id: \"attempt-a\",\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n initiatedByExecutionId: \"execution-a\",\n stateHash: \"state-hash\",\n codeVerifier: credentials,\n redirectUri: \"https://example.com/oauth/callback\",\n ttlMs: 60_000,\n ...overrides,\n }\n}\n\nfunction connectionRun(\n overrides: Partial<CreateConnectorConnectionRunInput> = {}\n): CreateConnectorConnectionRunInput {\n return {\n id: \"run-a\",\n projectId,\n connectorId,\n kind: \"connect\",\n owner: { type: \"project\" },\n slot: \"default\",\n initiatedByExecutionId: \"execution-a\",\n ttlMs: 60_000,\n ...overrides,\n }\n}\n\nasync function createSelectionRun(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord\n): Promise<void> {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n const claimed = await storage.claimConnectionRunCallback(connectionRunCallbackClaim())\n if (!claimed || claimed.type !== \"claimed\") throw new Error(\"Expected callback claim.\")\n const attached = await storage.attachConnectionRunAuthorization({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n })\n if (!attached) throw new Error(\"Expected authorization to be attached to the run.\")\n const waiting = await storage.waitForConnectionRunSelection({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n expiresAt: authorization.selectionExpiresAt!,\n })\n if (!waiting) throw new Error(\"Expected account-selection run.\")\n}\n\nfunction connectionRunCallbackClaim(\n overrides: Partial<ClaimConnectorConnectionRunCallbackInput> = {}\n): ClaimConnectorConnectionRunCallbackInput {\n return {\n projectId,\n attemptId: \"attempt-a\",\n stateHash: \"state-hash\",\n callbackBindingHash: \"binding-hash\",\n redirectUri: \"https://example.com/oauth/callback\",\n processingId: \"processing-a\",\n processingTtlMs: 60_000,\n ...overrides,\n }\n}\n\nfunction authorizationKey(\n authorizationId: string,\n overrides: Partial<{ readonly projectId: string; readonly connectorId: string }> = {}\n) {\n return { projectId, connectorId, authorizationId, ...overrides }\n}\n\nfunction authorizationAttemptConsumption(id = \"attempt-a\") {\n return {\n id,\n projectId,\n connectorId,\n stateHash: \"state-hash\",\n redirectUri: \"https://example.com/oauth/callback\",\n }\n}\n\nfunction requestExecution(id: string): CreateExecutionInput {\n const requestId = `request-${id}`\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId },\n source: { type: \"http\", requestId },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n\nfunction requireTransactionConnections(storage: Storage): ConnectorConnectionStorage {\n if (storage.connectorConnections) return storage.connectorConnections\n throw new Error(\"Connector connection storage is missing from the transaction facade.\")\n}\n\nasync function createAuthorization(\n storage: ConnectorConnectionStorage,\n id: string,\n accountId: string\n): Promise<ConnectorAuthorizationRecord> {\n return storage.createAuthorization({\n id,\n projectId,\n connectorId,\n authorizedBy: { type: \"user\", id: \"user-a\" },\n credentials,\n scopes: [],\n accounts: [{ id: accountId, label: accountId }],\n selectionTtlMs: 60_000,\n })\n}\n\nasync function createActiveAuthorization(\n storage: ConnectorConnectionStorage\n): Promise<ConnectorAuthorizationRecord> {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const result = await connect(storage, authorization, \"connection-a\", \"account-a\")\n return result.authorization\n}\n\nfunction connect(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord,\n connectionId: string,\n accountId: string\n) {\n return storage.putConnection({\n id: connectionId,\n projectId,\n connectorId,\n authorizationId: authorization.id,\n owner: { type: \"project\" },\n slot: \"default\",\n account: { id: accountId, label: \"ignored\" },\n replace: false,\n })\n}\n\nasync function claimMutation(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord,\n mutationId: string,\n kind: ConnectorCredentialMutationKind,\n timing: { readonly leaseDurationMs: number; readonly operationTimeoutMs: number } = {\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n }\n): Promise<ClaimConnectorCredentialMutationResult> {\n const expectedConnectionIds =\n kind === \"reauthorization\"\n ? (await storage.listConnectionsByAuthorization(authorizationKey(authorization.id))).map(\n (connection) => connection.id\n )\n : undefined\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: mutationId, kind, holderId: \"worker-a\" },\n ...(expectedConnectionIds === undefined ? {} : { expectedConnectionIds }),\n ...timing,\n })\n if (!claim) throw new Error(`Expected '${kind}' credential mutation claim.`)\n return claim\n}\n\nasync function markExecuting(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord\n): Promise<ConnectorAuthorizationRecord> {\n const executing = await storage.markCredentialMutationExecuting({\n ...fence(authorization),\n holderId: \"worker-a\",\n })\n if (!executing) throw new Error(\"Expected credential mutation execution.\")\n return executing\n}\n\nfunction fence(authorization: ConnectorAuthorizationRecord) {\n return {\n projectId: authorization.projectId,\n connectorId: authorization.connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutationId: authorization.credentialMutation!.id,\n }\n}\n",
|
|
17
17
|
"import { describe, expect, test } from \"bun:test\"\nimport { defineObjectType, link, OntologyRegistry, prop } from \"../ontology\"\nimport { linkBatchKey, objectBatchKey, objectLinkCursor, type Storage } from \"../storage\"\nimport { createMaterializerTestFixture } from \"./materializer-fixture\"\n\nexport interface EffectiveStorageContractSuiteOptions<TStorage extends Storage> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"effective-storage-contract\"\nconst Device = defineObjectType({\n id: \"EffectiveStorageDevice\",\n name: \"Device\",\n properties: [\n prop(\"id\", \"string\", { primary: true, required: true }),\n prop(\"name\", \"string\", { required: true }),\n prop(\"temperature\", \"double\", { mode: \"telemetry\" }),\n ],\n links: [link.self(\"peers\", { cardinality: \"many\" })],\n})\nconst OpaqueA = defineObjectType({\n id: \"A\",\n name: \"Opaque A\",\n properties: [\n prop(\"id\", \"string\", { primary: true, required: true }),\n prop(\"name\", \"string\", { required: true }),\n ],\n links: [link.self(\"D\", { cardinality: \"many\" })],\n})\nconst OpaqueAB = defineObjectType({\n id: \"A:B\",\n name: \"Opaque AB\",\n properties: [\n prop(\"id\", \"string\", { primary: true, required: true }),\n prop(\"name\", \"string\", { required: true }),\n ],\n links: [link.self(\"D\", { cardinality: \"many\" })],\n})\nconst ontology = new OntologyRegistry({ sources: [Device, OpaqueA, OpaqueAB] })\n\nexport function runEffectiveStorageContractSuite<TStorage extends Storage>(\n name: string,\n provider: EffectiveStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await provider.createStorage()\n try {\n await seedEffectiveState(storage)\n await body(storage)\n } finally {\n await provider.cleanup?.(storage)\n }\n }\n\n describe(name, () => {\n test(\"reads Materializer-owned objects\", async () => {\n await withStorage(async (storage) => {\n const object = await storage.objects.getByPrimaryId({\n projectId,\n objectTypeId: Device.id,\n primaryId: \"a\",\n })\n expect(object).toMatchObject({\n properties: { id: \"a\", name: \"Alpha\", temperature: 22 },\n version: 2,\n })\n expect(typeof object?.lastCommitId).toBe(\"string\")\n\n const batch = await storage.objects.getByPrimaryIdBatch({\n projectId,\n items: [\n { objectTypeId: Device.id, primaryId: \"a\" },\n { objectTypeId: Device.id, primaryId: \"missing\" },\n ],\n })\n expect([...batch.keys()]).toEqual([objectBatchKey(Device.id, \"a\")])\n\n const selectedProperties = await storage.objects.selectsObjectProperties({\n projectId,\n items: [\n { objectTypeId: Device.id, primaryId: \"a\", propertyId: \"name\" },\n { objectTypeId: Device.id, primaryId: \"a\", propertyId: \"not-materialized\" },\n { objectTypeId: Device.id, primaryId: \"missing\", propertyId: \"name\" },\n { objectTypeId: Device.id, primaryId: \"a\", propertyId: \"name\" },\n ],\n })\n expect(selectedProperties).toEqual([true, true, false, true])\n })\n })\n\n test(\"reads Materializer-owned links\", async () => {\n await withStorage(async (storage) => {\n const outgoing = await storage.objects.listLinks({\n projectId,\n objectTypeId: Device.id,\n objectId: \"a\",\n })\n expect(outgoing.map((row) => row.targetId).sort()).toEqual([\"b\", \"c\"])\n expect(outgoing.every((row) => row.lastCommitId.length > 0)).toBe(true)\n\n const incoming = await storage.objects.listIncidentLinksBatch({\n projectId,\n items: [{ objectTypeId: Device.id, objectId: \"b\" }],\n })\n expect(incoming).toHaveLength(1)\n expect(incoming[0]).toMatchObject({ sourceId: \"a\", targetId: \"b\" })\n\n const linksByScope = await storage.objects.listLinksBatch({\n projectId,\n items: [{ objectTypeId: Device.id, objectId: \"a\", linkId: \"peers\" }],\n })\n expect(linksByScope.get(linkBatchKey(Device.id, \"a\", \"peers\"))).toHaveLength(2)\n\n const incomingByScope = await storage.objects.listLinksBatch({\n projectId,\n direction: \"incoming\",\n items: [{ objectTypeId: Device.id, objectId: \"b\", linkId: \"peers\" }],\n })\n expect(incomingByScope.get(linkBatchKey(Device.id, \"b\", \"peers\"))).toMatchObject([\n { sourceId: \"a\", targetId: \"b\" },\n ])\n\n const bothDirectionsByScope = await storage.objects.listLinksBatch({\n projectId,\n direction: \"both\",\n items: [\n { objectTypeId: Device.id, objectId: \"a\", linkId: \"peers\" },\n { objectTypeId: Device.id, objectId: \"b\", linkId: \"peers\" },\n ],\n })\n expect(bothDirectionsByScope.get(linkBatchKey(Device.id, \"a\", \"peers\"))).toHaveLength(2)\n expect(bothDirectionsByScope.get(linkBatchKey(Device.id, \"b\", \"peers\"))).toMatchObject([\n { sourceId: \"a\", targetId: \"b\" },\n ])\n })\n })\n\n test(\"pages and filters incident links in the provider\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.objects.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Device.id, primaryId: \"a\" }],\n direction: \"outgoing\",\n linkId: \"peers\",\n endpointObjectTypeIds: [Device.id],\n limit: 1,\n })\n expect(first.links.map((row) => row.targetId)).toEqual([\"b\"])\n expect(first.hasMore).toBe(true)\n\n const second = await storage.objects.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Device.id, primaryId: \"a\" }],\n direction: \"outgoing\",\n linkId: \"peers\",\n endpointObjectTypeIds: [Device.id],\n after: objectLinkCursor(first.links[0]),\n limit: 1,\n })\n expect(second.links.map((row) => row.targetId)).toEqual([\"c\"])\n expect(second.hasMore).toBe(false)\n\n const duplicateRefs = await storage.objects.queryLinks({\n projectId,\n objectRefs: [\n { objectTypeId: Device.id, primaryId: \"a\" },\n { objectTypeId: Device.id, primaryId: \"a\" },\n ],\n direction: \"outgoing\",\n limit: 10,\n })\n expect(duplicateRefs.links.map((row) => row.targetId)).toEqual([\"b\", \"c\"])\n\n const incoming = await storage.objects.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Device.id, primaryId: \"b\" }],\n direction: \"incoming\",\n limit: 10,\n })\n expect(incoming.links.map((row) => [row.sourceId, row.targetId])).toEqual([[\"a\", \"b\"]])\n\n const bothDirections = await storage.objects.queryLinks({\n projectId,\n objectRefs: [\n { objectTypeId: Device.id, primaryId: \"a\" },\n { objectTypeId: Device.id, primaryId: \"b\" },\n ],\n direction: \"both\",\n endpointObjectTypeIds: [Device.id],\n limit: 10,\n })\n expect(bothDirections.links.map((row) => [row.sourceId, row.targetId])).toEqual([\n [\"a\", \"b\"],\n [\"a\", \"c\"],\n ])\n\n const unauthorized = await storage.objects.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Device.id, primaryId: \"a\" }],\n direction: \"both\",\n endpointObjectTypeIds: [],\n limit: 10,\n })\n expect(unauthorized).toEqual({ links: [], hasMore: false })\n })\n })\n\n test(\"keeps delimiter-bearing object and batch-link identities distinct\", async () => {\n await withStorage(async (storage) => {\n const opaqueProjectId = `${projectId}-opaque-batch-keys`\n const fixture = createMaterializerTestFixture({\n projectId: opaqueProjectId,\n ontology,\n storage,\n })\n await fixture.seed({\n objects: [\n {\n ref: { objectTypeId: OpaqueA.id, primaryId: \"B:C\" },\n properties: { id: \"B:C\", name: \"First\" },\n },\n {\n ref: { objectTypeId: OpaqueAB.id, primaryId: \"C\" },\n properties: { id: \"C\", name: \"Second\" },\n },\n ],\n links: [\n {\n ref: {\n source: { objectTypeId: OpaqueA.id, primaryId: \"B:C\" },\n linkId: \"D\",\n target: { objectTypeId: OpaqueA.id, primaryId: \"B:C\" },\n },\n },\n {\n ref: {\n source: { objectTypeId: OpaqueAB.id, primaryId: \"C\" },\n linkId: \"D\",\n target: { objectTypeId: OpaqueAB.id, primaryId: \"C\" },\n },\n },\n ],\n })\n\n const objects = await storage.objects.getByPrimaryIdBatch({\n projectId: opaqueProjectId,\n items: [\n { objectTypeId: OpaqueA.id, primaryId: \"B:C\" },\n { objectTypeId: OpaqueAB.id, primaryId: \"C\" },\n ],\n })\n expect(objects.get(objectBatchKey(OpaqueA.id, \"B:C\"))?.properties.name).toBe(\"First\")\n expect(objects.get(objectBatchKey(OpaqueAB.id, \"C\"))?.properties.name).toBe(\"Second\")\n\n const links = await storage.objects.listLinksBatch({\n projectId: opaqueProjectId,\n direction: \"both\",\n items: [\n { objectTypeId: OpaqueA.id, objectId: \"B:C\", linkId: \"D\" },\n { objectTypeId: OpaqueAB.id, objectId: \"C\", linkId: \"D\" },\n ],\n })\n expect(links.get(linkBatchKey(OpaqueA.id, \"B:C\", \"D\"))).toHaveLength(1)\n expect(links.get(linkBatchKey(OpaqueAB.id, \"C\", \"D\"))).toHaveLength(1)\n })\n })\n\n test(\"preserves distinct incident links when opaque ids contain delimiters\", async () => {\n await withStorage(async (storage) => {\n const opaqueIdsProjectId = `${projectId}-opaque-link-ids`\n const firstSourceId = \"opaque:source\"\n const firstTargetId = `target:peers:${Device.id}:opaque:end`\n const secondSourceId = `${firstSourceId}:peers:${Device.id}:target`\n const secondTargetId = \"opaque:end\"\n const fixture = createMaterializerTestFixture({\n projectId: opaqueIdsProjectId,\n ontology,\n storage,\n })\n await fixture.seed({\n objects: [\n device(firstSourceId, \"First source\"),\n device(firstTargetId, \"First target\"),\n device(secondSourceId, \"Second source\"),\n device(secondTargetId, \"Second target\"),\n ],\n links: [peer(firstSourceId, firstTargetId), peer(secondSourceId, secondTargetId)],\n })\n\n const incident = await storage.objects.listIncidentLinksBatch({\n projectId: opaqueIdsProjectId,\n items: [\n { objectTypeId: Device.id, objectId: firstSourceId },\n { objectTypeId: Device.id, objectId: secondSourceId },\n ],\n })\n const matching = incident.filter(\n (row) => row.sourceId === firstSourceId || row.sourceId === secondSourceId\n )\n\n expect(matching.map((row) => [row.sourceId, row.linkId, row.targetId])).toEqual(\n expect.arrayContaining([\n [firstSourceId, \"peers\", firstTargetId],\n [secondSourceId, \"peers\", secondTargetId],\n ])\n )\n expect(matching).toHaveLength(2)\n })\n })\n\n test(\"pages Materializer-owned objects with a stable cursor\", async () => {\n await withStorage(async (storage) => {\n const firstPage = await storage.objects.listByPrimaryIdPage({\n projectId,\n objectTypeId: Device.id,\n limit: 2,\n })\n expect(firstPage.objects.map((row) => row.primaryId)).toEqual([\"a\", \"b\"])\n expect(firstPage.nextPrimaryId).toBe(\"b\")\n const secondPage = await storage.objects.listByPrimaryIdPage({\n projectId,\n objectTypeId: Device.id,\n afterPrimaryId: firstPage.nextPrimaryId,\n limit: 2,\n })\n expect(secondPage.objects.map((row) => row.primaryId)).toEqual([\"c\"])\n })\n })\n\n test(\"reads Materializer-owned telemetry\", async () => {\n await withStorage(async (storage) => {\n const descending = await storage.timeseries.getHistory({\n projectId,\n objectTypeId: Device.id,\n objectId: \"a\",\n propertyId: \"temperature\",\n from: new Date(\"2026-01-01T10:30:00.000Z\"),\n order: \"desc\",\n })\n expect(descending.map((point) => point.value)).toEqual([22])\n expect(typeof descending[0]?.lastCommitId).toBe(\"string\")\n\n const histories = await storage.timeseries.getHistoryBatch({\n projectId,\n series: [\n { objectTypeId: Device.id, objectId: \"a\", propertyId: \"temperature\" },\n { objectTypeId: Device.id, objectId: \"b\", propertyId: \"temperature\" },\n ],\n limitPerSeries: 1,\n order: \"desc\",\n })\n expect(histories.map((series) => series.points[0]?.value)).toEqual([22, 18])\n\n const latest = await storage.timeseries.getLatest({\n projectId,\n objectTypeId: Device.id,\n objectId: \"a\",\n propertyId: \"temperature\",\n })\n expect(latest).toMatchObject({ value: 22, at: new Date(\"2026-01-01T12:00:00.000Z\") })\n })\n })\n })\n}\n\nasync function seedEffectiveState(storage: Storage): Promise<void> {\n const fixture = createMaterializerTestFixture({ projectId, ontology, storage })\n await fixture.seed({\n objects: [device(\"a\", \"Alpha\"), device(\"b\", \"Beta\"), device(\"c\", \"Gamma\")],\n links: [peer(\"a\", \"b\"), peer(\"a\", \"c\")],\n telemetry: [\n temperature(\"a\", 20, \"2026-01-01T10:00:00.000Z\"),\n temperature(\"a\", 22, \"2026-01-01T12:00:00.000Z\"),\n temperature(\"b\", 18, \"2026-01-01T11:00:00.000Z\"),\n ],\n })\n}\n\nfunction device(primaryId: string, name: string) {\n return {\n ref: { objectTypeId: Device.id, primaryId },\n properties: { id: primaryId, name },\n }\n}\n\nfunction peer(sourceId: string, targetId: string) {\n return {\n ref: {\n source: { objectTypeId: Device.id, primaryId: sourceId },\n linkId: \"peers\",\n target: { objectTypeId: Device.id, primaryId: targetId },\n },\n }\n}\n\nfunction temperature(objectId: string, value: number, at: string) {\n return {\n series: {\n object: { objectTypeId: Device.id, primaryId: objectId },\n propertyId: \"temperature\",\n },\n value,\n at,\n }\n}\n",
|
|
18
18
|
"import { createTestingScope } from \"../execution/scopes\"\nimport type { JsonValue } from \"../json\"\nimport type {\n EditCommitResult,\n OntologyEditOperation,\n OntologyLinkRef,\n OntologyObjectRef,\n TelemetryCommitResult,\n TelemetryPointWrite,\n} from \"../materialization/model\"\nimport {\n type BoundOntologyMaterializer,\n createOntologyMaterializer,\n type OntologyMaterializerDependencies,\n} from \"../materializer/materializer\"\nimport type { OntologyRegistry } from \"../ontology\"\nimport { ProjectionRegistry } from \"../projections/registry\"\nimport type { Storage } from \"../storage\"\n\nexport interface MaterializerFixtureObject {\n readonly ref: OntologyObjectRef\n readonly properties: Readonly<Record<string, JsonValue>>\n}\n\nexport interface MaterializerFixtureLink {\n readonly ref: OntologyLinkRef\n readonly properties?: Readonly<Record<string, JsonValue>>\n}\n\nexport interface MaterializerFixtureSeed {\n readonly objects?: readonly MaterializerFixtureObject[]\n readonly links?: readonly MaterializerFixtureLink[]\n readonly telemetry?: readonly TelemetryPointWrite[]\n}\n\nexport interface MaterializerTestFixture {\n readonly materializer: BoundOntologyMaterializer\n commit(operations: readonly OntologyEditOperation[]): Promise<EditCommitResult>\n appendTelemetry(points: readonly TelemetryPointWrite[]): Promise<TelemetryCommitResult>\n seed(input: MaterializerFixtureSeed): Promise<void>\n}\n\n/**\n * Creates data for storage/query tests through the same validated Materializer path as production.\n * It intentionally exposes no direct storage writer.\n */\nexport function createMaterializerTestFixture(input: {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly storage: Storage\n readonly dependencies?: OntologyMaterializerDependencies\n}): MaterializerTestFixture {\n const projections = new ProjectionRegistry({\n projections: [],\n ontology: input.ontology,\n datasetsById: new Map(),\n })\n const materializer = createOntologyMaterializer({\n projectId: input.projectId,\n ontology: input.ontology,\n projections,\n storage: input.storage,\n dependencies: input.dependencies,\n }).withScope(\n createTestingScope({\n projectId: input.projectId,\n executionId: `materializer_fixture_execution:${input.projectId}`,\n requestId: `materializer_fixture_request:${input.projectId}`,\n correlationId: `materializer_fixture_correlation:${input.projectId}`,\n })\n )\n let requestOrdinal = 0\n\n function nextRequestId(kind: \"edit\" | \"telemetry\"): string {\n requestOrdinal += 1\n return `materializer-fixture:${kind}:${requestOrdinal}`\n }\n\n async function commit(operations: readonly OntologyEditOperation[]): Promise<EditCommitResult> {\n return materializer.edits.commit({\n mode: \"atomic\",\n source: { kind: \"runtime\", requestId: nextRequestId(\"edit\") },\n operations,\n expectedObjects: [],\n expectedLinks: [],\n expectedLinkScopes: [],\n })\n }\n\n async function appendTelemetry(\n points: readonly TelemetryPointWrite[]\n ): Promise<TelemetryCommitResult> {\n return materializer.telemetry.append({\n source: { kind: \"runtime\", requestId: nextRequestId(\"telemetry\") },\n points,\n })\n }\n\n return {\n materializer,\n commit,\n appendTelemetry,\n async seed(seed) {\n const operations: OntologyEditOperation[] = []\n for (const object of seed.objects ?? []) {\n operations.push({\n id: `seed-object:${operations.length}`,\n kind: \"object.upsert\",\n ref: object.ref,\n properties: object.properties,\n })\n }\n for (const link of seed.links ?? []) {\n operations.push({\n id: `seed-link:${operations.length}`,\n kind: \"link.upsert\",\n ref: link.ref,\n ...(link.properties === undefined ? {} : { properties: link.properties }),\n })\n }\n if (operations.length > 0) await commit(operations)\n if (seed.telemetry && seed.telemetry.length > 0) {\n await appendTelemetry(seed.telemetry)\n }\n },\n }\n}\n",
|
|
19
|
-
"import type { AuthorizationContext } from \"../authorization\"\nimport { createTestingScope } from \"../execution/scopes\"\nimport type { ExecutionScope } from \"../execution/types\"\nimport type { OntologySource } from \"../ontology\"\nimport { SixbHost, type SixbHostOptions } from \"../runtime/host\"\nimport { isBoundSixb, type Sixb } from \"../runtime/sixb\"\n\nexport type { AuthorizationContext } from \"../authorization\"\n\nexport interface TestExecutionOptions {\n readonly authorization?: AuthorizationContext\n readonly executionId?: string\n readonly requestId?: string\n readonly correlationId?: string\n}\n\n/**\n * Bind a host to principal test authority from `authorization`, or to explicit disabled authority\n * when omitted. Test executions deliberately omit live session identity. Trusted primitive and\n * kernel authority remain unavailable to application tests.\n */\nexport interface TestExecutionHost {\n readonly id: string\n withScope(scope: ExecutionScope): object\n}\n\nexport function createTestSixb<\n TOntologySources extends readonly OntologySource[] = readonly OntologySource[],\n>(\n hostOrOptions: TestExecutionHost | SixbHostOptions<TOntologySources>,\n options: TestExecutionOptions = {}\n): Sixb<TOntologySources> {\n const host: TestExecutionHost =\n \"withScope\" in hostOrOptions ? hostOrOptions : new SixbHost(hostOrOptions)\n const sixb = host.withScope(\n createTestingScope({\n projectId: host.id,\n ...(options.authorization === undefined ? {} : { context: options.authorization }),\n ...(options.executionId === undefined ? {} : { executionId: options.executionId }),\n ...(options.requestId === undefined ? {} : { requestId: options.requestId }),\n ...(options.correlationId === undefined ? {} : { correlationId: options.correlationId }),\n })\n )\n if (!isBoundSixb<TOntologySources>(sixb)) {\n throw new Error(\"[Sixb] Test host did not return an execution-bound Sixb SDK.\")\n }\n return sixb\n}\n",
|
|
20
|
-
"import { describe, expect, test } from \"bun:test\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport type {\n CreateExecutionInput,\n ExecutionStorage,\n TrustedPrimitiveKind,\n} from \"../storage/executions\"\nimport type { ShareGrantStorage } from \"../storage/share-grants\"\nimport type { ShareSessionStorage } from \"../storage/share-sessions\"\nimport type { Storage } from \"../storage/types\"\n\nexport type ExecutionStorageContractStorage = Storage & {\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n readonly shareGrants: ShareGrantStorage\n readonly shareSessions: ShareSessionStorage\n}\n\nexport interface ExecutionStorageContractSuiteOptions<\n TStorage extends ExecutionStorageContractStorage = ExecutionStorageContractStorage,\n> {\n /** Factory that returns one isolated, migrated storage bundle for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"execution-contract\"\nconst createdAt = new Date(\"2026-06-01T12:00:00.000Z\")\nconst expiresAt = new Date(\"2027-06-01T12:00:00.000Z\")\n\n/** Runs the immutable execution-ledger contract against one complete storage provider. */\nexport function runExecutionStorageContractSuite<TStorage extends ExecutionStorageContractStorage>(\n label: string,\n options: ExecutionStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"round-trips every durable executor and authority shape\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await seedSharedSession(storage)\n\n const records = [\n principalRequest({\n id: \"principal-request\",\n credential: { type: \"session\", id: \"session-user\" },\n }),\n principalRequest({\n id: \"service-request\",\n principal: { type: \"serviceAccount\", id: \"service-one\" },\n credential: { type: \"accessToken\", id: \"token-service\" },\n }),\n disabledRequest(\"disabled-request\"),\n delegatedRequest(\"delegated-request\"),\n ...trustedPrimitiveKinds.map((kind) => trustedPrimitive(`${kind}-execution`, {}, kind)),\n agentExecution(\"agent-execution\"),\n kernelExecution(\"kernel-execution\"),\n ] as const\n\n for (const input of records) {\n const creationStartedAt = new Date()\n const created = await storage.executions.create(input)\n const { createdAt: persistedAt, ...persistedInput } = created\n expect(persistedInput).toEqual(input)\n expect(Number.isFinite(persistedAt.getTime())).toBe(true)\n expect(persistedAt.getTime()).toBeGreaterThanOrEqual(creationStartedAt.getTime())\n expect(\n await storage.executions.getById({ projectId: input.projectId, id: input.id })\n ).toEqual(created)\n }\n\n const first = await storage.executions.getById({ projectId, id: \"principal-request\" })\n if (!first || first.authorizationRef.type !== \"principal\") {\n throw new Error(\"Expected principal execution fixture\")\n }\n const persisted = structuredClone(first)\n ;(first.authorizationRef.principal as { id: string }).id = \"mutated\"\n first.createdAt.setUTCFullYear(2000)\n expect(await storage.executions.getById({ projectId, id: first.id })).toEqual(persisted)\n })\n })\n\n test(\"keeps execution identity immutable and project-scoped\", async () => {\n await withStorage(async (storage) => {\n const first = disabledRequest(\"shared-id\")\n await storage.executions.create(first)\n\n await expect(storage.executions.create(first)).rejects.toMatchObject({\n code: \"duplicate_execution\",\n })\n\n const otherProject = disabledRequest(\"shared-id\", \"execution-contract-other\")\n await expect(storage.executions.create(otherProject)).resolves.toMatchObject({\n projectId: otherProject.projectId,\n })\n expect(\n await storage.executions.getById({ projectId: \"missing-project\", id: first.id })\n ).toBeNull()\n\n const backdated = await storage.executions.create({\n ...disabledRequest(\"caller-timestamp\"),\n createdAt: new Date(\"2000-01-01T00:00:00.000Z\"),\n } as CreateExecutionInput)\n expect(backdated.createdAt.getUTCFullYear()).not.toBe(2000)\n })\n })\n\n test(\"admits exactly one concurrent create for an execution id\", async () => {\n await withStorage(async (storage) => {\n const input = disabledRequest(\"concurrent-id\")\n const results = await Promise.allSettled([\n storage.executions.create(input),\n storage.executions.create(input),\n ])\n\n expect(results.filter((result) => result.status === \"fulfilled\")).toHaveLength(1)\n const [rejected] = results.filter((result) => result.status === \"rejected\")\n expect(rejected?.reason).toMatchObject({ code: \"duplicate_execution\" })\n })\n })\n\n test(\"rejects non-durable sources and executor-authority mismatches\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n\n const invalidInputs: readonly CreateExecutionInput[] = [\n {\n ...disabledRequest(\"queue-source\"),\n source: { type: \"queue\", queue: \"actions\", jobId: \"job-1\" },\n } as unknown as CreateExecutionInput,\n {\n ...disabledRequest(\"wrong-request-source\"),\n source: { type: \"http\", requestId: \"different-request\" },\n },\n {\n ...disabledRequest(\"principal-missing-requester\"),\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"user\", id: \"user-one\" },\n },\n },\n {\n ...trustedPrimitive(\"untrusted-primitive\"),\n authorizationRef: { type: \"disabled\" },\n },\n {\n ...agentExecution(\"user-agent\"),\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"user\", id: \"user-one\" },\n },\n },\n {\n ...kernelExecution(\"requested-kernel\"),\n requestedBy: { type: \"user\", id: \"user-one\" },\n },\n ]\n\n for (const input of invalidInputs) {\n await expect(storage.executions.create(input)).rejects.toMatchObject({\n code: \"invalid_input\",\n })\n }\n })\n })\n\n test(\"requires every principal and verifies credential ownership\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await seedSharedSession(storage)\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"missing-principal\",\n principal: { type: \"user\", id: \"unknown-user\" },\n })\n )\n ).rejects.toMatchObject({ code: \"missing_principal\" })\n\n await expect(\n storage.executions.create({\n ...delegatedRequest(\"missing-shared-session\"),\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-one\",\n sessionId: \"missing-shared-session\",\n },\n },\n })\n ).rejects.toMatchObject({ code: \"missing_credential\" })\n\n await expect(\n storage.executions.create({\n ...delegatedRequest(\"wrong-shared-grant\"),\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-two\",\n sessionId: \"share-session-one\",\n },\n },\n })\n ).rejects.toMatchObject({ code: \"invalid_credential\" })\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"missing-session\",\n credential: { type: \"session\", id: \"missing-session\" },\n })\n )\n ).rejects.toMatchObject({ code: \"missing_credential\" })\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"wrong-session-owner\",\n credential: { type: \"session\", id: \"session-other\" },\n })\n )\n ).rejects.toMatchObject({ code: \"invalid_credential\" })\n\n await expect(\n storage.executions.create({\n ...trustedPrimitive(\"missing-requester\"),\n requestedBy: { type: \"user\", id: \"unknown-user\" },\n })\n ).rejects.toMatchObject({ code: \"missing_principal\" })\n })\n })\n\n test(\"requires children to preserve direct parent provenance\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await storage.executions.create(principalRequest({ id: \"parent\" }))\n\n const validChild = trustedPrimitive(\"valid-child\", {\n correlationId: \"correlation-parent\",\n source: { type: \"execution\", executionId: \"parent\" },\n })\n const storedChild = await storage.executions.create(validChild)\n expect(storedChild).toMatchObject({\n source: { type: \"execution\", executionId: \"parent\" },\n })\n expect(storedChild).not.toHaveProperty(\"parentExecutionId\")\n\n const invalidChildren: readonly [CreateExecutionInput, string][] = [\n [\n trustedPrimitive(\"missing-parent\", {\n source: { type: \"execution\", executionId: \"unknown-parent\" },\n }),\n \"missing_parent_execution\",\n ],\n [\n trustedPrimitive(\"wrong-correlation\", {\n correlationId: \"different-correlation\",\n source: { type: \"execution\", executionId: \"parent\" },\n }),\n \"invalid_parent_execution\",\n ],\n [\n trustedPrimitive(\"wrong-requester\", {\n requestedBy: { type: \"user\", id: \"user-other\" },\n source: { type: \"execution\", executionId: \"parent\" },\n }),\n \"invalid_parent_execution\",\n ],\n ]\n\n for (const [input, code] of invalidChildren) {\n await expect(storage.executions.create(input)).rejects.toMatchObject({ code })\n }\n })\n })\n\n test(\"participates in storage transactions and rollback\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.transaction(async (tx) => {\n await tx.executions.create(disabledRequest(\"rolled-back\"))\n throw new Error(\"rollback\")\n })\n ).rejects.toThrow(\"rollback\")\n expect(await storage.executions.getById({ projectId, id: \"rolled-back\" })).toBeNull()\n\n await storage.transaction((tx) => tx.executions.create(disabledRequest(\"committed\")))\n expect(await storage.executions.getById({ projectId, id: \"committed\" })).not.toBeNull()\n })\n })\n })\n}\n\nasync function seedAuth(auth: AuthStorage): Promise<void> {\n await auth.users.create({\n id: \"user-one\",\n projectId,\n email: \"one@example.com\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.users.create({\n id: \"user-other\",\n projectId,\n email: \"other@example.com\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.serviceAccounts.create({\n id: \"service-one\",\n projectId,\n name: \"Service one\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.sessions.create({\n id: \"session-user\",\n projectId,\n userId: \"user-one\",\n strategyId: \"contract\",\n audience: \"atlas\",\n tokenHash: \"session-user-hash\",\n createdAt,\n expiresAt,\n })\n await auth.sessions.create({\n id: \"session-other\",\n projectId,\n userId: \"user-other\",\n strategyId: \"contract\",\n audience: \"atlas\",\n tokenHash: \"session-other-hash\",\n createdAt,\n expiresAt,\n })\n await auth.accessTokens.create({\n id: \"token-service\",\n projectId,\n name: \"Service token\",\n kind: \"serviceAccount\",\n subjectType: \"serviceAccount\",\n subjectId: \"service-one\",\n tokenHash: \"service-token-hash\",\n createdAt,\n expiresAt,\n })\n}\n\nasync function seedSharedSession(storage: ExecutionStorageContractStorage): Promise<void> {\n for (const id of [\"grant-one\", \"grant-two\"] as const) {\n await storage.shareGrants.create({\n id,\n projectId,\n definitionId: \"contract-share\",\n target: { objectTypeId: \"ContractObject\", primaryId: id },\n issuedBy: { type: \"user\", id: \"user-one\" },\n authoritySnapshot: { version: 1, access: { grants: [] } },\n tokenHash: id === \"grant-one\" ? \"a\".repeat(64) : \"b\".repeat(64),\n destinationPath: `/contract/${id}`,\n createdAt,\n expiresAt,\n })\n }\n await storage.shareSessions.create({\n id: \"share-session-one\",\n projectId,\n grantId: \"grant-one\",\n tokenHash: \"c\".repeat(64),\n createdAt,\n expiresAt,\n absoluteExpiresAt: expiresAt,\n })\n}\n\nfunction principalRequest(input: {\n readonly id: string\n readonly principal?: { readonly type: \"user\" | \"serviceAccount\"; readonly id: string }\n readonly credential?:\n | { readonly type: \"session\"; readonly id: string }\n | { readonly type: \"accessToken\"; readonly id: string }\n}): CreateExecutionInput {\n const principal = input.principal ?? ({ type: \"user\", id: \"user-one\" } as const)\n return {\n id: input.id,\n projectId,\n requestedBy: principal,\n executor: { type: \"request\", requestId: `request-${input.id}` },\n source: { type: \"http\", requestId: `request-${input.id}` },\n correlationId: input.id === \"parent\" ? \"correlation-parent\" : `correlation-${input.id}`,\n authorizationRef: {\n type: \"principal\",\n principal,\n ...(input.credential === undefined ? {} : { credential: input.credential }),\n },\n }\n}\n\nfunction disabledRequest(id: string, inputProjectId = projectId): CreateExecutionInput {\n return {\n id,\n projectId: inputProjectId,\n executor: { type: \"request\", requestId: `request-${id}` },\n source: { type: \"http\", requestId: `request-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n\nfunction delegatedRequest(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId: `request-${id}` },\n source: { type: \"http\", requestId: `request-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-one\",\n sessionId: \"share-session-one\",\n },\n },\n }\n}\n\nfunction trustedPrimitive(\n id: string,\n overrides: Partial<Pick<CreateExecutionInput, \"correlationId\" | \"requestedBy\" | \"source\">> = {},\n kind: TrustedPrimitiveKind = \"action\"\n): CreateExecutionInput {\n const runId = `run-${id}`\n return {\n id,\n projectId,\n requestedBy: { type: \"user\", id: \"user-one\" },\n executor: { type: \"primitive\", kind, runId },\n source: trustedPrimitiveSource(kind, id),\n correlationId: `correlation-${id}`,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind, id: `contract.${kind}`, runId },\n },\n ...overrides,\n }\n}\n\nfunction trustedPrimitiveSource(\n kind: TrustedPrimitiveKind,\n id: string\n): CreateExecutionInput[\"source\"] {\n if (kind === \"pipeline\") {\n return { type: \"schedule\", eventId: `schedule-event-${id}` }\n }\n if (kind === \"projection\") {\n return {\n type: \"datasetVersion\",\n datasetId: \"contract-dataset\",\n versionId: `version-${id}`,\n }\n }\n if (kind === \"webhook\") {\n return { type: \"webhook\", deliveryId: `delivery-${id}` }\n }\n return { type: \"event\", eventId: `event-${id}` }\n}\n\nconst trustedPrimitiveKinds = [\n \"action\",\n \"pipeline\",\n \"projection\",\n \"rule\",\n \"sync\",\n \"webhook\",\n \"workflow\",\n] as const satisfies readonly TrustedPrimitiveKind[]\n\nfunction agentExecution(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n requestedBy: { type: \"user\", id: \"user-one\" },\n executor: { type: \"agent\", runId: `run-${id}` },\n source: { type: \"execution\", executionId: \"principal-request\" },\n correlationId: \"correlation-principal-request\",\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"serviceAccount\", id: \"service-one\" },\n },\n }\n}\n\nfunction kernelExecution(id: string): CreateExecutionInput {\n const operation = { type: \"ontology.recover\", recoveryId: `recovery-${id}` } as const\n return {\n id,\n projectId,\n executor: { type: \"kernel\", operation },\n source: { type: \"event\", eventId: `event-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"kernel\", operation },\n }\n}\n",
|
|
19
|
+
"import type { AuthorizationContext } from \"../authorization\"\nimport { createTestingScope } from \"../execution/scopes\"\nimport type { ExecutionScope } from \"../execution/types\"\nimport { bindModelExecutionAttempt } from \"../models/execution/binding\"\nimport type { OntologySource } from \"../ontology\"\nimport { SixbHost, type SixbHostOptions } from \"../runtime/host\"\nimport { isBoundSixb, type Sixb } from \"../runtime/sixb\"\n\nexport type { AuthorizationContext } from \"../authorization\"\n\nexport interface TestExecutionOptions {\n readonly signal?: AbortSignal\n readonly authorization?: AuthorizationContext\n readonly executionId?: string\n readonly requestId?: string\n readonly correlationId?: string\n}\n\n/**\n * Bind a host to principal test authority from `authorization`, or to explicit disabled authority\n * when omitted. Test executions deliberately omit live session identity. Trusted primitive and\n * kernel authority remain unavailable to application tests.\n */\nexport interface TestExecutionHost {\n readonly id: string\n withScope(scope: ExecutionScope): object\n}\n\nexport function createTestSixb<\n TOntologySources extends readonly OntologySource[] = readonly OntologySource[],\n>(\n hostOrOptions: TestExecutionHost | SixbHostOptions<TOntologySources>,\n options: TestExecutionOptions = {}\n): Sixb<TOntologySources> {\n const host: TestExecutionHost =\n \"withScope\" in hostOrOptions ? hostOrOptions : new SixbHost(hostOrOptions)\n const sixb = host.withScope(\n createTestingScope({\n projectId: host.id,\n ...(options.authorization === undefined ? {} : { context: options.authorization }),\n ...(options.executionId === undefined ? {} : { executionId: options.executionId }),\n ...(options.requestId === undefined ? {} : { requestId: options.requestId }),\n ...(options.correlationId === undefined ? {} : { correlationId: options.correlationId }),\n })\n )\n if (!isBoundSixb<TOntologySources>(sixb)) {\n throw new Error(\"[Sixb] Test host did not return an execution-bound Sixb SDK.\")\n }\n bindModelExecutionAttempt(sixb.models, {\n attempt: 1,\n signal: options.signal ?? new AbortController().signal,\n })\n return sixb\n}\n",
|
|
20
|
+
"import { describe, expect, test } from \"bun:test\"\nimport type { AuthStorage } from \"../storage/auth\"\nimport type {\n CreateExecutionInput,\n ExecutionStorage,\n TrustedPrimitiveKind,\n} from \"../storage/executions\"\nimport type { ShareGrantStorage } from \"../storage/share-grants\"\nimport type { ShareSessionStorage } from \"../storage/share-sessions\"\nimport type { Storage } from \"../storage/types\"\n\nexport type ExecutionStorageContractStorage = Storage & {\n readonly auth: AuthStorage\n readonly executions: ExecutionStorage\n readonly shareGrants: ShareGrantStorage\n readonly shareSessions: ShareSessionStorage\n}\n\nexport interface ExecutionStorageContractSuiteOptions<\n TStorage extends ExecutionStorageContractStorage = ExecutionStorageContractStorage,\n> {\n /** Factory that returns one isolated, migrated storage bundle for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"execution-contract\"\nconst createdAt = new Date(\"2026-06-01T12:00:00.000Z\")\nconst expiresAt = new Date(\"2027-06-01T12:00:00.000Z\")\n\n/** Runs the immutable execution-ledger contract against one complete storage provider. */\nexport function runExecutionStorageContractSuite<TStorage extends ExecutionStorageContractStorage>(\n label: string,\n options: ExecutionStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"captures memberships once and inherits them independently of current authority\", async () => {\n // Removal proof: skip prepareExecutionRecord's membership capture or parent inheritance.\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n for (const groupId of [\"support\", \"finance\"]) {\n await storage.auth.groupMemberships.upsert({\n projectId,\n userId: \"user-one\",\n groupId,\n source: \"manual\",\n })\n }\n const parent = await storage.executions.create({\n ...principalRequest({ id: \"parent\" }),\n requesterGroupIds: undefined,\n })\n expect(parent.requesterGroupIds).toEqual([\"finance\", \"support\"])\n await storage.auth.groupMemberships.remove({\n projectId,\n userId: \"user-one\",\n groupId: \"finance\",\n })\n const childInput = trustedPrimitive(\"child\", {\n source: { type: \"execution\", executionId: parent.id },\n correlationId: parent.correlationId,\n })\n const child = await storage.executions.create({\n ...childInput,\n requesterGroupIds: undefined,\n })\n expect(child.requesterGroupIds).toEqual([\"finance\", \"support\"])\n ;(child.requesterGroupIds as string[]).push(\"mutated\")\n await expect(\n storage.executions.getById({ projectId, id: child.id })\n ).resolves.toMatchObject({ requesterGroupIds: [\"finance\", \"support\"] })\n await expect(\n storage.executions.create({\n ...childInput,\n id: \"wrong-groups\",\n requesterGroupIds: [\"support\"],\n })\n ).rejects.toMatchObject({ code: \"invalid_parent_execution\" })\n const next = await storage.executions.create({\n ...principalRequest({ id: \"next\" }),\n requesterGroupIds: undefined,\n })\n expect(next.requesterGroupIds).toEqual([\"support\"])\n })\n })\n\n test(\"round-trips every durable executor and authority shape\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await seedSharedSession(storage)\n\n const records = [\n principalRequest({\n id: \"principal-request\",\n credential: { type: \"session\", id: \"session-user\" },\n }),\n principalRequest({\n id: \"service-request\",\n principal: { type: \"serviceAccount\", id: \"service-one\" },\n credential: { type: \"accessToken\", id: \"token-service\" },\n }),\n disabledRequest(\"disabled-request\"),\n delegatedRequest(\"delegated-request\"),\n ...trustedPrimitiveKinds.map((kind) => trustedPrimitive(`${kind}-execution`, {}, kind)),\n agentExecution(\"agent-execution\"),\n kernelExecution(\"kernel-execution\"),\n ] as const\n\n for (const input of records) {\n const creationStartedAt = new Date()\n const created = await storage.executions.create(input)\n const { createdAt: persistedAt, ...persistedInput } = created\n expect(persistedInput).toEqual({\n ...input,\n requesterGroupIds: input.requesterGroupIds ?? [],\n })\n expect(Number.isFinite(persistedAt.getTime())).toBe(true)\n expect(persistedAt.getTime()).toBeGreaterThanOrEqual(creationStartedAt.getTime())\n expect(\n await storage.executions.getById({ projectId: input.projectId, id: input.id })\n ).toEqual(created)\n }\n\n const first = await storage.executions.getById({ projectId, id: \"principal-request\" })\n if (!first || first.authorizationRef.type !== \"principal\") {\n throw new Error(\"Expected principal execution fixture\")\n }\n const persisted = structuredClone(first)\n ;(first.authorizationRef.principal as { id: string }).id = \"mutated\"\n first.createdAt.setUTCFullYear(2000)\n expect(await storage.executions.getById({ projectId, id: first.id })).toEqual(persisted)\n })\n })\n\n test(\"keeps execution identity immutable and project-scoped\", async () => {\n await withStorage(async (storage) => {\n const first = disabledRequest(\"shared-id\")\n await storage.executions.create(first)\n\n await expect(storage.executions.create(first)).rejects.toMatchObject({\n code: \"duplicate_execution\",\n })\n\n const otherProject = disabledRequest(\"shared-id\", \"execution-contract-other\")\n await expect(storage.executions.create(otherProject)).resolves.toMatchObject({\n projectId: otherProject.projectId,\n })\n expect(\n await storage.executions.getById({ projectId: \"missing-project\", id: first.id })\n ).toBeNull()\n\n const backdated = await storage.executions.create({\n ...disabledRequest(\"caller-timestamp\"),\n createdAt: new Date(\"2000-01-01T00:00:00.000Z\"),\n } as CreateExecutionInput)\n expect(backdated.createdAt.getUTCFullYear()).not.toBe(2000)\n })\n })\n\n test(\"admits exactly one concurrent create for an execution id\", async () => {\n await withStorage(async (storage) => {\n const input = disabledRequest(\"concurrent-id\")\n const results = await Promise.allSettled([\n storage.executions.create(input),\n storage.executions.create(input),\n ])\n\n expect(results.filter((result) => result.status === \"fulfilled\")).toHaveLength(1)\n const [rejected] = results.filter((result) => result.status === \"rejected\")\n expect(rejected?.reason).toMatchObject({ code: \"duplicate_execution\" })\n })\n })\n\n test(\"rejects non-durable sources and executor-authority mismatches\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n\n const invalidInputs: readonly CreateExecutionInput[] = [\n {\n ...disabledRequest(\"queue-source\"),\n source: { type: \"queue\", queue: \"actions\", jobId: \"job-1\" },\n } as unknown as CreateExecutionInput,\n {\n ...disabledRequest(\"wrong-request-source\"),\n source: { type: \"http\", requestId: \"different-request\" },\n },\n {\n ...disabledRequest(\"principal-missing-requester\"),\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"user\", id: \"user-one\" },\n },\n },\n {\n ...trustedPrimitive(\"untrusted-primitive\"),\n authorizationRef: { type: \"disabled\" },\n },\n {\n ...agentExecution(\"user-agent\"),\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"user\", id: \"user-one\" },\n },\n },\n {\n ...kernelExecution(\"requested-kernel\"),\n requestedBy: { type: \"user\", id: \"user-one\" },\n },\n ]\n\n for (const input of invalidInputs) {\n await expect(storage.executions.create(input)).rejects.toMatchObject({\n code: \"invalid_input\",\n })\n }\n })\n })\n\n test(\"requires every principal and verifies credential ownership\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await seedSharedSession(storage)\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"missing-principal\",\n principal: { type: \"user\", id: \"unknown-user\" },\n })\n )\n ).rejects.toMatchObject({ code: \"missing_principal\" })\n\n await expect(\n storage.executions.create({\n ...delegatedRequest(\"missing-shared-session\"),\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-one\",\n sessionId: \"missing-shared-session\",\n },\n },\n })\n ).rejects.toMatchObject({ code: \"missing_credential\" })\n\n await expect(\n storage.executions.create({\n ...delegatedRequest(\"wrong-shared-grant\"),\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-two\",\n sessionId: \"share-session-one\",\n },\n },\n })\n ).rejects.toMatchObject({ code: \"invalid_credential\" })\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"missing-session\",\n credential: { type: \"session\", id: \"missing-session\" },\n })\n )\n ).rejects.toMatchObject({ code: \"missing_credential\" })\n\n await expect(\n storage.executions.create(\n principalRequest({\n id: \"wrong-session-owner\",\n credential: { type: \"session\", id: \"session-other\" },\n })\n )\n ).rejects.toMatchObject({ code: \"invalid_credential\" })\n\n await expect(\n storage.executions.create({\n ...trustedPrimitive(\"missing-requester\"),\n requestedBy: { type: \"user\", id: \"unknown-user\" },\n })\n ).rejects.toMatchObject({ code: \"missing_principal\" })\n })\n })\n\n test(\"requires children to preserve direct parent provenance\", async () => {\n await withStorage(async (storage) => {\n await seedAuth(storage.auth)\n await storage.executions.create(principalRequest({ id: \"parent\" }))\n\n const validChild = trustedPrimitive(\"valid-child\", {\n correlationId: \"correlation-parent\",\n source: { type: \"execution\", executionId: \"parent\" },\n })\n const storedChild = await storage.executions.create(validChild)\n expect(storedChild).toMatchObject({\n source: { type: \"execution\", executionId: \"parent\" },\n })\n expect(storedChild).not.toHaveProperty(\"parentExecutionId\")\n\n const invalidChildren: readonly [CreateExecutionInput, string][] = [\n [\n trustedPrimitive(\"missing-parent\", {\n source: { type: \"execution\", executionId: \"unknown-parent\" },\n }),\n \"missing_parent_execution\",\n ],\n [\n trustedPrimitive(\"wrong-correlation\", {\n correlationId: \"different-correlation\",\n source: { type: \"execution\", executionId: \"parent\" },\n }),\n \"invalid_parent_execution\",\n ],\n [\n trustedPrimitive(\"wrong-requester\", {\n requestedBy: { type: \"user\", id: \"user-other\" },\n source: { type: \"execution\", executionId: \"parent\" },\n }),\n \"invalid_parent_execution\",\n ],\n ]\n\n for (const [input, code] of invalidChildren) {\n await expect(storage.executions.create(input)).rejects.toMatchObject({ code })\n }\n })\n })\n\n test(\"participates in storage transactions and rollback\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.transaction(async (tx) => {\n await tx.executions.create(disabledRequest(\"rolled-back\"))\n throw new Error(\"rollback\")\n })\n ).rejects.toThrow(\"rollback\")\n expect(await storage.executions.getById({ projectId, id: \"rolled-back\" })).toBeNull()\n\n await storage.transaction((tx) => tx.executions.create(disabledRequest(\"committed\")))\n expect(await storage.executions.getById({ projectId, id: \"committed\" })).not.toBeNull()\n })\n })\n })\n}\n\nasync function seedAuth(auth: AuthStorage): Promise<void> {\n await auth.users.create({\n id: \"user-one\",\n projectId,\n email: \"one@example.com\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.users.create({\n id: \"user-other\",\n projectId,\n email: \"other@example.com\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.serviceAccounts.create({\n id: \"service-one\",\n projectId,\n name: \"Service one\",\n createdAt,\n updatedAt: createdAt,\n })\n await auth.sessions.create({\n id: \"session-user\",\n projectId,\n userId: \"user-one\",\n strategyId: \"contract\",\n audience: \"atlas\",\n tokenHash: \"session-user-hash\",\n createdAt,\n expiresAt,\n })\n await auth.sessions.create({\n id: \"session-other\",\n projectId,\n userId: \"user-other\",\n strategyId: \"contract\",\n audience: \"atlas\",\n tokenHash: \"session-other-hash\",\n createdAt,\n expiresAt,\n })\n await auth.accessTokens.create({\n id: \"token-service\",\n projectId,\n name: \"Service token\",\n kind: \"serviceAccount\",\n subjectType: \"serviceAccount\",\n subjectId: \"service-one\",\n tokenHash: \"service-token-hash\",\n createdAt,\n expiresAt,\n })\n}\n\nasync function seedSharedSession(storage: ExecutionStorageContractStorage): Promise<void> {\n for (const id of [\"grant-one\", \"grant-two\"] as const) {\n await storage.shareGrants.create({\n id,\n projectId,\n definitionId: \"contract-share\",\n target: { objectTypeId: \"ContractObject\", primaryId: id },\n issuedBy: { type: \"user\", id: \"user-one\" },\n authoritySnapshot: { version: 1, access: { grants: [] } },\n tokenHash: id === \"grant-one\" ? \"a\".repeat(64) : \"b\".repeat(64),\n destinationPath: `/contract/${id}`,\n createdAt,\n expiresAt,\n })\n }\n await storage.shareSessions.create({\n id: \"share-session-one\",\n projectId,\n grantId: \"grant-one\",\n tokenHash: \"c\".repeat(64),\n createdAt,\n expiresAt,\n absoluteExpiresAt: expiresAt,\n })\n}\n\nfunction principalRequest(input: {\n readonly id: string\n readonly principal?: { readonly type: \"user\" | \"serviceAccount\"; readonly id: string }\n readonly credential?:\n | { readonly type: \"session\"; readonly id: string }\n | { readonly type: \"accessToken\"; readonly id: string }\n}): CreateExecutionInput {\n const principal = input.principal ?? ({ type: \"user\", id: \"user-one\" } as const)\n return {\n id: input.id,\n projectId,\n requestedBy: principal,\n requesterGroupIds: [],\n executor: { type: \"request\", requestId: `request-${input.id}` },\n source: { type: \"http\", requestId: `request-${input.id}` },\n correlationId: input.id === \"parent\" ? \"correlation-parent\" : `correlation-${input.id}`,\n authorizationRef: {\n type: \"principal\",\n principal,\n ...(input.credential === undefined ? {} : { credential: input.credential }),\n },\n }\n}\n\nfunction disabledRequest(id: string, inputProjectId = projectId): CreateExecutionInput {\n return {\n id,\n projectId: inputProjectId,\n requesterGroupIds: [],\n executor: { type: \"request\", requestId: `request-${id}` },\n source: { type: \"http\", requestId: `request-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n\nfunction delegatedRequest(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId: `request-${id}` },\n source: { type: \"http\", requestId: `request-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: {\n type: \"delegated\",\n delegation: {\n kind: \"share\",\n grantId: \"grant-one\",\n sessionId: \"share-session-one\",\n },\n },\n }\n}\n\nfunction trustedPrimitive(\n id: string,\n overrides: Partial<Pick<CreateExecutionInput, \"correlationId\" | \"requestedBy\" | \"source\">> = {},\n kind: TrustedPrimitiveKind = \"action\"\n): CreateExecutionInput {\n const runId = `run-${id}`\n return {\n id,\n projectId,\n requestedBy: { type: \"user\", id: \"user-one\" },\n requesterGroupIds: [],\n executor: { type: \"primitive\", kind, runId },\n source: trustedPrimitiveSource(kind, id),\n correlationId: `correlation-${id}`,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind, id: `contract.${kind}`, runId },\n },\n ...overrides,\n }\n}\n\nfunction trustedPrimitiveSource(\n kind: TrustedPrimitiveKind,\n id: string\n): CreateExecutionInput[\"source\"] {\n if (kind === \"pipeline\") {\n return { type: \"schedule\", eventId: `schedule-event-${id}` }\n }\n if (kind === \"projection\") {\n return {\n type: \"datasetVersion\",\n datasetId: \"contract-dataset\",\n versionId: `version-${id}`,\n }\n }\n if (kind === \"webhook\") {\n return { type: \"webhook\", deliveryId: `delivery-${id}` }\n }\n return { type: \"event\", eventId: `event-${id}` }\n}\n\nconst trustedPrimitiveKinds = [\n \"action\",\n \"pipeline\",\n \"projection\",\n \"rule\",\n \"sync\",\n \"webhook\",\n \"workflow\",\n] as const satisfies readonly TrustedPrimitiveKind[]\n\nfunction agentExecution(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n requestedBy: { type: \"user\", id: \"user-one\" },\n requesterGroupIds: [],\n executor: { type: \"agent\", runId: `run-${id}` },\n source: { type: \"execution\", executionId: \"principal-request\" },\n correlationId: \"correlation-principal-request\",\n authorizationRef: {\n type: \"principal\",\n principal: { type: \"serviceAccount\", id: \"service-one\" },\n },\n }\n}\n\nfunction kernelExecution(id: string): CreateExecutionInput {\n const operation = { type: \"ontology.recover\", recoveryId: `recovery-${id}` } as const\n return {\n id,\n projectId,\n executor: { type: \"kernel\", operation },\n requesterGroupIds: [],\n source: { type: \"event\", eventId: `event-${id}` },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"kernel\", operation },\n }\n}\n",
|
|
21
21
|
"import { describe, expect, test } from \"bun:test\"\nimport { change, col, defineDataset } from \"../datasets\"\nimport type { DatasetMergeCommitResult, DatasetRow, LakeStorage } from \"../lake-storage\"\nimport { runDatasetSequenceContract } from \"./dataset-sequence-contract\"\n\nexport interface LakeMergeStorageContractSuiteOptions<TStorage extends LakeStorage = LakeStorage> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n readonly reopen?: (storage: TStorage) => TStorage | Promise<TStorage>\n}\n\nconst invoices = defineDataset(\"contract.merges.invoices\", {\n schema: [col(\"id\", \"string\"), col(\"status\", \"string\"), col(\"note\", \"string\", { nullable: true })],\n primaryKey: \"id\",\n})\n\nconst lineItems = defineDataset(\"contract.merges.line_items\", {\n schema: [col(\"invoiceId\", \"string\"), col(\"lineItemId\", \"string\"), col(\"description\", \"string\")],\n primaryKey: [\"invoiceId\", \"lineItemId\"],\n})\n\nconst unkeyed = defineDataset(\"contract.merges.unkeyed\", {\n schema: [col(\"id\", \"string\")],\n})\n\nexport function runLakeMergeStorageContractSuite<TStorage extends LakeStorage>(\n label: string,\n options: LakeMergeStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n runDatasetSequenceContract(options)\n test(\"creates an initial merge version from async changes\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const merge = await storage.beginMerge({\n dataset: invoices,\n producer: { kind: \"sync\", id: \"sync-invoices\", runId: \"run_1\" },\n inputs: [{ datasetId: \"source.events\", versionId: \"cursor_1\" }],\n })\n\n async function* changes() {\n yield change.upsert({ id: \"inv_1\", status: \"open\", note: null })\n yield change.upsert({ id: \"inv_2\", status: \"paid\", note: \"settled\" })\n }\n\n await merge.writeChanges(changes())\n const result = await merge.commit({ commitMessage: \"initial invoice changes\" })\n const version = expectCreated(result)\n\n expect(version).toMatchObject({\n datasetId: invoices.id,\n mode: \"merge\",\n rowCount: 2,\n producer: { kind: \"sync\", id: \"sync-invoices\", runId: \"run_1\" },\n inputs: [{ datasetId: \"source.events\", versionId: \"cursor_1\" }],\n })\n expect(version.parentVersionId).toBeUndefined()\n await expect(collectRows(storage.readRows({ datasetId: invoices.id }))).resolves.toEqual([\n { id: \"inv_1\", status: \"open\", note: null },\n { id: \"inv_2\", status: \"paid\", note: \"settled\" },\n ])\n })\n })\n\n test(\"inserts, updates, and deletes while preserving the parent version\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const seed = await storage.beginWrite({ dataset: invoices, mode: \"snapshot\" })\n await seed.writeRows([\n { id: \"inv_1\", status: \"open\", note: null },\n { id: \"inv_2\", status: \"open\", note: null },\n ])\n const parent = await seed.commit()\n\n const merge = await storage.beginMerge({ dataset: invoices })\n await merge.writeChanges([\n change.upsert({ id: \"inv_1\", status: \"paid\", note: null }),\n // Primary keys are immutable, so moving a row is an old-key delete plus a complete row.\n change.delete({ id: \"inv_2\" }),\n change.upsert({ id: \"inv_2_moved\", status: \"open\", note: \"moved\" }),\n ])\n const version = expectCreated(await merge.commit())\n\n expect(version.parentVersionId).toBe(parent.versionId)\n expect(version.mode).toBe(\"merge\")\n await expect(collectRows(storage.readRows({ datasetId: invoices.id }))).resolves.toEqual([\n { id: \"inv_1\", status: \"paid\", note: null },\n { id: \"inv_2_moved\", status: \"open\", note: \"moved\" },\n ])\n await expect(\n collectRows(storage.readRows({ datasetId: invoices.id, versionId: parent.versionId }))\n ).resolves.toEqual([\n { id: \"inv_1\", status: \"open\", note: null },\n { id: \"inv_2\", status: \"open\", note: null },\n ])\n })\n })\n\n test(\"applies the final change for repeated single and composite keys\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(lineItems)\n const merge = await storage.beginMerge({ dataset: lineItems })\n await merge.writeChanges([\n change.upsert({ invoiceId: \"a|b\", lineItemId: \"c\", description: \"first\" }),\n change.upsert({ invoiceId: \"a\", lineItemId: \"b|c\", description: \"other key\" }),\n ])\n await merge.writeChanges([\n change.delete({ invoiceId: \"a|b\", lineItemId: \"c\" }),\n change.upsert({ invoiceId: \"a|b\", lineItemId: \"c\", description: \"final\" }),\n ])\n expectCreated(await merge.commit())\n\n await expect(collectRows(storage.readRows({ datasetId: lineItems.id }))).resolves.toEqual([\n { invoiceId: \"a|b\", lineItemId: \"c\", description: \"final\" },\n { invoiceId: \"a\", lineItemId: \"b|c\", description: \"other key\" },\n ])\n })\n })\n\n test(\"does not create versions when visible rows do not change\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n\n const empty = await storage.beginMerge({ dataset: invoices })\n expect(await empty.commit()).toEqual({ outcome: \"unchanged\", version: null })\n\n const initialNoOp = await storage.beginMerge({ dataset: invoices })\n await initialNoOp.writeChanges([change.delete({ id: \"missing\" })])\n expect(await initialNoOp.commit()).toEqual({ outcome: \"unchanged\", version: null })\n expect(await storage.listVersions(invoices.id)).toEqual([])\n\n const seed = await storage.beginMerge({ dataset: invoices })\n await seed.writeChanges([change.upsert({ id: \"inv_1\", status: \"open\", note: null })])\n const seedVersion = expectCreated(await seed.commit())\n\n const identical = await storage.beginMerge({ dataset: invoices })\n await identical.writeChanges([change.upsert({ id: \"inv_1\", status: \"open\", note: null })])\n expect(await identical.commit()).toMatchObject({\n outcome: \"unchanged\",\n version: { versionId: seedVersion.versionId },\n })\n\n const laterNoOp = await storage.beginMerge({ dataset: invoices })\n await laterNoOp.writeChanges([\n change.upsert({ id: \"inv_1\", status: \"paid\", note: null }),\n change.upsert({ id: \"inv_1\", status: \"open\" }),\n change.delete({ id: \"missing\" }),\n ])\n const noOpResult = await laterNoOp.commit()\n\n expect(noOpResult).toMatchObject({ outcome: \"unchanged\" })\n expect(noOpResult.version?.versionId).toBe(seedVersion.versionId)\n expect(await storage.listVersions(invoices.id)).toHaveLength(1)\n })\n })\n\n test(\"automatically rejects stale merge sessions, including an absent base\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const first = await storage.beginMerge({ dataset: invoices })\n const stale = await storage.beginMerge({ dataset: invoices })\n\n await first.writeChanges([change.upsert({ id: \"inv_1\", status: \"open\", note: null })])\n await first.commit()\n await stale.writeChanges([change.upsert({ id: \"inv_2\", status: \"open\" })])\n\n await expect(stale.commit()).rejects.toThrow(\"Optimistic merge commit failed\")\n await expect(collectRows(storage.readRows({ datasetId: invoices.id }))).resolves.toEqual([\n { id: \"inv_1\", status: \"open\", note: null },\n ])\n })\n })\n\n test(\"checks an explicit latest-version guard against the captured merge base\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const seed = await storage.beginMerge({ dataset: invoices })\n await seed.writeChanges([change.upsert({ id: \"inv_1\", status: \"open\" })])\n const version = expectCreated(await seed.commit())\n\n await expect(\n storage.beginMerge({ dataset: invoices, expectedLatestVersionId: \"stale-version\" })\n ).rejects.toThrow(\"Optimistic merge start failed\")\n\n const guarded = await storage.beginMerge({\n dataset: invoices,\n expectedLatestVersionId: version.versionId,\n })\n await guarded.abort()\n })\n })\n\n test(\"serializes concurrent commits from the same base\", async () => {\n // Regression guard: bypassing a provider's per-dataset commit lock lets both commits create\n // versions from the same base and makes the fulfilled-count assertion fail.\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const left = await storage.beginMerge({ dataset: invoices })\n const right = await storage.beginMerge({ dataset: invoices })\n await left.writeChanges([change.upsert({ id: \"inv_left\", status: \"open\" })])\n await right.writeChanges([change.upsert({ id: \"inv_right\", status: \"open\" })])\n\n const results = await Promise.allSettled([left.commit(), right.commit()])\n\n expect(results.filter((result) => result.status === \"fulfilled\")).toHaveLength(1)\n expect(results.filter((result) => result.status === \"rejected\")).toHaveLength(1)\n expect(await storage.listVersions(invoices.id)).toHaveLength(1)\n expect(await collectRows(storage.readRows({ datasetId: invoices.id }))).toHaveLength(1)\n })\n })\n\n test(\"rejects unkeyed datasets and malformed changes\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(unkeyed)\n await expect(storage.beginMerge({ dataset: unkeyed })).rejects.toThrow(\n \"must define a primaryKey\"\n )\n\n await storage.createDataset(invoices)\n const merge = await storage.beginMerge({ dataset: invoices })\n await expect(merge.writeChanges([change.upsert({ id: \"inv_1\" })])).rejects.toThrow(\n \"missing required column 'status'\"\n )\n await expect(merge.writeChanges([change.delete({})])).rejects.toThrow(\n \"missing primary-key column 'id'\"\n )\n await expect(\n merge.writeChanges([{ kind: \"delete\", key: { id: \"inv_1\", extra: \"x\" } }])\n ).rejects.toThrow(\"unknown column 'extra'\")\n await merge.abort()\n })\n })\n\n test(\"enforces unique keys for snapshot and append baselines\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n\n const duplicateSnapshot = await storage.beginWrite({ dataset: invoices, mode: \"snapshot\" })\n await expect(\n duplicateSnapshot.writeRows([\n { id: \"inv_1\", status: \"open\" },\n { id: \"inv_1\", status: \"paid\" },\n ])\n ).rejects.toThrow(\"duplicate primary key\")\n await duplicateSnapshot.abort()\n\n const seed = await storage.beginWrite({ dataset: invoices, mode: \"snapshot\" })\n await seed.writeRows([{ id: \"inv_1\", status: \"open\" }])\n await seed.commit()\n\n const conflictingAppend = await storage.beginWrite({ dataset: invoices, mode: \"append\" })\n await conflictingAppend.writeRows([{ id: \"inv_1\", status: \"paid\" }])\n await expect(conflictingAppend.commit()).rejects.toThrow(\"duplicate primary key\")\n })\n })\n\n test(\"clones staged changes and enforces the session lifecycle\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(invoices)\n const row = { id: \"inv_1\", status: \"open\", note: null }\n const merge = await storage.beginMerge({ dataset: invoices })\n await merge.writeChanges([change.upsert(row)])\n row.status = \"paid\"\n expectCreated(await merge.commit())\n await merge.abort()\n\n await expect(merge.writeChanges([])).rejects.toThrow(\"already closed\")\n await expect(collectRows(storage.readRows({ datasetId: invoices.id }))).resolves.toEqual([\n { id: \"inv_1\", status: \"open\", note: null },\n ])\n\n const aborted = await storage.beginMerge({ dataset: invoices })\n await aborted.writeChanges([change.delete({ id: \"inv_1\" })])\n await aborted.abort()\n await aborted.abort()\n expect(await storage.listVersions(invoices.id)).toHaveLength(1)\n })\n })\n })\n}\n\nfunction expectCreated(result: DatasetMergeCommitResult) {\n expect(result.outcome).toBe(\"created\")\n if (result.outcome !== \"created\") {\n throw new Error(\"Expected merge to create a dataset version\")\n }\n return result.version\n}\n\nasync function collectRows(rows: AsyncIterable<DatasetRow>): Promise<DatasetRow[]> {\n const result: DatasetRow[] = []\n for await (const row of rows) {\n result.push(row)\n }\n return result\n}\n",
|
|
22
22
|
"import { describe, expect, test } from \"bun:test\"\nimport { InMemoryBlobStorage } from \"../blob-storage\"\nimport { InMemoryBroker } from \"../broker\"\nimport { change, col, type DatasetDefinition, defineDataset, type MergeChange } from \"../datasets\"\nimport { writeDataset } from \"../datasets/write\"\nimport type { DatasetMergeCommitResult, DatasetRow, LakeStorage } from \"../lake-storage\"\nimport { InMemoryQueues } from \"../queues\"\nimport { SixbHost } from \"../runtime/host\"\nimport { InMemoryStorage } from \"../storage\"\nimport { createTestSixb } from \"./execution\"\nimport type { LakeMergeStorageContractSuiteOptions } from \"./lake-merge-storage-contract\"\n\nconst dataset = defineDataset(\"contract.source_order\", {\n schema: [\n col(\"id\", \"string\"),\n col(\"revision\", \"int64\"),\n col(\"name\", \"string\"),\n col(\"details\", \"json\", { nullable: true }),\n ],\n primaryKey: \"id\",\n sequenceBy: \"revision\",\n})\nconst upsert = (revision: string | number, name = \"Sam\", id = \"42\") =>\n change.upsert({ id, revision, name })\n\nasync function merge(\n storage: LakeStorage,\n changes: readonly MergeChange<DatasetRow, DatasetRow>[],\n definition: DatasetDefinition = dataset\n) {\n const session = await storage.beginMerge({ dataset: definition })\n try {\n await session.writeChanges(changes)\n return await session.commit()\n } catch (error) {\n await session.abort()\n throw error\n }\n}\n\nasync function rows(storage: LakeStorage, definition: DatasetDefinition = dataset) {\n const result: DatasetRow[] = []\n for await (const row of storage.readRows({ datasetId: definition.id })) result.push(row)\n return result\n}\n\nexport function runDatasetSequenceContract<TStorage extends LakeStorage>(\n options: LakeMergeStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (run: (storage: TStorage) => Promise<void>) => {\n const storage = await options.createStorage()\n try {\n await storage.createDataset(dataset)\n await run(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(\"source ordering\", () => {\n test(\"initializes empty snapshots and preserves versions across retries and reopen\", async () => {\n // Regression proof: remove createInitialVersion from the writer or provider; the first\n // snapshot has no version. Ignore the rebased head and the concurrent-write assertion fails.\n let storage = await options.createStorage()\n const snapshot = () =>\n writeDataset({\n lakeStorage: storage,\n blobStorage: new InMemoryBlobStorage(),\n dataset,\n mode: \"snapshot\",\n signal: new AbortController().signal,\n readValues: async () => [],\n })\n try {\n await storage.createDataset(dataset)\n expect(await merge(storage, [])).toEqual({ outcome: \"unchanged\", version: null })\n const initialized = await Promise.all([snapshot(), snapshot()])\n expect(initialized.map((result) => result.outcome).sort()).toEqual([\"created\", \"unchanged\"])\n const initial = initialized.find((result) => result.outcome === \"created\")!\n expect(initialized[0]?.version).toEqual(initialized[1]?.version)\n expect(initial).toMatchObject({\n outcome: \"created\",\n version: { rowCount: 0, mode: \"merge\" },\n })\n expect(await rows(storage)).toEqual([])\n if (options.reopen) storage = await options.reopen(storage)\n expect(await storage.getLatestVersion(dataset.id)).toEqual(initial.version)\n expect(await snapshot()).toMatchObject({ outcome: \"unchanged\", version: initial.version })\n\n const concurrent = defineDataset(\"contract.empty_race\", {\n schema: dataset.schema.columns,\n primaryKey: \"id\",\n sequenceBy: \"revision\",\n })\n let committed: DatasetMergeCommitResult | undefined\n const rebased = await writeDataset({\n lakeStorage: storage,\n blobStorage: new InMemoryBlobStorage(),\n dataset: concurrent,\n mode: \"snapshot\",\n signal: new AbortController().signal,\n readValues: async () => {\n committed = await merge(storage, [upsert(8)], concurrent)\n return []\n },\n })\n expect(rebased).toMatchObject({ outcome: \"unchanged\", version: committed?.version })\n expect(await rows(storage, concurrent)).toHaveLength(1)\n } finally {\n await options.teardown?.(storage)\n }\n })\n\n test(\"rejects lossy timestamps outside the ordering column before changing source state\", () =>\n withStorage(async (storage) => {\n // Regression proof: remove the sequenced timestamp check in getColumnValidationError;\n // submillisecond content is accepted and its distinct values collapse to one digest.\n const timestamps = defineDataset(\"contract.content_timestamps\", {\n schema: [...dataset.schema.columns, col(\"at\", \"timestamp\", { nullable: true })],\n primaryKey: \"id\",\n sequenceBy: \"revision\",\n })\n await storage.createDataset(timestamps)\n const row = (at: unknown, id = \"42\") => change.upsert({ id, revision: 1, name: \"Sam\", at })\n const initial = await merge(storage, [row(\"2026-09-09T10:00:00.123Z\")], timestamps)\n for (const at of [\n \"2026-09-09T10:00:00.123001Z\",\n \"2026-09-09T10:00:00.123999Z\",\n \"2026-09-09T10:00:00\",\n \"2026-02-30T00:00:00Z\",\n ]) {\n await expect(merge(storage, [row(at, \"new\")], timestamps)).rejects.toThrow(\"column 'at'\")\n expect(await storage.getLatestVersion(timestamps.id)).toEqual(initial.version)\n }\n for (const at of [\"2026-09-09T12:00:00.123+02:00\", new Date(\"2026-09-09T10:00:00.123Z\")]) {\n expect((await merge(storage, [row(at)], timestamps)).outcome).toBe(\"unchanged\")\n }\n await expect(merge(storage, [row(\"2026-09-09T10:00:00.124Z\")], timestamps)).rejects.toThrow(\n \"conflicting content\"\n )\n await merge(storage, [row(null, \"nullable\")], timestamps)\n expect((await merge(storage, [row(undefined, \"nullable\")], timestamps)).outcome).toBe(\n \"unchanged\"\n )\n }))\n\n test(\"ingests through the bound SDK and preserves execution provenance\", async () => {\n // Regression proof: remove ingest from DuckLake's producer parser; reopen loses provenance.\n let storage = await options.createStorage()\n const broker = new InMemoryBroker()\n try {\n const host = new SixbHost({\n id: \"ingest-contract\",\n ontology: [],\n datasets: [dataset],\n lakeStorage: storage,\n broker,\n storage: new InMemoryStorage(),\n queues: new InMemoryQueues(),\n blobStorage: new InMemoryBlobStorage(),\n })\n const sixb = createTestSixb(host)\n const result = await sixb.datasets.ingest(dataset, { changes: [upsert(8)] })\n expect(result.outcome).toBe(\"created\")\n if (options.reopen) storage = await options.reopen(storage)\n expect((await storage.getLatestVersion(dataset.id))?.producer).toEqual({\n kind: \"ingest\",\n id: sixb.execution.id,\n })\n expect((await rows(storage)).map((row) => row.name)).toEqual([\"Sam\"])\n expect(await host.events.read()).toMatchObject([\n { type: \"dataset.version.committed\", payload: { versionId: result.version?.versionId } },\n ])\n } finally {\n await options.teardown?.(storage)\n }\n })\n test(\"rebases retained changes while preserving explicit version guards\", () =>\n withStorage(async (storage) => {\n // Regression proof: disable retryOnConflict in retryDatasetMergeCommit; the second commit fails.\n const first = await storage.beginMerge({ dataset })\n const second = await storage.beginMerge({ dataset })\n await first.writeChanges([upsert(8)])\n await second.writeChanges([upsert(7, \"stale\"), upsert(1, \"other\", \"other\")])\n const initial = await first.commit({ retryOnConflict: true })\n await second.commit({ retryOnConflict: true })\n expect((await rows(storage)).map((row) => row.name).sort()).toEqual([\"Sam\", \"other\"])\n const guarded = await storage.beginMerge({\n dataset,\n expectedLatestVersionId: (await storage.getLatestVersion(dataset.id))?.versionId,\n })\n await guarded.writeChanges([upsert(10)])\n await merge(storage, [change.delete({ id: \"42\" }, { sequence: 9 })])\n await expect(guarded.commit({ retryOnConflict: true })).rejects.toThrow(\"Optimistic\")\n await guarded.abort()\n const staleDelete = await storage.beginMerge({ dataset })\n await staleDelete.writeChanges([change.delete({ id: \"42\" }, { sequence: 9 })])\n await merge(storage, [upsert(10)])\n expect((await staleDelete.commit({ retryOnConflict: true })).outcome).toBe(\"unchanged\")\n expect((await storage.getLatestVersion(dataset.id))?.versionId).not.toBe(\n initial.version?.versionId\n )\n }))\n // Regression proof: bypass reconcileDatasetSequences at the provider commit boundary.\n // The stale-write, conflict, and deletion assertions below must then fail.\n test(\"orders repeated keys exactly and conflicts atomically\", () =>\n withStorage(async (storage) => {\n const first = await merge(storage, [upsert(\"9007199254740993\")])\n expect((await merge(storage, [upsert(\"9007199254740992\", \"stale\")])).outcome).toBe(\n \"unchanged\"\n )\n expect((await merge(storage, [upsert(\"09007199254740993\")])).outcome).toBe(\"unchanged\")\n await expect(\n merge(storage, [upsert(\"1\", \"other\", \"other\"), upsert(\"9007199254740993\", \"conflict\")])\n ).rejects.toThrow(\"conflicting content\")\n expect((await storage.getLatestVersion(dataset.id))?.versionId).toBe(\n first.version?.versionId\n )\n expect(await rows(storage)).toHaveLength(1)\n await merge(storage, [\n upsert(\"9007199254740995\", \"newest\"),\n upsert(\"9007199254740994\", \"stale\"),\n ])\n expect((await rows(storage))[0]?.name).toBe(\"newest\")\n await expect(\n merge(storage, [upsert(\"9007199254740996\", \"a\"), upsert(\"9007199254740996\", \"b\")])\n ).rejects.toThrow(\"conflicting content\")\n expect((await rows(storage))[0]?.name).toBe(\"newest\")\n }))\n\n test(\"retains absent-key deletions and protects their version boundary\", () =>\n withStorage(async (storage) => {\n const staleSession = await storage.beginMerge({ dataset })\n await staleSession.writeChanges([upsert(8)])\n const deleted = await merge(storage, [change.delete({ id: \"42\" }, { sequence: 9 })])\n expect(deleted).toMatchObject({ outcome: \"created\", version: { rowCount: 0 } })\n await expect(staleSession.commit()).rejects.toThrow(\"Optimistic\")\n await staleSession.abort()\n expect((await merge(storage, [upsert(8)])).outcome).toBe(\"unchanged\")\n expect(\n (await merge(storage, [change.delete({ id: \"42\" }, { sequence: \"9\" })])).outcome\n ).toBe(\"unchanged\")\n await expect(merge(storage, [upsert(9)])).rejects.toThrow(\"conflicting content\")\n await merge(storage, [upsert(10)])\n expect(await rows(storage)).toHaveLength(1)\n expect((await merge(storage, [change.delete({ id: \"42\" }, { sequence: 9 })])).outcome).toBe(\n \"unchanged\"\n )\n await merge(storage, [change.delete({ id: \"42\" }, { sequence: 11 })])\n expect(await rows(storage)).toEqual([])\n }))\n\n test(\"compares canonical content across JSON order and nullable representations\", () =>\n withStorage(async (storage) => {\n await merge(storage, [\n change.upsert({ id: \"42\", revision: 1, name: \"Sam\", details: { a: 1, b: 2 } }),\n ])\n expect(\n (\n await merge(storage, [\n change.upsert({ id: \"42\", revision: \"01\", name: \"Sam\", details: { b: 2, a: 1 } }),\n ])\n ).outcome\n ).toBe(\"unchanged\")\n await merge(storage, [upsert(2)])\n expect(\n (\n await merge(storage, [\n change.upsert({ id: \"42\", revision: \"2\", name: \"Sam\", details: null }),\n ])\n ).outcome\n ).toBe(\"unchanged\")\n }))\n\n test(\"validates integer ranges and delete sequences at the provider boundary\", () =>\n withStorage(async (storage) => {\n for (const revision of [\n null,\n undefined,\n 1.5,\n Number.MAX_SAFE_INTEGER + 1,\n \"9223372036854775808\",\n \"-9223372036854775809\",\n \"1e3\",\n ]) {\n await expect(\n merge(storage, [change.upsert({ id: \"42\", revision, name: \"Sam\" })])\n ).rejects.toThrow(\"sequence\")\n }\n await expect(merge(storage, [change.delete({ id: \"42\" })])).rejects.toThrow(\"sequence\")\n await merge(storage, [upsert(\"-9223372036854775808\"), upsert(\"9223372036854775807\")])\n expect((await rows(storage))[0]?.revision?.toString()).toBe(\"9223372036854775807\")\n }))\n\n test(\"normalizes timezone-aware timestamps without discarding precision\", () =>\n withStorage(async (storage) => {\n const timestamps = defineDataset(\"contract.source_timestamps\", {\n schema: [col(\"id\", \"string\"), col(\"updated\", \"timestamp\"), col(\"name\", \"string\")],\n primaryKey: \"id\",\n sequenceBy: \"updated\",\n })\n await storage.createDataset(timestamps)\n const row = (updated: unknown, name = \"Sam\") => change.upsert({ id: \"42\", updated, name })\n await merge(storage, [row(\"2026-09-09T10:00:00.123Z\")], timestamps)\n for (const updated of [\n \"2026-09-09T12:00:00.123+02:00\",\n new Date(\"2026-09-09T10:00:00.123Z\"),\n ]) {\n expect((await merge(storage, [row(updated)], timestamps)).outcome).toBe(\"unchanged\")\n }\n for (const updated of [\n \"2026-09-09T10:00:00.1234Z\",\n \"2026-09-09T10:00:00\",\n \"2026-02-30T00:00:00Z\",\n new Date(Number.NaN),\n ]) {\n await expect(merge(storage, [row(updated)], timestamps)).rejects.toThrow(\"sequence\")\n }\n await merge(\n storage,\n [change.delete({ id: \"42\" }, { sequence: \"2026-09-09T10:00:00.124Z\" })],\n timestamps\n )\n expect((await merge(storage, [row(\"2026-09-09T10:00:00.123Z\")], timestamps)).outcome).toBe(\n \"unchanged\"\n )\n }))\n\n test(\"round-trips immutable sequencing and rejects writes that bypass ordering\", () =>\n withStorage(async (storage) => {\n expect((await storage.getDataset(dataset.id))?.sequenceBy).toBe(\"revision\")\n expect(\n (await storage.listDatasets()).find((item) => item.id === dataset.id)?.sequenceBy\n ).toBe(\"revision\")\n const { sequenceBy: _, ...unsequenced } = dataset\n await expect(storage.createDataset(unsequenced)).rejects.toThrow(\"immutable\")\n await storage.createDataset({ ...unsequenced, id: \"legacy\" })\n await expect(storage.createDataset({ ...dataset, id: \"legacy\" })).rejects.toThrow(\n \"immutable\"\n )\n await expect(\n storage.createDataset({ ...dataset, id: \"invalid\", primaryKey: undefined })\n ).rejects.toThrow(\"sequenceBy\")\n await expect(\n storage.createDataset({ ...dataset, id: \"invalid\", sequenceBy: \"name\" })\n ).rejects.toThrow(\"sequenceBy\")\n await expect(storage.beginWrite({ dataset })).rejects.toThrow(\"beginMerge\")\n }))\n\n const reopen = options.reopen\n if (reopen)\n test(\"preserves source state after reopen\", async () => {\n let storage = await options.createStorage()\n try {\n await storage.createDataset(dataset)\n await merge(storage, [\n upsert(8, \"visible\", \"visible\"),\n change.delete({ id: \"42\" }, { sequence: 9 }),\n ])\n storage = await reopen(storage)\n expect((await storage.getDataset(dataset.id))?.sequenceBy).toBe(\"revision\")\n expect((await merge(storage, [upsert(8), upsert(7, \"stale\", \"visible\")])).outcome).toBe(\n \"unchanged\"\n )\n expect(await rows(storage)).toHaveLength(1)\n await merge(storage, [upsert(10)])\n expect(await rows(storage)).toHaveLength(2)\n } finally {\n await options.teardown?.(storage)\n }\n })\n })\n}\n",
|
|
23
23
|
"import { describe, expect, test } from \"bun:test\"\nimport type { FileRef } from \"../blob-storage\"\nimport { col, defineDataset } from \"../datasets\"\nimport { LakeStorageError } from \"../lake-storage/errors\"\nimport type { DatasetRow, LakeStorage } from \"../lake-storage/types\"\n\nexport type LakeStorageSchemaEvolutionCapability = \"strict\" | \"addNullableColumns\"\n\nexport interface LakeStorageContractSuiteOptions<TStorage extends LakeStorage = LakeStorage> {\n /** Factory that produces a fresh `LakeStorage` instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n /**\n * Dataset definition update policy supported by the provider. Defaults to\n * `strict`, which allows metadata-only merges but rejects schema evolution.\n */\n readonly schemaEvolution?: LakeStorageSchemaEvolutionCapability\n /**\n * Version id that is syntactically valid for the provider but should not\n * exist. Defaults to a generic id accepted by providers without format\n * restrictions.\n */\n readonly missingVersionId?: string\n}\n\nconst definitionDataset = defineDataset(\"contract.definitions.orders\", {\n schema: [col(\"orderId\", \"string\"), col(\"customerName\", \"string\")],\n description: \"Contract orders\",\n})\n\nconst reorderedDefinitionDataset = defineDataset(\"contract.definitions.orders\", {\n schema: [col(\"customerName\", \"string\"), col(\"orderId\", \"string\")],\n description: \"Contract orders\",\n})\n\nconst keyedDefinitionDataset = defineDataset(\"contract.definitions.keyed_orders\", {\n schema: [col(\"tenantId\", \"string\"), col(\"orderId\", \"string\"), col(\"customerName\", \"string\")],\n primaryKey: [\"tenantId\", \"orderId\"],\n description: \"Contract keyed orders\",\n})\n\nconst writeDataset = defineDataset(\"contract.writes.orders\", {\n schema: [col(\"orderId\", \"string\"), col(\"customerName\", \"string\")],\n})\n\nconst nullableWriteDataset = defineDataset(\"contract.writes.nullable_orders\", {\n schema: [col(\"orderId\", \"string\"), col(\"note\", \"string\", { nullable: true })],\n})\n\nconst decimalWriteDataset = defineDataset(\"contract.writes.decimals\", {\n schema: [col(\"id\", \"string\"), col(\"amount\", \"decimal\", { nullable: true })],\n})\n\nconst fileRefDataset = defineDataset(\"contract.files.documents\", {\n schema: [col(\"id\", \"string\"), col(\"attachment\", \"fileRef\", { nullable: true })],\n})\n\nconst invoiceRef: FileRef = {\n blobId: `blob_${\"a\".repeat(64)}`,\n digest: `sha256:${\"a\".repeat(64)}`,\n sizeBytes: 15,\n fileName: \"invoice.txt\",\n mediaType: \"text/plain\",\n logicalPath: \"invoices/invoice.txt\",\n}\n\n/**\n * Runs the shared `LakeStorage` contract against any provider.\n *\n * The suite covers provider-independent Lake semantics: definition\n * materialization and compatibility checks, versioned writes and reads,\n * optimistic commits, unchanged-write detection, write-session lifecycle,\n * and row validation.\n */\nexport function runLakeStorageContractSuite<TStorage extends LakeStorage>(\n label: string,\n options: LakeStorageContractSuiteOptions<TStorage>\n): void {\n const schemaEvolution = options.schemaEvolution ?? \"strict\"\n const missingVersionId = options.missingVersionId ?? \"missing-version\"\n\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n describe(\"dataset definitions\", () => {\n test(\"creates, gets, lists, and reuses dataset definitions\", async () => {\n await withStorage(async (storage) => {\n expect(await storage.getDataset(definitionDataset.id)).toBeNull()\n\n const created = await storage.createDataset(definitionDataset)\n const repeated = await storage.createDataset(definitionDataset)\n\n expect(created).toEqual(definitionDataset)\n expect(repeated).toEqual(definitionDataset)\n expect(await storage.getDataset(definitionDataset.id)).toEqual(definitionDataset)\n expect(await storage.getDataset(\"missing.dataset\")).toBeNull()\n expect(await storage.listDatasets()).toEqual([definitionDataset])\n expect(await storage.listVersions(definitionDataset.id)).toEqual([])\n })\n })\n\n test(\"round-trips keyed definitions through create, get, list, and reuse\", async () => {\n // Regression guard: omitting primaryKey from mergeDatasetDefinition makes reuse lose\n // the key and fails this contract case.\n await withStorage(async (storage) => {\n const created = await storage.createDataset(keyedDefinitionDataset)\n const repeated = await storage.createDataset(keyedDefinitionDataset)\n\n expect(created).toEqual(keyedDefinitionDataset)\n expect(repeated).toEqual(keyedDefinitionDataset)\n expect(await storage.getDataset(keyedDefinitionDataset.id)).toEqual(\n keyedDefinitionDataset\n )\n expect(await storage.listDatasets()).toEqual([keyedDefinitionDataset])\n expect(await storage.listVersions(keyedDefinitionDataset.id)).toEqual([])\n })\n })\n\n test(\"treats same-column declaration reorders as a no-op\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(definitionDataset)\n await storage.assertDatasetDefinitionsCompatible([reorderedDefinitionDataset])\n\n expect(await storage.getDataset(definitionDataset.id)).toEqual(definitionDataset)\n await expect(storage.createDataset(reorderedDefinitionDataset)).resolves.toEqual(\n definitionDataset\n )\n expect(await storage.listVersions(definitionDataset.id)).toEqual([])\n })\n })\n\n test(\"persists compatible metadata additions\", async () => {\n await withStorage(async (storage) => {\n const minimalDataset = defineDataset(\"contract.definitions.metadata\", {\n schema: [col(\"orderId\", \"string\"), col(\"orderDate\", \"date\")],\n })\n const documentedDataset = defineDataset(\"contract.definitions.metadata\", {\n schema: [col(\"orderId\", \"string\"), col(\"orderDate\", \"date\")],\n partitionBy: [\"orderDate\"],\n description: \"Contract metadata\",\n })\n\n await storage.createDataset(minimalDataset)\n await storage.assertDatasetDefinitionsCompatible([documentedDataset])\n\n expect(await storage.getDataset(minimalDataset.id)).toEqual(minimalDataset)\n await expect(storage.createDataset(documentedDataset)).resolves.toEqual(documentedDataset)\n expect(await storage.getDataset(minimalDataset.id)).toEqual(documentedDataset)\n })\n })\n\n test(\"rejects incompatible definition changes without mutating the stored definition\", async () => {\n await withStorage(async (storage) => {\n const changedDataset = defineDataset(definitionDataset.id, {\n schema: [col(\"orderId\", \"int64\"), col(\"customerName\", \"string\")],\n description: \"Contract orders\",\n })\n\n await storage.createDataset(definitionDataset)\n\n await expect(\n storage.assertDatasetDefinitionsCompatible([changedDataset])\n ).rejects.toThrow(\"changing column 'orderId' type\")\n await expect(storage.createDataset(changedDataset)).rejects.toBeInstanceOf(\n LakeStorageError\n )\n expect(await storage.getDataset(definitionDataset.id)).toEqual(definitionDataset)\n })\n })\n\n test(\"checks provider schema evolution policy\", async () => {\n await withStorage(async (storage) => {\n const initialDataset = defineDataset(\"contract.definitions.schema_evolution\", {\n schema: [col(\"invoiceId\", \"string\")],\n })\n const requestedDataset = defineDataset(\"contract.definitions.schema_evolution\", {\n schema: [col(\"currency\", \"string\", { nullable: true }), col(\"invoiceId\", \"string\")],\n })\n const storedDataset = defineDataset(\"contract.definitions.schema_evolution\", {\n schema: [col(\"invoiceId\", \"string\"), col(\"currency\", \"string\", { nullable: true })],\n })\n\n await storage.createDataset(initialDataset)\n\n if (schemaEvolution === \"strict\") {\n await expect(\n storage.assertDatasetDefinitionsCompatible([requestedDataset])\n ).rejects.toThrow(\"incompatible schema\")\n await expect(storage.createDataset(requestedDataset)).rejects.toThrow(\n \"incompatible schema\"\n )\n expect(await storage.getDataset(initialDataset.id)).toEqual(initialDataset)\n return\n }\n\n await storage.assertDatasetDefinitionsCompatible([requestedDataset])\n expect(await storage.getDataset(initialDataset.id)).toEqual(initialDataset)\n expect(await storage.listVersions(initialDataset.id)).toEqual([])\n\n await expect(storage.createDataset(requestedDataset)).resolves.toEqual(storedDataset)\n expect(await storage.getDataset(initialDataset.id)).toEqual(storedDataset)\n\n const [schemaVersion] = await storage.listVersions(initialDataset.id)\n expect(schemaVersion).toMatchObject({\n datasetId: initialDataset.id,\n mode: \"schema\",\n schema: storedDataset.schema,\n })\n })\n })\n\n test(\"keeps compatibility checks read-only for missing datasets\", async () => {\n await withStorage(async (storage) => {\n await storage.assertDatasetDefinitionsCompatible([definitionDataset])\n\n expect(await storage.getDataset(definitionDataset.id)).toBeNull()\n expect(await storage.listDatasets()).toEqual([])\n })\n })\n })\n\n describe(\"catalog state\", () => {\n test(\"reports materialized state and latest version summaries in bulk\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await write.writeRows([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n ])\n const commit = await write.commit()\n expect(commit.outcome).toBe(\"created\")\n const version = commit\n\n await storage.createDataset(definitionDataset)\n\n const state = await storage.listDatasetCatalogState([\n writeDataset.id,\n definitionDataset.id,\n \"contract.missing.dataset\",\n ])\n\n const byId = new Map(state.map((entry) => [entry.datasetId, entry]))\n\n expect(byId.get(writeDataset.id)).toMatchObject({\n datasetId: writeDataset.id,\n materialized: true,\n })\n expect(byId.get(writeDataset.id)?.latestVersion).toMatchObject({\n datasetId: writeDataset.id,\n versionId: version.versionId,\n mode: \"snapshot\",\n rowCount: 2,\n })\n\n // Created without a committed write: materialized, but no version.\n expect(byId.get(definitionDataset.id)).toEqual({\n datasetId: definitionDataset.id,\n materialized: true,\n latestVersion: null,\n })\n\n // Registered but never created.\n expect(byId.get(\"contract.missing.dataset\")).toEqual({\n datasetId: \"contract.missing.dataset\",\n materialized: false,\n latestVersion: null,\n })\n })\n })\n\n test(\"returns an empty result for an empty request\", async () => {\n await withStorage(async (storage) => {\n expect(await storage.listDatasetCatalogState([])).toEqual([])\n })\n })\n })\n\n describe(\"writes and reads\", () => {\n test(\"keeps immutable-version row order and offsets stable\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n const expected = [\n { orderId: \"ord_3\", customerName: \"Katherine\" },\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_5\", customerName: \"Margaret\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n { orderId: \"ord_4\", customerName: \"Dorothy\" },\n ]\n await write.writeRows(expected)\n const version = await write.commit()\n const pinned = { datasetId: writeDataset.id, versionId: version.versionId }\n\n await expect(collectRows(storage.readRows(pinned))).resolves.toEqual(expected)\n await expect(collectRows(storage.readRows(pinned))).resolves.toEqual(expected)\n for (const offset of [0, 2, expected.length, expected.length + 3]) {\n await expect(collectRows(storage.readRows({ ...pinned, offset }))).resolves.toEqual(\n expected.slice(offset)\n )\n }\n await expect(\n collectRows(storage.readRows({ ...pinned, columns: [\"orderId\"], offset: 1, limit: 2 }))\n ).resolves.toEqual([{ orderId: \"ord_1\" }, { orderId: \"ord_5\" }])\n })\n })\n\n test(\"rejects writes for unknown datasets\", async () => {\n await withStorage(async (storage) => {\n await expect(storage.beginWrite({ dataset: writeDataset })).rejects.toThrow(\n \"Unknown dataset\"\n )\n })\n })\n\n test(\"commits snapshot and append versions with versioned reads\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const snapshotWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"snapshot\",\n producer: { kind: \"sync\", id: \"contract-sync\", runId: \"run_1\" },\n })\n await snapshotWrite.writeRows([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n ])\n const snapshotCommit = await snapshotWrite.commit({ commitMessage: \"snapshot orders\" })\n expect(snapshotCommit.outcome).toBe(\"created\")\n const version1 = snapshotCommit\n\n expect(version1).toMatchObject({\n datasetId: writeDataset.id,\n mode: \"snapshot\",\n schema: writeDataset.schema,\n producer: { kind: \"sync\", id: \"contract-sync\", runId: \"run_1\" },\n rowCount: 2,\n })\n expect(version1.parentVersionId).toBeUndefined()\n expect(await storage.getLatestVersion(writeDataset.id)).toMatchObject({\n versionId: version1.versionId,\n })\n expect(await storage.getVersion(writeDataset.id, version1.versionId)).toMatchObject({\n datasetId: writeDataset.id,\n versionId: version1.versionId,\n mode: \"snapshot\",\n rowCount: 2,\n })\n\n await Bun.sleep(2)\n\n const appendWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"append\",\n inputs: [{ datasetId: writeDataset.id, versionId: version1.versionId }],\n })\n await appendWrite.writeRows([{ orderId: \"ord_3\", customerName: \"Katherine\" }])\n const appendCommit = await appendWrite.commit({\n expectedLatestVersionId: version1.versionId,\n })\n expect(appendCommit.outcome).toBe(\"created\")\n const version2 = appendCommit\n\n expect(version2).toMatchObject({\n datasetId: writeDataset.id,\n parentVersionId: version1.versionId,\n mode: \"append\",\n schema: writeDataset.schema,\n inputs: [{ datasetId: writeDataset.id, versionId: version1.versionId }],\n rowCount: 3,\n })\n expect(await storage.getLatestVersion(writeDataset.id)).toMatchObject({\n versionId: version2.versionId,\n })\n\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n { orderId: \"ord_3\", customerName: \"Katherine\" },\n ])\n await expect(\n collectRows(\n storage.readRows({ datasetId: writeDataset.id, versionId: version1.versionId })\n )\n ).resolves.toEqual([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n ])\n await expect(\n collectRows(\n storage.readRows({\n datasetId: writeDataset.id,\n columns: [\"orderId\"],\n limit: 2,\n })\n )\n ).resolves.toEqual([{ orderId: \"ord_1\" }, { orderId: \"ord_2\" }])\n await expect(\n collectRows(\n storage.readRows({\n datasetId: writeDataset.id,\n columns: [\"orderId\"],\n limit: 1,\n offset: 1,\n })\n )\n ).resolves.toEqual([{ orderId: \"ord_2\" }])\n await expect(\n collectRows(\n storage.readRows({\n datasetId: writeDataset.id,\n columns: [\"orderId\"],\n offset: 1,\n })\n )\n ).resolves.toEqual([{ orderId: \"ord_2\" }, { orderId: \"ord_3\" }])\n\n expect(\n (await storage.listVersions(writeDataset.id)).map((version) => version.versionId)\n ).toEqual([version2.versionId, version1.versionId])\n expect(\n (await storage.listVersions(writeDataset.id, 1)).map((version) => version.versionId)\n ).toEqual([version2.versionId])\n expect(await storage.listVersions(\"missing.dataset\")).toEqual([])\n expect(await storage.getLatestVersion(\"missing.dataset\")).toBeNull()\n expect(await storage.getVersion(writeDataset.id, missingVersionId)).toBeNull()\n })\n })\n\n test(\"creates an initial empty snapshot version\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n const version = await write.commit()\n\n expect(version).toMatchObject({\n datasetId: writeDataset.id,\n mode: \"snapshot\",\n outcome: \"created\",\n rowCount: 0,\n })\n expect(await storage.getLatestVersion(writeDataset.id)).toMatchObject({\n versionId: version.versionId,\n })\n expect(await storage.listVersions(writeDataset.id)).toHaveLength(1)\n\n const repeatedWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"snapshot\",\n })\n const repeatedVersion = await repeatedWrite.commit()\n expect(repeatedVersion.outcome).toBe(\"unchanged\")\n expect(repeatedVersion.versionId).toBe(version.versionId)\n expect(await storage.listVersions(writeDataset.id)).toHaveLength(1)\n\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([])\n })\n })\n\n test(\"guards initial and existing versions before accepting even an unchanged write\", () =>\n withStorage(async (storage) => {\n // Regression proof: treat null like undefined or move the version guard after no-op\n // detection. An old writer then succeeds after a competing version has committed.\n await storage.createDataset(writeDataset)\n const first = await storage.beginWrite({ dataset: writeDataset })\n const stale = await storage.beginWrite({ dataset: writeDataset })\n const initial = await first.commit({ expectedLatestVersionId: null })\n await expect(stale.commit({ expectedLatestVersionId: null })).rejects.toThrow(\n \"Optimistic\"\n )\n await stale.abort()\n const replacement = await storage.beginWrite({ dataset: writeDataset })\n await replacement.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n const next = await replacement.commit({ expectedLatestVersionId: initial.versionId })\n const identical = await storage.beginWrite({ dataset: writeDataset })\n await identical.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n await expect(\n identical.commit({ expectedLatestVersionId: initial.versionId })\n ).rejects.toThrow(\"Optimistic\")\n await identical.abort()\n expect((await storage.getLatestVersion(writeDataset.id))?.versionId).toBe(next.versionId)\n }))\n\n test(\"versions changed input lineage even when output rows are identical\", () =>\n withStorage(async (storage) => {\n // Regression proof: omit hasDatasetInputChanges in the provider's no-op branch.\n // The updated input reference is lost and the stale writer is no longer fenced.\n await storage.createDataset(writeDataset)\n await storage.createDataset(definitionDataset)\n const sourceWrite = await storage.beginWrite({ dataset: definitionDataset })\n const source1 = await sourceWrite.commit()\n const rows = [{ orderId: \"ord_1\", customerName: \"Ada\" }]\n const ref1 = { datasetId: definitionDataset.id, versionId: source1.versionId }\n const first = await storage.beginWrite({ dataset: writeDataset, inputs: [ref1] })\n await first.writeRows(rows)\n const initial = await first.commit({ expectedLatestVersionId: null })\n const stale = await storage.beginWrite({ dataset: writeDataset, inputs: [ref1] })\n await stale.writeRows([{ orderId: \"ord_1\", customerName: \"Stale\" }])\n const sourceUpdate = await storage.beginWrite({ dataset: definitionDataset })\n await sourceUpdate.writeRows([{ orderId: \"source\", customerName: \"Changed\" }])\n const source2 = await sourceUpdate.commit()\n const ref2 = { datasetId: definitionDataset.id, versionId: source2.versionId }\n const update = await storage.beginWrite({ dataset: writeDataset, inputs: [ref2] })\n await update.writeRows(rows)\n const newer = await update.commit({ expectedLatestVersionId: initial.versionId })\n expect(newer).toMatchObject({ outcome: \"created\", inputs: [ref2] })\n await expect(\n stale.commit({ expectedLatestVersionId: initial.versionId })\n ).rejects.toThrow(\"Optimistic\")\n await stale.abort()\n const same = await storage.beginWrite({ dataset: writeDataset, inputs: [ref2] })\n await same.writeRows(rows)\n const unchanged = await same.commit({ expectedLatestVersionId: newer.versionId })\n expect(unchanged).toMatchObject({ outcome: \"unchanged\", versionId: newer.versionId })\n expect(await collectRows(storage.readRows({ datasetId: writeDataset.id }))).toEqual(rows)\n }))\n\n test(\"creates an initial empty append version\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"append\" })\n const version = await write.commit()\n\n expect(version).toMatchObject({\n datasetId: writeDataset.id,\n mode: \"append\",\n outcome: \"created\",\n })\n expect(version.parentVersionId).toBeUndefined()\n expect(await storage.getLatestVersion(writeDataset.id)).toMatchObject({\n versionId: version.versionId,\n })\n expect(await storage.listVersions(writeDataset.id)).toHaveLength(1)\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([])\n })\n })\n\n test(\"snapshot writes replace the visible latest rows\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const firstWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await firstWrite.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n const firstVersion = await firstWrite.commit()\n\n const replacementWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"snapshot\",\n })\n await replacementWrite.writeRows([{ orderId: \"ord_9\", customerName: \"Dorothy\" }])\n const replacementVersion = await replacementWrite.commit()\n\n expect(replacementVersion.versionId).not.toBe(firstVersion.versionId)\n expect(replacementVersion.parentVersionId).toBeUndefined()\n expect(replacementVersion.rowCount).toBe(1)\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([{ orderId: \"ord_9\", customerName: \"Dorothy\" }])\n await expect(\n collectRows(\n storage.readRows({ datasetId: writeDataset.id, versionId: firstVersion.versionId })\n )\n ).resolves.toEqual([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n })\n })\n\n test(\"reuses the latest version when a snapshot commits identical content\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const seedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await seedWrite.writeRows([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Grace\" },\n ])\n const seedVersion = await seedWrite.commit()\n expect(seedVersion.outcome).toBe(\"created\")\n\n // Identical rows in a different order are the same snapshot content.\n const identicalWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"snapshot\",\n })\n await identicalWrite.writeRows([\n { orderId: \"ord_2\", customerName: \"Grace\" },\n { orderId: \"ord_1\", customerName: \"Ada\" },\n ])\n const identicalVersion = await identicalWrite.commit()\n\n expect(identicalVersion.outcome).toBe(\"unchanged\")\n expect(identicalVersion.versionId).toBe(seedVersion.versionId)\n expect(\n (await storage.listVersions(writeDataset.id)).map((version) => version.versionId)\n ).toEqual([seedVersion.versionId])\n expect(await storage.getLatestVersion(writeDataset.id)).toMatchObject({\n versionId: seedVersion.versionId,\n })\n\n await Bun.sleep(2)\n\n const changedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await changedWrite.writeRows([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_2\", customerName: \"Hopper\" },\n ])\n const changedVersion = await changedWrite.commit()\n\n expect(changedVersion.outcome).toBe(\"created\")\n expect(changedVersion.versionId).not.toBe(seedVersion.versionId)\n expect(\n (await storage.listVersions(writeDataset.id)).map((version) => version.versionId)\n ).toEqual([changedVersion.versionId, seedVersion.versionId])\n })\n })\n\n test(\"snapshot content comparison respects row multiplicities\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n const rowA = { orderId: \"ord_1\", customerName: \"Ada\" }\n const rowB = { orderId: \"ord_2\", customerName: \"Grace\" }\n\n const seedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await seedWrite.writeRows([rowA, rowA, rowB])\n const seedVersion = await seedWrite.commit()\n\n await Bun.sleep(2)\n\n // Same distinct rows and row count, but different duplicate counts:\n // this is new content, not a no-op.\n const shiftedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await shiftedWrite.writeRows([rowA, rowB, rowB])\n const shiftedVersion = await shiftedWrite.commit()\n\n expect(shiftedVersion.outcome).toBe(\"created\")\n expect(shiftedVersion.versionId).not.toBe(seedVersion.versionId)\n })\n })\n\n test(\"treats omitted and null nullable values as the same snapshot content\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(nullableWriteDataset)\n\n const seedWrite = await storage.beginWrite({\n dataset: nullableWriteDataset,\n mode: \"snapshot\",\n })\n await seedWrite.writeRows([{ orderId: \"ord_1\", note: null }])\n const seedVersion = await seedWrite.commit()\n\n const omittedWrite = await storage.beginWrite({\n dataset: nullableWriteDataset,\n mode: \"snapshot\",\n })\n await omittedWrite.writeRows([{ orderId: \"ord_1\" }])\n const omittedVersion = await omittedWrite.commit()\n\n expect(omittedVersion.outcome).toBe(\"unchanged\")\n expect(omittedVersion.versionId).toBe(seedVersion.versionId)\n })\n })\n\n test(\"reuses the latest version when an append commits zero rows\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const seedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await seedWrite.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n const seedVersion = await seedWrite.commit()\n\n const emptyAppend = await storage.beginWrite({ dataset: writeDataset, mode: \"append\" })\n const appendVersion = await emptyAppend.commit()\n\n expect(appendVersion.outcome).toBe(\"unchanged\")\n expect(appendVersion.versionId).toBe(seedVersion.versionId)\n expect(appendVersion.rowCount).toBe(1)\n expect(\n (await storage.listVersions(writeDataset.id)).map((version) => version.versionId)\n ).toEqual([seedVersion.versionId])\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n })\n })\n\n test(\"fails stale optimistic commits\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const seedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await seedWrite.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n const initialVersion = await seedWrite.commit()\n\n const delayedWrite = await storage.beginWrite({ dataset: writeDataset, mode: \"append\" })\n await delayedWrite.writeRows([{ orderId: \"ord_2\", customerName: \"Grace\" }])\n\n const competingWrite = await storage.beginWrite({\n dataset: writeDataset,\n mode: \"append\",\n })\n await competingWrite.writeRows([{ orderId: \"ord_3\", customerName: \"Katherine\" }])\n await competingWrite.commit({ expectedLatestVersionId: initialVersion.versionId })\n\n await expect(\n delayedWrite.commit({ expectedLatestVersionId: initialVersion.versionId })\n ).rejects.toThrow(\"Optimistic commit failed\")\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).resolves.toEqual([\n { orderId: \"ord_1\", customerName: \"Ada\" },\n { orderId: \"ord_3\", customerName: \"Katherine\" },\n ])\n })\n })\n\n test(\"abort closes a write session without committing rows\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await write.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n await write.abort()\n await write.abort()\n\n expect(await storage.getLatestVersion(writeDataset.id)).toBeNull()\n expect(await storage.listVersions(writeDataset.id)).toEqual([])\n await expect(\n collectRows(storage.readRows({ datasetId: writeDataset.id }))\n ).rejects.toThrow(\"No committed version found\")\n })\n })\n\n test(\"commit closes a write session and leaves abort idempotent\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n await write.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\" }])\n await write.commit()\n await write.abort()\n\n await expect(write.writeRows([])).rejects.toThrow(\"already closed\")\n })\n })\n\n test(\"rejects rows that do not match the dataset schema\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(writeDataset)\n const write = await storage.beginWrite({ dataset: writeDataset, mode: \"snapshot\" })\n\n await expect(write.writeRows([{ orderId: \"ord_1\" }])).rejects.toThrow(\n \"missing required column\"\n )\n await expect(\n write.writeRows([{ orderId: \"ord_1\", customerName: \"Ada\", unexpected: true } as never])\n ).rejects.toThrow(\"unknown column\")\n await write.abort()\n })\n })\n\n test(\"round-trips exact decimal strings in eager and streaming reads\", async () => {\n await withStorage(async (storage) => {\n const exact = \"9007199254740993.123456789\"\n await storage.createDataset(decimalWriteDataset)\n\n const write = await storage.beginWrite({ dataset: decimalWriteDataset, mode: \"snapshot\" })\n await write.writeRows([\n { id: \"amount_1\", amount: exact },\n { id: \"amount_2\", amount: null },\n ])\n await write.commit()\n\n await expect(\n collectRows(storage.readRows({ datasetId: decimalWriteDataset.id }))\n ).resolves.toEqual([\n { id: \"amount_1\", amount: exact },\n { id: \"amount_2\", amount: null },\n ])\n await expect(\n collectRows(\n storage.readRows({\n datasetId: decimalWriteDataset.id,\n columns: [\"amount\"],\n limit: 1,\n })\n )\n ).resolves.toEqual([{ amount: exact }])\n })\n })\n\n test(\"round-trips fileRef row values\", async () => {\n await withStorage(async (storage) => {\n await storage.createDataset(fileRefDataset)\n\n const write = await storage.beginWrite({ dataset: fileRefDataset, mode: \"snapshot\" })\n await write.writeRows([\n { id: \"doc_1\", attachment: invoiceRef },\n { id: \"doc_2\", attachment: null },\n ])\n await write.commit()\n\n await expect(\n collectRows(storage.readRows({ datasetId: fileRefDataset.id }))\n ).resolves.toEqual([\n { id: \"doc_1\", attachment: invoiceRef },\n { id: \"doc_2\", attachment: null },\n ])\n })\n })\n })\n })\n}\n\nasync function collectRows(rows: AsyncIterable<DatasetRow>): Promise<DatasetRow[]> {\n const result: DatasetRow[] = []\n for await (const row of rows) {\n result.push(row)\n }\n return result\n}\n",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"import type { TrustedPrimitiveRef } from \"../execution\"\nimport type { StartWebhookRunInput, Storage, WebhookRunRecord } from \"../storage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution required by a Webhook-run storage fixture. */\nexport async function createTestWebhookExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly route: string\n readonly runId: string\n readonly executionId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_webhook_execution:${input.runId}`\n const existing = await executions.getById({ projectId: input.projectId, id: executionId })\n if (existing) return executionId\n\n const primitive: TrustedPrimitiveRef = {\n kind: \"webhook\",\n id: input.route,\n runId: input.runId,\n }\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"webhook\", deliveryId: input.runId },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n return executionId\n}\n\n/** Start a Webhook run with the valid durable execution fixture required by every provider. */\nexport async function startTestWebhookRun(\n storage: Pick<Storage, \"webhookRuns\" | \"executions\">,\n input: Omit<StartWebhookRunInput, \"executionId\">\n): Promise<WebhookRunRecord> {\n if (!storage.webhookRuns) throw new Error(\"Webhook run storage is not configured for this test.\")\n const executionId = await createTestWebhookExecution(storage.executions, {\n projectId: input.projectId,\n route: input.route,\n runId: input.id,\n })\n return storage.webhookRuns.start({ ...input, executionId })\n}\n",
|
|
39
39
|
"import { describe, expect, test } from \"bun:test\"\nimport type { SixbFailure } from \"../errors/types\"\nimport type { CreateExecutionInput, Storage } from \"../storage\"\nimport type { WebhookRunFailureCode } from \"../storage/webhook-runs\"\nimport { startTestWebhookRun } from \"./webhook-execution\"\n\nexport type WebhookRunStorageContractStorage = Storage & {\n readonly webhookRuns: NonNullable<Storage[\"webhookRuns\"]>\n}\n\nexport interface WebhookRunStorageContractSuiteOptions<\n TStorage extends WebhookRunStorageContractStorage = WebhookRunStorageContractStorage,\n> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"webhook-contract\"\nconst route = \"/api/webhooks/github/events\"\nconst bodySha256 = \"0\".repeat(64)\nconst finishedAt = new Date(\"2026-06-01T12:01:00.000Z\")\nconst retryableFailure = {\n code: \"webhook.delivery_failed\",\n message: \"Webhook delivery failed.\",\n retryable: true,\n at: finishedAt.toISOString(),\n details: { connectorId: \"github\", webhookId: \"events\", runId: \"delivery-retry\" },\n} as const satisfies SixbFailure<WebhookRunFailureCode>\nconst rejectedFailure = {\n code: \"webhook.delivery_rejected\",\n message: \"Webhook delivery was rejected.\",\n retryable: false,\n at: finishedAt.toISOString(),\n} as const satisfies SixbFailure<WebhookRunFailureCode>\n\n/** Runs the durable Webhook delivery contract against one complete storage provider. */\nexport function runWebhookRunStorageContractSuite<\n TStorage extends WebhookRunStorageContractStorage,\n>(label: string, options: WebhookRunStorageContractSuiteOptions<TStorage>): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"round-trips the immutable execution and delivery identity\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"delivery-1\", \"provider-1\"))\n expect(run).toMatchObject({\n id: \"delivery-1\",\n projectId,\n executionId: \"test_webhook_execution:delivery-1\",\n connectorId: \"github\",\n webhookId: \"events\",\n status: \"running\",\n route,\n requestBodyBytes: 12,\n requestBodySha256: bodySha256,\n idempotencyKey: \"provider-1\",\n })\n await expect(\n storage.webhookRuns.getByDelivery({\n projectId,\n connectorId: \"github\",\n webhookId: \"events\",\n idempotencyKey: \"provider-1\",\n })\n ).resolves.toEqual(run)\n })\n })\n\n test(\"rejects missing or mismatched execution authority\", async () => {\n await withStorage(async (storage) => {\n const missing = runInput(\"missing-execution\")\n await expect(\n storage.webhookRuns.start({ ...missing, executionId: \"missing\" })\n ).rejects.toMatchObject({ code: \"invalid_execution\" })\n\n await storage.executions.create(disabledRequestExecution(\"wrong-execution\"))\n await expect(\n storage.webhookRuns.start({ ...missing, executionId: \"wrong-execution\" })\n ).rejects.toMatchObject({ code: \"invalid_execution\" })\n })\n })\n\n test(\"enforces one run per provider delivery key\", async () => {\n await withStorage(async (storage) => {\n await startTestWebhookRun(storage, runInput(\"delivery-first\", \"provider-shared\"))\n await expect(\n startTestWebhookRun(storage, runInput(\"delivery-second\", \"provider-shared\"))\n ).rejects.toMatchObject({ code: \"duplicate_run\" })\n })\n })\n\n test(\"restarts only retryable failures without changing execution identity\", async () => {\n await withStorage(async (storage) => {\n const started = await startTestWebhookRun(\n storage,\n runInput(\"delivery-retry\", \"provider-retry\")\n )\n await storage.webhookRuns.finish({\n projectId,\n id: started.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 503,\n error: retryableFailure,\n })\n const restarted = await storage.webhookRuns.restart({ projectId, id: started.id })\n expect(restarted).toMatchObject({\n id: started.id,\n executionId: started.executionId,\n status: \"running\",\n })\n expect(restarted.finishedAt).toBeUndefined()\n expect(restarted.responseStatus).toBeUndefined()\n expect(restarted.error).toBeUndefined()\n\n await storage.webhookRuns.finish({\n projectId,\n id: started.id,\n status: \"succeeded\",\n responseStatus: 202,\n })\n await expect(\n storage.webhookRuns.restart({ projectId, id: started.id })\n ).rejects.toMatchObject({ code: \"invalid_transition\" })\n })\n })\n\n test(\"does not reopen a terminal client rejection\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"delivery-rejected\"))\n await storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 422,\n error: rejectedFailure,\n })\n await expect(storage.webhookRuns.restart({ projectId, id: run.id })).rejects.toMatchObject({\n code: \"invalid_transition\",\n })\n })\n })\n\n test(\"persists a validated, detached failure through get and list\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"failed-run\", \"failed-key\"))\n const failedRunFailure = {\n ...retryableFailure,\n details: { ...retryableFailure.details, runId: run.id },\n }\n const mutableFailure = {\n code: \"webhook.delivery_failed\" as const,\n message: String(failedRunFailure.message),\n retryable: true as const,\n at: failedRunFailure.at,\n details: {\n connectorId: String(failedRunFailure.details.connectorId),\n webhookId: String(failedRunFailure.details.webhookId),\n runId: String(failedRunFailure.details.runId),\n },\n }\n const finished = await storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 503,\n error: mutableFailure,\n })\n\n mutableFailure.details.runId = \"mutated-after-write\"\n expect(finished.error).toEqual(failedRunFailure)\n await expect(storage.webhookRuns.getById({ projectId, id: run.id })).resolves.toMatchObject(\n {\n error: failedRunFailure,\n }\n )\n await expect(\n storage.webhookRuns.list({\n projectId,\n statuses: [\"failed\"],\n idempotencyKey: \"failed-key\",\n })\n ).resolves.toMatchObject({ runs: [{ id: run.id, error: failedRunFailure }], total: 1 })\n })\n })\n\n test(\"rejects failures outside the Webhook run contract without finishing\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"invalid-failure\"))\n await expect(\n storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n error: { ...retryableFailure, code: \"runtime.cancelled\" } as never,\n })\n ).rejects.toThrow(\"code is not allowed by this failure contract\")\n const unchanged = await storage.webhookRuns.getById({ projectId, id: run.id })\n expect(unchanged?.status).toBe(\"running\")\n expect(unchanged?.error).toBeUndefined()\n })\n })\n })\n}\n\nfunction runInput(id: string, idempotencyKey?: string) {\n return {\n id,\n projectId,\n connectorId: \"github\",\n webhookId: \"events\",\n method: \"POST\",\n route,\n requestBodyBytes: 12,\n requestBodySha256: bodySha256,\n ...(idempotencyKey === undefined ? {} : { idempotencyKey }),\n startedAt: new Date(\"2026-06-01T12:00:00.000Z\"),\n }\n}\n\nfunction disabledRequestExecution(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId: id },\n source: { type: \"http\", requestId: id },\n correlationId: `correlation:${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n"
|
|
40
40
|
],
|
|
41
|
-
"mappings": "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",
|
|
42
|
-
"debugId": "
|
|
41
|
+
"mappings": "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",
|
|
42
|
+
"debugId": "4F3927DB98A42FED64756E2164756E21",
|
|
43
43
|
"names": []
|
|
44
44
|
}
|