@sixb/core 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +30 -27
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +1 -1
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +6 -2
- package/dist/actions/worker.js.map +3 -3
- package/dist/agents/adapters.d.ts +7 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +7 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context/entries.d.ts +10 -1
- package/dist/agents/context/entries.d.ts.map +1 -1
- package/dist/agents/context/index.d.ts +1 -1
- package/dist/agents/context/index.d.ts.map +1 -1
- package/dist/agents/context/index.js +4 -2
- package/dist/agents/context/index.js.map +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +54 -46
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +8 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/request.d.ts +19 -5
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts +41 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/streams/index.js +1 -1
- package/dist/agents/streams/internal.js +1 -1
- package/dist/agents/types.d.ts +33 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/auth/index.js +9 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/types.d.ts +6 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +5 -3
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/download-urls.d.ts +41 -0
- package/dist/blob-storage/download-urls.d.ts.map +1 -0
- package/dist/blob-storage/execution.d.ts +9 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/file-content.d.ts +18 -0
- package/dist/blob-storage/file-content.d.ts.map +1 -0
- package/dist/blob-storage/index.d.ts +1 -1
- package/dist/blob-storage/index.d.ts.map +1 -1
- package/dist/blob-storage/index.js +6 -4
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/internal.d.ts +4 -0
- package/dist/blob-storage/internal.d.ts.map +1 -0
- package/dist/blob-storage/internal.js +23 -0
- package/dist/blob-storage/internal.js.map +9 -0
- package/dist/blob-storage/media-type.d.ts +8 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -0
- package/dist/blob-storage/types.d.ts +12 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/blob-storage/validation.d.ts +6 -0
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/agent-context.d.ts +33 -0
- package/dist/bootstrap/agent-context.d.ts.map +1 -0
- package/dist/bootstrap/discovery.d.ts +23 -3
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +287 -75
- package/dist/bootstrap/index.js.map +4 -3
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-kttr5ftm.js → chunk-1b1f2d5f.js} +23 -6
- package/dist/chunk-1b1f2d5f.js.map +12 -0
- package/dist/{chunk-hgqpcmyr.js → chunk-1hqwggsn.js} +47 -19
- package/dist/chunk-1hqwggsn.js.map +12 -0
- package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
- package/dist/chunk-1sr8ryzk.js.map +11 -0
- package/dist/{chunk-4gmng3vf.js → chunk-22v5bpz3.js} +1 -1
- package/dist/{chunk-tnvafr7g.js → chunk-29yx306f.js} +124 -9
- package/dist/chunk-29yx306f.js.map +22 -0
- package/dist/{chunk-fj1dvp37.js → chunk-2vhg6ysa.js} +1 -1
- package/dist/chunk-3zxk45er.js +152 -0
- package/dist/chunk-3zxk45er.js.map +11 -0
- package/dist/{chunk-gmdvns8f.js → chunk-48e3cn2d.js} +2 -2
- package/dist/{chunk-jgwb25gc.js → chunk-4as3wt1c.js} +13 -5
- package/dist/chunk-4as3wt1c.js.map +12 -0
- package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
- package/dist/chunk-6gmfggss.js.map +10 -0
- package/dist/{chunk-2xvgy3x5.js → chunk-6h5m9xjx.js} +43 -415
- package/dist/{chunk-2xvgy3x5.js.map → chunk-6h5m9xjx.js.map} +7 -11
- package/dist/{chunk-cq44v1a6.js → chunk-7hpdd6r9.js} +3 -3
- package/dist/{chunk-f85hpqnm.js → chunk-99nd4rc1.js} +3 -3
- package/dist/{chunk-f85hpqnm.js.map → chunk-99nd4rc1.js.map} +3 -3
- package/dist/chunk-b9affek3.js +261 -0
- package/dist/chunk-b9affek3.js.map +12 -0
- package/dist/{chunk-zvmr2hqk.js → chunk-bs7sqkre.js} +10 -4
- package/dist/chunk-bs7sqkre.js.map +12 -0
- package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
- package/dist/{chunk-667x4drs.js → chunk-d0eb5yy6.js} +143 -7
- package/dist/chunk-d0eb5yy6.js.map +14 -0
- package/dist/chunk-d62kjtbg.js.map +2 -2
- package/dist/{chunk-gkxsenvp.js → chunk-de4z2bj6.js} +31 -7
- package/dist/{chunk-gkxsenvp.js.map → chunk-de4z2bj6.js.map} +5 -4
- package/dist/{chunk-mdnw7nj8.js → chunk-dnmadg9k.js} +35 -10
- package/dist/chunk-dnmadg9k.js.map +15 -0
- package/dist/chunk-enpsx8k5.js +127 -0
- package/dist/chunk-enpsx8k5.js.map +10 -0
- package/dist/{chunk-xnx96gfy.js → chunk-ere85b8y.js} +17 -8
- package/dist/chunk-ere85b8y.js.map +15 -0
- package/dist/{chunk-k4kkp58d.js → chunk-ewqa58h9.js} +12 -2
- package/dist/chunk-ewqa58h9.js.map +11 -0
- package/dist/{chunk-7g2gjvah.js → chunk-ex496vct.js} +1 -1
- package/dist/{chunk-nvymebc1.js → chunk-f1zxad2t.js} +1 -1
- package/dist/{chunk-3q7z9hd4.js → chunk-fe52eczz.js} +483 -101
- package/dist/chunk-fe52eczz.js.map +49 -0
- package/dist/{chunk-8x74221e.js → chunk-fx93hd2n.js} +79 -32
- package/dist/chunk-fx93hd2n.js.map +20 -0
- package/dist/{chunk-39tqv9hz.js → chunk-gc4ntf7d.js} +6 -7
- package/dist/{chunk-39tqv9hz.js.map → chunk-gc4ntf7d.js.map} +3 -4
- package/dist/chunk-h8teetr0.js +9 -0
- package/dist/chunk-h8teetr0.js.map +10 -0
- package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
- package/dist/chunk-hkc3jct7.js.map +10 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-h044jb97.js → chunk-htr6wjmv.js} +282 -58
- package/dist/chunk-htr6wjmv.js.map +19 -0
- package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
- package/dist/chunk-jhm3zsa7.js.map +12 -0
- package/dist/{chunk-chdg6eqq.js → chunk-k6hrnf35.js} +5 -5
- package/dist/chunk-k6hrnf35.js.map +10 -0
- package/dist/{chunk-a0073121.js → chunk-kpx7jrmn.js} +3 -1
- package/dist/chunk-kpx7jrmn.js.map +12 -0
- package/dist/{chunk-b9y8hcm2.js → chunk-mfs23znk.js} +1 -1
- package/dist/{chunk-kvysp909.js → chunk-ny3xyvcn.js} +32 -19
- package/dist/chunk-ny3xyvcn.js.map +17 -0
- package/dist/{chunk-h4138ww2.js → chunk-p0dqwj3n.js} +450 -799
- package/dist/chunk-p0dqwj3n.js.map +49 -0
- package/dist/{chunk-f72rbvsb.js → chunk-p844e0rn.js} +23 -8
- package/dist/chunk-p844e0rn.js.map +19 -0
- package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
- package/dist/chunk-pfp1txq2.js.map +11 -0
- package/dist/chunk-pqajwytd.js.map +3 -3
- package/dist/{chunk-mr60an99.js → chunk-qczk96d9.js} +22 -2
- package/dist/{chunk-mr60an99.js.map → chunk-qczk96d9.js.map} +3 -3
- package/dist/{chunk-69kt9q43.js → chunk-qkbx3tf6.js} +17 -128
- package/dist/{chunk-69kt9q43.js.map → chunk-qkbx3tf6.js.map} +6 -7
- package/dist/{chunk-h866d223.js → chunk-qkvz64nd.js} +2 -2
- package/dist/{chunk-vsvrv7n8.js → chunk-qmnnhde6.js} +4 -8
- package/dist/{chunk-vsvrv7n8.js.map → chunk-qmnnhde6.js.map} +3 -3
- package/dist/{chunk-6z1q7j19.js → chunk-qq90g05n.js} +1128 -782
- package/dist/chunk-qq90g05n.js.map +66 -0
- package/dist/{chunk-40qb8wpe.js → chunk-qxvp5epv.js} +84 -29
- package/dist/{chunk-40qb8wpe.js.map → chunk-qxvp5epv.js.map} +10 -9
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-s3csryxe.js → chunk-rj69qcrd.js} +8 -2
- package/dist/chunk-rj69qcrd.js.map +11 -0
- package/dist/{chunk-tkdbge6v.js → chunk-rt9p8m9t.js} +1 -1
- package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
- package/dist/chunk-rz53yb4v.js.map +14 -0
- package/dist/{chunk-a7ne02hk.js → chunk-s4jhg8a3.js} +351 -296
- package/dist/chunk-s4jhg8a3.js.map +15 -0
- package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
- package/dist/chunk-s54c868q.js.map +12 -0
- package/dist/{chunk-dsv8kdgk.js → chunk-tffvfy6s.js} +8 -7
- package/dist/{chunk-dsv8kdgk.js.map → chunk-tffvfy6s.js.map} +3 -3
- package/dist/{chunk-sbcm1b92.js → chunk-v6xpd60t.js} +3 -3
- package/dist/{chunk-nj0020ay.js → chunk-vgk3hknm.js} +1 -1
- package/dist/{chunk-qnd7ehe5.js → chunk-vx2yp45y.js} +2 -2
- package/dist/{chunk-vjqt7q3a.js → chunk-vz3gc1tm.js} +607 -45
- package/dist/chunk-vz3gc1tm.js.map +41 -0
- package/dist/{chunk-g4rbm4a6.js → chunk-wt4szfec.js} +379 -331
- package/dist/chunk-wt4szfec.js.map +14 -0
- package/dist/chunk-xt1zt7gv.js +471 -0
- package/dist/chunk-xt1zt7gv.js.map +13 -0
- package/dist/{chunk-swxzncrv.js → chunk-y05543x6.js} +51 -8
- package/dist/{chunk-swxzncrv.js.map → chunk-y05543x6.js.map} +5 -5
- package/dist/{chunk-zdkcdshk.js → chunk-y9jmd7e5.js} +41 -3
- package/dist/{chunk-zdkcdshk.js.map → chunk-y9jmd7e5.js.map} +4 -3
- package/dist/{chunk-nkbev3tr.js → chunk-yv9czyfr.js} +3 -3
- package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
- package/dist/chunk-yw9pyg66.js.map +11 -0
- package/dist/{chunk-cxj8y8t0.js → chunk-za5yd58j.js} +2 -2
- package/dist/{chunk-zb47r1c8.js → chunk-zb77kjth.js} +3 -3
- package/dist/{chunk-dp7yk20b.js → chunk-zxawp1n2.js} +1 -1
- package/dist/datasets/builders.d.ts +12 -1
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +27 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +5 -0
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +10 -5
- package/dist/datasets/write.js.map +1 -1
- package/dist/edits/properties.d.ts.map +1 -1
- package/dist/events/execution.d.ts +2 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/types/objects.d.ts +5 -0
- package/dist/events/types/objects.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +10 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +49 -43
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +9 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +45 -41
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +46 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -71
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +5 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +1 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +8 -5
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +26 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +5 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -4
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +20 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -0
- package/dist/materialization/events.d.ts +29 -3
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +4 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +9 -3
- package/dist/materialization/index.js.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -10
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/effective/build-events.d.ts +5 -21
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +2 -3
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -1
- package/dist/materializer/effective/vectors.d.ts +2 -3
- package/dist/materializer/effective/vectors.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +1 -11
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/execution/work-executor.d.ts +5 -7
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +1 -3
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +35 -33
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +8 -11
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/batching.d.ts +5 -0
- package/dist/materializer/shared/batching.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -8
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +20 -0
- package/dist/models/audio/catalog.d.ts.map +1 -0
- package/dist/models/audio/errors.d.ts +8 -0
- package/dist/models/audio/errors.d.ts.map +1 -0
- package/dist/models/audio/file.d.ts +9 -0
- package/dist/models/audio/file.d.ts.map +1 -0
- package/dist/models/audio/runtime.d.ts +8 -0
- package/dist/models/audio/runtime.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +60 -0
- package/dist/models/audio/types.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +24 -2
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +1 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +3 -0
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +6 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.js +27 -24
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-admission.d.ts +6 -1
- package/dist/models/execution/model-call-admission.d.ts.map +1 -1
- package/dist/models/execution/model-call-limits.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +4 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/reranking.d.ts +4 -0
- package/dist/models/execution/reranking.d.ts.map +1 -0
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +2 -1
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +2 -0
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/index.d.ts +7 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +6 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/language-model.d.ts +6 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +2 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/reranking-model.d.ts +49 -0
- package/dist/models/reranking-model.d.ts.map +1 -0
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +6 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +2 -1
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +31 -27
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +41 -0
- package/dist/objects/property-clearance.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +5 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +1 -1
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +27 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +8 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/planner.d.ts +1 -1
- package/dist/objects/query/planner.d.ts.map +1 -1
- package/dist/objects/query/primary-id.d.ts +7 -0
- package/dist/objects/query/primary-id.d.ts.map +1 -0
- package/dist/objects/query/reranking-executor.d.ts +13 -0
- package/dist/objects/query/reranking-executor.d.ts.map +1 -0
- package/dist/objects/query/reranking-limits.d.ts +3 -0
- package/dist/objects/query/reranking-limits.d.ts.map +1 -0
- package/dist/objects/query/reranking-query.d.ts +4 -0
- package/dist/objects/query/reranking-query.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts +10 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/file-handle.d.ts +6 -0
- package/dist/objects/sdk/file-handle.d.ts.map +1 -0
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -0
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +2 -2
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/vectors/indexing-dispatch.d.ts +21 -0
- package/dist/objects/vectors/indexing-dispatch.d.ts.map +1 -0
- package/dist/objects/vectors/query.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +12 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +35 -0
- package/dist/ontology/docs-markdown.d.ts.map +1 -0
- package/dist/ontology/docs.d.ts +50 -0
- package/dist/ontology/docs.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +7 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +19 -0
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +3 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +276 -3
- package/dist/ontology/internal.js.map +4 -3
- package/dist/ontology/query-capabilities.d.ts +1 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +8 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +25 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/index.d.ts +1 -1
- package/dist/ontology/validation/index.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +7 -0
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +29 -26
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +27 -24
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +3 -0
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +4 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +11 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +3 -1
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +14 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +1 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +32 -27
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/locale.d.ts +9 -0
- package/dist/runtime/locale.d.ts.map +1 -0
- package/dist/runtime/public-origin.d.ts +10 -0
- package/dist/runtime/public-origin.d.ts.map +1 -0
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +1 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +42 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/runtime.d.ts +3 -0
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/security/builders.d.ts +11 -2
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -4
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/markings.d.ts +19 -0
- package/dist/security/markings.d.ts.map +1 -0
- package/dist/security/redactions.d.ts +4 -0
- package/dist/security/redactions.d.ts.map +1 -0
- package/dist/security/registry.d.ts +7 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +25 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -21
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +5 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +15 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +1 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +3 -3
- package/dist/storage/ai-cost/types.d.ts +1 -1
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/ai-limits/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +7 -2
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +4 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-limits/types.d.ts +3 -0
- package/dist/storage/ai-limits/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +8 -4
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/file-download-grants/in-memory.d.ts +11 -0
- package/dist/storage/file-download-grants/in-memory.d.ts.map +1 -0
- package/dist/storage/file-download-grants/index.d.ts +3 -0
- package/dist/storage/file-download-grants/index.d.ts.map +1 -0
- package/dist/storage/file-download-grants/record.d.ts +11 -0
- package/dist/storage/file-download-grants/record.d.ts.map +1 -0
- package/dist/storage/file-download-grants/types.d.ts +44 -0
- package/dist/storage/file-download-grants/types.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +10 -7
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +35 -32
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +1 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +9 -4
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/index.d.ts +1 -1
- package/dist/storage/migrations/index.d.ts.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +3 -3
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/types.d.ts +7 -0
- package/dist/storage/migrations/types.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/query-preparation.d.ts +39 -0
- package/dist/storage/objects/query-preparation.d.ts.map +1 -0
- package/dist/storage/objects/types.d.ts +9 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -6
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -2
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-state.d.ts +0 -2
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-work.d.ts +1 -3
- package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +23 -57
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/outbox.d.ts +3 -2
- package/dist/storage/ontology/in-memory/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts +104 -0
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts +17 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts +3 -1
- package/dist/storage/ontology/in-memory/source-roots.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +1 -2
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/state-reader.d.ts +25 -0
- package/dist/storage/ontology/in-memory/state-reader.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -3
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +40 -59
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +4 -6
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +114 -3
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -39
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +26 -12
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/replacement-plans.d.ts +103 -0
- package/dist/storage/ontology/replacement-plans.d.ts.map +1 -0
- package/dist/storage/ontology/sources.d.ts +0 -8
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +2 -0
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +10 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +30 -27
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-download-grant-storage-contract.d.ts +9 -0
- package/dist/testing/file-download-grant-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2556 -1495
- package/dist/testing/index.js.map +14 -13
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts +14 -0
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +5 -1
- package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +25 -22
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +15 -17
- package/dist/workers/index.js.map +3 -3
- package/dist/workers/queue-worker.d.ts +3 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +51 -47
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +2 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/actions/read-facade.ts +2 -1
- package/src/actions/types/context.ts +5 -2
- package/src/actions/validation.ts +4 -1
- package/src/agents/adapters.ts +15 -0
- package/src/agents/authority.ts +15 -0
- package/src/agents/context/entries.ts +48 -4
- package/src/agents/context/index.ts +1 -0
- package/src/agents/context-compaction.ts +6 -0
- package/src/agents/errors.ts +3 -0
- package/src/agents/index.ts +13 -1
- package/src/agents/message.ts +9 -0
- package/src/agents/request.ts +178 -22
- package/src/agents/skills.ts +63 -0
- package/src/agents/types.ts +35 -5
- package/src/auth/runtime.ts +14 -0
- package/src/auth/types.ts +6 -0
- package/src/authorization/resolve.ts +6 -1
- package/src/authorization/types.ts +7 -0
- package/src/blob-storage/download-urls.ts +138 -0
- package/src/blob-storage/execution.ts +44 -1
- package/src/blob-storage/file-content.ts +106 -0
- package/src/blob-storage/index.ts +1 -0
- package/src/blob-storage/internal.ts +8 -0
- package/src/blob-storage/media-type.ts +29 -0
- package/src/blob-storage/types.ts +13 -1
- package/src/blob-storage/validation.ts +13 -0
- package/src/bootstrap/agent-context.ts +356 -0
- package/src/bootstrap/discovery.ts +100 -33
- package/src/bootstrap/index.ts +1 -1
- package/src/bootstrap/ontology-type-manifest.ts +3 -38
- package/src/datasets/builders.ts +17 -1
- package/src/datasets/execution.ts +110 -2
- package/src/datasets/index.ts +7 -1
- package/src/datasets/types.ts +2 -0
- package/src/datasets/write.ts +21 -2
- package/src/edits/properties.ts +3 -0
- package/src/events/execution.ts +15 -16
- package/src/events/types/objects.ts +5 -0
- package/src/execution/agent.ts +27 -0
- package/src/execution/authorization.ts +1 -0
- package/src/execution/authorized-object-reader.ts +104 -35
- package/src/execution/scopes.ts +2 -6
- package/src/http/api-routes.ts +4 -3
- package/src/index.ts +52 -2
- package/src/lake-storage/in-memory.ts +38 -9
- package/src/lake-storage/index.ts +2 -0
- package/src/lake-storage/types.ts +30 -0
- package/src/maintenance/ontology-maintenance.ts +50 -23
- package/src/maintenance/types.ts +1 -4
- package/src/materialization/event-envelopes.ts +168 -0
- package/src/materialization/events.ts +40 -4
- package/src/materialization/index.ts +9 -1
- package/src/materializer/README.md +55 -10
- package/src/materializer/edits/commit.ts +3 -19
- package/src/materializer/edits/plan.ts +20 -71
- package/src/materializer/effective/build-events.ts +42 -136
- package/src/materializer/effective/vector-indexing.ts +2 -3
- package/src/materializer/effective/vectors.ts +2 -3
- package/src/materializer/execution/scope.ts +1 -38
- package/src/materializer/execution/work-executor.ts +21 -115
- package/src/materializer/execution/work-records.ts +0 -15
- package/src/materializer/projections/replace.ts +106 -63
- package/src/materializer/projections/replacement-plan.ts +73 -218
- package/src/materializer/shared/batching.ts +7 -0
- package/src/materializer/telemetry/append.ts +2 -14
- package/src/materializer/telemetry/plan.ts +6 -43
- package/src/models/audio/catalog.ts +90 -0
- package/src/models/audio/errors.ts +19 -0
- package/src/models/audio/file.ts +78 -0
- package/src/models/audio/runtime.ts +182 -0
- package/src/models/audio/types.ts +69 -0
- package/src/models/catalog.ts +78 -7
- package/src/models/definitions.ts +8 -1
- package/src/models/events.ts +3 -0
- package/src/models/execution/README.md +24 -4
- package/src/models/execution/binding.ts +6 -0
- package/src/models/execution/model-call-admission.ts +6 -1
- package/src/models/execution/model-call-limits.ts +21 -11
- package/src/models/execution/model-call-recorder.ts +11 -0
- package/src/models/execution/model-call-recovery.ts +1 -0
- package/src/models/execution/reranking.ts +137 -0
- package/src/models/execution/session.ts +2 -2
- package/src/models/execution/usage.ts +1 -0
- package/src/models/execution.ts +11 -3
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +32 -0
- package/src/models/language-model.ts +6 -0
- package/src/models/pricing.ts +2 -1
- package/src/models/reranking-model.ts +114 -0
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +7 -0
- package/src/objects/execution.ts +4 -1
- package/src/objects/materializer-adapter.ts +3 -0
- package/src/objects/object/upsert-batch.ts +4 -1
- package/src/objects/object/upsert.ts +3 -1
- package/src/objects/property-clearance.ts +209 -0
- package/src/objects/query/executor.ts +85 -38
- package/src/objects/query/explain.ts +8 -0
- package/src/objects/query/index.ts +1 -0
- package/src/objects/query/ir.ts +10 -0
- package/src/objects/query/normalize.ts +2 -0
- package/src/objects/query/planner.ts +12 -1
- package/src/objects/query/primary-id.ts +56 -0
- package/src/objects/query/reranking-executor.ts +91 -0
- package/src/objects/query/reranking-limits.ts +3 -0
- package/src/objects/query/reranking-query.ts +8 -0
- package/src/objects/query/validate.ts +166 -15
- package/src/objects/sdk/file-handle.ts +77 -0
- package/src/objects/sdk/object-handle.ts +8 -4
- package/src/objects/sdk/object-set.ts +5 -2
- package/src/objects/sdk/query-builder.ts +15 -2
- package/src/objects/sdk/query-executor.ts +2 -2
- package/src/objects/sdk/runtime-query-executor.ts +7 -4
- package/src/objects/vectors/README.md +6 -2
- package/src/objects/vectors/indexing-dispatch.ts +83 -0
- package/src/objects/vectors/query.ts +3 -0
- package/src/ontology/builders.ts +19 -2
- package/src/ontology/docs-markdown.ts +394 -0
- package/src/ontology/docs.ts +196 -0
- package/src/ontology/index.ts +2 -0
- package/src/ontology/inference/index.ts +25 -0
- package/src/ontology/internal.ts +7 -0
- package/src/ontology/query-capabilities.ts +1 -1
- package/src/ontology/tokens.ts +13 -2
- package/src/ontology/types.ts +26 -0
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/query.ts +57 -0
- package/src/ontology/validation/schema.ts +26 -1
- package/src/query.ts +4 -0
- package/src/queues/in-memory.ts +54 -19
- package/src/queues/types.ts +4 -0
- package/src/runtime/create.ts +34 -4
- package/src/runtime/definitions.ts +3 -1
- package/src/runtime/host.ts +73 -2
- package/src/runtime/index.ts +4 -0
- package/src/runtime/internal.ts +1 -0
- package/src/runtime/locale.ts +26 -0
- package/src/runtime/public-origin.ts +33 -0
- package/src/runtime/resolve-definitions.ts +28 -1
- package/src/runtime/sixb.ts +14 -3
- package/src/runtime/types.ts +51 -5
- package/src/scheduler/runtime.ts +11 -2
- package/src/security/builders.ts +49 -5
- package/src/security/index.ts +6 -1
- package/src/security/markings.ts +313 -0
- package/src/security/redactions.ts +6 -0
- package/src/security/registry.ts +21 -1
- package/src/security/types.ts +26 -0
- package/src/security/validation.ts +59 -2
- package/src/storage/agents/provider.ts +11 -0
- package/src/storage/agents/types.ts +15 -7
- package/src/storage/ai-cost/analytics.ts +2 -0
- package/src/storage/ai-cost/codec.ts +2 -1
- package/src/storage/ai-cost/types.ts +1 -0
- package/src/storage/ai-cost/validation.ts +21 -8
- package/src/storage/ai-limits/in-memory.ts +10 -2
- package/src/storage/ai-limits/provider.ts +29 -2
- package/src/storage/ai-limits/types.ts +3 -0
- package/src/storage/ai-usage/record.ts +9 -0
- package/src/storage/ai-usage/types.ts +8 -4
- package/src/storage/ai-usage/usage.ts +2 -0
- package/src/storage/file-download-grants/in-memory.ts +73 -0
- package/src/storage/file-download-grants/index.ts +8 -0
- package/src/storage/file-download-grants/record.ts +47 -0
- package/src/storage/file-download-grants/types.ts +48 -0
- package/src/storage/in-memory/index.ts +13 -2
- package/src/storage/index.ts +32 -13
- package/src/storage/internal.ts +1 -0
- package/src/storage/migrations/index.ts +1 -0
- package/src/storage/migrations/migrate-storage.ts +36 -12
- package/src/storage/migrations/types.ts +8 -0
- package/src/storage/objects/in-memory/query.ts +2 -0
- package/src/storage/objects/in-memory/selected-reader.ts +1 -0
- package/src/storage/objects/in-memory/storage.ts +1 -0
- package/src/storage/objects/query-preparation.ts +77 -0
- package/src/storage/objects/types.ts +9 -0
- package/src/storage/ontology/commits.ts +1 -6
- package/src/storage/ontology/in-memory/index.ts +28 -9
- package/src/storage/ontology/in-memory/materializations-finalization.ts +35 -68
- package/src/storage/ontology/in-memory/materializations-state.ts +0 -22
- package/src/storage/ontology/in-memory/materializations-work.ts +0 -45
- package/src/storage/ontology/in-memory/materializations.ts +172 -653
- package/src/storage/ontology/in-memory/outbox.ts +37 -29
- package/src/storage/ontology/in-memory/replacement-plans.ts +697 -0
- package/src/storage/ontology/in-memory/shared-state.ts +24 -2
- package/src/storage/ontology/in-memory/source-roots.ts +7 -2
- package/src/storage/ontology/in-memory/sources.ts +7 -33
- package/src/storage/ontology/in-memory/state-reader.ts +245 -0
- package/src/storage/ontology/index.ts +19 -13
- package/src/storage/ontology/materializations.ts +45 -74
- package/src/storage/ontology/outbox.ts +4 -7
- package/src/storage/ontology/provider-header-validation.ts +0 -57
- package/src/storage/ontology/provider-work.ts +381 -90
- package/src/storage/ontology/provider.ts +74 -171
- package/src/storage/ontology/replacement-plans.ts +117 -0
- package/src/storage/ontology/sources.ts +0 -12
- package/src/storage/operation-scope.ts +33 -1
- package/src/storage/projection-runs/in-memory.ts +7 -1
- package/src/storage/projection-runs/types.ts +2 -0
- package/src/storage/types.ts +2 -0
- package/src/testing/ai-cost-storage-contract.ts +1 -0
- package/src/testing/ai-limit-storage-contract.ts +62 -0
- package/src/testing/ai-usage-storage-contract.ts +31 -0
- package/src/testing/file-download-grant-storage-contract.ts +139 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/lake-storage-contract.ts +87 -1
- package/src/testing/materializer-storage-contract.ts +1008 -1
- package/src/testing/object-read-scope-contract.ts +1 -0
- package/src/testing/ontology-contract-fixture.ts +11 -87
- package/src/testing/ontology-storage-contract.ts +70 -39
- package/src/testing/projection-run-storage-contract.ts +14 -0
- package/src/testing/queues-contract.ts +59 -0
- package/src/workers/queue-worker.ts +19 -16
- package/src/workflows/builders.ts +24 -1
- package/src/workflows/request.ts +3 -0
- package/src/workflows/types.ts +6 -3
- package/src/workflows/validation.ts +32 -4
- package/dist/chunk-3q7z9hd4.js.map +0 -46
- package/dist/chunk-667x4drs.js.map +0 -12
- package/dist/chunk-69266efg.js.map +0 -12
- package/dist/chunk-6z1q7j19.js.map +0 -62
- package/dist/chunk-7ytf06d3.js +0 -113
- package/dist/chunk-7ytf06d3.js.map +0 -10
- package/dist/chunk-8x74221e.js.map +0 -20
- package/dist/chunk-91kcnbf0.js.map +0 -10
- package/dist/chunk-98cw09sw.js.map +0 -10
- package/dist/chunk-9vx5e9g1.js.map +0 -11
- package/dist/chunk-a0073121.js.map +0 -12
- package/dist/chunk-a7ne02hk.js.map +0 -15
- package/dist/chunk-cd234ba4.js.map +0 -14
- package/dist/chunk-chdg6eqq.js.map +0 -10
- package/dist/chunk-dmn70ztd.js.map +0 -11
- package/dist/chunk-f72rbvsb.js.map +0 -19
- package/dist/chunk-g4rbm4a6.js.map +0 -15
- package/dist/chunk-h044jb97.js.map +0 -15
- package/dist/chunk-h3v76ams.js.map +0 -11
- package/dist/chunk-h4138ww2.js.map +0 -50
- package/dist/chunk-hgqpcmyr.js.map +0 -12
- package/dist/chunk-jgwb25gc.js.map +0 -12
- package/dist/chunk-k4kkp58d.js.map +0 -11
- package/dist/chunk-kttr5ftm.js.map +0 -12
- package/dist/chunk-kvysp909.js.map +0 -17
- package/dist/chunk-mdnw7nj8.js.map +0 -15
- package/dist/chunk-s3csryxe.js.map +0 -11
- package/dist/chunk-tnvafr7g.js.map +0 -19
- package/dist/chunk-vjqt7q3a.js.map +0 -36
- package/dist/chunk-xnx96gfy.js.map +0 -15
- package/dist/chunk-z5rnrmz1.js.map +0 -11
- package/dist/chunk-zvmr2hqk.js.map +0 -12
- package/dist/materializer/execution/plan-stream.d.ts +0 -8
- package/dist/materializer/execution/plan-stream.d.ts.map +0 -1
- package/src/materializer/execution/plan-stream.ts +0 -121
- /package/dist/{chunk-4gmng3vf.js.map → chunk-22v5bpz3.js.map} +0 -0
- /package/dist/{chunk-fj1dvp37.js.map → chunk-2vhg6ysa.js.map} +0 -0
- /package/dist/{chunk-gmdvns8f.js.map → chunk-48e3cn2d.js.map} +0 -0
- /package/dist/{chunk-cq44v1a6.js.map → chunk-7hpdd6r9.js.map} +0 -0
- /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
- /package/dist/{chunk-7g2gjvah.js.map → chunk-ex496vct.js.map} +0 -0
- /package/dist/{chunk-nvymebc1.js.map → chunk-f1zxad2t.js.map} +0 -0
- /package/dist/{chunk-b9y8hcm2.js.map → chunk-mfs23znk.js.map} +0 -0
- /package/dist/{chunk-h866d223.js.map → chunk-qkvz64nd.js.map} +0 -0
- /package/dist/{chunk-tkdbge6v.js.map → chunk-rt9p8m9t.js.map} +0 -0
- /package/dist/{chunk-sbcm1b92.js.map → chunk-v6xpd60t.js.map} +0 -0
- /package/dist/{chunk-nj0020ay.js.map → chunk-vgk3hknm.js.map} +0 -0
- /package/dist/{chunk-qnd7ehe5.js.map → chunk-vx2yp45y.js.map} +0 -0
- /package/dist/{chunk-nkbev3tr.js.map → chunk-yv9czyfr.js.map} +0 -0
- /package/dist/{chunk-cxj8y8t0.js.map → chunk-za5yd58j.js.map} +0 -0
- /package/dist/{chunk-zb47r1c8.js.map → chunk-zb77kjth.js.map} +0 -0
- /package/dist/{chunk-dp7yk20b.js.map → chunk-zxawp1n2.js.map} +0 -0
package/src/runtime/types.ts
CHANGED
|
@@ -12,11 +12,12 @@ import type {
|
|
|
12
12
|
RequestActionResult,
|
|
13
13
|
} from "../actions"
|
|
14
14
|
import type { AuthorizationContext } from "../authorization"
|
|
15
|
+
import type { OpenedFileRef } from "../blob-storage"
|
|
15
16
|
import type { Broker } from "../broker"
|
|
16
17
|
import type { DomainEventLog } from "../events"
|
|
17
18
|
import type { RuntimeAuthorization } from "../execution"
|
|
18
19
|
import type { AuthorizedObjectReader } from "../execution/authorized-object-reader"
|
|
19
|
-
import type { EmbeddingModelCatalog } from "../models"
|
|
20
|
+
import type { EmbeddingModelCatalog, RerankingModelCatalog, RerankingModelRef } from "../models"
|
|
20
21
|
import type { ModelExecutionSession } from "../models/execution/session"
|
|
21
22
|
import type {
|
|
22
23
|
ObjectQuery,
|
|
@@ -43,11 +44,12 @@ import type { OntologyDocumentInput, OntologyRegistry, OntologySource } from "..
|
|
|
43
44
|
import type {
|
|
44
45
|
LinkToken,
|
|
45
46
|
ObjectTypeProperties,
|
|
47
|
+
ObjectTypeReadProperties,
|
|
46
48
|
ObjectTypeWithPropertyTokens,
|
|
47
49
|
PropertyToken,
|
|
48
50
|
} from "../ontology/tokens"
|
|
49
51
|
import type { Queues } from "../queues"
|
|
50
|
-
import type { ActionRunRecord, ObjectLinkRow, Storage } from "../storage"
|
|
52
|
+
import type { ActionRunRecord, ObjectLinkRow, Redactions, Storage } from "../storage"
|
|
51
53
|
// ── Shared runtime context ──────────────────────────────────
|
|
52
54
|
|
|
53
55
|
/**
|
|
@@ -58,6 +60,7 @@ import type { ActionRunRecord, ObjectLinkRow, Storage } from "../storage"
|
|
|
58
60
|
*/
|
|
59
61
|
export interface SixbHostContext {
|
|
60
62
|
readonly embeddingModels?: EmbeddingModelCatalog
|
|
63
|
+
readonly rerankingModels?: RerankingModelCatalog
|
|
61
64
|
readonly projectId: string
|
|
62
65
|
readonly broker: Broker
|
|
63
66
|
readonly ontology: OntologyRegistry
|
|
@@ -99,7 +102,7 @@ export type { OntologyDocumentInput, OntologySource }
|
|
|
99
102
|
// ── Rows ────────────────────────────────────────────────────
|
|
100
103
|
//
|
|
101
104
|
// Rows read `properties` from the type inferred where the object type is defined
|
|
102
|
-
// (`
|
|
105
|
+
// (`ObjectTypeReadProperties`), never from the schema, so relating two rows — or anything returning
|
|
103
106
|
// them — costs no schema inference. Rows and query builders also declare their variance, so
|
|
104
107
|
// TypeScript never measures it: a measurement that overflows (TS2589) caches the variance it gave
|
|
105
108
|
// up on, under which a plain query once passed for an expanded one.
|
|
@@ -108,7 +111,10 @@ export type { OntologyDocumentInput, OntologySource }
|
|
|
108
111
|
export type TwinObject<out TObjectType extends ObjectTypeWithPropertyTokens> = {
|
|
109
112
|
primaryId: string
|
|
110
113
|
objectTypeId: TObjectType["id"]
|
|
111
|
-
|
|
114
|
+
/** A marked property is absent when the reader lacks its clearance; see `redactions`. */
|
|
115
|
+
properties: ObjectTypeReadProperties<TObjectType>
|
|
116
|
+
/** Properties omitted because the reader lacks a clearance, keyed by property id. */
|
|
117
|
+
redactions?: Redactions
|
|
112
118
|
createdAt: Date
|
|
113
119
|
updatedAt: Date
|
|
114
120
|
}
|
|
@@ -312,6 +318,32 @@ export type ObjectWhereBuilder<TObjectType extends ObjectTypeWithPropertyTokens>
|
|
|
312
318
|
export type TelemetryPropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
313
319
|
TObjectType["p"][InferTelemetryPropertyIds<TObjectType>]
|
|
314
320
|
|
|
321
|
+
type FilePropertyId<TObjectType extends ObjectTypeWithPropertyTokens, TSchema> = Extract<
|
|
322
|
+
TObjectType["properties"][number],
|
|
323
|
+
{ readonly schema: TSchema }
|
|
324
|
+
>["id"]
|
|
325
|
+
|
|
326
|
+
/** A property token holding one file: its schema is `"fileRef"`. */
|
|
327
|
+
export type FilePropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
328
|
+
TObjectType["p"][FilePropertyId<TObjectType, "fileRef">]
|
|
329
|
+
|
|
330
|
+
/** A property token holding a list of files: an array of `"fileRef"`. */
|
|
331
|
+
export type FileListPropertyToken<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
332
|
+
TObjectType["p"][FilePropertyId<
|
|
333
|
+
TObjectType,
|
|
334
|
+
{ readonly type: "array"; readonly items: "fileRef" }
|
|
335
|
+
>]
|
|
336
|
+
|
|
337
|
+
/** One file property value of one object, read through that object. */
|
|
338
|
+
export interface ObjectFileHandle {
|
|
339
|
+
/**
|
|
340
|
+
* Re-read the object with the caller's permissions and open the file it references. Returns
|
|
341
|
+
* null when the object, the value or its stored blob is absent; throws `AuthorizationError`
|
|
342
|
+
* when the caller cannot view the object type or is not cleared for the property's markings.
|
|
343
|
+
*/
|
|
344
|
+
open(): Promise<OpenedFileRef | null>
|
|
345
|
+
}
|
|
346
|
+
|
|
315
347
|
type AnyPropertyToken = PropertyToken<string, string, Property>
|
|
316
348
|
|
|
317
349
|
type ObjectSetPropertyId<TObjectType extends ObjectTypeWithPropertyTokens> =
|
|
@@ -414,6 +446,12 @@ export type ObjectQueryFacetBucket = {
|
|
|
414
446
|
count: number
|
|
415
447
|
}
|
|
416
448
|
|
|
449
|
+
/** Total and facet buckets are calculated from the same matching set. */
|
|
450
|
+
export type ObjectQueryFacetsResult = {
|
|
451
|
+
total: number
|
|
452
|
+
facets: ObjectQueryFacetResult[]
|
|
453
|
+
}
|
|
454
|
+
|
|
417
455
|
export type ObjectQueryFacetResult = {
|
|
418
456
|
propertyId: string
|
|
419
457
|
buckets: ObjectQueryFacetBucket[]
|
|
@@ -669,6 +707,9 @@ export interface ObjectQueryBuilder<
|
|
|
669
707
|
options: { k: number }
|
|
670
708
|
): ObjectQueryBuilder<TObjectType, TRow>
|
|
671
709
|
|
|
710
|
+
/** Reorder up to 100 vector candidates with an explicitly registered server-side model. */
|
|
711
|
+
rerank(options: { model: RerankingModelRef }): ObjectQueryBuilder<TObjectType, TRow>
|
|
712
|
+
|
|
672
713
|
/** Follow an outgoing link and make the linked object type the current result type. */
|
|
673
714
|
traverse<TLinkToken extends LinkToken<TObjectType["id"], string, LinkTargetObjectTypeIdValue>>(
|
|
674
715
|
link: TLinkToken,
|
|
@@ -750,7 +791,7 @@ export interface ObjectQueryBuilder<
|
|
|
750
791
|
exists(): Promise<boolean>
|
|
751
792
|
|
|
752
793
|
/** Count matching objects by configured facetable properties. */
|
|
753
|
-
facets(input: readonly ObjectQueryFacetInput<TObjectType>[]): Promise<
|
|
794
|
+
facets(input: readonly ObjectQueryFacetInput<TObjectType>[]): Promise<ObjectQueryFacetsResult>
|
|
754
795
|
|
|
755
796
|
/** Execute this query with an outer limit of one and return the first object. */
|
|
756
797
|
first(): Promise<Simplify<TRow> | null>
|
|
@@ -763,6 +804,11 @@ export interface ObjectReadByIdHandle<out TObjectType extends ObjectTypeWithProp
|
|
|
763
804
|
|
|
764
805
|
/** List links from this object, optionally filtered by link token. */
|
|
765
806
|
listLinks(link?: LinkTokenForObjectType<TObjectType>): Promise<readonly ObjectLinkRow[]>
|
|
807
|
+
|
|
808
|
+
/** Read a `fileRef` property of this object. */
|
|
809
|
+
file(property: FilePropertyToken<TObjectType>): ObjectFileHandle
|
|
810
|
+
/** Read one file of a property holding a list of files. */
|
|
811
|
+
file(property: FileListPropertyToken<TObjectType>, index: number): ObjectFileHandle
|
|
766
812
|
}
|
|
767
813
|
|
|
768
814
|
/**
|
package/src/scheduler/runtime.ts
CHANGED
|
@@ -18,6 +18,8 @@ const MAX_TIMER_DELAY_MS = 2_147_483_647
|
|
|
18
18
|
export interface SchedulerRuntimeOptions {
|
|
19
19
|
schedules: readonly ScheduleDefinition[]
|
|
20
20
|
events: DomainEventLog
|
|
21
|
+
/** Evaluates cron schedules that set no time zone of their own. Defaults to UTC. */
|
|
22
|
+
timeZone?: string
|
|
21
23
|
now?: () => Date
|
|
22
24
|
}
|
|
23
25
|
|
|
@@ -30,6 +32,7 @@ export interface SchedulerController {
|
|
|
30
32
|
export class SchedulerRuntime implements SchedulerController {
|
|
31
33
|
private readonly schedules: readonly CronScheduleDefinition[]
|
|
32
34
|
private readonly events: DomainEventLog
|
|
35
|
+
private readonly timeZone: string | undefined
|
|
33
36
|
private readonly now: () => Date
|
|
34
37
|
private started = false
|
|
35
38
|
private timer: ReturnType<typeof setTimeout> | null = null
|
|
@@ -39,6 +42,8 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
39
42
|
constructor(options: SchedulerRuntimeOptions) {
|
|
40
43
|
this.schedules = options.schedules.filter(isCronSchedule)
|
|
41
44
|
this.events = options.events
|
|
45
|
+
// `undefined` keeps the arithmetic UTC path; an explicit "UTC" would go through Intl.
|
|
46
|
+
this.timeZone = options.timeZone === "UTC" ? undefined : options.timeZone
|
|
42
47
|
this.now = options.now ?? (() => new Date())
|
|
43
48
|
}
|
|
44
49
|
|
|
@@ -60,7 +65,11 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
60
65
|
// agree, or one unschedulable expression stops every other schedule in the project and
|
|
61
66
|
// crash-loops the scheduler role.
|
|
62
67
|
try {
|
|
63
|
-
const next = nextCronOccurrence(
|
|
68
|
+
const next = nextCronOccurrence(
|
|
69
|
+
schedule.trigger.expression,
|
|
70
|
+
now,
|
|
71
|
+
schedule.trigger.timezone ?? this.timeZone
|
|
72
|
+
)
|
|
64
73
|
this.nextOccurrences.set(schedule.id, next)
|
|
65
74
|
} catch (error) {
|
|
66
75
|
console.error(
|
|
@@ -178,7 +187,7 @@ export class SchedulerRuntime implements SchedulerController {
|
|
|
178
187
|
const next = nextCronOccurrence(
|
|
179
188
|
schedule.trigger.expression,
|
|
180
189
|
occurrenceAt,
|
|
181
|
-
schedule.trigger.timezone
|
|
190
|
+
schedule.trigger.timezone ?? this.timeZone
|
|
182
191
|
)
|
|
183
192
|
this.nextOccurrences.set(schedule.id, next)
|
|
184
193
|
} catch (error) {
|
package/src/security/builders.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { SecurityValidationError } from "./errors"
|
|
|
2
2
|
import type {
|
|
3
3
|
GrantDefinition,
|
|
4
4
|
GroupDefinition,
|
|
5
|
+
MarkingDefinition,
|
|
5
6
|
MembershipOperation,
|
|
6
7
|
MembershipPolicyDefinition,
|
|
7
8
|
RoleDefinition,
|
|
@@ -18,11 +19,18 @@ export interface DefineGroupOptions {
|
|
|
18
19
|
readonly description?: string
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
export interface DefineMarkingOptions {
|
|
23
|
+
readonly label?: string
|
|
24
|
+
readonly description?: string
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
export interface DefineRoleOptions {
|
|
22
28
|
readonly label?: string
|
|
23
29
|
readonly description?: string
|
|
24
30
|
readonly grantedTo: readonly GroupDefinition[]
|
|
25
|
-
readonly grants
|
|
31
|
+
readonly grants?: readonly GrantDefinition[]
|
|
32
|
+
/** Markings this role's members may read. */
|
|
33
|
+
readonly clearances?: readonly MarkingDefinition[]
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
export interface DefineMembershipPolicyOptions {
|
|
@@ -81,6 +89,37 @@ export function defineGroup<const TId extends string>(
|
|
|
81
89
|
}
|
|
82
90
|
}
|
|
83
91
|
|
|
92
|
+
/** Read the ids of marking definitions, rejecting anything else such as a bare id. */
|
|
93
|
+
export function markingIdsFrom(
|
|
94
|
+
markings: readonly MarkingDefinition[],
|
|
95
|
+
field: string
|
|
96
|
+
): readonly string[] {
|
|
97
|
+
return markings.map((marking) => {
|
|
98
|
+
if (!isRecord(marking) || marking.kind !== "marking") {
|
|
99
|
+
throw new SecurityValidationError(`[Sixb] ${field} must contain only marking definitions.`)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
assertNonEmptyString(marking.id, `${field} marking id`)
|
|
103
|
+
return marking.id
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function defineMarking<const TId extends string>(
|
|
108
|
+
id: TId,
|
|
109
|
+
options: DefineMarkingOptions = {}
|
|
110
|
+
): MarkingDefinition<TId> {
|
|
111
|
+
assertNonEmptyString(id, "Marking id")
|
|
112
|
+
assertOptionalString(options.label, `Marking '${id}' label`)
|
|
113
|
+
assertOptionalString(options.description, `Marking '${id}' description`)
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
kind: "marking",
|
|
117
|
+
id,
|
|
118
|
+
...(options.label !== undefined ? { label: options.label } : {}),
|
|
119
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
84
123
|
export function defineRole<const TId extends string>(
|
|
85
124
|
id: TId,
|
|
86
125
|
options: DefineRoleOptions
|
|
@@ -91,13 +130,17 @@ export function defineRole<const TId extends string>(
|
|
|
91
130
|
assertNonEmptyArray(options.grantedTo, `Role '${id}' grantedTo`)
|
|
92
131
|
|
|
93
132
|
const grantedToGroupIds = groupIdsFrom(options.grantedTo, `Role '${id}' grantedTo`)
|
|
133
|
+
const grants = options.grants ?? []
|
|
134
|
+
const clearances = markingIdsFrom(options.clearances ?? [], `Role '${id}' clearances`)
|
|
94
135
|
|
|
95
|
-
for (const grant of
|
|
136
|
+
for (const grant of grants) {
|
|
96
137
|
assertGrantDefinition(grant, `Role '${id}' grants`)
|
|
97
138
|
}
|
|
98
139
|
|
|
99
|
-
if (
|
|
100
|
-
throw new SecurityValidationError(
|
|
140
|
+
if (grants.length === 0 && clearances.length === 0) {
|
|
141
|
+
throw new SecurityValidationError(
|
|
142
|
+
`[Sixb] Role '${id}' must declare at least one grant or clearance.`
|
|
143
|
+
)
|
|
101
144
|
}
|
|
102
145
|
|
|
103
146
|
return {
|
|
@@ -106,7 +149,8 @@ export function defineRole<const TId extends string>(
|
|
|
106
149
|
...(options.label !== undefined ? { label: options.label } : {}),
|
|
107
150
|
...(options.description !== undefined ? { description: options.description } : {}),
|
|
108
151
|
grantedToGroupIds,
|
|
109
|
-
grants
|
|
152
|
+
grants,
|
|
153
|
+
...(clearances.length > 0 ? { clearances } : {}),
|
|
110
154
|
}
|
|
111
155
|
}
|
|
112
156
|
|
package/src/security/index.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { applications } from "./applications"
|
|
2
2
|
export type {
|
|
3
3
|
DefineGroupOptions,
|
|
4
|
+
DefineMarkingOptions,
|
|
4
5
|
DefineMembershipPolicyOptions,
|
|
5
6
|
DefineRoleOptions,
|
|
6
7
|
} from "./builders"
|
|
7
|
-
export { defineGroup, defineMembershipPolicy, defineRole } from "./builders"
|
|
8
|
+
export { defineGroup, defineMarking, defineMembershipPolicy, defineRole } from "./builders"
|
|
8
9
|
export { SecurityValidationError } from "./errors"
|
|
9
10
|
export type { BreadthSelector, BreadthTarget } from "./every"
|
|
10
11
|
export { every } from "./every"
|
|
@@ -31,10 +32,13 @@ export type {
|
|
|
31
32
|
GroupReference,
|
|
32
33
|
ManageGrant,
|
|
33
34
|
ManageGrantTarget,
|
|
35
|
+
MarkingDefinition,
|
|
34
36
|
MembershipOperation,
|
|
35
37
|
MembershipPolicyDefinition,
|
|
36
38
|
ObserveGrant,
|
|
37
39
|
ObserveGrantTarget,
|
|
40
|
+
RedactionReason,
|
|
41
|
+
Redactions,
|
|
38
42
|
RegisteredSecurityDefinitions,
|
|
39
43
|
RoleDefinition,
|
|
40
44
|
RunGrant,
|
|
@@ -50,6 +54,7 @@ export {
|
|
|
50
54
|
assertMembershipPolicyDefinition,
|
|
51
55
|
assertRoleDefinition,
|
|
52
56
|
isGroupDefinition,
|
|
57
|
+
isMarkingDefinition,
|
|
53
58
|
isMembershipPolicyDefinition,
|
|
54
59
|
isRoleDefinition,
|
|
55
60
|
validateSecurityDefinitionsAtStartup,
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import type { DatasetDefinition } from "../datasets/types"
|
|
2
|
+
import type { OntologyDefinitionCatalog } from "../ontology/registry"
|
|
3
|
+
import type { ObjectType, Property } from "../ontology/types"
|
|
4
|
+
import type { PipelineDefinition } from "../pipelines/types"
|
|
5
|
+
import type { ProjectionDefinitionCatalog } from "../projections/registry"
|
|
6
|
+
import type { ObjectProjectionDefinition } from "../projections/types"
|
|
7
|
+
import { SecurityValidationError } from "./errors"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Check every marking once at startup.
|
|
11
|
+
*
|
|
12
|
+
* A marking is enforced at read time from the property or column definition alone, so each rule
|
|
13
|
+
* here closes a path that would otherwise return the value unredacted or make enforcement
|
|
14
|
+
* ambiguous.
|
|
15
|
+
*/
|
|
16
|
+
export function validateMarkingsAtStartup(input: {
|
|
17
|
+
readonly markingIds: ReadonlySet<string>
|
|
18
|
+
readonly ontology: OntologyDefinitionCatalog
|
|
19
|
+
readonly datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
20
|
+
readonly pipelines: readonly PipelineDefinition[]
|
|
21
|
+
readonly projections: ProjectionDefinitionCatalog
|
|
22
|
+
}): void {
|
|
23
|
+
validatePropertyMarkings(input.ontology, input.markingIds)
|
|
24
|
+
validateColumnMarkings(input.datasetsById, input.markingIds)
|
|
25
|
+
rejectPipelineStepsOverMarkedColumns(input.pipelines, input.datasetsById)
|
|
26
|
+
validateProjectionMarkings(input.projections, input.ontology, input.datasetsById)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// ── Declarations ────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
function validatePropertyMarkings(
|
|
32
|
+
ontology: OntologyDefinitionCatalog,
|
|
33
|
+
markingIds: ReadonlySet<string>
|
|
34
|
+
): void {
|
|
35
|
+
for (const objectType of ontology.listObjectTypes()) {
|
|
36
|
+
for (const property of objectType.properties) {
|
|
37
|
+
validateProperty(objectType, property, markingIds)
|
|
38
|
+
}
|
|
39
|
+
for (const link of objectType.links) {
|
|
40
|
+
for (const property of link.properties ?? []) {
|
|
41
|
+
if (property.markings !== undefined) {
|
|
42
|
+
throw new SecurityValidationError(
|
|
43
|
+
`[Sixb] Link property '${objectType.id}.${link.id}.${property.id}' cannot carry markings. Mark object properties instead.`
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
assertSubtypeKeepsParentMarkings(objectType, ontology)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function validateProperty(
|
|
53
|
+
objectType: ObjectType,
|
|
54
|
+
property: Property,
|
|
55
|
+
markingIds: ReadonlySet<string>
|
|
56
|
+
): void {
|
|
57
|
+
if (property.markings === undefined) return
|
|
58
|
+
const path = `${objectType.id}.${property.id}`
|
|
59
|
+
assertMarkingList(property.markings, `Property '${path}'`, markingIds)
|
|
60
|
+
|
|
61
|
+
// The primary id identifies the object in every response, link, and event.
|
|
62
|
+
if (property.primary) {
|
|
63
|
+
throw new SecurityValidationError(
|
|
64
|
+
`[Sixb] Primary property '${path}' cannot carry markings: it identifies the object.`
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
// Telemetry values also flow through history reads and telemetry events, which do not
|
|
68
|
+
// enforce markings yet.
|
|
69
|
+
if (property.mode === "telemetry") {
|
|
70
|
+
throw new SecurityValidationError(
|
|
71
|
+
`[Sixb] Telemetry property '${path}' cannot carry markings yet.`
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* A subtype inherits its parent's properties and may redefine them. Subtype rows are returned by
|
|
78
|
+
* parent-type reads, so a redefinition that dropped a marking would declassify the parent's data.
|
|
79
|
+
*/
|
|
80
|
+
function assertSubtypeKeepsParentMarkings(
|
|
81
|
+
objectType: ObjectType,
|
|
82
|
+
ontology: OntologyDefinitionCatalog
|
|
83
|
+
): void {
|
|
84
|
+
if (!objectType.extends) return
|
|
85
|
+
const parent = ontology.getObjectTypeById(objectType.extends)
|
|
86
|
+
if (!parent) return
|
|
87
|
+
|
|
88
|
+
for (const parentProperty of parent.properties) {
|
|
89
|
+
const property = objectType.properties.find((candidate) => candidate.id === parentProperty.id)
|
|
90
|
+
const missing = missingMarkings(parentProperty.markings, property?.markings)
|
|
91
|
+
if (missing.length > 0) {
|
|
92
|
+
throw new SecurityValidationError(
|
|
93
|
+
`[Sixb] Property '${objectType.id}.${parentProperty.id}' must keep the markings of '${parent.id}.${parentProperty.id}': add ${missing.map((markingId) => `'${markingId}'`).join(", ")}.`
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function validateColumnMarkings(
|
|
100
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>,
|
|
101
|
+
markingIds: ReadonlySet<string>
|
|
102
|
+
): void {
|
|
103
|
+
for (const dataset of datasetsById.values()) {
|
|
104
|
+
for (const column of dataset.schema.columns) {
|
|
105
|
+
if (column.markings === undefined) continue
|
|
106
|
+
assertMarkingList(
|
|
107
|
+
column.markings,
|
|
108
|
+
`Dataset column '${dataset.id}.${column.name}'`,
|
|
109
|
+
markingIds
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function assertMarkingList(
|
|
116
|
+
markings: unknown,
|
|
117
|
+
subject: string,
|
|
118
|
+
markingIds: ReadonlySet<string>
|
|
119
|
+
): void {
|
|
120
|
+
if (!Array.isArray(markings) || markings.length === 0) {
|
|
121
|
+
throw new SecurityValidationError(
|
|
122
|
+
`[Sixb] ${subject} markings must be a non-empty list of marking ids.`
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
if (new Set(markings).size !== markings.length) {
|
|
126
|
+
throw new SecurityValidationError(`[Sixb] ${subject} lists the same marking twice.`)
|
|
127
|
+
}
|
|
128
|
+
for (const markingId of markings) {
|
|
129
|
+
if (typeof markingId !== "string" || !markingIds.has(markingId)) {
|
|
130
|
+
throw new SecurityValidationError(
|
|
131
|
+
`[Sixb] ${subject} references unknown marking '${String(markingId)}'. Add it to 'security/markings/' or pass it to createSixb({ markings }).`
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// ── Propagation ─────────────────────────────────────────────
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* A step's output inherits nothing from its inputs until Sixb can derive each output column's
|
|
141
|
+
* markings from the transform. Until then, reading a marked column would declassify it.
|
|
142
|
+
*/
|
|
143
|
+
function rejectPipelineStepsOverMarkedColumns(
|
|
144
|
+
pipelines: readonly PipelineDefinition[],
|
|
145
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
146
|
+
): void {
|
|
147
|
+
for (const pipeline of pipelines) {
|
|
148
|
+
for (const { step } of pipeline.graph.nodes) {
|
|
149
|
+
for (const input of Object.values(step.inputs)) {
|
|
150
|
+
const dataset = datasetsById.get(input.id)
|
|
151
|
+
const column = dataset?.schema.columns.find((candidate) => candidate.markings)
|
|
152
|
+
if (!dataset || !column) continue
|
|
153
|
+
throw new SecurityValidationError(
|
|
154
|
+
`[Sixb] Pipeline '${pipeline.id}' step '${step.id}' reads column '${dataset.id}.${column.name}', which carries ${markingList(column.markings)}. Pipeline steps cannot read marked columns yet.`
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Objects are read through the ontology, so each projected property declares the markings of its
|
|
163
|
+
* column: the ontology stays the reviewed contract of what each reader receives. Values that
|
|
164
|
+
* identify objects or key links are returned wherever the object or link is, and telemetry does
|
|
165
|
+
* not enforce markings yet, so those columns cannot carry markings.
|
|
166
|
+
*/
|
|
167
|
+
function validateProjectionMarkings(
|
|
168
|
+
projections: ProjectionDefinitionCatalog,
|
|
169
|
+
ontology: OntologyDefinitionCatalog,
|
|
170
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
171
|
+
): void {
|
|
172
|
+
for (const projection of projections.listObjects()) {
|
|
173
|
+
const objectType = ontology.getObjectTypeById(projection.objectTypeId)
|
|
174
|
+
if (objectType) validateObjectProjection(projection, objectType, datasetsById)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
for (const projection of projections.listLinks()) {
|
|
178
|
+
const role = `keys link '${projection.sourceObjectTypeId}.${projection.linkId}'`
|
|
179
|
+
for (const columnName of [projection.sourceField, projection.targetField]) {
|
|
180
|
+
assertUnmarkedColumn(projection, sourceColumn(projection, columnName, datasetsById), role)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
for (const projection of projections.listTelemetry()) {
|
|
185
|
+
const columnNames = [
|
|
186
|
+
projection.objectIdField,
|
|
187
|
+
projection.atField,
|
|
188
|
+
...Object.values(projection.properties).flatMap((mapping) =>
|
|
189
|
+
mapping.unitField === undefined
|
|
190
|
+
? [mapping.valueField]
|
|
191
|
+
: [mapping.valueField, mapping.unitField]
|
|
192
|
+
),
|
|
193
|
+
]
|
|
194
|
+
for (const columnName of columnNames) {
|
|
195
|
+
const column = sourceColumn(projection, columnName, datasetsById)
|
|
196
|
+
if (!column.markings) continue
|
|
197
|
+
throw new SecurityValidationError(
|
|
198
|
+
`[Sixb] Projection '${projection.id}' reads column '${column.path}', which carries ${markingList(column.markings)}. Telemetry projections cannot read marked columns yet.`
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function validateObjectProjection(
|
|
205
|
+
projection: ObjectProjectionDefinition,
|
|
206
|
+
objectType: ObjectType,
|
|
207
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
208
|
+
): void {
|
|
209
|
+
const keyRoles = objectProjectionKeyRoles(projection, objectType)
|
|
210
|
+
|
|
211
|
+
for (const [propertyId, columnName] of Object.entries(projection.properties)) {
|
|
212
|
+
const column = sourceColumn(projection, columnName, datasetsById)
|
|
213
|
+
const property = objectType.properties.find((candidate) => candidate.id === propertyId)
|
|
214
|
+
const path = `${objectType.id}.${propertyId}`
|
|
215
|
+
const keyRole = keyRoles.get(propertyId)
|
|
216
|
+
if (keyRole) {
|
|
217
|
+
assertUnmarkedColumn(projection, column, keyRole)
|
|
218
|
+
if (property?.markings) {
|
|
219
|
+
throw new SecurityValidationError(
|
|
220
|
+
`[Sixb] Projection '${projection.id}': property '${path}' ${keyRole} and cannot carry markings.`
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
continue
|
|
224
|
+
}
|
|
225
|
+
const missing = missingMarkings(column.markings, property?.markings)
|
|
226
|
+
if (missing.length > 0) {
|
|
227
|
+
throw new SecurityValidationError(
|
|
228
|
+
`[Sixb] Projection '${projection.id}': property '${path}' is projected from column '${column.path}', which carries ${markingList(column.markings)}. Add markings: ${markingList(missing)} to the property.`
|
|
229
|
+
)
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
for (const [linkId, link] of Object.entries(projection.links)) {
|
|
234
|
+
if (link.sourceField === undefined) continue
|
|
235
|
+
assertUnmarkedColumn(
|
|
236
|
+
projection,
|
|
237
|
+
sourceColumn(projection, link.sourceField, datasetsById),
|
|
238
|
+
`keys link '${objectType.id}.${linkId}'`
|
|
239
|
+
)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// The timestamp decides whether the source value or an app edit wins, which reveals how they
|
|
243
|
+
// compare.
|
|
244
|
+
const conflictResolution = projection.conflictResolution
|
|
245
|
+
if (conflictResolution?.strategy === "mostRecent") {
|
|
246
|
+
assertUnmarkedColumn(
|
|
247
|
+
projection,
|
|
248
|
+
sourceColumn(projection, conflictResolution.sourceTimestamp, datasetsById),
|
|
249
|
+
"decides which value wins under 'mostRecent'"
|
|
250
|
+
)
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/** Properties whose value becomes an object id or a link key, with the role they play. */
|
|
255
|
+
function objectProjectionKeyRoles(
|
|
256
|
+
projection: ObjectProjectionDefinition,
|
|
257
|
+
objectType: ObjectType
|
|
258
|
+
): ReadonlyMap<string, string> {
|
|
259
|
+
const roles = new Map<string, string>()
|
|
260
|
+
for (const property of objectType.properties) {
|
|
261
|
+
if (property.primary) roles.set(property.id, `becomes the id of '${objectType.id}'`)
|
|
262
|
+
}
|
|
263
|
+
for (const [linkId, link] of Object.entries(projection.links)) {
|
|
264
|
+
if (link.sourcePropertyId === undefined) continue
|
|
265
|
+
roles.set(link.sourcePropertyId, `keys link '${objectType.id}.${linkId}'`)
|
|
266
|
+
}
|
|
267
|
+
return roles
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
interface SourceColumn {
|
|
271
|
+
readonly path: string
|
|
272
|
+
readonly markings?: readonly string[]
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function sourceColumn(
|
|
276
|
+
projection: { readonly id: string; readonly datasetId: string },
|
|
277
|
+
columnName: string,
|
|
278
|
+
datasetsById: ReadonlyMap<string, DatasetDefinition>
|
|
279
|
+
): SourceColumn {
|
|
280
|
+
const column = datasetsById
|
|
281
|
+
.get(projection.datasetId)
|
|
282
|
+
?.schema.columns.find((candidate) => candidate.name === columnName)
|
|
283
|
+
// Projection validation runs first and resolves every mapped column.
|
|
284
|
+
if (!column) {
|
|
285
|
+
throw new Error(`[Sixb] Projection '${projection.id}' maps unknown column '${columnName}'.`)
|
|
286
|
+
}
|
|
287
|
+
return { path: `${projection.datasetId}.${columnName}`, markings: column.markings }
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function assertUnmarkedColumn(
|
|
291
|
+
projection: { readonly id: string },
|
|
292
|
+
column: SourceColumn,
|
|
293
|
+
role: string
|
|
294
|
+
): void {
|
|
295
|
+
if (!column.markings) return
|
|
296
|
+
throw new SecurityValidationError(
|
|
297
|
+
`[Sixb] Projection '${projection.id}': column '${column.path}' ${role} and cannot carry markings.`
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// ── Helpers ─────────────────────────────────────────────────
|
|
302
|
+
|
|
303
|
+
function missingMarkings(
|
|
304
|
+
required: readonly string[] | undefined,
|
|
305
|
+
declared: readonly string[] | undefined
|
|
306
|
+
): readonly string[] {
|
|
307
|
+
const present = new Set(declared ?? [])
|
|
308
|
+
return (required ?? []).filter((markingId) => !present.has(markingId))
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function markingList(markings: readonly string[] | undefined): string {
|
|
312
|
+
return `[${(markings ?? []).join(", ")}]`
|
|
313
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Redactions } from "./types"
|
|
2
|
+
|
|
3
|
+
/** List the values hidden from a reader that lacks a clearance for their markings. */
|
|
4
|
+
export function missingClearanceRedactions(ids: Iterable<string>): Redactions {
|
|
5
|
+
return Object.fromEntries([...ids].map((id) => [id, { reason: "missing_clearance" }] as const))
|
|
6
|
+
}
|