@sixb/core 0.1.12 → 0.1.13
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.d.ts +2 -2
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +28 -26
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +14 -16
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-dispatch.d.ts +2 -0
- package/dist/actions/run-dispatch.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +18 -31
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/types/params.d.ts +2 -1
- package/dist/actions/types/params.d.ts.map +1 -1
- package/dist/actions/worker.js +1 -1
- package/dist/agents/index.js +41 -39
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/streams/index.js +2 -2
- package/dist/agents/streams/internal.js +2 -2
- package/dist/assert-never.d.ts +6 -0
- package/dist/assert-never.d.ts.map +1 -0
- package/dist/auth/client-address.d.ts +3 -0
- package/dist/auth/client-address.d.ts.map +1 -0
- package/dist/auth/csrf.d.ts +5 -1
- package/dist/auth/csrf.d.ts.map +1 -1
- package/dist/auth/index.d.ts +3 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -8
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +58 -41
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/session-cache.d.ts +10 -3
- package/dist/auth/session-cache.d.ts.map +1 -1
- package/dist/auth/sessions.d.ts +12 -0
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/strategy.js +1 -1
- package/dist/auth/types.d.ts +8 -15
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +3 -3
- package/dist/bootstrap/index.d.ts +1 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +45 -43
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/ontology-type-manifest.d.ts +8 -0
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-q5gz3g2j.js → chunk-0321g649.js} +2 -16
- package/dist/{chunk-q5gz3g2j.js.map → chunk-0321g649.js.map} +2 -2
- package/dist/{chunk-e1f1sqba.js → chunk-04h4t2b5.js} +3 -3
- package/dist/{chunk-y3ev53cq.js → chunk-2fv8sajb.js} +2 -2
- package/dist/{chunk-3bnt2wna.js → chunk-2hbhn1ff.js} +1 -1
- package/dist/{chunk-eyjzgav0.js → chunk-3nx8vj5a.js} +6 -4
- package/dist/chunk-3nx8vj5a.js.map +12 -0
- package/dist/{chunk-5tetw4hn.js → chunk-4tnrzqqh.js} +1 -1
- package/dist/{chunk-g50nxqs5.js → chunk-63fp9x3q.js} +63 -20
- package/dist/chunk-63fp9x3q.js.map +20 -0
- package/dist/{chunk-qm535afa.js → chunk-693f3zn8.js} +66 -24
- package/dist/chunk-693f3zn8.js.map +15 -0
- package/dist/{chunk-7zgecwy1.js → chunk-6x0pqh32.js} +12 -1
- package/dist/{chunk-7zgecwy1.js.map → chunk-6x0pqh32.js.map} +3 -3
- package/dist/{chunk-6ma8dvzc.js → chunk-898y24dd.js} +49 -42
- package/dist/chunk-898y24dd.js.map +15 -0
- package/dist/{chunk-7qnvhtcd.js → chunk-91wthfwe.js} +17 -17
- package/dist/{chunk-7qnvhtcd.js.map → chunk-91wthfwe.js.map} +5 -5
- package/dist/chunk-96yw3pwd.js.map +2 -2
- package/dist/{chunk-2cxv584m.js → chunk-9pfw47qx.js} +309 -204
- package/dist/chunk-9pfw47qx.js.map +44 -0
- package/dist/{chunk-4k53sm9e.js → chunk-a0073121.js} +59 -59
- package/dist/{chunk-4k53sm9e.js.map → chunk-a0073121.js.map} +5 -5
- package/dist/{chunk-jjwhy3rs.js → chunk-a69fkrtr.js} +5 -5
- package/dist/{chunk-y1ahv8b7.js → chunk-bdhfn0ww.js} +1 -1
- package/dist/{chunk-4ph94nhd.js → chunk-bep5rrdq.js} +2 -2
- package/dist/{chunk-kept9cdd.js → chunk-bxx3ms5t.js} +1 -1
- package/dist/{chunk-xtfryrfb.js → chunk-cbn96bve.js} +2 -2
- package/dist/{chunk-nzsy3xrp.js → chunk-cvrbhvtr.js} +69 -44
- package/dist/{chunk-nzsy3xrp.js.map → chunk-cvrbhvtr.js.map} +7 -7
- package/dist/{chunk-vsg0g7h9.js → chunk-d8yes9yx.js} +304 -45
- package/dist/chunk-d8yes9yx.js.map +20 -0
- package/dist/{chunk-tg4g4zh0.js → chunk-darm7eeg.js} +9 -9
- package/dist/{chunk-tg4g4zh0.js.map → chunk-darm7eeg.js.map} +3 -3
- package/dist/{chunk-vpxss818.js → chunk-drz59ve0.js} +9 -8
- package/dist/chunk-drz59ve0.js.map +10 -0
- package/dist/{chunk-7c2g3sz9.js → chunk-dsfw1bdr.js} +5 -5
- package/dist/{chunk-7c2g3sz9.js.map → chunk-dsfw1bdr.js.map} +1 -1
- package/dist/{chunk-p6r1ex7t.js → chunk-ffwvdgk1.js} +5 -13
- package/dist/chunk-ffwvdgk1.js.map +10 -0
- package/dist/{chunk-r5zythxp.js → chunk-gbcrz0gr.js} +7 -7
- package/dist/{chunk-ybhz3j9g.js → chunk-gc226ten.js} +104 -148
- package/dist/{chunk-ybhz3j9g.js.map → chunk-gc226ten.js.map} +7 -8
- package/dist/{chunk-3ghw2t5q.js → chunk-gmt22nxx.js} +10 -16
- package/dist/chunk-gmt22nxx.js.map +10 -0
- package/dist/chunk-h89wz928.js +42 -0
- package/dist/chunk-h89wz928.js.map +10 -0
- package/dist/{chunk-hkw8rykk.js → chunk-ht4a7mjg.js} +74 -4
- package/dist/chunk-ht4a7mjg.js.map +15 -0
- package/dist/{chunk-t7dzd1tm.js → chunk-jhyc777j.js} +2 -2
- package/dist/{chunk-xn686q2e.js → chunk-jmwy25mf.js} +75 -57
- package/dist/{chunk-xn686q2e.js.map → chunk-jmwy25mf.js.map} +3 -3
- package/dist/{chunk-f06sf7rr.js → chunk-k4kkp58d.js} +18 -5
- package/dist/chunk-k4kkp58d.js.map +11 -0
- package/dist/{chunk-2h63nrde.js → chunk-ky7zpbtt.js} +5 -7
- package/dist/{chunk-2h63nrde.js.map → chunk-ky7zpbtt.js.map} +3 -4
- package/dist/chunk-m4ehq95f.js +9 -0
- package/dist/chunk-m4ehq95f.js.map +10 -0
- package/dist/{chunk-0mza4xb2.js → chunk-m8zkvep1.js} +2 -2
- package/dist/{chunk-b768c93y.js → chunk-mf6hwpzh.js} +83 -28
- package/dist/{chunk-b768c93y.js.map → chunk-mf6hwpzh.js.map} +5 -5
- package/dist/{chunk-yxb4c62x.js → chunk-mr60an99.js} +3 -2
- package/dist/{chunk-yxb4c62x.js.map → chunk-mr60an99.js.map} +3 -3
- package/dist/chunk-n33e8dz8.js +191 -0
- package/dist/chunk-n33e8dz8.js.map +11 -0
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-m7cx05vp.js → chunk-rqtdtm43.js} +126 -59
- package/dist/{chunk-m7cx05vp.js.map → chunk-rqtdtm43.js.map} +13 -12
- package/dist/{chunk-bbaa1fet.js → chunk-rzcjp5m2.js} +7 -3
- package/dist/chunk-rzcjp5m2.js.map +25 -0
- package/dist/{chunk-hzw7yv5g.js → chunk-rzkr70gr.js} +5 -1
- package/dist/{chunk-hzw7yv5g.js.map → chunk-rzkr70gr.js.map} +3 -3
- package/dist/{chunk-sfypc7mk.js → chunk-s24qbp32.js} +4 -4
- package/dist/{chunk-axndsymr.js → chunk-tw03bsmb.js} +2 -2
- package/dist/{chunk-axndsymr.js.map → chunk-tw03bsmb.js.map} +3 -3
- package/dist/{chunk-y0v18c2j.js → chunk-vef6qa14.js} +2 -2
- package/dist/{chunk-gzt6v1ja.js → chunk-vn3yh259.js} +1 -1
- package/dist/{chunk-bg2bs62d.js → chunk-w9bp61e7.js} +5 -5
- package/dist/{chunk-3h7ctayx.js → chunk-xgptywp0.js} +4 -3
- package/dist/chunk-xgptywp0.js.map +11 -0
- package/dist/{chunk-gswwr35f.js → chunk-y487ywrv.js} +4 -4
- package/dist/{chunk-bet1rb9h.js → chunk-y6vnvayj.js} +1 -1
- package/dist/{chunk-x9tmx3fc.js → chunk-ypj2wqtj.js} +3 -6
- package/dist/{chunk-x9tmx3fc.js.map → chunk-ypj2wqtj.js.map} +4 -4
- package/dist/{chunk-g2gezsg5.js → chunk-z9h698s8.js} +1 -1
- package/dist/{chunk-wjffn5m4.js → chunk-zdkcdshk.js} +3 -36
- package/dist/{chunk-wjffn5m4.js.map → chunk-zdkcdshk.js.map} +3 -4
- package/dist/{chunk-bfjv1adk.js → chunk-znw0zvy4.js} +1 -1
- package/dist/edits/types.d.ts +19 -19
- package/dist/edits/types.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +4 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/envelope.d.ts +0 -12
- package/dist/events/envelope.d.ts.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -3
- package/dist/events/service.d.ts +1 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/toStoredEvent.d.ts +1 -2
- package/dist/events/toStoredEvent.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +2 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +1 -2
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +39 -37
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.d.ts +1 -2
- package/dist/execution/primitive.d.ts.map +1 -1
- package/dist/execution/primitive.js +38 -36
- package/dist/execution/primitive.js.map +3 -3
- package/dist/execution/request.d.ts +1 -2
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +39 -37
- package/dist/execution/request.js.map +3 -3
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -50
- package/dist/index.js.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +11 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/materialization/errors.d.ts +3 -1
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/events.d.ts +27 -2
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/operations.d.ts +2 -1
- package/dist/materializer/edits/operations.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -2
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/user-refs.d.ts +30 -0
- package/dist/materializer/edits/user-refs.d.ts.map +1 -0
- package/dist/materializer/effective/build-events.d.ts +2 -2
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +11 -3
- package/dist/materializer/execution/scope.d.ts.map +1 -1
- package/dist/materializer/index.js +23 -21
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +2 -0
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +2 -2
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/execution/index.js +23 -21
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/objects/execution.d.ts +21 -27
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +28 -26
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +27 -25
- 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/scalar-values.d.ts.map +1 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts +1 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -3
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-builder.d.ts +8 -10
- package/dist/objects/sdk/query-builder.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts +1 -2
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/sdk/where.d.ts +2 -3
- package/dist/objects/sdk/where.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +11 -10
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +4 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +6 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +34 -22
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +1 -0
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +9 -7
- package/dist/ontology/internal.js.map +1 -1
- package/dist/ontology/primitives.d.ts +38 -0
- package/dist/ontology/primitives.d.ts.map +1 -0
- package/dist/ontology/query-capabilities.d.ts +38 -0
- package/dist/ontology/query-capabilities.d.ts.map +1 -0
- package/dist/ontology/refs.d.ts +23 -2
- package/dist/ontology/refs.d.ts.map +1 -1
- package/dist/ontology/registered.d.ts +16 -0
- package/dist/ontology/registered.d.ts.map +1 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/tokens.d.ts +35 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +18 -4
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/user-ref.d.ts +35 -0
- package/dist/ontology/user-ref.d.ts.map +1 -0
- package/dist/ontology/validation/definition.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/normalize.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts +6 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +26 -24
- package/dist/pipelines/index.js.map +1 -1
- package/dist/predicates/types.d.ts +53 -3
- package/dist/predicates/types.d.ts.map +1 -1
- package/dist/projections/builders.d.ts +19 -1
- package/dist/projections/builders.d.ts.map +1 -1
- package/dist/projections/internal.js +23 -21
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/validation.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +1 -1
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +1 -1
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +5 -5
- 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.js +27 -25
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/sixb.d.ts +5 -5
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +171 -188
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +5 -5
- package/dist/sandboxes/sandbox.d.ts +4 -1
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/shared/params/types.d.ts +4 -3
- package/dist/shared/params/types.d.ts.map +1 -1
- package/dist/shared/params/user-refs.d.ts +19 -0
- package/dist/shared/params/user-refs.d.ts.map +1 -0
- package/dist/shares/compiler.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -22
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/types.d.ts +1 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/auth/in-memory/access-tokens.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +8 -1
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +62 -13
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/executions/provider.js +1 -1
- package/dist/storage/file-upload-sessions/in-memory.d.ts +9 -18
- package/dist/storage/file-upload-sessions/in-memory.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/index.d.ts +1 -1
- package/dist/storage/file-upload-sessions/index.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.d.ts +52 -0
- package/dist/storage/file-upload-sessions/provider.d.ts.map +1 -0
- package/dist/storage/file-upload-sessions/provider.js +24 -0
- package/dist/storage/file-upload-sessions/provider.js.map +9 -0
- package/dist/storage/file-upload-sessions/types.d.ts +19 -1
- package/dist/storage/file-upload-sessions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/utils.d.ts +8 -2
- package/dist/storage/file-upload-sessions/utils.d.ts.map +1 -1
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +29 -25
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +11 -9
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +6 -2
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +14 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +8 -2
- package/dist/storage/ontology/provider.js.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/provider.js +2 -2
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-interventions/index.d.ts +1 -1
- package/dist/storage/workflow-interventions/index.d.ts.map +1 -1
- package/dist/storage/workflow-interventions/types.d.ts +5 -8
- package/dist/storage/workflow-interventions/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +8 -8
- package/dist/syncs/index.js +27 -25
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +4 -0
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution.d.ts +1 -2
- package/dist/testing/execution.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts +12 -0
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1951 -1242
- package/dist/testing/index.js.map +15 -13
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +8 -0
- 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/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/workflow-intervention-storage-contract.d.ts +8 -0
- package/dist/testing/workflow-intervention-storage-contract.d.ts.map +1 -0
- package/dist/webhooks/internal.js +24 -22
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/webhooks/types.d.ts +2 -2
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/workers/index.js +1 -1
- package/dist/workflows/index.js +42 -40
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/run-dispatch.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +2 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/actions/index.ts +0 -3
- package/src/actions/read-facade.ts +102 -62
- package/src/actions/request.ts +13 -0
- package/src/actions/run-dispatch.ts +3 -0
- package/src/actions/types/context.ts +17 -65
- package/src/actions/types/params.ts +2 -1
- package/src/agents/authority.ts +1 -1
- package/src/assert-never.ts +7 -0
- package/src/auth/client-address.ts +12 -0
- package/src/auth/csrf.ts +14 -5
- package/src/auth/index.ts +3 -2
- package/src/auth/runtime.ts +299 -277
- package/src/auth/session-cache.ts +18 -6
- package/src/auth/sessions.ts +30 -0
- package/src/auth/types.ts +7 -17
- package/src/bootstrap/index.ts +1 -0
- package/src/bootstrap/ontology-type-manifest.ts +112 -60
- package/src/edits/types.ts +47 -63
- package/src/errors/catalog.ts +4 -0
- package/src/events/envelope.ts +0 -13
- package/src/events/index.ts +1 -1
- package/src/events/service.ts +1 -11
- package/src/events/toStoredEvent.ts +1 -3
- package/src/events/types/index.ts +1 -1
- package/src/execution/agent.ts +1 -2
- package/src/execution/authorized-object-reader.ts +5 -7
- package/src/execution/primitive.ts +1 -2
- package/src/execution/request.ts +1 -2
- package/src/index.ts +8 -7
- package/src/maintenance/ontology-maintenance.ts +77 -1
- package/src/materialization/errors.ts +2 -0
- package/src/materialization/events.ts +27 -2
- package/src/materializer/README.md +2 -0
- package/src/materializer/edits/commit.ts +21 -12
- package/src/materializer/edits/operations.ts +32 -4
- package/src/materializer/edits/plan.ts +4 -5
- package/src/materializer/edits/user-refs.ts +115 -0
- package/src/materializer/effective/build-events.ts +4 -5
- package/src/materializer/execution/scope.ts +40 -7
- package/src/materializer/projections/replace.ts +2 -0
- package/src/materializer/projections/replacement-plan.ts +4 -0
- package/src/materializer/telemetry/append.ts +4 -12
- package/src/materializer/telemetry/plan.ts +4 -5
- package/src/objects/execution.ts +33 -62
- package/src/objects/query/executor.ts +12 -3
- package/src/objects/query/ir.ts +7 -0
- package/src/objects/query/planner.ts +1 -0
- package/src/objects/query/scalar-values.ts +19 -0
- package/src/objects/query/validate.ts +55 -44
- package/src/objects/sdk/object-handle.ts +8 -8
- package/src/objects/sdk/object-set.ts +8 -15
- package/src/objects/sdk/query-builder.ts +59 -71
- package/src/objects/sdk/telemetry-channel.ts +6 -7
- package/src/objects/sdk/where.ts +6 -13
- package/src/ontology/builders.ts +15 -11
- package/src/ontology/index.ts +4 -0
- package/src/ontology/inference/index.ts +56 -36
- package/src/ontology/internal.ts +1 -0
- package/src/ontology/json-schema.ts +12 -0
- package/src/ontology/primitives.ts +91 -0
- package/src/ontology/query-capabilities.ts +136 -0
- package/src/ontology/refs.ts +33 -6
- package/src/ontology/registered.ts +22 -0
- package/src/ontology/registry.ts +6 -3
- package/src/ontology/tokens.ts +41 -2
- package/src/ontology/types.ts +19 -3
- package/src/ontology/user-ref.ts +120 -0
- package/src/ontology/validation/definition.ts +2 -13
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/normalize.ts +39 -3
- package/src/ontology/validation/properties.ts +95 -19
- package/src/ontology/validation/query.ts +11 -42
- package/src/ontology/validation/schema.ts +16 -0
- package/src/predicates/types.ts +43 -33
- package/src/projections/builders.ts +24 -3
- package/src/projections/validation.ts +15 -1
- package/src/runtime/create.ts +2 -2
- package/src/runtime/host.ts +10 -12
- package/src/runtime/index.ts +3 -2
- package/src/runtime/sixb.ts +13 -23
- package/src/runtime/types.ts +277 -479
- package/src/sandboxes/sandbox.ts +4 -1
- package/src/shared/params/types.ts +4 -3
- package/src/shared/params/user-refs.ts +48 -0
- package/src/shares/compiler.ts +6 -16
- package/src/storage/action-runs/types.ts +1 -0
- package/src/storage/auth/in-memory/access-tokens.ts +5 -2
- package/src/storage/auth/in-memory/auth-storage.ts +5 -8
- package/src/storage/auth/in-memory/device-authorizations.ts +0 -2
- package/src/storage/auth/in-memory/sessions.ts +69 -1
- package/src/storage/auth/in-memory/shared.ts +13 -7
- package/src/storage/auth/index.ts +2 -1
- package/src/storage/auth/types.ts +57 -13
- package/src/storage/executions/validation.ts +1 -1
- package/src/storage/file-upload-sessions/in-memory.ts +64 -113
- package/src/storage/file-upload-sessions/index.ts +1 -0
- package/src/storage/file-upload-sessions/provider.ts +258 -0
- package/src/storage/file-upload-sessions/types.ts +20 -1
- package/src/storage/file-upload-sessions/utils.ts +25 -9
- package/src/storage/index.ts +3 -2
- package/src/storage/objects/in-memory/query.ts +13 -3
- package/src/storage/ontology/commits.ts +6 -2
- package/src/storage/ontology/in-memory/materializations.ts +6 -34
- package/src/storage/ontology/provider-header-validation.ts +57 -0
- package/src/storage/ontology/provider-work.ts +15 -3
- package/src/storage/ontology/provider.ts +59 -1
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/types.ts +0 -1
- package/src/storage/workflow-interventions/index.ts +0 -1
- package/src/storage/workflow-interventions/types.ts +5 -9
- package/src/testing/action-execution.ts +13 -3
- package/src/testing/auth-storage-contract.ts +149 -62
- package/src/testing/execution-storage-contract.ts +1 -2
- package/src/testing/execution.ts +4 -7
- package/src/testing/file-upload-session-storage-contract.ts +335 -0
- package/src/testing/index.ts +8 -0
- package/src/testing/materializer-storage-contract.ts +86 -4
- package/src/testing/object-query-contract.ts +121 -2
- package/src/testing/ontology-contract-fixture.ts +23 -3
- package/src/testing/ontology-storage-contract.ts +58 -0
- package/src/testing/sandboxes-contract.ts +27 -0
- package/src/testing/workflow-intervention-storage-contract.ts +203 -0
- package/src/webhooks/types.ts +2 -2
- package/src/workflows/run-dispatch.ts +12 -1
- package/src/workflows/snapshot.ts +16 -7
- package/src/workflows/types.ts +2 -2
- package/dist/chunk-2cxv584m.js.map +0 -43
- package/dist/chunk-3ghw2t5q.js.map +0 -10
- package/dist/chunk-3h7ctayx.js.map +0 -11
- package/dist/chunk-6ma8dvzc.js.map +0 -15
- package/dist/chunk-bbaa1fet.js.map +0 -25
- package/dist/chunk-eyjzgav0.js.map +0 -12
- package/dist/chunk-f06sf7rr.js.map +0 -11
- package/dist/chunk-g50nxqs5.js.map +0 -18
- package/dist/chunk-hkw8rykk.js.map +0 -15
- package/dist/chunk-p6r1ex7t.js.map +0 -10
- package/dist/chunk-qm535afa.js.map +0 -15
- package/dist/chunk-vpxss818.js.map +0 -10
- package/dist/chunk-vsg0g7h9.js.map +0 -17
- /package/dist/{chunk-e1f1sqba.js.map → chunk-04h4t2b5.js.map} +0 -0
- /package/dist/{chunk-y3ev53cq.js.map → chunk-2fv8sajb.js.map} +0 -0
- /package/dist/{chunk-3bnt2wna.js.map → chunk-2hbhn1ff.js.map} +0 -0
- /package/dist/{chunk-5tetw4hn.js.map → chunk-4tnrzqqh.js.map} +0 -0
- /package/dist/{chunk-jjwhy3rs.js.map → chunk-a69fkrtr.js.map} +0 -0
- /package/dist/{chunk-y1ahv8b7.js.map → chunk-bdhfn0ww.js.map} +0 -0
- /package/dist/{chunk-4ph94nhd.js.map → chunk-bep5rrdq.js.map} +0 -0
- /package/dist/{chunk-kept9cdd.js.map → chunk-bxx3ms5t.js.map} +0 -0
- /package/dist/{chunk-xtfryrfb.js.map → chunk-cbn96bve.js.map} +0 -0
- /package/dist/{chunk-r5zythxp.js.map → chunk-gbcrz0gr.js.map} +0 -0
- /package/dist/{chunk-t7dzd1tm.js.map → chunk-jhyc777j.js.map} +0 -0
- /package/dist/{chunk-0mza4xb2.js.map → chunk-m8zkvep1.js.map} +0 -0
- /package/dist/{chunk-sfypc7mk.js.map → chunk-s24qbp32.js.map} +0 -0
- /package/dist/{chunk-y0v18c2j.js.map → chunk-vef6qa14.js.map} +0 -0
- /package/dist/{chunk-gzt6v1ja.js.map → chunk-vn3yh259.js.map} +0 -0
- /package/dist/{chunk-bg2bs62d.js.map → chunk-w9bp61e7.js.map} +0 -0
- /package/dist/{chunk-gswwr35f.js.map → chunk-y487ywrv.js.map} +0 -0
- /package/dist/{chunk-bet1rb9h.js.map → chunk-y6vnvayj.js.map} +0 -0
- /package/dist/{chunk-g2gezsg5.js.map → chunk-z9h698s8.js.map} +0 -0
- /package/dist/{chunk-bfjv1adk.js.map → chunk-znw0zvy4.js.map} +0 -0
|
@@ -8,6 +8,13 @@ import type {
|
|
|
8
8
|
} from "../../ontology"
|
|
9
9
|
import { normalizeDecimalValue } from "../../ontology"
|
|
10
10
|
import { formatUnknownObjectTypeMessage } from "../../ontology/errors"
|
|
11
|
+
import {
|
|
12
|
+
isContainsSchema,
|
|
13
|
+
isExactSchema,
|
|
14
|
+
isSortableSchema,
|
|
15
|
+
isTextSchema,
|
|
16
|
+
queryScalarKindForSchema,
|
|
17
|
+
} from "../../ontology/query-capabilities"
|
|
11
18
|
import { validatePropertyValue, validateSchemaValue } from "../../ontology/validation"
|
|
12
19
|
import { MAX_VECTOR_K, normalizeVector, vectorConfiguration } from "../vectors/profile"
|
|
13
20
|
import { hasVectorProfile, isVectorProfileQuery } from "../vectors/query"
|
|
@@ -593,8 +600,15 @@ function validatePredicate(
|
|
|
593
600
|
addIssue(ctx, path, "invalid_exists_value", "Predicate 'exists' value must be boolean")
|
|
594
601
|
}
|
|
595
602
|
return predicate
|
|
596
|
-
case "contains":
|
|
597
|
-
|
|
603
|
+
case "contains": {
|
|
604
|
+
const { scalarKind: _authoredScalarKind, ...authoredPredicate } = predicate
|
|
605
|
+
const scalarKind = resolveAndValidatePredicateProperty(
|
|
606
|
+
predicate.propertyId,
|
|
607
|
+
predicate.op,
|
|
608
|
+
shape,
|
|
609
|
+
path,
|
|
610
|
+
ctx
|
|
611
|
+
)
|
|
598
612
|
validateContainsValue(predicate.propertyId, predicate.value, shape, path, ctx)
|
|
599
613
|
admitProperty(ctx, {
|
|
600
614
|
state: admissionState,
|
|
@@ -602,7 +616,12 @@ function validatePredicate(
|
|
|
602
616
|
use: "filter",
|
|
603
617
|
path,
|
|
604
618
|
})
|
|
605
|
-
return
|
|
619
|
+
return {
|
|
620
|
+
...authoredPredicate,
|
|
621
|
+
value: normalizeObjectQueryValue(predicate.value, scalarKind),
|
|
622
|
+
...(scalarKind ? { scalarKind } : {}),
|
|
623
|
+
}
|
|
624
|
+
}
|
|
606
625
|
}
|
|
607
626
|
}
|
|
608
627
|
|
|
@@ -665,10 +684,41 @@ function resolveAndValidatePredicateProperty(
|
|
|
665
684
|
}
|
|
666
685
|
}
|
|
667
686
|
|
|
668
|
-
if (op === "exists"
|
|
687
|
+
if (op === "exists") return undefined
|
|
688
|
+
if (op === "contains") return resolveArrayItemScalarKind(schemas, ctx)
|
|
669
689
|
return resolveCommonQueryScalarKind(schemas, propertyId, path, ctx)
|
|
670
690
|
}
|
|
671
691
|
|
|
692
|
+
/**
|
|
693
|
+
* Item scalar kind for `contains` over arrays, so array membership compares items the way `eq`
|
|
694
|
+
* compares values. Strings and maps keep substring and key semantics, and mixed item kinds keep the
|
|
695
|
+
* untyped comparison.
|
|
696
|
+
*/
|
|
697
|
+
function resolveArrayItemScalarKind(
|
|
698
|
+
schemas: readonly Schema[],
|
|
699
|
+
ctx: QueryValidationContext
|
|
700
|
+
): QueryScalarKind | undefined {
|
|
701
|
+
const kinds = new Set<QueryScalarKind | undefined>()
|
|
702
|
+
for (const schema of schemas) {
|
|
703
|
+
if (typeof schema === "string" || schema.type !== "array") return undefined
|
|
704
|
+
const items = resolveValueTypeRefs(schema.items, ctx.valueTypesById)
|
|
705
|
+
kinds.add(items ? queryScalarKindForSchema(items) : undefined)
|
|
706
|
+
}
|
|
707
|
+
return kinds.size === 1 ? [...kinds][0] : undefined
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
function resolveValueTypeRefs(
|
|
711
|
+
schema: Schema,
|
|
712
|
+
valueTypesById: ReadonlyMap<string, ValueType>,
|
|
713
|
+
seen = new Set<string>()
|
|
714
|
+
): Schema | undefined {
|
|
715
|
+
if (typeof schema === "string" || schema.type !== "valueTypeRef") return schema
|
|
716
|
+
if (seen.has(schema.valueTypeId)) return undefined
|
|
717
|
+
seen.add(schema.valueTypeId)
|
|
718
|
+
const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema
|
|
719
|
+
return resolved ? resolveValueTypeRefs(resolved, valueTypesById, seen) : undefined
|
|
720
|
+
}
|
|
721
|
+
|
|
672
722
|
function normalizeObjectQueryValue(value: unknown, scalarKind: QueryScalarKind | undefined) {
|
|
673
723
|
if (scalarKind !== "decimal" || typeof value !== "string") return value
|
|
674
724
|
try {
|
|
@@ -703,12 +753,6 @@ function resolveCommonQueryScalarKind(
|
|
|
703
753
|
return undefined
|
|
704
754
|
}
|
|
705
755
|
|
|
706
|
-
function queryScalarKindForSchema(schema: Schema): QueryScalarKind | undefined {
|
|
707
|
-
if (typeof schema === "string") return schema === "fileRef" ? undefined : schema
|
|
708
|
-
if (schema.type === "enum") return schema.valueType === "integer" ? "integer" : "string"
|
|
709
|
-
return undefined
|
|
710
|
-
}
|
|
711
|
-
|
|
712
756
|
function validatePredicateValue(
|
|
713
757
|
propertyId: string,
|
|
714
758
|
value: unknown,
|
|
@@ -748,7 +792,7 @@ function validateContainsValue(
|
|
|
748
792
|
if (!schema) continue
|
|
749
793
|
|
|
750
794
|
if (typeof schema === "string") {
|
|
751
|
-
if (schema
|
|
795
|
+
if (isContainsSchema(schema)) {
|
|
752
796
|
if (typeof value !== "string") {
|
|
753
797
|
addIssue(
|
|
754
798
|
ctx,
|
|
@@ -1582,39 +1626,6 @@ function isPrimaryExactPredicate(property: Property, op: ObjectQueryPredicate["o
|
|
|
1582
1626
|
return property.primary === true && (op === "eq" || op === "in")
|
|
1583
1627
|
}
|
|
1584
1628
|
|
|
1585
|
-
function isTextSchema(schema: Schema): boolean {
|
|
1586
|
-
if (schema === "string") return true
|
|
1587
|
-
return typeof schema !== "string" && schema.type === "enum" && schema.valueType === "string"
|
|
1588
|
-
}
|
|
1589
|
-
|
|
1590
|
-
function isExactSchema(schema: Schema): boolean {
|
|
1591
|
-
if (typeof schema === "string") return schema !== "fileRef"
|
|
1592
|
-
return schema.type === "enum"
|
|
1593
|
-
}
|
|
1594
|
-
|
|
1595
|
-
function isSortableSchema(schema: Schema): boolean {
|
|
1596
|
-
if (typeof schema === "string") {
|
|
1597
|
-
return (
|
|
1598
|
-
schema === "string" ||
|
|
1599
|
-
schema === "uuid" ||
|
|
1600
|
-
schema === "integer" ||
|
|
1601
|
-
schema === "double" ||
|
|
1602
|
-
schema === "decimal" ||
|
|
1603
|
-
schema === "date" ||
|
|
1604
|
-
schema === "timestamp"
|
|
1605
|
-
)
|
|
1606
|
-
}
|
|
1607
|
-
return schema.type === "enum"
|
|
1608
|
-
}
|
|
1609
|
-
|
|
1610
|
-
function isContainsSchema(schema: Schema): boolean {
|
|
1611
|
-
return (
|
|
1612
|
-
schema === "string" ||
|
|
1613
|
-
schema === "uuid" ||
|
|
1614
|
-
(typeof schema !== "string" && (schema.type === "array" || schema.type === "map"))
|
|
1615
|
-
)
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
1629
|
function keyForTypeIds(typeIds: readonly string[]): string {
|
|
1619
1630
|
return uniqueStrings(typeIds).sort().join("\0")
|
|
1620
1631
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { ActionDefinition } from "../../actions"
|
|
8
|
-
import type { ObjectLink, ObjectRef
|
|
8
|
+
import type { ObjectLink, ObjectRef } from "../../ontology"
|
|
9
9
|
import { OntologyValidationError } from "../../ontology/errors"
|
|
10
10
|
import type { LinkToken, ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
|
|
11
11
|
import { assertLinkTokenBelongsToObjectType } from "../../ontology/validation"
|
|
@@ -23,10 +23,10 @@ import { createTelemetryChannel } from "./telemetry-channel"
|
|
|
23
23
|
type ObjectRefInput = ObjectRef
|
|
24
24
|
type AnyLinkToken = LinkToken<string, string, string | readonly string[], ObjectLink>
|
|
25
25
|
|
|
26
|
-
export function createObjectByIdHandle<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
export function createObjectByIdHandle<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
27
|
+
ctx: ExecutionObjectContext,
|
|
28
|
+
primaryId: string
|
|
29
|
+
): ObjectByIdHandle<TObjectType> {
|
|
30
30
|
const objectHandle = {
|
|
31
31
|
vector: (profileName: string) => createObjectVectorHandle(ctx, primaryId, profileName),
|
|
32
32
|
get: async () => {
|
|
@@ -34,7 +34,7 @@ export function createObjectByIdHandle<
|
|
|
34
34
|
objectTypeId: ctx.objectType.id,
|
|
35
35
|
primaryId,
|
|
36
36
|
})
|
|
37
|
-
return row ? (row as unknown as TwinObject<TObjectType
|
|
37
|
+
return row ? (row as unknown as TwinObject<TObjectType>) : null
|
|
38
38
|
},
|
|
39
39
|
|
|
40
40
|
listLinks: async (linkToken?: AnyLinkToken) => {
|
|
@@ -129,8 +129,8 @@ export function createObjectByIdHandle<
|
|
|
129
129
|
})
|
|
130
130
|
},
|
|
131
131
|
|
|
132
|
-
telemetry: createTelemetryChannel<TObjectType
|
|
132
|
+
telemetry: createTelemetryChannel<TObjectType>(ctx, primaryId),
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
return objectHandle as unknown as ObjectByIdHandle<TObjectType
|
|
135
|
+
return objectHandle as unknown as ObjectByIdHandle<TObjectType>
|
|
136
136
|
}
|
|
@@ -9,7 +9,6 @@ import type { AuthorizationContext } from "../../authorization"
|
|
|
9
9
|
import { shareSixbErrorReporter } from "../../error-reporting/capability"
|
|
10
10
|
import type { ExecutionContext } from "../../execution"
|
|
11
11
|
import { assertAuthorizedObjectReaderBinding } from "../../execution/authorized-object-reader"
|
|
12
|
-
import type { ValueType } from "../../ontology"
|
|
13
12
|
import { OntologyValidationError } from "../../ontology/errors"
|
|
14
13
|
import type { ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
|
|
15
14
|
import { shareOntologyMutationRuntime } from "../../runtime/ontology-mutations"
|
|
@@ -32,17 +31,13 @@ import { createObjectByIdHandle } from "./object-handle"
|
|
|
32
31
|
import { createObjectQueryBuilder } from "./query-builder"
|
|
33
32
|
import { createRuntimeQueryExecutor } from "./runtime-query-executor"
|
|
34
33
|
|
|
35
|
-
export function createObjectSet<
|
|
36
|
-
TObjectType extends ObjectTypeWithPropertyTokens,
|
|
37
|
-
TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens,
|
|
38
|
-
TValueTypes extends readonly ValueType[],
|
|
39
|
-
>(
|
|
34
|
+
export function createObjectSet<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
40
35
|
params: SixbRuntimeContext & {
|
|
41
36
|
readonly execution: ExecutionContext
|
|
42
37
|
readonly objectType: TObjectType
|
|
43
38
|
readonly authorization?: AuthorizationContext
|
|
44
39
|
}
|
|
45
|
-
): ObjectSet<TObjectType
|
|
40
|
+
): ObjectSet<TObjectType> {
|
|
46
41
|
assertAuthorizedObjectReaderBinding({
|
|
47
42
|
reader: params.objectReader,
|
|
48
43
|
scope: { execution: params.execution, authorization: params.runtimeAuthorization },
|
|
@@ -97,21 +92,21 @@ export function createObjectSet<
|
|
|
97
92
|
objectTypeId: objectType.id,
|
|
98
93
|
primaryId: id,
|
|
99
94
|
})
|
|
100
|
-
return row ? (row as unknown as TwinObject<TObjectType
|
|
95
|
+
return row ? (row as unknown as TwinObject<TObjectType>) : null
|
|
101
96
|
},
|
|
102
97
|
|
|
103
98
|
upsert: async (input: { properties: Record<string, unknown> }) => {
|
|
104
99
|
const row = await upsertObjectLeaf(resolvedCtx, input.properties)
|
|
105
|
-
return row as unknown as TwinObject<TObjectType
|
|
100
|
+
return row as unknown as TwinObject<TObjectType>
|
|
106
101
|
},
|
|
107
102
|
|
|
108
103
|
query: () =>
|
|
109
|
-
createObjectQueryBuilder<TObjectType
|
|
104
|
+
createObjectQueryBuilder<TObjectType>({
|
|
110
105
|
query: { kind: "start", objectTypeId: objectType.id },
|
|
111
106
|
executor: queryExecutor,
|
|
112
107
|
}),
|
|
113
108
|
|
|
114
|
-
byId: (id: string) => createObjectByIdHandle<TObjectType
|
|
109
|
+
byId: (id: string) => createObjectByIdHandle<TObjectType>(resolvedCtx, id),
|
|
115
110
|
|
|
116
111
|
list: async (input?: ObjectSetListInput) => {
|
|
117
112
|
const result = await objectReader.list({
|
|
@@ -129,9 +124,7 @@ export function createObjectSet<
|
|
|
129
124
|
})
|
|
130
125
|
|
|
131
126
|
return {
|
|
132
|
-
objects: result.objects.map(
|
|
133
|
-
(row) => row as unknown as TwinObject<TObjectType, TValueTypes>
|
|
134
|
-
),
|
|
127
|
+
objects: result.objects.map((row) => row as unknown as TwinObject<TObjectType>),
|
|
135
128
|
hasMore: result.hasMore,
|
|
136
129
|
total: result.total ?? result.objects.length,
|
|
137
130
|
}
|
|
@@ -230,5 +223,5 @@ export function createObjectSet<
|
|
|
230
223
|
},
|
|
231
224
|
}
|
|
232
225
|
|
|
233
|
-
return objectSet as unknown as ObjectSet<TObjectType
|
|
226
|
+
return objectSet as unknown as ObjectSet<TObjectType>
|
|
234
227
|
}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* `ObjectQueryExecutor` — the server runtime executor or the HTTP client
|
|
7
7
|
* executor — so the same builder serves both sides.
|
|
8
8
|
*/
|
|
9
|
-
import type { ValueType } from "../../ontology"
|
|
10
9
|
import { OntologyValidationError } from "../../ontology/errors"
|
|
11
10
|
import type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from "../../ontology/tokens"
|
|
11
|
+
import { RuntimeError } from "../../runtime/errors"
|
|
12
12
|
import type {
|
|
13
13
|
ListResult,
|
|
14
14
|
ListResultWithoutTotal,
|
|
@@ -39,24 +39,40 @@ type QueryBuilderParams = {
|
|
|
39
39
|
executor: ObjectQueryExecutor
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
export function createObjectQueryBuilder<
|
|
43
|
-
TObjectType extends ObjectTypeWithPropertyTokens,
|
|
44
|
-
TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens,
|
|
45
|
-
TValueTypes extends readonly ValueType[],
|
|
46
|
-
>(
|
|
42
|
+
export function createObjectQueryBuilder<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
47
43
|
params: QueryBuilderParams
|
|
48
|
-
): ObjectQueryBuilder<TObjectType
|
|
49
|
-
return new ObjectQueryBuilderImpl<TObjectType
|
|
44
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
45
|
+
return new ObjectQueryBuilderImpl<TObjectType>(
|
|
50
46
|
params
|
|
51
|
-
) as unknown as ObjectQueryBuilder<TObjectType
|
|
47
|
+
) as unknown as ObjectQueryBuilder<TObjectType>
|
|
52
48
|
}
|
|
53
49
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Returns the same query running through the executor `decorate` wraps around the builder's own.
|
|
52
|
+
*
|
|
53
|
+
* Refinements copy their builder's executor, so every query derived from the result, and every
|
|
54
|
+
* terminal it runs, goes through the decorated executor too.
|
|
55
|
+
*/
|
|
56
|
+
export function decorateObjectQueryExecutor<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
57
|
+
builder: ObjectQueryBuilder<TObjectType>,
|
|
58
|
+
decorate: (executor: ObjectQueryExecutor) => ObjectQueryExecutor
|
|
59
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
60
|
+
// Narrowed from `unknown`: narrowing the builder interface to the class relates both structures.
|
|
61
|
+
const source: unknown = builder
|
|
62
|
+
if (!(source instanceof ObjectQueryBuilderImpl)) {
|
|
63
|
+
throw new RuntimeError(
|
|
64
|
+
"[Sixb] Only query builders created by createObjectQueryBuilder can change executor."
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
return new ObjectQueryBuilderImpl<TObjectType>({
|
|
68
|
+
...source.params,
|
|
69
|
+
executor: decorate(source.params.executor),
|
|
70
|
+
}) as unknown as ObjectQueryBuilder<TObjectType>
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
class ObjectQueryBuilderImpl<TObjectType extends ObjectTypeWithPropertyTokens> {
|
|
74
|
+
/** Not private because `decorateObjectQueryExecutor` reads it; the class is not exported. */
|
|
75
|
+
constructor(readonly params: QueryBuilderParams) {}
|
|
60
76
|
|
|
61
77
|
get ir(): ObjectQuery {
|
|
62
78
|
return normalizeObjectQuery(this.params.query)
|
|
@@ -64,14 +80,11 @@ class ObjectQueryBuilderImpl<
|
|
|
64
80
|
|
|
65
81
|
where(
|
|
66
82
|
whereFn: (
|
|
67
|
-
builder: ObjectWhereBuilder<TObjectType
|
|
68
|
-
) =>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const predicate = resolveWhere<TObjectType, TValueTypes>(whereFn)
|
|
73
|
-
if (!predicate)
|
|
74
|
-
return this as unknown as ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes>
|
|
83
|
+
builder: ObjectWhereBuilder<TObjectType>
|
|
84
|
+
) => ObjectWhereClause<TObjectType> | readonly ObjectWhereClause<TObjectType>[]
|
|
85
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
86
|
+
const predicate = resolveWhere<TObjectType>(whereFn)
|
|
87
|
+
if (!predicate) return this as unknown as ObjectQueryBuilder<TObjectType>
|
|
75
88
|
|
|
76
89
|
return this.withQuery({
|
|
77
90
|
kind: "filter",
|
|
@@ -83,7 +96,7 @@ class ObjectQueryBuilderImpl<
|
|
|
83
96
|
search(
|
|
84
97
|
query: string,
|
|
85
98
|
options?: { fields?: readonly PropertyToken<TObjectType["id"], string>[] }
|
|
86
|
-
): ObjectQueryBuilder<TObjectType
|
|
99
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
87
100
|
return this.withQuery({
|
|
88
101
|
kind: "text",
|
|
89
102
|
input: this.ir,
|
|
@@ -92,11 +105,7 @@ class ObjectQueryBuilderImpl<
|
|
|
92
105
|
})
|
|
93
106
|
}
|
|
94
107
|
|
|
95
|
-
vector(
|
|
96
|
-
profile: string,
|
|
97
|
-
vector: string,
|
|
98
|
-
options: { k: number }
|
|
99
|
-
): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {
|
|
108
|
+
vector(profile: string, vector: string, options: { k: number }): ObjectQueryBuilder<TObjectType> {
|
|
100
109
|
if (typeof profile !== "string" || typeof vector !== "string") {
|
|
101
110
|
throw new Error("[Sixb] Vector search requires a named profile and search text")
|
|
102
111
|
}
|
|
@@ -112,25 +121,21 @@ class ObjectQueryBuilderImpl<
|
|
|
112
121
|
traverse(
|
|
113
122
|
link: LinkToken<TObjectType["id"], string, string>,
|
|
114
123
|
options?: { direction?: "outgoing" }
|
|
115
|
-
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens
|
|
124
|
+
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens>
|
|
116
125
|
traverse(
|
|
117
126
|
link: LinkToken<string, string, TObjectType["id"] | readonly TObjectType["id"][]>,
|
|
118
127
|
options: { direction: "incoming" }
|
|
119
|
-
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens
|
|
128
|
+
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens>
|
|
120
129
|
traverse(
|
|
121
130
|
link: LinkToken,
|
|
122
131
|
options: { direction?: ObjectQueryDirection } = {}
|
|
123
|
-
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens
|
|
132
|
+
): ObjectQueryBuilder<ObjectTypeWithPropertyTokens> {
|
|
124
133
|
const direction = options.direction ?? "outgoing"
|
|
125
134
|
if (direction === "outgoing") {
|
|
126
135
|
requireSingleTargetObjectTypeId(link)
|
|
127
136
|
}
|
|
128
137
|
|
|
129
|
-
return new ObjectQueryBuilderImpl<
|
|
130
|
-
ObjectTypeWithPropertyTokens,
|
|
131
|
-
TRegisteredObjectTypes,
|
|
132
|
-
TValueTypes
|
|
133
|
-
>({
|
|
138
|
+
return new ObjectQueryBuilderImpl<ObjectTypeWithPropertyTokens>({
|
|
134
139
|
...this.params,
|
|
135
140
|
query: {
|
|
136
141
|
kind: "traverse",
|
|
@@ -142,18 +147,14 @@ class ObjectQueryBuilderImpl<
|
|
|
142
147
|
// matching the result type the fluent API advertises.
|
|
143
148
|
...(direction === "incoming" ? { sourceObjectTypeId: link.objectTypeId } : {}),
|
|
144
149
|
},
|
|
145
|
-
}) as unknown as ObjectQueryBuilder<
|
|
146
|
-
ObjectTypeWithPropertyTokens,
|
|
147
|
-
TRegisteredObjectTypes,
|
|
148
|
-
TValueTypes
|
|
149
|
-
>
|
|
150
|
+
}) as unknown as ObjectQueryBuilder<ObjectTypeWithPropertyTokens>
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
expand(
|
|
153
154
|
link: LinkToken<string, string, string | readonly string[]>,
|
|
154
155
|
optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild,
|
|
155
156
|
build?: NestedExpandBuild
|
|
156
|
-
): ObjectQueryBuilder<TObjectType
|
|
157
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
157
158
|
return this.withQuery({
|
|
158
159
|
kind: "expand",
|
|
159
160
|
input: this.ir,
|
|
@@ -164,7 +165,7 @@ class ObjectQueryBuilderImpl<
|
|
|
164
165
|
orderBy(
|
|
165
166
|
property: PropertyToken<TObjectType["id"], string>,
|
|
166
167
|
direction?: ObjectQuerySortDirection
|
|
167
|
-
): ObjectQueryBuilder<TObjectType
|
|
168
|
+
): ObjectQueryBuilder<TObjectType> {
|
|
168
169
|
return this.withQuery(
|
|
169
170
|
appendSortField(this.ir, {
|
|
170
171
|
kind: "property",
|
|
@@ -174,9 +175,7 @@ class ObjectQueryBuilderImpl<
|
|
|
174
175
|
)
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
orderByRelevance(
|
|
178
|
-
direction?: ObjectQuerySortDirection
|
|
179
|
-
): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {
|
|
178
|
+
orderByRelevance(direction?: ObjectQuerySortDirection): ObjectQueryBuilder<TObjectType> {
|
|
180
179
|
return this.withQuery(
|
|
181
180
|
appendSortField(this.ir, {
|
|
182
181
|
kind: "relevance",
|
|
@@ -185,7 +184,7 @@ class ObjectQueryBuilderImpl<
|
|
|
185
184
|
)
|
|
186
185
|
}
|
|
187
186
|
|
|
188
|
-
limit(limit: number): ObjectQueryBuilder<TObjectType
|
|
187
|
+
limit(limit: number): ObjectQueryBuilder<TObjectType> {
|
|
189
188
|
return this.withQuery({
|
|
190
189
|
kind: "limit",
|
|
191
190
|
input: this.ir,
|
|
@@ -193,10 +192,7 @@ class ObjectQueryBuilderImpl<
|
|
|
193
192
|
})
|
|
194
193
|
}
|
|
195
194
|
|
|
196
|
-
page(input: {
|
|
197
|
-
pageSize: number
|
|
198
|
-
pageToken?: string
|
|
199
|
-
}): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {
|
|
195
|
+
page(input: { pageSize: number; pageToken?: string }): ObjectQueryBuilder<TObjectType> {
|
|
200
196
|
return this.withQuery({
|
|
201
197
|
kind: "page",
|
|
202
198
|
input: this.ir,
|
|
@@ -227,28 +223,25 @@ class ObjectQueryBuilderImpl<
|
|
|
227
223
|
return formatObjectQueryExplanation(this.explain())
|
|
228
224
|
}
|
|
229
225
|
|
|
230
|
-
async list(): Promise<ListResult<TwinObject<TObjectType
|
|
226
|
+
async list(): Promise<ListResult<TwinObject<TObjectType>>>
|
|
231
227
|
async list(options: {
|
|
232
228
|
includeTotal: false
|
|
233
229
|
signal?: AbortSignal
|
|
234
|
-
}): Promise<ListResultWithoutTotal<TwinObject<TObjectType
|
|
230
|
+
}): Promise<ListResultWithoutTotal<TwinObject<TObjectType>>>
|
|
235
231
|
async list(options: {
|
|
236
232
|
includeTotal?: true
|
|
237
233
|
signal?: AbortSignal
|
|
238
|
-
}): Promise<ListResult<TwinObject<TObjectType
|
|
234
|
+
}): Promise<ListResult<TwinObject<TObjectType>>>
|
|
239
235
|
async list(
|
|
240
236
|
options?: ObjectQueryListOptions
|
|
241
237
|
): Promise<
|
|
242
|
-
|
|
|
243
|
-
| ListResultWithoutTotal<TwinObject<TObjectType, TValueTypes>>
|
|
238
|
+
ListResult<TwinObject<TObjectType>> | ListResultWithoutTotal<TwinObject<TObjectType>>
|
|
244
239
|
> {
|
|
245
240
|
const result = await this.params.executor.list(this.ir, {
|
|
246
241
|
includeTotal: options?.includeTotal,
|
|
247
242
|
signal: options?.signal,
|
|
248
243
|
})
|
|
249
|
-
const objects = result.objects.map(
|
|
250
|
-
(row) => row as unknown as TwinObject<TObjectType, TValueTypes>
|
|
251
|
-
)
|
|
244
|
+
const objects = result.objects.map((row) => row as unknown as TwinObject<TObjectType>)
|
|
252
245
|
|
|
253
246
|
if (options?.includeTotal === false) {
|
|
254
247
|
return {
|
|
@@ -286,26 +279,21 @@ class ObjectQueryBuilderImpl<
|
|
|
286
279
|
)
|
|
287
280
|
}
|
|
288
281
|
|
|
289
|
-
async first(): Promise<TwinObject<TObjectType
|
|
282
|
+
async first(): Promise<TwinObject<TObjectType> | null> {
|
|
290
283
|
const result = await this.params.executor.list({ kind: "limit", input: this.ir, limit: 1 })
|
|
291
284
|
const row = result.objects[0]
|
|
292
|
-
return row ? (row as unknown as TwinObject<TObjectType
|
|
285
|
+
return row ? (row as unknown as TwinObject<TObjectType>) : null
|
|
293
286
|
}
|
|
294
287
|
|
|
295
|
-
private withQuery(
|
|
296
|
-
|
|
297
|
-
): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {
|
|
298
|
-
return new ObjectQueryBuilderImpl<TObjectType, TRegisteredObjectTypes, TValueTypes>({
|
|
288
|
+
private withQuery(query: ObjectQuery): ObjectQueryBuilder<TObjectType> {
|
|
289
|
+
return new ObjectQueryBuilderImpl<TObjectType>({
|
|
299
290
|
...this.params,
|
|
300
291
|
query,
|
|
301
|
-
}) as unknown as ObjectQueryBuilder<TObjectType
|
|
292
|
+
}) as unknown as ObjectQueryBuilder<TObjectType>
|
|
302
293
|
}
|
|
303
294
|
}
|
|
304
295
|
|
|
305
|
-
type AnyExpandBuilder = ObjectExpandBuilder<
|
|
306
|
-
ObjectTypeWithPropertyTokens,
|
|
307
|
-
ObjectTypeWithPropertyTokens
|
|
308
|
-
>
|
|
296
|
+
type AnyExpandBuilder = ObjectExpandBuilder<ObjectTypeWithPropertyTokens>
|
|
309
297
|
type NestedExpandBuild = (nested: AnyExpandBuilder) => AnyExpandBuilder
|
|
310
298
|
|
|
311
299
|
/**
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* reads the same series back through `getTelemetryHistoryBatch`, both keyed by the property token.
|
|
6
6
|
*/
|
|
7
7
|
import type { TelemetryPointWrite } from "../../materialization/model"
|
|
8
|
-
import type { ValueType } from "../../ontology"
|
|
9
8
|
import type { ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
|
|
10
9
|
import {
|
|
11
10
|
assertPropertyTokenBelongsToObjectType,
|
|
@@ -20,13 +19,13 @@ import type {
|
|
|
20
19
|
import type { ResolvedObjectContext } from "../context"
|
|
21
20
|
import { getTelemetryHistoryBatch, writeTelemetryBatch } from "../telemetry"
|
|
22
21
|
|
|
23
|
-
export function createTelemetryChannel<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
export function createTelemetryChannel<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
23
|
+
ctx: ResolvedObjectContext,
|
|
24
|
+
primaryId: string
|
|
25
|
+
) {
|
|
27
26
|
return <TToken extends TelemetryPropertyToken<TObjectType>>(
|
|
28
27
|
property: TToken
|
|
29
|
-
): TelemetryChannel<TToken
|
|
28
|
+
): TelemetryChannel<TToken> => {
|
|
30
29
|
const { objectType } = ctx
|
|
31
30
|
assertPropertyTokenBelongsToObjectType(objectType, property)
|
|
32
31
|
assertTelemetryProperty(property.property)
|
|
@@ -84,6 +83,6 @@ export function createTelemetryChannel<
|
|
|
84
83
|
}
|
|
85
84
|
|
|
86
85
|
// Cast needed: generic token inference boundary — TToken is narrower than what `channel` sees
|
|
87
|
-
return channel as unknown as TelemetryChannel<TToken
|
|
86
|
+
return channel as unknown as TelemetryChannel<TToken>
|
|
88
87
|
}
|
|
89
88
|
}
|
package/src/objects/sdk/where.ts
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* on demand through a Proxy, so no runtime ontology access is required —
|
|
7
7
|
* property names are constrained at compile time and validated server-side.
|
|
8
8
|
*/
|
|
9
|
-
import type { ValueType } from "../../ontology"
|
|
10
9
|
import type { ObjectTypeWithPropertyTokens } from "../../ontology/tokens"
|
|
11
10
|
import type { ObjectWhereBuilder, ObjectWhereClause } from "../../runtime/types"
|
|
12
11
|
import type { ObjectQueryPredicate } from "../query"
|
|
@@ -47,8 +46,7 @@ function createPropertyPredicate(propertyId: string) {
|
|
|
47
46
|
|
|
48
47
|
export function createWhereBuilder<
|
|
49
48
|
TObjectType extends ObjectTypeWithPropertyTokens,
|
|
50
|
-
|
|
51
|
-
>(): ObjectWhereBuilder<TObjectType, TValueTypes> {
|
|
49
|
+
>(): ObjectWhereBuilder<TObjectType> {
|
|
52
50
|
const p = new Proxy(
|
|
53
51
|
{},
|
|
54
52
|
{
|
|
@@ -62,21 +60,16 @@ export function createWhereBuilder<
|
|
|
62
60
|
and: (...items: readonly ObjectQueryPredicate[]) => ({ op: "and", items }),
|
|
63
61
|
or: (...items: readonly ObjectQueryPredicate[]) => ({ op: "or", items }),
|
|
64
62
|
not: (item: ObjectQueryPredicate) => ({ op: "not", item }),
|
|
65
|
-
} as ObjectWhereBuilder<TObjectType
|
|
63
|
+
} as ObjectWhereBuilder<TObjectType>
|
|
66
64
|
}
|
|
67
65
|
|
|
68
|
-
export function resolveWhere<
|
|
69
|
-
TObjectType extends ObjectTypeWithPropertyTokens,
|
|
70
|
-
TValueTypes extends readonly ValueType[],
|
|
71
|
-
>(
|
|
66
|
+
export function resolveWhere<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
72
67
|
whereFn?: (
|
|
73
|
-
builder: ObjectWhereBuilder<TObjectType
|
|
74
|
-
) =>
|
|
75
|
-
| ObjectWhereClause<TObjectType, TValueTypes>
|
|
76
|
-
| readonly ObjectWhereClause<TObjectType, TValueTypes>[]
|
|
68
|
+
builder: ObjectWhereBuilder<TObjectType>
|
|
69
|
+
) => ObjectWhereClause<TObjectType> | readonly ObjectWhereClause<TObjectType>[]
|
|
77
70
|
): ObjectQueryPredicate | undefined {
|
|
78
71
|
if (!whereFn) return undefined
|
|
79
|
-
const whereBuilder = createWhereBuilder<TObjectType
|
|
72
|
+
const whereBuilder = createWhereBuilder<TObjectType>()
|
|
80
73
|
const whereInput = whereFn(whereBuilder)
|
|
81
74
|
if (!whereInput) return undefined
|
|
82
75
|
const predicates = (
|
package/src/ontology/builders.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
import type { ObjectTypeWithPropertyTokens, ObjectTypeWithTokens
|
|
29
|
+
import type { ObjectTypeWithPropertyTokens, ObjectTypeWithTokens } from "./tokens"
|
|
30
30
|
import { createLinkTokenMap, createPropertyTokenMap } from "./tokens"
|
|
31
31
|
import type {
|
|
32
32
|
EnumSchema,
|
|
@@ -450,18 +450,12 @@ export type DirectLinkTarget<
|
|
|
450
450
|
TId extends string,
|
|
451
451
|
TName extends string,
|
|
452
452
|
TProperties extends Property[],
|
|
453
|
-
> = {
|
|
453
|
+
> = ObjectTypeWithPropertyTokens<{
|
|
454
454
|
id: TId
|
|
455
455
|
name: TName
|
|
456
456
|
properties: TProperties
|
|
457
457
|
links: ObjectLink[]
|
|
458
|
-
|
|
459
|
-
id: TId
|
|
460
|
-
name: TName
|
|
461
|
-
properties: TProperties
|
|
462
|
-
links: ObjectLink[]
|
|
463
|
-
}>
|
|
464
|
-
}
|
|
458
|
+
}>
|
|
465
459
|
|
|
466
460
|
type DirectLinkTargetFor<TTarget extends ObjectType> = TTarget extends ObjectTypeWithPropertyTokens
|
|
467
461
|
? DirectLinkTarget<TTarget["id"], TTarget["name"], TTarget["properties"]>
|
|
@@ -635,10 +629,17 @@ export const link: LinkBuilder = Object.assign(linkImpl, {
|
|
|
635
629
|
export function valueTypeRef<const TId extends string>(
|
|
636
630
|
valueTypeId: TId
|
|
637
631
|
): ValueTypeRefSchema & { valueTypeId: TId }
|
|
638
|
-
// 2. ValueType object (concise, self-contained)
|
|
632
|
+
// 2. ValueType object (concise, self-contained: carries the schema and the semantic type)
|
|
639
633
|
export function valueTypeRef<const TVT extends ValueType>(
|
|
640
634
|
valueType: TVT
|
|
641
|
-
): {
|
|
635
|
+
): TVT extends { semanticType: infer TSemanticType extends QuantitativeTypeId }
|
|
636
|
+
? {
|
|
637
|
+
type: "valueTypeRef"
|
|
638
|
+
valueTypeId: TVT["id"]
|
|
639
|
+
_resolved: TVT["schema"]
|
|
640
|
+
_semanticType: TSemanticType
|
|
641
|
+
}
|
|
642
|
+
: { type: "valueTypeRef"; valueTypeId: TVT["id"]; _resolved: TVT["schema"] }
|
|
642
643
|
// 3. String id + explicit schema (escape hatch)
|
|
643
644
|
export function valueTypeRef<const TId extends string, const TResolved extends Schema>(
|
|
644
645
|
valueTypeId: TId,
|
|
@@ -659,6 +660,9 @@ export function valueTypeRef(
|
|
|
659
660
|
type: "valueTypeRef",
|
|
660
661
|
valueTypeId: idOrValueType.id,
|
|
661
662
|
_resolved: idOrValueType.schema,
|
|
663
|
+
...(idOrValueType.semanticType === undefined
|
|
664
|
+
? {}
|
|
665
|
+
: { _semanticType: idOrValueType.semanticType }),
|
|
662
666
|
}
|
|
663
667
|
}
|
|
664
668
|
|