@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
|
@@ -3,7 +3,6 @@ import { createEventId } from "../materialization/identity"
|
|
|
3
3
|
import type {
|
|
4
4
|
MaterializationPlanHeader,
|
|
5
5
|
MaterializationWorkRecord,
|
|
6
|
-
OntologyMaterializationEvent,
|
|
7
6
|
OntologyStorage,
|
|
8
7
|
} from "../storage/ontology"
|
|
9
8
|
import type { Storage } from "../storage/types"
|
|
@@ -12,24 +11,6 @@ export interface OntologyContractStorage extends Storage {
|
|
|
12
11
|
readonly ontology: OntologyStorage
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
const emptyChunk = {
|
|
16
|
-
overrides: {
|
|
17
|
-
objects: { upserts: [], deletes: [] },
|
|
18
|
-
links: {
|
|
19
|
-
edges: { upserts: [], deletes: [] },
|
|
20
|
-
slots: { upserts: [], deletes: [] },
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
effective: {
|
|
24
|
-
objectUpserts: [],
|
|
25
|
-
objectDeletes: [],
|
|
26
|
-
linkUpserts: [],
|
|
27
|
-
linkDeletes: [],
|
|
28
|
-
},
|
|
29
|
-
timeseries: { pointUpserts: [] },
|
|
30
|
-
outbox: [],
|
|
31
|
-
} as const
|
|
32
|
-
|
|
33
14
|
/** The request executor `ensureContractExecution` records for a contract commit. */
|
|
34
15
|
export function contractExecutor(id: string) {
|
|
35
16
|
return { type: "request" as const, requestId: `contract-request:${id}` }
|
|
@@ -44,7 +25,6 @@ export function contractEditHeader(id: string): MaterializationPlanHeader {
|
|
|
44
25
|
requestHash: `hash:${id}`,
|
|
45
26
|
executionId: `contract-execution:${id}`,
|
|
46
27
|
origin: { kind: "runtime", requestId: id },
|
|
47
|
-
executor: contractExecutor(id),
|
|
48
28
|
ontologyRevision: "ontology-contract-revision",
|
|
49
29
|
intent: { kind: "edit", mode: "atomic", operationCount: 0 },
|
|
50
30
|
committedAt: CONTRACT_COMMITTED_AT,
|
|
@@ -78,6 +58,7 @@ export async function commitEmptyEdit(storage: OntologyContractStorage, id: stri
|
|
|
78
58
|
const header = contractEditHeader(id)
|
|
79
59
|
await ensureContractExecution(tx, header)
|
|
80
60
|
const session = await tx.ontology.materializations.begin(header)
|
|
61
|
+
await tx.ontology.materializations.apply({ session })
|
|
81
62
|
await tx.ontology.materializations.finalize({
|
|
82
63
|
session,
|
|
83
64
|
finalization: { sourceActivations: [], result: contractEditResult(id) },
|
|
@@ -101,11 +82,7 @@ export async function commitExactObject(
|
|
|
101
82
|
readonly requestedBy?: AuthorizablePrincipal
|
|
102
83
|
} = {}
|
|
103
84
|
): Promise<{ readonly eventId: string }> {
|
|
104
|
-
const
|
|
105
|
-
const header: MaterializationPlanHeader =
|
|
106
|
-
options.requestedBy === undefined
|
|
107
|
-
? defaultHeader
|
|
108
|
-
: { ...defaultHeader, commit: { ...defaultHeader.commit, requestedBy: options.requestedBy } }
|
|
85
|
+
const header = contractEditHeader(id)
|
|
109
86
|
const ref = { objectTypeId: "ContractDevice", primaryId: options.primaryId ?? id }
|
|
110
87
|
const row = {
|
|
111
88
|
ref,
|
|
@@ -117,30 +94,13 @@ export async function commitExactObject(
|
|
|
117
94
|
}
|
|
118
95
|
const exactWrite = { row, expected: { ref, exists: false as const } }
|
|
119
96
|
const draft = {
|
|
120
|
-
schemaVersion: 1 as const,
|
|
121
|
-
projectId: header.commit.projectId,
|
|
122
|
-
occurredAt: header.commit.committedAt,
|
|
123
|
-
correlationId: `contract-correlation:${id}`,
|
|
124
|
-
origin: header.commit.origin,
|
|
125
|
-
...(header.commit.requestedBy === undefined ? {} : { requestedBy: header.commit.requestedBy }),
|
|
126
|
-
executor: header.commit.executor,
|
|
127
|
-
commitId: id,
|
|
128
97
|
type: "object.created" as const,
|
|
129
|
-
topic: "objects" as const,
|
|
130
|
-
partitionKey: `${ref.objectTypeId}:${ref.primaryId}`,
|
|
131
98
|
payload: {
|
|
132
99
|
objectTypeId: ref.objectTypeId,
|
|
133
100
|
primaryId: ref.primaryId,
|
|
134
101
|
properties: row.properties,
|
|
135
|
-
propertyChanges: {},
|
|
136
102
|
},
|
|
137
103
|
}
|
|
138
|
-
const eventId = createEventId(header.commit.projectId, id, 0)
|
|
139
|
-
const envelope: OntologyMaterializationEvent = {
|
|
140
|
-
...draft,
|
|
141
|
-
id: eventId,
|
|
142
|
-
commitOrdinal: 0,
|
|
143
|
-
}
|
|
144
104
|
const work: readonly MaterializationWorkRecord[] = [
|
|
145
105
|
{
|
|
146
106
|
kind: "plan",
|
|
@@ -159,52 +119,12 @@ export async function commitExactObject(
|
|
|
159
119
|
]
|
|
160
120
|
|
|
161
121
|
await storage.transaction(async (tx) => {
|
|
162
|
-
await ensureContractExecution(tx, header)
|
|
122
|
+
await ensureContractExecution(tx, header, options.requestedBy)
|
|
163
123
|
const materializations = tx.ontology.materializations
|
|
164
124
|
const session = await materializations.begin(header)
|
|
165
125
|
await materializations.stageWork({ session, records: work })
|
|
166
126
|
|
|
167
|
-
|
|
168
|
-
for await (const page of materializations.streamWork({
|
|
169
|
-
session,
|
|
170
|
-
order: "apply",
|
|
171
|
-
pageRows: 1,
|
|
172
|
-
})) {
|
|
173
|
-
applyRecords.push(...page.records)
|
|
174
|
-
}
|
|
175
|
-
const objectUpserts = applyRecords.flatMap((record) =>
|
|
176
|
-
record.kind === "plan" && record.item.kind === "object-upsert" ? [record.item.value] : []
|
|
177
|
-
)
|
|
178
|
-
await materializations.applyChunk({
|
|
179
|
-
session,
|
|
180
|
-
chunk: {
|
|
181
|
-
...emptyChunk,
|
|
182
|
-
effective: { ...emptyChunk.effective, objectUpserts },
|
|
183
|
-
},
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
const eventRecords = []
|
|
187
|
-
for await (const page of materializations.streamWork({
|
|
188
|
-
session,
|
|
189
|
-
order: "event",
|
|
190
|
-
pageRows: 1,
|
|
191
|
-
})) {
|
|
192
|
-
eventRecords.push(...page.records)
|
|
193
|
-
}
|
|
194
|
-
await materializations.applyChunk({
|
|
195
|
-
session,
|
|
196
|
-
chunk: {
|
|
197
|
-
...emptyChunk,
|
|
198
|
-
outbox: eventRecords.map((record) => {
|
|
199
|
-
if (record.kind !== "event") throw new Error("Expected event work record.")
|
|
200
|
-
return {
|
|
201
|
-
envelope,
|
|
202
|
-
availableAt: header.commit.committedAt,
|
|
203
|
-
createdAt: header.commit.committedAt,
|
|
204
|
-
}
|
|
205
|
-
}),
|
|
206
|
-
},
|
|
207
|
-
})
|
|
127
|
+
await materializations.apply({ session })
|
|
208
128
|
if (!options.omitFinalize) {
|
|
209
129
|
await materializations.finalize({
|
|
210
130
|
session,
|
|
@@ -214,12 +134,17 @@ export async function commitExactObject(
|
|
|
214
134
|
if (options.throwAfterFinalize) throw new Error("contract rollback")
|
|
215
135
|
})
|
|
216
136
|
|
|
217
|
-
return { eventId }
|
|
137
|
+
return { eventId: createEventId(header.commit.projectId, id, 0) }
|
|
218
138
|
}
|
|
219
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Records the execution a contract commit runs under: a request, made on behalf of `requestedBy`
|
|
142
|
+
* when given. Its events read who asked and what wrote from this record.
|
|
143
|
+
*/
|
|
220
144
|
export async function ensureContractExecution(
|
|
221
145
|
storage: Pick<Storage, "executions">,
|
|
222
|
-
header: MaterializationPlanHeader
|
|
146
|
+
header: MaterializationPlanHeader,
|
|
147
|
+
requestedBy?: AuthorizablePrincipal
|
|
223
148
|
): Promise<void> {
|
|
224
149
|
if (
|
|
225
150
|
await storage.executions.getById({
|
|
@@ -229,7 +154,6 @@ export async function ensureContractExecution(
|
|
|
229
154
|
) {
|
|
230
155
|
return
|
|
231
156
|
}
|
|
232
|
-
const { requestedBy } = header.commit
|
|
233
157
|
await storage.executions.create({
|
|
234
158
|
id: header.commit.executionId,
|
|
235
159
|
projectId: header.commit.projectId,
|
|
@@ -149,7 +149,9 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
149
149
|
})
|
|
150
150
|
})
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
// Removal proof: rebuild an event's attribution from anything but its commit's execution; the
|
|
153
|
+
// requester and correlation id below no longer match.
|
|
154
|
+
test("attributes events to their commit's execution, which the commit does not copy", async () => {
|
|
153
155
|
await withStorage(async (storage) => {
|
|
154
156
|
// The requester is a real principal: SQL executions reference it by foreign key.
|
|
155
157
|
if (!storage.auth) throw new Error("The attribution contract requires auth storage.")
|
|
@@ -166,15 +168,10 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
166
168
|
projectId: "contract-project",
|
|
167
169
|
id: "attributed",
|
|
168
170
|
})
|
|
169
|
-
expect(attributed?.
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
projectId: "contract-project",
|
|
174
|
-
id: "unattributed",
|
|
175
|
-
})
|
|
176
|
-
expect(unattributed).not.toHaveProperty("requestedBy")
|
|
177
|
-
expect(unattributed?.executor).toEqual(contractExecutor("unattributed"))
|
|
171
|
+
expect(attributed?.executionId).toBe("contract-execution:attributed")
|
|
172
|
+
for (const copy of ["requestedBy", "executor", "correlationId", "actor"]) {
|
|
173
|
+
expect(attributed).not.toHaveProperty(copy)
|
|
174
|
+
}
|
|
178
175
|
|
|
179
176
|
const claimed = await storage.ontology.outbox.claim({
|
|
180
177
|
projectId: "contract-project",
|
|
@@ -185,10 +182,12 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
185
182
|
})
|
|
186
183
|
const envelopes = new Map(claimed.map((record) => [record.envelope.commitId, record]))
|
|
187
184
|
expect(envelopes.get("attributed")?.envelope).toMatchObject({
|
|
185
|
+
correlationId: "contract-correlation:attributed",
|
|
188
186
|
requestedBy,
|
|
189
187
|
executor: contractExecutor("attributed"),
|
|
190
188
|
})
|
|
191
189
|
const unattributedEnvelope = envelopes.get("unattributed")?.envelope
|
|
190
|
+
expect(unattributedEnvelope?.correlationId).toBe("contract-correlation:unattributed")
|
|
192
191
|
expect(unattributedEnvelope?.executor).toEqual(contractExecutor("unattributed"))
|
|
193
192
|
expect(unattributedEnvelope).not.toHaveProperty("requestedBy")
|
|
194
193
|
})
|
|
@@ -200,6 +199,7 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
200
199
|
await expect(
|
|
201
200
|
storage.transaction(async (tx) => {
|
|
202
201
|
const session = await tx.ontology.materializations.begin(header)
|
|
202
|
+
await tx.ontology.materializations.apply({ session })
|
|
203
203
|
await tx.ontology.materializations.finalize({
|
|
204
204
|
session,
|
|
205
205
|
finalization: {
|
|
@@ -460,9 +460,6 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
460
460
|
adoptedAt: "2026-01-01T00:02:10.000Z",
|
|
461
461
|
})
|
|
462
462
|
).toBeNull()
|
|
463
|
-
expect(
|
|
464
|
-
await storage.ontology.sources.summarizeTerminal({ projectId: "contract-project" })
|
|
465
|
-
).toEqual({ count: 1, oldestTerminalAt: "2026-01-01T00:02:00.000Z" })
|
|
466
463
|
|
|
467
464
|
// Superseded retention does not hold an abandoned candidate back.
|
|
468
465
|
expect(
|
|
@@ -482,8 +479,8 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
482
479
|
await storage.ontology.sources.purgeAbandoned({ projectId: "contract-project", limit: 1 })
|
|
483
480
|
).toEqual({ rowsDeleted: 0, materializationsDeleted: 1 })
|
|
484
481
|
expect(
|
|
485
|
-
await storage.ontology.sources.
|
|
486
|
-
).toEqual({
|
|
482
|
+
await storage.ontology.sources.purgeAbandoned({ projectId: "contract-project", limit: 1 })
|
|
483
|
+
).toEqual({ rowsDeleted: 0, materializationsDeleted: 0 })
|
|
487
484
|
})
|
|
488
485
|
})
|
|
489
486
|
|
|
@@ -603,6 +600,7 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
603
600
|
origin: { kind: "projection", projectionRunId: first.execution.projectionRunId },
|
|
604
601
|
})
|
|
605
602
|
).toMatchObject({ id: "commit-source-one" })
|
|
603
|
+
// An active candidate has no plan to open again.
|
|
606
604
|
await expect(
|
|
607
605
|
activateEmptyCandidate(
|
|
608
606
|
storage,
|
|
@@ -611,6 +609,39 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
611
609
|
"duplicate-projection-origin",
|
|
612
610
|
"2026-01-03T01:00:00.000Z"
|
|
613
611
|
)
|
|
612
|
+
).rejects.toMatchObject({ kind: "source-materialization" })
|
|
613
|
+
// Another candidate of the same run reaches its commit, which repeats the run's origin.
|
|
614
|
+
const again = { ...first, materializationId: "candidate-one-again" }
|
|
615
|
+
await storage.ontology.sources.beginMaterialization({
|
|
616
|
+
projectId: "contract-project",
|
|
617
|
+
source: again.source,
|
|
618
|
+
materializationId: again.materializationId,
|
|
619
|
+
execution: again.execution,
|
|
620
|
+
projectionKind: "object",
|
|
621
|
+
protocol: "replacement",
|
|
622
|
+
datasetVersion: again.identity.datasetVersion,
|
|
623
|
+
projectionRevision: again.identity.projectionRevision,
|
|
624
|
+
ownershipHash: again.identity.ownershipHash,
|
|
625
|
+
ontologyRevision: again.identity.ontologyRevision,
|
|
626
|
+
createdAt: "2026-01-03T00:30:00.000Z",
|
|
627
|
+
})
|
|
628
|
+
await storage.ontology.sources.markReady({
|
|
629
|
+
projectId: "contract-project",
|
|
630
|
+
source: again.source,
|
|
631
|
+
materializationId: again.materializationId,
|
|
632
|
+
execution: again.execution,
|
|
633
|
+
rootCount: 0,
|
|
634
|
+
assertionCount: 0,
|
|
635
|
+
readyAt: "2026-01-03T00:31:00.000Z",
|
|
636
|
+
})
|
|
637
|
+
await expect(
|
|
638
|
+
activateEmptyCandidate(
|
|
639
|
+
storage,
|
|
640
|
+
again,
|
|
641
|
+
activeOne,
|
|
642
|
+
"duplicate-projection-origin",
|
|
643
|
+
"2026-01-03T01:00:00.000Z"
|
|
644
|
+
)
|
|
614
645
|
).rejects.toMatchObject({ kind: "run-correlation" })
|
|
615
646
|
|
|
616
647
|
const left = await createReadyEmptyCandidate(storage, "run-left", "candidate-left", "02")
|
|
@@ -928,6 +959,7 @@ export function runOntologyStorageContractSuite<TStorage extends OntologyStorage
|
|
|
928
959
|
}
|
|
929
960
|
const header = telemetryHeader(identity, run.run.id, run.run.executionId)
|
|
930
961
|
const session = await tx.ontology.materializations.begin(header)
|
|
962
|
+
await tx.ontology.materializations.apply({ session })
|
|
931
963
|
await tx.ontology.materializations.finalize({
|
|
932
964
|
session,
|
|
933
965
|
finalization: {
|
|
@@ -1055,12 +1087,6 @@ async function activateEmptyCandidate(
|
|
|
1055
1087
|
datasetId: candidate.identity.datasetVersion.datasetId,
|
|
1056
1088
|
datasetVersionId: candidate.identity.datasetVersion.versionId,
|
|
1057
1089
|
},
|
|
1058
|
-
executor: {
|
|
1059
|
-
type: "primitive",
|
|
1060
|
-
kind: "projection",
|
|
1061
|
-
id: candidate.source.projectionId,
|
|
1062
|
-
runId: candidate.execution.projectionRunId,
|
|
1063
|
-
},
|
|
1064
1090
|
ontologyRevision: candidate.identity.ontologyRevision,
|
|
1065
1091
|
projectionRevision: candidate.identity.projectionRevision,
|
|
1066
1092
|
ownershipHash: candidate.identity.ownershipHash,
|
|
@@ -1099,6 +1125,22 @@ async function activateEmptyCandidate(
|
|
|
1099
1125
|
counts: emptyProjectionCounts,
|
|
1100
1126
|
},
|
|
1101
1127
|
}
|
|
1128
|
+
const plan = {
|
|
1129
|
+
projectId: header.commit.projectId,
|
|
1130
|
+
source: candidate.source,
|
|
1131
|
+
materializationId: candidate.materializationId,
|
|
1132
|
+
execution: candidate.execution,
|
|
1133
|
+
}
|
|
1134
|
+
await storage.ontology.replacementPlans.open({ ...plan, commit: header.commit })
|
|
1135
|
+
for (const entityKind of ["object", "link"] as const) {
|
|
1136
|
+
for await (const _page of storage.ontology.replacementPlans.streamState({
|
|
1137
|
+
...plan,
|
|
1138
|
+
entityKind,
|
|
1139
|
+
pageRows: 1,
|
|
1140
|
+
})) {
|
|
1141
|
+
// Empty output intentionally has no identities to plan.
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1102
1144
|
await storage.transaction(async (tx) => {
|
|
1103
1145
|
if (!tx.projectionRuns) {
|
|
1104
1146
|
throw new Error("Contract transaction omitted required storage facades.")
|
|
@@ -1109,18 +1151,13 @@ async function activateEmptyCandidate(
|
|
|
1109
1151
|
identity: candidate.identity,
|
|
1110
1152
|
executionToken: candidate.execution.executionToken,
|
|
1111
1153
|
})
|
|
1112
|
-
const
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
pageRows: 1,
|
|
1120
|
-
})) {
|
|
1121
|
-
// Empty output intentionally has no classifications or exact writes.
|
|
1122
|
-
}
|
|
1123
|
-
}
|
|
1154
|
+
const status = await tx.ontology.replacementPlans.refresh(plan)
|
|
1155
|
+
if (!status.fresh) throw new Error("An empty plan has nothing to plan again.")
|
|
1156
|
+
const session = await tx.ontology.materializations.begin({
|
|
1157
|
+
...header,
|
|
1158
|
+
plan: { source: candidate.source, materializationId: candidate.materializationId },
|
|
1159
|
+
})
|
|
1160
|
+
await tx.ontology.materializations.apply({ session })
|
|
1124
1161
|
await tx.ontology.materializations.finalize({ session, finalization })
|
|
1125
1162
|
})
|
|
1126
1163
|
}
|
|
@@ -1149,12 +1186,6 @@ function telemetryHeader(
|
|
|
1149
1186
|
batchOrdinal: 0,
|
|
1150
1187
|
},
|
|
1151
1188
|
},
|
|
1152
|
-
executor: {
|
|
1153
|
-
type: "primitive",
|
|
1154
|
-
kind: "projection",
|
|
1155
|
-
id: identity.projectionId,
|
|
1156
|
-
runId: projectionRunId,
|
|
1157
|
-
},
|
|
1158
1189
|
ontologyRevision: identity.ontologyRevision,
|
|
1159
1190
|
projectionRevision: identity.projectionRevision,
|
|
1160
1191
|
ownershipHash: identity.ownershipHash,
|
|
@@ -155,6 +155,20 @@ export function runProjectionRunStorageContractSuite<TStorage extends Projection
|
|
|
155
155
|
status: "failed",
|
|
156
156
|
error: { code: "queue.enqueue_failed", message: "queue unavailable" },
|
|
157
157
|
})
|
|
158
|
+
const failedWith = (errorCodes: ProjectionRunFailureCode[]) =>
|
|
159
|
+
context.projectionRuns.list({
|
|
160
|
+
projectId: input.projectId,
|
|
161
|
+
statuses: ["failed"],
|
|
162
|
+
errorCodes,
|
|
163
|
+
})
|
|
164
|
+
await expect(failedWith(["queue.enqueue_failed"])).resolves.toMatchObject({
|
|
165
|
+
runs: [{ id: input.id }],
|
|
166
|
+
total: 1,
|
|
167
|
+
})
|
|
168
|
+
await expect(failedWith(["projection.execution_failed"])).resolves.toMatchObject({
|
|
169
|
+
total: 0,
|
|
170
|
+
})
|
|
171
|
+
await expect(failedWith([])).resolves.toMatchObject({ total: 0 })
|
|
158
172
|
|
|
159
173
|
const requeued = await context.projectionRuns.queue(admission)
|
|
160
174
|
expect(requeued).toMatchObject({
|
|
@@ -278,6 +278,65 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
|
|
|
278
278
|
})
|
|
279
279
|
})
|
|
280
280
|
|
|
281
|
+
test("with a signal, waits for work and wakes when a job is enqueued", async () => {
|
|
282
|
+
await withQueues(async (queues) => {
|
|
283
|
+
let settled = false
|
|
284
|
+
const claim = queues.syncRuns
|
|
285
|
+
.claim({
|
|
286
|
+
projectId: "project-a",
|
|
287
|
+
workerId: "worker-1",
|
|
288
|
+
signal: AbortSignal.timeout(4_000),
|
|
289
|
+
})
|
|
290
|
+
.finally(() => {
|
|
291
|
+
settled = true
|
|
292
|
+
})
|
|
293
|
+
await Bun.sleep(50)
|
|
294
|
+
expect(settled).toBe(false)
|
|
295
|
+
|
|
296
|
+
await queues.syncRuns.enqueue({
|
|
297
|
+
projectId: "project-a",
|
|
298
|
+
jobs: [{ type: "sync.run.requested", payload: { runId: "s-1" } }],
|
|
299
|
+
})
|
|
300
|
+
|
|
301
|
+
expect((await claim).map((claimed) => claimed.job.payload.runId)).toEqual(["s-1"])
|
|
302
|
+
})
|
|
303
|
+
})
|
|
304
|
+
|
|
305
|
+
test("with a signal, wakes when a delayed job comes due", async () => {
|
|
306
|
+
await withQueues(async (queues) => {
|
|
307
|
+
const availableAt = new Date(Date.now() + shortLeaseMs).toISOString()
|
|
308
|
+
await queues.syncRuns.enqueue({
|
|
309
|
+
projectId: "project-a",
|
|
310
|
+
jobs: [{ type: "sync.run.requested", payload: { runId: "s-1" }, availableAt }],
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
const claimed = await queues.syncRuns.claim({
|
|
314
|
+
projectId: "project-a",
|
|
315
|
+
workerId: "worker-1",
|
|
316
|
+
signal: AbortSignal.timeout(4_000),
|
|
317
|
+
})
|
|
318
|
+
|
|
319
|
+
expect(claimed).toHaveLength(1)
|
|
320
|
+
expect(Date.now()).toBeGreaterThanOrEqual(Date.parse(availableAt))
|
|
321
|
+
})
|
|
322
|
+
})
|
|
323
|
+
|
|
324
|
+
// A provider may finish a blocking read before it sees the abort; BullMQ's lasts up to 5s.
|
|
325
|
+
test("with a signal, returns empty once the signal aborts", async () => {
|
|
326
|
+
await withQueues(async (queues) => {
|
|
327
|
+
const waiting = new AbortController()
|
|
328
|
+
const claim = queues.syncRuns.claim({
|
|
329
|
+
projectId: "project-a",
|
|
330
|
+
workerId: "worker-1",
|
|
331
|
+
signal: waiting.signal,
|
|
332
|
+
})
|
|
333
|
+
await Bun.sleep(20)
|
|
334
|
+
waiting.abort()
|
|
335
|
+
|
|
336
|
+
expect(await claim).toEqual([])
|
|
337
|
+
})
|
|
338
|
+
}, 10_000)
|
|
339
|
+
|
|
281
340
|
test("isolates jobs across distinct projectIds", async () => {
|
|
282
341
|
await withQueues(async (queues) => {
|
|
283
342
|
await queues.syncRuns.enqueue({
|
|
@@ -26,7 +26,6 @@ export interface QueueWorkerConfig<
|
|
|
26
26
|
readonly workerId: string
|
|
27
27
|
readonly leaseMs?: number
|
|
28
28
|
readonly claimLimit?: number
|
|
29
|
-
readonly idlePollMs?: number
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
/**
|
|
@@ -48,7 +47,7 @@ export type QueueWorkerFailureDecision<TFailureCode extends SixbErrorCode = neve
|
|
|
48
47
|
|
|
49
48
|
const DEFAULT_LEASE_MS = 15 * 60_000
|
|
50
49
|
const DEFAULT_CLAIM_LIMIT = 1
|
|
51
|
-
const
|
|
50
|
+
const CLAIM_FAILURE_DELAY_MS = 1_000
|
|
52
51
|
const MAX_CONSECUTIVE_CLAIM_FAILURES = 5
|
|
53
52
|
|
|
54
53
|
export abstract class QueueWorker<
|
|
@@ -56,6 +55,8 @@ export abstract class QueueWorker<
|
|
|
56
55
|
TFailureCodes extends QueueWorkerFailureCodes,
|
|
57
56
|
> extends Worker {
|
|
58
57
|
protected readonly config: Required<QueueWorkerConfig<TJob, TFailureCodes>>
|
|
58
|
+
/** Pause after a failed claim. Overridable so tests do not wait out real backoffs. */
|
|
59
|
+
protected readonly claimFailureDelayMs: number = CLAIM_FAILURE_DELAY_MS
|
|
59
60
|
private consecutiveClaimFailures = 0
|
|
60
61
|
|
|
61
62
|
constructor(config: QueueWorkerConfig<TJob, TFailureCodes>) {
|
|
@@ -67,7 +68,6 @@ export abstract class QueueWorker<
|
|
|
67
68
|
workerId: config.workerId,
|
|
68
69
|
leaseMs: config.leaseMs ?? DEFAULT_LEASE_MS,
|
|
69
70
|
claimLimit: normalizeClaimLimit(config.claimLimit),
|
|
70
|
-
idlePollMs: config.idlePollMs ?? DEFAULT_IDLE_POLL_MS,
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -79,6 +79,9 @@ export abstract class QueueWorker<
|
|
|
79
79
|
protected async run(signal: AbortSignal): Promise<void> {
|
|
80
80
|
const inFlight = new Set<Promise<void>>()
|
|
81
81
|
let runError: unknown = null
|
|
82
|
+
// A claim waits for work, so a failed job must also end the wait it would otherwise sit in.
|
|
83
|
+
const failed = new AbortController()
|
|
84
|
+
const claimSignal = AbortSignal.any([signal, failed.signal])
|
|
82
85
|
|
|
83
86
|
try {
|
|
84
87
|
while (!signal.aborted && !runError) {
|
|
@@ -90,11 +93,12 @@ export abstract class QueueWorker<
|
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
const capacity = this.config.claimLimit - inFlight.size
|
|
93
|
-
const claimed = await this.
|
|
96
|
+
const claimed = await this.claim(claimSignal, capacity)
|
|
94
97
|
for (const claimedJob of claimed) {
|
|
95
98
|
const promise = this.handle(claimedJob, signal)
|
|
96
99
|
.catch((error) => {
|
|
97
100
|
runError ??= error
|
|
101
|
+
failed.abort()
|
|
98
102
|
})
|
|
99
103
|
.finally(() => {
|
|
100
104
|
inFlight.delete(promise)
|
|
@@ -137,23 +141,22 @@ export abstract class QueueWorker<
|
|
|
137
141
|
return { kind: "retry" }
|
|
138
142
|
}
|
|
139
143
|
|
|
140
|
-
private async
|
|
144
|
+
private async claim(
|
|
141
145
|
signal: AbortSignal,
|
|
142
146
|
limit: number
|
|
143
147
|
): Promise<readonly ClaimedQueueJob<TJob>[]> {
|
|
144
|
-
const { projectId, queue, workerId, leaseMs
|
|
148
|
+
const { projectId, queue, workerId, leaseMs } = this.config
|
|
145
149
|
|
|
146
150
|
try {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (claimed.length === 0) {
|
|
155
|
-
await sleep(idlePollMs, signal).catch(() => {})
|
|
151
|
+
// The provider waits until it has work or `signal` aborts, so there is no idle loop here.
|
|
152
|
+
const claimed = await queue.claim({ projectId, workerId, limit, leaseMs, signal })
|
|
153
|
+
if (claimed.length === 0 && !signal.aborted) {
|
|
154
|
+
// A provider that ignores the signal would otherwise spin this loop on a whole core.
|
|
155
|
+
throw new Error(
|
|
156
|
+
"[SixbQueueWorker] Queue claim returned no jobs before its signal aborted; the queue provider contract says claim must wait for work until its signal aborts."
|
|
157
|
+
)
|
|
156
158
|
}
|
|
159
|
+
this.consecutiveClaimFailures = 0
|
|
157
160
|
return claimed
|
|
158
161
|
} catch (error) {
|
|
159
162
|
if (signal.aborted) return []
|
|
@@ -165,7 +168,7 @@ export abstract class QueueWorker<
|
|
|
165
168
|
{ cause: error }
|
|
166
169
|
)
|
|
167
170
|
}
|
|
168
|
-
await sleep(
|
|
171
|
+
await sleep(this.claimFailureDelayMs, signal).catch(() => {})
|
|
169
172
|
return []
|
|
170
173
|
}
|
|
171
174
|
}
|
|
@@ -136,6 +136,7 @@ export function defineAgentStep<const TId extends string>(
|
|
|
136
136
|
const { model, reasoning, instructions } = config
|
|
137
137
|
const groupIds = groupIdsFromAgentStepConfig(id, config)
|
|
138
138
|
const toolNames = toolNamesFromAgentStepConfig(id, config)
|
|
139
|
+
const skillNames = skillNamesFromAgentStepConfig(id, config)
|
|
139
140
|
|
|
140
141
|
return {
|
|
141
142
|
input(input: RuntimeWorkflowInput): unknown {
|
|
@@ -154,6 +155,7 @@ export function defineAgentStep<const TId extends string>(
|
|
|
154
155
|
instructions,
|
|
155
156
|
groupIds,
|
|
156
157
|
toolNames,
|
|
158
|
+
skillNames,
|
|
157
159
|
input,
|
|
158
160
|
output,
|
|
159
161
|
prompt,
|
|
@@ -208,9 +210,30 @@ function toolNamesFromAgentStepConfig(
|
|
|
208
210
|
return Object.freeze(toolNames)
|
|
209
211
|
}
|
|
210
212
|
|
|
213
|
+
function skillNamesFromAgentStepConfig(
|
|
214
|
+
stepId: string,
|
|
215
|
+
config: DefineAgentStepConfig
|
|
216
|
+
): readonly string[] {
|
|
217
|
+
if (config.skills !== undefined && !Array.isArray(config.skills)) {
|
|
218
|
+
throw new WorkflowDefinitionError(
|
|
219
|
+
`Agent step "${stepId}" skills must be an array of Agent Skill names.`
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
const skillNames = Array.from(config.skills ?? [], (name) => {
|
|
223
|
+
if (typeof name !== "string" || !name.trim()) {
|
|
224
|
+
throw new WorkflowDefinitionError(
|
|
225
|
+
`Agent step "${stepId}" skills must contain only non-empty Agent Skill names.`
|
|
226
|
+
)
|
|
227
|
+
}
|
|
228
|
+
return name
|
|
229
|
+
})
|
|
230
|
+
assertUniqueAgentStepValues(stepId, "skill", skillNames)
|
|
231
|
+
return Object.freeze(skillNames)
|
|
232
|
+
}
|
|
233
|
+
|
|
211
234
|
function assertUniqueAgentStepValues(
|
|
212
235
|
stepId: string,
|
|
213
|
-
kind: "group" | "tool",
|
|
236
|
+
kind: "group" | "tool" | "skill",
|
|
214
237
|
values: readonly string[]
|
|
215
238
|
): void {
|
|
216
239
|
const seen = new Set<string>()
|
package/src/workflows/request.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
executionRecordInputFromRuntime,
|
|
7
7
|
} from "../execution/durable"
|
|
8
8
|
import type { ExecutionContext } from "../execution/types"
|
|
9
|
+
import { assertValidFileRefs } from "../ontology/validation"
|
|
9
10
|
import type { SixbRuntimeContext } from "../runtime/types"
|
|
10
11
|
import { dispatchWorkflowRun } from "./run-dispatch"
|
|
11
12
|
import type { WorkflowDefinition, WorkflowRunSource } from "./types"
|
|
@@ -49,6 +50,8 @@ export async function requestWorkflowRun(
|
|
|
49
50
|
authorization: runtime.runtimeAuthorization,
|
|
50
51
|
})
|
|
51
52
|
assertAuthorized(runtime, { kind: "workflow.run", workflowId: workflow.id })
|
|
53
|
+
// Only caller input: automatic runs carry stored data, which may predate the rule.
|
|
54
|
+
assertValidFileRefs(options.input, `Workflow "${workflow.id}" input`)
|
|
52
55
|
return dispatchWorkflowRun({
|
|
53
56
|
errorReporterHost: runtime,
|
|
54
57
|
projectId: runtime.projectId,
|
package/src/workflows/types.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type {
|
|
|
6
6
|
} from "../actions"
|
|
7
7
|
import type { ActionsRuntime } from "../actions/execution"
|
|
8
8
|
import type { AgentRuntime } from "../agents/execution"
|
|
9
|
-
import type {
|
|
9
|
+
import type { AgentReasoning, AgentToolDefinition } from "../agents/types"
|
|
10
10
|
import type { Principal } from "../auth"
|
|
11
11
|
import type { BlobsRuntime } from "../blob-storage/execution"
|
|
12
12
|
import type { ConnectorRuntime } from "../connectors/execution"
|
|
@@ -140,11 +140,13 @@ export type AgentStepPrompt<TInput extends Record<string, unknown>> = (
|
|
|
140
140
|
/** Runtime configuration owned directly by a workflow Agent step. */
|
|
141
141
|
export interface DefineAgentStepConfig {
|
|
142
142
|
readonly model?: LanguageModel
|
|
143
|
-
readonly reasoning?:
|
|
143
|
+
readonly reasoning?: AgentReasoning
|
|
144
144
|
readonly instructions: string
|
|
145
145
|
readonly groups?: readonly GroupDefinition[]
|
|
146
146
|
/** Project tools this workflow task may call. Defaults to none. */
|
|
147
147
|
readonly tools?: readonly AgentToolDefinition[]
|
|
148
|
+
/** Names of the project Agent Skills (`skills/<name>/`) this workflow task may use. Defaults to none. */
|
|
149
|
+
readonly skills?: readonly string[]
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
export interface AgentStepDefinition<
|
|
@@ -157,10 +159,11 @@ export interface AgentStepDefinition<
|
|
|
157
159
|
readonly kind: "agentStep"
|
|
158
160
|
readonly id: TId
|
|
159
161
|
readonly model?: LanguageModel
|
|
160
|
-
readonly reasoning?:
|
|
162
|
+
readonly reasoning?: AgentReasoning
|
|
161
163
|
readonly instructions: string
|
|
162
164
|
readonly groupIds: readonly string[]
|
|
163
165
|
readonly toolNames: readonly string[]
|
|
166
|
+
readonly skillNames: readonly string[]
|
|
164
167
|
readonly input: TInput
|
|
165
168
|
readonly output: TOutput
|
|
166
169
|
readonly prompt: AgentStepPrompt<Record<string, unknown>>
|