@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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Existence checks for `userRef` values written by managed edits.
|
|
3
|
+
*
|
|
4
|
+
* Auth storage is read once per commit, before the serializable transaction opens: every user id
|
|
5
|
+
* the operations carry is looked up, deduplicated, and the statuses travel into the synchronous
|
|
6
|
+
* edit pass. There, an operation may only introduce a user that exists and is active. A value the
|
|
7
|
+
* object already held is never re-checked, so suspending a user leaves the objects that reference
|
|
8
|
+
* them writable. Users are never deleted, so a check at write time stays true for existence.
|
|
9
|
+
*/
|
|
10
|
+
import type { JsonValue } from "../../json"
|
|
11
|
+
import { MaterializationValidationError } from "../../materialization/errors"
|
|
12
|
+
import type { OntologyEditOperation } from "../../materialization/model"
|
|
13
|
+
import type { OntologyRegistry } from "../../ontology"
|
|
14
|
+
import { collectUserRefIds, userReferenceProblem } from "../../ontology/user-ref"
|
|
15
|
+
import type { UserStatus } from "../../storage/auth/types"
|
|
16
|
+
import type { MaterializerContext } from "../context"
|
|
17
|
+
|
|
18
|
+
/** Statuses of the users a commit's operations reference; `null` marks an unknown id. */
|
|
19
|
+
export type ReferencedUsers =
|
|
20
|
+
| { readonly kind: "loaded"; readonly statuses: ReadonlyMap<string, UserStatus | null> }
|
|
21
|
+
| { readonly kind: "unavailable" }
|
|
22
|
+
|
|
23
|
+
const NO_REFERENCED_USERS: ReferencedUsers = { kind: "loaded", statuses: new Map() }
|
|
24
|
+
|
|
25
|
+
export async function loadReferencedUsers(
|
|
26
|
+
context: Pick<MaterializerContext, "projectId" | "ontology" | "storage">,
|
|
27
|
+
operations: readonly OntologyEditOperation[]
|
|
28
|
+
): Promise<ReferencedUsers> {
|
|
29
|
+
const ids = new Set<string>()
|
|
30
|
+
for (const operation of operations) {
|
|
31
|
+
switch (operation.kind) {
|
|
32
|
+
case "object.create":
|
|
33
|
+
case "object.upsert":
|
|
34
|
+
collectObjectUserRefIds(
|
|
35
|
+
context.ontology,
|
|
36
|
+
operation.ref.objectTypeId,
|
|
37
|
+
operation.properties,
|
|
38
|
+
ids
|
|
39
|
+
)
|
|
40
|
+
break
|
|
41
|
+
case "object.patch":
|
|
42
|
+
collectObjectUserRefIds(context.ontology, operation.ref.objectTypeId, operation.set, ids)
|
|
43
|
+
break
|
|
44
|
+
default:
|
|
45
|
+
break
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (ids.size === 0) return NO_REFERENCED_USERS
|
|
49
|
+
|
|
50
|
+
const users = context.storage.auth?.users
|
|
51
|
+
if (!users) return { kind: "unavailable" }
|
|
52
|
+
const entries = await Promise.all(
|
|
53
|
+
[...ids].map(async (id) => {
|
|
54
|
+
const user = await users.getById({ projectId: context.projectId, id })
|
|
55
|
+
return [id, user?.status ?? null] as const
|
|
56
|
+
})
|
|
57
|
+
)
|
|
58
|
+
return { kind: "loaded", statuses: new Map(entries) }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Reject user references an object operation introduces unless the user exists and is active.
|
|
63
|
+
*
|
|
64
|
+
* `before` is the effective object the operation started from; ids it already held under the same
|
|
65
|
+
* property are accepted as they are.
|
|
66
|
+
*/
|
|
67
|
+
export function assertIntroducedUsersActive(
|
|
68
|
+
ontology: OntologyRegistry,
|
|
69
|
+
objectTypeId: string,
|
|
70
|
+
before: Readonly<Record<string, JsonValue>> | undefined,
|
|
71
|
+
after: Readonly<Record<string, JsonValue>>,
|
|
72
|
+
users: ReferencedUsers
|
|
73
|
+
): void {
|
|
74
|
+
const objectType = ontology.resolveObjectType(objectTypeId)
|
|
75
|
+
const valueTypesById = ontology.getValueTypesById()
|
|
76
|
+
for (const property of objectType.properties) {
|
|
77
|
+
const introduced = collectUserRefIds(
|
|
78
|
+
property.schema,
|
|
79
|
+
after[property.id],
|
|
80
|
+
valueTypesById,
|
|
81
|
+
new Set()
|
|
82
|
+
)
|
|
83
|
+
if (introduced.size === 0) continue
|
|
84
|
+
const held = collectUserRefIds(
|
|
85
|
+
property.schema,
|
|
86
|
+
before?.[property.id],
|
|
87
|
+
valueTypesById,
|
|
88
|
+
new Set()
|
|
89
|
+
)
|
|
90
|
+
for (const id of introduced) {
|
|
91
|
+
if (held.has(id)) continue
|
|
92
|
+
const problem = userReferenceProblem(
|
|
93
|
+
`Property '${objectTypeId}.${property.id}'`,
|
|
94
|
+
id,
|
|
95
|
+
users.kind === "unavailable" ? "unverifiable" : (users.statuses.get(id) ?? null)
|
|
96
|
+
)
|
|
97
|
+
if (problem) throw new MaterializationValidationError(problem)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function collectObjectUserRefIds(
|
|
103
|
+
ontology: OntologyRegistry,
|
|
104
|
+
objectTypeId: string,
|
|
105
|
+
properties: Readonly<Record<string, JsonValue>>,
|
|
106
|
+
into: Set<string>
|
|
107
|
+
): void {
|
|
108
|
+
// Unknown types and properties are rejected by the edit pass; nothing to look up for them.
|
|
109
|
+
const objectType = ontology.getObjectTypeById(objectTypeId)
|
|
110
|
+
if (!objectType) return
|
|
111
|
+
const valueTypesById = ontology.getValueTypesById()
|
|
112
|
+
for (const property of objectType.properties) {
|
|
113
|
+
collectUserRefIds(property.schema, properties[property.id], valueTypesById, into)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { EventActor } from "../../events/envelope"
|
|
2
1
|
import type {
|
|
3
2
|
EffectiveLinkChange,
|
|
4
3
|
EffectiveObjectChange,
|
|
@@ -10,6 +9,7 @@ import type {
|
|
|
10
9
|
OntologyMaterializationEvent,
|
|
11
10
|
OntologyMaterializationEventDraft,
|
|
12
11
|
} from "../../storage/ontology"
|
|
12
|
+
import type { MaterializerAttribution } from "../execution/scope"
|
|
13
13
|
import { createEventId, materializationEventKindOrdinal } from "../shared/identity"
|
|
14
14
|
|
|
15
15
|
export interface OrderedMaterializationEventDraft {
|
|
@@ -24,7 +24,7 @@ export interface MaterializationEventDraftContext {
|
|
|
24
24
|
readonly committedAt: string
|
|
25
25
|
readonly correlationId: string
|
|
26
26
|
readonly origin: OntologyMaterializationOrigin
|
|
27
|
-
readonly
|
|
27
|
+
readonly attribution: MaterializerAttribution
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export function buildObjectMaterializationEventDraft(
|
|
@@ -162,16 +162,15 @@ function buildTelemetryEventDraft(
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
function eventDraftBase(context: MaterializationEventDraftContext) {
|
|
165
|
-
|
|
165
|
+
return {
|
|
166
166
|
schemaVersion: 1 as const,
|
|
167
167
|
projectId: context.projectId,
|
|
168
168
|
occurredAt: context.committedAt,
|
|
169
169
|
correlationId: context.correlationId,
|
|
170
170
|
origin: context.origin,
|
|
171
|
+
...context.attribution,
|
|
171
172
|
commitId: context.commitId,
|
|
172
173
|
}
|
|
173
|
-
if (context.actor === undefined) return base
|
|
174
|
-
return { ...base, actor: context.actor }
|
|
175
174
|
}
|
|
176
175
|
|
|
177
176
|
function orderedDraft(
|
|
@@ -1,24 +1,37 @@
|
|
|
1
|
-
import type { EventActor } from "../../events/envelope"
|
|
2
1
|
import { resolveExecutionScopeAuthorization } from "../../execution/authorization"
|
|
3
2
|
import { ensureExecutionRecord, executionRecordInputFromRuntime } from "../../execution/durable"
|
|
4
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
AuthorizablePrincipal,
|
|
5
|
+
ExecutionScope,
|
|
6
|
+
TrustedPrimitiveKind,
|
|
7
|
+
} from "../../execution/types"
|
|
5
8
|
import {
|
|
6
9
|
MaterializationConflictError,
|
|
7
10
|
MaterializationValidationError,
|
|
8
11
|
} from "../../materialization/errors"
|
|
12
|
+
import type { EventExecutor } from "../../materialization/events"
|
|
9
13
|
import type {
|
|
10
14
|
CreateExecutionInput,
|
|
11
15
|
ExecutionRecord,
|
|
12
16
|
ExecutionStorage,
|
|
13
17
|
} from "../../storage/executions"
|
|
14
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Who and what a commit and its events are attributed to. Both are copied from the execution, so
|
|
21
|
+
* they are a pure function of `executionId` and never an input the caller chooses.
|
|
22
|
+
*/
|
|
23
|
+
export interface MaterializerAttribution {
|
|
24
|
+
readonly requestedBy?: AuthorizablePrincipal
|
|
25
|
+
readonly executor: EventExecutor
|
|
26
|
+
}
|
|
27
|
+
|
|
15
28
|
/** Immutable execution metadata attached to one prepared Materializer command. */
|
|
16
29
|
export interface MaterializerExecution {
|
|
17
30
|
readonly scope: ExecutionScope
|
|
18
31
|
readonly record: CreateExecutionInput
|
|
19
32
|
readonly executionId: string
|
|
20
33
|
readonly correlationId: string
|
|
21
|
-
readonly
|
|
34
|
+
readonly attribution: MaterializerAttribution
|
|
22
35
|
}
|
|
23
36
|
|
|
24
37
|
/** Validate the process-local scope before any Materializer read or write is attempted. */
|
|
@@ -26,9 +39,9 @@ export function prepareMaterializerExecution(
|
|
|
26
39
|
projectId: string,
|
|
27
40
|
scope: ExecutionScope
|
|
28
41
|
): MaterializerExecution {
|
|
29
|
-
|
|
42
|
+
resolveExecutionScopeAuthorization(projectId, scope)
|
|
30
43
|
|
|
31
|
-
|
|
44
|
+
return {
|
|
32
45
|
scope,
|
|
33
46
|
record: executionRecordInputFromRuntime({
|
|
34
47
|
execution: scope.execution,
|
|
@@ -36,9 +49,29 @@ export function prepareMaterializerExecution(
|
|
|
36
49
|
}),
|
|
37
50
|
executionId: scope.execution.id,
|
|
38
51
|
correlationId: scope.execution.correlationId,
|
|
52
|
+
attribution: executionAttribution(scope),
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function executionAttribution(scope: ExecutionScope): MaterializerAttribution {
|
|
57
|
+
const { requestedBy, executor } = scope.execution
|
|
58
|
+
const attributed = { executor: eventExecutor(executor) }
|
|
59
|
+
if (requestedBy === undefined) return attributed
|
|
60
|
+
return { ...attributed, requestedBy: { type: requestedBy.type, id: requestedBy.id } }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Drop the process-local Agent actor id: the durable execution does not record it. */
|
|
64
|
+
function eventExecutor(executor: ExecutionScope["execution"]["executor"]): EventExecutor {
|
|
65
|
+
switch (executor.type) {
|
|
66
|
+
case "request":
|
|
67
|
+
return { type: "request", requestId: executor.requestId }
|
|
68
|
+
case "primitive":
|
|
69
|
+
return { type: "primitive", kind: executor.kind, id: executor.id, runId: executor.runId }
|
|
70
|
+
case "agent":
|
|
71
|
+
return { type: "agent", runId: executor.runId }
|
|
72
|
+
case "kernel":
|
|
73
|
+
return { type: "kernel", operation: structuredClone(executor.operation) }
|
|
39
74
|
}
|
|
40
|
-
if (authorization.type !== "principal") return base
|
|
41
|
-
return { ...base, actor: authorization.context.principal }
|
|
42
75
|
}
|
|
43
76
|
|
|
44
77
|
/** Persist a direct request lazily, or prove that a durable worker restored the exact record. */
|
|
@@ -407,6 +407,7 @@ function projectionCommit(
|
|
|
407
407
|
requestHash: identity.requestHash,
|
|
408
408
|
executionId: command.scopeExecution.executionId,
|
|
409
409
|
origin,
|
|
410
|
+
...command.scopeExecution.attribution,
|
|
410
411
|
ontologyRevision: command.runIdentity.ontologyRevision,
|
|
411
412
|
projectionRevision: command.runIdentity.projectionRevision,
|
|
412
413
|
ownershipHash: command.runIdentity.ownershipHash,
|
|
@@ -430,6 +431,7 @@ async function planReadyProjection(
|
|
|
430
431
|
identity: ready.identity,
|
|
431
432
|
origin,
|
|
432
433
|
correlationId: command.scopeExecution.correlationId,
|
|
434
|
+
attribution: command.scopeExecution.attribution,
|
|
433
435
|
}
|
|
434
436
|
if (command.signal === undefined) {
|
|
435
437
|
return planProjectionReplacement(context, storage, session, input)
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
usableLinkSlotOverride,
|
|
38
38
|
} from "../effective/resolve"
|
|
39
39
|
import { validateEffectiveObject } from "../effective/validate"
|
|
40
|
+
import type { MaterializerAttribution } from "../execution/scope"
|
|
40
41
|
import { stageWorkBounded, validateStagedCardinality } from "../execution/work-executor"
|
|
41
42
|
import {
|
|
42
43
|
appendEffectiveLinkWork,
|
|
@@ -55,6 +56,7 @@ export interface ProjectionReplacementPlanInput {
|
|
|
55
56
|
readonly identity: TimedCommitIdentity
|
|
56
57
|
readonly origin: OntologyMaterializationOrigin
|
|
57
58
|
readonly correlationId: string
|
|
59
|
+
readonly attribution: MaterializerAttribution
|
|
58
60
|
readonly signal?: AbortSignal
|
|
59
61
|
}
|
|
60
62
|
|
|
@@ -163,6 +165,7 @@ function appendObjectChangeWork(
|
|
|
163
165
|
committedAt: input.identity.committedAt,
|
|
164
166
|
origin: input.origin,
|
|
165
167
|
correlationId: input.correlationId,
|
|
168
|
+
attribution: input.attribution,
|
|
166
169
|
change,
|
|
167
170
|
})
|
|
168
171
|
)
|
|
@@ -360,6 +363,7 @@ function appendLinkChangeWork(
|
|
|
360
363
|
committedAt: input.identity.committedAt,
|
|
361
364
|
origin: input.origin,
|
|
362
365
|
correlationId: input.correlationId,
|
|
366
|
+
attribution: input.attribution,
|
|
363
367
|
change,
|
|
364
368
|
})
|
|
365
369
|
)
|
|
@@ -401,7 +401,7 @@ async function executeTelemetryTransaction(
|
|
|
401
401
|
origin,
|
|
402
402
|
{
|
|
403
403
|
correlationId: command.execution.correlationId,
|
|
404
|
-
|
|
404
|
+
attribution: command.execution.attribution,
|
|
405
405
|
}
|
|
406
406
|
)
|
|
407
407
|
await drainStagedWork(context, storage, session)
|
|
@@ -475,27 +475,19 @@ function telemetryCommit(
|
|
|
475
475
|
requestHash: command.identity.requestHash,
|
|
476
476
|
executionId: command.execution.executionId,
|
|
477
477
|
origin,
|
|
478
|
+
...command.execution.attribution,
|
|
478
479
|
ontologyRevision: command.ontologyRevision,
|
|
479
480
|
intent: telemetryCommitIntent(command),
|
|
480
481
|
committedAt: command.identity.committedAt,
|
|
481
482
|
}
|
|
482
|
-
|
|
483
|
-
if (command.kind === "runtime") return withActor
|
|
483
|
+
if (command.kind === "runtime") return base
|
|
484
484
|
return {
|
|
485
|
-
...
|
|
485
|
+
...base,
|
|
486
486
|
projectionRevision: command.resolvedProjection.projectionRevision,
|
|
487
487
|
ownershipHash: command.resolvedProjection.ownershipHash,
|
|
488
488
|
}
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
-
function telemetryCommitActor(
|
|
492
|
-
commit: OntologyCommitWrite,
|
|
493
|
-
command: PreparedTelemetryAppend
|
|
494
|
-
): OntologyCommitWrite {
|
|
495
|
-
if (command.execution.actor === undefined) return commit
|
|
496
|
-
return { ...commit, actor: command.execution.actor }
|
|
497
|
-
}
|
|
498
|
-
|
|
499
491
|
function telemetryCommitIntent(command: PreparedTelemetryAppend): TelemetryOntologyCommitIntent {
|
|
500
492
|
if (command.kind === "runtime") {
|
|
501
493
|
return {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { EventActor } from "../../events/envelope"
|
|
2
1
|
import { stableJsonStringify } from "../../json"
|
|
3
2
|
import { MaterializationObjectNotFoundError } from "../../materialization/errors"
|
|
4
3
|
import type {
|
|
@@ -30,6 +29,7 @@ import {
|
|
|
30
29
|
import { diffEffectiveObject } from "../effective/diff"
|
|
31
30
|
import { loadState, oneStateRequest } from "../effective/load-state"
|
|
32
31
|
import { validateEffectiveObject } from "../effective/validate"
|
|
32
|
+
import type { MaterializerAttribution } from "../execution/scope"
|
|
33
33
|
import { stageWorkBounded } from "../execution/work-executor"
|
|
34
34
|
import {
|
|
35
35
|
appendEffectiveObjectWork,
|
|
@@ -68,7 +68,7 @@ interface TelemetryPlanContext {
|
|
|
68
68
|
|
|
69
69
|
interface TelemetryEventContext {
|
|
70
70
|
readonly correlationId: string
|
|
71
|
-
readonly
|
|
71
|
+
readonly attribution: MaterializerAttribution
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
export async function planTelemetryAppend(
|
|
@@ -351,15 +351,14 @@ function telemetryEventContext(
|
|
|
351
351
|
context: Pick<MaterializerContext, "projectId">,
|
|
352
352
|
planContext: TelemetryPlanContext
|
|
353
353
|
) {
|
|
354
|
-
|
|
354
|
+
return {
|
|
355
355
|
projectId: context.projectId,
|
|
356
356
|
commitId: planContext.identity.commitId,
|
|
357
357
|
committedAt: planContext.identity.committedAt,
|
|
358
358
|
origin: planContext.origin,
|
|
359
359
|
correlationId: planContext.event.correlationId,
|
|
360
|
+
attribution: planContext.event.attribution,
|
|
360
361
|
}
|
|
361
|
-
if (planContext.event.actor === undefined) return eventContext
|
|
362
|
-
return { ...eventContext, actor: planContext.event.actor }
|
|
363
362
|
}
|
|
364
363
|
|
|
365
364
|
function emptyTelemetryCounts(): MutableTelemetryPlanCounts {
|
package/src/objects/execution.ts
CHANGED
|
@@ -4,17 +4,15 @@ import {
|
|
|
4
4
|
assertAuthorizedObjectReaderBinding,
|
|
5
5
|
getAuthorizedOntologyView,
|
|
6
6
|
} from "../execution/authorized-object-reader"
|
|
7
|
-
import type { ValueType } from "../ontology"
|
|
8
7
|
import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
|
|
9
8
|
import { assertObjectTypeRegistered } from "../ontology/validation/properties"
|
|
10
9
|
import { shareOntologyMutationRuntime } from "../runtime/ontology-mutations"
|
|
11
10
|
import type {
|
|
12
11
|
ListResult,
|
|
13
12
|
ObjectByIdHandle,
|
|
13
|
+
ObjectReadByIdHandle,
|
|
14
|
+
ObjectReadSet,
|
|
14
15
|
ObjectSet,
|
|
15
|
-
OntologySource,
|
|
16
|
-
RegisteredObjectType,
|
|
17
|
-
RegisteredValueTypes,
|
|
18
16
|
SixbRuntimeContext,
|
|
19
17
|
} from "../runtime/types"
|
|
20
18
|
import type {
|
|
@@ -83,46 +81,28 @@ export interface ExecutionObjectOperations {
|
|
|
83
81
|
): Promise<void>
|
|
84
82
|
}
|
|
85
83
|
|
|
86
|
-
export interface ExecutionObjectByIdHandle<
|
|
87
|
-
TObjectType
|
|
88
|
-
|
|
89
|
-
>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
unlink: ObjectByIdHandle<TObjectType, TValueTypes>["unlink"]
|
|
97
|
-
delete: ObjectByIdHandle<TObjectType, TValueTypes>["delete"]
|
|
98
|
-
restore: ObjectByIdHandle<TObjectType, TValueTypes>["restore"]
|
|
99
|
-
telemetry: ObjectByIdHandle<TObjectType, TValueTypes>["telemetry"]
|
|
84
|
+
export interface ExecutionObjectByIdHandle<TObjectType extends ObjectTypeWithPropertyTokens>
|
|
85
|
+
extends ObjectReadByIdHandle<TObjectType> {
|
|
86
|
+
vector: ObjectByIdHandle<TObjectType>["vector"]
|
|
87
|
+
requestAction: ObjectByIdHandle<TObjectType>["requestAction"]
|
|
88
|
+
requestActionAndWait: ObjectByIdHandle<TObjectType>["requestActionAndWait"]
|
|
89
|
+
link: ObjectByIdHandle<TObjectType>["link"]
|
|
90
|
+
unlink: ObjectByIdHandle<TObjectType>["unlink"]
|
|
91
|
+
delete: ObjectByIdHandle<TObjectType>["delete"]
|
|
92
|
+
restore: ObjectByIdHandle<TObjectType>["restore"]
|
|
93
|
+
telemetry: ObjectByIdHandle<TObjectType>["telemetry"]
|
|
100
94
|
}
|
|
101
95
|
|
|
102
|
-
export interface ExecutionObjectSet<
|
|
103
|
-
TObjectType
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
>
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
requestAction: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>["requestAction"]
|
|
111
|
-
requestActionAndWait: ObjectSet<
|
|
112
|
-
TObjectType,
|
|
113
|
-
TValueTypes,
|
|
114
|
-
TRegisteredObjectTypes
|
|
115
|
-
>["requestActionAndWait"]
|
|
116
|
-
upsert: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>["upsert"]
|
|
117
|
-
upsertLink: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>["upsertLink"]
|
|
118
|
-
removeLink: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>["removeLink"]
|
|
119
|
-
appendTelemetryBatch: ObjectSet<
|
|
120
|
-
TObjectType,
|
|
121
|
-
TValueTypes,
|
|
122
|
-
TRegisteredObjectTypes
|
|
123
|
-
>["appendTelemetryBatch"]
|
|
96
|
+
export interface ExecutionObjectSet<TObjectType extends ObjectTypeWithPropertyTokens>
|
|
97
|
+
extends ObjectReadSet<TObjectType> {
|
|
98
|
+
requestAction: ObjectSet<TObjectType>["requestAction"]
|
|
99
|
+
requestActionAndWait: ObjectSet<TObjectType>["requestActionAndWait"]
|
|
100
|
+
upsert: ObjectSet<TObjectType>["upsert"]
|
|
101
|
+
upsertLink: ObjectSet<TObjectType>["upsertLink"]
|
|
102
|
+
removeLink: ObjectSet<TObjectType>["removeLink"]
|
|
103
|
+
appendTelemetryBatch: ObjectSet<TObjectType>["appendTelemetryBatch"]
|
|
124
104
|
|
|
125
|
-
byId(id: string): ExecutionObjectByIdHandle<TObjectType
|
|
105
|
+
byId(id: string): ExecutionObjectByIdHandle<TObjectType>
|
|
126
106
|
}
|
|
127
107
|
|
|
128
108
|
/** Public input for querying physical links incident to an object query result. */
|
|
@@ -131,15 +111,10 @@ export type ObjectQueryLinksInput = Omit<ExecuteObjectQueryLinksInput, "projectI
|
|
|
131
111
|
/** Public result returned by {@link ObjectsRuntime.queryLinks}. */
|
|
132
112
|
export type ObjectQueryLinksResult = ExecuteObjectQueryLinksResult
|
|
133
113
|
|
|
134
|
-
export interface ObjectsRuntime
|
|
135
|
-
extends
|
|
136
|
-
<TObjectType extends RegisteredObjectType<TOntologySources>>(
|
|
114
|
+
export interface ObjectsRuntime extends ExecutionObjectOperations {
|
|
115
|
+
<TObjectType extends ObjectTypeWithPropertyTokens>(
|
|
137
116
|
objectType: TObjectType
|
|
138
|
-
): ExecutionObjectSet<
|
|
139
|
-
TObjectType,
|
|
140
|
-
RegisteredValueTypes<TOntologySources>,
|
|
141
|
-
RegisteredObjectType<TOntologySources>
|
|
142
|
-
>
|
|
117
|
+
): ExecutionObjectSet<TObjectType>
|
|
143
118
|
executeQuery(input: Omit<ExecuteObjectQueryInput, "projectId">): Promise<ExecuteObjectQueryResult>
|
|
144
119
|
queryLinks(input: ObjectQueryLinksInput): Promise<ObjectQueryLinksResult>
|
|
145
120
|
count(input: Omit<ExecuteObjectCountInput, "projectId">): Promise<ExecuteObjectCountResult>
|
|
@@ -170,10 +145,10 @@ export interface ObjectsRuntime<TOntologySources extends readonly OntologySource
|
|
|
170
145
|
}): Promise<TimeseriesPoint | null>
|
|
171
146
|
}
|
|
172
147
|
|
|
173
|
-
export function createObjectsRuntime
|
|
148
|
+
export function createObjectsRuntime(
|
|
174
149
|
runtime: SixbRuntimeContext,
|
|
175
150
|
execution: ExecutionContext
|
|
176
|
-
): ObjectsRuntime
|
|
151
|
+
): ObjectsRuntime {
|
|
177
152
|
const runtimeAuthorization = runtime.runtimeAuthorization
|
|
178
153
|
const objectReader = runtime.objectReader
|
|
179
154
|
assertAuthorizedObjectReaderBinding({
|
|
@@ -199,17 +174,13 @@ export function createObjectsRuntime<TOntologySources extends readonly OntologyS
|
|
|
199
174
|
Object.freeze(capturedRuntime)
|
|
200
175
|
const ontologyView = () => getAuthorizedOntologyView(objectReader)
|
|
201
176
|
const objects = Object.assign(
|
|
202
|
-
<TObjectType extends
|
|
177
|
+
<TObjectType extends ObjectTypeWithPropertyTokens>(objectType: TObjectType) => {
|
|
203
178
|
assertObjectTypeRegistered(capturedRuntime.ontology.getObjectTypesById(), objectType)
|
|
204
|
-
return createObjectSet<
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
TObjectType,
|
|
210
|
-
RegisteredValueTypes<TOntologySources>,
|
|
211
|
-
RegisteredObjectType<TOntologySources>
|
|
212
|
-
>
|
|
179
|
+
return createObjectSet<TObjectType>({
|
|
180
|
+
...capturedRuntime,
|
|
181
|
+
execution,
|
|
182
|
+
objectType,
|
|
183
|
+
}) as ExecutionObjectSet<TObjectType>
|
|
213
184
|
},
|
|
214
185
|
{
|
|
215
186
|
listTypes: () => ontologyView().listObjectTypes(),
|
|
@@ -319,5 +290,5 @@ export function createObjectsRuntime<TOntologySources extends readonly OntologyS
|
|
|
319
290
|
}
|
|
320
291
|
)
|
|
321
292
|
|
|
322
|
-
return objects as ObjectsRuntime
|
|
293
|
+
return objects as ObjectsRuntime
|
|
323
294
|
}
|
|
@@ -30,6 +30,7 @@ import type {
|
|
|
30
30
|
ObjectQueryPredicate,
|
|
31
31
|
ObjectQueryResultShape,
|
|
32
32
|
ObjectQuerySortField,
|
|
33
|
+
QueryScalarKind,
|
|
33
34
|
} from "./ir"
|
|
34
35
|
import { normalizeObjectQuery } from "./normalize"
|
|
35
36
|
import { type ObjectQueryPlan, type ObjectQueryPlanningOptions, planObjectQuery } from "./planner"
|
|
@@ -1104,17 +1105,25 @@ function matchesPredicate(row: ObjectRow, predicate: ObjectQueryPredicate): bool
|
|
|
1104
1105
|
return predicate.value ? exists : !exists
|
|
1105
1106
|
}
|
|
1106
1107
|
case "contains":
|
|
1107
|
-
return containsValue(
|
|
1108
|
+
return containsValue(
|
|
1109
|
+
row.properties[predicate.propertyId],
|
|
1110
|
+
predicate.value,
|
|
1111
|
+
predicate.scalarKind
|
|
1112
|
+
)
|
|
1108
1113
|
}
|
|
1109
1114
|
}
|
|
1110
1115
|
|
|
1111
|
-
function containsValue(
|
|
1116
|
+
function containsValue(
|
|
1117
|
+
actual: unknown,
|
|
1118
|
+
expected: unknown,
|
|
1119
|
+
itemScalarKind: QueryScalarKind | undefined
|
|
1120
|
+
): boolean {
|
|
1112
1121
|
if (typeof actual === "string" && typeof expected === "string") {
|
|
1113
1122
|
return actual.includes(expected)
|
|
1114
1123
|
}
|
|
1115
1124
|
|
|
1116
1125
|
if (Array.isArray(actual)) {
|
|
1117
|
-
return actual.some((item) => queryScalarValuesEqual(item, expected))
|
|
1126
|
+
return actual.some((item) => queryScalarValuesEqual(item, expected, itemScalarKind))
|
|
1118
1127
|
}
|
|
1119
1128
|
|
|
1120
1129
|
if (isPlainObject(actual) && typeof expected === "string") {
|
package/src/objects/query/ir.ts
CHANGED
|
@@ -20,6 +20,8 @@ export type QueryScalarKind =
|
|
|
20
20
|
| "decimal"
|
|
21
21
|
| "date"
|
|
22
22
|
| "timestamp"
|
|
23
|
+
/** A `{ type: "user", id }` value, equal when both fields are. */
|
|
24
|
+
| "userRef"
|
|
23
25
|
|
|
24
26
|
export type ObjectQuery =
|
|
25
27
|
| ObjectQueryStart
|
|
@@ -214,6 +216,11 @@ export interface ObjectQueryPredicateContains {
|
|
|
214
216
|
op: "contains"
|
|
215
217
|
propertyId: string
|
|
216
218
|
value: unknown
|
|
219
|
+
/**
|
|
220
|
+
* Core-resolved scalar schema of the array's items when the property is an array; never
|
|
221
|
+
* authored by callers. String substring and map key matches carry none.
|
|
222
|
+
*/
|
|
223
|
+
scalarKind?: QueryScalarKind
|
|
217
224
|
}
|
|
218
225
|
|
|
219
226
|
export type ObjectQuerySortField =
|
|
@@ -33,6 +33,9 @@ export function compareQueryScalarValues(
|
|
|
33
33
|
case "date":
|
|
34
34
|
case "timestamp":
|
|
35
35
|
return compareTemporalValues(left, right)
|
|
36
|
+
case "userRef":
|
|
37
|
+
// Identity only: user references have no order.
|
|
38
|
+
return Number.NaN
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
|
|
@@ -52,10 +55,26 @@ export function queryScalarValuesEqual(
|
|
|
52
55
|
return !Number.isNaN(comparison) && comparison === 0
|
|
53
56
|
}
|
|
54
57
|
|
|
58
|
+
if (scalarKind === "userRef") return userRefsEqual(left, right)
|
|
55
59
|
if (scalarKind !== undefined) return Object.is(left, right)
|
|
56
60
|
return runtimeValuesEqual(left, right)
|
|
57
61
|
}
|
|
58
62
|
|
|
63
|
+
function userRefsEqual(left: unknown, right: unknown): boolean {
|
|
64
|
+
if (left === null || right === null) return left === right
|
|
65
|
+
return (
|
|
66
|
+
isRecord(left) &&
|
|
67
|
+
isRecord(right) &&
|
|
68
|
+
left.type === right.type &&
|
|
69
|
+
typeof left.id === "string" &&
|
|
70
|
+
left.id === right.id
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
75
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
76
|
+
}
|
|
77
|
+
|
|
59
78
|
function compareRuntimeValues(left: unknown, right: unknown): number {
|
|
60
79
|
if (typeof left === "number" && typeof right === "number") return left - right
|
|
61
80
|
if (typeof left === "string" && typeof right === "string") return compareStrings(left, right)
|