@sixb/core 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +25 -25
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/worker.js +1 -1
- package/dist/agents/index.js +41 -40
- package/dist/agents/index.js.map +1 -1
- package/dist/auth/index.js +5 -5
- package/dist/authorization/index.js +2 -2
- package/dist/blob-storage/download-urls.d.ts +41 -0
- package/dist/blob-storage/download-urls.d.ts.map +1 -0
- package/dist/blob-storage/execution.d.ts +9 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/index.js +5 -3
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/internal.d.ts +2 -0
- package/dist/blob-storage/internal.d.ts.map +1 -0
- package/dist/blob-storage/internal.js +11 -0
- package/dist/blob-storage/internal.js.map +9 -0
- package/dist/bootstrap/index.js +45 -44
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/{chunk-wem5vqjw.js → chunk-10styjgk.js} +18 -13
- package/dist/{chunk-wem5vqjw.js.map → chunk-10styjgk.js.map} +3 -3
- package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
- package/dist/chunk-1hqwggsn.js.map +12 -0
- package/dist/{chunk-q3grgzp1.js → chunk-23xs4qp9.js} +2 -2
- package/dist/{chunk-vef6qa14.js → chunk-2am3db31.js} +2 -2
- package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
- package/dist/{chunk-p0nbkys4.js → chunk-33saed7g.js} +1 -1
- package/dist/{chunk-mdnw7nj8.js → chunk-3rrezgyc.js} +33 -8
- package/dist/chunk-3rrezgyc.js.map +15 -0
- package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
- package/dist/chunk-4as3wt1c.js.map +12 -0
- package/dist/chunk-4ra628t7.js +88 -0
- package/dist/chunk-4ra628t7.js.map +10 -0
- package/dist/{chunk-mmac1mp6.js → chunk-52c5zb0z.js} +2 -2
- package/dist/{chunk-8fjmqjyx.js → chunk-5be2ath4.js} +1 -1
- package/dist/{chunk-2fv8sajb.js → chunk-5thzcb8g.js} +2 -2
- package/dist/{chunk-fjw417jf.js → chunk-5yd8cchh.js} +1143 -784
- package/dist/chunk-5yd8cchh.js.map +66 -0
- package/dist/{chunk-2tz5vnvz.js → chunk-6wbm6ymz.js} +235 -41
- package/dist/{chunk-2tz5vnvz.js.map → chunk-6wbm6ymz.js.map} +8 -6
- package/dist/{chunk-py2dw8cw.js → chunk-7ecp4v7a.js} +26 -19
- package/dist/chunk-7ecp4v7a.js.map +17 -0
- package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
- package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
- package/dist/{chunk-1jvq82rp.js → chunk-9g6jz9kk.js} +5 -5
- package/dist/{chunk-39tqv9hz.js → chunk-9se093qz.js} +5 -6
- package/dist/{chunk-39tqv9hz.js.map → chunk-9se093qz.js.map} +3 -4
- package/dist/{chunk-8w27xf9e.js → chunk-a7er86jd.js} +1 -1
- package/dist/{chunk-zdkcdshk.js → chunk-aq39q04r.js} +41 -3
- package/dist/{chunk-zdkcdshk.js.map → chunk-aq39q04r.js.map} +4 -3
- package/dist/chunk-b9affek3.js +261 -0
- package/dist/chunk-b9affek3.js.map +12 -0
- package/dist/{chunk-bxx3ms5t.js → chunk-c2rga5cx.js} +2 -2
- package/dist/{chunk-dsfw1bdr.js → chunk-cnb5kv05.js} +2 -2
- package/dist/chunk-d62kjtbg.js.map +2 -2
- package/dist/{chunk-dqkd3kdj.js → chunk-dam456ve.js} +234 -35
- package/dist/{chunk-dqkd3kdj.js.map → chunk-dam456ve.js.map} +7 -5
- package/dist/{chunk-n5t4mq6z.js → chunk-e67ynxcr.js} +3 -3
- package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
- package/dist/chunk-ere85b8y.js.map +15 -0
- package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
- package/dist/chunk-ewqa58h9.js.map +11 -0
- package/dist/{chunk-6q7c68yx.js → chunk-f1xh7a32.js} +3 -3
- package/dist/{chunk-z708gemf.js → chunk-fggq3d9k.js} +450 -799
- package/dist/chunk-fggq3d9k.js.map +49 -0
- package/dist/{chunk-7jc21943.js → chunk-gf7yht60.js} +4 -4
- package/dist/chunk-h8teetr0.js +9 -0
- package/dist/chunk-h8teetr0.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-ffwvdgk1.js → chunk-jjrn5v0p.js} +1 -1
- package/dist/{chunk-r5sc1d2b.js → chunk-jnfxmr3f.js} +1 -1
- package/dist/{chunk-y0zmae99.js → chunk-k4g51s47.js} +3 -3
- package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
- package/dist/chunk-kpx7jrmn.js.map +12 -0
- package/dist/{chunk-p1683c0v.js → chunk-kyjcwqz6.js} +5 -2
- package/dist/{chunk-p1683c0v.js.map → chunk-kyjcwqz6.js.map} +3 -3
- package/dist/{chunk-3c90jvfj.js → chunk-pja9jfz6.js} +742 -583
- package/dist/chunk-pja9jfz6.js.map +19 -0
- package/dist/chunk-pqajwytd.js.map +1 -1
- package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
- package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
- package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
- package/dist/chunk-rj69qcrd.js.map +11 -0
- package/dist/{chunk-d8yes9yx.js → chunk-rpxz486p.js} +32 -5
- package/dist/{chunk-d8yes9yx.js.map → chunk-rpxz486p.js.map} +4 -4
- package/dist/{chunk-drz59ve0.js → chunk-rx7h5fdx.js} +1 -1
- package/dist/{chunk-ky7zpbtt.js → chunk-s7ftxrdr.js} +106 -8
- package/dist/chunk-s7ftxrdr.js.map +22 -0
- package/dist/{chunk-yfppyaty.js → chunk-sk0hcjsz.js} +1 -1
- package/dist/{chunk-qne45xqq.js → chunk-svabwqdq.js} +2 -2
- package/dist/{chunk-xr7y35yj.js → chunk-t9shqx3w.js} +2 -2
- package/dist/{chunk-4jph1t3v.js → chunk-tjjgy3z4.js} +27 -24
- package/dist/{chunk-4jph1t3v.js.map → chunk-tjjgy3z4.js.map} +4 -4
- package/dist/{chunk-ex8s8wsk.js → chunk-vp3z1ckh.js} +42 -10
- package/dist/{chunk-ex8s8wsk.js.map → chunk-vp3z1ckh.js.map} +7 -6
- package/dist/{chunk-adbve9zt.js → chunk-vre348sb.js} +2 -2
- package/dist/{chunk-a4g5yjm0.js → chunk-w9yycd3t.js} +1 -1
- package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
- package/dist/chunk-wt4szfec.js.map +14 -0
- package/dist/{chunk-wd34wnsy.js → chunk-xcy5ddha.js} +6 -6
- package/dist/{chunk-3nx8vj5a.js → chunk-xyvy73tj.js} +5 -3
- package/dist/chunk-xyvy73tj.js.map +12 -0
- package/dist/datasets/write.js +1 -1
- package/dist/execution/agent.js +38 -37
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +3 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +36 -35
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +37 -36
- package/dist/execution/request.js.map +2 -2
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -59
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +5 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +1 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +2 -2
- package/dist/lake-storage/types.d.ts +26 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +5 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -4
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +20 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -0
- package/dist/materialization/events.d.ts +29 -3
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +4 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +9 -3
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -10
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/effective/build-events.d.ts +5 -21
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +2 -3
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
- package/dist/materializer/effective/vectors.d.ts +2 -3
- package/dist/materializer/effective/vectors.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +1 -11
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/execution/work-executor.d.ts +5 -7
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +1 -3
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +31 -32
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +8 -11
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/batching.d.ts +5 -0
- package/dist/materializer/shared/batching.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -8
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +20 -0
- package/dist/models/audio/catalog.d.ts.map +1 -0
- package/dist/models/audio/errors.d.ts +8 -0
- package/dist/models/audio/errors.d.ts.map +1 -0
- package/dist/models/audio/file.d.ts +9 -0
- package/dist/models/audio/file.d.ts.map +1 -0
- package/dist/models/audio/runtime.d.ts +8 -0
- package/dist/models/audio/runtime.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +60 -0
- package/dist/models/audio/types.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +23 -1
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +1 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/embedding-model.d.ts +4 -0
- package/dist/models/embedding-model.d.ts.map +1 -1
- package/dist/models/events.d.ts +3 -0
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/index.js +22 -22
- package/dist/models/execution/model-call-admission.d.ts +6 -1
- package/dist/models/execution/model-call-admission.d.ts.map +1 -1
- package/dist/models/execution/model-call-limits.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/reranking.d.ts +4 -0
- package/dist/models/execution/reranking.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +2 -1
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +2 -0
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/index.d.ts +7 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +7 -3
- package/dist/models/index.js.map +1 -1
- package/dist/models/pricing.d.ts +2 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/reranking-model.d.ts +49 -0
- package/dist/models/reranking-model.d.ts.map +1 -0
- package/dist/objects/index.js +25 -25
- package/dist/objects/query/executor.d.ts +2 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +1 -1
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +24 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +8 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/planner.d.ts +1 -1
- package/dist/objects/query/planner.d.ts.map +1 -1
- package/dist/objects/query/primary-id.d.ts +7 -0
- package/dist/objects/query/primary-id.d.ts.map +1 -0
- package/dist/objects/query/reranking-executor.d.ts +13 -0
- package/dist/objects/query/reranking-executor.d.ts.map +1 -0
- package/dist/objects/query/reranking-limits.d.ts +3 -0
- package/dist/objects/query/reranking-limits.d.ts.map +1 -0
- package/dist/objects/query/reranking-query.d.ts +4 -0
- package/dist/objects/query/reranking-query.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -0
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +2 -2
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
- package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-generate.d.ts.map +1 -1
- package/dist/objects/vectors/profile.d.ts.map +1 -1
- package/dist/objects/vectors/query.d.ts +1 -1
- package/dist/objects/vectors/query.d.ts.map +1 -1
- package/dist/objects/vectors/resolve-query.d.ts.map +1 -1
- package/dist/objects/vectors/types.d.ts +1 -1
- package/dist/objects/vectors/types.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +13 -4
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +3 -3
- package/dist/ontology/internal.js +2 -2
- package/dist/ontology/query-capabilities.d.ts +1 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +20 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/vector-profiles.d.ts.map +1 -1
- package/dist/pipelines/index.js +23 -23
- package/dist/projections/internal.js +22 -22
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +3 -0
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +4 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +1 -0
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +28 -26
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/public-origin.d.ts +10 -0
- package/dist/runtime/public-origin.d.ts.map +1 -0
- package/dist/runtime/sixb.d.ts +1 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +12 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +5 -5
- package/dist/shares/internal.js +19 -19
- package/dist/storage/agents/provider.js +2 -2
- package/dist/storage/ai-cost/analytics.d.ts +1 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +3 -3
- package/dist/storage/ai-cost/types.d.ts +1 -1
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +7 -2
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +4 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-limits/types.d.ts +3 -0
- package/dist/storage/ai-limits/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +8 -4
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
- package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/file-download-grants/index.d.ts +3 -0
- package/dist/storage/file-download-grants/index.d.ts.map +1 -0
- package/dist/storage/file-download-grants/record.d.ts +11 -0
- package/dist/storage/file-download-grants/record.d.ts.map +1 -0
- package/dist/storage/file-download-grants/types.d.ts +44 -0
- package/dist/storage/file-download-grants/types.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +6 -6
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +5 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +30 -30
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +1 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +8 -4
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/index.d.ts +1 -1
- package/dist/storage/migrations/index.d.ts.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +3 -3
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/types.d.ts +7 -0
- package/dist/storage/migrations/types.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/query-preparation.d.ts +39 -0
- package/dist/storage/objects/query-preparation.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +2 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -6
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -2
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
- package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
- package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
- package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -3
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +40 -59
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +4 -6
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +114 -3
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -39
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +26 -12
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/replacement-plans.d.ts +103 -0
- package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/sources.d.ts +0 -8
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +6 -6
- package/dist/syncs/index.js +24 -24
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
- package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2548 -1489
- package/dist/testing/index.js.map +14 -13
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts +14 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +5 -1
- package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +20 -20
- package/dist/workers/index.js +15 -17
- package/dist/workers/index.js.map +3 -3
- package/dist/workers/queue-worker.d.ts +3 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/index.js +42 -41
- package/dist/workflows/index.js.map +1 -1
- package/package.json +7 -1
- package/src/actions/types/context.ts +5 -2
- package/src/blob-storage/download-urls.ts +138 -0
- package/src/blob-storage/execution.ts +32 -1
- package/src/blob-storage/internal.ts +1 -0
- package/src/execution/authorized-object-reader.ts +8 -1
- package/src/index.ts +25 -0
- package/src/lake-storage/in-memory.ts +38 -9
- package/src/lake-storage/index.ts +2 -0
- package/src/lake-storage/types.ts +30 -0
- package/src/maintenance/ontology-maintenance.ts +50 -23
- package/src/maintenance/types.ts +1 -4
- package/src/materialization/event-envelopes.ts +168 -0
- package/src/materialization/events.ts +40 -4
- package/src/materialization/index.ts +9 -1
- package/src/materializer/README.md +55 -10
- package/src/materializer/edits/commit.ts +3 -19
- package/src/materializer/edits/plan.ts +20 -71
- package/src/materializer/effective/build-events.ts +42 -136
- package/src/materializer/effective/vector-indexing.ts +2 -3
- package/src/materializer/effective/vectors.ts +2 -3
- package/src/materializer/execution/scope.ts +1 -38
- package/src/materializer/execution/work-executor.ts +21 -115
- package/src/materializer/execution/work-records.ts +0 -15
- package/src/materializer/projections/replace.ts +106 -63
- package/src/materializer/projections/replacement-plan.ts +73 -218
- package/src/materializer/shared/batching.ts +7 -0
- package/src/materializer/telemetry/append.ts +2 -14
- package/src/materializer/telemetry/plan.ts +6 -43
- package/src/models/audio/catalog.ts +90 -0
- package/src/models/audio/errors.ts +19 -0
- package/src/models/audio/file.ts +78 -0
- package/src/models/audio/runtime.ts +182 -0
- package/src/models/audio/types.ts +69 -0
- package/src/models/catalog.ts +52 -5
- package/src/models/definitions.ts +8 -1
- package/src/models/embedding-model.ts +12 -0
- package/src/models/events.ts +3 -0
- package/src/models/execution/README.md +20 -1
- package/src/models/execution/embedding.ts +5 -1
- package/src/models/execution/model-call-admission.ts +6 -1
- package/src/models/execution/model-call-limits.ts +21 -11
- package/src/models/execution/model-call-recorder.ts +1 -0
- package/src/models/execution/model-call-recovery.ts +1 -0
- package/src/models/execution/reranking.ts +137 -0
- package/src/models/execution/usage.ts +1 -0
- package/src/models/execution.ts +5 -1
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +32 -0
- package/src/models/pricing.ts +2 -1
- package/src/models/reranking-model.ts +114 -0
- package/src/objects/query/executor.ts +42 -2
- package/src/objects/query/explain.ts +8 -0
- package/src/objects/query/index.ts +1 -0
- package/src/objects/query/ir.ts +10 -0
- package/src/objects/query/normalize.ts +2 -0
- package/src/objects/query/planner.ts +12 -1
- package/src/objects/query/primary-id.ts +56 -0
- package/src/objects/query/reranking-executor.ts +91 -0
- package/src/objects/query/reranking-limits.ts +3 -0
- package/src/objects/query/reranking-query.ts +8 -0
- package/src/objects/query/validate.ts +33 -10
- package/src/objects/sdk/query-builder.ts +15 -2
- package/src/objects/sdk/query-executor.ts +2 -2
- package/src/objects/sdk/runtime-query-executor.ts +7 -4
- package/src/objects/vectors/README.md +14 -2
- package/src/objects/vectors/handle.ts +1 -1
- package/src/objects/vectors/indexing-dispatch.ts +83 -0
- package/src/objects/vectors/indexing-generate.ts +5 -1
- package/src/objects/vectors/profile.ts +2 -0
- package/src/objects/vectors/query.ts +21 -4
- package/src/objects/vectors/resolve-query.ts +9 -5
- package/src/objects/vectors/types.ts +3 -1
- package/src/ontology/builders.ts +22 -7
- package/src/ontology/index.ts +2 -0
- package/src/ontology/query-capabilities.ts +1 -1
- package/src/ontology/types.ts +21 -0
- package/src/ontology/validation/query.ts +57 -0
- package/src/ontology/vector-profiles.ts +1 -0
- package/src/query.ts +4 -0
- package/src/queues/in-memory.ts +54 -19
- package/src/queues/types.ts +4 -0
- package/src/runtime/host.ts +28 -1
- package/src/runtime/index.ts +1 -0
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/public-origin.ts +33 -0
- package/src/runtime/sixb.ts +13 -2
- package/src/runtime/types.ts +12 -2
- package/src/storage/ai-cost/analytics.ts +2 -0
- package/src/storage/ai-cost/codec.ts +2 -1
- package/src/storage/ai-cost/types.ts +1 -0
- package/src/storage/ai-cost/validation.ts +21 -8
- package/src/storage/ai-limits/in-memory.ts +10 -2
- package/src/storage/ai-limits/provider.ts +29 -2
- package/src/storage/ai-limits/types.ts +3 -0
- package/src/storage/ai-usage/record.ts +9 -0
- package/src/storage/ai-usage/types.ts +8 -4
- package/src/storage/ai-usage/usage.ts +2 -0
- package/src/storage/file-download-grants/in-memory.ts +73 -0
- package/src/storage/file-download-grants/index.ts +8 -0
- package/src/storage/file-download-grants/record.ts +47 -0
- package/src/storage/file-download-grants/types.ts +48 -0
- package/src/storage/in-memory/index.ts +13 -2
- package/src/storage/index.ts +31 -13
- package/src/storage/internal.ts +1 -0
- package/src/storage/migrations/index.ts +1 -0
- package/src/storage/migrations/migrate-storage.ts +36 -12
- package/src/storage/migrations/types.ts +8 -0
- package/src/storage/objects/in-memory/query.ts +2 -0
- package/src/storage/objects/in-memory/selected-reader.ts +1 -0
- package/src/storage/objects/in-memory/storage.ts +1 -0
- package/src/storage/objects/query-preparation.ts +77 -0
- package/src/storage/objects/types.ts +2 -0
- package/src/storage/ontology/commits.ts +1 -6
- package/src/storage/ontology/in-memory/index.ts +28 -9
- package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
- package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
- package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
- package/src/storage/ontology/in-memory/materializations.ts +172 -653
- package/src/storage/ontology/in-memory/outbox.ts +37 -29
- package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
- package/src/storage/ontology/in-memory/shared-state.ts +24 -2
- package/src/storage/ontology/in-memory/source-roots.ts +7 -2
- package/src/storage/ontology/in-memory/sources.ts +7 -33
- package/src/storage/ontology/in-memory/state-reader.ts +245 -0
- package/src/storage/ontology/index.ts +19 -13
- package/src/storage/ontology/materializations.ts +45 -74
- package/src/storage/ontology/outbox.ts +4 -7
- package/src/storage/ontology/provider-header-validation.ts +0 -57
- package/src/storage/ontology/provider-work.ts +381 -90
- package/src/storage/ontology/provider.ts +74 -171
- package/src/storage/ontology/replacement-plans.ts +117 -0
- package/src/storage/ontology/sources.ts +0 -12
- package/src/storage/operation-scope.ts +33 -1
- package/src/storage/projection-runs/in-memory.ts +7 -1
- package/src/storage/projection-runs/types.ts +2 -0
- package/src/storage/types.ts +2 -0
- package/src/testing/ai-cost-storage-contract.ts +1 -0
- package/src/testing/ai-limit-storage-contract.ts +62 -0
- package/src/testing/ai-usage-storage-contract.ts +31 -0
- package/src/testing/file-download-grant-storage-contract.ts +139 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/lake-storage-contract.ts +87 -1
- package/src/testing/materializer-storage-contract.ts +1008 -1
- package/src/testing/object-read-scope-contract.ts +1 -0
- package/src/testing/ontology-contract-fixture.ts +11 -87
- package/src/testing/ontology-storage-contract.ts +70 -39
- package/src/testing/projection-run-storage-contract.ts +14 -0
- package/src/testing/queues-contract.ts +59 -0
- package/src/workers/queue-worker.ts +19 -16
- package/dist/chunk-3c90jvfj.js.map +0 -15
- package/dist/chunk-3nx8vj5a.js.map +0 -12
- package/dist/chunk-7ytf06d3.js +0 -113
- package/dist/chunk-7ytf06d3.js.map +0 -10
- package/dist/chunk-a0073121.js.map +0 -12
- package/dist/chunk-fjw417jf.js.map +0 -62
- package/dist/chunk-g4rbm4a6.js.map +0 -15
- package/dist/chunk-hgqpcmyr.js.map +0 -12
- package/dist/chunk-jgwb25gc.js.map +0 -12
- package/dist/chunk-k4kkp58d.js.map +0 -11
- package/dist/chunk-ky7zpbtt.js.map +0 -19
- package/dist/chunk-mdnw7nj8.js.map +0 -15
- package/dist/chunk-py2dw8cw.js.map +0 -17
- package/dist/chunk-s3csryxe.js.map +0 -11
- package/dist/chunk-xnx96gfy.js.map +0 -15
- package/dist/chunk-z708gemf.js.map +0 -50
- package/dist/materializer/execution/plan-stream.d.ts +0 -8
- package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
- package/src/materializer/execution/plan-stream.ts +0 -121
- /package/dist/{chunk-q3grgzp1.js.map → chunk-23xs4qp9.js.map} +0 -0
- /package/dist/{chunk-vef6qa14.js.map → chunk-2am3db31.js.map} +0 -0
- /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
- /package/dist/{chunk-p0nbkys4.js.map → chunk-33saed7g.js.map} +0 -0
- /package/dist/{chunk-mmac1mp6.js.map → chunk-52c5zb0z.js.map} +0 -0
- /package/dist/{chunk-8fjmqjyx.js.map → chunk-5be2ath4.js.map} +0 -0
- /package/dist/{chunk-2fv8sajb.js.map → chunk-5thzcb8g.js.map} +0 -0
- /package/dist/{chunk-1jvq82rp.js.map → chunk-9g6jz9kk.js.map} +0 -0
- /package/dist/{chunk-8w27xf9e.js.map → chunk-a7er86jd.js.map} +0 -0
- /package/dist/{chunk-bxx3ms5t.js.map → chunk-c2rga5cx.js.map} +0 -0
- /package/dist/{chunk-dsfw1bdr.js.map → chunk-cnb5kv05.js.map} +0 -0
- /package/dist/{chunk-n5t4mq6z.js.map → chunk-e67ynxcr.js.map} +0 -0
- /package/dist/{chunk-6q7c68yx.js.map → chunk-f1xh7a32.js.map} +0 -0
- /package/dist/{chunk-7jc21943.js.map → chunk-gf7yht60.js.map} +0 -0
- /package/dist/{chunk-ffwvdgk1.js.map → chunk-jjrn5v0p.js.map} +0 -0
- /package/dist/{chunk-r5sc1d2b.js.map → chunk-jnfxmr3f.js.map} +0 -0
- /package/dist/{chunk-y0zmae99.js.map → chunk-k4g51s47.js.map} +0 -0
- /package/dist/{chunk-drz59ve0.js.map → chunk-rx7h5fdx.js.map} +0 -0
- /package/dist/{chunk-yfppyaty.js.map → chunk-sk0hcjsz.js.map} +0 -0
- /package/dist/{chunk-qne45xqq.js.map → chunk-svabwqdq.js.map} +0 -0
- /package/dist/{chunk-xr7y35yj.js.map → chunk-t9shqx3w.js.map} +0 -0
- /package/dist/{chunk-adbve9zt.js.map → chunk-vre348sb.js.map} +0 -0
- /package/dist/{chunk-a4g5yjm0.js.map → chunk-w9yycd3t.js.map} +0 -0
- /package/dist/{chunk-wd34wnsy.js.map → chunk-xcy5ddha.js.map} +0 -0
|
@@ -65,7 +65,7 @@ export function createObjectVectorHandle(
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
// Network work never holds a storage transaction or retries an obsolete computation.
|
|
68
|
-
const result = await model.embed({ texts: [input.text] })
|
|
68
|
+
const result = await model.embed({ texts: [input.text], purpose: "document" })
|
|
69
69
|
if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
|
|
70
70
|
throw new MaterializationValidationError(
|
|
71
71
|
"Embedding model must return exactly one vector for one input text."
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Queues } from "../../queues"
|
|
2
|
+
import type { OntologyVectorIndexingStorage } from "../../storage/ontology/vector-indexing"
|
|
3
|
+
|
|
4
|
+
const PAGE_SIZE = 100
|
|
5
|
+
/** A dispatched request becomes due again only if its job has not completed it by then. */
|
|
6
|
+
const REDISPATCH_DELAY_MS = 30_000
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Hands durable indexing intent to the vector queue. Each commit wakes it in the committing
|
|
10
|
+
* process; ontology maintenance drains it as the repair path for a wake-up that never finished.
|
|
11
|
+
*/
|
|
12
|
+
export class VectorIndexingDispatcher {
|
|
13
|
+
private running: Promise<void> | null = null
|
|
14
|
+
private next: Promise<void> | null = null
|
|
15
|
+
private stopped = false
|
|
16
|
+
|
|
17
|
+
constructor(
|
|
18
|
+
private readonly projectId: string,
|
|
19
|
+
private readonly indexing: OntologyVectorIndexingStorage,
|
|
20
|
+
private readonly queue: Queues["vectorIndexing"]
|
|
21
|
+
) {}
|
|
22
|
+
|
|
23
|
+
notify(): void {
|
|
24
|
+
this.drain().catch((error) =>
|
|
25
|
+
console.error("[Sixb] Could not dispatch vector indexing; maintenance will retry:", error)
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Callers share one pass plus at most one follow-up, which sees every earlier commit. */
|
|
30
|
+
drain(): Promise<void> {
|
|
31
|
+
this.next ??= settled(this.running).then(() => {
|
|
32
|
+
this.next = null
|
|
33
|
+
if (this.stopped) return
|
|
34
|
+
this.running = this.pass().finally(() => {
|
|
35
|
+
this.running = null
|
|
36
|
+
})
|
|
37
|
+
return this.running
|
|
38
|
+
})
|
|
39
|
+
return this.next
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async stop(): Promise<void> {
|
|
43
|
+
this.stopped = true
|
|
44
|
+
await settled(this.next)
|
|
45
|
+
await settled(this.running)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private async pass(): Promise<void> {
|
|
49
|
+
for (;;) {
|
|
50
|
+
const now = new Date()
|
|
51
|
+
const work = await this.indexing.listDue({
|
|
52
|
+
projectId: this.projectId,
|
|
53
|
+
now: now.toISOString(),
|
|
54
|
+
limit: PAGE_SIZE,
|
|
55
|
+
})
|
|
56
|
+
if (work.length) {
|
|
57
|
+
const jobs = [...new Map(work.map((item) => [item.batchId ?? item.id, item])).entries()]
|
|
58
|
+
await this.queue.enqueue({
|
|
59
|
+
projectId: this.projectId,
|
|
60
|
+
jobs: jobs.map(([id, item]) => ({
|
|
61
|
+
id,
|
|
62
|
+
type: "vector.index.requested",
|
|
63
|
+
payload: { indexingId: id },
|
|
64
|
+
availableAt: item.availableAt,
|
|
65
|
+
})),
|
|
66
|
+
})
|
|
67
|
+
await this.indexing.dispatched({
|
|
68
|
+
projectId: this.projectId,
|
|
69
|
+
ids: work.map((item) => item.id),
|
|
70
|
+
nextDispatchAt: new Date(now.getTime() + REDISPATCH_DELAY_MS).toISOString(),
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
if (work.length < PAGE_SIZE || this.stopped) return
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function settled(promise: Promise<void> | null): Promise<void> {
|
|
79
|
+
return (promise ?? Promise.resolve()).then(
|
|
80
|
+
() => undefined,
|
|
81
|
+
() => undefined
|
|
82
|
+
)
|
|
83
|
+
}
|
|
@@ -63,7 +63,11 @@ export async function generateVectors(
|
|
|
63
63
|
)
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
const result = await model.embed({
|
|
66
|
+
const result = await model.embed({
|
|
67
|
+
texts: entries.map((entry) => entry.input.text),
|
|
68
|
+
purpose: "document",
|
|
69
|
+
signal,
|
|
70
|
+
})
|
|
67
71
|
const values = normalizeEmbeddingResult(
|
|
68
72
|
result,
|
|
69
73
|
entries.length,
|
|
@@ -13,6 +13,8 @@ export function vectorConfiguration(profile: ObjectVectorSearchProfile): string
|
|
|
13
13
|
model: profile.model.modelId,
|
|
14
14
|
representation: profile.model.definition.representation ?? { name: profile.model.modelId },
|
|
15
15
|
dimensions: profile.model.definition.dimensions,
|
|
16
|
+
// Include retrieval preparation without changing existing symmetric identities.
|
|
17
|
+
...(profile.model.definition.inputMode === "asymmetric" ? { inputMode: "asymmetric" } : {}),
|
|
16
18
|
metric: "cosine",
|
|
17
19
|
precision: "float32",
|
|
18
20
|
normalization: "l2-v1",
|
|
@@ -6,11 +6,28 @@ export function hasVectorProfile(query: ObjectQuery): boolean {
|
|
|
6
6
|
return "input" in query && hasVectorProfile(query.input)
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
/**
|
|
9
|
+
/** Rank one eligible object set; validation resolves its type and admits every traversed edge. */
|
|
10
10
|
export function isVectorProfileQuery(query: ObjectQuery): boolean {
|
|
11
11
|
if (query.kind === "limit" || query.kind === "project") return isVectorProfileQuery(query.input)
|
|
12
|
+
if (query.kind === "rerank") {
|
|
13
|
+
return query.input.kind === "vector" && isVectorProfileQuery(query.input)
|
|
14
|
+
}
|
|
12
15
|
if (query.kind !== "vector" || !query.profile) return false
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
return isVectorCandidateQuery(query.input)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function isVectorCandidateQuery(query: ObjectQuery): boolean {
|
|
20
|
+
switch (query.kind) {
|
|
21
|
+
case "start":
|
|
22
|
+
return !query.includeSubtypes
|
|
23
|
+
case "refs":
|
|
24
|
+
return true
|
|
25
|
+
case "filter":
|
|
26
|
+
case "traverse":
|
|
27
|
+
return isVectorCandidateQuery(query.input)
|
|
28
|
+
case "set":
|
|
29
|
+
return query.inputs.every(isVectorCandidateQuery)
|
|
30
|
+
default:
|
|
31
|
+
return false
|
|
32
|
+
}
|
|
16
33
|
}
|
|
@@ -3,6 +3,7 @@ import { type EmbeddingModel, sameEmbeddingModel } from "../../models/embedding-
|
|
|
3
3
|
import type { OntologyRegistry } from "../../ontology"
|
|
4
4
|
import { ObjectQueryExecutionError } from "../query/errors"
|
|
5
5
|
import type { ObjectQuery, ObjectQueryVector } from "../query/ir"
|
|
6
|
+
import { resolveObjectQueryResultShape } from "../query/validate"
|
|
6
7
|
import { normalizeVector } from "./profile"
|
|
7
8
|
|
|
8
9
|
const QUERY_EMBEDDING_TIMEOUT_MS = 30_000
|
|
@@ -30,16 +31,19 @@ function resolveProfileEmbeddingModel(
|
|
|
30
31
|
ontology: OntologyRegistry,
|
|
31
32
|
models: EmbeddingModelCatalog | undefined
|
|
32
33
|
): EmbeddingModel {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const { objectTypeIds } = resolveObjectQueryResultShape(query.input, {
|
|
35
|
+
ontology,
|
|
36
|
+
normalize: false,
|
|
37
|
+
})
|
|
38
|
+
const objectTypeId = objectTypeIds.length === 1 ? objectTypeIds[0] : undefined
|
|
39
|
+
if (!objectTypeId || !query.profile) {
|
|
36
40
|
throw new ObjectQueryExecutionError(
|
|
37
41
|
"embedding_model_unavailable",
|
|
38
42
|
"Vector search requires the embedding model registered for its profile."
|
|
39
43
|
)
|
|
40
44
|
}
|
|
41
45
|
|
|
42
|
-
const profile = ontology.resolveObjectType(
|
|
46
|
+
const profile = ontology.resolveObjectType(objectTypeId).search?.vectors?.[query.profile]
|
|
43
47
|
if (!profile) {
|
|
44
48
|
throw new ObjectQueryExecutionError(
|
|
45
49
|
"embedding_model_unavailable",
|
|
@@ -69,7 +73,7 @@ async function embedSearchText(
|
|
|
69
73
|
const timeout = AbortSignal.timeout(QUERY_EMBEDDING_TIMEOUT_MS)
|
|
70
74
|
const requestSignal = signal ? AbortSignal.any([signal, timeout]) : timeout
|
|
71
75
|
requestSignal.throwIfAborted()
|
|
72
|
-
const result = await model.embed({ texts: [text], signal: requestSignal })
|
|
76
|
+
const result = await model.embed({ texts: [text], purpose: "query", signal: requestSignal })
|
|
73
77
|
requestSignal.throwIfAborted()
|
|
74
78
|
|
|
75
79
|
if (!Array.isArray(result?.vectors) || result.vectors.length !== 1) {
|
|
@@ -2,7 +2,9 @@ import type { ObjectType } from "../../ontology"
|
|
|
2
2
|
|
|
3
3
|
export type VectorProfileName<T extends ObjectType> = T extends { search: { vectors: infer P } }
|
|
4
4
|
? Extract<keyof P, string>
|
|
5
|
-
:
|
|
5
|
+
: string extends T["id"]
|
|
6
|
+
? string
|
|
7
|
+
: never
|
|
6
8
|
|
|
7
9
|
export interface ObjectVectorHandle {
|
|
8
10
|
/** Generate and atomically store this profile using its configured model. Conflicts are not retried. */
|
package/src/ontology/builders.ts
CHANGED
|
@@ -35,6 +35,7 @@ import type {
|
|
|
35
35
|
ObjectLink,
|
|
36
36
|
ObjectLinkTargetMetadata,
|
|
37
37
|
ObjectType,
|
|
38
|
+
ObjectVectorSearchProfile,
|
|
38
39
|
Ontology,
|
|
39
40
|
Property,
|
|
40
41
|
PropertyMode,
|
|
@@ -231,6 +232,7 @@ export function defineObjectType(input: DefineObjectTypeInput): ObjectTypeWithTo
|
|
|
231
232
|
properties,
|
|
232
233
|
links,
|
|
233
234
|
search: input.search,
|
|
235
|
+
query: input.query,
|
|
234
236
|
}
|
|
235
237
|
|
|
236
238
|
return {
|
|
@@ -446,19 +448,32 @@ export type DirectLinkResult<
|
|
|
446
448
|
> = LinkResult<TId, TTargetObjectTypeId, TOptions> & ObjectLinkTargetMetadata<TTarget>
|
|
447
449
|
|
|
448
450
|
type ObjectTypeIdArray<TTargets extends readonly ObjectType[]> = Array<TTargets[number]["id"]>
|
|
451
|
+
/** Keep profile names without carrying provider types through every linked declaration. */
|
|
449
452
|
export type DirectLinkTarget<
|
|
450
453
|
TId extends string,
|
|
451
454
|
TName extends string,
|
|
452
455
|
TProperties extends Property[],
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
456
|
+
TVectorProfiles extends string = never,
|
|
457
|
+
> = ObjectTypeWithPropertyTokens<
|
|
458
|
+
{
|
|
459
|
+
id: TId
|
|
460
|
+
name: TName
|
|
461
|
+
properties: TProperties
|
|
462
|
+
links: ObjectLink[]
|
|
463
|
+
} & ([TVectorProfiles] extends [never]
|
|
464
|
+
? unknown
|
|
465
|
+
: { search: { vectors: Record<TVectorProfiles, ObjectVectorSearchProfile> } })
|
|
466
|
+
>
|
|
459
467
|
|
|
460
468
|
type DirectLinkTargetFor<TTarget extends ObjectType> = TTarget extends ObjectTypeWithPropertyTokens
|
|
461
|
-
? DirectLinkTarget<
|
|
469
|
+
? DirectLinkTarget<
|
|
470
|
+
TTarget["id"],
|
|
471
|
+
TTarget["name"],
|
|
472
|
+
TTarget["properties"],
|
|
473
|
+
TTarget extends { search: { vectors: infer TProfiles } }
|
|
474
|
+
? Extract<keyof TProfiles, string>
|
|
475
|
+
: never
|
|
476
|
+
>
|
|
462
477
|
: TTarget
|
|
463
478
|
|
|
464
479
|
/**
|
package/src/ontology/index.ts
CHANGED
package/src/ontology/types.ts
CHANGED
|
@@ -360,6 +360,25 @@ export interface Interface {
|
|
|
360
360
|
links: ObjectLink[]
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
+
/** Compound query shapes prepared by the storage provider, in addition to property flags. */
|
|
364
|
+
export type ObjectQueryIndexDefinition =
|
|
365
|
+
| {
|
|
366
|
+
kind: "sort"
|
|
367
|
+
fields: readonly { propertyId: string; direction?: "asc" | "desc" }[]
|
|
368
|
+
/** String equality filters preceding the ordered fields. */
|
|
369
|
+
filters?: readonly string[]
|
|
370
|
+
}
|
|
371
|
+
| {
|
|
372
|
+
kind: "text"
|
|
373
|
+
propertyId: string
|
|
374
|
+
/** String filters/facets commonly combined with this substring search. */
|
|
375
|
+
filters?: readonly string[]
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
export interface ObjectTypeQueryMetadata {
|
|
379
|
+
indexes?: readonly ObjectQueryIndexDefinition[]
|
|
380
|
+
}
|
|
381
|
+
|
|
363
382
|
/**
|
|
364
383
|
* Canonical ontology node for a real-world asset, system, concept, or process.
|
|
365
384
|
*
|
|
@@ -413,6 +432,8 @@ export interface ObjectType {
|
|
|
413
432
|
|
|
414
433
|
properties: Property[]
|
|
415
434
|
links: ObjectLink[]
|
|
435
|
+
/** Query index declarations, prepared automatically after storage migrations. */
|
|
436
|
+
query?: ObjectTypeQueryMetadata
|
|
416
437
|
/** Search profile for this object type. */
|
|
417
438
|
search?: ObjectTypeSearchMetadata
|
|
418
439
|
}
|
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
isFilterableSchema,
|
|
8
8
|
isSortableSchema,
|
|
9
9
|
isTextSchema,
|
|
10
|
+
queryScalarKindForSchema,
|
|
11
|
+
resolveQuerySchema,
|
|
10
12
|
} from "../query-capabilities"
|
|
11
13
|
|
|
12
14
|
type QueryFeature = "filterable" | "sortable" | "text" | "exact" | "facet"
|
|
@@ -27,6 +29,7 @@ export function validateQueryMetadata(
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
validateObjectSearchMetadata(typeId, objectType, valueTypesById)
|
|
32
|
+
validateQueryIndexes(typeId, objectType, valueTypesById)
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
|
|
@@ -250,3 +253,57 @@ function resolveSchema(
|
|
|
250
253
|
seenValueTypeIds.add(schema.valueTypeId)
|
|
251
254
|
return resolveSchema(resolved, valueTypesById, path, seenValueTypeIds)
|
|
252
255
|
}
|
|
256
|
+
|
|
257
|
+
function validateQueryIndexes(
|
|
258
|
+
typeId: string,
|
|
259
|
+
objectType: ObjectType,
|
|
260
|
+
valueTypes: ReadonlyMap<string, ValueType>
|
|
261
|
+
): void {
|
|
262
|
+
for (const index of objectType.query?.indexes ?? []) {
|
|
263
|
+
const fields =
|
|
264
|
+
index.kind === "sort" ? index.fields.map((field) => field.propertyId) : [index.propertyId]
|
|
265
|
+
const filters = index.filters ?? []
|
|
266
|
+
if (
|
|
267
|
+
!fields.length ||
|
|
268
|
+
fields.length + filters.length > 8 ||
|
|
269
|
+
new Set([...fields, ...filters]).size !== fields.length + filters.length
|
|
270
|
+
)
|
|
271
|
+
throw new OntologyValidationError(
|
|
272
|
+
`[Sixb] Query index on '${typeId}' requires one to eight distinct properties`
|
|
273
|
+
)
|
|
274
|
+
if (index.kind === "text" && filters.length > 4)
|
|
275
|
+
throw new OntologyValidationError(
|
|
276
|
+
`[Sixb] Text query index on '${typeId}' accepts at most four filters`
|
|
277
|
+
)
|
|
278
|
+
for (const id of [...fields, ...filters]) {
|
|
279
|
+
const property = objectType.properties.find((property) => property.id === id)
|
|
280
|
+
if (!property)
|
|
281
|
+
throw new OntologyValidationError(
|
|
282
|
+
`[Sixb] Query index on '${typeId}' references unknown property '${id}'`
|
|
283
|
+
)
|
|
284
|
+
if (property.mode === "telemetry")
|
|
285
|
+
throw new OntologyValidationError(
|
|
286
|
+
`[Sixb] Query indexes cannot include telemetry property '${typeId}.${id}'`
|
|
287
|
+
)
|
|
288
|
+
const flag = filters.includes(id) ? "filterable" : index.kind === "sort" ? "sortable" : "text"
|
|
289
|
+
assertPropertyQueryFlag(typeId, property, flag, "query.indexes")
|
|
290
|
+
if (filters.includes(id)) {
|
|
291
|
+
const schema = resolveQuerySchema(property.schema, valueTypes)
|
|
292
|
+
if (!schema || queryScalarKindForSchema(schema) !== "string")
|
|
293
|
+
throw new OntologyValidationError(
|
|
294
|
+
`[Sixb] Query index filters must be strings: '${typeId}.${id}'`
|
|
295
|
+
)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (
|
|
299
|
+
index.kind === "sort" &&
|
|
300
|
+
index.fields.some(
|
|
301
|
+
(field) =>
|
|
302
|
+
field.direction !== undefined && field.direction !== "asc" && field.direction !== "desc"
|
|
303
|
+
)
|
|
304
|
+
)
|
|
305
|
+
throw new OntologyValidationError(
|
|
306
|
+
`[Sixb] Query index direction must be asc or desc on '${typeId}'`
|
|
307
|
+
)
|
|
308
|
+
}
|
|
309
|
+
}
|
package/src/query.ts
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* top of this module.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
export type { ModelRef } from "./models/catalog"
|
|
10
|
+
export type { RerankingModelDefinition, RerankingModelRef } from "./models/reranking-model"
|
|
9
11
|
export type { ObjectQueryPlanningIssue } from "./objects/query/errors"
|
|
10
12
|
export {
|
|
11
13
|
ObjectQueryExecutionError,
|
|
@@ -29,6 +31,7 @@ export type {
|
|
|
29
31
|
ObjectQueryPredicateNot,
|
|
30
32
|
ObjectQueryProject,
|
|
31
33
|
ObjectQueryRefs,
|
|
34
|
+
ObjectQueryRerank,
|
|
32
35
|
ObjectQueryResultShape,
|
|
33
36
|
ObjectQuerySet,
|
|
34
37
|
ObjectQuerySetOperation,
|
|
@@ -68,6 +71,7 @@ export type {
|
|
|
68
71
|
ObjectQueryFacetBucket,
|
|
69
72
|
ObjectQueryFacetInput,
|
|
70
73
|
ObjectQueryFacetResult,
|
|
74
|
+
ObjectQueryFacetsResult,
|
|
71
75
|
ObjectQueryListOptions,
|
|
72
76
|
ObjectQueryRow,
|
|
73
77
|
ObjectWhereBuilder,
|
package/src/queues/in-memory.ts
CHANGED
|
@@ -109,11 +109,16 @@ function eligibleAt(record: QueueRecord): number {
|
|
|
109
109
|
return Math.max(record.availableAtMs, record.leaseExpiryMs ?? -Infinity)
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
// Largest delay `setTimeout` accepts; a waiting claim that wakes early just waits again.
|
|
113
|
+
const MAX_TIMER_DELAY_MS = 2_147_483_647
|
|
114
|
+
|
|
112
115
|
interface QueueLane {
|
|
113
116
|
// Terminal records remain here for caller-id deduplication, never in the delivery indexes.
|
|
114
117
|
readonly records: Map<string, QueueRecord>
|
|
115
118
|
readonly ready: IndexedHeap<QueueRecord>
|
|
116
119
|
readonly waiting: IndexedHeap<QueueRecord>
|
|
120
|
+
/** Wakes claims waiting on this lane. */
|
|
121
|
+
readonly waiters: Set<() => void>
|
|
117
122
|
}
|
|
118
123
|
|
|
119
124
|
function toClaimedQueueJob<TQueueJob extends QueueJob>(
|
|
@@ -175,6 +180,27 @@ class InMemoryQueueStore {
|
|
|
175
180
|
lane.ready.delete(record)
|
|
176
181
|
lane.waiting.set(record)
|
|
177
182
|
}
|
|
183
|
+
// Any change can make a job claimable or move the next due time; waiters look again.
|
|
184
|
+
for (const wake of lane.waiters) wake()
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** Resolves when the lane changes, its next delayed job or lease comes due, or `signal` aborts. */
|
|
188
|
+
waitForWork(projectId: string, queueId: string, signal: AbortSignal): Promise<void> {
|
|
189
|
+
const lane = this.lane(projectId, queueId)
|
|
190
|
+
const next = lane.waiting.peek()
|
|
191
|
+
const dueInMs = next ? eligibleAt(next) - Date.now() : MAX_TIMER_DELAY_MS
|
|
192
|
+
return new Promise((resolve) => {
|
|
193
|
+
// Always armed: like a blocking read on a socket, a waiting claim keeps its process alive.
|
|
194
|
+
const timer = setTimeout(wake, Math.min(dueInMs, MAX_TIMER_DELAY_MS))
|
|
195
|
+
function wake(): void {
|
|
196
|
+
clearTimeout(timer)
|
|
197
|
+
lane.waiters.delete(wake)
|
|
198
|
+
signal.removeEventListener("abort", wake)
|
|
199
|
+
resolve()
|
|
200
|
+
}
|
|
201
|
+
lane.waiters.add(wake)
|
|
202
|
+
signal.addEventListener("abort", wake, { once: true })
|
|
203
|
+
})
|
|
178
204
|
}
|
|
179
205
|
|
|
180
206
|
takeReady<TQueueJob extends QueueJob>(
|
|
@@ -216,6 +242,7 @@ class InMemoryQueueStore {
|
|
|
216
242
|
waiting: new IndexedHeap(
|
|
217
243
|
(left, right) => eligibleAt(left) - eligibleAt(right) || left.sequence - right.sequence
|
|
218
244
|
),
|
|
245
|
+
waiters: new Set(),
|
|
219
246
|
}
|
|
220
247
|
queues.set(queueId, lane)
|
|
221
248
|
}
|
|
@@ -263,6 +290,7 @@ class InMemoryQueue<TQueueJob extends QueueJob, TFailureCode extends SixbErrorCo
|
|
|
263
290
|
workerId: string
|
|
264
291
|
limit?: number
|
|
265
292
|
leaseMs?: number
|
|
293
|
+
signal?: AbortSignal
|
|
266
294
|
}): Promise<readonly ClaimedQueueJob<TQueueJob>[]> {
|
|
267
295
|
assertNonEmpty(params.projectId, "projectId")
|
|
268
296
|
assertNonEmpty(params.workerId, "workerId")
|
|
@@ -275,27 +303,34 @@ class InMemoryQueue<TQueueJob extends QueueJob, TFailureCode extends SixbErrorCo
|
|
|
275
303
|
const leaseMs = params.leaseMs ?? 30_000
|
|
276
304
|
assertPositiveNumber(leaseMs, "leaseMs")
|
|
277
305
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
attempt: record.job.attempt + 1,
|
|
306
|
+
for (;;) {
|
|
307
|
+
if (params.signal?.aborted) return []
|
|
308
|
+
const now = Date.now()
|
|
309
|
+
const claimedAt = new Date(now).toISOString()
|
|
310
|
+
// Validate before removing candidates, and cache the same millisecond precision we return.
|
|
311
|
+
const leaseExpiry = new Date(now + leaseMs)
|
|
312
|
+
const leaseExpiresAt = leaseExpiry.toISOString()
|
|
313
|
+
const claimable = this.store.takeReady<TQueueJob>(params.projectId, this.queueId, now, limit)
|
|
314
|
+
if (claimable.length === 0 && params.signal) {
|
|
315
|
+
await this.store.waitForWork(params.projectId, this.queueId, params.signal)
|
|
316
|
+
continue
|
|
290
317
|
}
|
|
291
|
-
record.leaseId = randomUUID()
|
|
292
|
-
record.claimedAt = claimedAt
|
|
293
|
-
record.leaseExpiresAt = leaseExpiresAt
|
|
294
|
-
record.leaseExpiryMs = leaseExpiry.getTime()
|
|
295
|
-
this.store.schedule(params.projectId, record, now)
|
|
296
318
|
|
|
297
|
-
return
|
|
298
|
-
|
|
319
|
+
return claimable.map((record) => {
|
|
320
|
+
// Attempts count claims so redelivery after lease expiry or retry is visible to workers.
|
|
321
|
+
record.job = {
|
|
322
|
+
...record.job,
|
|
323
|
+
attempt: record.job.attempt + 1,
|
|
324
|
+
}
|
|
325
|
+
record.leaseId = randomUUID()
|
|
326
|
+
record.claimedAt = claimedAt
|
|
327
|
+
record.leaseExpiresAt = leaseExpiresAt
|
|
328
|
+
record.leaseExpiryMs = leaseExpiry.getTime()
|
|
329
|
+
this.store.schedule(params.projectId, record, now)
|
|
330
|
+
|
|
331
|
+
return toClaimedQueueJob(record)
|
|
332
|
+
})
|
|
333
|
+
}
|
|
299
334
|
}
|
|
300
335
|
|
|
301
336
|
async complete(params: { projectId: string; jobId: string; leaseId: string }): Promise<void> {
|
package/src/queues/types.ts
CHANGED
|
@@ -82,12 +82,16 @@ export interface Queue<
|
|
|
82
82
|
*
|
|
83
83
|
* `leaseMs` is the visibility timeout for this claim. If the lease expires
|
|
84
84
|
* before the job is acknowledged, the job may be delivered again.
|
|
85
|
+
*
|
|
86
|
+
* Without `signal`, returns at once, possibly empty. With `signal`, waits for work instead:
|
|
87
|
+
* it resolves once it claims at least one job, and empty only after `signal` aborts.
|
|
85
88
|
*/
|
|
86
89
|
claim(params: {
|
|
87
90
|
projectId: string
|
|
88
91
|
workerId: string
|
|
89
92
|
limit?: number
|
|
90
93
|
leaseMs?: number
|
|
94
|
+
signal?: AbortSignal
|
|
91
95
|
}): Promise<readonly ClaimedQueueJob<TQueueJob>[]>
|
|
92
96
|
|
|
93
97
|
/** Acknowledges successful processing and removes the claimed job from delivery. */
|
package/src/runtime/host.ts
CHANGED
|
@@ -54,8 +54,10 @@ import {
|
|
|
54
54
|
import { createOntologyMaterializer, type OntologyMaterializerContract } from "../materializer"
|
|
55
55
|
import type { ModelCatalogInput } from "../models"
|
|
56
56
|
import { bindEmbeddingModels } from "../models/execution/embedding"
|
|
57
|
+
import { bindRerankingModels } from "../models/execution/reranking"
|
|
57
58
|
import { ModelExecutionSession } from "../models/execution/session"
|
|
58
59
|
import { createVectorIndexingRuntime } from "../objects/vectors/indexing"
|
|
60
|
+
import { VectorIndexingDispatcher } from "../objects/vectors/indexing-dispatch"
|
|
59
61
|
import { registerVectorIndexingRuntime } from "../objects/vectors/indexing-runtime"
|
|
60
62
|
import type { PipelineDefinition } from "../pipelines/types"
|
|
61
63
|
import { registerProjectionRegistry } from "../projections/internal"
|
|
@@ -88,6 +90,7 @@ import {
|
|
|
88
90
|
createOntologyMutationRuntime,
|
|
89
91
|
registerOntologyMutationRuntime,
|
|
90
92
|
} from "./ontology-mutations"
|
|
93
|
+
import { getApiPublicOrigin } from "./public-origin"
|
|
91
94
|
import { resolveDefinitions } from "./resolve-definitions"
|
|
92
95
|
import { createBoundSixb, type Sixb, type SixbDependencies } from "./sixb"
|
|
93
96
|
import { StorageReadiness } from "./storage-readiness"
|
|
@@ -141,6 +144,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
141
144
|
private readonly webhookRegistry: WebhookRegistry
|
|
142
145
|
private readonly hostContext: SixbHostContext
|
|
143
146
|
private readonly committedFacts: OntologyOutboxDispatcher
|
|
147
|
+
private readonly vectorIndexing?: VectorIndexingDispatcher
|
|
144
148
|
private readonly eventService: DomainEventService
|
|
145
149
|
private readonly ontologyMaintenance: OntologyMaintenance
|
|
146
150
|
private readonly storageReadiness: StorageReadiness
|
|
@@ -234,16 +238,31 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
234
238
|
...failure,
|
|
235
239
|
}),
|
|
236
240
|
})
|
|
241
|
+
const vectorIndexing = this.storage.ontology.vectorIndexing
|
|
242
|
+
if (
|
|
243
|
+
vectorIndexing &&
|
|
244
|
+
definitions.ontology
|
|
245
|
+
.listObjectTypes()
|
|
246
|
+
.some((type) => Object.keys(type.search?.vectors ?? {}).length > 0)
|
|
247
|
+
) {
|
|
248
|
+
this.vectorIndexing = new VectorIndexingDispatcher(
|
|
249
|
+
this.projectId,
|
|
250
|
+
vectorIndexing,
|
|
251
|
+
this.queues.vectorIndexing
|
|
252
|
+
)
|
|
253
|
+
}
|
|
237
254
|
this.ontologyMaintenance = new OntologyMaintenance({
|
|
238
255
|
projectId: this.projectId,
|
|
239
256
|
storage: this.storage,
|
|
240
257
|
dispatcher: this.committedFacts,
|
|
258
|
+
vectorIndexing: this.vectorIndexing,
|
|
241
259
|
blobStorage: this.blobStorage,
|
|
242
260
|
options: options.ontologyMaintenance,
|
|
243
261
|
})
|
|
244
262
|
|
|
245
263
|
this.hostContext = {
|
|
246
264
|
embeddingModels: definitions.models?.embedding,
|
|
265
|
+
rerankingModels: definitions.models?.reranking,
|
|
247
266
|
projectId: this.projectId,
|
|
248
267
|
broker: this.broker,
|
|
249
268
|
ontology: definitions.ontology,
|
|
@@ -277,16 +296,19 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
277
296
|
capturedScope.execution
|
|
278
297
|
)
|
|
279
298
|
const embeddingModels = bindEmbeddingModels(this.hostContext.embeddingModels, modelExecution)
|
|
299
|
+
const rerankingModels = bindRerankingModels(this.hostContext.rerankingModels, modelExecution)
|
|
280
300
|
const objectReader = createAuthorizedObjectReader({
|
|
281
301
|
scope: capturedScope,
|
|
282
302
|
ontology: this.hostContext.ontology,
|
|
283
303
|
objectStorage: this.storage.objects,
|
|
284
304
|
embeddingModels,
|
|
305
|
+
rerankingModels,
|
|
285
306
|
})
|
|
286
307
|
|
|
287
308
|
const runtime: SixbRuntimeContext = {
|
|
288
309
|
...this.hostContext,
|
|
289
310
|
embeddingModels,
|
|
311
|
+
rerankingModels,
|
|
290
312
|
modelExecution,
|
|
291
313
|
runtimeAuthorization: capturedScope.authorization,
|
|
292
314
|
objectReader,
|
|
@@ -296,7 +318,10 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
296
318
|
runtime,
|
|
297
319
|
createOntologyMutationRuntime({
|
|
298
320
|
materializer: this.materializer.withScope(capturedScope),
|
|
299
|
-
notifyCommittedFacts: () =>
|
|
321
|
+
notifyCommittedFacts: () => {
|
|
322
|
+
this.committedFacts.notify()
|
|
323
|
+
this.vectorIndexing?.notify()
|
|
324
|
+
},
|
|
300
325
|
})
|
|
301
326
|
)
|
|
302
327
|
return createBoundSixb<InferSandboxParams<TParams>>(
|
|
@@ -352,6 +377,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
352
377
|
/** Close the runtime broker provider if it owns external resources. */
|
|
353
378
|
async closeBroker(): Promise<void> {
|
|
354
379
|
await this.committedFacts.stop()
|
|
380
|
+
await this.vectorIndexing?.stop()
|
|
355
381
|
await this.ontologyMaintenance.stop()
|
|
356
382
|
await this.broker.close?.()
|
|
357
383
|
}
|
|
@@ -369,6 +395,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
|
369
395
|
? {}
|
|
370
396
|
: { connectorConnections: this.connectorService.connectionProcess }),
|
|
371
397
|
blobStorage: this.blobStorage,
|
|
398
|
+
apiPublicOrigin: () => getApiPublicOrigin(this),
|
|
372
399
|
lakeStorage: this.lakeStorage,
|
|
373
400
|
}
|
|
374
401
|
}
|