@sixb/core 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +30 -27
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +1 -1
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +6 -2
- package/dist/actions/worker.js.map +3 -3
- package/dist/agents/adapters.d.ts +7 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +7 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context/entries.d.ts +10 -1
- package/dist/agents/context/entries.d.ts.map +1 -1
- package/dist/agents/context/index.d.ts +1 -1
- package/dist/agents/context/index.d.ts.map +1 -1
- package/dist/agents/context/index.js +4 -2
- package/dist/agents/context/index.js.map +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +54 -46
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +8 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/request.d.ts +19 -5
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts +41 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/streams/index.js +1 -1
- package/dist/agents/streams/internal.js +1 -1
- package/dist/agents/types.d.ts +33 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/auth/index.js +9 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/types.d.ts +6 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +5 -3
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/download-urls.d.ts +41 -0
- package/dist/blob-storage/download-urls.d.ts.map +1 -0
- package/dist/blob-storage/execution.d.ts +9 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/file-content.d.ts +18 -0
- package/dist/blob-storage/file-content.d.ts.map +1 -0
- package/dist/blob-storage/index.d.ts +1 -1
- package/dist/blob-storage/index.d.ts.map +1 -1
- package/dist/blob-storage/index.js +6 -4
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/internal.d.ts +4 -0
- package/dist/blob-storage/internal.d.ts.map +1 -0
- package/dist/blob-storage/internal.js +23 -0
- package/dist/blob-storage/internal.js.map +9 -0
- package/dist/blob-storage/media-type.d.ts +8 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -0
- package/dist/blob-storage/types.d.ts +12 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/blob-storage/validation.d.ts +6 -0
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/agent-context.d.ts +33 -0
- package/dist/bootstrap/agent-context.d.ts.map +1 -0
- package/dist/bootstrap/discovery.d.ts +23 -3
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +287 -75
- package/dist/bootstrap/index.js.map +4 -3
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-kttr5ftm.js → chunk-1b1f2d5f.js} +23 -6
- package/dist/chunk-1b1f2d5f.js.map +12 -0
- package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
- package/dist/chunk-1hqwggsn.js.map +12 -0
- package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
- package/dist/chunk-1sr8ryzk.js.map +11 -0
- package/dist/{chunk-4gmng3vf.js → chunk-22v5bpz3.js} +1 -1
- package/dist/{chunk-tnvafr7g.js → chunk-29yx306f.js} +124 -9
- package/dist/chunk-29yx306f.js.map +22 -0
- package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
- package/dist/chunk-3zxk45er.js +152 -0
- package/dist/chunk-3zxk45er.js.map +11 -0
- package/dist/{chunk-gmdvns8f.js → chunk-48e3cn2d.js} +2 -2
- package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
- package/dist/chunk-4as3wt1c.js.map +12 -0
- package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
- package/dist/chunk-6gmfggss.js.map +10 -0
- package/dist/{chunk-2xvgy3x5.js → chunk-6h5m9xjx.js} +43 -415
- package/dist/{chunk-2xvgy3x5.js.map → chunk-6h5m9xjx.js.map} +7 -11
- package/dist/{chunk-cq44v1a6.js → chunk-7hpdd6r9.js} +3 -3
- package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
- package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
- package/dist/chunk-b9affek3.js +261 -0
- package/dist/chunk-b9affek3.js.map +12 -0
- package/dist/{chunk-zvmr2hqk.js → chunk-bs7sqkre.js} +10 -4
- package/dist/chunk-bs7sqkre.js.map +12 -0
- package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
- package/dist/{chunk-667x4drs.js → chunk-d0eb5yy6.js} +143 -7
- package/dist/chunk-d0eb5yy6.js.map +14 -0
- package/dist/chunk-d62kjtbg.js.map +2 -2
- package/dist/{chunk-gkxsenvp.js → chunk-de4z2bj6.js} +31 -7
- package/dist/{chunk-gkxsenvp.js.map → chunk-de4z2bj6.js.map} +5 -4
- package/dist/{chunk-mdnw7nj8.js → chunk-dnmadg9k.js} +35 -10
- package/dist/chunk-dnmadg9k.js.map +15 -0
- package/dist/chunk-enpsx8k5.js +127 -0
- package/dist/chunk-enpsx8k5.js.map +10 -0
- package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
- package/dist/chunk-ere85b8y.js.map +15 -0
- package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
- package/dist/chunk-ewqa58h9.js.map +11 -0
- package/dist/{chunk-7g2gjvah.js → chunk-ex496vct.js} +1 -1
- package/dist/{chunk-nvymebc1.js → chunk-f1zxad2t.js} +1 -1
- package/dist/{chunk-3q7z9hd4.js → chunk-fe52eczz.js} +483 -101
- package/dist/chunk-fe52eczz.js.map +49 -0
- package/dist/{chunk-8x74221e.js → chunk-fx93hd2n.js} +79 -32
- package/dist/chunk-fx93hd2n.js.map +20 -0
- package/dist/{chunk-39tqv9hz.js → chunk-gc4ntf7d.js} +6 -7
- package/dist/{chunk-39tqv9hz.js.map → chunk-gc4ntf7d.js.map} +3 -4
- package/dist/chunk-h8teetr0.js +9 -0
- package/dist/chunk-h8teetr0.js.map +10 -0
- package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
- package/dist/chunk-hkc3jct7.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-h044jb97.js → chunk-htr6wjmv.js} +282 -58
- package/dist/chunk-htr6wjmv.js.map +19 -0
- package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
- package/dist/chunk-jhm3zsa7.js.map +12 -0
- package/dist/{chunk-chdg6eqq.js → chunk-k6hrnf35.js} +5 -5
- package/dist/chunk-k6hrnf35.js.map +10 -0
- package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
- package/dist/chunk-kpx7jrmn.js.map +12 -0
- package/dist/{chunk-b9y8hcm2.js → chunk-mfs23znk.js} +1 -1
- package/dist/{chunk-kvysp909.js → chunk-ny3xyvcn.js} +32 -19
- package/dist/chunk-ny3xyvcn.js.map +17 -0
- package/dist/{chunk-h4138ww2.js → chunk-p0dqwj3n.js} +450 -799
- package/dist/chunk-p0dqwj3n.js.map +49 -0
- package/dist/{chunk-f72rbvsb.js → chunk-p844e0rn.js} +23 -8
- package/dist/chunk-p844e0rn.js.map +19 -0
- package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
- package/dist/chunk-pfp1txq2.js.map +11 -0
- package/dist/chunk-pqajwytd.js.map +3 -3
- package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
- package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
- package/dist/{chunk-69kt9q43.js → chunk-qkbx3tf6.js} +17 -128
- package/dist/{chunk-69kt9q43.js.map → chunk-qkbx3tf6.js.map} +6 -7
- package/dist/{chunk-h866d223.js → chunk-qkvz64nd.js} +2 -2
- package/dist/{chunk-vsvrv7n8.js → chunk-qmnnhde6.js} +4 -8
- package/dist/{chunk-vsvrv7n8.js.map → chunk-qmnnhde6.js.map} +3 -3
- package/dist/{chunk-6z1q7j19.js → chunk-qq90g05n.js} +1128 -782
- package/dist/chunk-qq90g05n.js.map +66 -0
- package/dist/{chunk-40qb8wpe.js → chunk-qxvp5epv.js} +84 -29
- package/dist/{chunk-40qb8wpe.js.map → chunk-qxvp5epv.js.map} +10 -9
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
- package/dist/chunk-rj69qcrd.js.map +11 -0
- package/dist/{chunk-tkdbge6v.js → chunk-rt9p8m9t.js} +1 -1
- package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
- package/dist/chunk-rz53yb4v.js.map +14 -0
- package/dist/{chunk-a7ne02hk.js → chunk-s4jhg8a3.js} +351 -296
- package/dist/chunk-s4jhg8a3.js.map +15 -0
- package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
- package/dist/chunk-s54c868q.js.map +12 -0
- package/dist/{chunk-dsv8kdgk.js → chunk-tffvfy6s.js} +8 -7
- package/dist/{chunk-dsv8kdgk.js.map → chunk-tffvfy6s.js.map} +3 -3
- package/dist/{chunk-sbcm1b92.js → chunk-v6xpd60t.js} +3 -3
- package/dist/{chunk-nj0020ay.js → chunk-vgk3hknm.js} +1 -1
- package/dist/{chunk-qnd7ehe5.js → chunk-vx2yp45y.js} +2 -2
- package/dist/{chunk-vjqt7q3a.js → chunk-vz3gc1tm.js} +607 -45
- package/dist/chunk-vz3gc1tm.js.map +41 -0
- package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
- package/dist/chunk-wt4szfec.js.map +14 -0
- package/dist/chunk-xt1zt7gv.js +471 -0
- package/dist/chunk-xt1zt7gv.js.map +13 -0
- package/dist/{chunk-swxzncrv.js → chunk-y05543x6.js} +51 -8
- package/dist/{chunk-swxzncrv.js.map → chunk-y05543x6.js.map} +5 -5
- package/dist/{chunk-zdkcdshk.js → chunk-y9jmd7e5.js} +41 -3
- package/dist/{chunk-zdkcdshk.js.map → chunk-y9jmd7e5.js.map} +4 -3
- package/dist/{chunk-nkbev3tr.js → chunk-yv9czyfr.js} +3 -3
- package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
- package/dist/chunk-yw9pyg66.js.map +11 -0
- package/dist/{chunk-cxj8y8t0.js → chunk-za5yd58j.js} +2 -2
- package/dist/{chunk-zb47r1c8.js → chunk-zb77kjth.js} +3 -3
- package/dist/{chunk-dp7yk20b.js → chunk-zxawp1n2.js} +1 -1
- package/dist/datasets/builders.d.ts +12 -1
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +27 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +5 -0
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +10 -5
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/properties.d.ts.map +1 -1
- package/dist/events/execution.d.ts +2 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/types/objects.d.ts +5 -0
- package/dist/events/types/objects.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +10 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +49 -43
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +9 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +45 -41
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +46 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -71
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +5 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +1 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +8 -5
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +26 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +5 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -4
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +20 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -0
- package/dist/materialization/events.d.ts +29 -3
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +4 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +9 -3
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -10
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/effective/build-events.d.ts +5 -21
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +2 -3
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
- package/dist/materializer/effective/vectors.d.ts +2 -3
- package/dist/materializer/effective/vectors.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +1 -11
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/execution/work-executor.d.ts +5 -7
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +1 -3
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +35 -33
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +8 -11
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/batching.d.ts +5 -0
- package/dist/materializer/shared/batching.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -8
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +20 -0
- package/dist/models/audio/catalog.d.ts.map +1 -0
- package/dist/models/audio/errors.d.ts +8 -0
- package/dist/models/audio/errors.d.ts.map +1 -0
- package/dist/models/audio/file.d.ts +9 -0
- package/dist/models/audio/file.d.ts.map +1 -0
- package/dist/models/audio/runtime.d.ts +8 -0
- package/dist/models/audio/runtime.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +60 -0
- package/dist/models/audio/types.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +24 -2
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +1 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +3 -0
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +6 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.js +27 -24
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-admission.d.ts +6 -1
- package/dist/models/execution/model-call-admission.d.ts.map +1 -1
- package/dist/models/execution/model-call-limits.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +4 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/reranking.d.ts +4 -0
- package/dist/models/execution/reranking.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +2 -1
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +2 -0
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/index.d.ts +7 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +6 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +6 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +2 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/reranking-model.d.ts +49 -0
- package/dist/models/reranking-model.d.ts.map +1 -0
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +6 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +2 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +31 -27
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +41 -0
- package/dist/objects/property-clearance.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +5 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +1 -1
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +27 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +8 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/planner.d.ts +1 -1
- package/dist/objects/query/planner.d.ts.map +1 -1
- package/dist/objects/query/primary-id.d.ts +7 -0
- package/dist/objects/query/primary-id.d.ts.map +1 -0
- package/dist/objects/query/reranking-executor.d.ts +13 -0
- package/dist/objects/query/reranking-executor.d.ts.map +1 -0
- package/dist/objects/query/reranking-limits.d.ts +3 -0
- package/dist/objects/query/reranking-limits.d.ts.map +1 -0
- package/dist/objects/query/reranking-query.d.ts +4 -0
- package/dist/objects/query/reranking-query.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +10 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/file-handle.d.ts +6 -0
- package/dist/objects/sdk/file-handle.d.ts.map +1 -0
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -0
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +2 -2
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
- package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
- package/dist/objects/vectors/query.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +12 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +35 -0
- package/dist/ontology/docs-markdown.d.ts.map +1 -0
- package/dist/ontology/docs.d.ts +50 -0
- package/dist/ontology/docs.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +7 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +19 -0
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +3 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +276 -3
- package/dist/ontology/internal.js.map +4 -3
- package/dist/ontology/query-capabilities.d.ts +1 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +8 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +25 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/index.d.ts +1 -1
- package/dist/ontology/validation/index.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +7 -0
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +29 -26
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +27 -24
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +3 -0
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +4 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +11 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +3 -1
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +14 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +32 -27
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/locale.d.ts +9 -0
- package/dist/runtime/locale.d.ts.map +1 -0
- package/dist/runtime/public-origin.d.ts +10 -0
- package/dist/runtime/public-origin.d.ts.map +1 -0
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +1 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +42 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/runtime.d.ts +3 -0
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/security/builders.d.ts +11 -2
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -4
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/markings.d.ts +19 -0
- package/dist/security/markings.d.ts.map +1 -0
- package/dist/security/redactions.d.ts +4 -0
- package/dist/security/redactions.d.ts.map +1 -0
- package/dist/security/registry.d.ts +7 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +25 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -21
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +5 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +15 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +1 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +3 -3
- package/dist/storage/ai-cost/types.d.ts +1 -1
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +7 -2
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +4 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-limits/types.d.ts +3 -0
- package/dist/storage/ai-limits/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +8 -4
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
- package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/file-download-grants/index.d.ts +3 -0
- package/dist/storage/file-download-grants/index.d.ts.map +1 -0
- package/dist/storage/file-download-grants/record.d.ts +11 -0
- package/dist/storage/file-download-grants/record.d.ts.map +1 -0
- package/dist/storage/file-download-grants/types.d.ts +44 -0
- package/dist/storage/file-download-grants/types.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +10 -7
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +35 -32
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +1 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +9 -4
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/index.d.ts +1 -1
- package/dist/storage/migrations/index.d.ts.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +3 -3
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/types.d.ts +7 -0
- package/dist/storage/migrations/types.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/query-preparation.d.ts +39 -0
- package/dist/storage/objects/query-preparation.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +9 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -6
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -2
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
- package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
- package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
- package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -3
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +40 -59
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +4 -6
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +114 -3
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -39
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +26 -12
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/replacement-plans.d.ts +103 -0
- package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/sources.d.ts +0 -8
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +10 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +30 -27
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
- package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2556 -1495
- package/dist/testing/index.js.map +14 -13
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts +14 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +5 -1
- package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +25 -22
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +15 -17
- package/dist/workers/index.js.map +3 -3
- package/dist/workers/queue-worker.d.ts +3 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +51 -47
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +2 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/actions/read-facade.ts +2 -1
- package/src/actions/types/context.ts +5 -2
- package/src/actions/validation.ts +4 -1
- package/src/agents/adapters.ts +15 -0
- package/src/agents/authority.ts +15 -0
- package/src/agents/context/entries.ts +48 -4
- package/src/agents/context/index.ts +1 -0
- package/src/agents/context-compaction.ts +6 -0
- package/src/agents/errors.ts +3 -0
- package/src/agents/index.ts +13 -1
- package/src/agents/message.ts +9 -0
- package/src/agents/request.ts +178 -22
- package/src/agents/skills.ts +63 -0
- package/src/agents/types.ts +35 -5
- package/src/auth/runtime.ts +14 -0
- package/src/auth/types.ts +6 -0
- package/src/authorization/resolve.ts +6 -1
- package/src/authorization/types.ts +7 -0
- package/src/blob-storage/download-urls.ts +138 -0
- package/src/blob-storage/execution.ts +44 -1
- package/src/blob-storage/file-content.ts +106 -0
- package/src/blob-storage/index.ts +1 -0
- package/src/blob-storage/internal.ts +8 -0
- package/src/blob-storage/media-type.ts +29 -0
- package/src/blob-storage/types.ts +13 -1
- package/src/blob-storage/validation.ts +13 -0
- package/src/bootstrap/agent-context.ts +356 -0
- package/src/bootstrap/discovery.ts +100 -33
- package/src/bootstrap/index.ts +1 -1
- package/src/bootstrap/ontology-type-manifest.ts +3 -38
- package/src/datasets/builders.ts +17 -1
- package/src/datasets/execution.ts +110 -2
- package/src/datasets/index.ts +7 -1
- package/src/datasets/types.ts +2 -0
- package/src/datasets/write.ts +21 -2
- package/src/edits/properties.ts +3 -0
- package/src/events/execution.ts +15 -16
- package/src/events/types/objects.ts +5 -0
- package/src/execution/agent.ts +27 -0
- package/src/execution/authorization.ts +1 -0
- package/src/execution/authorized-object-reader.ts +104 -35
- package/src/execution/scopes.ts +2 -6
- package/src/http/api-routes.ts +4 -3
- package/src/index.ts +52 -2
- package/src/lake-storage/in-memory.ts +38 -9
- package/src/lake-storage/index.ts +2 -0
- package/src/lake-storage/types.ts +30 -0
- package/src/maintenance/ontology-maintenance.ts +50 -23
- package/src/maintenance/types.ts +1 -4
- package/src/materialization/event-envelopes.ts +168 -0
- package/src/materialization/events.ts +40 -4
- package/src/materialization/index.ts +9 -1
- package/src/materializer/README.md +55 -10
- package/src/materializer/edits/commit.ts +3 -19
- package/src/materializer/edits/plan.ts +20 -71
- package/src/materializer/effective/build-events.ts +42 -136
- package/src/materializer/effective/vector-indexing.ts +2 -3
- package/src/materializer/effective/vectors.ts +2 -3
- package/src/materializer/execution/scope.ts +1 -38
- package/src/materializer/execution/work-executor.ts +21 -115
- package/src/materializer/execution/work-records.ts +0 -15
- package/src/materializer/projections/replace.ts +106 -63
- package/src/materializer/projections/replacement-plan.ts +73 -218
- package/src/materializer/shared/batching.ts +7 -0
- package/src/materializer/telemetry/append.ts +2 -14
- package/src/materializer/telemetry/plan.ts +6 -43
- package/src/models/audio/catalog.ts +90 -0
- package/src/models/audio/errors.ts +19 -0
- package/src/models/audio/file.ts +78 -0
- package/src/models/audio/runtime.ts +182 -0
- package/src/models/audio/types.ts +69 -0
- package/src/models/catalog.ts +78 -7
- package/src/models/definitions.ts +8 -1
- package/src/models/events.ts +3 -0
- package/src/models/execution/README.md +24 -4
- package/src/models/execution/binding.ts +6 -0
- package/src/models/execution/model-call-admission.ts +6 -1
- package/src/models/execution/model-call-limits.ts +21 -11
- package/src/models/execution/model-call-recorder.ts +11 -0
- package/src/models/execution/model-call-recovery.ts +1 -0
- package/src/models/execution/reranking.ts +137 -0
- package/src/models/execution/session.ts +2 -2
- package/src/models/execution/usage.ts +1 -0
- package/src/models/execution.ts +11 -3
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +32 -0
- package/src/models/language-model.ts +6 -0
- package/src/models/pricing.ts +2 -1
- package/src/models/reranking-model.ts +114 -0
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +7 -0
- package/src/objects/execution.ts +4 -1
- package/src/objects/materializer-adapter.ts +3 -0
- package/src/objects/object/upsert-batch.ts +4 -1
- package/src/objects/object/upsert.ts +3 -1
- package/src/objects/property-clearance.ts +209 -0
- package/src/objects/query/executor.ts +85 -38
- package/src/objects/query/explain.ts +8 -0
- package/src/objects/query/index.ts +1 -0
- package/src/objects/query/ir.ts +10 -0
- package/src/objects/query/normalize.ts +2 -0
- package/src/objects/query/planner.ts +12 -1
- package/src/objects/query/primary-id.ts +56 -0
- package/src/objects/query/reranking-executor.ts +91 -0
- package/src/objects/query/reranking-limits.ts +3 -0
- package/src/objects/query/reranking-query.ts +8 -0
- package/src/objects/query/validate.ts +166 -15
- package/src/objects/sdk/file-handle.ts +77 -0
- package/src/objects/sdk/object-handle.ts +8 -4
- package/src/objects/sdk/object-set.ts +5 -2
- package/src/objects/sdk/query-builder.ts +15 -2
- package/src/objects/sdk/query-executor.ts +2 -2
- package/src/objects/sdk/runtime-query-executor.ts +7 -4
- package/src/objects/vectors/README.md +6 -2
- package/src/objects/vectors/indexing-dispatch.ts +83 -0
- package/src/objects/vectors/query.ts +3 -0
- package/src/ontology/builders.ts +19 -2
- package/src/ontology/docs-markdown.ts +394 -0
- package/src/ontology/docs.ts +196 -0
- package/src/ontology/index.ts +2 -0
- package/src/ontology/inference/index.ts +25 -0
- package/src/ontology/internal.ts +7 -0
- package/src/ontology/query-capabilities.ts +1 -1
- package/src/ontology/tokens.ts +13 -2
- package/src/ontology/types.ts +26 -0
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/query.ts +57 -0
- package/src/ontology/validation/schema.ts +26 -1
- package/src/query.ts +4 -0
- package/src/queues/in-memory.ts +54 -19
- package/src/queues/types.ts +4 -0
- package/src/runtime/create.ts +34 -4
- package/src/runtime/definitions.ts +3 -1
- package/src/runtime/host.ts +73 -2
- package/src/runtime/index.ts +4 -0
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/locale.ts +26 -0
- package/src/runtime/public-origin.ts +33 -0
- package/src/runtime/resolve-definitions.ts +28 -1
- package/src/runtime/sixb.ts +14 -3
- package/src/runtime/types.ts +51 -5
- package/src/scheduler/runtime.ts +11 -2
- package/src/security/builders.ts +49 -5
- package/src/security/index.ts +6 -1
- package/src/security/markings.ts +313 -0
- package/src/security/redactions.ts +6 -0
- package/src/security/registry.ts +21 -1
- package/src/security/types.ts +26 -0
- package/src/security/validation.ts +59 -2
- package/src/storage/agents/provider.ts +11 -0
- package/src/storage/agents/types.ts +15 -7
- package/src/storage/ai-cost/analytics.ts +2 -0
- package/src/storage/ai-cost/codec.ts +2 -1
- package/src/storage/ai-cost/types.ts +1 -0
- package/src/storage/ai-cost/validation.ts +21 -8
- package/src/storage/ai-limits/in-memory.ts +10 -2
- package/src/storage/ai-limits/provider.ts +29 -2
- package/src/storage/ai-limits/types.ts +3 -0
- package/src/storage/ai-usage/record.ts +9 -0
- package/src/storage/ai-usage/types.ts +8 -4
- package/src/storage/ai-usage/usage.ts +2 -0
- package/src/storage/file-download-grants/in-memory.ts +73 -0
- package/src/storage/file-download-grants/index.ts +8 -0
- package/src/storage/file-download-grants/record.ts +47 -0
- package/src/storage/file-download-grants/types.ts +48 -0
- package/src/storage/in-memory/index.ts +13 -2
- package/src/storage/index.ts +32 -13
- package/src/storage/internal.ts +1 -0
- package/src/storage/migrations/index.ts +1 -0
- package/src/storage/migrations/migrate-storage.ts +36 -12
- package/src/storage/migrations/types.ts +8 -0
- package/src/storage/objects/in-memory/query.ts +2 -0
- package/src/storage/objects/in-memory/selected-reader.ts +1 -0
- package/src/storage/objects/in-memory/storage.ts +1 -0
- package/src/storage/objects/query-preparation.ts +77 -0
- package/src/storage/objects/types.ts +9 -0
- package/src/storage/ontology/commits.ts +1 -6
- package/src/storage/ontology/in-memory/index.ts +28 -9
- package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
- package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
- package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
- package/src/storage/ontology/in-memory/materializations.ts +172 -653
- package/src/storage/ontology/in-memory/outbox.ts +37 -29
- package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
- package/src/storage/ontology/in-memory/shared-state.ts +24 -2
- package/src/storage/ontology/in-memory/source-roots.ts +7 -2
- package/src/storage/ontology/in-memory/sources.ts +7 -33
- package/src/storage/ontology/in-memory/state-reader.ts +245 -0
- package/src/storage/ontology/index.ts +19 -13
- package/src/storage/ontology/materializations.ts +45 -74
- package/src/storage/ontology/outbox.ts +4 -7
- package/src/storage/ontology/provider-header-validation.ts +0 -57
- package/src/storage/ontology/provider-work.ts +381 -90
- package/src/storage/ontology/provider.ts +74 -171
- package/src/storage/ontology/replacement-plans.ts +117 -0
- package/src/storage/ontology/sources.ts +0 -12
- package/src/storage/operation-scope.ts +33 -1
- package/src/storage/projection-runs/in-memory.ts +7 -1
- package/src/storage/projection-runs/types.ts +2 -0
- package/src/storage/types.ts +2 -0
- package/src/testing/ai-cost-storage-contract.ts +1 -0
- package/src/testing/ai-limit-storage-contract.ts +62 -0
- package/src/testing/ai-usage-storage-contract.ts +31 -0
- package/src/testing/file-download-grant-storage-contract.ts +139 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/lake-storage-contract.ts +87 -1
- package/src/testing/materializer-storage-contract.ts +1008 -1
- package/src/testing/object-read-scope-contract.ts +1 -0
- package/src/testing/ontology-contract-fixture.ts +11 -87
- package/src/testing/ontology-storage-contract.ts +70 -39
- package/src/testing/projection-run-storage-contract.ts +14 -0
- package/src/testing/queues-contract.ts +59 -0
- package/src/workers/queue-worker.ts +19 -16
- package/src/workflows/builders.ts +24 -1
- package/src/workflows/request.ts +3 -0
- package/src/workflows/types.ts +6 -3
- package/src/workflows/validation.ts +32 -4
- package/dist/chunk-3q7z9hd4.js.map +0 -46
- package/dist/chunk-667x4drs.js.map +0 -12
- package/dist/chunk-69266efg.js.map +0 -12
- package/dist/chunk-6z1q7j19.js.map +0 -62
- package/dist/chunk-7ytf06d3.js +0 -113
- package/dist/chunk-7ytf06d3.js.map +0 -10
- package/dist/chunk-8x74221e.js.map +0 -20
- package/dist/chunk-91kcnbf0.js.map +0 -10
- package/dist/chunk-98cw09sw.js.map +0 -10
- package/dist/chunk-9vx5e9g1.js.map +0 -11
- package/dist/chunk-a0073121.js.map +0 -12
- package/dist/chunk-a7ne02hk.js.map +0 -15
- package/dist/chunk-cd234ba4.js.map +0 -14
- package/dist/chunk-chdg6eqq.js.map +0 -10
- package/dist/chunk-dmn70ztd.js.map +0 -11
- package/dist/chunk-f72rbvsb.js.map +0 -19
- package/dist/chunk-g4rbm4a6.js.map +0 -15
- package/dist/chunk-h044jb97.js.map +0 -15
- package/dist/chunk-h3v76ams.js.map +0 -11
- package/dist/chunk-h4138ww2.js.map +0 -50
- package/dist/chunk-hgqpcmyr.js.map +0 -12
- package/dist/chunk-jgwb25gc.js.map +0 -12
- package/dist/chunk-k4kkp58d.js.map +0 -11
- package/dist/chunk-kttr5ftm.js.map +0 -12
- package/dist/chunk-kvysp909.js.map +0 -17
- package/dist/chunk-mdnw7nj8.js.map +0 -15
- package/dist/chunk-s3csryxe.js.map +0 -11
- package/dist/chunk-tnvafr7g.js.map +0 -19
- package/dist/chunk-vjqt7q3a.js.map +0 -36
- package/dist/chunk-xnx96gfy.js.map +0 -15
- package/dist/chunk-z5rnrmz1.js.map +0 -11
- package/dist/chunk-zvmr2hqk.js.map +0 -12
- package/dist/materializer/execution/plan-stream.d.ts +0 -8
- package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
- package/src/materializer/execution/plan-stream.ts +0 -121
- /package/dist/{chunk-4gmng3vf.js.map → chunk-22v5bpz3.js.map} +0 -0
- /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
- /package/dist/{chunk-gmdvns8f.js.map → chunk-48e3cn2d.js.map} +0 -0
- /package/dist/{chunk-cq44v1a6.js.map → chunk-7hpdd6r9.js.map} +0 -0
- /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
- /package/dist/{chunk-7g2gjvah.js.map → chunk-ex496vct.js.map} +0 -0
- /package/dist/{chunk-nvymebc1.js.map → chunk-f1zxad2t.js.map} +0 -0
- /package/dist/{chunk-b9y8hcm2.js.map → chunk-mfs23znk.js.map} +0 -0
- /package/dist/{chunk-h866d223.js.map → chunk-qkvz64nd.js.map} +0 -0
- /package/dist/{chunk-tkdbge6v.js.map → chunk-rt9p8m9t.js.map} +0 -0
- /package/dist/{chunk-sbcm1b92.js.map → chunk-v6xpd60t.js.map} +0 -0
- /package/dist/{chunk-nj0020ay.js.map → chunk-vgk3hknm.js.map} +0 -0
- /package/dist/{chunk-qnd7ehe5.js.map → chunk-vx2yp45y.js.map} +0 -0
- /package/dist/{chunk-nkbev3tr.js.map → chunk-yv9czyfr.js.map} +0 -0
- /package/dist/{chunk-cxj8y8t0.js.map → chunk-za5yd58j.js.map} +0 -0
- /package/dist/{chunk-zb47r1c8.js.map → chunk-zb77kjth.js.map} +0 -0
- /package/dist/{chunk-dp7yk20b.js.map → chunk-zxawp1n2.js.map} +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { AuthorizationError } from "../authorization/errors"
|
|
2
|
+
import type { StoredDomainEvent } from "../events/types"
|
|
3
|
+
import type { OntologyDefinitionCatalog } from "../ontology/registry"
|
|
4
|
+
import { missingClearanceRedactions } from "../security/redactions"
|
|
5
|
+
import type { ExpandedLinkValue, ExpandedObjectRow, ObjectRow } from "../storage"
|
|
6
|
+
import type {
|
|
7
|
+
ObjectQueryAdmissionState,
|
|
8
|
+
ObjectQueryPropertyUse,
|
|
9
|
+
ObjectQuerySemanticAdmission,
|
|
10
|
+
} from "./query/validate"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The marked properties one reader cannot read, resolved once from its clearances.
|
|
14
|
+
*
|
|
15
|
+
* A property is readable when the reader clears every one of its markings. Unreadable properties
|
|
16
|
+
* are omitted from rows and cannot be used to select, order, or aggregate objects.
|
|
17
|
+
*/
|
|
18
|
+
export interface PropertyClearance {
|
|
19
|
+
/** Marked properties of this object type the reader cannot read. */
|
|
20
|
+
hiddenPropertyIds(objectTypeId: string): ReadonlySet<string>
|
|
21
|
+
/** First marking on the property that the reader is not cleared for. */
|
|
22
|
+
missingMarking(objectTypeId: string, propertyId: string): string | undefined
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const NO_PROPERTIES: ReadonlySet<string> = new Set()
|
|
26
|
+
|
|
27
|
+
// Readers are built per execution, but few distinct clearance sets exist per ontology.
|
|
28
|
+
const clearancesByOntology = new WeakMap<
|
|
29
|
+
OntologyDefinitionCatalog,
|
|
30
|
+
Map<string, PropertyClearance | undefined>
|
|
31
|
+
>()
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Resolve what a reader with these clearances cannot read. Returns `undefined` when it can read
|
|
35
|
+
* every property, so callers skip redaction entirely.
|
|
36
|
+
*/
|
|
37
|
+
export function resolvePropertyClearance(
|
|
38
|
+
ontology: OntologyDefinitionCatalog,
|
|
39
|
+
clearances: ReadonlySet<string>
|
|
40
|
+
): PropertyClearance | undefined {
|
|
41
|
+
let resolved = clearancesByOntology.get(ontology)
|
|
42
|
+
if (!resolved) {
|
|
43
|
+
resolved = new Map()
|
|
44
|
+
clearancesByOntology.set(ontology, resolved)
|
|
45
|
+
}
|
|
46
|
+
const key = JSON.stringify([...clearances].sort())
|
|
47
|
+
if (!resolved.has(key)) resolved.set(key, createPropertyClearance(ontology, clearances))
|
|
48
|
+
return resolved.get(key)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function createPropertyClearance(
|
|
52
|
+
ontology: OntologyDefinitionCatalog,
|
|
53
|
+
clearances: ReadonlySet<string>
|
|
54
|
+
): PropertyClearance | undefined {
|
|
55
|
+
const missingByType = new Map<string, ReadonlyMap<string, string>>()
|
|
56
|
+
for (const objectType of ontology.listObjectTypes()) {
|
|
57
|
+
const missing = new Map<string, string>()
|
|
58
|
+
for (const property of objectType.properties) {
|
|
59
|
+
const marking = property.markings?.find((markingId) => !clearances.has(markingId))
|
|
60
|
+
if (marking !== undefined) missing.set(property.id, marking)
|
|
61
|
+
}
|
|
62
|
+
if (missing.size > 0) missingByType.set(objectType.id, missing)
|
|
63
|
+
}
|
|
64
|
+
if (missingByType.size === 0) return undefined
|
|
65
|
+
|
|
66
|
+
const hiddenByType = new Map(
|
|
67
|
+
[...missingByType].map(([objectTypeId, missing]) => [objectTypeId, new Set(missing.keys())])
|
|
68
|
+
)
|
|
69
|
+
return Object.freeze({
|
|
70
|
+
hiddenPropertyIds: (objectTypeId: string) => hiddenByType.get(objectTypeId) ?? NO_PROPERTIES,
|
|
71
|
+
missingMarking: (objectTypeId: string, propertyId: string) =>
|
|
72
|
+
missingByType.get(objectTypeId)?.get(propertyId),
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Omit unreadable properties from a row and the objects expanded under it.
|
|
78
|
+
*
|
|
79
|
+
* Every hidden property of the type is listed in `redactions`, whether or not the row holds a
|
|
80
|
+
* value: listing only present values would reveal which hidden properties are empty.
|
|
81
|
+
*/
|
|
82
|
+
export function redactObjectRow<TRow extends ObjectRow>(
|
|
83
|
+
row: TRow,
|
|
84
|
+
clearance: PropertyClearance
|
|
85
|
+
): TRow {
|
|
86
|
+
const hidden = clearance.hiddenPropertyIds(row.objectTypeId)
|
|
87
|
+
const links = row.links
|
|
88
|
+
if (hidden.size === 0 && links === undefined) return row
|
|
89
|
+
|
|
90
|
+
const redacted: TRow = { ...row }
|
|
91
|
+
if (hidden.size > 0) {
|
|
92
|
+
redacted.properties = withoutKeys(row.properties, hidden)
|
|
93
|
+
redacted.redactions = missingClearanceRedactions(hidden)
|
|
94
|
+
}
|
|
95
|
+
if (links !== undefined) {
|
|
96
|
+
redacted.links = Object.fromEntries(
|
|
97
|
+
Object.entries(links).map(([linkId, value]) => [linkId, redactLinkValue(value, clearance)])
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
return redacted
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function redactLinkValue(
|
|
104
|
+
value: ExpandedLinkValue,
|
|
105
|
+
clearance: PropertyClearance
|
|
106
|
+
): ExpandedLinkValue {
|
|
107
|
+
if (value === null) return null
|
|
108
|
+
if (Array.isArray(value)) return value.map((row) => redactObjectRow(row, clearance))
|
|
109
|
+
// Array.isArray does not narrow a readonly[] away, so assert the single-object case.
|
|
110
|
+
return redactObjectRow(value as ExpandedObjectRow, clearance)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Omit unreadable properties from an object event, under the same contract as rows. Other events
|
|
115
|
+
* carry no markable value: link properties and telemetry properties cannot be marked.
|
|
116
|
+
*/
|
|
117
|
+
export function redactDomainEvent(
|
|
118
|
+
event: StoredDomainEvent,
|
|
119
|
+
clearance: PropertyClearance
|
|
120
|
+
): StoredDomainEvent {
|
|
121
|
+
if (event.topic !== "objects") return event
|
|
122
|
+
const hidden = clearance.hiddenPropertyIds(event.payload.objectTypeId)
|
|
123
|
+
if (hidden.size === 0) return event
|
|
124
|
+
|
|
125
|
+
const payload = {
|
|
126
|
+
...event.payload,
|
|
127
|
+
propertyChanges: withoutKeys(event.payload.propertyChanges, hidden),
|
|
128
|
+
redactions: missingClearanceRedactions(hidden),
|
|
129
|
+
}
|
|
130
|
+
if (event.type === "object.deleted") return { ...event, payload }
|
|
131
|
+
return {
|
|
132
|
+
...event,
|
|
133
|
+
payload: { ...payload, properties: withoutKeys(event.payload.properties, hidden) },
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function withoutKeys<TValue>(
|
|
138
|
+
record: Readonly<Record<string, TValue>>,
|
|
139
|
+
hidden: ReadonlySet<string>
|
|
140
|
+
): Record<string, TValue> {
|
|
141
|
+
const kept: Record<string, TValue> = {}
|
|
142
|
+
for (const [key, value] of Object.entries(record)) {
|
|
143
|
+
if (!hidden.has(key)) kept[key] = value
|
|
144
|
+
}
|
|
145
|
+
return kept
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Reject every query use of a property the reader cannot read, except projection.
|
|
150
|
+
*
|
|
151
|
+
* Filtering, ordering, searching, or faceting by a hidden value would reveal it through which
|
|
152
|
+
* objects match and in what order. Projection only shapes the output, which is redacted anyway.
|
|
153
|
+
*/
|
|
154
|
+
export function createClearanceQueryAdmission(
|
|
155
|
+
clearance: PropertyClearance
|
|
156
|
+
): ObjectQuerySemanticAdmission {
|
|
157
|
+
// Each state stands for the object types a query has reached so far. A property without an
|
|
158
|
+
// explicit type is checked against all of them.
|
|
159
|
+
const reachedTypes = new WeakMap<ObjectQueryAdmissionState, readonly string[]>()
|
|
160
|
+
const state = (objectTypeIds: readonly string[]): ObjectQueryAdmissionState => {
|
|
161
|
+
const created = Object.freeze({})
|
|
162
|
+
reachedTypes.set(created, Object.freeze([...objectTypeIds]))
|
|
163
|
+
return created
|
|
164
|
+
}
|
|
165
|
+
const reached = (input: ObjectQueryAdmissionState): readonly string[] => {
|
|
166
|
+
const objectTypeIds = reachedTypes.get(input)
|
|
167
|
+
if (!objectTypeIds) {
|
|
168
|
+
throw new Error("[Sixb] Clearance query admission received a state it did not create.")
|
|
169
|
+
}
|
|
170
|
+
return objectTypeIds
|
|
171
|
+
}
|
|
172
|
+
const empty = state([])
|
|
173
|
+
|
|
174
|
+
const admission: ObjectQuerySemanticAdmission = {
|
|
175
|
+
empty: () => empty,
|
|
176
|
+
source: (input) => ({ state: state(input.result.objectTypeIds) }),
|
|
177
|
+
edge: (input) => ({ state: state(input.result.objectTypeIds) }),
|
|
178
|
+
// A difference only returns objects of its first input.
|
|
179
|
+
set: (input) =>
|
|
180
|
+
input.op === "subtract"
|
|
181
|
+
? (input.states[0] ?? empty)
|
|
182
|
+
: state([...new Set(input.states.flatMap(reached))]),
|
|
183
|
+
property: (input) => {
|
|
184
|
+
if (input.use === "project") return undefined
|
|
185
|
+
const objectTypeIds =
|
|
186
|
+
input.objectTypeId === undefined ? reached(input.state) : [input.objectTypeId]
|
|
187
|
+
for (const objectTypeId of objectTypeIds) {
|
|
188
|
+
const marking = clearance.missingMarking(objectTypeId, input.propertyId)
|
|
189
|
+
if (marking === undefined) continue
|
|
190
|
+
return new AuthorizationError(
|
|
191
|
+
`clearance:marking:${marking}`,
|
|
192
|
+
`[Sixb] Cannot ${PROPERTY_USE_VERBS[input.use]} '${objectTypeId}.${input.propertyId}' at '${input.path}': it requires clearance for marking '${marking}'.`
|
|
193
|
+
)
|
|
194
|
+
}
|
|
195
|
+
return undefined
|
|
196
|
+
},
|
|
197
|
+
}
|
|
198
|
+
return Object.freeze(admission)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const PROPERTY_USE_VERBS: Readonly<Record<ObjectQueryPropertyUse, string>> = {
|
|
202
|
+
filter: "filter by",
|
|
203
|
+
text: "search",
|
|
204
|
+
vector: "run a vector search over",
|
|
205
|
+
sort: "sort by",
|
|
206
|
+
project: "project",
|
|
207
|
+
"expand.orderBy": "order expanded objects by",
|
|
208
|
+
facet: "facet by",
|
|
209
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AuthorizationContext, assertAuthorized } from "../../authorization"
|
|
2
2
|
import type { RuntimeAuthorization } from "../../execution/types"
|
|
3
|
-
import type { EmbeddingModelCatalog } from "../../models/catalog"
|
|
3
|
+
import type { EmbeddingModelCatalog, RerankingModelCatalog } from "../../models/catalog"
|
|
4
4
|
import type { OntologyRegistry } from "../../ontology"
|
|
5
5
|
import type {
|
|
6
6
|
CountObjectsResult,
|
|
@@ -34,12 +34,18 @@ import type {
|
|
|
34
34
|
} from "./ir"
|
|
35
35
|
import { normalizeObjectQuery } from "./normalize"
|
|
36
36
|
import { type ObjectQueryPlan, type ObjectQueryPlanningOptions, planObjectQuery } from "./planner"
|
|
37
|
+
import { usePrimaryIdLookups } from "./primary-id"
|
|
38
|
+
import { rerankObjectCandidates } from "./reranking-executor"
|
|
39
|
+
import { findQueryReranking } from "./reranking-query"
|
|
37
40
|
import { compareQueryScalarValues, queryScalarValuesEqual } from "./scalar-values"
|
|
38
41
|
import {
|
|
42
|
+
type AdmittedObjectQuery,
|
|
43
|
+
type ObjectQuerySemanticAdmission,
|
|
39
44
|
type ObjectQueryValidationIssue,
|
|
40
45
|
resolveObjectQueryResultShape,
|
|
41
46
|
type ValidatedObjectQuery,
|
|
42
47
|
validateObjectQuery,
|
|
48
|
+
validateObjectQueryWithAdmission,
|
|
43
49
|
} from "./validate"
|
|
44
50
|
|
|
45
51
|
export interface QueryExecutorOptions
|
|
@@ -54,6 +60,7 @@ export interface QueryExecutorOptions
|
|
|
54
60
|
> {
|
|
55
61
|
ontology: OntologyRegistry
|
|
56
62
|
embeddingModels?: EmbeddingModelCatalog
|
|
63
|
+
rerankingModels?: RerankingModelCatalog
|
|
57
64
|
storage: ObjectReadStorage
|
|
58
65
|
maxLimit?: number
|
|
59
66
|
maxPageSize?: number
|
|
@@ -69,6 +76,8 @@ export interface QueryExecutorOptions
|
|
|
69
76
|
authorization?: AuthorizationContext
|
|
70
77
|
/** Registered execution capability for queries reached through a bound Sixb SDK. */
|
|
71
78
|
runtimeAuthorization?: RuntimeAuthorization
|
|
79
|
+
/** Reader-specific admission applied after grants, such as marking clearances. */
|
|
80
|
+
admission?: ObjectQuerySemanticAdmission
|
|
72
81
|
}
|
|
73
82
|
|
|
74
83
|
export interface ExecuteObjectQueryInput {
|
|
@@ -134,15 +143,7 @@ export async function executeObjectQuery(
|
|
|
134
143
|
input: ExecuteObjectQueryInput,
|
|
135
144
|
options: QueryExecutorOptions
|
|
136
145
|
): Promise<ExecuteObjectQueryResult> {
|
|
137
|
-
const
|
|
138
|
-
const validated = validateObjectQuery(normalized, {
|
|
139
|
-
ontology: options.ontology,
|
|
140
|
-
maxLimit: options.maxLimit,
|
|
141
|
-
maxPageSize: options.maxPageSize,
|
|
142
|
-
maxRefs: options.maxRefs,
|
|
143
|
-
normalize: false,
|
|
144
|
-
})
|
|
145
|
-
assertQueryViewable(input.projectId, validated, options)
|
|
146
|
+
const validated = validateExecutableQuery(input, options)
|
|
146
147
|
const capabilities = options.storage.queryCapabilities()
|
|
147
148
|
const hasQueryObjects = typeof options.storage.queryObjects === "function"
|
|
148
149
|
const hasCountObjects = typeof options.storage.countObjects === "function"
|
|
@@ -178,6 +179,37 @@ export async function executeObjectQuery(
|
|
|
178
179
|
throw new ObjectQueryPlanningError(plan.issues)
|
|
179
180
|
}
|
|
180
181
|
|
|
182
|
+
if (plan.mode === "pipeline") {
|
|
183
|
+
const reranking = findQueryReranking(validated.query)
|
|
184
|
+
if (!reranking || reranking.input.kind !== "vector") {
|
|
185
|
+
throw new ObjectQueryExecutionError(
|
|
186
|
+
"invalid_rerank_input",
|
|
187
|
+
"Reranking requires vector candidates."
|
|
188
|
+
)
|
|
189
|
+
}
|
|
190
|
+
// Resolve the allowlisted server binding before paying for query embedding.
|
|
191
|
+
const model = options.rerankingModels?.getByRef(reranking.model)?.model
|
|
192
|
+
if (!model) {
|
|
193
|
+
throw new ObjectQueryExecutionError(
|
|
194
|
+
"reranking_model_unavailable",
|
|
195
|
+
`Reranking model '${reranking.model.provider}/${reranking.model.modelId}' is not configured in models.reranking.`
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
const candidates = await executeObjectQuery(
|
|
199
|
+
{ ...input, query: reranking.input, includeTotal: false },
|
|
200
|
+
options
|
|
201
|
+
)
|
|
202
|
+
const result = await rerankObjectCandidates({
|
|
203
|
+
query: validated.query,
|
|
204
|
+
vector: reranking.input,
|
|
205
|
+
candidates: candidates.objects,
|
|
206
|
+
model,
|
|
207
|
+
signal: input.signal,
|
|
208
|
+
includeTotal: input.includeTotal,
|
|
209
|
+
})
|
|
210
|
+
return { ...result, plan }
|
|
211
|
+
}
|
|
212
|
+
|
|
181
213
|
if (plan.mode === "pushdown") {
|
|
182
214
|
if (!options.storage.queryObjects) {
|
|
183
215
|
throw new ObjectQueryPlanningError(plan.providerIssues)
|
|
@@ -207,15 +239,7 @@ export async function countObjects(
|
|
|
207
239
|
input: ExecuteObjectCountInput,
|
|
208
240
|
options: QueryExecutorOptions
|
|
209
241
|
): Promise<ExecuteObjectCountResult> {
|
|
210
|
-
const
|
|
211
|
-
const validated = validateObjectQuery(normalized, {
|
|
212
|
-
ontology: options.ontology,
|
|
213
|
-
maxLimit: options.maxLimit,
|
|
214
|
-
maxPageSize: options.maxPageSize,
|
|
215
|
-
maxRefs: options.maxRefs,
|
|
216
|
-
normalize: false,
|
|
217
|
-
})
|
|
218
|
-
assertQueryViewable(input.projectId, validated, options)
|
|
242
|
+
const validated = validateExecutableQuery(input, options)
|
|
219
243
|
const capabilities = options.storage.queryCapabilities()
|
|
220
244
|
const hasQueryObjects = typeof options.storage.queryObjects === "function"
|
|
221
245
|
const hasCountObjects = typeof options.storage.countObjects === "function"
|
|
@@ -268,15 +292,7 @@ export async function existsObjects(
|
|
|
268
292
|
input: ExecuteObjectExistsInput,
|
|
269
293
|
options: QueryExecutorOptions
|
|
270
294
|
): Promise<ExecuteObjectExistsResult> {
|
|
271
|
-
const
|
|
272
|
-
const validated = validateObjectQuery(normalized, {
|
|
273
|
-
ontology: options.ontology,
|
|
274
|
-
maxLimit: options.maxLimit,
|
|
275
|
-
maxPageSize: options.maxPageSize,
|
|
276
|
-
maxRefs: options.maxRefs,
|
|
277
|
-
normalize: false,
|
|
278
|
-
})
|
|
279
|
-
assertQueryViewable(input.projectId, validated, options)
|
|
295
|
+
const validated = validateExecutableQuery(input, options)
|
|
280
296
|
const capabilities = options.storage.queryCapabilities()
|
|
281
297
|
const hasQueryObjects = typeof options.storage.queryObjects === "function"
|
|
282
298
|
const hasCountObjects = typeof options.storage.countObjects === "function"
|
|
@@ -329,16 +345,17 @@ export async function facetObjects(
|
|
|
329
345
|
input: ExecuteObjectFacetsInput,
|
|
330
346
|
options: QueryExecutorOptions
|
|
331
347
|
): Promise<ExecuteObjectFacetsResult> {
|
|
332
|
-
const
|
|
333
|
-
const validated = validateObjectQuery(normalized, {
|
|
334
|
-
ontology: options.ontology,
|
|
335
|
-
maxLimit: options.maxLimit,
|
|
336
|
-
maxPageSize: options.maxPageSize,
|
|
337
|
-
maxRefs: options.maxRefs,
|
|
338
|
-
normalize: false,
|
|
339
|
-
})
|
|
340
|
-
assertQueryViewable(input.projectId, validated, options)
|
|
348
|
+
const validated = validateExecutableQuery(input, options)
|
|
341
349
|
const facets = validateObjectFacetRequests(input.facets, validated.result.objectTypeIds, options)
|
|
350
|
+
facets.forEach((facet, index) => {
|
|
351
|
+
const denial = options.admission?.property({
|
|
352
|
+
state: validated.admissionState,
|
|
353
|
+
propertyId: facet.propertyId,
|
|
354
|
+
use: "facet",
|
|
355
|
+
path: `$.facets[${index}].propertyId`,
|
|
356
|
+
})
|
|
357
|
+
if (denial) throw denial
|
|
358
|
+
})
|
|
342
359
|
const aggregateQuery = stripOuterRowShape(validated.query)
|
|
343
360
|
const capabilities = options.storage.queryCapabilities()
|
|
344
361
|
const hasQueryObjects = typeof options.storage.queryObjects === "function"
|
|
@@ -386,6 +403,7 @@ export async function facetObjects(
|
|
|
386
403
|
const maxRows = options.maxFallbackRows ?? DEFAULT_MAX_FALLBACK_ROWS
|
|
387
404
|
const evaluation = await evaluateFallbackQuery(input.projectId, aggregateQuery, options, maxRows)
|
|
388
405
|
return {
|
|
406
|
+
total: evaluation.entries.length,
|
|
389
407
|
facets: buildFacetResults(
|
|
390
408
|
evaluation.entries.map((entry) => entry.row),
|
|
391
409
|
facets
|
|
@@ -394,6 +412,31 @@ export async function facetObjects(
|
|
|
394
412
|
}
|
|
395
413
|
}
|
|
396
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Validate, authorize the touched types, then admit the query for the reader.
|
|
417
|
+
*
|
|
418
|
+
* Grants are checked first so a denial never describes properties of a type the caller cannot
|
|
419
|
+
* view. The admitted query is the one executed: an admission may narrow it, as markings narrow
|
|
420
|
+
* default text fields.
|
|
421
|
+
*/
|
|
422
|
+
function validateExecutableQuery(
|
|
423
|
+
input: { readonly projectId: string; readonly query: ObjectQuery },
|
|
424
|
+
options: QueryExecutorOptions
|
|
425
|
+
): AdmittedObjectQuery {
|
|
426
|
+
const validationOptions = {
|
|
427
|
+
ontology: options.ontology,
|
|
428
|
+
maxLimit: options.maxLimit,
|
|
429
|
+
maxPageSize: options.maxPageSize,
|
|
430
|
+
maxRefs: options.maxRefs,
|
|
431
|
+
normalize: false,
|
|
432
|
+
}
|
|
433
|
+
const normalized = normalizeObjectQuery(input.query)
|
|
434
|
+
const validated = validateObjectQuery(normalized, validationOptions)
|
|
435
|
+
assertQueryViewable(input.projectId, validated, options)
|
|
436
|
+
if (!options.admission) return { ...validated, admissionState: {} }
|
|
437
|
+
return validateObjectQueryWithAdmission(normalized, validationOptions, options.admission)
|
|
438
|
+
}
|
|
439
|
+
|
|
397
440
|
// Authorization happens at planning time: a scoped query must hold a view
|
|
398
441
|
// grant for every object type it touches, before any storage call runs.
|
|
399
442
|
function assertQueryViewable(
|
|
@@ -432,7 +475,7 @@ function expandPushdownQuery(
|
|
|
432
475
|
// disagree) cleanly stays on the fallback.
|
|
433
476
|
const ctx: ExpansionResolutionContext = { ontology, maxExpansionFanout }
|
|
434
477
|
const annotated = resolveExpansions(query, ctx)
|
|
435
|
-
const expanded = expandIncludeSubtypes(annotated, ontology)
|
|
478
|
+
const expanded = usePrimaryIdLookups(expandIncludeSubtypes(annotated, ontology), ontology)
|
|
436
479
|
if (expanded === annotated) return annotated
|
|
437
480
|
|
|
438
481
|
const plan = planObjectQuery(expanded, { ...planning, capabilities, allowFallback: false })
|
|
@@ -465,6 +508,7 @@ function resolveExpansions(query: ObjectQuery, ctx: ExpansionResolutionContext):
|
|
|
465
508
|
case "filter":
|
|
466
509
|
case "text":
|
|
467
510
|
case "vector":
|
|
511
|
+
case "rerank":
|
|
468
512
|
case "traverse":
|
|
469
513
|
case "sort":
|
|
470
514
|
case "limit":
|
|
@@ -581,6 +625,7 @@ function expandIncludeSubtypes(query: ObjectQuery, ontology: OntologyRegistry):
|
|
|
581
625
|
case "filter":
|
|
582
626
|
case "text":
|
|
583
627
|
case "vector":
|
|
628
|
+
case "rerank":
|
|
584
629
|
case "traverse":
|
|
585
630
|
case "sort":
|
|
586
631
|
case "limit":
|
|
@@ -688,6 +733,7 @@ async function evaluateFallbackQuery(
|
|
|
688
733
|
}
|
|
689
734
|
case "text":
|
|
690
735
|
case "vector":
|
|
736
|
+
case "rerank":
|
|
691
737
|
case "traverse":
|
|
692
738
|
case "set":
|
|
693
739
|
throw new ObjectQueryExecutionError(
|
|
@@ -1186,6 +1232,7 @@ function stripOuterRowShape(query: ObjectQuery): ObjectQuery {
|
|
|
1186
1232
|
case "page":
|
|
1187
1233
|
case "project":
|
|
1188
1234
|
case "sort":
|
|
1235
|
+
case "rerank":
|
|
1189
1236
|
// `expand` is output-shaping: it attaches links but does not change which
|
|
1190
1237
|
// objects match, so aggregates (count/exists/facets) ignore it.
|
|
1191
1238
|
case "expand":
|
|
@@ -145,6 +145,14 @@ function buildExplainNode(query: ObjectQuery, path: string): ObjectQueryExplainN
|
|
|
145
145
|
},
|
|
146
146
|
children: [buildExplainNode(query.input, `${path}.input`)],
|
|
147
147
|
}
|
|
148
|
+
case "rerank":
|
|
149
|
+
return {
|
|
150
|
+
path,
|
|
151
|
+
kind: query.kind,
|
|
152
|
+
summary: `rerank ${query.model.provider}/${query.model.modelId}`,
|
|
153
|
+
details: { model: query.model },
|
|
154
|
+
children: [buildExplainNode(query.input, `${path}.input`)],
|
|
155
|
+
}
|
|
148
156
|
case "set":
|
|
149
157
|
return {
|
|
150
158
|
path,
|
package/src/objects/query/ir.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* storage backend. Providers can push down the subset they support, while the
|
|
6
6
|
* core planner decides whether a bounded fallback is acceptable.
|
|
7
7
|
*/
|
|
8
|
+
|
|
9
|
+
import type { ModelRef } from "../../models/catalog"
|
|
8
10
|
import type { ObjectRef } from "../../ontology/refs"
|
|
9
11
|
|
|
10
12
|
export type ObjectQueryDirection = "outgoing" | "incoming"
|
|
@@ -29,6 +31,7 @@ export type ObjectQuery =
|
|
|
29
31
|
| ObjectQueryFilter
|
|
30
32
|
| ObjectQueryText
|
|
31
33
|
| ObjectQueryVector
|
|
34
|
+
| ObjectQueryRerank
|
|
32
35
|
| ObjectQueryTraverse
|
|
33
36
|
| ObjectQuerySet
|
|
34
37
|
| ObjectQuerySort
|
|
@@ -102,6 +105,13 @@ export interface ObjectQueryTraverse {
|
|
|
102
105
|
sourceObjectTypeId?: string
|
|
103
106
|
}
|
|
104
107
|
|
|
108
|
+
/** Explicit server-side reordering of a bounded vector candidate set. */
|
|
109
|
+
export interface ObjectQueryRerank {
|
|
110
|
+
kind: "rerank"
|
|
111
|
+
input: ObjectQuery
|
|
112
|
+
model: ModelRef
|
|
113
|
+
}
|
|
114
|
+
|
|
105
115
|
export interface ObjectQuerySet {
|
|
106
116
|
kind: "set"
|
|
107
117
|
op: ObjectQuerySetOperation
|
|
@@ -46,6 +46,8 @@ function normalizeNode(query: ObjectQuery): ObjectQuery {
|
|
|
46
46
|
}
|
|
47
47
|
case "traverse":
|
|
48
48
|
return { ...query, input: normalizeObjectQuery(query.input) }
|
|
49
|
+
case "rerank":
|
|
50
|
+
return { ...query, model: { ...query.model }, input: normalizeObjectQuery(query.input) }
|
|
49
51
|
case "set":
|
|
50
52
|
return normalizeSet(query)
|
|
51
53
|
case "sort":
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ObjectQueryCapabilities, ObjectQueryScalarOperation } from "../../storage"
|
|
2
2
|
import type { ObjectQueryPlanningIssue } from "./errors"
|
|
3
3
|
import type { ObjectExpansion, ObjectQuery, ObjectQueryPredicate, ObjectQuerySortField } from "./ir"
|
|
4
|
+
import { findQueryReranking } from "./reranking-query"
|
|
4
5
|
|
|
5
|
-
export type ObjectQueryPlanMode = "pushdown" | "fallback" | "rejected"
|
|
6
|
+
export type ObjectQueryPlanMode = "pushdown" | "fallback" | "pipeline" | "rejected"
|
|
6
7
|
export type ObjectQueryProviderOperation =
|
|
7
8
|
| "queryObjects"
|
|
8
9
|
| "countObjects"
|
|
@@ -54,6 +55,15 @@ export function planObjectQuery(
|
|
|
54
55
|
options: ObjectQueryPlanningOptions
|
|
55
56
|
): ObjectQueryPlan {
|
|
56
57
|
const operation = options.operation ?? "queryObjects"
|
|
58
|
+
const reranking = findQueryReranking(query)
|
|
59
|
+
if (reranking) {
|
|
60
|
+
const candidatePlan = planObjectQuery(reranking.input, options)
|
|
61
|
+
return {
|
|
62
|
+
...candidatePlan,
|
|
63
|
+
query,
|
|
64
|
+
mode: candidatePlan.mode === "rejected" ? "rejected" : "pipeline",
|
|
65
|
+
}
|
|
66
|
+
}
|
|
57
67
|
// Providers get first refusal. Fallback is considered only after the provider
|
|
58
68
|
// declares that pushdown is unavailable or incomplete for this query.
|
|
59
69
|
const providerIssues = collectProviderIssues(query, options.capabilities, {
|
|
@@ -204,6 +214,7 @@ function collectNodeProviderIssues(
|
|
|
204
214
|
return
|
|
205
215
|
case "text":
|
|
206
216
|
case "vector":
|
|
217
|
+
case "rerank":
|
|
207
218
|
case "project":
|
|
208
219
|
collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues)
|
|
209
220
|
return
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { OntologyDefinitionCatalog } from "../../ontology/registry"
|
|
2
|
+
import type { ObjectQuery, ObjectQueryPredicate } from "./ir"
|
|
3
|
+
|
|
4
|
+
/** Exact identity predicates can start from primary-key lookups. Keep the original filter:
|
|
5
|
+
* the optimization must not remove other conditions or expose a projected-out property.
|
|
6
|
+
* Only a direct start is rewritten; filters after bounds/projections keep their semantics. */
|
|
7
|
+
export function usePrimaryIdLookups(
|
|
8
|
+
query: ObjectQuery,
|
|
9
|
+
ontology: OntologyDefinitionCatalog
|
|
10
|
+
): ObjectQuery {
|
|
11
|
+
if (query.kind === "set")
|
|
12
|
+
return { ...query, inputs: query.inputs.map((input) => usePrimaryIdLookups(input, ontology)) }
|
|
13
|
+
if (!("input" in query)) return query
|
|
14
|
+
const input = usePrimaryIdLookups(query.input, ontology)
|
|
15
|
+
if (query.kind === "filter" && input.kind === "start" && !input.includeSubtypes) {
|
|
16
|
+
const propertyId = ontology.getPrimaryPropertyId(input.objectTypeId)
|
|
17
|
+
const ids = primaryIds(query.predicate, propertyId)
|
|
18
|
+
if (ids?.length && ids.length <= 1000)
|
|
19
|
+
return {
|
|
20
|
+
...query,
|
|
21
|
+
input: {
|
|
22
|
+
kind: "refs",
|
|
23
|
+
refs: [...new Set(ids)]
|
|
24
|
+
.sort()
|
|
25
|
+
.map((primaryId) => ({ objectTypeId: input.objectTypeId, primaryId })),
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return input === query.input ? query : { ...query, input }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function primaryIds(
|
|
33
|
+
predicate: ObjectQueryPredicate,
|
|
34
|
+
propertyId: string
|
|
35
|
+
): readonly string[] | undefined {
|
|
36
|
+
if (predicate.op === "and") {
|
|
37
|
+
for (const item of predicate.items) {
|
|
38
|
+
const ids = primaryIds(item, propertyId)
|
|
39
|
+
if (ids) return ids
|
|
40
|
+
}
|
|
41
|
+
return undefined
|
|
42
|
+
}
|
|
43
|
+
if (
|
|
44
|
+
predicate.op === "eq" &&
|
|
45
|
+
predicate.propertyId === propertyId &&
|
|
46
|
+
typeof predicate.value === "string"
|
|
47
|
+
)
|
|
48
|
+
return [predicate.value]
|
|
49
|
+
if (
|
|
50
|
+
predicate.op === "in" &&
|
|
51
|
+
predicate.propertyId === propertyId &&
|
|
52
|
+
predicate.values.every((value) => typeof value === "string")
|
|
53
|
+
)
|
|
54
|
+
return predicate.values as readonly string[]
|
|
55
|
+
return undefined
|
|
56
|
+
}
|