@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
package/src/security/registry.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { type ResolvedRole, resolveRoleGrants } from "../authorization"
|
|
2
2
|
import { APPLICATION_IDS } from "./applications"
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
GroupDefinition,
|
|
5
|
+
MarkingDefinition,
|
|
6
|
+
MembershipPolicyDefinition,
|
|
7
|
+
RoleDefinition,
|
|
8
|
+
} from "./types"
|
|
4
9
|
import { validateSecurityDefinitionsAtStartup } from "./validation"
|
|
5
10
|
|
|
6
11
|
/** Read-only access to validated security definitions and resolved role grants. */
|
|
7
12
|
export interface SecurityDefinitionCatalog {
|
|
13
|
+
listMarkings(): readonly MarkingDefinition[]
|
|
14
|
+
getMarkingById(markingId: string): MarkingDefinition | null
|
|
8
15
|
listGroups(): readonly GroupDefinition[]
|
|
9
16
|
getGroupById(groupId: string): GroupDefinition | null
|
|
10
17
|
listRoles(): readonly RoleDefinition[]
|
|
@@ -15,6 +22,7 @@ export interface SecurityDefinitionCatalog {
|
|
|
15
22
|
}
|
|
16
23
|
|
|
17
24
|
export interface SecurityRegistryOptions {
|
|
25
|
+
readonly markings?: readonly MarkingDefinition[]
|
|
18
26
|
readonly groups?: readonly GroupDefinition[]
|
|
19
27
|
readonly roles?: readonly RoleDefinition[]
|
|
20
28
|
readonly membershipPolicies?: readonly MembershipPolicyDefinition[]
|
|
@@ -32,6 +40,7 @@ export interface SecurityRegistryOptions {
|
|
|
32
40
|
}
|
|
33
41
|
|
|
34
42
|
export class SecurityRegistry implements SecurityDefinitionCatalog {
|
|
43
|
+
private readonly markingsById: ReadonlyMap<string, MarkingDefinition>
|
|
35
44
|
private readonly groupsById: ReadonlyMap<string, GroupDefinition>
|
|
36
45
|
private readonly rolesById: ReadonlyMap<string, RoleDefinition>
|
|
37
46
|
private readonly membershipPoliciesById: ReadonlyMap<string, MembershipPolicyDefinition>
|
|
@@ -39,6 +48,7 @@ export class SecurityRegistry implements SecurityDefinitionCatalog {
|
|
|
39
48
|
|
|
40
49
|
constructor(input: SecurityRegistryOptions) {
|
|
41
50
|
const definitions = validateSecurityDefinitionsAtStartup({
|
|
51
|
+
markings: input.markings ?? [],
|
|
42
52
|
groups: input.groups ?? [],
|
|
43
53
|
roles: input.roles ?? [],
|
|
44
54
|
membershipPolicies: input.membershipPolicies ?? [],
|
|
@@ -71,6 +81,7 @@ export class SecurityRegistry implements SecurityDefinitionCatalog {
|
|
|
71
81
|
getSubTypes: input.getSubTypes ?? (() => []),
|
|
72
82
|
}
|
|
73
83
|
|
|
84
|
+
this.markingsById = definitions.markingsById
|
|
74
85
|
this.groupsById = definitions.groupsById
|
|
75
86
|
this.rolesById = definitions.rolesById
|
|
76
87
|
this.membershipPoliciesById = definitions.membershipPoliciesById
|
|
@@ -78,9 +89,18 @@ export class SecurityRegistry implements SecurityDefinitionCatalog {
|
|
|
78
89
|
id: role.id,
|
|
79
90
|
grantedToGroupIds: role.grantedToGroupIds,
|
|
80
91
|
grants: resolveRoleGrants(role, universe),
|
|
92
|
+
clearances: new Set(role.clearances ?? []),
|
|
81
93
|
}))
|
|
82
94
|
}
|
|
83
95
|
|
|
96
|
+
listMarkings(): readonly MarkingDefinition[] {
|
|
97
|
+
return [...this.markingsById.values()]
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
getMarkingById(markingId: string): MarkingDefinition | null {
|
|
101
|
+
return this.markingsById.get(markingId) ?? null
|
|
102
|
+
}
|
|
103
|
+
|
|
84
104
|
listGroups(): readonly GroupDefinition[] {
|
|
85
105
|
return [...this.groupsById.values()]
|
|
86
106
|
}
|
package/src/security/types.ts
CHANGED
|
@@ -7,6 +7,28 @@ export interface GroupDefinition<TId extends string = string> {
|
|
|
7
7
|
readonly description?: string
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A classification carried by sensitive properties and dataset columns.
|
|
12
|
+
*
|
|
13
|
+
* A principal reads a marked value only when one of its roles lists the marking in `clearances`.
|
|
14
|
+
* No grant bypasses a marking.
|
|
15
|
+
*/
|
|
16
|
+
export interface MarkingDefinition<TId extends string = string> {
|
|
17
|
+
readonly kind: "marking"
|
|
18
|
+
readonly id: TId
|
|
19
|
+
readonly label?: string
|
|
20
|
+
readonly description?: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Why a value was omitted from a read. */
|
|
24
|
+
export type RedactionReason = "missing_clearance"
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Values omitted from a read, keyed by property id or column name. A redacted value is absent,
|
|
28
|
+
* never `null`.
|
|
29
|
+
*/
|
|
30
|
+
export type Redactions = Readonly<Record<string, { readonly reason: RedactionReason }>>
|
|
31
|
+
|
|
10
32
|
/**
|
|
11
33
|
* A group named either by its definition or by its id.
|
|
12
34
|
*
|
|
@@ -149,6 +171,8 @@ export interface RoleDefinition<TId extends string = string> {
|
|
|
149
171
|
readonly description?: string
|
|
150
172
|
readonly grantedToGroupIds: readonly string[]
|
|
151
173
|
readonly grants: readonly GrantDefinition[]
|
|
174
|
+
/** Ids of the markings this role's members may read. Absent means none. */
|
|
175
|
+
readonly clearances?: readonly string[]
|
|
152
176
|
}
|
|
153
177
|
|
|
154
178
|
export type MembershipOperation = "invite" | "assignGroups" | "suspend"
|
|
@@ -162,6 +186,8 @@ export interface MembershipPolicyDefinition<TId extends string = string> {
|
|
|
162
186
|
}
|
|
163
187
|
|
|
164
188
|
export interface RegisteredSecurityDefinitions {
|
|
189
|
+
readonly markings: readonly MarkingDefinition[]
|
|
190
|
+
readonly markingsById: ReadonlyMap<string, MarkingDefinition>
|
|
165
191
|
readonly groups: readonly GroupDefinition[]
|
|
166
192
|
readonly groupsById: ReadonlyMap<string, GroupDefinition>
|
|
167
193
|
readonly roles: readonly RoleDefinition[]
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
GrantCapability,
|
|
6
6
|
GrantDefinition,
|
|
7
7
|
GroupDefinition,
|
|
8
|
+
MarkingDefinition,
|
|
8
9
|
MembershipPolicyDefinition,
|
|
9
10
|
RegisteredSecurityDefinitions,
|
|
10
11
|
RoleDefinition,
|
|
@@ -132,6 +133,32 @@ function assertNoDuplicateOperations(
|
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
export function assertMarkingDefinition(
|
|
137
|
+
value: unknown,
|
|
138
|
+
createError: CreateSecurityError = (message) => new SecurityValidationError(message)
|
|
139
|
+
): asserts value is MarkingDefinition {
|
|
140
|
+
if (!isRecord(value)) {
|
|
141
|
+
throw createError("[Sixb] Marking definition must be an object.")
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (value.kind !== "marking") {
|
|
145
|
+
throw createError("[Sixb] Marking definition kind must be 'marking'.")
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
assertNonEmptyString(value.id, "Marking id", createError)
|
|
149
|
+
assertOptionalString(value.label, `Marking '${value.id}' label`, createError)
|
|
150
|
+
assertOptionalString(value.description, `Marking '${value.id}' description`, createError)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export function isMarkingDefinition(value: unknown): value is MarkingDefinition {
|
|
154
|
+
try {
|
|
155
|
+
assertMarkingDefinition(value, (message) => new Error(message))
|
|
156
|
+
return true
|
|
157
|
+
} catch {
|
|
158
|
+
return false
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
135
162
|
export function assertGroupDefinition(
|
|
136
163
|
value: unknown,
|
|
137
164
|
createError: CreateSecurityError = (message) => new SecurityValidationError(message)
|
|
@@ -285,6 +312,10 @@ export function assertRoleDefinition(
|
|
|
285
312
|
for (const grant of value.grants) {
|
|
286
313
|
assertGrantDefinition(grant, `Role '${value.id}' grants`, createError)
|
|
287
314
|
}
|
|
315
|
+
|
|
316
|
+
if (value.clearances !== undefined) {
|
|
317
|
+
assertStringArray(value.clearances, `Role '${value.id}' clearances`, createError)
|
|
318
|
+
}
|
|
288
319
|
}
|
|
289
320
|
|
|
290
321
|
export function isRoleDefinition(value: unknown): value is RoleDefinition {
|
|
@@ -297,6 +328,7 @@ export function isRoleDefinition(value: unknown): value is RoleDefinition {
|
|
|
297
328
|
}
|
|
298
329
|
|
|
299
330
|
export function validateSecurityDefinitionsAtStartup(input: {
|
|
331
|
+
readonly markings?: readonly MarkingDefinition[]
|
|
300
332
|
readonly groups: readonly GroupDefinition[]
|
|
301
333
|
readonly membershipPolicies: readonly MembershipPolicyDefinition[]
|
|
302
334
|
readonly roles?: readonly RoleDefinition[]
|
|
@@ -325,10 +357,21 @@ export function validateSecurityDefinitionsAtStartup(input: {
|
|
|
325
357
|
/** Registered Share ids — when provided, share grants must reference them. */
|
|
326
358
|
readonly shareIds?: ReadonlySet<string>
|
|
327
359
|
}): RegisteredSecurityDefinitions {
|
|
360
|
+
const markingsById = new Map<string, MarkingDefinition>()
|
|
328
361
|
const groupsById = new Map<string, GroupDefinition>()
|
|
329
362
|
const rolesById = new Map<string, RoleDefinition>()
|
|
330
363
|
const membershipPoliciesById = new Map<string, MembershipPolicyDefinition>()
|
|
331
364
|
|
|
365
|
+
for (const marking of input.markings ?? []) {
|
|
366
|
+
assertMarkingDefinition(marking)
|
|
367
|
+
|
|
368
|
+
if (markingsById.has(marking.id)) {
|
|
369
|
+
throw new SecurityValidationError(`[Sixb] Duplicate marking id: ${marking.id}`)
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
markingsById.set(marking.id, marking)
|
|
373
|
+
}
|
|
374
|
+
|
|
332
375
|
for (const group of input.groups) {
|
|
333
376
|
assertGroupDefinition(group)
|
|
334
377
|
|
|
@@ -352,11 +395,23 @@ export function validateSecurityDefinitionsAtStartup(input: {
|
|
|
352
395
|
)
|
|
353
396
|
}
|
|
354
397
|
|
|
355
|
-
|
|
356
|
-
|
|
398
|
+
const clearances = role.clearances ?? []
|
|
399
|
+
if (role.grants.length === 0 && clearances.length === 0) {
|
|
400
|
+
throw new SecurityValidationError(
|
|
401
|
+
`[Sixb] Role '${role.id}' must declare at least one grant or clearance.`
|
|
402
|
+
)
|
|
357
403
|
}
|
|
358
404
|
|
|
359
405
|
assertNoDuplicateIds(role.grantedToGroupIds, `Role '${role.id}' grantedTo`)
|
|
406
|
+
assertNoDuplicateIds(clearances, `Role '${role.id}' clearances`)
|
|
407
|
+
|
|
408
|
+
for (const markingId of clearances) {
|
|
409
|
+
if (!markingsById.has(markingId)) {
|
|
410
|
+
throw new SecurityValidationError(
|
|
411
|
+
`[Sixb] Role '${role.id}' clearances reference unknown marking '${markingId}'. Add it to 'security/markings/' or pass it to createSixb({ markings }).`
|
|
412
|
+
)
|
|
413
|
+
}
|
|
414
|
+
}
|
|
360
415
|
|
|
361
416
|
for (const groupId of role.grantedToGroupIds) {
|
|
362
417
|
if (!groupsById.has(groupId)) {
|
|
@@ -416,6 +471,8 @@ export function validateSecurityDefinitionsAtStartup(input: {
|
|
|
416
471
|
}
|
|
417
472
|
|
|
418
473
|
return {
|
|
474
|
+
markings: [...markingsById.values()],
|
|
475
|
+
markingsById,
|
|
419
476
|
groups: [...groupsById.values()],
|
|
420
477
|
groupsById,
|
|
421
478
|
roles: [...rolesById.values()],
|
|
@@ -150,6 +150,17 @@ export function assertConversationAgentRunSpec(
|
|
|
150
150
|
`[${prefix}] Conversational Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
|
|
151
151
|
)
|
|
152
152
|
}
|
|
153
|
+
for (const [name, value] of [
|
|
154
|
+
["timeZone", spec.timeZone],
|
|
155
|
+
["locale", spec.locale],
|
|
156
|
+
] as const) {
|
|
157
|
+
if (value !== undefined && (typeof value !== "string" || value.trim().length === 0)) {
|
|
158
|
+
throw new AgentStorageError(
|
|
159
|
+
"invalid_input",
|
|
160
|
+
`[${prefix}] Conversational Agent run '${name}' must be a non-empty string.`
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
}
|
|
153
164
|
}
|
|
154
165
|
|
|
155
166
|
function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentMessage, AgentMessagePart, AgentMessageRole } from "../../agents/message"
|
|
2
|
-
import type {
|
|
2
|
+
import type { AgentReasoning } from "../../agents/types"
|
|
3
3
|
import type { Principal } from "../../auth"
|
|
4
4
|
import type { FileRef } from "../../blob-storage"
|
|
5
5
|
import type { SixbErrorCode, SixbFailure } from "../../errors/types"
|
|
@@ -123,8 +123,9 @@ export type AgentRunFailureCode = (typeof AGENT_RUN_FAILURE_CODES)[number]
|
|
|
123
123
|
|
|
124
124
|
/**
|
|
125
125
|
* Why a run ended — Sixb's provider-independent vocabulary. It includes model-loop reasons plus
|
|
126
|
-
* platform-level endings such as `timeout`,
|
|
127
|
-
*
|
|
126
|
+
* platform-level endings such as `timeout`, or `interrupted` for a turn whose worker died before
|
|
127
|
+
* finishing it, so reads remain typed and exhaustive. `other` and `unknown` preserve terminal state
|
|
128
|
+
* when a provider adds a new reason.
|
|
128
129
|
*/
|
|
129
130
|
export const AGENT_RUN_FINISH_REASONS = [
|
|
130
131
|
"stop",
|
|
@@ -132,6 +133,7 @@ export const AGENT_RUN_FINISH_REASONS = [
|
|
|
132
133
|
"content-filter",
|
|
133
134
|
"tool-calls",
|
|
134
135
|
"timeout",
|
|
136
|
+
"interrupted",
|
|
135
137
|
"error",
|
|
136
138
|
"other",
|
|
137
139
|
"unknown",
|
|
@@ -162,6 +164,7 @@ export const AGENT_RUN_DIAGNOSTIC_CODES = [
|
|
|
162
164
|
"output_collection_failed",
|
|
163
165
|
"output_file_changed",
|
|
164
166
|
"output_storage_failed",
|
|
167
|
+
"step_limit_reached",
|
|
165
168
|
] as const
|
|
166
169
|
|
|
167
170
|
/**
|
|
@@ -178,7 +181,8 @@ export type AgentRunDiagnosticSeverity = "warning" | "error"
|
|
|
178
181
|
export interface AgentRunDiagnostic {
|
|
179
182
|
readonly code: AgentRunDiagnosticCode
|
|
180
183
|
readonly severity: AgentRunDiagnosticSeverity
|
|
181
|
-
|
|
184
|
+
/** `output` for published files, `run` for the turn as a whole. */
|
|
185
|
+
readonly scope: "output" | "run"
|
|
182
186
|
/** Relative path inside the run's published output directory, when one file is involved. */
|
|
183
187
|
readonly path?: string
|
|
184
188
|
/** Sanitized, stable copy suitable for display to an end user. */
|
|
@@ -224,16 +228,20 @@ export interface ConversationAgentRunRecord extends AgentRunRecordBase {
|
|
|
224
228
|
readonly spec?: ConversationAgentRunSpec
|
|
225
229
|
}
|
|
226
230
|
|
|
227
|
-
/** Immutable, serialisable model selection for one conversational turn. */
|
|
231
|
+
/** Immutable, serialisable model selection and requester settings for one conversational turn. */
|
|
228
232
|
export interface ConversationAgentRunSpec {
|
|
229
233
|
readonly model: LanguageModelRef
|
|
230
|
-
readonly reasoning?:
|
|
234
|
+
readonly reasoning?: AgentReasoning
|
|
235
|
+
/** Canonical IANA time zone of the requester. Absent uses the project time zone. */
|
|
236
|
+
readonly timeZone?: string
|
|
237
|
+
/** Canonical BCP 47 language of the requester. Absent uses the project locale. */
|
|
238
|
+
readonly locale?: string
|
|
231
239
|
}
|
|
232
240
|
|
|
233
241
|
/** Immutable, serialisable child configuration captured before dispatch. */
|
|
234
242
|
export interface SubagentRunSpec {
|
|
235
243
|
readonly model: LanguageModelRef
|
|
236
|
-
readonly reasoning?:
|
|
244
|
+
readonly reasoning?: AgentReasoning
|
|
237
245
|
/** Focused task supplied by the parent Agent. */
|
|
238
246
|
readonly task: string
|
|
239
247
|
/** Project tools available when the child was admitted. Runtime tools are injected separately. */
|
|
@@ -68,6 +68,7 @@ export interface AiAccountingAggregateFragment {
|
|
|
68
68
|
readonly cacheWriteInputTokens: AiAccountingUsageMeterFragment
|
|
69
69
|
readonly textOutputTokens: AiAccountingUsageMeterFragment
|
|
70
70
|
readonly reasoningOutputTokens: AiAccountingUsageMeterFragment
|
|
71
|
+
readonly audioDurationMs: AiAccountingUsageMeterFragment
|
|
71
72
|
}
|
|
72
73
|
readonly costs: {
|
|
73
74
|
readonly amount?: AiMoney
|
|
@@ -406,6 +407,7 @@ const AGGREGATE_USAGE_FIELDS = [
|
|
|
406
407
|
"cacheWriteInputTokens",
|
|
407
408
|
"textOutputTokens",
|
|
408
409
|
"reasoningOutputTokens",
|
|
410
|
+
"audioDurationMs",
|
|
409
411
|
] as const
|
|
410
412
|
|
|
411
413
|
type AggregateUsageField = (typeof AGGREGATE_USAGE_FIELDS)[number]
|
|
@@ -110,7 +110,8 @@ function billableMeter(value: unknown): AiBillableMeter {
|
|
|
110
110
|
value !== "tokens.input.cacheWrite1h" &&
|
|
111
111
|
value !== "tokens.output.total" &&
|
|
112
112
|
value !== "tokens.output.text" &&
|
|
113
|
-
value !== "tokens.output.reasoning"
|
|
113
|
+
value !== "tokens.output.reasoning" &&
|
|
114
|
+
value !== "audio.input.milliseconds"
|
|
114
115
|
) {
|
|
115
116
|
throw invalidDetails()
|
|
116
117
|
}
|
|
@@ -15,8 +15,8 @@ import type {
|
|
|
15
15
|
} from "./types"
|
|
16
16
|
|
|
17
17
|
const SIGNED_INT64_MAX = 9_223_372_036_854_775_807n
|
|
18
|
-
const
|
|
19
|
-
const HALF_MILLION =
|
|
18
|
+
const UNITS_PER_MILLION = 1_000_000n
|
|
19
|
+
const HALF_MILLION = UNITS_PER_MILLION / 2n
|
|
20
20
|
const MAX_NUMERIC_TEXT_LENGTH = 128
|
|
21
21
|
const METER_ORDER: Readonly<Record<AiBillableMeter, number>> = {
|
|
22
22
|
"tokens.input.total": 0,
|
|
@@ -28,6 +28,7 @@ const METER_ORDER: Readonly<Record<AiBillableMeter, number>> = {
|
|
|
28
28
|
"tokens.output.total": 6,
|
|
29
29
|
"tokens.output.text": 7,
|
|
30
30
|
"tokens.output.reasoning": 8,
|
|
31
|
+
"audio.input.milliseconds": 9,
|
|
31
32
|
}
|
|
32
33
|
const METERS = new Set(Object.keys(METER_ORDER) as AiBillableMeter[])
|
|
33
34
|
const UNPRICEABLE_REASONS = new Set<AiUnpriceableReason>([
|
|
@@ -120,11 +121,7 @@ export function aiModelCallCostMatchesUsage(
|
|
|
120
121
|
const components = new Map(
|
|
121
122
|
record.estimate.components.map((component) => [component.meter, component])
|
|
122
123
|
)
|
|
123
|
-
if (
|
|
124
|
-
!inputComponentsMatchUsage(components, usage) ||
|
|
125
|
-
!outputComponentsMatchUsage(components, usage)
|
|
126
|
-
)
|
|
127
|
-
return false
|
|
124
|
+
if (!componentsMatchUsage(components, usage)) return false
|
|
128
125
|
}
|
|
129
126
|
if (record.status === "unpriceable") return true
|
|
130
127
|
if (record.components.length === 0 && isExternalValuationSource(record.priceSource.sourceId)) {
|
|
@@ -133,6 +130,22 @@ export function aiModelCallCostMatchesUsage(
|
|
|
133
130
|
|
|
134
131
|
const usage = normalizeAiModelCallUsage(usageRecord.usage)
|
|
135
132
|
const components = new Map(record.components.map((component) => [component.meter, component]))
|
|
133
|
+
return componentsMatchUsage(components, usage)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function componentsMatchUsage(
|
|
137
|
+
components: ReadonlyMap<AiBillableMeter, AiCostComponent>,
|
|
138
|
+
usage: AiModelCallUsage
|
|
139
|
+
): boolean {
|
|
140
|
+
const audio = components.get("audio.input.milliseconds")
|
|
141
|
+
if (audio) {
|
|
142
|
+
return (
|
|
143
|
+
components.size === 1 &&
|
|
144
|
+
usage.audioDurationMs !== undefined &&
|
|
145
|
+
BigInt(audio.quantity) === BigInt(usage.audioDurationMs)
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
136
149
|
return (
|
|
137
150
|
inputComponentsMatchUsage(components, usage) && outputComponentsMatchUsage(components, usage)
|
|
138
151
|
)
|
|
@@ -362,7 +375,7 @@ function calculateComponent(
|
|
|
362
375
|
): AiCostComponent {
|
|
363
376
|
const normalizedQuantity = parseQuantity(quantity, `${meter} quantity`)
|
|
364
377
|
const rate = parseNonnegativeInt64(rateAmountNanosPerMillion, `${meter} rate`)
|
|
365
|
-
const charge = (normalizedQuantity * rate + HALF_MILLION) /
|
|
378
|
+
const charge = (normalizedQuantity * rate + HALF_MILLION) / UNITS_PER_MILLION
|
|
366
379
|
assertSignedInt64(charge, `${meter} charge`)
|
|
367
380
|
return {
|
|
368
381
|
meter,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
AiLimitOperationLock,
|
|
9
9
|
aiLimitAccountingEntryAppliesToSubject,
|
|
10
10
|
aiLimitAmountKey,
|
|
11
|
+
aiLimitMeterApplies,
|
|
11
12
|
aiLimitPolicyDimensionKey,
|
|
12
13
|
aiLimitQuantityFromAmount,
|
|
13
14
|
aiLimitReservationBuckets,
|
|
@@ -227,7 +228,12 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
|
|
|
227
228
|
const unavailablePolicies: AiLimitPolicyStatus[] = []
|
|
228
229
|
const unavailableReasons = new Set<"missingEstimate" | "incompleteAccounting">()
|
|
229
230
|
for (const policy of enabledPolicies) {
|
|
230
|
-
if (
|
|
231
|
+
if (
|
|
232
|
+
!subjectKeys.has(aiLimitSubjectKey(policy.subject)) ||
|
|
233
|
+
!aiLimitMeterApplies(policy.limit.meter, request.modelKind)
|
|
234
|
+
) {
|
|
235
|
+
continue
|
|
236
|
+
}
|
|
231
237
|
const limit = normalizeAiLimitAmount(policy.limit)
|
|
232
238
|
const estimate = estimates.get(aiLimitAmountKey(limit))
|
|
233
239
|
const status = await this.policyStatus(policy, request.period)
|
|
@@ -268,7 +274,8 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
|
|
|
268
274
|
const buckets = aiLimitReservationBuckets(
|
|
269
275
|
enabledPolicies,
|
|
270
276
|
request.subjects,
|
|
271
|
-
request.estimates
|
|
277
|
+
request.estimates,
|
|
278
|
+
request.modelKind
|
|
272
279
|
)
|
|
273
280
|
if (buckets.length === 0) return { status: "notRequired" }
|
|
274
281
|
for (const bucket of buckets) {
|
|
@@ -601,6 +608,7 @@ export class InMemoryAiLimitStorage implements AiLimitStorage {
|
|
|
601
608
|
attempt: record.attempt,
|
|
602
609
|
callId: record.callId,
|
|
603
610
|
occurredAt: new Date(record.occurredAt),
|
|
611
|
+
...(record.modelKind === undefined ? {} : { modelKind: record.modelKind }),
|
|
604
612
|
...(record.usage.totalTokens === undefined ? {} : { totalTokens: record.usage.totalTokens }),
|
|
605
613
|
requesterGroupIds: [...record.requesterGroupIds],
|
|
606
614
|
...(requester?.type === "user" || requester?.type === "serviceAccount"
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ModelKind } from "../../models/definitions"
|
|
1
2
|
import type { AiMoney } from "../ai-cost"
|
|
2
3
|
import { AiLimitStorageError } from "./errors"
|
|
3
4
|
import { aiLimitCalendarMonth } from "./period"
|
|
4
5
|
import type {
|
|
6
|
+
AiLimitMeter,
|
|
5
7
|
AiLimitPeriod,
|
|
6
8
|
AiLimitPolicy,
|
|
7
9
|
AiLimitQuantity,
|
|
@@ -16,6 +18,20 @@ import type {
|
|
|
16
18
|
|
|
17
19
|
const SIGNED_INT64_MAX = 9_223_372_036_854_775_807n
|
|
18
20
|
|
|
21
|
+
// These calls are billed per audio second or per search, and their providers report no tokens.
|
|
22
|
+
// Token limits neither admit nor count them; cost limits still do.
|
|
23
|
+
const TOKENLESS_MODEL_KINDS: ReadonlySet<ModelKind> = new Set(["transcription", "reranking"])
|
|
24
|
+
|
|
25
|
+
/** @internal Whether a limit meter governs calls of this kind. Unclassified calls are metered. */
|
|
26
|
+
export function aiLimitMeterApplies(
|
|
27
|
+
meter: AiLimitMeter,
|
|
28
|
+
modelKind: ModelKind | undefined
|
|
29
|
+
): boolean {
|
|
30
|
+
return (
|
|
31
|
+
meter !== "tokens.total" || modelKind === undefined || !TOKENLESS_MODEL_KINDS.has(modelKind)
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
19
35
|
/** @internal Serialize compound limit operations, including within an existing transaction. */
|
|
20
36
|
export class AiLimitOperationLock {
|
|
21
37
|
private tail: Promise<void> = Promise.resolve()
|
|
@@ -55,6 +71,7 @@ export interface AiLimitAccountingEntry {
|
|
|
55
71
|
readonly attempt: number
|
|
56
72
|
readonly callId: string
|
|
57
73
|
readonly occurredAt: Date
|
|
74
|
+
readonly modelKind?: ModelKind
|
|
58
75
|
readonly totalTokens?: number
|
|
59
76
|
readonly requesterGroupIds: readonly string[]
|
|
60
77
|
readonly requester?:
|
|
@@ -228,6 +245,7 @@ export function normalizeReserveAiModelCall(input: ReserveAiModelCallInput): {
|
|
|
228
245
|
readonly identity: AiModelCallReservationIdentity
|
|
229
246
|
readonly subjects: readonly AiLimitSubject[]
|
|
230
247
|
readonly estimates: readonly AiLimitQuantity[]
|
|
248
|
+
readonly modelKind?: ModelKind
|
|
231
249
|
readonly period: AiLimitPeriod
|
|
232
250
|
readonly reservedAt: Date
|
|
233
251
|
} {
|
|
@@ -237,6 +255,7 @@ export function normalizeReserveAiModelCall(input: ReserveAiModelCallInput): {
|
|
|
237
255
|
identity,
|
|
238
256
|
subjects: normalizeAiLimitSubjects(input.subjects),
|
|
239
257
|
estimates: normalizeAiLimitQuantities(input.estimates, "estimates"),
|
|
258
|
+
...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),
|
|
240
259
|
period: aiLimitCalendarMonth(reservedAt),
|
|
241
260
|
reservedAt,
|
|
242
261
|
}
|
|
@@ -297,13 +316,16 @@ export function aiLimitReservationRequestKey(
|
|
|
297
316
|
const amount = normalizeAiLimitAmount(quantity)
|
|
298
317
|
return [amount.meter, amount.currency, amount.amount.toString()]
|
|
299
318
|
}),
|
|
319
|
+
// Appended only when present, so keys of reservations made before model kinds stay valid.
|
|
320
|
+
...(request.modelKind === undefined ? [] : [request.modelKind]),
|
|
300
321
|
])
|
|
301
322
|
}
|
|
302
323
|
|
|
303
324
|
export function aiLimitReservationBuckets(
|
|
304
325
|
policies: readonly AiLimitPolicy[],
|
|
305
326
|
subjects: readonly AiLimitSubject[],
|
|
306
|
-
estimates: readonly AiLimitQuantity[]
|
|
327
|
+
estimates: readonly AiLimitQuantity[],
|
|
328
|
+
modelKind?: ModelKind
|
|
307
329
|
): readonly AiLimitReservationBucket[] {
|
|
308
330
|
const subjectKeys = new Set(subjects.map(aiLimitSubjectKey))
|
|
309
331
|
const estimatesByDimension = new Map(
|
|
@@ -313,7 +335,11 @@ export function aiLimitReservationBuckets(
|
|
|
313
335
|
})
|
|
314
336
|
)
|
|
315
337
|
return policies
|
|
316
|
-
.filter(
|
|
338
|
+
.filter(
|
|
339
|
+
(policy) =>
|
|
340
|
+
subjectKeys.has(aiLimitSubjectKey(policy.subject)) &&
|
|
341
|
+
aiLimitMeterApplies(policy.limit.meter, modelKind)
|
|
342
|
+
)
|
|
317
343
|
.flatMap((policy) => {
|
|
318
344
|
const estimate = estimatesByDimension.get(
|
|
319
345
|
aiLimitAmountKey(normalizeAiLimitAmount(policy.limit))
|
|
@@ -357,6 +383,7 @@ export function resolveAiLimitActual(
|
|
|
357
383
|
let accountingStatus: ResolvedAiLimitActual["accountingStatus"] = "complete"
|
|
358
384
|
for (const entry of entries) {
|
|
359
385
|
if (dimension.meter === "tokens.total") {
|
|
386
|
+
if (!aiLimitMeterApplies(dimension.meter, entry.modelKind)) continue
|
|
360
387
|
if (entry.totalTokens === undefined) {
|
|
361
388
|
accountingStatus = "unavailable"
|
|
362
389
|
} else {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ModelKind } from "../../models/definitions"
|
|
1
2
|
import type { AiMoney } from "../ai-cost"
|
|
2
3
|
|
|
3
4
|
/** A project-wide, group, or durable requester identity charged for AI model calls. */
|
|
@@ -129,6 +130,8 @@ export interface ReserveAiModelCallInput extends AiModelCallReservationIdentity
|
|
|
129
130
|
/** The project subject is always added, even when omitted here. */
|
|
130
131
|
readonly subjects: readonly AiLimitSubject[]
|
|
131
132
|
readonly estimates: readonly AiLimitQuantity[]
|
|
133
|
+
/** Transcription and reranking calls are outside token limits; see `aiLimitMeterApplies`. */
|
|
134
|
+
readonly modelKind?: ModelKind
|
|
132
135
|
readonly reservedAt?: Date
|
|
133
136
|
}
|
|
134
137
|
|
|
@@ -19,6 +19,14 @@ export function normalizeAiModelCallRecord(input: RecordAiModelCallInput): AiMod
|
|
|
19
19
|
}
|
|
20
20
|
assertNonBlank(input.responseId, "responseId")
|
|
21
21
|
|
|
22
|
+
if (
|
|
23
|
+
input.modelKind !== undefined &&
|
|
24
|
+
!["language", "image", "video", "embedding", "decision", "transcription", "reranking"].includes(
|
|
25
|
+
input.modelKind
|
|
26
|
+
)
|
|
27
|
+
) {
|
|
28
|
+
throw new TypeError("[Sixb] AI model kind is invalid.")
|
|
29
|
+
}
|
|
22
30
|
const occurredAt = cloneValidDate(input.occurredAt, "occurredAt")
|
|
23
31
|
const recordedAt = cloneValidDate(input.recordedAt ?? new Date(), "recordedAt")
|
|
24
32
|
const requesterGroupIds = normalizeRequesterGroupIds(input.requesterGroupIds)
|
|
@@ -37,6 +45,7 @@ export function normalizeAiModelCallRecord(input: RecordAiModelCallInput): AiMod
|
|
|
37
45
|
? {}
|
|
38
46
|
: { providerIds: normalizeModelProviderIds(input.providerIds) }),
|
|
39
47
|
requestedModelId: input.requestedModelId,
|
|
48
|
+
...(input.modelKind === undefined ? {} : { modelKind: input.modelKind }),
|
|
40
49
|
...(requestedReasoning === undefined ? {} : { requestedReasoning }),
|
|
41
50
|
...(input.responseModelId === undefined ? {} : { responseModelId: input.responseModelId }),
|
|
42
51
|
responseId: input.responseId,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { ReadonlyJsonObject } from "../../json"
|
|
2
2
|
import type { ModelReasoning } from "../../models/language-model"
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** Coverage of normalized usage. Complete means both token totals are known; duration alone is partial. */
|
|
5
5
|
export type AiUsageReportingStatus = "complete" | "partial" | "unavailable"
|
|
6
6
|
|
|
7
|
-
/** Provider-neutral
|
|
7
|
+
/** Provider-neutral usage accepted at the model-call boundary. */
|
|
8
8
|
export interface AiModelCallUsageInput {
|
|
9
|
+
/** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */
|
|
10
|
+
readonly audioDurationMs?: number
|
|
9
11
|
readonly inputTokens?: number
|
|
10
12
|
readonly outputTokens?: number
|
|
11
13
|
readonly uncachedInputTokens?: number
|
|
@@ -15,7 +17,7 @@ export interface AiModelCallUsageInput {
|
|
|
15
17
|
readonly reasoningOutputTokens?: number
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
/** Normalized
|
|
20
|
+
/** Normalized usage for one completed model call. Token details overlap their input/output totals. */
|
|
19
21
|
export interface AiModelCallUsage extends AiModelCallUsageInput {
|
|
20
22
|
/** Present only when both input and output totals are known. */
|
|
21
23
|
readonly totalTokens?: number
|
|
@@ -32,6 +34,8 @@ export interface AiUsageExecutionSummary {
|
|
|
32
34
|
|
|
33
35
|
/** Input for an idempotent model-call ledger append. */
|
|
34
36
|
export interface RecordAiModelCallInput {
|
|
37
|
+
/** Absent for historical calls whose kind was not captured. */
|
|
38
|
+
readonly modelKind?: import("../../models/definitions").ModelKind
|
|
35
39
|
readonly providerIds?: import("../../models/events").ModelProviderIds
|
|
36
40
|
readonly id: string
|
|
37
41
|
readonly projectId: string
|
|
@@ -89,7 +93,7 @@ export interface GetLatestAiModelCallForExecutionInput {
|
|
|
89
93
|
readonly executionId: string
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
/** Durable, provider-neutral accounting for completed
|
|
96
|
+
/** Durable, provider-neutral accounting for completed model calls. */
|
|
93
97
|
export interface AiUsageStorage {
|
|
94
98
|
/**
|
|
95
99
|
* Append one model-call record idempotently. The identity is project, execution ID, attempt, call
|
|
@@ -8,6 +8,7 @@ const USAGE_FIELDS = [
|
|
|
8
8
|
"cacheWriteInputTokens",
|
|
9
9
|
"textOutputTokens",
|
|
10
10
|
"reasoningOutputTokens",
|
|
11
|
+
"audioDurationMs",
|
|
11
12
|
] as const
|
|
12
13
|
|
|
13
14
|
type AiUsageField = (typeof USAGE_FIELDS)[number]
|
|
@@ -30,6 +31,7 @@ export function normalizeAiModelCallUsage(input: AiModelCallUsageInput): AiModel
|
|
|
30
31
|
: "unavailable"
|
|
31
32
|
|
|
32
33
|
return {
|
|
34
|
+
...(input.audioDurationMs === undefined ? {} : { audioDurationMs: input.audioDurationMs }),
|
|
33
35
|
...(input.inputTokens === undefined ? {} : { inputTokens: input.inputTokens }),
|
|
34
36
|
...(input.outputTokens === undefined ? {} : { outputTokens: input.outputTokens }),
|
|
35
37
|
...(totalTokens === undefined ? {} : { totalTokens }),
|