@sixb/core 0.1.15 → 0.1.17
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 +25 -25
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/worker.js +1 -1
- package/dist/agents/index.js +41 -40
- package/dist/agents/index.js.map +1 -1
- package/dist/auth/index.js +5 -5
- package/dist/authorization/index.js +2 -2
- 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/index.js +5 -3
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/internal.d.ts +2 -0
- package/dist/blob-storage/internal.d.ts.map +1 -0
- package/dist/blob-storage/internal.js +11 -0
- package/dist/blob-storage/internal.js.map +9 -0
- package/dist/bootstrap/index.js +45 -44
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/{chunk-wem5vqjw.js → chunk-10styjgk.js} +18 -13
- package/dist/{chunk-wem5vqjw.js.map → chunk-10styjgk.js.map} +3 -3
- package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
- package/dist/chunk-1hqwggsn.js.map +12 -0
- package/dist/{chunk-q3grgzp1.js → chunk-23xs4qp9.js} +2 -2
- package/dist/{chunk-vef6qa14.js → chunk-2am3db31.js} +2 -2
- package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
- package/dist/{chunk-p0nbkys4.js → chunk-33saed7g.js} +1 -1
- package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
- package/dist/chunk-3rrezgyc.js.map +15 -0
- package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
- package/dist/chunk-4as3wt1c.js.map +12 -0
- package/dist/chunk-4ra628t7.js +88 -0
- package/dist/chunk-4ra628t7.js.map +10 -0
- package/dist/{chunk-mmac1mp6.js → chunk-52c5zb0z.js} +2 -2
- package/dist/{chunk-8fjmqjyx.js → chunk-5be2ath4.js} +1 -1
- package/dist/{chunk-2fv8sajb.js → chunk-5thzcb8g.js} +2 -2
- package/dist/{chunk-fjw417jf.js → chunk-5yd8cchh.js} +1143 -784
- package/dist/chunk-5yd8cchh.js.map +66 -0
- package/dist/{chunk-2tz5vnvz.js → chunk-6wbm6ymz.js} +235 -41
- package/dist/{chunk-2tz5vnvz.js.map → chunk-6wbm6ymz.js.map} +8 -6
- package/dist/{chunk-py2dw8cw.js → chunk-7ecp4v7a.js} +26 -19
- package/dist/chunk-7ecp4v7a.js.map +17 -0
- 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-1jvq82rp.js → chunk-9g6jz9kk.js} +5 -5
- package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
- package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
- package/dist/{chunk-8w27xf9e.js → chunk-a7er86jd.js} +1 -1
- package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
- package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
- package/dist/chunk-b9affek3.js +261 -0
- package/dist/chunk-b9affek3.js.map +12 -0
- package/dist/{chunk-bxx3ms5t.js → chunk-c2rga5cx.js} +2 -2
- package/dist/{chunk-dsfw1bdr.js → chunk-cnb5kv05.js} +2 -2
- package/dist/chunk-d62kjtbg.js.map +2 -2
- package/dist/{chunk-dqkd3kdj.js → chunk-dam456ve.js} +234 -35
- package/dist/{chunk-dqkd3kdj.js.map → chunk-dam456ve.js.map} +7 -5
- package/dist/{chunk-n5t4mq6z.js → chunk-e67ynxcr.js} +3 -3
- 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-6q7c68yx.js → chunk-f1xh7a32.js} +3 -3
- package/dist/{chunk-z708gemf.js → chunk-fggq3d9k.js} +450 -799
- package/dist/chunk-fggq3d9k.js.map +49 -0
- package/dist/{chunk-7jc21943.js → chunk-gf7yht60.js} +4 -4
- package/dist/chunk-h8teetr0.js +9 -0
- package/dist/chunk-h8teetr0.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-ffwvdgk1.js → chunk-jjrn5v0p.js} +1 -1
- package/dist/{chunk-r5sc1d2b.js → chunk-jnfxmr3f.js} +1 -1
- package/dist/{chunk-y0zmae99.js → chunk-k4g51s47.js} +3 -3
- package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
- package/dist/chunk-kpx7jrmn.js.map +12 -0
- package/dist/{chunk-p1683c0v.js → chunk-kyjcwqz6.js} +5 -2
- package/dist/{chunk-p1683c0v.js.map → chunk-kyjcwqz6.js.map} +3 -3
- package/dist/{chunk-3c90jvfj.js → chunk-pja9jfz6.js} +742 -583
- package/dist/chunk-pja9jfz6.js.map +19 -0
- package/dist/chunk-pqajwytd.js.map +1 -1
- 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-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
- package/dist/chunk-rj69qcrd.js.map +11 -0
- package/dist/{chunk-d8yes9yx.js → chunk-rpxz486p.js} +32 -5
- package/dist/{chunk-d8yes9yx.js.map → chunk-rpxz486p.js.map} +4 -4
- package/dist/{chunk-drz59ve0.js → chunk-rx7h5fdx.js} +1 -1
- package/dist/{chunk-ky7zpbtt.js → chunk-s7ftxrdr.js} +106 -8
- package/dist/chunk-s7ftxrdr.js.map +22 -0
- package/dist/{chunk-yfppyaty.js → chunk-sk0hcjsz.js} +1 -1
- package/dist/{chunk-qne45xqq.js → chunk-svabwqdq.js} +2 -2
- package/dist/{chunk-xr7y35yj.js → chunk-t9shqx3w.js} +2 -2
- package/dist/{chunk-4jph1t3v.js → chunk-tjjgy3z4.js} +27 -24
- package/dist/{chunk-4jph1t3v.js.map → chunk-tjjgy3z4.js.map} +4 -4
- package/dist/{chunk-ex8s8wsk.js → chunk-vp3z1ckh.js} +42 -10
- package/dist/{chunk-ex8s8wsk.js.map → chunk-vp3z1ckh.js.map} +7 -6
- package/dist/{chunk-adbve9zt.js → chunk-vre348sb.js} +2 -2
- package/dist/{chunk-a4g5yjm0.js → chunk-w9yycd3t.js} +1 -1
- package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
- package/dist/chunk-wt4szfec.js.map +14 -0
- package/dist/{chunk-wd34wnsy.js → chunk-xcy5ddha.js} +6 -6
- package/dist/{chunk-3nx8vj5a.js → chunk-xyvy73tj.js} +5 -3
- package/dist/chunk-xyvy73tj.js.map +12 -0
- package/dist/datasets/write.js +1 -1
- package/dist/execution/agent.js +38 -37
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +3 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +36 -35
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +37 -36
- package/dist/execution/request.js.map +2 -2
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -59
- 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 +2 -2
- 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 +31 -32
- 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 +23 -1
- 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/embedding-model.d.ts +4 -0
- package/dist/models/embedding-model.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/index.js +22 -22
- 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.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 +7 -3
- package/dist/models/index.js.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/index.js +25 -25
- package/dist/objects/query/executor.d.ts +2 -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 +24 -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.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/indexing-generate.d.ts.map +1 -1
- package/dist/objects/vectors/profile.d.ts.map +1 -1
- package/dist/objects/vectors/query.d.ts +1 -1
- package/dist/objects/vectors/query.d.ts.map +1 -1
- package/dist/objects/vectors/resolve-query.d.ts.map +1 -1
- package/dist/objects/vectors/types.d.ts +1 -1
- package/dist/objects/vectors/types.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +13 -4
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +3 -3
- package/dist/ontology/internal.js +2 -2
- package/dist/ontology/query-capabilities.d.ts +1 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +20 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/vector-profiles.d.ts.map +1 -1
- package/dist/pipelines/index.js +23 -23
- package/dist/projections/internal.js +22 -22
- 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/host.d.ts +1 -0
- 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 +28 -26
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/public-origin.d.ts +10 -0
- package/dist/runtime/public-origin.d.ts.map +1 -0
- package/dist/runtime/sixb.d.ts +1 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +12 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +5 -5
- package/dist/shares/internal.js +19 -19
- package/dist/storage/agents/provider.js +2 -2
- 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 +6 -6
- 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 +5 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +30 -30
- 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 +8 -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 +2 -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 +6 -6
- package/dist/syncs/index.js +24 -24
- 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 +2548 -1489
- 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 +20 -20
- 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/index.js +42 -41
- package/dist/workflows/index.js.map +1 -1
- package/package.json +7 -1
- package/src/actions/types/context.ts +5 -2
- package/src/blob-storage/download-urls.ts +138 -0
- package/src/blob-storage/execution.ts +32 -1
- package/src/blob-storage/internal.ts +1 -0
- package/src/execution/authorized-object-reader.ts +8 -1
- package/src/index.ts +25 -0
- 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 +52 -5
- package/src/models/definitions.ts +8 -1
- package/src/models/embedding-model.ts +12 -0
- package/src/models/events.ts +3 -0
- package/src/models/execution/README.md +20 -1
- package/src/models/execution/embedding.ts +5 -1
- 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 +1 -0
- package/src/models/execution/model-call-recovery.ts +1 -0
- package/src/models/execution/reranking.ts +137 -0
- package/src/models/execution/usage.ts +1 -0
- package/src/models/execution.ts +5 -1
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +32 -0
- package/src/models/pricing.ts +2 -1
- package/src/models/reranking-model.ts +114 -0
- package/src/objects/query/executor.ts +42 -2
- 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 +33 -10
- 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 +14 -2
- package/src/objects/vectors/handle.ts +1 -1
- package/src/objects/vectors/indexing-dispatch.ts +83 -0
- package/src/objects/vectors/indexing-generate.ts +5 -1
- package/src/objects/vectors/profile.ts +2 -0
- package/src/objects/vectors/query.ts +21 -4
- package/src/objects/vectors/resolve-query.ts +9 -5
- package/src/objects/vectors/types.ts +3 -1
- package/src/ontology/builders.ts +22 -7
- package/src/ontology/index.ts +2 -0
- package/src/ontology/query-capabilities.ts +1 -1
- package/src/ontology/types.ts +21 -0
- package/src/ontology/validation/query.ts +57 -0
- package/src/ontology/vector-profiles.ts +1 -0
- package/src/query.ts +4 -0
- package/src/queues/in-memory.ts +54 -19
- package/src/queues/types.ts +4 -0
- package/src/runtime/host.ts +28 -1
- package/src/runtime/index.ts +1 -0
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/public-origin.ts +33 -0
- package/src/runtime/sixb.ts +13 -2
- package/src/runtime/types.ts +12 -2
- 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 +31 -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 +2 -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/dist/chunk-3c90jvfj.js.map +0 -15
- package/dist/chunk-3nx8vj5a.js.map +0 -12
- package/dist/chunk-7ytf06d3.js +0 -113
- package/dist/chunk-7ytf06d3.js.map +0 -10
- package/dist/chunk-a0073121.js.map +0 -12
- package/dist/chunk-fjw417jf.js.map +0 -62
- package/dist/chunk-g4rbm4a6.js.map +0 -15
- 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-ky7zpbtt.js.map +0 -19
- package/dist/chunk-mdnw7nj8.js.map +0 -15
- package/dist/chunk-py2dw8cw.js.map +0 -17
- package/dist/chunk-s3csryxe.js.map +0 -11
- package/dist/chunk-xnx96gfy.js.map +0 -15
- package/dist/chunk-z708gemf.js.map +0 -50
- 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-q3grgzp1.js.map → chunk-23xs4qp9.js.map} +0 -0
- /package/dist/{chunk-vef6qa14.js.map → chunk-2am3db31.js.map} +0 -0
- /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
- /package/dist/{chunk-p0nbkys4.js.map → chunk-33saed7g.js.map} +0 -0
- /package/dist/{chunk-mmac1mp6.js.map → chunk-52c5zb0z.js.map} +0 -0
- /package/dist/{chunk-8fjmqjyx.js.map → chunk-5be2ath4.js.map} +0 -0
- /package/dist/{chunk-2fv8sajb.js.map → chunk-5thzcb8g.js.map} +0 -0
- /package/dist/{chunk-1jvq82rp.js.map → chunk-9g6jz9kk.js.map} +0 -0
- /package/dist/{chunk-8w27xf9e.js.map → chunk-a7er86jd.js.map} +0 -0
- /package/dist/{chunk-bxx3ms5t.js.map → chunk-c2rga5cx.js.map} +0 -0
- /package/dist/{chunk-dsfw1bdr.js.map → chunk-cnb5kv05.js.map} +0 -0
- /package/dist/{chunk-n5t4mq6z.js.map → chunk-e67ynxcr.js.map} +0 -0
- /package/dist/{chunk-6q7c68yx.js.map → chunk-f1xh7a32.js.map} +0 -0
- /package/dist/{chunk-7jc21943.js.map → chunk-gf7yht60.js.map} +0 -0
- /package/dist/{chunk-ffwvdgk1.js.map → chunk-jjrn5v0p.js.map} +0 -0
- /package/dist/{chunk-r5sc1d2b.js.map → chunk-jnfxmr3f.js.map} +0 -0
- /package/dist/{chunk-y0zmae99.js.map → chunk-k4g51s47.js.map} +0 -0
- /package/dist/{chunk-drz59ve0.js.map → chunk-rx7h5fdx.js.map} +0 -0
- /package/dist/{chunk-yfppyaty.js.map → chunk-sk0hcjsz.js.map} +0 -0
- /package/dist/{chunk-qne45xqq.js.map → chunk-svabwqdq.js.map} +0 -0
- /package/dist/{chunk-xr7y35yj.js.map → chunk-t9shqx3w.js.map} +0 -0
- /package/dist/{chunk-adbve9zt.js.map → chunk-vre348sb.js.map} +0 -0
- /package/dist/{chunk-a4g5yjm0.js.map → chunk-w9yycd3t.js.map} +0 -0
- /package/dist/{chunk-wd34wnsy.js.map → chunk-xcy5ddha.js.map} +0 -0
|
@@ -6,6 +6,11 @@ export interface MaterializationBatching {
|
|
|
6
6
|
readonly statePageRows: number
|
|
7
7
|
readonly planChunkRows: number
|
|
8
8
|
readonly planChunkBytes: number
|
|
9
|
+
/**
|
|
10
|
+
* Stale identities a projection commit plans again inside its own transaction. A refresh that
|
|
11
|
+
* finds more gives them back to a round outside it.
|
|
12
|
+
*/
|
|
13
|
+
readonly transactionReplanRows: number
|
|
9
14
|
}
|
|
10
15
|
|
|
11
16
|
export const DEFAULT_MATERIALIZATION_BATCHING: MaterializationBatching = Object.freeze({
|
|
@@ -17,6 +22,8 @@ export const DEFAULT_MATERIALIZATION_BATCHING: MaterializationBatching = Object.
|
|
|
17
22
|
statePageRows: 1_000,
|
|
18
23
|
planChunkRows: 1_000,
|
|
19
24
|
planChunkBytes: 4 * 1024 * 1024,
|
|
25
|
+
// One state page: a few hundred milliseconds of planning while the commit holds its locks.
|
|
26
|
+
transactionReplanRows: 1_000,
|
|
20
27
|
})
|
|
21
28
|
|
|
22
29
|
/** Internal test/provider override. Application configuration never exposes these chunk targets. */
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
type MaterializerExecution,
|
|
33
33
|
prepareMaterializerExecution,
|
|
34
34
|
} from "../execution/scope"
|
|
35
|
-
import {
|
|
35
|
+
import { applyStagedWork } from "../execution/work-executor"
|
|
36
36
|
import type { MaterializerCommand } from "../materializer"
|
|
37
37
|
import {
|
|
38
38
|
createProjectionTelemetryIdempotencyKey,
|
|
@@ -397,20 +397,9 @@ async function executeTelemetryTransaction(
|
|
|
397
397
|
storage.ontology.materializations,
|
|
398
398
|
session,
|
|
399
399
|
command.input,
|
|
400
|
-
command.identity,
|
|
401
|
-
origin,
|
|
402
|
-
{
|
|
403
|
-
correlationId: command.execution.correlationId,
|
|
404
|
-
attribution: command.execution.attribution,
|
|
405
|
-
}
|
|
406
|
-
)
|
|
407
|
-
await drainStagedWork(context, storage, session)
|
|
408
|
-
const eventCount = await drainStagedEvents(
|
|
409
|
-
context,
|
|
410
|
-
storage.ontology.materializations,
|
|
411
|
-
session,
|
|
412
400
|
command.identity
|
|
413
401
|
)
|
|
402
|
+
const eventCount = await applyStagedWork(context, storage, session)
|
|
414
403
|
const result: TelemetryCommitResult = {
|
|
415
404
|
kind: "telemetry",
|
|
416
405
|
commitId: command.identity.commitId,
|
|
@@ -475,7 +464,6 @@ function telemetryCommit(
|
|
|
475
464
|
requestHash: command.identity.requestHash,
|
|
476
465
|
executionId: command.execution.executionId,
|
|
477
466
|
origin,
|
|
478
|
-
...command.execution.attribution,
|
|
479
467
|
ontologyRevision: command.ontologyRevision,
|
|
480
468
|
intent: telemetryCommitIntent(command),
|
|
481
469
|
committedAt: command.identity.committedAt,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { stableJsonStringify } from "../../json"
|
|
2
2
|
import { MaterializationObjectNotFoundError } from "../../materialization/errors"
|
|
3
3
|
import type {
|
|
4
|
-
OntologyMaterializationOrigin,
|
|
5
4
|
OntologyObjectRef,
|
|
6
5
|
TelemetryAppend,
|
|
7
6
|
TelemetryPointWrite,
|
|
@@ -29,7 +28,6 @@ import {
|
|
|
29
28
|
import { diffEffectiveObject } from "../effective/diff"
|
|
30
29
|
import { loadState, oneStateRequest } from "../effective/load-state"
|
|
31
30
|
import { validateEffectiveObject } from "../effective/validate"
|
|
32
|
-
import type { MaterializerAttribution } from "../execution/scope"
|
|
33
31
|
import { stageWorkBounded } from "../execution/work-executor"
|
|
34
32
|
import {
|
|
35
33
|
appendEffectiveObjectWork,
|
|
@@ -62,13 +60,6 @@ interface TelemetryObjectGroup {
|
|
|
62
60
|
interface TelemetryPlanContext {
|
|
63
61
|
readonly input: TelemetryAppend
|
|
64
62
|
readonly identity: TimedCommitIdentity
|
|
65
|
-
readonly origin: OntologyMaterializationOrigin
|
|
66
|
-
readonly event: TelemetryEventContext
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
interface TelemetryEventContext {
|
|
70
|
-
readonly correlationId: string
|
|
71
|
-
readonly attribution: MaterializerAttribution
|
|
72
63
|
}
|
|
73
64
|
|
|
74
65
|
export async function planTelemetryAppend(
|
|
@@ -76,12 +67,10 @@ export async function planTelemetryAppend(
|
|
|
76
67
|
storage: OntologyMaterializationStorage,
|
|
77
68
|
session: MaterializationSession,
|
|
78
69
|
input: TelemetryAppend,
|
|
79
|
-
identity: TimedCommitIdentity
|
|
80
|
-
origin: OntologyMaterializationOrigin,
|
|
81
|
-
event: TelemetryEventContext
|
|
70
|
+
identity: TimedCommitIdentity
|
|
82
71
|
): Promise<TelemetryPlanCounts> {
|
|
83
72
|
const counts = emptyTelemetryCounts()
|
|
84
|
-
const planContext = { input, identity
|
|
73
|
+
const planContext = { input, identity }
|
|
85
74
|
const objects = await loadTelemetryObjects(context, storage, session, input.points)
|
|
86
75
|
const existingPoints = await loadExistingPoints(context, storage, session, input.points)
|
|
87
76
|
for (const group of telemetryObjectGroups(input.points)) {
|
|
@@ -137,7 +126,7 @@ async function planTelemetryObject(
|
|
|
137
126
|
for (let start = group.start; start < group.end; start += context.batching.statePageRows) {
|
|
138
127
|
const end = Math.min(group.end, start + context.batching.statePageRows)
|
|
139
128
|
const points = planContext.input.points.slice(start, end)
|
|
140
|
-
const work = planTelemetryChunk(
|
|
129
|
+
const work = planTelemetryChunk(planContext, points, existingPoints, latest, counts)
|
|
141
130
|
await stageWorkBounded(context, storage, session, work)
|
|
142
131
|
}
|
|
143
132
|
|
|
@@ -164,7 +153,6 @@ async function loadTelemetryObjects(
|
|
|
164
153
|
}
|
|
165
154
|
|
|
166
155
|
function planTelemetryChunk(
|
|
167
|
-
context: Pick<MaterializerContext, "projectId">,
|
|
168
156
|
planContext: TelemetryPlanContext,
|
|
169
157
|
points: readonly TelemetryPointWrite[],
|
|
170
158
|
existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,
|
|
@@ -173,7 +161,7 @@ function planTelemetryChunk(
|
|
|
173
161
|
): MaterializationWorkRecord[] {
|
|
174
162
|
const work: MaterializationWorkRecord[] = []
|
|
175
163
|
for (const point of points) {
|
|
176
|
-
work.push(...planTelemetryPoint(
|
|
164
|
+
work.push(...planTelemetryPoint(planContext, point, existingPoints, latest, counts))
|
|
177
165
|
}
|
|
178
166
|
return work
|
|
179
167
|
}
|
|
@@ -205,7 +193,6 @@ async function loadExistingPoints(
|
|
|
205
193
|
}
|
|
206
194
|
|
|
207
195
|
function planTelemetryPoint(
|
|
208
|
-
context: Pick<MaterializerContext, "projectId">,
|
|
209
196
|
planContext: TelemetryPlanContext,
|
|
210
197
|
point: TelemetryPointWrite,
|
|
211
198
|
existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,
|
|
@@ -223,7 +210,7 @@ function planTelemetryPoint(
|
|
|
223
210
|
} else {
|
|
224
211
|
countTelemetryPointChange(counts, existing)
|
|
225
212
|
work.push(planWork(telemetryPointUpsert(point, existing, planContext.identity), sortKey))
|
|
226
|
-
work.push(eventWork(
|
|
213
|
+
work.push(eventWork(buildTelemetryMaterializationEventDraft(point)))
|
|
227
214
|
}
|
|
228
215
|
|
|
229
216
|
updateLatestPoint(latest, point, existing, unchanged, planContext.identity)
|
|
@@ -282,15 +269,6 @@ function storedTelemetryPointWithUnit<T extends object>(
|
|
|
282
269
|
return { ...point, unit }
|
|
283
270
|
}
|
|
284
271
|
|
|
285
|
-
function buildTelemetryEvent(
|
|
286
|
-
context: Pick<MaterializerContext, "projectId">,
|
|
287
|
-
planContext: TelemetryPlanContext,
|
|
288
|
-
point: TelemetryPointWrite
|
|
289
|
-
) {
|
|
290
|
-
const eventContext = telemetryEventContext(context, planContext)
|
|
291
|
-
return buildTelemetryMaterializationEventDraft({ ...eventContext, point })
|
|
292
|
-
}
|
|
293
|
-
|
|
294
272
|
function updateLatestPoint(
|
|
295
273
|
latest: Map<string, StoredTelemetryPoint>,
|
|
296
274
|
point: TelemetryPointWrite,
|
|
@@ -341,26 +319,11 @@ async function stageTelemetryObjectPlan(
|
|
|
341
319
|
const items: MaterializationPlanWorkItem[] = []
|
|
342
320
|
appendEffectiveObjectWork(items, change)
|
|
343
321
|
work.push(...items.map((item) => planWork(item, sortKey)))
|
|
344
|
-
|
|
345
|
-
work.push(eventWork(buildObjectMaterializationEventDraft({ ...eventContext, change })))
|
|
322
|
+
work.push(eventWork(buildObjectMaterializationEventDraft(change)))
|
|
346
323
|
}
|
|
347
324
|
await stageWorkBounded(context, storage, session, work)
|
|
348
325
|
}
|
|
349
326
|
|
|
350
|
-
function telemetryEventContext(
|
|
351
|
-
context: Pick<MaterializerContext, "projectId">,
|
|
352
|
-
planContext: TelemetryPlanContext
|
|
353
|
-
) {
|
|
354
|
-
return {
|
|
355
|
-
projectId: context.projectId,
|
|
356
|
-
commitId: planContext.identity.commitId,
|
|
357
|
-
committedAt: planContext.identity.committedAt,
|
|
358
|
-
origin: planContext.origin,
|
|
359
|
-
correlationId: planContext.event.correlationId,
|
|
360
|
-
attribution: planContext.event.attribution,
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
327
|
function emptyTelemetryCounts(): MutableTelemetryPlanCounts {
|
|
365
328
|
return {
|
|
366
329
|
pointsCreated: 0,
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ModelRef } from "../catalog"
|
|
2
|
+
import { indexModelBindings } from "../catalog-index"
|
|
3
|
+
import type { TranscriptionModel } from "./types"
|
|
4
|
+
|
|
5
|
+
export interface TranscriptionModelEntry extends ModelRef {
|
|
6
|
+
readonly model: TranscriptionModel
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface TranscriptionModelCatalog {
|
|
10
|
+
readonly default: TranscriptionModelEntry
|
|
11
|
+
list(): readonly TranscriptionModelEntry[]
|
|
12
|
+
getByRef(ref: ModelRef): TranscriptionModelEntry | null
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface AudioModelCatalog {
|
|
16
|
+
readonly transcription?: TranscriptionModelCatalog
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface AudioModelCatalogInput {
|
|
20
|
+
/** Ordered; the first entry is the default transcriber. */
|
|
21
|
+
readonly transcription?: readonly TranscriptionModel[]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function createAudioCatalog(
|
|
25
|
+
input: AudioModelCatalogInput | undefined
|
|
26
|
+
): AudioModelCatalog | undefined {
|
|
27
|
+
if (input === undefined) return undefined
|
|
28
|
+
if (
|
|
29
|
+
!input ||
|
|
30
|
+
typeof input !== "object" ||
|
|
31
|
+
Array.isArray(input) ||
|
|
32
|
+
!Array.isArray(input.transcription)
|
|
33
|
+
) {
|
|
34
|
+
throw new TypeError(
|
|
35
|
+
"[Sixb] models.audio.transcription must be a nonempty array of transcription models."
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const index = indexModelBindings(
|
|
40
|
+
input.transcription,
|
|
41
|
+
"audio.transcription",
|
|
42
|
+
assertTranscriptionModel
|
|
43
|
+
)
|
|
44
|
+
const [defaultEntry] = index.list()
|
|
45
|
+
if (!defaultEntry) {
|
|
46
|
+
throw new TypeError("[Sixb] models.audio.transcription must contain at least one model.")
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return Object.freeze({ transcription: Object.freeze({ ...index, default: defaultEntry }) })
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function assertTranscriptionModel(model: unknown): asserts model is TranscriptionModel {
|
|
53
|
+
const candidate = model as Partial<TranscriptionModel> | null
|
|
54
|
+
const definition = candidate?.definition
|
|
55
|
+
if (
|
|
56
|
+
!candidate ||
|
|
57
|
+
!isValidId(candidate.providerId) ||
|
|
58
|
+
!isValidId(candidate.modelId) ||
|
|
59
|
+
typeof candidate.transcribe !== "function" ||
|
|
60
|
+
definition?.kind !== "transcription" ||
|
|
61
|
+
definition.providerId !== candidate.providerId ||
|
|
62
|
+
definition.modelId !== candidate.modelId
|
|
63
|
+
) {
|
|
64
|
+
throw invalidModel()
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!Number.isSafeInteger(definition.maxInputBytes) || definition.maxInputBytes <= 0) {
|
|
68
|
+
throw invalidModel()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const mediaTypes = definition.mediaTypes
|
|
72
|
+
if (
|
|
73
|
+
mediaTypes !== undefined &&
|
|
74
|
+
(!Array.isArray(mediaTypes) ||
|
|
75
|
+
mediaTypes.length === 0 ||
|
|
76
|
+
!mediaTypes.every((type) => typeof type === "string" && /^audio\/[a-z0-9.+-]+$/.test(type)))
|
|
77
|
+
) {
|
|
78
|
+
throw invalidModel()
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function isValidId(value: unknown): value is string {
|
|
83
|
+
return typeof value === "string" && value.length > 0 && value.trim() === value
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function invalidModel(): TypeError {
|
|
87
|
+
return new TypeError(
|
|
88
|
+
"[SixbModels] Invalid transcription model identity, definition or input limits."
|
|
89
|
+
)
|
|
90
|
+
}
|
|
@@ -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
|
+
}
|