@sixb/core 0.1.16 → 0.1.18
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 +30 -27
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +1 -1
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +6 -2
- package/dist/actions/worker.js.map +3 -3
- package/dist/agents/adapters.d.ts +7 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +7 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context/entries.d.ts +10 -1
- package/dist/agents/context/entries.d.ts.map +1 -1
- package/dist/agents/context/index.d.ts +1 -1
- package/dist/agents/context/index.d.ts.map +1 -1
- package/dist/agents/context/index.js +4 -2
- package/dist/agents/context/index.js.map +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +54 -46
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +8 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/request.d.ts +19 -5
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts +41 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/streams/index.js +1 -1
- package/dist/agents/streams/internal.js +1 -1
- package/dist/agents/types.d.ts +33 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/auth/index.js +9 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/types.d.ts +6 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +5 -3
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/download-urls.d.ts +41 -0
- package/dist/blob-storage/download-urls.d.ts.map +1 -0
- package/dist/blob-storage/execution.d.ts +9 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/file-content.d.ts +18 -0
- package/dist/blob-storage/file-content.d.ts.map +1 -0
- package/dist/blob-storage/index.d.ts +1 -1
- package/dist/blob-storage/index.d.ts.map +1 -1
- package/dist/blob-storage/index.js +6 -4
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/internal.d.ts +4 -0
- package/dist/blob-storage/internal.d.ts.map +1 -0
- package/dist/blob-storage/internal.js +23 -0
- package/dist/blob-storage/internal.js.map +9 -0
- package/dist/blob-storage/media-type.d.ts +8 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -0
- package/dist/blob-storage/types.d.ts +12 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/blob-storage/validation.d.ts +6 -0
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/agent-context.d.ts +33 -0
- package/dist/bootstrap/agent-context.d.ts.map +1 -0
- package/dist/bootstrap/discovery.d.ts +23 -3
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +287 -75
- package/dist/bootstrap/index.js.map +4 -3
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-kttr5ftm.js → chunk-1b1f2d5f.js} +23 -6
- package/dist/chunk-1b1f2d5f.js.map +12 -0
- package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
- package/dist/chunk-1hqwggsn.js.map +12 -0
- package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
- package/dist/chunk-1sr8ryzk.js.map +11 -0
- package/dist/{chunk-4gmng3vf.js → chunk-22v5bpz3.js} +1 -1
- package/dist/{chunk-tnvafr7g.js → chunk-29yx306f.js} +124 -9
- package/dist/chunk-29yx306f.js.map +22 -0
- package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
- package/dist/chunk-3zxk45er.js +152 -0
- package/dist/chunk-3zxk45er.js.map +11 -0
- package/dist/{chunk-gmdvns8f.js → chunk-48e3cn2d.js} +2 -2
- package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
- package/dist/chunk-4as3wt1c.js.map +12 -0
- package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
- package/dist/chunk-6gmfggss.js.map +10 -0
- package/dist/{chunk-2xvgy3x5.js → chunk-6h5m9xjx.js} +43 -415
- package/dist/{chunk-2xvgy3x5.js.map → chunk-6h5m9xjx.js.map} +7 -11
- package/dist/{chunk-cq44v1a6.js → chunk-7hpdd6r9.js} +3 -3
- package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
- package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
- package/dist/chunk-b9affek3.js +261 -0
- package/dist/chunk-b9affek3.js.map +12 -0
- package/dist/{chunk-zvmr2hqk.js → chunk-bs7sqkre.js} +10 -4
- package/dist/chunk-bs7sqkre.js.map +12 -0
- package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
- package/dist/{chunk-667x4drs.js → chunk-d0eb5yy6.js} +143 -7
- package/dist/chunk-d0eb5yy6.js.map +14 -0
- package/dist/chunk-d62kjtbg.js.map +2 -2
- package/dist/{chunk-gkxsenvp.js → chunk-de4z2bj6.js} +31 -7
- package/dist/{chunk-gkxsenvp.js.map → chunk-de4z2bj6.js.map} +5 -4
- package/dist/{chunk-mdnw7nj8.js → chunk-dnmadg9k.js} +35 -10
- package/dist/chunk-dnmadg9k.js.map +15 -0
- package/dist/chunk-enpsx8k5.js +127 -0
- package/dist/chunk-enpsx8k5.js.map +10 -0
- package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
- package/dist/chunk-ere85b8y.js.map +15 -0
- package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
- package/dist/chunk-ewqa58h9.js.map +11 -0
- package/dist/{chunk-7g2gjvah.js → chunk-ex496vct.js} +1 -1
- package/dist/{chunk-nvymebc1.js → chunk-f1zxad2t.js} +1 -1
- package/dist/{chunk-3q7z9hd4.js → chunk-fe52eczz.js} +483 -101
- package/dist/chunk-fe52eczz.js.map +49 -0
- package/dist/{chunk-8x74221e.js → chunk-fx93hd2n.js} +79 -32
- package/dist/chunk-fx93hd2n.js.map +20 -0
- package/dist/{chunk-39tqv9hz.js → chunk-gc4ntf7d.js} +6 -7
- package/dist/{chunk-39tqv9hz.js.map → chunk-gc4ntf7d.js.map} +3 -4
- package/dist/chunk-h8teetr0.js +9 -0
- package/dist/chunk-h8teetr0.js.map +10 -0
- package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
- package/dist/chunk-hkc3jct7.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-h044jb97.js → chunk-htr6wjmv.js} +282 -58
- package/dist/chunk-htr6wjmv.js.map +19 -0
- package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
- package/dist/chunk-jhm3zsa7.js.map +12 -0
- package/dist/{chunk-chdg6eqq.js → chunk-k6hrnf35.js} +5 -5
- package/dist/chunk-k6hrnf35.js.map +10 -0
- package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
- package/dist/chunk-kpx7jrmn.js.map +12 -0
- package/dist/{chunk-b9y8hcm2.js → chunk-mfs23znk.js} +1 -1
- package/dist/{chunk-kvysp909.js → chunk-ny3xyvcn.js} +32 -19
- package/dist/chunk-ny3xyvcn.js.map +17 -0
- package/dist/{chunk-h4138ww2.js → chunk-p0dqwj3n.js} +450 -799
- package/dist/chunk-p0dqwj3n.js.map +49 -0
- package/dist/{chunk-f72rbvsb.js → chunk-p844e0rn.js} +23 -8
- package/dist/chunk-p844e0rn.js.map +19 -0
- package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
- package/dist/chunk-pfp1txq2.js.map +11 -0
- package/dist/chunk-pqajwytd.js.map +3 -3
- package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
- package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
- package/dist/{chunk-69kt9q43.js → chunk-qkbx3tf6.js} +17 -128
- package/dist/{chunk-69kt9q43.js.map → chunk-qkbx3tf6.js.map} +6 -7
- package/dist/{chunk-h866d223.js → chunk-qkvz64nd.js} +2 -2
- package/dist/{chunk-vsvrv7n8.js → chunk-qmnnhde6.js} +4 -8
- package/dist/{chunk-vsvrv7n8.js.map → chunk-qmnnhde6.js.map} +3 -3
- package/dist/{chunk-6z1q7j19.js → chunk-qq90g05n.js} +1128 -782
- package/dist/chunk-qq90g05n.js.map +66 -0
- package/dist/{chunk-40qb8wpe.js → chunk-qxvp5epv.js} +84 -29
- package/dist/{chunk-40qb8wpe.js.map → chunk-qxvp5epv.js.map} +10 -9
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
- package/dist/chunk-rj69qcrd.js.map +11 -0
- package/dist/{chunk-tkdbge6v.js → chunk-rt9p8m9t.js} +1 -1
- package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
- package/dist/chunk-rz53yb4v.js.map +14 -0
- package/dist/{chunk-a7ne02hk.js → chunk-s4jhg8a3.js} +351 -296
- package/dist/chunk-s4jhg8a3.js.map +15 -0
- package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
- package/dist/chunk-s54c868q.js.map +12 -0
- package/dist/{chunk-dsv8kdgk.js → chunk-tffvfy6s.js} +8 -7
- package/dist/{chunk-dsv8kdgk.js.map → chunk-tffvfy6s.js.map} +3 -3
- package/dist/{chunk-sbcm1b92.js → chunk-v6xpd60t.js} +3 -3
- package/dist/{chunk-nj0020ay.js → chunk-vgk3hknm.js} +1 -1
- package/dist/{chunk-qnd7ehe5.js → chunk-vx2yp45y.js} +2 -2
- package/dist/{chunk-vjqt7q3a.js → chunk-vz3gc1tm.js} +607 -45
- package/dist/chunk-vz3gc1tm.js.map +41 -0
- package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
- package/dist/chunk-wt4szfec.js.map +14 -0
- package/dist/chunk-xt1zt7gv.js +471 -0
- package/dist/chunk-xt1zt7gv.js.map +13 -0
- package/dist/{chunk-swxzncrv.js → chunk-y05543x6.js} +51 -8
- package/dist/{chunk-swxzncrv.js.map → chunk-y05543x6.js.map} +5 -5
- package/dist/{chunk-zdkcdshk.js → chunk-y9jmd7e5.js} +41 -3
- package/dist/{chunk-zdkcdshk.js.map → chunk-y9jmd7e5.js.map} +4 -3
- package/dist/{chunk-nkbev3tr.js → chunk-yv9czyfr.js} +3 -3
- package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
- package/dist/chunk-yw9pyg66.js.map +11 -0
- package/dist/{chunk-cxj8y8t0.js → chunk-za5yd58j.js} +2 -2
- package/dist/{chunk-zb47r1c8.js → chunk-zb77kjth.js} +3 -3
- package/dist/{chunk-dp7yk20b.js → chunk-zxawp1n2.js} +1 -1
- package/dist/datasets/builders.d.ts +12 -1
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +27 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +5 -0
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +10 -5
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/properties.d.ts.map +1 -1
- package/dist/events/execution.d.ts +2 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/types/objects.d.ts +5 -0
- package/dist/events/types/objects.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +10 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +49 -43
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +9 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +45 -41
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +46 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -71
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +5 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +1 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +8 -5
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +26 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +5 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -4
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +20 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -0
- package/dist/materialization/events.d.ts +29 -3
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +4 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +9 -3
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -10
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/effective/build-events.d.ts +5 -21
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +2 -3
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
- package/dist/materializer/effective/vectors.d.ts +2 -3
- package/dist/materializer/effective/vectors.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +1 -11
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/execution/work-executor.d.ts +5 -7
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +1 -3
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +35 -33
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +8 -11
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/batching.d.ts +5 -0
- package/dist/materializer/shared/batching.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -8
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +20 -0
- package/dist/models/audio/catalog.d.ts.map +1 -0
- package/dist/models/audio/errors.d.ts +8 -0
- package/dist/models/audio/errors.d.ts.map +1 -0
- package/dist/models/audio/file.d.ts +9 -0
- package/dist/models/audio/file.d.ts.map +1 -0
- package/dist/models/audio/runtime.d.ts +8 -0
- package/dist/models/audio/runtime.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +60 -0
- package/dist/models/audio/types.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +24 -2
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +1 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +3 -0
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +6 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.js +27 -24
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-admission.d.ts +6 -1
- package/dist/models/execution/model-call-admission.d.ts.map +1 -1
- package/dist/models/execution/model-call-limits.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +4 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/reranking.d.ts +4 -0
- package/dist/models/execution/reranking.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +2 -1
- 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 +7 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +6 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +6 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +2 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/reranking-model.d.ts +49 -0
- package/dist/models/reranking-model.d.ts.map +1 -0
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +6 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +2 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +31 -27
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +41 -0
- package/dist/objects/property-clearance.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +5 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +1 -1
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +27 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +8 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/planner.d.ts +1 -1
- package/dist/objects/query/planner.d.ts.map +1 -1
- package/dist/objects/query/primary-id.d.ts +7 -0
- package/dist/objects/query/primary-id.d.ts.map +1 -0
- package/dist/objects/query/reranking-executor.d.ts +13 -0
- package/dist/objects/query/reranking-executor.d.ts.map +1 -0
- package/dist/objects/query/reranking-limits.d.ts +3 -0
- package/dist/objects/query/reranking-limits.d.ts.map +1 -0
- package/dist/objects/query/reranking-query.d.ts +4 -0
- package/dist/objects/query/reranking-query.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +10 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/file-handle.d.ts +6 -0
- package/dist/objects/sdk/file-handle.d.ts.map +1 -0
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -0
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +2 -2
- 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/indexing-dispatch.d.ts +21 -0
- package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
- package/dist/objects/vectors/query.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +12 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +35 -0
- package/dist/ontology/docs-markdown.d.ts.map +1 -0
- package/dist/ontology/docs.d.ts +50 -0
- package/dist/ontology/docs.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +7 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +19 -0
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +3 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +276 -3
- package/dist/ontology/internal.js.map +4 -3
- package/dist/ontology/query-capabilities.d.ts +1 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +8 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +25 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/index.d.ts +1 -1
- package/dist/ontology/validation/index.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +7 -0
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +29 -26
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +27 -24
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +3 -0
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +4 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +11 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +3 -1
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +14 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +32 -27
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/locale.d.ts +9 -0
- package/dist/runtime/locale.d.ts.map +1 -0
- package/dist/runtime/public-origin.d.ts +10 -0
- package/dist/runtime/public-origin.d.ts.map +1 -0
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +1 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +42 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/runtime.d.ts +3 -0
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/security/builders.d.ts +11 -2
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -4
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/markings.d.ts +19 -0
- package/dist/security/markings.d.ts.map +1 -0
- package/dist/security/redactions.d.ts +4 -0
- package/dist/security/redactions.d.ts.map +1 -0
- package/dist/security/registry.d.ts +7 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +25 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -21
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +5 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +15 -9
- 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/provider.js +3 -3
- package/dist/storage/ai-cost/types.d.ts +1 -1
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +7 -2
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +4 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-limits/types.d.ts +3 -0
- package/dist/storage/ai-limits/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +8 -4
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
- package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/file-download-grants/index.d.ts +3 -0
- package/dist/storage/file-download-grants/index.d.ts.map +1 -0
- package/dist/storage/file-download-grants/record.d.ts +11 -0
- package/dist/storage/file-download-grants/record.d.ts.map +1 -0
- package/dist/storage/file-download-grants/types.d.ts +44 -0
- package/dist/storage/file-download-grants/types.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +10 -7
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +35 -32
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +1 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +9 -4
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/index.d.ts +1 -1
- package/dist/storage/migrations/index.d.ts.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +3 -3
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/types.d.ts +7 -0
- package/dist/storage/migrations/types.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/query.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.map +1 -1
- package/dist/storage/objects/query-preparation.d.ts +39 -0
- package/dist/storage/objects/query-preparation.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +9 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -6
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -2
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
- package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
- package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
- package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -3
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +40 -59
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +4 -6
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +114 -3
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -39
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +26 -12
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/replacement-plans.d.ts +103 -0
- package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/sources.d.ts +0 -8
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +10 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +30 -27
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
- package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2556 -1495
- package/dist/testing/index.js.map +14 -13
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts +14 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +5 -1
- package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +25 -22
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +15 -17
- package/dist/workers/index.js.map +3 -3
- package/dist/workers/queue-worker.d.ts +3 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +51 -47
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +2 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/actions/read-facade.ts +2 -1
- package/src/actions/types/context.ts +5 -2
- package/src/actions/validation.ts +4 -1
- package/src/agents/adapters.ts +15 -0
- package/src/agents/authority.ts +15 -0
- package/src/agents/context/entries.ts +48 -4
- package/src/agents/context/index.ts +1 -0
- package/src/agents/context-compaction.ts +6 -0
- package/src/agents/errors.ts +3 -0
- package/src/agents/index.ts +13 -1
- package/src/agents/message.ts +9 -0
- package/src/agents/request.ts +178 -22
- package/src/agents/skills.ts +63 -0
- package/src/agents/types.ts +35 -5
- package/src/auth/runtime.ts +14 -0
- package/src/auth/types.ts +6 -0
- package/src/authorization/resolve.ts +6 -1
- package/src/authorization/types.ts +7 -0
- package/src/blob-storage/download-urls.ts +138 -0
- package/src/blob-storage/execution.ts +44 -1
- package/src/blob-storage/file-content.ts +106 -0
- package/src/blob-storage/index.ts +1 -0
- package/src/blob-storage/internal.ts +8 -0
- package/src/blob-storage/media-type.ts +29 -0
- package/src/blob-storage/types.ts +13 -1
- package/src/blob-storage/validation.ts +13 -0
- package/src/bootstrap/agent-context.ts +356 -0
- package/src/bootstrap/discovery.ts +100 -33
- package/src/bootstrap/index.ts +1 -1
- package/src/bootstrap/ontology-type-manifest.ts +3 -38
- package/src/datasets/builders.ts +17 -1
- package/src/datasets/execution.ts +110 -2
- package/src/datasets/index.ts +7 -1
- package/src/datasets/types.ts +2 -0
- package/src/datasets/write.ts +21 -2
- package/src/edits/properties.ts +3 -0
- package/src/events/execution.ts +15 -16
- package/src/events/types/objects.ts +5 -0
- package/src/execution/agent.ts +27 -0
- package/src/execution/authorization.ts +1 -0
- package/src/execution/authorized-object-reader.ts +104 -35
- package/src/execution/scopes.ts +2 -6
- package/src/http/api-routes.ts +4 -3
- package/src/index.ts +52 -2
- package/src/lake-storage/in-memory.ts +38 -9
- package/src/lake-storage/index.ts +2 -0
- package/src/lake-storage/types.ts +30 -0
- package/src/maintenance/ontology-maintenance.ts +50 -23
- package/src/maintenance/types.ts +1 -4
- package/src/materialization/event-envelopes.ts +168 -0
- package/src/materialization/events.ts +40 -4
- package/src/materialization/index.ts +9 -1
- package/src/materializer/README.md +55 -10
- package/src/materializer/edits/commit.ts +3 -19
- package/src/materializer/edits/plan.ts +20 -71
- package/src/materializer/effective/build-events.ts +42 -136
- package/src/materializer/effective/vector-indexing.ts +2 -3
- package/src/materializer/effective/vectors.ts +2 -3
- package/src/materializer/execution/scope.ts +1 -38
- package/src/materializer/execution/work-executor.ts +21 -115
- package/src/materializer/execution/work-records.ts +0 -15
- package/src/materializer/projections/replace.ts +106 -63
- package/src/materializer/projections/replacement-plan.ts +73 -218
- package/src/materializer/shared/batching.ts +7 -0
- package/src/materializer/telemetry/append.ts +2 -14
- package/src/materializer/telemetry/plan.ts +6 -43
- package/src/models/audio/catalog.ts +90 -0
- package/src/models/audio/errors.ts +19 -0
- package/src/models/audio/file.ts +78 -0
- package/src/models/audio/runtime.ts +182 -0
- package/src/models/audio/types.ts +69 -0
- package/src/models/catalog.ts +78 -7
- package/src/models/definitions.ts +8 -1
- package/src/models/events.ts +3 -0
- package/src/models/execution/README.md +24 -4
- package/src/models/execution/binding.ts +6 -0
- package/src/models/execution/model-call-admission.ts +6 -1
- package/src/models/execution/model-call-limits.ts +21 -11
- package/src/models/execution/model-call-recorder.ts +11 -0
- package/src/models/execution/model-call-recovery.ts +1 -0
- package/src/models/execution/reranking.ts +137 -0
- package/src/models/execution/session.ts +2 -2
- package/src/models/execution/usage.ts +1 -0
- package/src/models/execution.ts +11 -3
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +32 -0
- package/src/models/language-model.ts +6 -0
- package/src/models/pricing.ts +2 -1
- package/src/models/reranking-model.ts +114 -0
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +7 -0
- package/src/objects/execution.ts +4 -1
- package/src/objects/materializer-adapter.ts +3 -0
- package/src/objects/object/upsert-batch.ts +4 -1
- package/src/objects/object/upsert.ts +3 -1
- package/src/objects/property-clearance.ts +209 -0
- package/src/objects/query/executor.ts +85 -38
- package/src/objects/query/explain.ts +8 -0
- package/src/objects/query/index.ts +1 -0
- package/src/objects/query/ir.ts +10 -0
- package/src/objects/query/normalize.ts +2 -0
- package/src/objects/query/planner.ts +12 -1
- package/src/objects/query/primary-id.ts +56 -0
- package/src/objects/query/reranking-executor.ts +91 -0
- package/src/objects/query/reranking-limits.ts +3 -0
- package/src/objects/query/reranking-query.ts +8 -0
- package/src/objects/query/validate.ts +166 -15
- package/src/objects/sdk/file-handle.ts +77 -0
- package/src/objects/sdk/object-handle.ts +8 -4
- package/src/objects/sdk/object-set.ts +5 -2
- package/src/objects/sdk/query-builder.ts +15 -2
- package/src/objects/sdk/query-executor.ts +2 -2
- package/src/objects/sdk/runtime-query-executor.ts +7 -4
- package/src/objects/vectors/README.md +6 -2
- package/src/objects/vectors/indexing-dispatch.ts +83 -0
- package/src/objects/vectors/query.ts +3 -0
- package/src/ontology/builders.ts +19 -2
- package/src/ontology/docs-markdown.ts +394 -0
- package/src/ontology/docs.ts +196 -0
- package/src/ontology/index.ts +2 -0
- package/src/ontology/inference/index.ts +25 -0
- package/src/ontology/internal.ts +7 -0
- package/src/ontology/query-capabilities.ts +1 -1
- package/src/ontology/tokens.ts +13 -2
- package/src/ontology/types.ts +26 -0
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/query.ts +57 -0
- package/src/ontology/validation/schema.ts +26 -1
- package/src/query.ts +4 -0
- package/src/queues/in-memory.ts +54 -19
- package/src/queues/types.ts +4 -0
- package/src/runtime/create.ts +34 -4
- package/src/runtime/definitions.ts +3 -1
- package/src/runtime/host.ts +73 -2
- package/src/runtime/index.ts +4 -0
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/locale.ts +26 -0
- package/src/runtime/public-origin.ts +33 -0
- package/src/runtime/resolve-definitions.ts +28 -1
- package/src/runtime/sixb.ts +14 -3
- package/src/runtime/types.ts +51 -5
- package/src/scheduler/runtime.ts +11 -2
- package/src/security/builders.ts +49 -5
- package/src/security/index.ts +6 -1
- package/src/security/markings.ts +313 -0
- package/src/security/redactions.ts +6 -0
- package/src/security/registry.ts +21 -1
- package/src/security/types.ts +26 -0
- package/src/security/validation.ts +59 -2
- package/src/storage/agents/provider.ts +11 -0
- package/src/storage/agents/types.ts +15 -7
- package/src/storage/ai-cost/analytics.ts +2 -0
- package/src/storage/ai-cost/codec.ts +2 -1
- package/src/storage/ai-cost/types.ts +1 -0
- package/src/storage/ai-cost/validation.ts +21 -8
- package/src/storage/ai-limits/in-memory.ts +10 -2
- package/src/storage/ai-limits/provider.ts +29 -2
- package/src/storage/ai-limits/types.ts +3 -0
- package/src/storage/ai-usage/record.ts +9 -0
- package/src/storage/ai-usage/types.ts +8 -4
- package/src/storage/ai-usage/usage.ts +2 -0
- package/src/storage/file-download-grants/in-memory.ts +73 -0
- package/src/storage/file-download-grants/index.ts +8 -0
- package/src/storage/file-download-grants/record.ts +47 -0
- package/src/storage/file-download-grants/types.ts +48 -0
- package/src/storage/in-memory/index.ts +13 -2
- package/src/storage/index.ts +32 -13
- package/src/storage/internal.ts +1 -0
- package/src/storage/migrations/index.ts +1 -0
- package/src/storage/migrations/migrate-storage.ts +36 -12
- package/src/storage/migrations/types.ts +8 -0
- package/src/storage/objects/in-memory/query.ts +2 -0
- package/src/storage/objects/in-memory/selected-reader.ts +1 -0
- package/src/storage/objects/in-memory/storage.ts +1 -0
- package/src/storage/objects/query-preparation.ts +77 -0
- package/src/storage/objects/types.ts +9 -0
- package/src/storage/ontology/commits.ts +1 -6
- package/src/storage/ontology/in-memory/index.ts +28 -9
- package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
- package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
- package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
- package/src/storage/ontology/in-memory/materializations.ts +172 -653
- package/src/storage/ontology/in-memory/outbox.ts +37 -29
- package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
- package/src/storage/ontology/in-memory/shared-state.ts +24 -2
- package/src/storage/ontology/in-memory/source-roots.ts +7 -2
- package/src/storage/ontology/in-memory/sources.ts +7 -33
- package/src/storage/ontology/in-memory/state-reader.ts +245 -0
- package/src/storage/ontology/index.ts +19 -13
- package/src/storage/ontology/materializations.ts +45 -74
- package/src/storage/ontology/outbox.ts +4 -7
- package/src/storage/ontology/provider-header-validation.ts +0 -57
- package/src/storage/ontology/provider-work.ts +381 -90
- package/src/storage/ontology/provider.ts +74 -171
- package/src/storage/ontology/replacement-plans.ts +117 -0
- package/src/storage/ontology/sources.ts +0 -12
- package/src/storage/operation-scope.ts +33 -1
- package/src/storage/projection-runs/in-memory.ts +7 -1
- package/src/storage/projection-runs/types.ts +2 -0
- package/src/storage/types.ts +2 -0
- package/src/testing/ai-cost-storage-contract.ts +1 -0
- package/src/testing/ai-limit-storage-contract.ts +62 -0
- package/src/testing/ai-usage-storage-contract.ts +31 -0
- package/src/testing/file-download-grant-storage-contract.ts +139 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/lake-storage-contract.ts +87 -1
- package/src/testing/materializer-storage-contract.ts +1008 -1
- package/src/testing/object-read-scope-contract.ts +1 -0
- package/src/testing/ontology-contract-fixture.ts +11 -87
- package/src/testing/ontology-storage-contract.ts +70 -39
- package/src/testing/projection-run-storage-contract.ts +14 -0
- package/src/testing/queues-contract.ts +59 -0
- package/src/workers/queue-worker.ts +19 -16
- package/src/workflows/builders.ts +24 -1
- package/src/workflows/request.ts +3 -0
- package/src/workflows/types.ts +6 -3
- package/src/workflows/validation.ts +32 -4
- package/dist/chunk-3q7z9hd4.js.map +0 -46
- package/dist/chunk-667x4drs.js.map +0 -12
- package/dist/chunk-69266efg.js.map +0 -12
- package/dist/chunk-6z1q7j19.js.map +0 -62
- package/dist/chunk-7ytf06d3.js +0 -113
- package/dist/chunk-7ytf06d3.js.map +0 -10
- package/dist/chunk-8x74221e.js.map +0 -20
- package/dist/chunk-91kcnbf0.js.map +0 -10
- package/dist/chunk-98cw09sw.js.map +0 -10
- package/dist/chunk-9vx5e9g1.js.map +0 -11
- package/dist/chunk-a0073121.js.map +0 -12
- package/dist/chunk-a7ne02hk.js.map +0 -15
- package/dist/chunk-cd234ba4.js.map +0 -14
- package/dist/chunk-chdg6eqq.js.map +0 -10
- package/dist/chunk-dmn70ztd.js.map +0 -11
- package/dist/chunk-f72rbvsb.js.map +0 -19
- package/dist/chunk-g4rbm4a6.js.map +0 -15
- package/dist/chunk-h044jb97.js.map +0 -15
- package/dist/chunk-h3v76ams.js.map +0 -11
- package/dist/chunk-h4138ww2.js.map +0 -50
- package/dist/chunk-hgqpcmyr.js.map +0 -12
- package/dist/chunk-jgwb25gc.js.map +0 -12
- package/dist/chunk-k4kkp58d.js.map +0 -11
- package/dist/chunk-kttr5ftm.js.map +0 -12
- package/dist/chunk-kvysp909.js.map +0 -17
- package/dist/chunk-mdnw7nj8.js.map +0 -15
- package/dist/chunk-s3csryxe.js.map +0 -11
- package/dist/chunk-tnvafr7g.js.map +0 -19
- package/dist/chunk-vjqt7q3a.js.map +0 -36
- package/dist/chunk-xnx96gfy.js.map +0 -15
- package/dist/chunk-z5rnrmz1.js.map +0 -11
- package/dist/chunk-zvmr2hqk.js.map +0 -12
- package/dist/materializer/execution/plan-stream.d.ts +0 -8
- package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
- package/src/materializer/execution/plan-stream.ts +0 -121
- /package/dist/{chunk-4gmng3vf.js.map → chunk-22v5bpz3.js.map} +0 -0
- /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
- /package/dist/{chunk-gmdvns8f.js.map → chunk-48e3cn2d.js.map} +0 -0
- /package/dist/{chunk-cq44v1a6.js.map → chunk-7hpdd6r9.js.map} +0 -0
- /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
- /package/dist/{chunk-7g2gjvah.js.map → chunk-ex496vct.js.map} +0 -0
- /package/dist/{chunk-nvymebc1.js.map → chunk-f1zxad2t.js.map} +0 -0
- /package/dist/{chunk-b9y8hcm2.js.map → chunk-mfs23znk.js.map} +0 -0
- /package/dist/{chunk-h866d223.js.map → chunk-qkvz64nd.js.map} +0 -0
- /package/dist/{chunk-tkdbge6v.js.map → chunk-rt9p8m9t.js.map} +0 -0
- /package/dist/{chunk-sbcm1b92.js.map → chunk-v6xpd60t.js.map} +0 -0
- /package/dist/{chunk-nj0020ay.js.map → chunk-vgk3hknm.js.map} +0 -0
- /package/dist/{chunk-qnd7ehe5.js.map → chunk-vx2yp45y.js.map} +0 -0
- /package/dist/{chunk-nkbev3tr.js.map → chunk-yv9czyfr.js.map} +0 -0
- /package/dist/{chunk-cxj8y8t0.js.map → chunk-za5yd58j.js.map} +0 -0
- /package/dist/{chunk-zb47r1c8.js.map → chunk-zb77kjth.js.map} +0 -0
- /package/dist/{chunk-dp7yk20b.js.map → chunk-zxawp1n2.js.map} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModelProviderError } from "../errors"
|
|
2
|
+
import type { TranscriptionModelResponseMetadata } from "./types"
|
|
3
|
+
|
|
4
|
+
/** Retains billing metadata even when the provider returns an invalid transcript. */
|
|
5
|
+
export class TranscriptionModelResponseError extends ModelProviderError {
|
|
6
|
+
constructor(
|
|
7
|
+
message: string,
|
|
8
|
+
providerId: string,
|
|
9
|
+
modelId: string,
|
|
10
|
+
readonly metadata: TranscriptionModelResponseMetadata,
|
|
11
|
+
options?: ErrorOptions
|
|
12
|
+
) {
|
|
13
|
+
super(message, providerId, modelId, {
|
|
14
|
+
...options,
|
|
15
|
+
code: "invalid_transcription_response",
|
|
16
|
+
retryable: false,
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createHash } from "node:crypto"
|
|
2
|
+
import type { BlobStorage, FileRef } from "../../blob-storage/types"
|
|
3
|
+
import { isFileRef } from "../../blob-storage/validation"
|
|
4
|
+
|
|
5
|
+
/** Snapshot caller-owned metadata before model resolution or storage introduces an await. */
|
|
6
|
+
export function prepareTranscriptionFile(input: FileRef): { audio: FileRef; mediaType: string } {
|
|
7
|
+
if (!isFileRef(input) || !Number.isSafeInteger(input.sizeBytes) || input.sizeBytes <= 0) {
|
|
8
|
+
throw new TypeError("[SixbModels] Transcription requires a nonempty FileRef.")
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const audio = { ...input }
|
|
12
|
+
const mediaType = audio.mediaType?.split(";", 1)[0]?.trim().toLowerCase()
|
|
13
|
+
if (!mediaType || !/^audio\/[a-z0-9.+-]+$/.test(mediaType)) {
|
|
14
|
+
throw new TypeError("[SixbModels] Audio FileRef must declare an audio mediaType.")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return { audio, mediaType }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Read an already validated reference, bounded by its verified size and the model's limit. */
|
|
21
|
+
export async function readTranscriptionFile(
|
|
22
|
+
storage: BlobStorage,
|
|
23
|
+
file: FileRef,
|
|
24
|
+
signal: AbortSignal
|
|
25
|
+
): Promise<Uint8Array> {
|
|
26
|
+
const info = await storage.stat(file.blobId)
|
|
27
|
+
signal.throwIfAborted()
|
|
28
|
+
if (
|
|
29
|
+
!info ||
|
|
30
|
+
info.blobId !== file.blobId ||
|
|
31
|
+
info.digest !== file.digest ||
|
|
32
|
+
info.sizeBytes !== file.sizeBytes
|
|
33
|
+
) {
|
|
34
|
+
throw new Error("[SixbModels] Audio reference does not match the stored file.")
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const stream = await storage.open(file.blobId)
|
|
38
|
+
const reader = stream.getReader()
|
|
39
|
+
const cancel = () => {
|
|
40
|
+
void reader.cancel(signal.reason).catch(() => undefined)
|
|
41
|
+
}
|
|
42
|
+
signal.addEventListener("abort", cancel, { once: true })
|
|
43
|
+
|
|
44
|
+
let complete = false
|
|
45
|
+
try {
|
|
46
|
+
signal.throwIfAborted()
|
|
47
|
+
|
|
48
|
+
const bytes = new Uint8Array(file.sizeBytes)
|
|
49
|
+
const hash = createHash("sha256")
|
|
50
|
+
let offset = 0
|
|
51
|
+
|
|
52
|
+
while (true) {
|
|
53
|
+
const { value, done } = await reader.read()
|
|
54
|
+
signal.throwIfAborted()
|
|
55
|
+
if (done) break
|
|
56
|
+
if (!(value instanceof Uint8Array) || value.byteLength > bytes.byteLength - offset) {
|
|
57
|
+
throw new Error("[SixbModels] Audio stream exceeds its declared size.")
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
bytes.set(value, offset)
|
|
61
|
+
hash.update(value)
|
|
62
|
+
offset += value.byteLength
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (offset !== file.sizeBytes || `sha256:${hash.digest("hex")}` !== file.digest) {
|
|
66
|
+
throw new Error("[SixbModels] Audio stream does not match its content-addressed reference.")
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
complete = true
|
|
70
|
+
return bytes
|
|
71
|
+
} finally {
|
|
72
|
+
signal.removeEventListener("abort", cancel)
|
|
73
|
+
if (!complete) {
|
|
74
|
+
void reader.cancel().catch(() => undefined)
|
|
75
|
+
}
|
|
76
|
+
reader.releaseLock()
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto"
|
|
2
|
+
import { assertProviderAccess } from "../../authorization"
|
|
3
|
+
import type { BlobStorage } from "../../blob-storage/types"
|
|
4
|
+
import type { ExecutionContext } from "../../execution"
|
|
5
|
+
import type { SixbRuntimeContext } from "../../runtime/types"
|
|
6
|
+
import type { ModelCatalog } from "../catalog"
|
|
7
|
+
import type { ModelCallEndEvent } from "../events"
|
|
8
|
+
import type { AiModelCallRecorder } from "../execution/model-call-recorder"
|
|
9
|
+
import type { ModelExecutionSession } from "../execution/session"
|
|
10
|
+
import { estimateModelCall, type ModelMoney } from "../pricing"
|
|
11
|
+
import { assertTranscriptionModel } from "./catalog"
|
|
12
|
+
import { TranscriptionModelResponseError } from "./errors"
|
|
13
|
+
import { prepareTranscriptionFile, readTranscriptionFile } from "./file"
|
|
14
|
+
import type {
|
|
15
|
+
AudioModelsRuntime,
|
|
16
|
+
TranscriptionModel,
|
|
17
|
+
TranscriptionModelResponseMetadata,
|
|
18
|
+
TranscriptionModelResult,
|
|
19
|
+
} from "./types"
|
|
20
|
+
|
|
21
|
+
export function createAudioRuntime(
|
|
22
|
+
runtime: SixbRuntimeContext,
|
|
23
|
+
execution: ExecutionContext,
|
|
24
|
+
catalog: ModelCatalog | undefined,
|
|
25
|
+
session: ModelExecutionSession,
|
|
26
|
+
blobs: BlobStorage | undefined
|
|
27
|
+
): AudioModelsRuntime {
|
|
28
|
+
return {
|
|
29
|
+
async transcribe(input) {
|
|
30
|
+
assertProviderAccess(runtime, execution, "models.audio.transcribe")
|
|
31
|
+
|
|
32
|
+
const { audio, mediaType } = prepareTranscriptionFile(input.audio)
|
|
33
|
+
if (!blobs) {
|
|
34
|
+
throw new Error("[SixbModels] Transcription requires blob storage.")
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const signal = session.signal(input.signal)
|
|
38
|
+
signal.throwIfAborted()
|
|
39
|
+
|
|
40
|
+
const binding = selectModel(catalog, input.model)
|
|
41
|
+
assertTranscriptionModel(binding)
|
|
42
|
+
assertFileSupport(binding, audio.sizeBytes, mediaType)
|
|
43
|
+
|
|
44
|
+
const accounting = await session.accounting()
|
|
45
|
+
accounting.assertHealthy()
|
|
46
|
+
|
|
47
|
+
const model = binding.resolve ? await binding.resolve() : binding
|
|
48
|
+
assertTranscriptionModel(model)
|
|
49
|
+
if (model.providerId !== binding.providerId || model.modelId !== binding.modelId) {
|
|
50
|
+
throw new TypeError(
|
|
51
|
+
"[SixbModels] Resolved transcription model identity does not match the selected model."
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
assertFileSupport(model, audio.sizeBytes, mediaType)
|
|
55
|
+
|
|
56
|
+
signal.throwIfAborted()
|
|
57
|
+
const bytes = await readTranscriptionFile(blobs, audio, signal)
|
|
58
|
+
accounting.assertHealthy()
|
|
59
|
+
|
|
60
|
+
const reservationCost = estimateReservationCost(model, bytes.byteLength, mediaType)
|
|
61
|
+
const callId = `call_${randomUUID()}`
|
|
62
|
+
await accounting.admitCall({
|
|
63
|
+
callId,
|
|
64
|
+
providerId: model.providerId,
|
|
65
|
+
modelId: model.modelId,
|
|
66
|
+
modelKind: "transcription",
|
|
67
|
+
inputTokens: { status: "unavailable", reason: "nonTextInput" },
|
|
68
|
+
outputTokenAllowance: 0,
|
|
69
|
+
reservationCost,
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
let result: TranscriptionModelResult
|
|
73
|
+
try {
|
|
74
|
+
signal.throwIfAborted()
|
|
75
|
+
result = await model.transcribe({ audio: bytes, mediaType, signal })
|
|
76
|
+
} catch (error) {
|
|
77
|
+
await recordTranscription(
|
|
78
|
+
accounting,
|
|
79
|
+
model,
|
|
80
|
+
callId,
|
|
81
|
+
error instanceof TranscriptionModelResponseError ? error.metadata : {}
|
|
82
|
+
)
|
|
83
|
+
throw error
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// A completed, billable reply must survive cancellation and transcript validation failures.
|
|
87
|
+
const event = await recordTranscription(accounting, model, callId, result ?? {})
|
|
88
|
+
signal.throwIfAborted()
|
|
89
|
+
if (typeof result?.output?.text !== "string") {
|
|
90
|
+
throw new TranscriptionModelResponseError(
|
|
91
|
+
"[SixbModels] Invalid transcription response.",
|
|
92
|
+
model.providerId,
|
|
93
|
+
model.modelId,
|
|
94
|
+
result ?? {}
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
output: { text: result.output.text },
|
|
100
|
+
usage: event.usage,
|
|
101
|
+
cost: event.cost,
|
|
102
|
+
callId,
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function selectModel(
|
|
109
|
+
catalog: ModelCatalog | undefined,
|
|
110
|
+
requested: TranscriptionModel | undefined
|
|
111
|
+
): TranscriptionModel {
|
|
112
|
+
if (!catalog && requested) return requested
|
|
113
|
+
|
|
114
|
+
const transcribers = catalog?.audio?.transcription
|
|
115
|
+
const selected = requested
|
|
116
|
+
? transcribers?.getByRef({ provider: requested.providerId, modelId: requested.modelId })?.model
|
|
117
|
+
: transcribers?.default.model
|
|
118
|
+
|
|
119
|
+
if (!selected) {
|
|
120
|
+
throw new Error(
|
|
121
|
+
"[SixbModels] Configure the selected model in models.audio.transcription, or supply a model when no catalog is configured."
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return selected
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function assertFileSupport(model: TranscriptionModel, sizeBytes: number, mediaType: string): void {
|
|
129
|
+
if (sizeBytes > model.definition.maxInputBytes) {
|
|
130
|
+
throw new RangeError(
|
|
131
|
+
`[SixbModels] Audio exceeds the model's ${model.definition.maxInputBytes}-byte input limit.`
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
if (model.definition.mediaTypes && !model.definition.mediaTypes.includes(mediaType)) {
|
|
135
|
+
throw new TypeError(
|
|
136
|
+
`[SixbModels] Audio media type '${mediaType}' is not supported by the selected model.`
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function estimateReservationCost(
|
|
142
|
+
model: TranscriptionModel,
|
|
143
|
+
sizeBytes: number,
|
|
144
|
+
mediaType: string
|
|
145
|
+
): ModelMoney | undefined {
|
|
146
|
+
try {
|
|
147
|
+
return model.costEstimator?.estimateReservation?.({ sizeBytes, mediaType })
|
|
148
|
+
} catch {
|
|
149
|
+
// Optional pricing cannot bypass an enforced budget: admission fails closed without it.
|
|
150
|
+
return undefined
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async function recordTranscription(
|
|
155
|
+
accounting: AiModelCallRecorder,
|
|
156
|
+
model: TranscriptionModel,
|
|
157
|
+
callId: string,
|
|
158
|
+
metadata: TranscriptionModelResponseMetadata
|
|
159
|
+
): Promise<ModelCallEndEvent> {
|
|
160
|
+
const usage = metadata.usage ?? {}
|
|
161
|
+
const estimate = estimateModelCall(model, {
|
|
162
|
+
usage,
|
|
163
|
+
route: metadata.route,
|
|
164
|
+
responseModelId: metadata.responseModelId,
|
|
165
|
+
})
|
|
166
|
+
const event: ModelCallEndEvent = {
|
|
167
|
+
callId,
|
|
168
|
+
modelKind: "transcription",
|
|
169
|
+
providerId: model.providerId,
|
|
170
|
+
modelId: model.modelId,
|
|
171
|
+
responseId: metadata.providerIds?.responseId ?? callId,
|
|
172
|
+
providerIds: metadata.providerIds,
|
|
173
|
+
responseModelId: metadata.responseModelId,
|
|
174
|
+
usage,
|
|
175
|
+
cost: metadata.reportedCost ? { status: "reported", ...metadata.reportedCost } : estimate,
|
|
176
|
+
...(metadata.reportedCost ? { estimate } : {}),
|
|
177
|
+
route: metadata.route,
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
await accounting.onModelCallEnd(event)
|
|
181
|
+
return event
|
|
182
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { FileRef } from "../../blob-storage/types"
|
|
2
|
+
import type { ModelDefinition } from "../definitions"
|
|
3
|
+
import type { ModelProviderIds, ModelRoute, ModelUsage } from "../events"
|
|
4
|
+
import type { ModelCallCost, ModelCostEstimator, ModelMoney, ModelReportedCost } from "../pricing"
|
|
5
|
+
|
|
6
|
+
export interface TranscriptionModelDefinition extends ModelDefinition {
|
|
7
|
+
readonly kind: "transcription"
|
|
8
|
+
/** Bounds memory consumption before a file is opened. Providers may impose lower limits. */
|
|
9
|
+
readonly maxInputBytes: number
|
|
10
|
+
/** Omitted when the provider does not publish a reliable format list. */
|
|
11
|
+
readonly mediaTypes?: readonly string[]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface TranscriptionModelRequest {
|
|
15
|
+
readonly audio: Uint8Array
|
|
16
|
+
readonly mediaType: string
|
|
17
|
+
readonly signal?: AbortSignal
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface TranscriptionOutput {
|
|
21
|
+
readonly text: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface TranscriptionModelResponseMetadata {
|
|
25
|
+
readonly usage?: ModelUsage
|
|
26
|
+
readonly providerIds?: ModelProviderIds
|
|
27
|
+
readonly responseModelId?: string
|
|
28
|
+
readonly reportedCost?: ModelReportedCost
|
|
29
|
+
readonly route?: ModelRoute
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface TranscriptionModelResult extends TranscriptionModelResponseMetadata {
|
|
33
|
+
readonly output: TranscriptionOutput
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface TranscriptionCostEstimator extends Pick<ModelCostEstimator, "estimate"> {
|
|
37
|
+
/** Return undefined if the request cannot be priced safely before inference. */
|
|
38
|
+
estimateReservation?(input: {
|
|
39
|
+
readonly sizeBytes: number
|
|
40
|
+
readonly mediaType: string
|
|
41
|
+
}): ModelMoney | undefined
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Provider binding. Resolving it may fetch metadata, but must never perform inference. */
|
|
45
|
+
export interface TranscriptionModel {
|
|
46
|
+
readonly providerId: string
|
|
47
|
+
readonly modelId: string
|
|
48
|
+
readonly definition: TranscriptionModelDefinition
|
|
49
|
+
readonly costEstimator?: TranscriptionCostEstimator
|
|
50
|
+
resolve?(): Promise<TranscriptionModel>
|
|
51
|
+
transcribe(request: TranscriptionModelRequest): Promise<TranscriptionModelResult>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface AudioTranscribeInput {
|
|
55
|
+
readonly audio: FileRef
|
|
56
|
+
readonly model?: TranscriptionModel
|
|
57
|
+
readonly signal?: AbortSignal
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface AudioTranscribeResult {
|
|
61
|
+
readonly output: TranscriptionOutput
|
|
62
|
+
readonly usage: ModelUsage
|
|
63
|
+
readonly cost: ModelCallCost
|
|
64
|
+
readonly callId: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface AudioModelsRuntime {
|
|
68
|
+
transcribe(input: AudioTranscribeInput): Promise<AudioTranscribeResult>
|
|
69
|
+
}
|
package/src/models/catalog.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { RuntimeError } from "../runtime/errors"
|
|
2
|
+
import {
|
|
3
|
+
type AudioModelCatalog,
|
|
4
|
+
type AudioModelCatalogInput,
|
|
5
|
+
createAudioCatalog,
|
|
6
|
+
} from "./audio/catalog"
|
|
2
7
|
import { indexModelBindings } from "./catalog-index"
|
|
3
8
|
import { createDecisionCatalog, type DecisionModelCatalog } from "./decision/catalog"
|
|
4
9
|
import type { DecisionModel } from "./decision/types"
|
|
@@ -8,7 +13,12 @@ import {
|
|
|
8
13
|
type ModelDefinition,
|
|
9
14
|
} from "./definitions"
|
|
10
15
|
import { assertEmbeddingModel, type EmbeddingModel } from "./embedding-model"
|
|
11
|
-
import
|
|
16
|
+
import {
|
|
17
|
+
type LanguageModel,
|
|
18
|
+
MODEL_REASONING_LEVELS,
|
|
19
|
+
modelReasoningSupportIssue,
|
|
20
|
+
} from "./language-model"
|
|
21
|
+
import { assertRerankingModel, type RerankingModel } from "./reranking-model"
|
|
12
22
|
|
|
13
23
|
/** Stable identity of a configured provider binding. */
|
|
14
24
|
export interface ModelRef {
|
|
@@ -27,6 +37,15 @@ export interface EmbeddingModelCatalog {
|
|
|
27
37
|
getByRef(ref: ModelRef): EmbeddingModelEntry | null
|
|
28
38
|
}
|
|
29
39
|
|
|
40
|
+
export interface RerankingModelEntry extends ModelRef {
|
|
41
|
+
readonly model: RerankingModel
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface RerankingModelCatalog {
|
|
45
|
+
list(): readonly RerankingModelEntry[]
|
|
46
|
+
getByRef(ref: ModelRef): RerankingModelEntry | null
|
|
47
|
+
}
|
|
48
|
+
|
|
30
49
|
/** The configured language models, with the project default. */
|
|
31
50
|
export interface LanguageModelCatalog {
|
|
32
51
|
readonly default: LanguageModelEntry
|
|
@@ -47,17 +66,22 @@ export interface LanguageModelEntry extends LanguageModelRef {
|
|
|
47
66
|
|
|
48
67
|
/** Models a project allows Sixb to use, organized by technical model kind. */
|
|
49
68
|
export interface ModelCatalog {
|
|
69
|
+
readonly audio?: AudioModelCatalog
|
|
50
70
|
readonly language?: LanguageModelCatalog
|
|
51
71
|
readonly decision?: DecisionModelCatalog
|
|
52
72
|
readonly embedding: EmbeddingModelCatalog
|
|
73
|
+
readonly reranking?: RerankingModelCatalog
|
|
53
74
|
}
|
|
54
75
|
|
|
55
76
|
export interface ModelCatalogInput {
|
|
77
|
+
readonly audio?: AudioModelCatalogInput
|
|
56
78
|
/** Ordered; the first entry is the project default. */
|
|
57
79
|
readonly language?: readonly LanguageModel[]
|
|
58
80
|
/** Ordered; the first entry is the project default decision model. */
|
|
59
81
|
readonly decision?: readonly DecisionModel[]
|
|
60
82
|
readonly embedding?: readonly EmbeddingModel[]
|
|
83
|
+
/** Available rerankers; no default model and no automatic activation. */
|
|
84
|
+
readonly reranking?: readonly RerankingModel[]
|
|
61
85
|
}
|
|
62
86
|
|
|
63
87
|
// Only statically required inputs make their corresponding catalogs required.
|
|
@@ -66,7 +90,14 @@ type ConfiguredModelKinds<TInput> = {
|
|
|
66
90
|
}[keyof ModelCatalog]
|
|
67
91
|
|
|
68
92
|
export type ModelCatalogFor<TInput extends ModelCatalogInput> = ModelCatalog &
|
|
69
|
-
Required<Pick<ModelCatalog, ConfiguredModelKinds<TInput>>>
|
|
93
|
+
Required<Pick<ModelCatalog, ConfiguredModelKinds<TInput>>> &
|
|
94
|
+
([TInput] extends [{ readonly audio: { readonly transcription: readonly unknown[] } }]
|
|
95
|
+
? {
|
|
96
|
+
readonly audio: AudioModelCatalog & {
|
|
97
|
+
readonly transcription: NonNullable<AudioModelCatalog["transcription"]>
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
: unknown)
|
|
70
101
|
|
|
71
102
|
/** Build an immutable catalog while preserving each family's default and empty-list rules. */
|
|
72
103
|
export function createModelCatalog<TInput extends ModelCatalogInput>(
|
|
@@ -80,12 +111,32 @@ export function createModelCatalog(input: ModelCatalogInput): ModelCatalog {
|
|
|
80
111
|
const language = createLanguageCatalog(input.language)
|
|
81
112
|
const embedding = createEmbeddingCatalog(input.embedding)
|
|
82
113
|
const decision = createDecisionCatalog(input.decision)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
114
|
+
const audio = createAudioCatalog(input.audio)
|
|
115
|
+
const reranking = createRerankingCatalog(input.reranking)
|
|
116
|
+
|
|
117
|
+
if (
|
|
118
|
+
!language &&
|
|
119
|
+
!decision &&
|
|
120
|
+
!audio &&
|
|
121
|
+
embedding.list().length === 0 &&
|
|
122
|
+
!reranking?.list().length
|
|
123
|
+
) {
|
|
124
|
+
throw new RuntimeError(
|
|
125
|
+
"[Sixb] Configure at least one language, embedding, decision, audio or reranking model."
|
|
126
|
+
)
|
|
86
127
|
}
|
|
87
128
|
|
|
88
|
-
return Object.freeze({ language, embedding, decision })
|
|
129
|
+
return Object.freeze({ language, embedding, decision, audio, reranking })
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function createRerankingCatalog(
|
|
133
|
+
models: readonly RerankingModel[] | undefined
|
|
134
|
+
): RerankingModelCatalog | undefined {
|
|
135
|
+
if (models === undefined) return undefined
|
|
136
|
+
if (!Array.isArray(models)) {
|
|
137
|
+
throw new RuntimeError("[Sixb] models.reranking must be an array of reranking models.")
|
|
138
|
+
}
|
|
139
|
+
return indexModelBindings(models, "reranking", assertRerankingModel)
|
|
89
140
|
}
|
|
90
141
|
|
|
91
142
|
function createLanguageCatalog(
|
|
@@ -96,7 +147,10 @@ function createLanguageCatalog(
|
|
|
96
147
|
throw new RuntimeError("[Sixb] 'models.language' must be an array of Sixb language models.")
|
|
97
148
|
}
|
|
98
149
|
|
|
99
|
-
const index = indexModelBindings(models, "language",
|
|
150
|
+
const index = indexModelBindings(models, "language", (model, position) => {
|
|
151
|
+
assertLanguageModel(model, position)
|
|
152
|
+
assertDefaultReasoning(model, position)
|
|
153
|
+
})
|
|
100
154
|
const [defaultEntry] = index.list()
|
|
101
155
|
if (!defaultEntry) {
|
|
102
156
|
throw new RuntimeError(
|
|
@@ -117,6 +171,23 @@ function createEmbeddingCatalog(
|
|
|
117
171
|
return indexModelBindings(models ?? [], "embedding", assertEmbeddingModel)
|
|
118
172
|
}
|
|
119
173
|
|
|
174
|
+
// Capabilities known without catalog I/O. Unknown support is accepted: providers fall back to their
|
|
175
|
+
// default when a resolved model turns out not to support the level.
|
|
176
|
+
function assertDefaultReasoning(model: LanguageModel, index: number): void {
|
|
177
|
+
const reasoning: unknown = model.defaultReasoning
|
|
178
|
+
if (reasoning === undefined) return
|
|
179
|
+
if (!(MODEL_REASONING_LEVELS as readonly unknown[]).includes(reasoning)) {
|
|
180
|
+
throw invalidLanguageModel(
|
|
181
|
+
index,
|
|
182
|
+
`expected 'defaultReasoning' to be one of: ${MODEL_REASONING_LEVELS.join(", ")}`
|
|
183
|
+
)
|
|
184
|
+
}
|
|
185
|
+
const issue = modelReasoningSupportIssue(model.definition.capabilities.reasoning, reasoning)
|
|
186
|
+
if (issue !== undefined) {
|
|
187
|
+
throw invalidLanguageModel(index, `default reasoning '${reasoning}' cannot be used: ${issue}`)
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
120
191
|
function assertLanguageModel(model: unknown, index: number): asserts model is LanguageModel {
|
|
121
192
|
if ((typeof model !== "object" && typeof model !== "function") || model === null) {
|
|
122
193
|
throw invalidLanguageModel(index, "expected a Sixb LanguageModel instance")
|
|
@@ -5,7 +5,14 @@ import {
|
|
|
5
5
|
type ModelReasoningCapabilities,
|
|
6
6
|
} from "./language-model"
|
|
7
7
|
|
|
8
|
-
export type ModelKind =
|
|
8
|
+
export type ModelKind =
|
|
9
|
+
| "language"
|
|
10
|
+
| "image"
|
|
11
|
+
| "video"
|
|
12
|
+
| "embedding"
|
|
13
|
+
| "decision"
|
|
14
|
+
| "transcription"
|
|
15
|
+
| "reranking"
|
|
9
16
|
|
|
10
17
|
/** Common catalog identity shared by every present and future model runtime. */
|
|
11
18
|
export interface ModelDefinition {
|
package/src/models/events.ts
CHANGED
|
@@ -46,6 +46,8 @@ export type ModelFinishReason =
|
|
|
46
46
|
| "unknown"
|
|
47
47
|
|
|
48
48
|
export interface ModelUsage {
|
|
49
|
+
/** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */
|
|
50
|
+
readonly audioDurationMs?: number
|
|
49
51
|
readonly inputTokens?: number
|
|
50
52
|
readonly outputTokens?: number
|
|
51
53
|
readonly uncachedInputTokens?: number
|
|
@@ -168,6 +170,7 @@ export type ModelUiChunk =
|
|
|
168
170
|
| { readonly type: "error"; readonly errorText: string }
|
|
169
171
|
|
|
170
172
|
export interface ModelCallEndEvent {
|
|
173
|
+
readonly modelKind?: import("./definitions").ModelKind
|
|
171
174
|
readonly providerIds?: ModelProviderIds
|
|
172
175
|
/** Retained independently when the selected display cost is provider-reported. */
|
|
173
176
|
readonly estimate?: ModelCostEstimate
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Model execution accounting
|
|
2
2
|
|
|
3
|
-
Internal execution and accounting shared by language, embedding and
|
|
3
|
+
Internal execution and accounting shared by language, embedding, decision and reranking calls. Application usage is
|
|
4
4
|
documented in [Usage and limits](../../../../../docs/models/usage-and-limits.md).
|
|
5
5
|
|
|
6
6
|
## Execution boundary
|
|
@@ -43,9 +43,29 @@ unknown input usage and unresolved capacity. Inference is never retried here.
|
|
|
43
43
|
replays accounting only, never inference; see the
|
|
44
44
|
[worker recovery contract](../../../../agent-worker/docs/usage-accounting.md).
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
An Agent run binds its own recorder to its SDK, so calls from its tools share the run's admission,
|
|
47
|
+
failure state and cancellation. Direct provider calls bypass this session. Webhook handlers have no
|
|
48
|
+
bound model execution attempt; they must dispatch an action for accounted calls. A process crash
|
|
49
|
+
before accounting is captured can still leave provider billing outside the ledger.
|
|
50
|
+
|
|
51
|
+
## Reranking flow
|
|
52
|
+
|
|
53
|
+
`reranking.ts` binds the registered catalog to the same session. Object queries resolve only that
|
|
54
|
+
catalog, after semantic authorization and before query embedding. The query executor retrieves
|
|
55
|
+
authorized vector candidates first and sends only profile source text; inference holds no storage
|
|
56
|
+
transaction. Outer limits and property selection apply after ranking.
|
|
57
|
+
|
|
58
|
+
Admission estimates the UTF-8 bytes of each query/document pair divided by four, rounded up, with
|
|
59
|
+
zero output allowance. Actual provider meters are preserved. This is a heuristic, not a tokenizer or provider context guarantee. Calls have
|
|
60
|
+
the shared 30-second cancellation bound, with no inference retry. Accounting precedes cancellation
|
|
61
|
+
and ranking validation. A complete permutation with finite scores is required; ties preserve the
|
|
62
|
+
candidate order. `RerankingModelResponseError` carries metadata from malformed billable responses.
|
|
63
|
+
|
|
64
|
+
Provider charges remain distinct from token usage: absent tokens stay unknown. Token limits
|
|
65
|
+
neither admit nor count reranking or transcription calls (`aiLimitMeterApplies` in the limit
|
|
66
|
+
storage helpers), so their unmetered records cannot make a token meter unavailable. Reported
|
|
67
|
+
costs reconcile monetary reservations; missing tariffs fail admission under cost limits. Recovery
|
|
68
|
+
remains the existing accounting-only replay.
|
|
49
69
|
|
|
50
70
|
## Decision flow
|
|
51
71
|
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import type { ModelsRuntime } from "../generation-types"
|
|
2
|
+
import type { AiModelCallRecorder } from "./model-call-recorder"
|
|
2
3
|
|
|
3
4
|
export interface ModelExecutionAttempt {
|
|
4
5
|
readonly attempt: number
|
|
5
6
|
readonly signal: AbortSignal
|
|
6
7
|
/** Internal durable fence around admission; it must invoke admit exactly once to proceed. */
|
|
7
8
|
readonly embeddingAdmission?: (admit: () => Promise<void>) => Promise<void>
|
|
9
|
+
/**
|
|
10
|
+
* Accounting the execution attempt already owns, such as an Agent run's. Calls then share its
|
|
11
|
+
* admission and failure state instead of opening a second recorder for the same attempt.
|
|
12
|
+
*/
|
|
13
|
+
readonly accounting?: AiModelCallRecorder
|
|
8
14
|
}
|
|
9
15
|
|
|
10
16
|
const bindings = new WeakMap<ModelsRuntime, (input: ModelExecutionAttempt) => void>()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AiModelCallReservationIdentity } from "../../storage"
|
|
2
|
-
import type {
|
|
2
|
+
import type { ModelKind } from "../definitions"
|
|
3
|
+
import type { ModelCostEstimator, ModelMoney } from "../pricing"
|
|
3
4
|
|
|
4
5
|
/** Default output ceiling when a call and its resolved model supply no limit. */
|
|
5
6
|
export const AI_MODEL_CALL_OUTPUT_TOKEN_ALLOWANCE = 4_096
|
|
@@ -24,7 +25,11 @@ export interface AiModelCallAdmissionInput {
|
|
|
24
25
|
readonly callId: string
|
|
25
26
|
readonly providerId: string
|
|
26
27
|
readonly modelId: string
|
|
28
|
+
/** Selects the applicable limit meters; transcription and reranking skip token limits. */
|
|
29
|
+
readonly modelKind?: ModelKind
|
|
27
30
|
readonly costEstimator?: ModelCostEstimator
|
|
31
|
+
/** A non-token estimate, computed by the resolved binding before inference. */
|
|
32
|
+
readonly reservationCost?: ModelMoney
|
|
28
33
|
readonly inputTokens: AiModelCallInputTokenEstimate
|
|
29
34
|
readonly outputTokenAllowance: number
|
|
30
35
|
readonly estimatedTotalTokens?: number
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
aiUsageLimitUnavailableError,
|
|
13
13
|
applicableAiLimitPolicies,
|
|
14
14
|
} from "../../storage/ai-limits/enforcement"
|
|
15
|
+
import { aiLimitMeterApplies } from "../../storage/ai-limits/provider"
|
|
15
16
|
import type {
|
|
16
17
|
AiModelCallAdmissionDecision,
|
|
17
18
|
AiModelCallAdmissionInput,
|
|
@@ -41,7 +42,9 @@ export function createAiModelCallLimitController(input: {
|
|
|
41
42
|
const policies = await input.storage.aiLimits.listPolicies({
|
|
42
43
|
projectId: input.projectId,
|
|
43
44
|
})
|
|
44
|
-
applicable = applicableAiLimitPolicies(policies, subjects)
|
|
45
|
+
applicable = applicableAiLimitPolicies(policies, subjects).filter((policy) =>
|
|
46
|
+
aiLimitMeterApplies(policy.limit.meter, admission.modelKind)
|
|
47
|
+
)
|
|
45
48
|
} catch (error) {
|
|
46
49
|
throw limitStorageUnavailable(error)
|
|
47
50
|
}
|
|
@@ -63,6 +66,7 @@ export function createAiModelCallLimitController(input: {
|
|
|
63
66
|
...reservationIdentity(admission),
|
|
64
67
|
subjects,
|
|
65
68
|
estimates,
|
|
69
|
+
...(admission.modelKind === undefined ? {} : { modelKind: admission.modelKind }),
|
|
66
70
|
})
|
|
67
71
|
} catch (error) {
|
|
68
72
|
throw limitStorageUnavailable(error)
|
|
@@ -94,24 +98,30 @@ function reservationEstimates(
|
|
|
94
98
|
input: AiModelCallAdmissionInput,
|
|
95
99
|
needsCost: boolean
|
|
96
100
|
): readonly AiLimitQuantity[] {
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
const estimates: AiLimitQuantity[] = []
|
|
102
|
+
if (input.inputTokens.status === "estimated" && input.estimatedTotalTokens !== undefined) {
|
|
103
|
+
estimates.push({ meter: "tokens.total", amount: input.estimatedTotalTokens })
|
|
99
104
|
}
|
|
100
|
-
|
|
101
|
-
{ meter: "tokens.total", amount: input.estimatedTotalTokens },
|
|
102
|
-
]
|
|
105
|
+
|
|
103
106
|
if (needsCost) {
|
|
104
107
|
try {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
let money = input.reservationCost
|
|
109
|
+
if (money == null && input.inputTokens.status === "estimated") {
|
|
110
|
+
money = input.costEstimator?.estimateReservation?.({
|
|
111
|
+
inputTokens: input.inputTokens.tokens,
|
|
112
|
+
outputTokens: input.outputTokenAllowance,
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (money) {
|
|
117
|
+
estimates.push({ meter: "cost.catalogEstimated", amount: money })
|
|
118
|
+
}
|
|
110
119
|
} catch {
|
|
111
120
|
// An unavailable price must not prevent a token-only policy from being evaluated.
|
|
112
121
|
return estimates
|
|
113
122
|
}
|
|
114
123
|
}
|
|
124
|
+
|
|
115
125
|
return estimates
|
|
116
126
|
}
|
|
117
127
|
|