@sixb/core 0.1.10 → 0.1.12
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/builders/params.d.ts +1 -22
- package/dist/actions/builders/params.d.ts.map +1 -1
- package/dist/actions/index.js +29 -28
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/types/params.d.ts +10 -44
- package/dist/actions/types/params.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +3 -2
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +15 -9
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/ids.d.ts +2 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +48 -42
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/sandbox.d.ts +5 -0
- package/dist/agents/sandbox.d.ts.map +1 -0
- package/dist/agents/streams/index.js +4 -3
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.js +4 -3
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.js +8 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/index.js +5 -4
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/types.d.ts +4 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/bootstrap/index.js +50 -46
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/{chunk-17kfctj6.js → chunk-0mza4xb2.js} +2 -2
- package/dist/chunk-2c4j899j.js.map +1 -1
- package/dist/{chunk-g00bfdq6.js → chunk-2cxv584m.js} +12 -56
- package/dist/{chunk-g00bfdq6.js.map → chunk-2cxv584m.js.map} +3 -3
- package/dist/{chunk-e0d1rzef.js → chunk-2h63nrde.js} +380 -97
- package/dist/chunk-2h63nrde.js.map +20 -0
- package/dist/{chunk-rtk71jzp.js → chunk-3bnt2wna.js} +2 -2
- package/dist/{chunk-awbhdqyc.js → chunk-3ghw2t5q.js} +1 -1
- package/dist/{chunk-b19g04jk.js → chunk-3h7ctayx.js} +1 -1
- package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
- package/dist/{chunk-5hz0fnca.js → chunk-4k53sm9e.js} +6 -2
- package/dist/chunk-4k53sm9e.js.map +12 -0
- package/dist/chunk-4ph94nhd.js +81 -0
- package/dist/chunk-4ph94nhd.js.map +10 -0
- package/dist/chunk-58geavnf.js +29 -0
- package/dist/chunk-58geavnf.js.map +10 -0
- package/dist/{chunk-0y39rgsb.js → chunk-5tetw4hn.js} +1 -1
- package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
- package/dist/chunk-69266efg.js.map +12 -0
- package/dist/{chunk-g7knyczr.js → chunk-6ma8dvzc.js} +121 -53
- package/dist/chunk-6ma8dvzc.js.map +15 -0
- package/dist/{chunk-skz0hst3.js → chunk-7c2g3sz9.js} +6 -86
- package/dist/{chunk-skz0hst3.js.map → chunk-7c2g3sz9.js.map} +3 -3
- package/dist/{chunk-976rxdpx.js → chunk-7qnvhtcd.js} +93 -17
- package/dist/{chunk-976rxdpx.js.map → chunk-7qnvhtcd.js.map} +7 -6
- package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
- package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
- package/dist/chunk-91kcnbf0.js.map +10 -0
- package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
- package/dist/chunk-96yw3pwd.js.map +10 -0
- package/dist/chunk-98cw09sw.js.map +2 -2
- package/dist/{chunk-93csa55g.js → chunk-axndsymr.js} +10 -4
- package/dist/chunk-axndsymr.js.map +11 -0
- package/dist/{chunk-r7fj830t.js → chunk-b768c93y.js} +100 -29
- package/dist/chunk-b768c93y.js.map +36 -0
- package/dist/{chunk-dz5h08xv.js → chunk-bbaa1fet.js} +24 -9
- package/dist/{chunk-dz5h08xv.js.map → chunk-bbaa1fet.js.map} +4 -4
- package/dist/{chunk-7apz6hg4.js → chunk-bet1rb9h.js} +8 -4
- package/dist/chunk-bet1rb9h.js.map +10 -0
- package/dist/{chunk-358caqf5.js → chunk-bfjv1adk.js} +2 -2
- package/dist/{chunk-b0ec55a1.js → chunk-bg2bs62d.js} +5 -5
- package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
- package/dist/chunk-cd234ba4.js.map +14 -0
- package/dist/chunk-d62kjtbg.js.map +1 -1
- package/dist/chunk-dmn70ztd.js.map +2 -2
- package/dist/{chunk-28ja2cjs.js → chunk-e1f1sqba.js} +39 -53
- package/dist/{chunk-28ja2cjs.js.map → chunk-e1f1sqba.js.map} +5 -6
- package/dist/{chunk-ap0g1g74.js → chunk-eyjzgav0.js} +39 -4
- package/dist/chunk-eyjzgav0.js.map +12 -0
- package/dist/{chunk-rb1xx120.js → chunk-f06sf7rr.js} +9 -5
- package/dist/chunk-f06sf7rr.js.map +11 -0
- package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
- package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
- package/dist/{chunk-38zv5rkr.js → chunk-g2gezsg5.js} +1 -1
- package/dist/{chunk-38zv5rkr.js.map → chunk-g2gezsg5.js.map} +2 -2
- package/dist/{chunk-nmbxcaqx.js → chunk-g50nxqs5.js} +53 -66
- package/dist/chunk-g50nxqs5.js.map +18 -0
- package/dist/{chunk-1824gssz.js → chunk-gswwr35f.js} +4 -4
- package/dist/{chunk-92vk7gta.js → chunk-gzt6v1ja.js} +1 -1
- package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
- package/dist/chunk-hgqpcmyr.js.map +12 -0
- package/dist/{chunk-gqh45d2n.js → chunk-hkw8rykk.js} +2 -2
- package/dist/{chunk-f4w3yp4f.js → chunk-hzw7yv5g.js} +104 -21
- package/dist/chunk-hzw7yv5g.js.map +13 -0
- package/dist/{chunk-5c7ga8zz.js → chunk-jjwhy3rs.js} +5 -5
- package/dist/chunk-kept9cdd.js +29 -0
- package/dist/chunk-kept9cdd.js.map +10 -0
- package/dist/{chunk-ftv470j8.js → chunk-m7cx05vp.js} +247 -16
- package/dist/{chunk-ftv470j8.js.map → chunk-m7cx05vp.js.map} +14 -10
- package/dist/{chunk-qyeptdyv.js → chunk-mdnw7nj8.js} +10 -6
- package/dist/chunk-mdnw7nj8.js.map +15 -0
- package/dist/{chunk-5p1v802y.js → chunk-nzsy3xrp.js} +253 -86
- package/dist/chunk-nzsy3xrp.js.map +46 -0
- package/dist/chunk-p1683c0v.js +104 -0
- package/dist/chunk-p1683c0v.js.map +11 -0
- package/dist/chunk-p6r1ex7t.js +93 -0
- package/dist/chunk-p6r1ex7t.js.map +10 -0
- package/dist/{chunk-p5vcsw9c.js → chunk-qm535afa.js} +10 -10
- package/dist/{chunk-p5vcsw9c.js.map → chunk-qm535afa.js.map} +4 -4
- package/dist/chunk-r5zythxp.js +552 -0
- package/dist/chunk-r5zythxp.js.map +17 -0
- package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
- package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
- package/dist/{chunk-t1f4f1ve.js → chunk-sfypc7mk.js} +18 -13
- package/dist/{chunk-t1f4f1ve.js.map → chunk-sfypc7mk.js.map} +3 -3
- package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
- package/dist/chunk-t6f3tdnr.js.map +10 -0
- package/dist/{chunk-bn138h9w.js → chunk-t7dzd1tm.js} +3 -3
- package/dist/{chunk-pr2h4bv4.js → chunk-tg4g4zh0.js} +3 -3
- package/dist/chunk-vpxss818.js +56 -0
- package/dist/chunk-vpxss818.js.map +10 -0
- package/dist/{chunk-ms2tmn1k.js → chunk-vsg0g7h9.js} +53 -57
- package/dist/chunk-vsg0g7h9.js.map +17 -0
- package/dist/{chunk-8vj0rjgs.js → chunk-wjffn5m4.js} +1 -1
- package/dist/{chunk-nt99sxd6.js → chunk-x9tmx3fc.js} +18 -24
- package/dist/chunk-x9tmx3fc.js.map +14 -0
- package/dist/{chunk-agbbygvh.js → chunk-xn686q2e.js} +8 -8
- package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
- package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
- package/dist/{chunk-v2vcg0w6.js → chunk-xtfryrfb.js} +2 -2
- package/dist/chunk-y0v18c2j.js +363 -0
- package/dist/chunk-y0v18c2j.js.map +14 -0
- package/dist/{chunk-72w2pxk7.js → chunk-y1ahv8b7.js} +11 -3
- package/dist/{chunk-72w2pxk7.js.map → chunk-y1ahv8b7.js.map} +3 -3
- package/dist/chunk-y3ev53cq.js +84 -0
- package/dist/chunk-y3ev53cq.js.map +10 -0
- package/dist/{chunk-p6a4npdx.js → chunk-ybhz3j9g.js} +362 -60
- package/dist/chunk-ybhz3j9g.js.map +63 -0
- package/dist/{chunk-z30bv4ga.js → chunk-yxb4c62x.js} +3 -2
- package/dist/{chunk-z30bv4ga.js.map → chunk-yxb4c62x.js.map} +3 -3
- package/dist/chunk-z3y5kg1x.js +14 -0
- package/dist/chunk-z3y5kg1x.js.map +10 -0
- package/dist/connectors/connections/command-context.d.ts +2 -0
- package/dist/connectors/connections/command-context.d.ts.map +1 -1
- package/dist/connectors/connections/contracts.d.ts +1 -1
- package/dist/connectors/connections/contracts.d.ts.map +1 -1
- package/dist/connectors/connections/execution.d.ts +1 -0
- package/dist/connectors/connections/execution.d.ts.map +1 -1
- package/dist/connectors/connections/runs.d.ts +1 -0
- package/dist/connectors/connections/runs.d.ts.map +1 -1
- package/dist/connectors/connections/service.d.ts +2 -0
- package/dist/connectors/connections/service.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts +4 -0
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +5 -4
- package/dist/datasets/write.js.map +1 -1
- package/dist/error-reporting/capability.d.ts +3 -2
- package/dist/error-reporting/capability.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +5 -4
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/error-reporting/reports.d.ts +10 -0
- package/dist/error-reporting/reports.d.ts.map +1 -1
- package/dist/error-reporting/types.d.ts +10 -2
- package/dist/error-reporting/types.d.ts.map +1 -1
- package/dist/errors/catalog.d.ts +12 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/failure-message.d.ts +8 -0
- package/dist/errors/failure-message.d.ts.map +1 -0
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +3 -2
- package/dist/errors/internal.js.map +1 -1
- package/dist/events/index.js +5 -4
- package/dist/events/index.js.map +1 -1
- package/dist/events/outbox-dispatcher.d.ts +2 -2
- package/dist/events/outbox-dispatcher.d.ts.map +1 -1
- package/dist/execution/agent.js +44 -41
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +3 -0
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/kernel-operation.d.ts +4 -0
- package/dist/execution/kernel-operation.d.ts.map +1 -0
- package/dist/execution/primitive.js +44 -41
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +45 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/execution/types.d.ts +6 -0
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -59
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.js +5 -4
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +2 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -1
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/errors.d.ts +1 -1
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -0
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +3 -3
- package/dist/materialization/model.d.ts +2 -0
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materialization/vectors.d.ts +19 -0
- package/dist/materialization/vectors.d.ts.map +1 -0
- package/dist/materializer/context.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/vector-authority.d.ts +6 -0
- package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
- package/dist/materializer/edits/vectors.d.ts +6 -0
- package/dist/materializer/edits/vectors.d.ts.map +1 -0
- package/dist/materializer/effective/validate.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +7 -0
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
- package/dist/materializer/effective/vectors.d.ts +6 -0
- package/dist/materializer/effective/vectors.d.ts.map +1 -0
- package/dist/materializer/execution/work-executor.d.ts +2 -1
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/index.js +26 -25
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/models/catalog-index.d.ts +15 -0
- package/dist/models/catalog-index.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +27 -6
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/catalog.d.ts +12 -0
- package/dist/models/decision/catalog.d.ts.map +1 -0
- package/dist/models/decision/errors.d.ts +7 -0
- package/dist/models/decision/errors.d.ts.map +1 -0
- package/dist/models/decision/output.d.ts +50 -0
- package/dist/models/decision/output.d.ts.map +1 -0
- package/dist/models/decision/questions.d.ts +14 -0
- package/dist/models/decision/questions.d.ts.map +1 -0
- package/dist/models/decision/runtime.d.ts +7 -0
- package/dist/models/decision/runtime.d.ts.map +1 -0
- package/dist/models/decision/types.d.ts +92 -0
- package/dist/models/decision/types.d.ts.map +1 -0
- package/dist/models/decision/validation.d.ts +7 -0
- package/dist/models/decision/validation.d.ts.map +1 -0
- package/dist/models/definitions.d.ts +8 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/embedding-model.d.ts +60 -0
- package/dist/models/embedding-model.d.ts.map +1 -0
- package/dist/models/execution/binding.d.ts +2 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/embedding.d.ts +5 -0
- package/dist/models/execution/embedding.d.ts.map +1 -0
- package/dist/models/execution/index.js +29 -26
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +5 -1
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/session.d.ts +21 -0
- package/dist/models/execution/session.d.ts.map +1 -0
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +2 -0
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/index.d.ts +9 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +17 -7
- package/dist/models/index.js.map +1 -1
- package/dist/models/pricing.d.ts +3 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +29 -28
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/executor.d.ts +3 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -0
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +34 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +6 -2
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts +5 -0
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +2 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/vectors/handle.d.ts +4 -0
- package/dist/objects/vectors/handle.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-batch.d.ts +6 -0
- package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-generate.d.ts +11 -0
- package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
- package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-shared.d.ts +17 -0
- package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-single.d.ts +4 -0
- package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
- package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
- package/dist/objects/vectors/indexing.d.ts +7 -0
- package/dist/objects/vectors/indexing.d.ts.map +1 -0
- package/dist/objects/vectors/profile.d.ts +13 -0
- package/dist/objects/vectors/profile.d.ts.map +1 -0
- package/dist/objects/vectors/query.d.ts +5 -0
- package/dist/objects/vectors/query.d.ts.map +1 -0
- package/dist/objects/vectors/resolve-query.d.ts +6 -0
- package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
- package/dist/objects/vectors/types.d.ts +11 -0
- package/dist/objects/vectors/types.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +2 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +5 -5
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +5 -4
- package/dist/ontology/internal.js.map +1 -1
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +8 -9
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/definition.d.ts +3 -0
- package/dist/ontology/validation/definition.d.ts.map +1 -0
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/ontology/vector-profiles.d.ts +4 -0
- package/dist/ontology/vector-profiles.d.ts.map +1 -0
- package/dist/pipelines/index.js +28 -27
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +24 -23
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +2 -1
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.d.ts +1 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +5 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +4 -3
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +9 -6
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +3 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +47 -1
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +9 -4
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +15 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/auth.d.ts +16 -0
- package/dist/sandboxes/auth.d.ts.map +1 -0
- package/dist/sandboxes/config.d.ts +5 -0
- package/dist/sandboxes/config.d.ts.map +1 -0
- package/dist/sandboxes/configuration.d.ts +41 -0
- package/dist/sandboxes/configuration.d.ts.map +1 -0
- package/dist/sandboxes/environment.d.ts +13 -0
- package/dist/sandboxes/environment.d.ts.map +1 -0
- package/dist/sandboxes/errors.d.ts +1 -1
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +6 -1
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +16 -3
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -3
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/shared/params/builders.d.ts +25 -0
- package/dist/shared/params/builders.d.ts.map +1 -0
- package/dist/shared/params/types.d.ts +47 -0
- package/dist/shared/params/types.d.ts.map +1 -0
- package/dist/shared/params/validation.d.ts +15 -0
- package/dist/shared/params/validation.d.ts.map +1 -0
- package/dist/shares/internal.js +23 -22
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +4 -3
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/agents/in-memory.d.ts +2 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +1 -1
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +5 -1
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +8 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +49 -0
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +1 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +2 -2
- package/dist/storage/ai-cost/types.d.ts +14 -2
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +4 -3
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/connector-connections/in-memory.d.ts +1 -0
- package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/runs.d.ts +1 -0
- package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/shared.d.ts +1 -0
- package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.d.ts +1 -0
- package/dist/storage/connector-connections/provider.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +12 -17
- package/dist/storage/connector-connections/provider.js.map +6 -6
- package/dist/storage/connector-connections/types.d.ts +3 -1
- package/dist/storage/connector-connections/types.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +3 -3
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +13 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +3 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/index.d.ts +5 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +25 -22
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +2 -2
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +7 -0
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +2 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -0
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
- package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
- package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -0
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +1 -0
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +2 -2
- package/dist/storage/ontology/vector-indexing.d.ts +94 -0
- package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
- package/dist/storage/ontology/vectors.d.ts +56 -0
- package/dist/storage/ontology/vectors.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/provider.js +4 -3
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +9 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +29 -28
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.js +488 -81
- package/dist/testing/index.js.map +10 -10
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +24 -23
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +3 -2
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +47 -43
- package/dist/workflows/index.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/builders/params.ts +1 -48
- package/src/actions/types/params.ts +14 -74
- package/src/actions/validation.ts +7 -84
- package/src/agents/errors.ts +3 -0
- package/src/agents/execution.ts +67 -15
- package/src/agents/ids.ts +8 -0
- package/src/agents/index.ts +1 -0
- package/src/agents/model-loop.ts +7 -0
- package/src/agents/request.ts +11 -0
- package/src/agents/sandbox.ts +44 -0
- package/src/agents/validation.ts +2 -108
- package/src/blob-storage/types.ts +4 -1
- package/src/connectors/connections/command-context.ts +21 -4
- package/src/connectors/connections/contracts.ts +4 -1
- package/src/connectors/connections/execution.ts +3 -0
- package/src/connectors/connections/runs.ts +38 -1
- package/src/connectors/connections/service.ts +6 -0
- package/src/datasets/validation.ts +40 -11
- package/src/datasets/write.ts +8 -11
- package/src/error-reporting/capability.ts +11 -0
- package/src/error-reporting/reports.ts +23 -0
- package/src/error-reporting/types.ts +12 -1
- package/src/errors/catalog.ts +12 -0
- package/src/errors/failure-message.ts +15 -0
- package/src/errors/internal.ts +57 -25
- package/src/events/outbox-dispatcher.ts +20 -26
- package/src/execution/authorization.ts +12 -5
- package/src/execution/authorized-object-reader.ts +37 -2
- package/src/execution/kernel-operation.ts +27 -0
- package/src/execution/scopes.ts +2 -0
- package/src/execution/types.ts +4 -4
- package/src/index.ts +60 -1
- package/src/lake-storage/in-memory.ts +7 -3
- package/src/lake-storage/types.ts +2 -0
- package/src/maintenance/ontology-maintenance.ts +6 -2
- package/src/maintenance/types.ts +1 -1
- package/src/materialization/errors.ts +2 -2
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +2 -0
- package/src/materialization/vectors.ts +18 -0
- package/src/materializer/README.md +15 -1
- package/src/materializer/context.ts +10 -0
- package/src/materializer/edits/commit.ts +8 -1
- package/src/materializer/edits/vector-authority.ts +108 -0
- package/src/materializer/edits/vectors.ts +100 -0
- package/src/materializer/effective/validate.ts +10 -3
- package/src/materializer/effective/vector-indexing.ts +84 -0
- package/src/materializer/effective/vectors.ts +47 -0
- package/src/materializer/execution/work-executor.ts +11 -3
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/shared/normalize.ts +11 -0
- package/src/materializer/telemetry/append.ts +1 -1
- package/src/models/catalog-index.ts +38 -0
- package/src/models/catalog.ts +66 -38
- package/src/models/decision/catalog.ts +32 -0
- package/src/models/decision/errors.ts +18 -0
- package/src/models/decision/output.ts +101 -0
- package/src/models/decision/questions.ts +29 -0
- package/src/models/decision/runtime.ts +188 -0
- package/src/models/decision/types.ts +109 -0
- package/src/models/decision/validation.ts +335 -0
- package/src/models/definitions.ts +20 -1
- package/src/models/embedding-model.ts +129 -0
- package/src/models/execution/README.md +63 -0
- package/src/models/execution/binding.ts +2 -0
- package/src/models/execution/embedding.ts +133 -0
- package/src/models/execution/model-call-recorder.ts +42 -30
- package/src/models/execution/session.ts +81 -0
- package/src/models/execution.ts +10 -52
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +37 -0
- package/src/models/pricing.ts +7 -4
- package/src/objects/authorized-ontology-view.ts +12 -8
- package/src/objects/execution.ts +2 -0
- package/src/objects/query/executor.ts +13 -4
- package/src/objects/query/explain.ts +7 -2
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +6 -2
- package/src/objects/query/normalize.ts +5 -1
- package/src/objects/query/validate.ts +74 -73
- package/src/objects/sdk/object-handle.ts +3 -0
- package/src/objects/sdk/object-set.ts +1 -0
- package/src/objects/sdk/query-builder.ts +9 -3
- package/src/objects/sdk/query-executor.ts +2 -1
- package/src/objects/sdk/runtime-query-executor.ts +6 -2
- package/src/objects/vectors/README.md +59 -0
- package/src/objects/vectors/handle.ts +91 -0
- package/src/objects/vectors/indexing-batch.ts +163 -0
- package/src/objects/vectors/indexing-generate.ts +184 -0
- package/src/objects/vectors/indexing-runtime.ts +17 -0
- package/src/objects/vectors/indexing-shared.ts +188 -0
- package/src/objects/vectors/indexing-single.ts +51 -0
- package/src/objects/vectors/indexing-store-batch.ts +62 -0
- package/src/objects/vectors/indexing.ts +23 -0
- package/src/objects/vectors/profile.ts +64 -0
- package/src/objects/vectors/query.ts +16 -0
- package/src/objects/vectors/resolve-query.ts +89 -0
- package/src/objects/vectors/types.ts +10 -0
- package/src/ontology/index.ts +2 -0
- package/src/ontology/registry.ts +8 -0
- package/src/ontology/types.ts +9 -9
- package/src/ontology/validation/definition.ts +104 -0
- package/src/ontology/validation/properties.ts +14 -4
- package/src/ontology/validation/query.ts +34 -51
- package/src/ontology/validation/schema.ts +85 -23
- package/src/ontology/vector-profiles.ts +35 -0
- package/src/queues/in-memory.ts +5 -0
- package/src/queues/index.ts +1 -0
- package/src/queues/types.ts +10 -0
- package/src/runtime/create.ts +7 -6
- package/src/runtime/host.ts +42 -6
- package/src/runtime/internal.ts +3 -0
- package/src/runtime/resolve-definitions.ts +19 -1
- package/src/runtime/sixb.ts +27 -9
- package/src/runtime/types.ts +16 -4
- package/src/sandboxes/README.md +41 -0
- package/src/sandboxes/auth.ts +17 -0
- package/src/sandboxes/config.ts +37 -0
- package/src/sandboxes/configuration.ts +268 -0
- package/src/sandboxes/environment.ts +107 -0
- package/src/sandboxes/errors.ts +1 -1
- package/src/sandboxes/index.ts +15 -0
- package/src/sandboxes/sandbox.ts +38 -3
- package/src/shared/params/builders.ts +50 -0
- package/src/shared/params/types.ts +84 -0
- package/src/shared/params/validation.ts +114 -0
- package/src/storage/agents/in-memory.ts +25 -1
- package/src/storage/agents/index.ts +3 -0
- package/src/storage/agents/provider.ts +105 -0
- package/src/storage/agents/types.ts +54 -0
- package/src/storage/ai-cost/analytics.ts +59 -21
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/types.ts +19 -2
- package/src/storage/connector-connections/in-memory.ts +16 -18
- package/src/storage/connector-connections/provider/connections.ts +1 -15
- package/src/storage/connector-connections/provider/runs.ts +6 -0
- package/src/storage/connector-connections/provider/shared.ts +2 -3
- package/src/storage/connector-connections/provider.ts +6 -0
- package/src/storage/connector-connections/types.ts +5 -1
- package/src/storage/executions/provider.ts +24 -12
- package/src/storage/executions/types.ts +1 -0
- package/src/storage/executions/validation.ts +7 -3
- package/src/storage/index.ts +15 -1
- package/src/storage/objects/in-memory/query.ts +25 -11
- package/src/storage/objects/in-memory/read-scope.ts +9 -2
- package/src/storage/objects/in-memory/read-source.ts +5 -0
- package/src/storage/objects/in-memory/selected-reader.ts +5 -1
- package/src/storage/objects/in-memory/storage.ts +19 -1
- package/src/storage/objects/types.ts +2 -0
- package/src/storage/ontology/commits.ts +1 -0
- package/src/storage/ontology/in-memory/index.ts +20 -0
- package/src/storage/ontology/in-memory/materializations.ts +13 -0
- package/src/storage/ontology/in-memory/shared-state.ts +19 -3
- package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
- package/src/storage/ontology/in-memory/vectors.ts +73 -0
- package/src/storage/ontology/index.ts +14 -0
- package/src/storage/ontology/outbox.ts +1 -0
- package/src/storage/ontology/vector-indexing.ts +98 -0
- package/src/storage/ontology/vectors.ts +48 -0
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/types.ts +3 -0
- package/src/testing/agent-storage-contract.ts +246 -0
- package/src/testing/ai-cost-storage-contract.ts +134 -0
- package/src/testing/connector-connection-storage-contract.ts +11 -11
- package/src/testing/lake-storage-contract.ts +29 -0
- package/src/testing/object-query-contract.ts +41 -25
- package/src/testing/object-read-scope-contract.ts +1 -5
- package/src/testing/ontology-storage-contract.ts +8 -3
- package/src/testing/queues-contract.ts +31 -0
- package/src/workflows/failure.ts +10 -4
- package/src/workflows/validation.ts +2 -2
- package/dist/chunk-5hz0fnca.js.map +0 -12
- package/dist/chunk-5p1v802y.js.map +0 -44
- package/dist/chunk-7apz6hg4.js.map +0 -10
- package/dist/chunk-7bs40fe1.js.map +0 -12
- package/dist/chunk-860dwwy0.js.map +0 -14
- package/dist/chunk-93csa55g.js.map +0 -11
- package/dist/chunk-aa6z4a19.js.map +0 -12
- package/dist/chunk-ap0g1g74.js.map +0 -11
- package/dist/chunk-e0d1rzef.js.map +0 -15
- package/dist/chunk-f0rwz2vh.js.map +0 -11
- package/dist/chunk-f4w3yp4f.js.map +0 -12
- package/dist/chunk-g7knyczr.js.map +0 -14
- package/dist/chunk-mrp7k0pw.js.map +0 -10
- package/dist/chunk-ms2tmn1k.js.map +0 -17
- package/dist/chunk-nmbxcaqx.js.map +0 -19
- package/dist/chunk-nt99sxd6.js.map +0 -14
- package/dist/chunk-p6a4npdx.js.map +0 -58
- package/dist/chunk-qyeptdyv.js.map +0 -15
- package/dist/chunk-r7fj830t.js.map +0 -36
- package/dist/chunk-rb1xx120.js.map +0 -11
- package/dist/chunk-yv79ncbv.js.map +0 -10
- package/dist/chunk-z3y411fq.js +0 -99
- package/dist/chunk-z3y411fq.js.map +0 -11
- /package/dist/{chunk-17kfctj6.js.map → chunk-0mza4xb2.js.map} +0 -0
- /package/dist/{chunk-rtk71jzp.js.map → chunk-3bnt2wna.js.map} +0 -0
- /package/dist/{chunk-awbhdqyc.js.map → chunk-3ghw2t5q.js.map} +0 -0
- /package/dist/{chunk-b19g04jk.js.map → chunk-3h7ctayx.js.map} +0 -0
- /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
- /package/dist/{chunk-0y39rgsb.js.map → chunk-5tetw4hn.js.map} +0 -0
- /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
- /package/dist/{chunk-358caqf5.js.map → chunk-bfjv1adk.js.map} +0 -0
- /package/dist/{chunk-b0ec55a1.js.map → chunk-bg2bs62d.js.map} +0 -0
- /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
- /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
- /package/dist/{chunk-1824gssz.js.map → chunk-gswwr35f.js.map} +0 -0
- /package/dist/{chunk-92vk7gta.js.map → chunk-gzt6v1ja.js.map} +0 -0
- /package/dist/{chunk-gqh45d2n.js.map → chunk-hkw8rykk.js.map} +0 -0
- /package/dist/{chunk-5c7ga8zz.js.map → chunk-jjwhy3rs.js.map} +0 -0
- /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
- /package/dist/{chunk-653vwrzr.js.map → chunk-rdghfsss.js.map} +0 -0
- /package/dist/{chunk-bn138h9w.js.map → chunk-t7dzd1tm.js.map} +0 -0
- /package/dist/{chunk-pr2h4bv4.js.map → chunk-tg4g4zh0.js.map} +0 -0
- /package/dist/{chunk-8vj0rjgs.js.map → chunk-wjffn5m4.js.map} +0 -0
- /package/dist/{chunk-agbbygvh.js.map → chunk-xn686q2e.js.map} +0 -0
- /package/dist/{chunk-v2vcg0w6.js.map → chunk-xtfryrfb.js.map} +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { isPlainRecord, type JsonValue } from "../../json"
|
|
2
|
+
import type { SchemaOrRef, ValueType } from "../../ontology"
|
|
3
|
+
import { OntologyValidationError } from "../../ontology/errors"
|
|
4
|
+
import { validateSchemaOrRefValue } from "../../ontology/refs"
|
|
5
|
+
import type { Schema } from "../../ontology/types"
|
|
6
|
+
import { coerceSchemaValueToTyped, normalizeSchemaValue } from "../../ontology/validation"
|
|
7
|
+
import type { ParamsConfig } from "./types"
|
|
8
|
+
|
|
9
|
+
export interface ParamsOwner {
|
|
10
|
+
/** Lowercase singular name used in validation errors, for example `action` or `agent`. */
|
|
11
|
+
readonly kind: string
|
|
12
|
+
readonly id: string
|
|
13
|
+
/** Stable value path passed to ontology validation. Defaults to `id`. */
|
|
14
|
+
readonly path?: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Validate declarative params and normalize them to their durable JSON representation. */
|
|
18
|
+
export function normalizeParams(
|
|
19
|
+
valueTypesById: ReadonlyMap<string, ValueType>,
|
|
20
|
+
paramsConfig: ParamsConfig,
|
|
21
|
+
params: Record<string, unknown>,
|
|
22
|
+
owner: ParamsOwner
|
|
23
|
+
): Record<string, JsonValue> {
|
|
24
|
+
if (!isPlainRecord(params)) {
|
|
25
|
+
throw new OntologyValidationError(`[Sixb] ${capitalize(owner.kind)} params must be an object.`)
|
|
26
|
+
}
|
|
27
|
+
const knownParamIds = new Set(Object.keys(paramsConfig))
|
|
28
|
+
const normalized: [string, JsonValue][] = []
|
|
29
|
+
|
|
30
|
+
for (const paramId of Object.keys(params)) {
|
|
31
|
+
if (!knownParamIds.has(paramId)) {
|
|
32
|
+
throw new OntologyValidationError(
|
|
33
|
+
`Unknown param '${paramId}' for ${owner.kind} '${owner.id}'`
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
for (const [paramId, paramDef] of Object.entries(paramsConfig)) {
|
|
39
|
+
const value = Object.hasOwn(params, paramId) ? params[paramId] : undefined
|
|
40
|
+
|
|
41
|
+
if (value === undefined) {
|
|
42
|
+
if (paramDef.required) {
|
|
43
|
+
throw new OntologyValidationError(
|
|
44
|
+
`Missing required param '${paramId}' for ${owner.kind} '${owner.id}'`
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const path = `${owner.path ?? owner.id}.${paramId}`
|
|
51
|
+
if (value === null) {
|
|
52
|
+
if (!paramDef.nullable) {
|
|
53
|
+
throw new OntologyValidationError(
|
|
54
|
+
`[Sixb] ${capitalize(owner.kind)} param ${path} cannot be null`
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
normalized.push([paramId, null])
|
|
58
|
+
continue
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
validateSchemaOrRefValue(paramDef.schema, value, path, valueTypesById)
|
|
62
|
+
normalized.push([
|
|
63
|
+
paramId,
|
|
64
|
+
normalizeSchemaOrRefValue(paramDef.schema, value, path, valueTypesById),
|
|
65
|
+
])
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return Object.fromEntries(normalized)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Re-hydrate normalized storage values for typed runtime consumers. */
|
|
72
|
+
export function coerceParamsToTyped(
|
|
73
|
+
paramsConfig: ParamsConfig,
|
|
74
|
+
params: Record<string, unknown>,
|
|
75
|
+
valueTypesById: ReadonlyMap<string, ValueType>
|
|
76
|
+
): Record<string, unknown> {
|
|
77
|
+
const coerced: Record<string, unknown> = { ...params }
|
|
78
|
+
|
|
79
|
+
for (const [paramId, paramDef] of Object.entries(paramsConfig)) {
|
|
80
|
+
if (!Object.hasOwn(params, paramId)) continue
|
|
81
|
+
const value = params[paramId]
|
|
82
|
+
if (value === undefined) continue
|
|
83
|
+
|
|
84
|
+
const schema = paramDef.schema
|
|
85
|
+
if (typeof schema === "object" && schema !== null && schema.type === "objectRef") {
|
|
86
|
+
continue
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
coerced[paramId] = coerceSchemaValueToTyped(schema as Schema, value, valueTypesById)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return coerced
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function normalizeSchemaOrRefValue(
|
|
96
|
+
schema: SchemaOrRef,
|
|
97
|
+
value: unknown,
|
|
98
|
+
path: string,
|
|
99
|
+
valueTypesById: ReadonlyMap<string, ValueType>
|
|
100
|
+
): JsonValue {
|
|
101
|
+
if (typeof schema === "object" && schema !== null && schema.type === "objectRef") {
|
|
102
|
+
const refValue = value as { objectTypeId: string; primaryId: string }
|
|
103
|
+
return {
|
|
104
|
+
objectTypeId: refValue.objectTypeId,
|
|
105
|
+
primaryId: refValue.primaryId,
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return normalizeSchemaValue(schema as Schema, value, path, valueTypesById)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function capitalize(value: string): string {
|
|
113
|
+
return value.length === 0 ? value : `${value[0]?.toUpperCase()}${value.slice(1)}`
|
|
114
|
+
}
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
assertCreateAgentContextCheckpointInput,
|
|
15
15
|
assertCreateSubagentRunInput,
|
|
16
16
|
assertSubagentRunResult,
|
|
17
|
+
snapshotAgentThreadSandboxParams,
|
|
17
18
|
subagentRunMatchesCreateInput,
|
|
19
|
+
transitionAgentThreadSandbox,
|
|
18
20
|
} from "./provider"
|
|
19
21
|
import type {
|
|
20
22
|
AgentContextCheckpointRecord,
|
|
@@ -26,6 +28,7 @@ import type {
|
|
|
26
28
|
AgentRunStore,
|
|
27
29
|
AgentStorage,
|
|
28
30
|
AgentThreadRecord,
|
|
31
|
+
AgentThreadSandboxState,
|
|
29
32
|
AgentThreadStore,
|
|
30
33
|
AppendAgentMessageInput,
|
|
31
34
|
ConfirmAgentRunExecutionOwnershipInput,
|
|
@@ -46,6 +49,7 @@ import type {
|
|
|
46
49
|
ReclaimAgentRunInput,
|
|
47
50
|
StartAgentRunInput,
|
|
48
51
|
SubagentRunRecord,
|
|
52
|
+
TransitionAgentThreadSandboxInput,
|
|
49
53
|
} from "./types"
|
|
50
54
|
import { AGENT_RUN_FAILURE_CODES } from "./types"
|
|
51
55
|
|
|
@@ -56,7 +60,7 @@ function normalizeFailure(
|
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
function key(projectId: string, id: string): string {
|
|
59
|
-
return
|
|
63
|
+
return JSON.stringify([projectId, id])
|
|
60
64
|
}
|
|
61
65
|
|
|
62
66
|
function clone<T>(value: T): T {
|
|
@@ -118,7 +122,26 @@ export interface InMemoryAgentStorageSnapshot {
|
|
|
118
122
|
class InMemoryAgentThreadStore implements AgentThreadStore {
|
|
119
123
|
constructor(private readonly state: AgentStoreState) {}
|
|
120
124
|
|
|
125
|
+
async transitionSandbox(
|
|
126
|
+
input: TransitionAgentThreadSandboxInput
|
|
127
|
+
): Promise<AgentThreadSandboxState> {
|
|
128
|
+
const threadKey = key(input.projectId, input.id)
|
|
129
|
+
const thread = this.state.threads.get(threadKey) ?? null
|
|
130
|
+
const run =
|
|
131
|
+
input.action === "recreate"
|
|
132
|
+
? null
|
|
133
|
+
: (this.state.runs.get(key(input.projectId, input.runId)) ?? null)
|
|
134
|
+
const sandboxState = transitionAgentThreadSandbox(thread, run, input)
|
|
135
|
+
if (!thread) throw new AgentStorageError("thread_not_found", "[Sixb] Thread not found.")
|
|
136
|
+
this.state.threads.set(threadKey, { ...thread, sandboxState: clone(sandboxState) })
|
|
137
|
+
return clone(sandboxState)
|
|
138
|
+
}
|
|
139
|
+
|
|
121
140
|
async create(input: CreateAgentThreadInput): Promise<AgentThreadRecord> {
|
|
141
|
+
const sandboxParams =
|
|
142
|
+
input.sandboxParams === undefined
|
|
143
|
+
? undefined
|
|
144
|
+
: snapshotAgentThreadSandboxParams(input.sandboxParams)
|
|
122
145
|
const threadKey = key(input.projectId, input.id)
|
|
123
146
|
if (this.state.threads.has(threadKey)) {
|
|
124
147
|
throw new AgentStorageError(
|
|
@@ -132,6 +155,7 @@ class InMemoryAgentThreadStore implements AgentThreadStore {
|
|
|
132
155
|
id: input.id,
|
|
133
156
|
projectId: input.projectId,
|
|
134
157
|
ownerPrincipal: clone(input.ownerPrincipal),
|
|
158
|
+
...(sandboxParams === undefined ? {} : { sandboxParams }),
|
|
135
159
|
...(input.title === undefined ? {} : { title: input.title }),
|
|
136
160
|
status: input.status ?? "active",
|
|
137
161
|
activeRunId: null,
|
|
@@ -22,6 +22,8 @@ export type {
|
|
|
22
22
|
AgentRunStore,
|
|
23
23
|
AgentStorage,
|
|
24
24
|
AgentThreadRecord,
|
|
25
|
+
AgentThreadSandboxParams,
|
|
26
|
+
AgentThreadSandboxState,
|
|
25
27
|
AgentThreadStatus,
|
|
26
28
|
AgentThreadStore,
|
|
27
29
|
AppendAgentMessageInput,
|
|
@@ -46,6 +48,7 @@ export type {
|
|
|
46
48
|
SubagentRunRecord,
|
|
47
49
|
SubagentRunResult,
|
|
48
50
|
SubagentRunSpec,
|
|
51
|
+
TransitionAgentThreadSandboxInput,
|
|
49
52
|
} from "./types"
|
|
50
53
|
export {
|
|
51
54
|
AGENT_RUN_DIAGNOSTIC_CODES,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isDeepStrictEqual } from "node:util"
|
|
2
2
|
import { AGENT_REASONING_LEVELS } from "../../agents/types"
|
|
3
3
|
import { isFileRef } from "../../blob-storage"
|
|
4
|
+
import { isJsonObject, isPlainRecord } from "../../json"
|
|
4
5
|
import { isModelReasoning } from "../../models/language-model"
|
|
5
6
|
import type { ExecutionRecord, ExecutionStorage } from "../executions"
|
|
6
7
|
import { findAgentRunExecution } from "../executions/run-link"
|
|
@@ -10,13 +11,117 @@ import type {
|
|
|
10
11
|
AgentMessageRecord,
|
|
11
12
|
AgentRunRecord,
|
|
12
13
|
AgentThreadRecord,
|
|
14
|
+
AgentThreadSandboxParams,
|
|
15
|
+
AgentThreadSandboxState,
|
|
13
16
|
ConversationAgentRunSpec,
|
|
14
17
|
CreateAgentContextCheckpointInput,
|
|
15
18
|
CreateSubagentRunInput,
|
|
16
19
|
SubagentRunRecord,
|
|
17
20
|
SubagentRunResult,
|
|
21
|
+
TransitionAgentThreadSandboxInput,
|
|
18
22
|
} from "./types"
|
|
19
23
|
|
|
24
|
+
/** Shared state machine. Providers must lock the run, then thread, around this decision/write. */
|
|
25
|
+
export function transitionAgentThreadSandbox(
|
|
26
|
+
thread: AgentThreadRecord | null,
|
|
27
|
+
run: AgentRunRecord | null,
|
|
28
|
+
input: TransitionAgentThreadSandboxInput
|
|
29
|
+
): AgentThreadSandboxState {
|
|
30
|
+
const fail = (message: string): never => {
|
|
31
|
+
throw new AgentStorageError("invalid_state", `[Sixb] Sandbox ${message}`)
|
|
32
|
+
}
|
|
33
|
+
if (!thread?.sandboxParams) return fail("is not configured on this thread.")
|
|
34
|
+
if (!/^[a-zA-Z0-9-]{1,80}$/.test(input.name)) return fail("name is invalid.")
|
|
35
|
+
const state = thread.sandboxState
|
|
36
|
+
if (input.action === "recreate") {
|
|
37
|
+
if (thread.activeRunId !== null) return fail("cannot be recreated during an active run.")
|
|
38
|
+
if (!state || state.name !== input.expectedSandboxName || input.name === state.name)
|
|
39
|
+
return fail("changed; reload before recreating.")
|
|
40
|
+
if (!["busy", "blocked", "unavailable"].includes(state.status)) {
|
|
41
|
+
return fail("does not require recovery.")
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
name: input.name,
|
|
45
|
+
status: "new",
|
|
46
|
+
initialized: false,
|
|
47
|
+
resetAt: new Date().toISOString(),
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (
|
|
51
|
+
run?.kind !== "conversation" ||
|
|
52
|
+
run.threadId !== thread.id ||
|
|
53
|
+
run.status !== "running" ||
|
|
54
|
+
thread.activeRunId !== run.id ||
|
|
55
|
+
run.id !== input.runId ||
|
|
56
|
+
run.execution?.token !== input.executionToken ||
|
|
57
|
+
run.execution.queueLeaseExpiresAt.getTime() <= Date.now()
|
|
58
|
+
) {
|
|
59
|
+
throw new AgentStorageError("execution_lost", "[Sixb] Sandbox execution ownership was lost.")
|
|
60
|
+
}
|
|
61
|
+
if (input.action === "acquire") {
|
|
62
|
+
if (state && state.status !== "new" && state.status !== "ready") {
|
|
63
|
+
return fail("requires recovery; previous operations may still be in flight.")
|
|
64
|
+
}
|
|
65
|
+
if (state && state.name !== input.name) return fail("name changed.")
|
|
66
|
+
if (!/^[a-f0-9]{64}$/.test(input.sourceFingerprint))
|
|
67
|
+
return fail("source fingerprint is invalid.")
|
|
68
|
+
if (state?.sourceFingerprint && state.sourceFingerprint !== input.sourceFingerprint) {
|
|
69
|
+
return fail("source identity changed; the existing checkout was not opened.")
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
name: input.name,
|
|
73
|
+
status: "busy",
|
|
74
|
+
initialized: state?.initialized ?? false,
|
|
75
|
+
...(state?.resetAt ? { resetAt: state.resetAt } : {}),
|
|
76
|
+
sourceFingerprint: input.sourceFingerprint,
|
|
77
|
+
owner: { runId: input.runId, executionToken: input.executionToken },
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (
|
|
81
|
+
state?.status !== "busy" ||
|
|
82
|
+
state.name !== input.name ||
|
|
83
|
+
state.owner?.runId !== input.runId ||
|
|
84
|
+
state.owner.executionToken !== input.executionToken
|
|
85
|
+
) {
|
|
86
|
+
return fail("is not owned by this execution.")
|
|
87
|
+
}
|
|
88
|
+
if (input.action === "replace") {
|
|
89
|
+
if (
|
|
90
|
+
!state.initialized ||
|
|
91
|
+
input.nextName === state.name ||
|
|
92
|
+
!/^[a-zA-Z0-9-]{1,80}$/.test(input.nextName)
|
|
93
|
+
) {
|
|
94
|
+
return fail("replacement requires initialized state and a fresh valid name.")
|
|
95
|
+
}
|
|
96
|
+
// Only the owning worker may report confirmed loss; retain its fence across replacement.
|
|
97
|
+
return {
|
|
98
|
+
...state,
|
|
99
|
+
name: input.nextName,
|
|
100
|
+
initialized: false,
|
|
101
|
+
resetAt: new Date().toISOString(),
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (input.status === "ready" && !input.initialized) return fail("initialization is incomplete.")
|
|
105
|
+
return {
|
|
106
|
+
name: state.name,
|
|
107
|
+
status: input.status,
|
|
108
|
+
initialized: input.initialized,
|
|
109
|
+
sourceFingerprint: state.sourceFingerprint,
|
|
110
|
+
...(state.resetAt ? { resetAt: state.resetAt } : {}),
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Snapshot application parameters independently of worker-owned sandbox state. */
|
|
115
|
+
export function snapshotAgentThreadSandboxParams(value: unknown): AgentThreadSandboxParams {
|
|
116
|
+
if (!isPlainRecord(value) || !isJsonObject(value)) {
|
|
117
|
+
throw new AgentStorageError(
|
|
118
|
+
"invalid_input",
|
|
119
|
+
"[Sixb] Thread sandbox must contain only JSON params."
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
return structuredClone(value)
|
|
123
|
+
}
|
|
124
|
+
|
|
20
125
|
/** Validate the provider-neutral model selection captured for a conversational turn. */
|
|
21
126
|
export function assertConversationAgentRunSpec(
|
|
22
127
|
spec: ConversationAgentRunSpec,
|
|
@@ -10,12 +10,63 @@ import type { LanguageModelRef } from "../../models"
|
|
|
10
10
|
|
|
11
11
|
export type AgentThreadStatus = "active" | "archived"
|
|
12
12
|
|
|
13
|
+
/** Immutable, non-secret application input. Never store resolved env or credentials here. */
|
|
14
|
+
export type AgentThreadSandboxParams = Readonly<Record<string, JsonValue>>
|
|
15
|
+
|
|
16
|
+
/** Worker-owned state, independent from the immutable application binding. */
|
|
17
|
+
export interface AgentThreadSandboxState {
|
|
18
|
+
/** Exact name passed to the provider. Replacements always receive a fresh name. */
|
|
19
|
+
readonly name: string
|
|
20
|
+
readonly status: "new" | "busy" | "ready" | "blocked" | "unavailable"
|
|
21
|
+
readonly sourceFingerprint?: string
|
|
22
|
+
readonly initialized: boolean
|
|
23
|
+
/** Durable context boundary: local files from before this reset are no longer available. */
|
|
24
|
+
readonly resetAt?: string
|
|
25
|
+
/** Never expires automatically: a delayed provider operation must not reach a successor. */
|
|
26
|
+
readonly owner?: { readonly runId: string; readonly executionToken: string }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type TransitionAgentThreadSandboxInput = {
|
|
30
|
+
readonly projectId: string
|
|
31
|
+
readonly id: string
|
|
32
|
+
} & (
|
|
33
|
+
| {
|
|
34
|
+
readonly action: "acquire"
|
|
35
|
+
readonly runId: string
|
|
36
|
+
readonly executionToken: string
|
|
37
|
+
readonly name: string
|
|
38
|
+
readonly sourceFingerprint: string
|
|
39
|
+
}
|
|
40
|
+
| {
|
|
41
|
+
readonly action: "replace"
|
|
42
|
+
readonly runId: string
|
|
43
|
+
readonly executionToken: string
|
|
44
|
+
readonly name: string
|
|
45
|
+
readonly nextName: string
|
|
46
|
+
}
|
|
47
|
+
| {
|
|
48
|
+
readonly action: "settle"
|
|
49
|
+
readonly runId: string
|
|
50
|
+
readonly executionToken: string
|
|
51
|
+
readonly name: string
|
|
52
|
+
readonly status: "ready" | "blocked" | "unavailable"
|
|
53
|
+
readonly initialized: boolean
|
|
54
|
+
}
|
|
55
|
+
| {
|
|
56
|
+
readonly action: "recreate"
|
|
57
|
+
readonly expectedSandboxName: string
|
|
58
|
+
readonly name: string
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
|
|
13
62
|
export interface AgentThreadRecord {
|
|
14
63
|
readonly id: string
|
|
15
64
|
readonly projectId: string
|
|
16
65
|
/** Who owns/opened the thread. Reuses the canonical auth principal (gains `agent` later for free). */
|
|
17
66
|
readonly ownerPrincipal: Principal
|
|
18
67
|
readonly title?: string
|
|
68
|
+
readonly sandboxParams?: AgentThreadSandboxParams
|
|
69
|
+
readonly sandboxState?: AgentThreadSandboxState
|
|
19
70
|
readonly status: AgentThreadStatus
|
|
20
71
|
/** Single-flight anchor: the id of the one run currently allowed to write, or `null` when idle. */
|
|
21
72
|
readonly activeRunId: string | null
|
|
@@ -30,6 +81,7 @@ export interface CreateAgentThreadInput {
|
|
|
30
81
|
readonly projectId: string
|
|
31
82
|
readonly ownerPrincipal: Principal
|
|
32
83
|
readonly title?: string
|
|
84
|
+
readonly sandboxParams?: AgentThreadSandboxParams
|
|
33
85
|
readonly status?: AgentThreadStatus
|
|
34
86
|
readonly createdAt?: Date
|
|
35
87
|
readonly updatedAt?: Date
|
|
@@ -416,6 +468,8 @@ export interface CreateAgentContextCheckpointInput {
|
|
|
416
468
|
// ── Store ───────────────────────────────────────────────────────────────────────────────────────
|
|
417
469
|
|
|
418
470
|
export interface AgentThreadStore {
|
|
471
|
+
/** Atomic run-fenced transition, or explicit idle-thread recreation. */
|
|
472
|
+
transitionSandbox(input: TransitionAgentThreadSandboxInput): Promise<AgentThreadSandboxState>
|
|
419
473
|
create(input: CreateAgentThreadInput): Promise<AgentThreadRecord>
|
|
420
474
|
getById(params: { projectId: string; id: string }): Promise<AgentThreadRecord | null>
|
|
421
475
|
list(input: ListAgentThreadsInput): Promise<ListAgentThreadsResult>
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AiModelCallUsage,
|
|
3
|
-
type AiModelCallUsageRecord,
|
|
4
|
-
aggregateAiModelCallUsage,
|
|
5
|
-
normalizeAiModelCallUsage,
|
|
6
|
-
} from "../ai-usage"
|
|
1
|
+
import { type AiModelCallUsageRecord, normalizeAiModelCallUsage } from "../ai-usage"
|
|
7
2
|
import type {
|
|
8
3
|
AiAccountingAgentBreakdown,
|
|
9
4
|
AiAccountingAggregate,
|
|
@@ -65,6 +60,7 @@ export interface AiAccountingAggregateFragment {
|
|
|
65
60
|
readonly modelCallCount: string
|
|
66
61
|
readonly usage: {
|
|
67
62
|
readonly reportedCallCount: string
|
|
63
|
+
readonly completeCallCount: string
|
|
68
64
|
readonly inputTokens: AiAccountingUsageMeterFragment
|
|
69
65
|
readonly outputTokens: AiAccountingUsageMeterFragment
|
|
70
66
|
readonly uncachedInputTokens: AiAccountingUsageMeterFragment
|
|
@@ -358,9 +354,21 @@ export function aiAccountingBucketStart(at: Date, bucket: AiAccountingBucket): D
|
|
|
358
354
|
function aggregateAccountingItems(
|
|
359
355
|
items: readonly AiAccountingRecordSetItem[]
|
|
360
356
|
): AiAccountingAggregate {
|
|
357
|
+
const value = aggregateFragmentAccumulator()
|
|
358
|
+
value.modelCallCount = BigInt(items.length)
|
|
359
|
+
for (const item of items) {
|
|
360
|
+
const usage = normalizeAiModelCallUsage(item.usage.usage)
|
|
361
|
+
if (usage.reportingStatus !== "unavailable") value.reportedUsageCallCount += 1n
|
|
362
|
+
if (usage.reportingStatus === "complete") value.completeUsageCallCount += 1n
|
|
363
|
+
for (const field of AGGREGATE_USAGE_FIELDS) {
|
|
364
|
+
if (usage[field] === undefined) continue
|
|
365
|
+
value.usage[field].presentCallCount += 1n
|
|
366
|
+
value.usage[field].total += BigInt(usage[field])
|
|
367
|
+
}
|
|
368
|
+
}
|
|
361
369
|
return {
|
|
362
370
|
modelCallCount: items.length,
|
|
363
|
-
|
|
371
|
+
...finishAggregateUsage(value),
|
|
364
372
|
costs: aggregateCosts(items),
|
|
365
373
|
}
|
|
366
374
|
}
|
|
@@ -405,6 +413,7 @@ type AggregateUsageField = (typeof AGGREGATE_USAGE_FIELDS)[number]
|
|
|
405
413
|
interface AggregateFragmentAccumulator {
|
|
406
414
|
modelCallCount: bigint
|
|
407
415
|
reportedUsageCallCount: bigint
|
|
416
|
+
completeUsageCallCount: bigint
|
|
408
417
|
usage: Record<AggregateUsageField, { presentCallCount: bigint; total: bigint }>
|
|
409
418
|
amounts: Map<string, bigint>
|
|
410
419
|
ratedCallCount: bigint
|
|
@@ -416,6 +425,7 @@ function aggregateFragmentAccumulator(): AggregateFragmentAccumulator {
|
|
|
416
425
|
return {
|
|
417
426
|
modelCallCount: 0n,
|
|
418
427
|
reportedUsageCallCount: 0n,
|
|
428
|
+
completeUsageCallCount: 0n,
|
|
419
429
|
usage: Object.fromEntries(
|
|
420
430
|
AGGREGATE_USAGE_FIELDS.map((field) => [field, { presentCallCount: 0n, total: 0n }])
|
|
421
431
|
) as AggregateFragmentAccumulator["usage"],
|
|
@@ -446,6 +456,10 @@ function appendAggregateFragment(
|
|
|
446
456
|
fragment.usage.reportedCallCount,
|
|
447
457
|
"reported usage call count"
|
|
448
458
|
)
|
|
459
|
+
target.completeUsageCallCount += naturalBigInt(
|
|
460
|
+
fragment.usage.completeCallCount,
|
|
461
|
+
"complete usage call count"
|
|
462
|
+
)
|
|
449
463
|
for (const field of AGGREGATE_USAGE_FIELDS) {
|
|
450
464
|
const source = fragment.usage[field]
|
|
451
465
|
const presentCallCount = naturalBigInt(source.presentCallCount, `${field} call count`)
|
|
@@ -473,6 +487,7 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
|
|
|
473
487
|
if (
|
|
474
488
|
classifiedCallCount !== value.modelCallCount ||
|
|
475
489
|
value.reportedUsageCallCount > value.modelCallCount ||
|
|
490
|
+
value.completeUsageCallCount > value.reportedUsageCallCount ||
|
|
476
491
|
AGGREGATE_USAGE_FIELDS.some(
|
|
477
492
|
(field) => value.usage[field].presentCallCount > value.modelCallCount
|
|
478
493
|
)
|
|
@@ -480,22 +495,9 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
|
|
|
480
495
|
throw new TypeError("[Sixb] AI accounting SQL aggregate counts are inconsistent.")
|
|
481
496
|
}
|
|
482
497
|
const modelCallCount = safeAggregateNumber(value.modelCallCount, "model-call count")
|
|
483
|
-
const usageInput: Partial<Record<AggregateUsageField, number>> = {}
|
|
484
|
-
if (value.modelCallCount > 0n) {
|
|
485
|
-
for (const field of AGGREGATE_USAGE_FIELDS) {
|
|
486
|
-
const aggregate = value.usage[field]
|
|
487
|
-
if (aggregate.presentCallCount === value.modelCallCount) {
|
|
488
|
-
usageInput[field] = safeAggregateNumber(aggregate.total, field)
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
let usage: AiModelCallUsage = normalizeAiModelCallUsage(usageInput)
|
|
493
|
-
if (usage.reportingStatus === "unavailable" && value.reportedUsageCallCount > 0n) {
|
|
494
|
-
usage = { ...usage, reportingStatus: "partial" }
|
|
495
|
-
}
|
|
496
498
|
return {
|
|
497
499
|
modelCallCount,
|
|
498
|
-
|
|
500
|
+
...finishAggregateUsage(value),
|
|
499
501
|
costs: {
|
|
500
502
|
amounts: [...value.amounts]
|
|
501
503
|
.sort(([left], [right]) => left.localeCompare(right))
|
|
@@ -510,6 +512,42 @@ function finishAggregateFragment(value: AggregateFragmentAccumulator): AiAccount
|
|
|
510
512
|
}
|
|
511
513
|
}
|
|
512
514
|
|
|
515
|
+
function finishAggregateUsage(
|
|
516
|
+
value: AggregateFragmentAccumulator
|
|
517
|
+
): Pick<AiAccountingAggregate, "usage" | "usageCoverage"> {
|
|
518
|
+
const counts: Partial<Record<AggregateUsageField | "totalTokens", number>> = {}
|
|
519
|
+
const fieldCallCounts = {} as Record<AggregateUsageField, number>
|
|
520
|
+
for (const field of AGGREGATE_USAGE_FIELDS) {
|
|
521
|
+
const aggregate = value.usage[field]
|
|
522
|
+
fieldCallCounts[field] = safeAggregateNumber(aggregate.presentCallCount, `${field} call count`)
|
|
523
|
+
if (aggregate.presentCallCount > 0n) {
|
|
524
|
+
counts[field] = safeAggregateNumber(aggregate.total, field)
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
// Only the top-level meters contribute: cache/reasoning partitions overlap them.
|
|
528
|
+
if (counts.inputTokens !== undefined || counts.outputTokens !== undefined) {
|
|
529
|
+
counts.totalTokens = safeAggregateNumber(
|
|
530
|
+
value.usage.inputTokens.total + value.usage.outputTokens.total,
|
|
531
|
+
"totalTokens"
|
|
532
|
+
)
|
|
533
|
+
}
|
|
534
|
+
return {
|
|
535
|
+
usage: {
|
|
536
|
+
...counts,
|
|
537
|
+
reportingStatus:
|
|
538
|
+
value.reportedUsageCallCount === 0n
|
|
539
|
+
? "unavailable"
|
|
540
|
+
: value.completeUsageCallCount === value.modelCallCount
|
|
541
|
+
? "complete"
|
|
542
|
+
: "partial",
|
|
543
|
+
},
|
|
544
|
+
usageCoverage: {
|
|
545
|
+
completeCallCount: safeAggregateNumber(value.completeUsageCallCount, "complete call count"),
|
|
546
|
+
fieldCallCounts,
|
|
547
|
+
},
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
|
|
513
551
|
function naturalBigInt(value: string, field: string): bigint {
|
|
514
552
|
if (!/^(0|[1-9]\d*)$/.test(value)) {
|
|
515
553
|
throw new TypeError(`[Sixb] AI accounting SQL ${field} must be a natural integer.`)
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
AiModelCallUsageInput,
|
|
3
|
+
AiModelCallUsageRecord,
|
|
4
|
+
AiUsageReportingStatus,
|
|
5
|
+
} from "../ai-usage"
|
|
2
6
|
|
|
3
7
|
/** Token meters supported by deterministic local rate cards. */
|
|
4
8
|
export type AiBillableMeter =
|
|
@@ -141,9 +145,22 @@ export interface ListAiModelCallAccountingInput extends AiAccountingRange {
|
|
|
141
145
|
readonly offset?: number
|
|
142
146
|
}
|
|
143
147
|
|
|
148
|
+
/** Observed meter sums. Unreported meters are absent; incomplete sums are lower bounds. */
|
|
149
|
+
export interface AiAccountingUsage extends AiModelCallUsageInput {
|
|
150
|
+
/** Sum of available input and output counts, including one-sided reports. */
|
|
151
|
+
readonly totalTokens?: number
|
|
152
|
+
/** Complete only when every call reports both input and output; details have separate coverage. */
|
|
153
|
+
readonly reportingStatus: AiUsageReportingStatus
|
|
154
|
+
}
|
|
155
|
+
|
|
144
156
|
export interface AiAccountingAggregate {
|
|
145
157
|
readonly modelCallCount: number
|
|
146
|
-
readonly usage:
|
|
158
|
+
readonly usage: AiAccountingUsage
|
|
159
|
+
readonly usageCoverage: {
|
|
160
|
+
/** Calls reporting both inputTokens and outputTokens. */
|
|
161
|
+
readonly completeCallCount: number
|
|
162
|
+
readonly fieldCallCounts: Readonly<Record<keyof AiModelCallUsageInput, number>>
|
|
163
|
+
}
|
|
147
164
|
readonly costs: AiCostSummary
|
|
148
165
|
}
|
|
149
166
|
|
|
@@ -413,6 +413,20 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
|
|
|
413
413
|
return structuredClone(finished)
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
+
async listPendingConnectionRuns(
|
|
417
|
+
input: Parameters<ConnectorConnectionStorage["listPendingConnectionRuns"]>[0]
|
|
418
|
+
): Promise<readonly ConnectorConnectionRunRecord[]> {
|
|
419
|
+
return [...this.connectionRuns.values()]
|
|
420
|
+
.filter(
|
|
421
|
+
(run) =>
|
|
422
|
+
run.projectId === input.projectId &&
|
|
423
|
+
run.connectorId === input.connectorId &&
|
|
424
|
+
(run.status === "running" ||
|
|
425
|
+
(run.status === "waiting" && run.waitingFor === "account_selection"))
|
|
426
|
+
)
|
|
427
|
+
.map((run) => structuredClone(run))
|
|
428
|
+
}
|
|
429
|
+
|
|
416
430
|
async getConnectionRun(
|
|
417
431
|
input: GetConnectorConnectionRunInput
|
|
418
432
|
): Promise<ConnectorConnectionRunRecord | null> {
|
|
@@ -855,7 +869,7 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
|
|
|
855
869
|
input: PutConnectorConnectionInput,
|
|
856
870
|
now: Date
|
|
857
871
|
): PutConnectorConnectionResult {
|
|
858
|
-
|
|
872
|
+
const authorization = this.authorizations.get(input.authorizationId)
|
|
859
873
|
if (
|
|
860
874
|
!sameAuthorizationScope(authorization, input) ||
|
|
861
875
|
!isSelectable(authorization.status) ||
|
|
@@ -863,20 +877,6 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
|
|
|
863
877
|
) {
|
|
864
878
|
throw authorizationConflict()
|
|
865
879
|
}
|
|
866
|
-
if (
|
|
867
|
-
authorization.status === "pending_selection" &&
|
|
868
|
-
authorization.selectionExpiresAt!.getTime() <= now.getTime()
|
|
869
|
-
) {
|
|
870
|
-
authorization = {
|
|
871
|
-
...authorization,
|
|
872
|
-
status: "revocation_pending",
|
|
873
|
-
selectionExpiresAt: undefined,
|
|
874
|
-
revision: authorization.revision + 1,
|
|
875
|
-
updatedAt: now,
|
|
876
|
-
}
|
|
877
|
-
this.authorizations.set(authorization.id, authorization)
|
|
878
|
-
throw authorizationConflict()
|
|
879
|
-
}
|
|
880
880
|
const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)
|
|
881
881
|
if (!account) {
|
|
882
882
|
throw new ConnectorConnectionStorageError(
|
|
@@ -1078,6 +1078,7 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
|
|
|
1078
1078
|
const run = this.connectionRuns.get(runId)
|
|
1079
1079
|
if (!run || (run.status !== "waiting" && run.status !== "running")) return run
|
|
1080
1080
|
|
|
1081
|
+
if (run.status === "waiting" && run.waitingFor === "account_selection") return run
|
|
1081
1082
|
const now = this.now()
|
|
1082
1083
|
if (run.expiresAt.getTime() > now.getTime()) return run
|
|
1083
1084
|
|
|
@@ -1086,9 +1087,6 @@ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionSt
|
|
|
1086
1087
|
if (attempt) this.attempts.delete(attempt.id)
|
|
1087
1088
|
}
|
|
1088
1089
|
if (run.status === "waiting") {
|
|
1089
|
-
if (run.kind === "connect" && run.waitingFor === "account_selection") {
|
|
1090
|
-
this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)
|
|
1091
|
-
}
|
|
1092
1090
|
const expired = expireConnectionRun(run, now)
|
|
1093
1091
|
this.connectionRuns.set(run.id, expired)
|
|
1094
1092
|
return expired
|
|
@@ -165,7 +165,7 @@ export class DurableConnectorConnections extends ConnectorConnectionOperations {
|
|
|
165
165
|
input: PutConnectorConnectionInput,
|
|
166
166
|
now: Date
|
|
167
167
|
): Promise<PutConnectorConnectionResult | CommittedConnectorConnectionError> {
|
|
168
|
-
|
|
168
|
+
const authorization = await persistence.getAuthorization(input.authorizationId)
|
|
169
169
|
if (
|
|
170
170
|
!authorization ||
|
|
171
171
|
!isSelectable(authorization.status) ||
|
|
@@ -173,20 +173,6 @@ export class DurableConnectorConnections extends ConnectorConnectionOperations {
|
|
|
173
173
|
) {
|
|
174
174
|
throw authorizationConflict()
|
|
175
175
|
}
|
|
176
|
-
if (
|
|
177
|
-
authorization.status === "pending_selection" &&
|
|
178
|
-
authorization.selectionExpiresAt!.getTime() <= now.getTime()
|
|
179
|
-
) {
|
|
180
|
-
authorization = {
|
|
181
|
-
...authorization,
|
|
182
|
-
status: "revocation_pending",
|
|
183
|
-
selectionExpiresAt: undefined,
|
|
184
|
-
revision: authorization.revision + 1,
|
|
185
|
-
updatedAt: now,
|
|
186
|
-
}
|
|
187
|
-
await persistence.updateAuthorization(authorization)
|
|
188
|
-
return { error: authorizationConflict() }
|
|
189
|
-
}
|
|
190
176
|
const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)
|
|
191
177
|
if (!account) {
|
|
192
178
|
throw new ConnectorConnectionStorageError(
|