@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/projections/revision.ts", "../src/projections/registry.ts", "../src/materializer/shared/batching.ts", "../src/materializer/shared/identity.ts", "../src/materializer/context.ts", "../src/materializer/execution/commit-lifecycle.ts", "../src/materializer/execution/scope.ts", "../src/materializer/effective/build-events.ts", "../src/materializer/effective/vector-indexing.ts", "../src/materializer/effective/vectors.ts", "../src/materializer/shared/abort.ts", "../src/materializer/shared/chunking.ts", "../src/materializer/execution/plan-stream.ts", "../src/materializer/execution/work-records.ts", "../src/materializer/execution/work-executor.ts", "../src/materializer/shared/normalize.ts", "../src/materializer/edits/execution-units.ts", "../src/materializer/effective/load-state.ts", "../src/materializer/effective/resolve.ts", "../src/materializer/edits/read-set.ts", "../src/materializer/edits/working-state.ts", "../src/materializer/edits/load-state.ts", "../src/materializer/effective/diff.ts", "../src/materializer/effective/validate.ts", "../src/materializer/edits/apply.ts", "../src/materializer/edits/operations.ts", "../src/materializer/edits/plan.ts", "../src/materializer/edits/vector-authority.ts", "../src/materializer/edits/vectors.ts", "../src/materializer/edits/commit.ts", "../src/materializer/execution/run-correlation.ts", "../src/materializer/shared/projection-run.ts", "../src/materializer/projections/finish-run.ts", "../src/materializer/projections/entry-validator.ts", "../src/materializer/projections/replacement-plan.ts", "../src/materializer/projections/source-materialization.ts", "../src/materializer/projections/replace.ts", "../src/materializer/telemetry/plan.ts", "../src/materializer/telemetry/append.ts", "../src/materializer/materializer.ts"],
|
|
3
|
+
"sources": ["../src/projections/revision.ts", "../src/projections/registry.ts", "../src/materializer/shared/batching.ts", "../src/materializer/shared/identity.ts", "../src/materializer/context.ts", "../src/materializer/execution/commit-lifecycle.ts", "../src/materializer/execution/scope.ts", "../src/materializer/effective/build-events.ts", "../src/materializer/effective/vector-indexing.ts", "../src/materializer/effective/vectors.ts", "../src/materializer/shared/abort.ts", "../src/materializer/shared/chunking.ts", "../src/materializer/execution/plan-stream.ts", "../src/materializer/execution/work-records.ts", "../src/materializer/execution/work-executor.ts", "../src/materializer/shared/normalize.ts", "../src/materializer/edits/execution-units.ts", "../src/materializer/effective/load-state.ts", "../src/materializer/effective/resolve.ts", "../src/materializer/edits/read-set.ts", "../src/materializer/edits/working-state.ts", "../src/materializer/edits/load-state.ts", "../src/materializer/effective/diff.ts", "../src/materializer/effective/validate.ts", "../src/materializer/edits/apply.ts", "../src/materializer/edits/user-refs.ts", "../src/materializer/edits/operations.ts", "../src/materializer/edits/plan.ts", "../src/materializer/edits/vector-authority.ts", "../src/materializer/edits/vectors.ts", "../src/materializer/edits/commit.ts", "../src/materializer/execution/run-correlation.ts", "../src/materializer/shared/projection-run.ts", "../src/materializer/projections/finish-run.ts", "../src/materializer/projections/entry-validator.ts", "../src/materializer/projections/replacement-plan.ts", "../src/materializer/projections/source-materialization.ts", "../src/materializer/projections/replace.ts", "../src/materializer/telemetry/plan.ts", "../src/materializer/telemetry/append.ts", "../src/materializer/materializer.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { DatasetDefinition } from \"../datasets\"\nimport { compareStrings, type JsonValue } from \"../json\"\nimport { sha256Canonical } from \"../materialization/identity\"\nimport type { OntologyDefinitionCatalog } from \"../ontology\"\nimport type { ObjectFieldSchema, Property, Schema } from \"../ontology/types\"\nimport type { ProjectionDefinition, ProjectionOwnership } from \"./types\"\n\nexport function computeOntologyRevision(ontology: OntologyDefinitionCatalog): string {\n const referencedValueTypeIds = collectOntologyValueTypeDependencies(ontology)\n return sha256Canonical({\n objectTypes: normalizeOntologyObjectTypes(ontology),\n valueTypes: normalizeOntologyValueTypes(ontology, referencedValueTypeIds),\n })\n}\n\nfunction collectOntologyValueTypeDependencies(\n ontology: OntologyDefinitionCatalog\n): ReadonlySet<string> {\n const referencedValueTypeIds = new Set<string>()\n for (const objectType of ontology.getObjectTypesById().values()) {\n for (const property of objectType.properties) {\n collectReferencedValueTypeIds(property.schema, referencedValueTypeIds)\n }\n for (const link of objectType.links) {\n for (const property of link.properties ?? []) {\n collectReferencedValueTypeIds(property.schema, referencedValueTypeIds)\n }\n }\n }\n const pending = [...referencedValueTypeIds]\n const queued = new Set(pending)\n for (let index = 0; index < pending.length; index += 1) {\n const valueType = ontology.getValueTypesById().get(pending[index])\n if (!valueType) continue\n collectReferencedValueTypeIds(valueType.schema, referencedValueTypeIds)\n for (const valueTypeId of referencedValueTypeIds) {\n if (queued.has(valueTypeId)) continue\n queued.add(valueTypeId)\n pending.push(valueTypeId)\n }\n }\n return referencedValueTypeIds\n}\n\nfunction normalizeOntologyValueTypes(\n ontology: OntologyDefinitionCatalog,\n referencedValueTypeIds: ReadonlySet<string>\n): JsonValue[] {\n return [...referencedValueTypeIds]\n .sort(compareStrings)\n .map((valueTypeId) => ontology.getValueTypesById().get(valueTypeId))\n .filter((valueType) => valueType !== undefined)\n .map((valueType) => ({\n id: valueType.id,\n schema: normalizeSchema(valueType.schema),\n semanticType: valueType.semanticType ?? null,\n }))\n}\n\nfunction normalizeOntologyObjectTypes(ontology: OntologyDefinitionCatalog): JsonValue[] {\n return [...ontology.getObjectTypesById().values()]\n .sort((left, right) => compareStrings(left.id, right.id))\n .map((objectType) => ({\n id: objectType.id,\n extends: objectType.extends ?? null,\n parents: [...(objectType.parents ?? [])].sort(),\n implements: [...(objectType.implements ?? [])].sort(),\n properties: [...objectType.properties]\n .sort((left, right) => compareStrings(left.id, right.id))\n .map(normalizeProperty),\n links: [...objectType.links]\n .sort((left, right) => compareStrings(left.id, right.id))\n .map((link) => ({\n id: link.id,\n targetObjectTypeIds: Array.isArray(link.targetObjectTypeId)\n ? [...link.targetObjectTypeId].sort()\n : [link.targetObjectTypeId],\n cardinality: link.cardinality ?? \"many\",\n properties: [...(link.properties ?? [])]\n .sort((left, right) => compareStrings(left.id, right.id))\n .map(normalizeProperty),\n })),\n }))\n}\n\nfunction collectReferencedValueTypeIds(schema: Schema, valueTypeIds: Set<string>): void {\n if (typeof schema === \"string\" || schema.type === \"enum\") return\n if (schema.type === \"valueTypeRef\") {\n valueTypeIds.add(schema.valueTypeId)\n return\n }\n if (schema.type === \"array\") {\n collectReferencedValueTypeIds(schema.items, valueTypeIds)\n return\n }\n if (schema.type === \"map\") {\n collectReferencedValueTypeIds(schema.valueSchema, valueTypeIds)\n return\n }\n for (const field of Object.values(schema.properties)) {\n collectReferencedValueTypeIds(field.schema, valueTypeIds)\n }\n}\n\nexport function computeProjectionRevision(\n projection: ProjectionDefinition,\n dataset: DatasetDefinition\n): string {\n const referencedColumns = projectionColumns(projection)\n const columns = dataset.schema.columns\n .filter((column) => referencedColumns.has(column.name))\n .map((column) => ({\n name: column.name,\n type: column.type,\n nullable: column.nullable ?? false,\n }))\n .sort((left, right) => compareStrings(left.name, right.name))\n\n return sha256Canonical({\n mapping: normalizeProjectionDefinition(projection),\n columns,\n })\n}\n\nexport function computeProjectionOwnershipHash(ownership: ProjectionOwnership): string {\n return sha256Canonical(ownership)\n}\n\nfunction normalizeProjectionDefinition(projection: ProjectionDefinition): JsonValue {\n if (projection._tag === \"ObjectProjectionDefinition\") {\n return {\n kind: \"object\",\n objectTypeId: projection.objectTypeId,\n properties: Object.fromEntries(\n Object.entries(projection.properties).sort(([left], [right]) => compareStrings(left, right))\n ),\n links: Object.fromEntries(\n Object.entries(projection.links)\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([linkId, link]) => [\n linkId,\n {\n linkId: link.linkId,\n sourcePropertyId: link.sourcePropertyId ?? null,\n sourceField: link.sourceField ?? null,\n targetObjectTypeId: link.targetObjectTypeId,\n },\n ])\n ),\n conflictResolution: projection.conflictResolution ?? { strategy: \"editsWin\" },\n }\n }\n if (projection._tag === \"LinkProjectionDefinition\") {\n return {\n kind: \"link\",\n sourceObjectTypeId: projection.sourceObjectTypeId,\n linkId: projection.linkId,\n targetObjectTypeId: projection.targetObjectTypeId,\n sourceField: projection.sourceField,\n targetField: projection.targetField,\n }\n }\n const properties = Object.entries(projection.properties).sort(([left], [right]) =>\n compareStrings(left, right)\n )\n if (properties.length === 1) {\n const [propertyId, mapping] = properties[0]\n // Preserve the pre-grouping semantic hash for one-property projections. The authoring form and\n // lowered shape changed, but the source semantics did not; keeping the hash stable prevents a\n // deployment from invalidating queued jobs or replaying completed dataset versions.\n return {\n kind: \"telemetry\",\n objectTypeId: projection.objectTypeId,\n propertyId,\n objectIdField: projection.objectIdField,\n atField: projection.atField,\n valueField: mapping.valueField,\n unitField: mapping.unitField ?? null,\n }\n }\n return {\n kind: \"telemetry\",\n objectTypeId: projection.objectTypeId,\n objectIdField: projection.objectIdField,\n atField: projection.atField,\n properties: Object.fromEntries(\n properties.map(([propertyId, mapping]) => [\n propertyId,\n {\n valueField: mapping.valueField,\n unitField: mapping.unitField ?? null,\n },\n ])\n ),\n }\n}\n\nfunction projectionColumns(projection: ProjectionDefinition): Set<string> {\n if (projection._tag === \"ObjectProjectionDefinition\") {\n return new Set([\n ...Object.values(projection.properties),\n ...Object.values(projection.links).flatMap((link) =>\n link.sourceField === undefined ? [] : [link.sourceField]\n ),\n ...(projection.conflictResolution?.strategy === \"mostRecent\"\n ? [projection.conflictResolution.sourceTimestamp]\n : []),\n ])\n }\n if (projection._tag === \"LinkProjectionDefinition\") {\n return new Set([projection.sourceField, projection.targetField])\n }\n return new Set([\n projection.objectIdField,\n projection.atField,\n ...Object.values(projection.properties).flatMap((mapping) => [\n mapping.valueField,\n ...(mapping.unitField === undefined ? [] : [mapping.unitField]),\n ]),\n ])\n}\n\nfunction normalizeProperty(property: Property): JsonValue {\n return {\n id: property.id,\n schema: normalizeSchema(property.schema),\n required: property.required ?? false,\n nullable: property.nullable ?? false,\n primary: property.primary ?? false,\n mode: property.mode ?? \"static\",\n semanticType: property.semanticType ?? null,\n }\n}\n\nfunction normalizeSchema(schema: Schema): JsonValue {\n if (typeof schema === \"string\") return schema\n if (schema.type === \"valueTypeRef\") {\n return { type: \"valueTypeRef\", valueTypeId: schema.valueTypeId }\n }\n if (schema.type === \"enum\") {\n return {\n type: \"enum\",\n valueType: schema.valueType,\n values:\n schema.valueType === \"string\"\n ? [...schema.values].sort(compareStrings)\n : [...schema.values].sort((left, right) => left - right),\n }\n }\n if (schema.type === \"array\") {\n return { type: \"array\", items: normalizeSchema(schema.items) }\n }\n if (schema.type === \"map\") {\n return {\n type: \"map\",\n keySchema: schema.keySchema,\n valueSchema: normalizeSchema(schema.valueSchema),\n }\n }\n return {\n type: \"object\",\n properties: Object.fromEntries(\n Object.entries(schema.properties)\n .sort(([left], [right]) => compareStrings(left, right))\n .map(([fieldId, field]) => [fieldId, normalizeField(field)])\n ),\n }\n}\n\nfunction normalizeField(field: ObjectFieldSchema): JsonValue {\n return {\n schema: normalizeSchema(field.schema),\n required: field.required ?? false,\n nullable: field.nullable ?? false,\n semanticType: field.semanticType ?? null,\n }\n}\n",
|
|
6
6
|
"import type { DatasetDefinition } from \"../datasets\"\nimport type { OntologyDefinitionCatalog } from \"../ontology\"\nimport { isProjectionDefinition } from \"./builders\"\nimport { ProjectionValidationError } from \"./errors\"\nimport {\n computeOntologyRevision,\n computeProjectionOwnershipHash,\n computeProjectionRevision,\n} from \"./revision\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ProjectionDefinition,\n ProjectionDispatchDescriptor,\n ResolvedProjection,\n TelemetryProjectionDefinition,\n} from \"./types\"\nimport { type ValidatedProjectionRecord, validateProjectionsAtStartup } from \"./validation\"\n\ntype SourceProjectionDefinition = ObjectProjectionDefinition | LinkProjectionDefinition\n\n/** Public definition catalog backed by the host's validated projection registry. */\nexport interface ProjectionDefinitionCatalog {\n list(): readonly ProjectionDefinition[]\n getById(projectionId: string): ProjectionDefinition | null\n listObjects(): readonly ObjectProjectionDefinition[]\n listLinks(): readonly LinkProjectionDefinition[]\n listTelemetry(): readonly TelemetryProjectionDefinition[]\n}\n\nexport interface ProjectionRegistryOptions {\n readonly projections: readonly ProjectionDefinition[]\n readonly ontology: OntologyDefinitionCatalog\n readonly datasetsById: ReadonlyMap<string, DatasetDefinition>\n}\n\nexport class ProjectionRegistry implements ProjectionDefinitionCatalog {\n readonly ontologyRevision: string\n private readonly objectProjections: readonly ObjectProjectionDefinition[]\n private readonly linkProjections: readonly LinkProjectionDefinition[]\n private readonly telemetryProjections: readonly TelemetryProjectionDefinition[]\n private readonly projectionsById = new Map<string, ProjectionDefinition>()\n private readonly sourceById = new Map<string, ResolvedProjection<SourceProjectionDefinition>>()\n private readonly telemetryById = new Map<\n string,\n ResolvedProjection<TelemetryProjectionDefinition>\n >()\n private readonly dispatchById = new Map<string, ProjectionDispatchDescriptor>()\n private readonly dispatchDescriptors: readonly ProjectionDispatchDescriptor[]\n\n constructor(input: ProjectionRegistryOptions) {\n const objectProjections: ObjectProjectionDefinition[] = []\n const linkProjections: LinkProjectionDefinition[] = []\n const telemetryProjections: TelemetryProjectionDefinition[] = []\n for (const projection of input.projections) {\n if (!isProjectionDefinition(projection)) {\n throw new ProjectionValidationError(\"[Sixb] Invalid projection definition.\")\n }\n switch (projection._tag) {\n case \"ObjectProjectionDefinition\":\n objectProjections.push(deepFreeze(cloneObjectProjectionDefinition(projection)))\n break\n case \"LinkProjectionDefinition\":\n linkProjections.push(deepFreeze(cloneLinkProjectionDefinition(projection)))\n break\n case \"TelemetryProjectionDefinition\":\n telemetryProjections.push(deepFreeze(cloneTelemetryProjectionDefinition(projection)))\n break\n }\n }\n this.objectProjections = Object.freeze(objectProjections)\n this.linkProjections = Object.freeze(linkProjections)\n this.telemetryProjections = Object.freeze(telemetryProjections)\n\n const projections = [\n ...this.objectProjections,\n ...this.linkProjections,\n ...this.telemetryProjections,\n ]\n assertUniqueProjectionIds(projections)\n const validated = validateProjectionsAtStartup(\n {\n objectProjections: this.objectProjections,\n linkProjections: this.linkProjections,\n telemetryProjections: this.telemetryProjections,\n },\n input.ontology,\n input.datasetsById\n )\n this.ontologyRevision = computeOntologyRevision(input.ontology)\n\n const dispatchDescriptors: ProjectionDispatchDescriptor[] = []\n for (const record of validated.objectProjections) {\n const resolved = createResolvedProjection(record)\n this.sourceById.set(resolved.projectionId, resolved)\n this.projectionsById.set(resolved.projectionId, resolved.definition)\n dispatchDescriptors.push(createDispatchDescriptor(resolved, this.ontologyRevision))\n }\n for (const record of validated.linkProjections) {\n const resolved = createResolvedProjection(record)\n this.sourceById.set(resolved.projectionId, resolved)\n this.projectionsById.set(resolved.projectionId, resolved.definition)\n dispatchDescriptors.push(createDispatchDescriptor(resolved, this.ontologyRevision))\n }\n for (const record of validated.telemetryProjections) {\n const resolved = createResolvedProjection(record)\n this.telemetryById.set(resolved.projectionId, resolved)\n this.projectionsById.set(resolved.projectionId, resolved.definition)\n dispatchDescriptors.push(createDispatchDescriptor(resolved, this.ontologyRevision))\n }\n this.dispatchDescriptors = Object.freeze(dispatchDescriptors)\n for (const descriptor of this.dispatchDescriptors) {\n this.dispatchById.set(descriptor.projectionId, descriptor)\n }\n }\n\n list(): readonly ProjectionDefinition[] {\n return [...this.objectProjections, ...this.linkProjections, ...this.telemetryProjections]\n }\n\n listObjects(): readonly ObjectProjectionDefinition[] {\n return this.objectProjections\n }\n\n listLinks(): readonly LinkProjectionDefinition[] {\n return this.linkProjections\n }\n\n listTelemetry(): readonly TelemetryProjectionDefinition[] {\n return this.telemetryProjections\n }\n\n getById(projectionId: string): ProjectionDefinition | null {\n return this.projectionsById.get(projectionId) ?? null\n }\n\n getDispatchDescriptors(): readonly ProjectionDispatchDescriptor[] {\n return this.dispatchDescriptors\n }\n\n resolveDispatch(projectionId: string): ProjectionDispatchDescriptor {\n const descriptor = this.dispatchById.get(projectionId)\n if (descriptor) return descriptor\n throw new ProjectionValidationError(`[Sixb] Unknown projection '${projectionId}'.`)\n }\n\n resolveSource(projectionId: string): ResolvedProjection<SourceProjectionDefinition> {\n const resolved = this.sourceById.get(projectionId)\n if (!resolved) {\n if (this.telemetryById.has(projectionId)) {\n throw new ProjectionValidationError(\n `[Sixb] Projection '${projectionId}' is telemetry-only and cannot replace source state.`\n )\n }\n throw new ProjectionValidationError(`[Sixb] Unknown source projection '${projectionId}'.`)\n }\n return resolved\n }\n\n resolveTelemetry(projectionId: string): ResolvedProjection<TelemetryProjectionDefinition> {\n const resolved = this.telemetryById.get(projectionId)\n if (!resolved) {\n if (this.sourceById.has(projectionId)) {\n throw new ProjectionValidationError(\n `[Sixb] Projection '${projectionId}' does not own a telemetry source.`\n )\n }\n throw new ProjectionValidationError(`[Sixb] Unknown telemetry projection '${projectionId}'.`)\n }\n return resolved\n }\n}\n\nfunction createDispatchDescriptor(\n resolved: ResolvedProjection<ProjectionDefinition>,\n ontologyRevision: string\n): ProjectionDispatchDescriptor {\n const common = {\n projectionId: resolved.projectionId,\n datasetId: resolved.datasetId,\n ontologyRevision,\n projectionRevision: resolved.projectionRevision,\n ownershipHash: resolved.ownershipHash,\n }\n\n switch (resolved.definition._tag) {\n case \"ObjectProjectionDefinition\":\n return deepFreeze({ ...common, projectionKind: \"object\", protocol: \"replacement\" })\n case \"LinkProjectionDefinition\":\n return deepFreeze({ ...common, projectionKind: \"link\", protocol: \"replacement\" })\n case \"TelemetryProjectionDefinition\":\n return deepFreeze({ ...common, projectionKind: \"telemetry\", protocol: \"telemetry\" })\n }\n}\n\nfunction assertUniqueProjectionIds(projections: readonly ProjectionDefinition[]): void {\n const ids = new Set<string>()\n for (const projection of projections) {\n if (ids.has(projection.id)) {\n throw new ProjectionValidationError(`[Sixb] Duplicate projection id: ${projection.id}`)\n }\n ids.add(projection.id)\n }\n}\n\nfunction createResolvedProjection<TDefinition extends ProjectionDefinition>(\n validated: ValidatedProjectionRecord<TDefinition>\n): ResolvedProjection<TDefinition> {\n const { definition, dataset, ownership } = validated\n return deepFreeze({\n projectionId: definition.id,\n datasetId: definition.datasetId,\n projectionRevision: computeProjectionRevision(definition, dataset),\n ownershipHash: computeProjectionOwnershipHash(ownership),\n ownership,\n definition,\n })\n}\n\n// Projection builders may attach fluent methods and callers may supply extra fields. Clone only the\n// frozen contract so resolved definitions stay serializable and cannot leak unsupported metadata.\nfunction cloneObjectProjectionDefinition(\n projection: ObjectProjectionDefinition\n): ObjectProjectionDefinition {\n return {\n _tag: projection._tag,\n id: projection.id,\n objectTypeId: projection.objectTypeId,\n datasetId: projection.datasetId,\n properties: { ...projection.properties },\n links: Object.fromEntries(\n Object.entries(projection.links).map(([linkId, descriptor]) => [\n linkId,\n {\n linkId: descriptor.linkId,\n ...(descriptor.sourcePropertyId !== undefined\n ? { sourcePropertyId: descriptor.sourcePropertyId }\n : {}),\n ...(descriptor.sourceField !== undefined ? { sourceField: descriptor.sourceField } : {}),\n targetObjectTypeId: descriptor.targetObjectTypeId,\n },\n ])\n ),\n conflictResolution:\n projection.conflictResolution?.strategy === \"mostRecent\"\n ? {\n strategy: \"mostRecent\",\n sourceTimestamp: projection.conflictResolution.sourceTimestamp,\n }\n : { strategy: \"editsWin\" },\n }\n}\n\nfunction cloneLinkProjectionDefinition(\n projection: LinkProjectionDefinition\n): LinkProjectionDefinition {\n return {\n _tag: \"LinkProjectionDefinition\",\n id: projection.id,\n linkId: projection.linkId,\n sourceObjectTypeId: projection.sourceObjectTypeId,\n targetObjectTypeId: projection.targetObjectTypeId,\n datasetId: projection.datasetId,\n sourceField: projection.sourceField,\n targetField: projection.targetField,\n }\n}\n\nfunction cloneTelemetryProjectionDefinition(\n projection: TelemetryProjectionDefinition\n): TelemetryProjectionDefinition {\n return {\n _tag: \"TelemetryProjectionDefinition\",\n id: projection.id,\n objectTypeId: projection.objectTypeId,\n datasetId: projection.datasetId,\n objectIdField: projection.objectIdField,\n atField: projection.atField,\n properties: Object.fromEntries(\n Object.entries(projection.properties).map(([propertyId, mapping]) => [\n propertyId,\n {\n valueField: mapping.valueField,\n ...(mapping.unitField !== undefined ? { unitField: mapping.unitField } : {}),\n },\n ])\n ),\n }\n}\n\nfunction deepFreeze<T>(value: T): T {\n if (value === null || typeof value !== \"object\" || Object.isFrozen(value)) return value\n for (const child of Object.values(value as Record<string, unknown>)) {\n deepFreeze(child)\n }\n return Object.freeze(value)\n}\n",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"import { randomUUID } from \"node:crypto\"\n\nexport type { OntologyMaterializationEventKind } from \"../../materialization/identity\"\nexport {\n createCommitId,\n createEventId,\n createRequestHash,\n materializationEventKindOrdinal,\n ONTOLOGY_MATERIALIZATION_EVENT_KIND_ORDER,\n sha256Canonical,\n} from \"../../materialization/identity\"\n\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport { createCommitId, createRequestHash, sha256Canonical } from \"../../materialization/identity\"\nimport type {\n EffectiveLinkSnapshot,\n ProjectionMaterializationIdentity,\n} from \"../../materialization/model\"\nimport { compareLinkRefs } from \"../../materialization/refs\"\n\nexport function createActionIdempotencyKey(runId: string): string {\n return `action:${runId}:edits`\n}\n\nexport function createRuntimeIdempotencyKey(requestId: string): string {\n return `runtime:${requestId}`\n}\n\ntype ReplacementMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"replacement\" }\n>\ntype TelemetryMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"telemetry\" }\n>\n\nfunction projectionIdentityTuple(\n input: ProjectionMaterializationIdentity\n): readonly [string, string, string, string, string, string, string, string, string] {\n return [\n input.projectionId,\n input.projectionKind,\n input.protocol,\n input.datasetVersion.datasetId,\n input.datasetVersion.versionId,\n input.datasetVersion.createdAt,\n input.ontologyRevision,\n input.projectionRevision,\n input.ownershipHash,\n ]\n}\n\nexport function createProjectionIdempotencyKey(\n identity: ReplacementMaterializationIdentity\n): string {\n return `projection:replace:${sha256Canonical(projectionIdentityTuple(identity))}`\n}\n\nexport function createRuntimeTelemetryIdempotencyKey(requestId: string): string {\n return `telemetry:runtime:${requestId}`\n}\n\nexport function createProjectionTelemetryIdempotencyKey(\n identity: TelemetryMaterializationIdentity,\n batchOrdinal: number\n): string {\n return `telemetry:projection:${sha256Canonical([\n ...projectionIdentityTuple(identity),\n batchOrdinal,\n ])}`\n}\n\nexport interface CommitIdentity {\n readonly idempotencyKey: string\n readonly requestHash: string\n readonly commitId: string\n}\n\nexport interface TimedCommitIdentity extends CommitIdentity {\n readonly committedAt: string\n}\n\nexport function createCommitIdentity(input: {\n readonly projectId: string\n readonly idempotencyKey: string\n readonly normalizedCallerIntent: unknown\n}): CommitIdentity {\n return Object.freeze({\n idempotencyKey: input.idempotencyKey,\n requestHash: createRequestHash(input.normalizedCallerIntent),\n commitId: createCommitId(input.projectId, input.idempotencyKey),\n })\n}\n\nexport function timestampCommitIdentity(\n identity: CommitIdentity,\n now: Date = new Date()\n): TimedCommitIdentity {\n const committedAt = new Date(now)\n if (Number.isNaN(committedAt.getTime())) {\n throw new MaterializationValidationError(\"Materialization commit time must be a valid date.\")\n }\n return Object.freeze({\n ...identity,\n committedAt: committedAt.toISOString(),\n })\n}\n\nexport function createTimedCommitIdentity(input: {\n readonly projectId: string\n readonly idempotencyKey: string\n readonly normalizedCallerIntent: unknown\n readonly now?: Date\n}): TimedCommitIdentity {\n return timestampCommitIdentity(\n createCommitIdentity({\n projectId: input.projectId,\n idempotencyKey: input.idempotencyKey,\n normalizedCallerIntent: input.normalizedCallerIntent,\n }),\n input.now\n )\n}\n\n/** Fresh per replacement invocation; callers retain it unchanged across staging/retry. */\nexport function createProjectionMaterializationId(): string {\n return randomUUID()\n}\n\nexport function createLinkScopeFingerprint(links: readonly EffectiveLinkSnapshot[]): string {\n return sha256Canonical(\n [...links]\n .sort((left, right) => compareLinkRefs(left.ref, right.ref))\n .map((link) => ({\n ref: link.ref,\n properties: link.properties ?? {},\n lastCommitId: link.lastCommitId,\n }))\n )\n}\n",
|
|
9
9
|
"import { MaterializationValidationError } from \"../materialization/errors\"\nimport type { OntologyRegistry } from \"../ontology\"\nimport type { ProjectionRegistry } from \"../projections/registry\"\nimport { computeOntologyRevision } from \"../projections/revision\"\nimport type { Storage } from \"../storage\"\nimport { type MaterializationBatching, resolveMaterializationBatching } from \"./shared/batching\"\nimport { createProjectionMaterializationId } from \"./shared/identity\"\n\nexport type MaterializerStorage = Storage\n\nexport interface OntologyMaterializerDependencies {\n readonly batching?: Partial<MaterializationBatching>\n readonly clock?: () => Date\n readonly materializationId?: () => string\n readonly maxSerializationRetries?: number\n readonly onSerializationRetry?: (attempt: number, error: unknown) => void\n /** @internal Bounded-memory instrumentation for core semantic buffers. */\n readonly observeCoreBuffer?: (boundary: string, rows: number) => void\n}\n\nexport interface MaterializerContext {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly projectionRegistry: ProjectionRegistry\n readonly storage: MaterializerStorage\n readonly batching: MaterializationBatching\n readonly clock: () => Date\n readonly materializationId: () => string\n readonly maxSerializationRetries: number\n readonly onSerializationRetry?: (attempt: number, error: unknown) => void\n readonly observeCoreBuffer?: (boundary: string, rows: number) => void\n}\n\nexport function createMaterializerContext(input: {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly projections: ProjectionRegistry\n readonly storage: MaterializerStorage\n readonly dependencies?: OntologyMaterializerDependencies\n}): MaterializerContext {\n if (input.projectId.trim().length === 0) {\n throw new MaterializationValidationError(\"Materializer project id must be nonblank.\")\n }\n if (!input.storage?.ontology) {\n throw new MaterializationValidationError(\"Storage does not provide ontology capabilities.\")\n }\n if (computeOntologyRevision(input.ontology) !== input.projections.ontologyRevision) {\n throw new MaterializationValidationError(\n \"Materializer Ontology does not match the Ontology pinned by its projection registry.\"\n )\n }\n if (\n (!input.storage.ontology.vectors || !input.storage.ontology.vectorIndexing) &&\n input.ontology\n .listObjectTypes()\n .some((type) => Object.keys(type.search?.vectors ?? {}).length > 0)\n ) {\n throw new MaterializationValidationError(\n \"Storage does not support transactional vector profiles and automatic indexing.\"\n )\n }\n const dependencies = input.dependencies ?? {}\n const maxSerializationRetries = dependencies.maxSerializationRetries ?? 2\n if (!Number.isSafeInteger(maxSerializationRetries) || maxSerializationRetries < 0) {\n throw new MaterializationValidationError(\n \"Materializer serialization retry count must be a nonnegative safe integer.\"\n )\n }\n return {\n projectId: input.projectId,\n ontology: input.ontology,\n projectionRegistry: input.projections,\n storage: input.storage,\n batching: resolveMaterializationBatching(dependencies.batching),\n clock: dependencies.clock ?? (() => new Date()),\n materializationId: dependencies.materializationId ?? createProjectionMaterializationId,\n maxSerializationRetries,\n ...(dependencies.onSerializationRetry !== undefined\n ? { onSerializationRetry: dependencies.onSerializationRetry }\n : {}),\n ...(dependencies.observeCoreBuffer !== undefined\n ? { observeCoreBuffer: dependencies.observeCoreBuffer }\n : {}),\n }\n}\n",
|
|
10
10
|
"import { MaterializationConflictError } from \"../../materialization/errors\"\nimport type {\n EditCommitResult,\n ProjectionCommitResult,\n TelemetryCommitResult,\n} from \"../../materialization/model\"\nimport { isStorageSerializationFailure } from \"../../storage\"\nimport type { OntologyCommitRecord } from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport type { CommitIdentity } from \"../shared/identity\"\n\nexport async function replayCommitRecord(\n context: Pick<MaterializerContext, \"projectId\" | \"storage\">,\n identity: CommitIdentity,\n executionId: string,\n storage: MaterializerStorage = context.storage\n): Promise<OntologyCommitRecord | null> {\n const existing = await storage.ontology.commits.getByIdempotencyKey({\n projectId: context.projectId,\n idempotencyKey: identity.idempotencyKey,\n })\n if (!existing) return null\n if (existing.requestHash !== identity.requestHash) {\n throw new MaterializationConflictError(\n \"idempotency\",\n `Idempotency key '${identity.idempotencyKey}' was reused with different intent.`\n )\n }\n if (existing.executionId !== executionId) {\n throw new MaterializationConflictError(\n \"idempotency\",\n `Idempotency key '${identity.idempotencyKey}' belongs to execution '${existing.executionId}', not '${executionId}'.`\n )\n }\n return existing\n}\n\nexport async function replayCommit<\n TResult extends EditCommitResult | ProjectionCommitResult | TelemetryCommitResult,\n>(\n context: Pick<MaterializerContext, \"projectId\" | \"storage\">,\n identity: CommitIdentity,\n executionId: string,\n storage: MaterializerStorage = context.storage\n): Promise<TResult | null> {\n const existing = await replayCommitRecord(context, identity, executionId, storage)\n if (!existing) return null\n return { ...structuredClone(existing.result), created: false } as TResult\n}\n\nexport async function withSerializationRetry<T>(\n context: Pick<MaterializerContext, \"maxSerializationRetries\" | \"onSerializationRetry\">,\n run: () => Promise<T>\n): Promise<T> {\n for (let attempt = 0; ; attempt += 1) {\n try {\n return await run()\n } catch (error) {\n if (!isStorageSerializationFailure(error) || attempt >= context.maxSerializationRetries) {\n throw error\n }\n context.onSerializationRetry?.(attempt + 1, error)\n }\n }\n}\n",
|
|
11
|
-
"import
|
|
12
|
-
"import type {
|
|
11
|
+
"import { resolveExecutionScopeAuthorization } from \"../../execution/authorization\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type {\n AuthorizablePrincipal,\n ExecutionScope,\n TrustedPrimitiveKind,\n} from \"../../execution/types\"\nimport {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type { EventExecutor } from \"../../materialization/events\"\nimport type {\n CreateExecutionInput,\n ExecutionRecord,\n ExecutionStorage,\n} from \"../../storage/executions\"\n\n/**\n * Who and what a commit and its events are attributed to. Both are copied from the execution, so\n * they are a pure function of `executionId` and never an input the caller chooses.\n */\nexport interface MaterializerAttribution {\n readonly requestedBy?: AuthorizablePrincipal\n readonly executor: EventExecutor\n}\n\n/** Immutable execution metadata attached to one prepared Materializer command. */\nexport interface MaterializerExecution {\n readonly scope: ExecutionScope\n readonly record: CreateExecutionInput\n readonly executionId: string\n readonly correlationId: string\n readonly attribution: MaterializerAttribution\n}\n\n/** Validate the process-local scope before any Materializer read or write is attempted. */\nexport function prepareMaterializerExecution(\n projectId: string,\n scope: ExecutionScope\n): MaterializerExecution {\n resolveExecutionScopeAuthorization(projectId, scope)\n\n return {\n scope,\n record: executionRecordInputFromRuntime({\n execution: scope.execution,\n runtimeAuthorization: scope.authorization,\n }),\n executionId: scope.execution.id,\n correlationId: scope.execution.correlationId,\n attribution: executionAttribution(scope),\n }\n}\n\nfunction executionAttribution(scope: ExecutionScope): MaterializerAttribution {\n const { requestedBy, executor } = scope.execution\n const attributed = { executor: eventExecutor(executor) }\n if (requestedBy === undefined) return attributed\n return { ...attributed, requestedBy: { type: requestedBy.type, id: requestedBy.id } }\n}\n\n/** Drop the process-local Agent actor id: the durable execution does not record it. */\nfunction eventExecutor(executor: ExecutionScope[\"execution\"][\"executor\"]): EventExecutor {\n switch (executor.type) {\n case \"request\":\n return { type: \"request\", requestId: executor.requestId }\n case \"primitive\":\n return { type: \"primitive\", kind: executor.kind, id: executor.id, runId: executor.runId }\n case \"agent\":\n return { type: \"agent\", runId: executor.runId }\n case \"kernel\":\n return { type: \"kernel\", operation: structuredClone(executor.operation) }\n }\n}\n\n/** Persist a direct request lazily, or prove that a durable worker restored the exact record. */\nexport function ensureMaterializerExecution(\n executions: ExecutionStorage,\n execution: MaterializerExecution\n): Promise<ExecutionRecord> {\n return ensureExecutionRecord(executions, execution.record)\n}\n\n/** Runtime mutations may come from any domain SDK execution except an internal kernel operation. */\nexport function assertRuntimeMutationExecution(execution: MaterializerExecution): void {\n if (execution.scope.execution.executor.type !== \"kernel\") return\n throw new MaterializationValidationError(\n `Kernel execution '${execution.executionId}' cannot enter the runtime mutation boundary.`\n )\n}\n\n/** Require one internal mutation ingress to belong to its exact trusted primitive run. */\nexport function assertTrustedPrimitiveMutationExecution(\n execution: MaterializerExecution,\n primitive: {\n readonly kind: TrustedPrimitiveKind\n readonly id: string\n readonly runId: string\n }\n): void {\n const executor = execution.scope.execution.executor\n if (\n executor.type === \"primitive\" &&\n executor.kind === primitive.kind &&\n executor.id === primitive.id &&\n executor.runId === primitive.runId\n ) {\n return\n }\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Execution '${execution.executionId}' does not own ${primitive.kind} run '${primitive.runId}'.`\n )\n}\n\n/** Require the provider-validated run to reference the same immutable execution as the command. */\nexport function assertMaterializerRunExecution(\n execution: MaterializerExecution,\n runExecutionId: string,\n label: string\n): void {\n if (runExecutionId === execution.executionId) return\n throw new MaterializationConflictError(\n \"run-correlation\",\n `${label} belongs to execution '${runExecutionId}', not '${execution.executionId}'.`\n )\n}\n",
|
|
12
|
+
"import type {\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n TelemetryPointWrite,\n} from \"../../materialization/model\"\nimport { linkRefSortKey, objectRefSortKey, telemetryPointSortKey } from \"../../materialization/refs\"\nimport type {\n OntologyMaterializationEvent,\n OntologyMaterializationEventDraft,\n} from \"../../storage/ontology\"\nimport type { MaterializerAttribution } from \"../execution/scope\"\nimport { createEventId, materializationEventKindOrdinal } from \"../shared/identity\"\n\nexport interface OrderedMaterializationEventDraft {\n readonly kindRank: number\n readonly sortKey: string\n readonly draft: OntologyMaterializationEventDraft\n}\n\nexport interface MaterializationEventDraftContext {\n readonly projectId: string\n readonly commitId: string\n readonly committedAt: string\n readonly correlationId: string\n readonly origin: OntologyMaterializationOrigin\n readonly attribution: MaterializerAttribution\n}\n\nexport function buildObjectMaterializationEventDraft(\n input: MaterializationEventDraftContext & { readonly change: EffectiveObjectChange }\n): OrderedMaterializationEventDraft {\n const draft = buildObjectEventDraft(input, input.change)\n return orderedDraft(objectRefSortKey(input.change.ref), draft)\n}\n\nfunction buildObjectEventDraft(\n context: MaterializationEventDraftContext,\n change: EffectiveObjectChange\n): OntologyMaterializationEventDraft {\n const base = eventDraftBase(context)\n const partitionKey = `${change.ref.objectTypeId}:${change.ref.primaryId}`\n\n if (change.kind === \"deleted\") {\n return {\n ...base,\n type: \"object.deleted\",\n topic: \"objects\",\n partitionKey,\n payload: {\n objectTypeId: change.ref.objectTypeId,\n primaryId: change.ref.primaryId,\n propertyChanges: change.propertyChanges,\n },\n }\n }\n\n const type = objectEventType(change)\n return {\n ...base,\n type,\n topic: \"objects\",\n partitionKey,\n payload: {\n objectTypeId: change.ref.objectTypeId,\n primaryId: change.ref.primaryId,\n properties: change.after.properties,\n propertyChanges: change.propertyChanges,\n },\n }\n}\n\nfunction objectEventType(\n change: Exclude<EffectiveObjectChange, { readonly kind: \"deleted\" }>\n): \"object.created\" | \"object.updated\" {\n if (change.kind === \"created\") return \"object.created\"\n return \"object.updated\"\n}\n\nexport function buildLinkMaterializationEventDraft(\n input: MaterializationEventDraftContext & { readonly change: EffectiveLinkChange }\n): OrderedMaterializationEventDraft {\n const draft = buildLinkEventDraft(input, input.change)\n return orderedDraft(linkRefSortKey(input.change.ref), draft)\n}\n\nfunction buildLinkEventDraft(\n context: MaterializationEventDraftContext,\n change: EffectiveLinkChange\n): OntologyMaterializationEventDraft {\n const base = eventDraftBase(context)\n const partitionKey = `${change.ref.source.objectTypeId}:${change.ref.source.primaryId}:${change.ref.linkId}`\n const commonPayload = {\n sourceTypeId: change.ref.source.objectTypeId,\n sourceId: change.ref.source.primaryId,\n linkId: change.ref.linkId,\n targetTypeId: change.ref.target.objectTypeId,\n targetId: change.ref.target.primaryId,\n propertyChanges: change.propertyChanges,\n }\n\n if (change.kind === \"deleted\") {\n return {\n ...base,\n type: \"link.deleted\",\n topic: \"links\",\n partitionKey,\n payload: commonPayload,\n }\n }\n\n const type = linkEventType(change)\n if (change.after.properties === undefined) {\n return { ...base, type, topic: \"links\", partitionKey, payload: commonPayload }\n }\n return {\n ...base,\n type,\n topic: \"links\",\n partitionKey,\n payload: { ...commonPayload, properties: change.after.properties },\n }\n}\n\nfunction linkEventType(\n change: Exclude<EffectiveLinkChange, { readonly kind: \"deleted\" }>\n): \"link.created\" | \"link.updated\" {\n if (change.kind === \"created\") return \"link.created\"\n return \"link.updated\"\n}\n\nexport function buildTelemetryMaterializationEventDraft(\n input: MaterializationEventDraftContext & { readonly point: TelemetryPointWrite }\n): OrderedMaterializationEventDraft {\n const draft = buildTelemetryEventDraft(input, input.point)\n return orderedDraft(telemetryPointSortKey(input.point.series, input.point.at), draft)\n}\n\nfunction buildTelemetryEventDraft(\n context: MaterializationEventDraftContext,\n point: TelemetryPointWrite\n): OntologyMaterializationEventDraft {\n const base = eventDraftBase(context)\n const partitionKey = `${point.series.object.objectTypeId}:${point.series.object.primaryId}:${point.series.propertyId}`\n const payload = {\n objectTypeId: point.series.object.objectTypeId,\n objectId: point.series.object.primaryId,\n propertyId: point.series.propertyId,\n value: point.value,\n at: point.at,\n }\n if (point.unit === undefined) {\n return { ...base, type: \"telemetry.appended\", topic: \"telemetry\", partitionKey, payload }\n }\n return {\n ...base,\n type: \"telemetry.appended\",\n topic: \"telemetry\",\n partitionKey,\n payload: { ...payload, unit: point.unit },\n }\n}\n\nfunction eventDraftBase(context: MaterializationEventDraftContext) {\n return {\n schemaVersion: 1 as const,\n projectId: context.projectId,\n occurredAt: context.committedAt,\n correlationId: context.correlationId,\n origin: context.origin,\n ...context.attribution,\n commitId: context.commitId,\n }\n}\n\nfunction orderedDraft(\n sortKey: string,\n draft: OntologyMaterializationEventDraft\n): OrderedMaterializationEventDraft {\n return {\n kindRank: materializationEventKindOrdinal(draft.type),\n sortKey,\n draft,\n }\n}\n\nexport function sequenceMaterializationEvent(\n projectId: string,\n commitId: string,\n commitOrdinal: number,\n draft: OntologyMaterializationEventDraft\n): OntologyMaterializationEvent {\n const sequence = {\n id: createEventId(projectId, commitId, commitOrdinal),\n commitOrdinal,\n }\n return { ...draft, ...sequence }\n}\n",
|
|
13
13
|
"import { randomUUID } from \"node:crypto\"\nimport type { OntologyObjectRef } from \"../../materialization/model\"\nimport { vectorConfiguration, vectorSources } from \"../../objects/vectors/profile\"\nimport type { Storage } from \"../../storage\"\nimport { objectBatchKey } from \"../../storage/objects/keys\"\nimport type { MaterializationSession } from \"../../storage/ontology\"\nimport type { VectorIndexingRequest } from \"../../storage/ontology/vector-indexing\"\nimport type { MaterializerContext } from \"../context\"\nimport type { MaterializationPlanItem } from \"../execution/plan-stream\"\n\n/** Source assertions are not effective values: schedule only after conflict resolution. */\nexport async function scheduleVectorChanges(\n context: Pick<MaterializerContext, \"projectId\" | \"ontology\" | \"clock\">,\n storage: Storage,\n items: readonly MaterializationPlanItem[],\n session: MaterializationSession,\n projection = false\n): Promise<void> {\n const indexing = storage.ontology.vectorIndexing\n if (!indexing) return\n const upserts = items\n .filter((item) => item.kind === \"object-upsert\")\n .filter(\n (item) =>\n Object.keys(\n context.ontology.resolveObjectType(item.value.row.ref.objectTypeId).search?.vectors ?? {}\n ).length > 0\n )\n const previous = await storage.objects.getByPrimaryIdBatch({\n projectId: context.projectId,\n items: upserts.map((item) => item.value.row.ref),\n })\n const requests: VectorIndexingRequest[] = []\n const deleted: OntologyObjectRef[] = []\n // Groups exist only for this materialization page and are persisted in its transaction.\n const groups = new Map<string, { id: string; count: number; bytes: number }>()\n for (const item of items) {\n if (item.kind === \"object-delete\") {\n deleted.push(item.value.ref)\n continue\n }\n if (item.kind !== \"object-upsert\") continue\n const row = item.value.row\n const profiles = context.ontology.resolveObjectType(row.ref.objectTypeId).search?.vectors ?? {}\n const before = previous.get(objectBatchKey(row.ref.objectTypeId, row.ref.primaryId))\n for (const [profile, definition] of Object.entries(profiles)) {\n const { sourceFingerprint, text } = vectorSources(definition.source, row.properties)\n if (\n before &&\n vectorSources(definition.source, before.properties).sourceFingerprint === sourceFingerprint\n )\n continue\n const configuration = vectorConfiguration(definition)\n const bytes = Buffer.byteLength(text)\n const key = JSON.stringify([row.ref.objectTypeId, profile, configuration, row.lastCommitId])\n let group = projection ? groups.get(key) : undefined\n if (projection && (!group || group.count === 32 || group.bytes + bytes > 32_768)) {\n group = { id: randomUUID(), count: 0, bytes: 0 }\n groups.set(key, group)\n }\n if (group) {\n group.count++\n group.bytes += bytes\n }\n requests.push({\n ...(group ? { batchId: group.id } : {}),\n id: randomUUID(),\n ref: row.ref,\n profile,\n sourceFingerprint,\n configuration,\n sourceCommitId: row.lastCommitId,\n })\n }\n }\n if (requests.length || deleted.length)\n await indexing.schedule({\n projectId: context.projectId,\n session,\n requests,\n deleted,\n availableAt: context.clock().toISOString(),\n })\n}\n",
|
|
14
14
|
"import { objectRefKey } from \"../../materialization/refs\"\nimport { vectorSources } from \"../../objects/vectors/profile\"\nimport type { MaterializationSession } from \"../../storage/ontology\"\nimport type { OntologyVectorStorage } from \"../../storage/ontology/vectors\"\nimport type { MaterializationPlanItem } from \"../execution/plan-stream\"\n\n/** Invalidate a bounded materialization page, including stored profiles no longer declared. */\nexport async function invalidateVectorChanges(\n projectId: string,\n vectors: OntologyVectorStorage | undefined,\n items: readonly MaterializationPlanItem[],\n session: MaterializationSession\n): Promise<void> {\n if (!vectors) return\n const changes = new Map(\n items.flatMap((item) => {\n if (item.kind !== \"object-upsert\" && item.kind !== \"object-delete\") return []\n const ref = item.kind === \"object-upsert\" ? item.value.row.ref : item.value.ref\n return [[objectRefKey(ref), { ref, item }] as const]\n })\n )\n if (!changes.size) return\n\n const stored = await vectors.listBatch({\n projectId,\n refs: [...changes.values()].map(({ ref }) => ref),\n })\n const removals: Parameters<OntologyVectorStorage[\"removeBatch\"]>[0][\"entries\"][number][] = []\n for (const entry of stored) {\n const change = changes.get(objectRefKey(entry.ref))\n if (!change) continue\n const { item } = change\n if (\n item.kind === \"object-upsert\" &&\n entry.source.every((id) => {\n const value = item.value.row.properties[id]\n return value === undefined || value === null || typeof value === \"string\"\n }) &&\n vectorSources(entry.source, item.value.row.properties).sourceFingerprint ===\n entry.sourceFingerprint\n )\n continue\n\n removals.push({ ref: entry.ref, profile: entry.profile, expectedCommitId: entry.lastCommitId })\n }\n if (removals.length) await vectors.removeBatch({ session, projectId, entries: removals })\n}\n",
|
|
15
15
|
"export function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw signal.reason instanceof Error\n ? signal.reason\n : new DOMException(\"Projection replacement aborted\", \"AbortError\")\n }\n}\n",
|
|
@@ -27,23 +27,24 @@
|
|
|
27
27
|
"import { compareStrings, type JsonValue, stableJsonStringify } from \"../../json\"\nimport type {\n EffectiveLinkChange,\n EffectiveLinkSnapshot,\n EffectiveObjectChange,\n EffectiveObjectSnapshot,\n OntologyMaterializationPropertyChangeMap,\n} from \"../../materialization/model\"\nimport { linkRefKey } from \"../../materialization/refs\"\nimport type { ResolvedLinkValue, ResolvedObjectValue } from \"./resolve\"\n\nexport function diffEffectiveObject(input: {\n readonly before: EffectiveObjectSnapshot | null\n readonly resolved: ResolvedObjectValue | null\n readonly commitId: string\n readonly committedAt: string\n}): EffectiveObjectChange | null {\n if (!input.before) {\n if (!input.resolved) return null\n return createObjectChange(input.resolved, input.commitId, input.committedAt)\n }\n if (!input.resolved) return deleteObjectChange(input.before)\n if (sameProperties(input.before.properties, input.resolved.properties)) return null\n return updateObjectChange(input.before, input.resolved, input.commitId, input.committedAt)\n}\n\nfunction createObjectChange(\n resolved: ResolvedObjectValue,\n commitId: string,\n committedAt: string\n): EffectiveObjectChange {\n const after: EffectiveObjectSnapshot = {\n ...resolved,\n version: 1,\n createdAt: committedAt,\n updatedAt: committedAt,\n lastCommitId: commitId,\n }\n return {\n kind: \"created\",\n ref: after.ref,\n before: null,\n after,\n propertyChanges: propertyChanges({}, after.properties),\n }\n}\n\nfunction deleteObjectChange(before: EffectiveObjectSnapshot): EffectiveObjectChange {\n return {\n kind: \"deleted\",\n ref: before.ref,\n before,\n after: null,\n propertyChanges: propertyChanges(before.properties, {}),\n }\n}\n\nfunction updateObjectChange(\n before: EffectiveObjectSnapshot,\n resolved: ResolvedObjectValue,\n commitId: string,\n committedAt: string\n): EffectiveObjectChange {\n const after: EffectiveObjectSnapshot = {\n ...resolved,\n version: before.version + 1,\n createdAt: before.createdAt,\n updatedAt: committedAt,\n lastCommitId: commitId,\n }\n return {\n kind: \"updated\",\n ref: after.ref,\n before,\n after,\n propertyChanges: propertyChanges(before.properties, after.properties),\n }\n}\n\nexport function diffEffectiveLink(input: {\n readonly before: EffectiveLinkSnapshot | null\n readonly resolved: ResolvedLinkValue | null\n readonly commitId: string\n readonly committedAt: string\n}): EffectiveLinkChange | null {\n if (!input.before) {\n if (!input.resolved) return null\n return createLinkChange(input.resolved, input.commitId, input.committedAt)\n }\n if (!input.resolved) return deleteLinkChange(input.before)\n if (sameProperties(input.before.properties ?? {}, input.resolved.properties ?? {})) return null\n return updateLinkChange(input.before, input.resolved, input.commitId, input.committedAt)\n}\n\n/** Diffs a cardinality-one value slot while preserving edge identity at the physical boundary. */\nexport function diffEffectiveLinkSlot(input: {\n readonly before: EffectiveLinkSnapshot | null\n readonly resolved: ResolvedLinkValue | null\n readonly commitId: string\n readonly committedAt: string\n}): EffectiveLinkChange[] {\n if (\n input.before &&\n input.resolved &&\n linkRefKey(input.before.ref) !== linkRefKey(input.resolved.ref)\n ) {\n return [\n diffEffectiveLink({ ...input, resolved: null })!,\n diffEffectiveLink({ ...input, before: null })!,\n ]\n }\n const change = diffEffectiveLink(input)\n return change ? [change] : []\n}\n\nfunction createLinkChange(\n resolved: ResolvedLinkValue,\n commitId: string,\n committedAt: string\n): EffectiveLinkChange {\n const after: EffectiveLinkSnapshot = {\n ...resolved,\n createdAt: committedAt,\n updatedAt: committedAt,\n lastCommitId: commitId,\n }\n return {\n kind: \"created\",\n ref: after.ref,\n before: null,\n after,\n propertyChanges: propertyChanges({}, after.properties ?? {}),\n }\n}\n\nfunction deleteLinkChange(before: EffectiveLinkSnapshot): EffectiveLinkChange {\n return {\n kind: \"deleted\",\n ref: before.ref,\n before,\n after: null,\n propertyChanges: propertyChanges(before.properties ?? {}, {}),\n }\n}\n\nfunction updateLinkChange(\n before: EffectiveLinkSnapshot,\n resolved: ResolvedLinkValue,\n commitId: string,\n committedAt: string\n): EffectiveLinkChange {\n const after: EffectiveLinkSnapshot = {\n ...resolved,\n createdAt: before.createdAt,\n updatedAt: committedAt,\n lastCommitId: commitId,\n }\n return {\n kind: \"updated\",\n ref: after.ref,\n before,\n after,\n propertyChanges: propertyChanges(before.properties ?? {}, after.properties ?? {}),\n }\n}\n\nfunction sameProperties(\n left: Readonly<Record<string, JsonValue>>,\n right: Readonly<Record<string, JsonValue>>\n): boolean {\n return stableJsonStringify(left) === stableJsonStringify(right)\n}\n\nfunction propertyChanges(\n before: Readonly<Record<string, JsonValue>>,\n after: Readonly<Record<string, JsonValue>>\n): OntologyMaterializationPropertyChangeMap {\n const changes: Record<\n string,\n import(\"../../materialization/model\").OntologyMaterializationPropertyChange\n > = {}\n const ids = [...new Set([...Object.keys(before), ...Object.keys(after)])].sort(compareStrings)\n for (const id of ids) {\n if (!(id in before)) changes[id] = { operation: \"created\", after: after[id] }\n else if (!(id in after)) changes[id] = { operation: \"cleared\", before: before[id], after: null }\n else if (stableJsonStringify(before[id]) !== stableJsonStringify(after[id])) {\n changes[id] = { operation: \"updated\", before: before[id], after: after[id] }\n }\n }\n return changes\n}\n",
|
|
28
28
|
"import { withFailureMessage } from \"../../errors/failure-message\"\nimport type { JsonValue } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n OntologyLinkRef,\n OntologyObjectRef,\n TelemetryPointWrite,\n} from \"../../materialization/model\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport {\n assertKnownProperties,\n normalizeLinkProperties,\n normalizeObjectProperties,\n normalizeSchemaValue,\n validateLinkProperties,\n validateObjectProperties,\n validatePropertyValue,\n validateTelemetryUnit,\n} from \"../../ontology/validation\"\n\nexport function validateObjectRef(ontology: OntologyRegistry, ref: OntologyObjectRef): void {\n materializationValidation(() => {\n ontology.resolveObjectType(ref.objectTypeId)\n })\n}\n\nexport function validateLinkRef(ontology: OntologyRegistry, ref: OntologyLinkRef): void {\n materializationValidation(() => {\n const sourceType = ontology.resolveObjectType(ref.source.objectTypeId)\n ontology.resolveObjectType(ref.target.objectTypeId)\n const link = sourceType.links.find((candidate) => candidate.id === ref.linkId)\n if (!link) throw new Error(`[Sixb] Unknown link '${ref.source.objectTypeId}.${ref.linkId}'.`)\n if (!ontology.isValidLinkTarget(link.targetObjectTypeId, ref.target.objectTypeId)) {\n throw new Error(\n `[Sixb] Link '${ref.source.objectTypeId}.${ref.linkId}' cannot target '${ref.target.objectTypeId}'.`\n )\n }\n })\n}\n\nexport function validateObjectAuthorityProperties(\n ontology: OntologyRegistry,\n ref: OntologyObjectRef,\n properties: Readonly<Record<string, JsonValue>>\n): Readonly<Record<string, JsonValue>> {\n return materializationValidation(() => {\n const objectType = ontology.resolveObjectType(ref.objectTypeId)\n assertKnownProperties(objectType, properties)\n const primaryId = ontology.getPrimaryPropertyId(ref.objectTypeId)\n const result = { ...properties }\n if (primaryId in result) {\n if (result[primaryId] !== ref.primaryId) {\n throw new Error(\n `[Sixb] Primary property '${primaryId}' must match object identity '${ref.primaryId}'.`\n )\n }\n delete result[primaryId]\n }\n for (const propertyId of Object.keys(result)) {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)!\n if (property.mode === \"telemetry\") {\n throw new Error(\n `[Sixb] Static authority cannot write telemetry property '${ref.objectTypeId}.${propertyId}'.`\n )\n }\n }\n const valueTypesById = ontology.getValueTypesById()\n validateObjectProperties(objectType, result, valueTypesById)\n return normalizeObjectProperties(objectType.properties, result, valueTypesById, objectType.id)\n })\n}\n\nexport function validateObjectPatchPropertyIds(\n ontology: OntologyRegistry,\n ref: OntologyObjectRef,\n propertyIds: readonly string[],\n label: \"unset\" | \"reset\"\n): void {\n materializationValidation(() => {\n const objectType = ontology.resolveObjectType(ref.objectTypeId)\n const primaryId = ontology.getPrimaryPropertyId(ref.objectTypeId)\n for (const propertyId of propertyIds) {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n if (!property) {\n throw new Error(\n `[Sixb] Object patch ${label} references unknown property '${ref.objectTypeId}.${propertyId}'.`\n )\n }\n if (propertyId === primaryId) {\n throw new Error(\n `[Sixb] Object patch ${label} cannot target primary property '${ref.objectTypeId}.${propertyId}'.`\n )\n }\n if (property.mode === \"telemetry\") {\n throw new Error(\n `[Sixb] Object patch ${label} cannot target telemetry property '${ref.objectTypeId}.${propertyId}'.`\n )\n }\n }\n })\n}\n\nexport function validateEffectiveObject(\n ontology: OntologyRegistry,\n ref: OntologyObjectRef,\n properties: Readonly<Record<string, JsonValue>>\n): void {\n materializationValidation(() => {\n const objectType = ontology.resolveObjectType(ref.objectTypeId)\n assertKnownProperties(objectType, properties)\n for (const property of objectType.properties) {\n if (\n property.mode !== \"telemetry\" &&\n property.required &&\n properties[property.id] === undefined\n ) {\n throw withFailureMessage(\n new Error(\n `[Sixb] Missing required property '${property.id}' for object type '${objectType.id}'`\n ),\n `Missing required property '${objectType.id}.${property.id}'.`\n )\n }\n }\n validateObjectProperties(objectType, properties, ontology.getValueTypesById())\n })\n}\n\nexport function validateLinkAuthorityProperties(\n ontology: OntologyRegistry,\n ref: OntologyLinkRef,\n properties: Readonly<Record<string, JsonValue>> | undefined\n): Readonly<Record<string, JsonValue>> | undefined {\n return materializationValidation(() => {\n const objectType = ontology.resolveObjectType(ref.source.objectTypeId)\n const link = objectType.links.find((candidate) => candidate.id === ref.linkId)\n if (!link) throw new Error(`[Sixb] Unknown link '${ref.source.objectTypeId}.${ref.linkId}'.`)\n if (!ontology.isValidLinkTarget(link.targetObjectTypeId, ref.target.objectTypeId)) {\n throw new Error(\n `[Sixb] Link '${ref.source.objectTypeId}.${ref.linkId}' cannot target '${ref.target.objectTypeId}'.`\n )\n }\n const valueTypesById = ontology.getValueTypesById()\n validateLinkProperties(objectType, link, properties, undefined, valueTypesById)\n return normalizeLinkProperties(objectType, link, properties, valueTypesById)\n })\n}\n\nexport function validateTelemetryPoint(\n ontology: OntologyRegistry,\n point: TelemetryPointWrite\n): TelemetryPointWrite {\n return materializationValidation(() => {\n const objectType = ontology.resolveObjectType(point.series.object.objectTypeId)\n const property = objectType.properties.find(\n (candidate) => candidate.id === point.series.propertyId\n )\n if (!property || property.mode !== \"telemetry\") {\n throw new Error(\n `[Sixb] Property '${point.series.object.objectTypeId}.${point.series.propertyId}' is not telemetry-enabled.`\n )\n }\n const path = `${objectType.id}.${property.id}`\n const valueTypesById = ontology.getValueTypesById()\n validatePropertyValue(property, point.value, path, valueTypesById)\n validateTelemetryUnit(property, path, point.unit, valueTypesById)\n return {\n ...point,\n value:\n point.value === null\n ? null\n : normalizeSchemaValue(property.schema, point.value, path, valueTypesById),\n }\n })\n}\n\nfunction materializationValidation<T>(run: () => T): T {\n try {\n return run()\n } catch (error) {\n if (error instanceof MaterializationValidationError) throw error\n throw new MaterializationValidationError(\n error instanceof Error ? error.message : String(error),\n { cause: error }\n )\n }\n}\n",
|
|
29
29
|
"import type { JsonValue } from \"../../json\"\nimport { stableJsonStringify } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n LinkOverride,\n ObjectOverride,\n OntologyEditOperation,\n} from \"../../materialization/model\"\n\ntype ObjectEditOperation = Extract<\n OntologyEditOperation,\n { readonly ref: { readonly objectTypeId: string } }\n>\ntype LinkEditOperation = Extract<\n OntologyEditOperation,\n { readonly ref: { readonly linkId: string } }\n>\ntype ObjectWriteOperation = Extract<\n ObjectEditOperation,\n { readonly kind: \"object.create\" | \"object.upsert\" }\n>\ntype ObjectPatchOverride = Extract<ObjectOverride, { readonly kind: \"patch\" }>\n\ninterface ObjectEditInput {\n readonly operation: ObjectEditOperation\n readonly sourceProperties: Readonly<Record<string, JsonValue>> | null\n readonly authority: ObjectOverride | null\n readonly editedAt: Readonly<Record<string, string>>\n readonly committedAt: string\n readonly effectiveExists: boolean\n readonly normalizedProperties?: Readonly<Record<string, JsonValue>>\n readonly normalizedSet?: Readonly<Record<string, JsonValue>>\n}\n\ninterface LinkEditInput {\n readonly operation: LinkEditOperation\n readonly hasSource: boolean\n readonly authority: LinkOverride | null\n readonly effectiveExists: boolean\n readonly normalizedProperties?: Readonly<Record<string, JsonValue>>\n}\n\nexport interface AuthorityTransition<T> {\n readonly next: T | null\n readonly changed: boolean\n}\n\nexport interface ObjectAuthorityTransition extends AuthorityTransition<ObjectOverride> {\n readonly editedAt: Readonly<Record<string, string>>\n}\n\nexport function applyObjectEdit(input: ObjectEditInput): ObjectAuthorityTransition {\n const current = input.authority\n let next: ObjectOverride | null\n\n switch (input.operation.kind) {\n case \"object.create\":\n next = applyObjectCreate(input, input.operation)\n break\n case \"object.upsert\":\n next = applyObjectUpsert(input, input.operation)\n break\n case \"object.patch\":\n next = applyObjectPatch(input, input.operation)\n break\n case \"object.delete\":\n next = applyObjectDelete(input)\n break\n case \"object.restore\":\n next = applyObjectRestore(input)\n break\n default:\n throw new MaterializationValidationError(\"Expected an object edit operation.\")\n }\n\n const editedAt = applyObjectEditTimes(input, next)\n const authority = transition(current, next)\n return {\n ...authority,\n editedAt,\n changed: authority.changed || !sameStringRecord(input.editedAt, editedAt),\n }\n}\n\nfunction applyObjectEditTimes(\n input: ObjectEditInput,\n next: ObjectOverride | null\n): Readonly<Record<string, string>> {\n if (!next || next.kind === \"delete\") return {}\n const editedAt =\n input.operation.kind === \"object.create\" || input.authority?.kind === \"delete\"\n ? {}\n : { ...input.editedAt }\n\n switch (input.operation.kind) {\n case \"object.create\":\n case \"object.upsert\": {\n const properties = input.normalizedProperties ?? input.operation.properties\n for (const propertyId of Object.keys(properties)) editedAt[propertyId] = input.committedAt\n break\n }\n case \"object.patch\":\n for (const propertyId of input.operation.reset) delete editedAt[propertyId]\n for (const propertyId of input.operation.unset) editedAt[propertyId] = input.committedAt\n for (const propertyId of Object.keys(input.normalizedSet ?? input.operation.set)) {\n editedAt[propertyId] = input.committedAt\n }\n break\n case \"object.delete\":\n return editedAt\n case \"object.restore\":\n break\n }\n return editedAt\n}\n\nfunction sameStringRecord(\n left: Readonly<Record<string, string>>,\n right: Readonly<Record<string, string>>\n): boolean {\n const leftKeys = Object.keys(left)\n if (leftKeys.length !== Object.keys(right).length) return false\n return leftKeys.every((key) => left[key] === right[key])\n}\n\nfunction applyObjectCreate(\n input: ObjectEditInput,\n operation: ObjectWriteOperation\n): ObjectOverride {\n if (input.sourceProperties || input.authority) {\n throw new MaterializationValidationError(\n `Object create requires complete authority absence for ${operation.ref.objectTypeId}:${operation.ref.primaryId}.`\n )\n }\n return { kind: \"create\", properties: input.normalizedProperties ?? operation.properties }\n}\n\nfunction applyObjectUpsert(\n input: ObjectEditInput,\n operation: ObjectWriteOperation\n): ObjectOverride {\n const properties = input.normalizedProperties ?? operation.properties\n const current = input.authority\n\n if (current?.kind === \"create\") {\n return { kind: \"create\", properties: { ...current.properties, ...properties } }\n }\n if (current?.kind === \"patch\") {\n return mergeUpsertIntoPatch(current, properties, input.sourceProperties !== null)\n }\n if (input.sourceProperties) return { kind: \"patch\", set: properties, unset: [] }\n return { kind: \"create\", properties }\n}\n\nfunction mergeUpsertIntoPatch(\n current: ObjectPatchOverride,\n properties: Readonly<Record<string, JsonValue>>,\n hasSource: boolean\n): ObjectOverride {\n if (hasSource) {\n const unset = current.unset.filter((propertyId) => !(propertyId in properties))\n return { kind: \"patch\", set: { ...current.set, ...properties }, unset }\n }\n\n const created = { ...current.set }\n for (const propertyId of current.unset) delete created[propertyId]\n return { kind: \"create\", properties: { ...created, ...properties } }\n}\n\nfunction applyObjectPatch(\n input: ObjectEditInput,\n operation: Extract<ObjectEditOperation, { readonly kind: \"object.patch\" }>\n): ObjectOverride | null {\n const current = input.authority\n if (!input.effectiveExists && current?.kind !== \"patch\") {\n throw new MaterializationValidationError(\n `Object patch requires an effective object for ${operation.ref.objectTypeId}:${operation.ref.primaryId}.`\n )\n }\n\n const setInput = input.normalizedSet ?? operation.set\n if (current?.kind === \"create\" && !input.sourceProperties) {\n return patchCreatedObject(current, operation, setInput)\n }\n\n return patchOverride(toPatchOverride(current), operation, setInput)\n}\n\nfunction patchCreatedObject(\n current: Extract<ObjectOverride, { readonly kind: \"create\" }>,\n operation: Extract<ObjectEditOperation, { readonly kind: \"object.patch\" }>,\n setInput: Readonly<Record<string, JsonValue>>\n): ObjectOverride {\n const properties = { ...current.properties, ...setInput }\n for (const propertyId of [...operation.unset, ...operation.reset]) {\n delete properties[propertyId]\n }\n return { kind: \"create\", properties }\n}\n\nfunction toPatchOverride(current: ObjectOverride | null): ObjectPatchOverride {\n if (current?.kind === \"patch\") return current\n if (current?.kind === \"create\") {\n return { kind: \"patch\", set: { ...current.properties }, unset: [] }\n }\n return { kind: \"patch\", set: {}, unset: [] }\n}\n\nfunction patchOverride(\n base: ObjectPatchOverride,\n operation: Extract<ObjectEditOperation, { readonly kind: \"object.patch\" }>,\n setInput: Readonly<Record<string, JsonValue>>\n): ObjectOverride | null {\n const set = { ...base.set }\n const unset = new Set(base.unset)\n\n for (const propertyId of operation.reset) {\n delete set[propertyId]\n unset.delete(propertyId)\n }\n for (const propertyId of operation.unset) {\n delete set[propertyId]\n unset.add(propertyId)\n }\n for (const [propertyId, value] of Object.entries(setInput)) {\n set[propertyId] = value\n unset.delete(propertyId)\n }\n\n if (Object.keys(set).length === 0 && unset.size === 0) return null\n return { kind: \"patch\", set, unset: [...unset].sort() }\n}\n\nfunction applyObjectDelete(input: ObjectEditInput): ObjectOverride | null {\n if (!input.effectiveExists) return input.authority\n if (input.authority?.kind === \"create\" && !input.sourceProperties) return null\n return { kind: \"delete\" }\n}\n\nfunction applyObjectRestore(input: ObjectEditInput): ObjectOverride | null {\n if (input.authority?.kind !== \"delete\") return input.authority\n return null\n}\n\nexport function applyLinkEdit(input: LinkEditInput): AuthorityTransition<LinkOverride> {\n const current = input.authority\n let next: LinkOverride | null\n\n switch (input.operation.kind) {\n case \"link.upsert\":\n next = linkUpsertOverride(input)\n break\n case \"link.delete\":\n next = linkDeleteOverride(input)\n break\n case \"link.reset\":\n next = null\n break\n default:\n throw new MaterializationValidationError(\"Expected a link edit operation.\")\n }\n\n return transition(current, next)\n}\n\nfunction linkUpsertOverride(input: LinkEditInput): LinkOverride {\n if (input.normalizedProperties !== undefined) {\n return { kind: \"upsert\", properties: input.normalizedProperties }\n }\n if (input.operation.kind === \"link.upsert\" && input.operation.properties !== undefined) {\n return { kind: \"upsert\", properties: input.operation.properties }\n }\n return { kind: \"upsert\" }\n}\n\nfunction linkDeleteOverride(input: LinkEditInput): LinkOverride | null {\n if (!input.effectiveExists) return input.authority\n if (input.authority?.kind === \"upsert\" && !input.hasSource) return null\n return { kind: \"delete\" }\n}\n\nfunction transition<T extends ObjectOverride | LinkOverride>(\n current: T | null,\n next: T | null\n): AuthorityTransition<T> {\n return { next, changed: !sameAuthority(current, next) }\n}\n\nfunction sameAuthority(\n left: ObjectOverride | LinkOverride | null,\n right: ObjectOverride | LinkOverride | null\n): boolean {\n return stableJsonStringify(left) === stableJsonStringify(right)\n}\n",
|
|
30
|
-
"import { stableJsonStringify } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { OntologyEditOperation, OntologyOperationOutcome } from \"../../materialization/model\"\nimport { linkRefKey, linkScopeKey, objectRefKey } from \"../../materialization/refs\"\nimport type { MaterializerContext } from \"../context\"\nimport { diffEffectiveObject } from \"../effective/diff\"\nimport {\n validateEffectiveObject,\n validateLinkAuthorityProperties,\n validateLinkRef,\n validateObjectAuthorityProperties,\n validateObjectPatchPropertyIds,\n validateObjectRef,\n} from \"../effective/validate\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport { applyLinkEdit, applyObjectEdit } from \"./apply\"\nimport { linkCardinality } from \"./read-set\"\nimport {\n type EditWorkingState,\n resolveLinkEdge,\n resolveLinkSlot,\n resolveObject,\n validateWorkingCardinality,\n type WorkingLinkEdge,\n type WorkingObject,\n} from \"./working-state\"\n\ntype ObjectOperation = Extract<OntologyEditOperation, { readonly kind: `object.${string}` }>\ntype LinkOperation = Extract<OntologyEditOperation, { readonly kind: `link.${string}` }>\n\n/**\n * Undo record for one override the current operation group replaced.\n *\n * Only the mutable override moves; loaded snapshots stay pinned for the whole commit, so restoring\n * the overrides in reverse returns the working set to its pre-group state. Incident links loaded\n * along the way are a read cache and are deliberately left in place.\n */\ninterface EditUndoEntry {\n readonly restore: () => void\n}\n\n/** Collects undo records while a grouped item applies. */\nexport type EditUndoJournal = EditUndoEntry[]\n\nexport function undoEditJournal(journal: EditUndoJournal): void {\n for (let index = journal.length - 1; index >= 0; index -= 1) {\n journal[index]?.restore()\n }\n}\n\nexport function applyEditOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: OntologyEditOperation,\n identity: TimedCommitIdentity,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n validateOperationRef(context, operation)\n if (isObjectOperation(operation)) {\n return applyObjectOperation(context, state, operation, identity, journal)\n }\n return applyLinkOperation(\n context,\n state,\n operation,\n linkCardinality(context.ontology, operation.ref),\n journal\n )\n}\n\nfunction validateOperationRef(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: OntologyEditOperation\n): void {\n if (isObjectOperation(operation)) {\n validateObjectRef(context.ontology, operation.ref)\n return\n }\n validateLinkRef(context.ontology, operation.ref)\n}\n\nfunction applyObjectOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: ObjectOperation,\n identity: TimedCommitIdentity,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n const working = requireWorkingObject(state, operation)\n const normalized = validateObjectOperation(context, operation)\n const currentEffective = resolveObject(context.ontology, working)\n const transition = applyObjectEdit({\n operation,\n sourceProperties: working.source?.assertion.properties ?? null,\n authority: working.override,\n editedAt: working.editedAt,\n committedAt: identity.committedAt,\n effectiveExists: currentEffective !== null,\n ...normalized,\n })\n\n applyObjectTransition(context, state, working, transition.next, transition.editedAt, journal)\n\n return objectOperationOutcome(operation, working, transition.changed, context, identity)\n}\n\nfunction requireWorkingObject(state: EditWorkingState, operation: ObjectOperation): WorkingObject {\n const working = state.objects.get(objectRefKey(operation.ref))\n if (!working) throw new MaterializationValidationError(\"Object state was not loaded.\")\n return working\n}\n\nfunction validateObjectOperation(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: ObjectOperation\n): {\n readonly normalizedProperties?: ReturnType<typeof validateObjectAuthorityProperties>\n readonly normalizedSet?: ReturnType<typeof validateObjectAuthorityProperties>\n} {\n switch (operation.kind) {\n case \"object.create\":\n case \"object.upsert\":\n return {\n normalizedProperties: validateObjectAuthorityProperties(\n context.ontology,\n operation.ref,\n operation.properties\n ),\n }\n case \"object.patch\":\n validateObjectPatchPropertyIds(context.ontology, operation.ref, operation.unset, \"unset\")\n validateObjectPatchPropertyIds(context.ontology, operation.ref, operation.reset, \"reset\")\n return {\n normalizedSet: validateObjectAuthorityProperties(\n context.ontology,\n operation.ref,\n operation.set\n ),\n }\n case \"object.delete\":\n case \"object.restore\":\n return {}\n }\n}\n\nfunction applyObjectTransition(\n context: MaterializerContext,\n state: EditWorkingState,\n working: WorkingObject,\n next: WorkingObject[\"override\"],\n nextEditedAt: Readonly<Record<string, string>>,\n journal?: EditUndoJournal\n): void {\n const previous = working.override\n const previousEditedAt = working.editedAt\n working.override = next\n working.editedAt = { ...nextEditedAt }\n try {\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n validateWorkingCardinality(state.links.slots)\n } catch (error) {\n working.override = previous\n working.editedAt = previousEditedAt\n throw error\n }\n journal?.push({\n restore: () => {\n working.override = previous\n working.editedAt = previousEditedAt\n },\n })\n}\n\nfunction objectOperationOutcome(\n operation: ObjectOperation,\n working: WorkingObject,\n changed: boolean,\n context: Pick<MaterializerContext, \"ontology\">,\n identity: TimedCommitIdentity\n): OntologyOperationOutcome {\n const outcome: OntologyOperationOutcome = {\n id: operation.id,\n ok: true,\n authority: authorityOutcome(changed),\n }\n const resolved = resolveObject(context.ontology, working)\n if (!resolved) return outcome\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: identity.commitId,\n committedAt: identity.committedAt,\n })\n const object = change?.after ?? working.before\n if (!object) {\n throw new MaterializationValidationError(\"Effective object outcome could not be resolved.\")\n }\n return { ...outcome, object }\n}\n\nfunction applyLinkOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: LinkOperation,\n cardinality: \"one\" | \"many\" | undefined,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n validateLinkEndpoints(context, state, operation)\n const normalizedProperties = validateLinkOperation(context, operation)\n if (cardinality === \"one\") {\n return applyLinkSlotOperation(context, state, operation, normalizedProperties, journal)\n }\n const working = requireWorkingLinkEdge(state, operation)\n const currentEffective = resolveLinkEdge(context.ontology, working, state.objects)\n const transitionInput = {\n operation,\n hasSource: working.source !== null,\n authority: working.override,\n effectiveExists: currentEffective !== null,\n }\n const transition = applyLinkEdit({ ...transitionInput, normalizedProperties })\n applyLinkEdgeTransition(working, transition.next, journal)\n return { id: operation.id, ok: true, authority: authorityOutcome(transition.changed) }\n}\n\nfunction applyLinkSlotOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: LinkOperation,\n normalizedProperties: ReturnType<typeof validateLinkAuthorityProperties> | undefined,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n const key = linkScopeKey(operation.ref.source, operation.ref.linkId)\n const working = state.links.slots.get(key)\n if (!working) {\n throw new MaterializationValidationError(\"Link slot state was not loaded.\")\n }\n const current = resolveLinkSlot(context.ontology, working, state.objects)\n const previous = working.override\n let next = previous\n\n switch (operation.kind) {\n case \"link.upsert\":\n if (current && linkRefKey(current.ref) !== linkRefKey(operation.ref)) {\n throw new MaterializationValidationError(\n `Link scope '${operation.ref.source.objectTypeId}.${operation.ref.linkId}' has cardinality one.`\n )\n }\n next = {\n kind: \"set\",\n target: operation.ref.target,\n ...(normalizedProperties !== undefined ? { properties: normalizedProperties } : {}),\n }\n break\n case \"link.delete\":\n if (current && linkRefKey(current.ref) === linkRefKey(operation.ref)) {\n next = { kind: \"clear\", target: operation.ref.target }\n }\n break\n case \"link.reset\":\n if (previous && objectRefKey(previous.target) === objectRefKey(operation.ref.target)) {\n next = null\n }\n break\n }\n\n const changed = stableJsonStringify(previous) !== stableJsonStringify(next)\n working.override = next\n journal?.push({\n restore: () => {\n working.override = previous\n },\n })\n return { id: operation.id, ok: true, authority: authorityOutcome(changed) }\n}\n\nfunction requireWorkingLinkEdge(\n state: EditWorkingState,\n operation: LinkOperation\n): WorkingLinkEdge {\n const working = state.links.edges.get(linkRefKey(operation.ref))\n if (!working) throw new MaterializationValidationError(\"Link state was not loaded.\")\n return working\n}\n\nfunction validateLinkEndpoints(\n context: Pick<MaterializerContext, \"ontology\">,\n state: EditWorkingState,\n operation: LinkOperation\n): void {\n if (operation.kind !== \"link.upsert\") return\n const source = state.objects.get(objectRefKey(operation.ref.source))\n const target = state.objects.get(objectRefKey(operation.ref.target))\n const sourceExists = source && resolveObject(context.ontology, source)\n const targetExists = target && resolveObject(context.ontology, target)\n if (sourceExists && targetExists) return\n throw new MaterializationValidationError(\"Link upsert requires both endpoints to be effective.\")\n}\n\nfunction validateLinkOperation(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: LinkOperation\n): ReturnType<typeof validateLinkAuthorityProperties> | undefined {\n if (operation.kind !== \"link.upsert\") return undefined\n return validateLinkAuthorityProperties(context.ontology, operation.ref, operation.properties)\n}\n\nfunction applyLinkEdgeTransition(\n working: WorkingLinkEdge,\n next: WorkingLinkEdge[\"override\"],\n journal?: EditUndoJournal\n): void {\n const previous = working.override\n working.override = next\n journal?.push({\n restore: () => {\n working.override = previous\n },\n })\n}\n\nfunction authorityOutcome(changed: boolean): \"changed\" | \"unchanged\" {\n if (changed) return \"changed\"\n return \"unchanged\"\n}\n\nfunction isObjectOperation(operation: OntologyEditOperation): operation is ObjectOperation {\n switch (operation.kind) {\n case \"object.create\":\n case \"object.upsert\":\n case \"object.patch\":\n case \"object.delete\":\n case \"object.restore\":\n return true\n case \"link.upsert\":\n case \"link.delete\":\n case \"link.reset\":\n return false\n }\n}\n",
|
|
31
|
-
"import type { EventActor } from \"../../events/envelope\"\nimport type {\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n} from \"../../materialization/model\"\nimport {\n compareLinkRefs,\n compareObjectRefs,\n linkRefKey,\n linkRefSortKey,\n linkScopeKey,\n linkScopeSortKey,\n objectRefKey,\n objectRefSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport {\n buildLinkMaterializationEventDraft,\n buildObjectMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveLink, diffEffectiveLinkSlot, diffEffectiveObject } from \"../effective/diff\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport { stageWorkBounded } from \"../execution/work-executor\"\nimport {\n appendEffectiveLinkWork,\n appendEffectiveObjectWork,\n appendLinkEdgeOverrideWork,\n appendLinkSlotOverrideWork,\n appendObjectOverrideWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport {\n type EditWorkingState,\n resolveLinkEdge,\n resolveLinkSlot,\n resolveObject,\n validateWorkingCardinality,\n type WorkingLinkEdge,\n type WorkingLinkSlot,\n type WorkingObject,\n} from \"./working-state\"\n\nexport interface EditPlanChanges {\n readonly objects: readonly EffectiveObjectChange[]\n readonly links: readonly EffectiveLinkChange[]\n}\n\ninterface EditPlanContext {\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly correlationId: string\n readonly actor?: EventActor\n}\n\nexport async function stageEditPlan(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n state: EditWorkingState,\n planContext: EditPlanContext\n): Promise<EditPlanChanges> {\n validateWorkingCardinality(state.links.slots)\n\n const objectChanges: EffectiveObjectChange[] = []\n for (const working of sortedObjects(state.objects)) {\n const change = await stageObject(context, storage, session, working, planContext)\n if (change) objectChanges.push(change)\n }\n\n const linkChanges: EffectiveLinkChange[] = []\n for (const working of sortedLinkEdges(state.links.edges)) {\n const change = await stageLinkEdge(\n context,\n storage,\n session,\n state.objects,\n working,\n planContext\n )\n if (change) linkChanges.push(change)\n }\n for (const working of sortedLinkSlots(state.links.slots)) {\n linkChanges.push(\n ...(await stageLinkSlot(context, storage, session, state.objects, working, planContext))\n )\n }\n\n return { objects: objectChanges, links: linkChanges }\n}\n\n/**\n * Stages one slot-level authority change and translates it back to physical edge writes/events.\n * Replacing the selected target therefore becomes an ordered delete of the old edge followed by a\n * create of the new edge, while the override itself remains keyed only by `(source, linkId)`.\n */\nasync function stageLinkSlot(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n objects: EditWorkingState[\"objects\"],\n working: WorkingLinkSlot,\n planContext: EditPlanContext\n): Promise<EffectiveLinkChange[]> {\n const overrideItems: MaterializationPlanWorkItem[] = []\n appendLinkSlotOverrideWork(overrideItems, working, planContext.identity)\n const resolved = resolveLinkSlot(context.ontology, working, objects)\n const changes = diffEffectiveLinkSlot({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n\n const representative =\n resolved?.ref ??\n working.before?.ref ??\n (working.override\n ? {\n source: working.ref.source,\n linkId: working.ref.linkId,\n target: working.override.target,\n }\n : null)\n const scopeSortKey = linkScopeSortKey(working.ref.source, working.ref.linkId)\n const work: MaterializationWorkRecord[] = overrideItems.map((item) =>\n planWork(item, scopeSortKey)\n )\n if (representative) {\n work.push(\n classificationWork(\"link\", linkRefKey(representative), linkRefSortKey(representative))\n )\n }\n for (const change of changes) {\n const effectiveItems: MaterializationPlanWorkItem[] = []\n appendEffectiveLinkWork(effectiveItems, change)\n const sortKey = linkRefSortKey(change.ref)\n work.push(...effectiveItems.map((item) => planWork(item, sortKey)))\n work.push(eventWork(buildLinkEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return changes\n}\n\nasync function stageObject(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n working: WorkingObject,\n planContext: EditPlanContext\n): Promise<EffectiveObjectChange | null> {\n const items: MaterializationPlanWorkItem[] = []\n appendObjectOverrideWork(items, working, planContext.identity)\n\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n if (change) appendEffectiveObjectWork(items, change)\n\n const sortKey = objectRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(working.ref), sortKey),\n ...items.map((item) => planWork(item, sortKey)),\n ]\n if (change) {\n work.push(eventWork(buildObjectEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return change\n}\n\nasync function stageLinkEdge(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n objects: EditWorkingState[\"objects\"],\n working: WorkingLinkEdge,\n planContext: EditPlanContext\n): Promise<EffectiveLinkChange | null> {\n const items: MaterializationPlanWorkItem[] = []\n appendLinkEdgeOverrideWork(items, working, planContext.identity)\n\n const resolved = resolveLinkEdge(context.ontology, working, objects)\n const change = diffEffectiveLink({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n if (change) appendEffectiveLinkWork(items, change)\n\n const sortKey = linkRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"link\", linkRefKey(working.ref), sortKey),\n ...items.map((item) => planWork(item, sortKey)),\n ]\n if (change) {\n work.push(eventWork(buildLinkEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return change\n}\n\nfunction buildObjectEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext,\n change: EffectiveObjectChange\n) {\n const eventContext = materializationEventContext(context, planContext)\n return buildObjectMaterializationEventDraft({ ...eventContext, change })\n}\n\nfunction buildLinkEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext,\n change: EffectiveLinkChange\n) {\n const eventContext = materializationEventContext(context, planContext)\n return buildLinkMaterializationEventDraft({ ...eventContext, change })\n}\n\nfunction materializationEventContext(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext\n) {\n const base = {\n projectId: context.projectId,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n origin: planContext.origin,\n correlationId: planContext.correlationId,\n }\n if (planContext.actor === undefined) return base\n return { ...base, actor: planContext.actor }\n}\n\nfunction sortedObjects(objects: EditWorkingState[\"objects\"]): WorkingObject[] {\n return [...objects.values()].sort((left, right) => compareObjectRefs(left.ref, right.ref))\n}\n\nfunction sortedLinkEdges(edges: EditWorkingState[\"links\"][\"edges\"]): WorkingLinkEdge[] {\n return [...edges.values()].sort((left, right) => compareLinkRefs(left.ref, right.ref))\n}\n\nfunction sortedLinkSlots(slots: EditWorkingState[\"links\"][\"slots\"]): WorkingLinkSlot[] {\n return [...slots.values()].sort((left, right) =>\n linkScopeKey(left.ref.source, left.ref.linkId).localeCompare(\n linkScopeKey(right.ref.source, right.ref.linkId)\n )\n )\n}\n",
|
|
30
|
+
"/**\n * Existence checks for `userRef` values written by managed edits.\n *\n * Auth storage is read once per commit, before the serializable transaction opens: every user id\n * the operations carry is looked up, deduplicated, and the statuses travel into the synchronous\n * edit pass. There, an operation may only introduce a user that exists and is active. A value the\n * object already held is never re-checked, so suspending a user leaves the objects that reference\n * them writable. Users are never deleted, so a check at write time stays true for existence.\n */\nimport type { JsonValue } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { OntologyEditOperation } from \"../../materialization/model\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport { collectUserRefIds, userReferenceProblem } from \"../../ontology/user-ref\"\nimport type { UserStatus } from \"../../storage/auth/types\"\nimport type { MaterializerContext } from \"../context\"\n\n/** Statuses of the users a commit's operations reference; `null` marks an unknown id. */\nexport type ReferencedUsers =\n | { readonly kind: \"loaded\"; readonly statuses: ReadonlyMap<string, UserStatus | null> }\n | { readonly kind: \"unavailable\" }\n\nconst NO_REFERENCED_USERS: ReferencedUsers = { kind: \"loaded\", statuses: new Map() }\n\nexport async function loadReferencedUsers(\n context: Pick<MaterializerContext, \"projectId\" | \"ontology\" | \"storage\">,\n operations: readonly OntologyEditOperation[]\n): Promise<ReferencedUsers> {\n const ids = new Set<string>()\n for (const operation of operations) {\n switch (operation.kind) {\n case \"object.create\":\n case \"object.upsert\":\n collectObjectUserRefIds(\n context.ontology,\n operation.ref.objectTypeId,\n operation.properties,\n ids\n )\n break\n case \"object.patch\":\n collectObjectUserRefIds(context.ontology, operation.ref.objectTypeId, operation.set, ids)\n break\n default:\n break\n }\n }\n if (ids.size === 0) return NO_REFERENCED_USERS\n\n const users = context.storage.auth?.users\n if (!users) return { kind: \"unavailable\" }\n const entries = await Promise.all(\n [...ids].map(async (id) => {\n const user = await users.getById({ projectId: context.projectId, id })\n return [id, user?.status ?? null] as const\n })\n )\n return { kind: \"loaded\", statuses: new Map(entries) }\n}\n\n/**\n * Reject user references an object operation introduces unless the user exists and is active.\n *\n * `before` is the effective object the operation started from; ids it already held under the same\n * property are accepted as they are.\n */\nexport function assertIntroducedUsersActive(\n ontology: OntologyRegistry,\n objectTypeId: string,\n before: Readonly<Record<string, JsonValue>> | undefined,\n after: Readonly<Record<string, JsonValue>>,\n users: ReferencedUsers\n): void {\n const objectType = ontology.resolveObjectType(objectTypeId)\n const valueTypesById = ontology.getValueTypesById()\n for (const property of objectType.properties) {\n const introduced = collectUserRefIds(\n property.schema,\n after[property.id],\n valueTypesById,\n new Set()\n )\n if (introduced.size === 0) continue\n const held = collectUserRefIds(\n property.schema,\n before?.[property.id],\n valueTypesById,\n new Set()\n )\n for (const id of introduced) {\n if (held.has(id)) continue\n const problem = userReferenceProblem(\n `Property '${objectTypeId}.${property.id}'`,\n id,\n users.kind === \"unavailable\" ? \"unverifiable\" : (users.statuses.get(id) ?? null)\n )\n if (problem) throw new MaterializationValidationError(problem)\n }\n }\n}\n\nfunction collectObjectUserRefIds(\n ontology: OntologyRegistry,\n objectTypeId: string,\n properties: Readonly<Record<string, JsonValue>>,\n into: Set<string>\n): void {\n // Unknown types and properties are rejected by the edit pass; nothing to look up for them.\n const objectType = ontology.getObjectTypeById(objectTypeId)\n if (!objectType) return\n const valueTypesById = ontology.getValueTypesById()\n for (const property of objectType.properties) {\n collectUserRefIds(property.schema, properties[property.id], valueTypesById, into)\n }\n}\n",
|
|
31
|
+
"import { stableJsonStringify } from \"../../json\"\nimport { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { OntologyEditOperation, OntologyOperationOutcome } from \"../../materialization/model\"\nimport { linkRefKey, linkScopeKey, objectRefKey } from \"../../materialization/refs\"\nimport type { MaterializerContext } from \"../context\"\nimport { diffEffectiveObject } from \"../effective/diff\"\nimport type { ResolvedObjectValue } from \"../effective/resolve\"\nimport {\n validateEffectiveObject,\n validateLinkAuthorityProperties,\n validateLinkRef,\n validateObjectAuthorityProperties,\n validateObjectPatchPropertyIds,\n validateObjectRef,\n} from \"../effective/validate\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport { applyLinkEdit, applyObjectEdit } from \"./apply\"\nimport { linkCardinality } from \"./read-set\"\nimport { assertIntroducedUsersActive, type ReferencedUsers } from \"./user-refs\"\nimport {\n type EditWorkingState,\n resolveLinkEdge,\n resolveLinkSlot,\n resolveObject,\n validateWorkingCardinality,\n type WorkingLinkEdge,\n type WorkingObject,\n} from \"./working-state\"\n\ntype ObjectOperation = Extract<OntologyEditOperation, { readonly kind: `object.${string}` }>\ntype LinkOperation = Extract<OntologyEditOperation, { readonly kind: `link.${string}` }>\n\n/**\n * Undo record for one override the current operation group replaced.\n *\n * Only the mutable override moves; loaded snapshots stay pinned for the whole commit, so restoring\n * the overrides in reverse returns the working set to its pre-group state. Incident links loaded\n * along the way are a read cache and are deliberately left in place.\n */\ninterface EditUndoEntry {\n readonly restore: () => void\n}\n\n/** Collects undo records while a grouped item applies. */\nexport type EditUndoJournal = EditUndoEntry[]\n\nexport function undoEditJournal(journal: EditUndoJournal): void {\n for (let index = journal.length - 1; index >= 0; index -= 1) {\n journal[index]?.restore()\n }\n}\n\nexport function applyEditOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: OntologyEditOperation,\n identity: TimedCommitIdentity,\n users: ReferencedUsers,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n validateOperationRef(context, operation)\n if (isObjectOperation(operation)) {\n return applyObjectOperation(context, state, operation, identity, users, journal)\n }\n return applyLinkOperation(\n context,\n state,\n operation,\n linkCardinality(context.ontology, operation.ref),\n journal\n )\n}\n\nfunction validateOperationRef(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: OntologyEditOperation\n): void {\n if (isObjectOperation(operation)) {\n validateObjectRef(context.ontology, operation.ref)\n return\n }\n validateLinkRef(context.ontology, operation.ref)\n}\n\nfunction applyObjectOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: ObjectOperation,\n identity: TimedCommitIdentity,\n users: ReferencedUsers,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n const working = requireWorkingObject(state, operation)\n const normalized = validateObjectOperation(context, operation)\n const currentEffective = resolveObject(context.ontology, working)\n const transition = applyObjectEdit({\n operation,\n sourceProperties: working.source?.assertion.properties ?? null,\n authority: working.override,\n editedAt: working.editedAt,\n committedAt: identity.committedAt,\n effectiveExists: currentEffective !== null,\n ...normalized,\n })\n\n // Restore brings back values the object already held; only caller-written values are new.\n const assertUsers =\n operation.kind === \"object.restore\"\n ? undefined\n : (resolved: ResolvedObjectValue) =>\n assertIntroducedUsersActive(\n context.ontology,\n operation.ref.objectTypeId,\n currentEffective?.properties,\n resolved.properties,\n users\n )\n applyObjectTransition(\n context,\n state,\n working,\n transition.next,\n transition.editedAt,\n journal,\n assertUsers\n )\n\n return objectOperationOutcome(operation, working, transition.changed, context, identity)\n}\n\nfunction requireWorkingObject(state: EditWorkingState, operation: ObjectOperation): WorkingObject {\n const working = state.objects.get(objectRefKey(operation.ref))\n if (!working) throw new MaterializationValidationError(\"Object state was not loaded.\")\n return working\n}\n\nfunction validateObjectOperation(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: ObjectOperation\n): {\n readonly normalizedProperties?: ReturnType<typeof validateObjectAuthorityProperties>\n readonly normalizedSet?: ReturnType<typeof validateObjectAuthorityProperties>\n} {\n switch (operation.kind) {\n case \"object.create\":\n case \"object.upsert\":\n return {\n normalizedProperties: validateObjectAuthorityProperties(\n context.ontology,\n operation.ref,\n operation.properties\n ),\n }\n case \"object.patch\":\n validateObjectPatchPropertyIds(context.ontology, operation.ref, operation.unset, \"unset\")\n validateObjectPatchPropertyIds(context.ontology, operation.ref, operation.reset, \"reset\")\n return {\n normalizedSet: validateObjectAuthorityProperties(\n context.ontology,\n operation.ref,\n operation.set\n ),\n }\n case \"object.delete\":\n case \"object.restore\":\n return {}\n }\n}\n\nfunction applyObjectTransition(\n context: MaterializerContext,\n state: EditWorkingState,\n working: WorkingObject,\n next: WorkingObject[\"override\"],\n nextEditedAt: Readonly<Record<string, string>>,\n journal?: EditUndoJournal,\n validateResolved?: (resolved: ResolvedObjectValue) => void\n): void {\n const previous = working.override\n const previousEditedAt = working.editedAt\n working.override = next\n working.editedAt = { ...nextEditedAt }\n try {\n const resolved = resolveObject(context.ontology, working)\n if (resolved) {\n validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n validateResolved?.(resolved)\n }\n validateWorkingCardinality(state.links.slots)\n } catch (error) {\n working.override = previous\n working.editedAt = previousEditedAt\n throw error\n }\n journal?.push({\n restore: () => {\n working.override = previous\n working.editedAt = previousEditedAt\n },\n })\n}\n\nfunction objectOperationOutcome(\n operation: ObjectOperation,\n working: WorkingObject,\n changed: boolean,\n context: Pick<MaterializerContext, \"ontology\">,\n identity: TimedCommitIdentity\n): OntologyOperationOutcome {\n const outcome: OntologyOperationOutcome = {\n id: operation.id,\n ok: true,\n authority: authorityOutcome(changed),\n }\n const resolved = resolveObject(context.ontology, working)\n if (!resolved) return outcome\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: identity.commitId,\n committedAt: identity.committedAt,\n })\n const object = change?.after ?? working.before\n if (!object) {\n throw new MaterializationValidationError(\"Effective object outcome could not be resolved.\")\n }\n return { ...outcome, object }\n}\n\nfunction applyLinkOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: LinkOperation,\n cardinality: \"one\" | \"many\" | undefined,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n validateLinkEndpoints(context, state, operation)\n const normalizedProperties = validateLinkOperation(context, operation)\n if (cardinality === \"one\") {\n return applyLinkSlotOperation(context, state, operation, normalizedProperties, journal)\n }\n const working = requireWorkingLinkEdge(state, operation)\n const currentEffective = resolveLinkEdge(context.ontology, working, state.objects)\n const transitionInput = {\n operation,\n hasSource: working.source !== null,\n authority: working.override,\n effectiveExists: currentEffective !== null,\n }\n const transition = applyLinkEdit({ ...transitionInput, normalizedProperties })\n applyLinkEdgeTransition(working, transition.next, journal)\n return { id: operation.id, ok: true, authority: authorityOutcome(transition.changed) }\n}\n\nfunction applyLinkSlotOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: LinkOperation,\n normalizedProperties: ReturnType<typeof validateLinkAuthorityProperties> | undefined,\n journal?: EditUndoJournal\n): OntologyOperationOutcome {\n const key = linkScopeKey(operation.ref.source, operation.ref.linkId)\n const working = state.links.slots.get(key)\n if (!working) {\n throw new MaterializationValidationError(\"Link slot state was not loaded.\")\n }\n const current = resolveLinkSlot(context.ontology, working, state.objects)\n const previous = working.override\n let next = previous\n\n switch (operation.kind) {\n case \"link.upsert\":\n if (current && linkRefKey(current.ref) !== linkRefKey(operation.ref)) {\n throw new MaterializationValidationError(\n `Link scope '${operation.ref.source.objectTypeId}.${operation.ref.linkId}' has cardinality one.`\n )\n }\n next = {\n kind: \"set\",\n target: operation.ref.target,\n ...(normalizedProperties !== undefined ? { properties: normalizedProperties } : {}),\n }\n break\n case \"link.delete\":\n if (current && linkRefKey(current.ref) === linkRefKey(operation.ref)) {\n next = { kind: \"clear\", target: operation.ref.target }\n }\n break\n case \"link.reset\":\n if (previous && objectRefKey(previous.target) === objectRefKey(operation.ref.target)) {\n next = null\n }\n break\n }\n\n const changed = stableJsonStringify(previous) !== stableJsonStringify(next)\n working.override = next\n journal?.push({\n restore: () => {\n working.override = previous\n },\n })\n return { id: operation.id, ok: true, authority: authorityOutcome(changed) }\n}\n\nfunction requireWorkingLinkEdge(\n state: EditWorkingState,\n operation: LinkOperation\n): WorkingLinkEdge {\n const working = state.links.edges.get(linkRefKey(operation.ref))\n if (!working) throw new MaterializationValidationError(\"Link state was not loaded.\")\n return working\n}\n\nfunction validateLinkEndpoints(\n context: Pick<MaterializerContext, \"ontology\">,\n state: EditWorkingState,\n operation: LinkOperation\n): void {\n if (operation.kind !== \"link.upsert\") return\n const source = state.objects.get(objectRefKey(operation.ref.source))\n const target = state.objects.get(objectRefKey(operation.ref.target))\n const sourceExists = source && resolveObject(context.ontology, source)\n const targetExists = target && resolveObject(context.ontology, target)\n if (sourceExists && targetExists) return\n throw new MaterializationValidationError(\"Link upsert requires both endpoints to be effective.\")\n}\n\nfunction validateLinkOperation(\n context: Pick<MaterializerContext, \"ontology\">,\n operation: LinkOperation\n): ReturnType<typeof validateLinkAuthorityProperties> | undefined {\n if (operation.kind !== \"link.upsert\") return undefined\n return validateLinkAuthorityProperties(context.ontology, operation.ref, operation.properties)\n}\n\nfunction applyLinkEdgeTransition(\n working: WorkingLinkEdge,\n next: WorkingLinkEdge[\"override\"],\n journal?: EditUndoJournal\n): void {\n const previous = working.override\n working.override = next\n journal?.push({\n restore: () => {\n working.override = previous\n },\n })\n}\n\nfunction authorityOutcome(changed: boolean): \"changed\" | \"unchanged\" {\n if (changed) return \"changed\"\n return \"unchanged\"\n}\n\nfunction isObjectOperation(operation: OntologyEditOperation): operation is ObjectOperation {\n switch (operation.kind) {\n case \"object.create\":\n case \"object.upsert\":\n case \"object.patch\":\n case \"object.delete\":\n case \"object.restore\":\n return true\n case \"link.upsert\":\n case \"link.delete\":\n case \"link.reset\":\n return false\n }\n}\n",
|
|
32
|
+
"import type {\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n} from \"../../materialization/model\"\nimport {\n compareLinkRefs,\n compareObjectRefs,\n linkRefKey,\n linkRefSortKey,\n linkScopeKey,\n linkScopeSortKey,\n objectRefKey,\n objectRefSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport {\n buildLinkMaterializationEventDraft,\n buildObjectMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveLink, diffEffectiveLinkSlot, diffEffectiveObject } from \"../effective/diff\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport type { MaterializerAttribution } from \"../execution/scope\"\nimport { stageWorkBounded } from \"../execution/work-executor\"\nimport {\n appendEffectiveLinkWork,\n appendEffectiveObjectWork,\n appendLinkEdgeOverrideWork,\n appendLinkSlotOverrideWork,\n appendObjectOverrideWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\nimport {\n type EditWorkingState,\n resolveLinkEdge,\n resolveLinkSlot,\n resolveObject,\n validateWorkingCardinality,\n type WorkingLinkEdge,\n type WorkingLinkSlot,\n type WorkingObject,\n} from \"./working-state\"\n\nexport interface EditPlanChanges {\n readonly objects: readonly EffectiveObjectChange[]\n readonly links: readonly EffectiveLinkChange[]\n}\n\ninterface EditPlanContext {\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly correlationId: string\n readonly attribution: MaterializerAttribution\n}\n\nexport async function stageEditPlan(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n state: EditWorkingState,\n planContext: EditPlanContext\n): Promise<EditPlanChanges> {\n validateWorkingCardinality(state.links.slots)\n\n const objectChanges: EffectiveObjectChange[] = []\n for (const working of sortedObjects(state.objects)) {\n const change = await stageObject(context, storage, session, working, planContext)\n if (change) objectChanges.push(change)\n }\n\n const linkChanges: EffectiveLinkChange[] = []\n for (const working of sortedLinkEdges(state.links.edges)) {\n const change = await stageLinkEdge(\n context,\n storage,\n session,\n state.objects,\n working,\n planContext\n )\n if (change) linkChanges.push(change)\n }\n for (const working of sortedLinkSlots(state.links.slots)) {\n linkChanges.push(\n ...(await stageLinkSlot(context, storage, session, state.objects, working, planContext))\n )\n }\n\n return { objects: objectChanges, links: linkChanges }\n}\n\n/**\n * Stages one slot-level authority change and translates it back to physical edge writes/events.\n * Replacing the selected target therefore becomes an ordered delete of the old edge followed by a\n * create of the new edge, while the override itself remains keyed only by `(source, linkId)`.\n */\nasync function stageLinkSlot(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n objects: EditWorkingState[\"objects\"],\n working: WorkingLinkSlot,\n planContext: EditPlanContext\n): Promise<EffectiveLinkChange[]> {\n const overrideItems: MaterializationPlanWorkItem[] = []\n appendLinkSlotOverrideWork(overrideItems, working, planContext.identity)\n const resolved = resolveLinkSlot(context.ontology, working, objects)\n const changes = diffEffectiveLinkSlot({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n\n const representative =\n resolved?.ref ??\n working.before?.ref ??\n (working.override\n ? {\n source: working.ref.source,\n linkId: working.ref.linkId,\n target: working.override.target,\n }\n : null)\n const scopeSortKey = linkScopeSortKey(working.ref.source, working.ref.linkId)\n const work: MaterializationWorkRecord[] = overrideItems.map((item) =>\n planWork(item, scopeSortKey)\n )\n if (representative) {\n work.push(\n classificationWork(\"link\", linkRefKey(representative), linkRefSortKey(representative))\n )\n }\n for (const change of changes) {\n const effectiveItems: MaterializationPlanWorkItem[] = []\n appendEffectiveLinkWork(effectiveItems, change)\n const sortKey = linkRefSortKey(change.ref)\n work.push(...effectiveItems.map((item) => planWork(item, sortKey)))\n work.push(eventWork(buildLinkEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return changes\n}\n\nasync function stageObject(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n working: WorkingObject,\n planContext: EditPlanContext\n): Promise<EffectiveObjectChange | null> {\n const items: MaterializationPlanWorkItem[] = []\n appendObjectOverrideWork(items, working, planContext.identity)\n\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n if (change) appendEffectiveObjectWork(items, change)\n\n const sortKey = objectRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(working.ref), sortKey),\n ...items.map((item) => planWork(item, sortKey)),\n ]\n if (change) {\n work.push(eventWork(buildObjectEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return change\n}\n\nasync function stageLinkEdge(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n objects: EditWorkingState[\"objects\"],\n working: WorkingLinkEdge,\n planContext: EditPlanContext\n): Promise<EffectiveLinkChange | null> {\n const items: MaterializationPlanWorkItem[] = []\n appendLinkEdgeOverrideWork(items, working, planContext.identity)\n\n const resolved = resolveLinkEdge(context.ontology, working, objects)\n const change = diffEffectiveLink({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n if (change) appendEffectiveLinkWork(items, change)\n\n const sortKey = linkRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"link\", linkRefKey(working.ref), sortKey),\n ...items.map((item) => planWork(item, sortKey)),\n ]\n if (change) {\n work.push(eventWork(buildLinkEvent(context, planContext, change)))\n }\n await stageWorkBounded(context, storage, session, work)\n return change\n}\n\nfunction buildObjectEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext,\n change: EffectiveObjectChange\n) {\n const eventContext = materializationEventContext(context, planContext)\n return buildObjectMaterializationEventDraft({ ...eventContext, change })\n}\n\nfunction buildLinkEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext,\n change: EffectiveLinkChange\n) {\n const eventContext = materializationEventContext(context, planContext)\n return buildLinkMaterializationEventDraft({ ...eventContext, change })\n}\n\nfunction materializationEventContext(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: EditPlanContext\n) {\n return {\n projectId: context.projectId,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n origin: planContext.origin,\n correlationId: planContext.correlationId,\n attribution: planContext.attribution,\n }\n}\n\nfunction sortedObjects(objects: EditWorkingState[\"objects\"]): WorkingObject[] {\n return [...objects.values()].sort((left, right) => compareObjectRefs(left.ref, right.ref))\n}\n\nfunction sortedLinkEdges(edges: EditWorkingState[\"links\"][\"edges\"]): WorkingLinkEdge[] {\n return [...edges.values()].sort((left, right) => compareLinkRefs(left.ref, right.ref))\n}\n\nfunction sortedLinkSlots(slots: EditWorkingState[\"links\"][\"slots\"]): WorkingLinkSlot[] {\n return [...slots.values()].sort((left, right) =>\n linkScopeKey(left.ref.source, left.ref.linkId).localeCompare(\n linkScopeKey(right.ref.source, right.ref.linkId)\n )\n )\n}\n",
|
|
32
33
|
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type { OntologyEditCommit } from \"../../materialization/model\"\nimport { objectRefKey } from \"../../materialization/refs\"\nimport type { ObjectVectorWrite } from \"../../materialization/vectors\"\nimport type { Storage } from \"../../storage\"\nimport type { VectorIndexingWork } from \"../../storage/ontology/vector-indexing\"\nimport type { MaterializerExecution } from \"../execution/scope\"\n\n/** Kernel indexing can publish only its persisted results, never change business data. */\nexport async function authorizeVectorIndexingCommit(\n storage: Storage,\n projectId: string,\n input: OntologyEditCommit,\n execution: MaterializerExecution\n): Promise<boolean> {\n const executor = execution.scope.execution.executor\n if (executor.type !== \"kernel\" || executor.operation.type !== \"ontology.indexVectors\")\n return false\n if (\n input.mode !== \"atomic\" ||\n input.source.kind !== \"runtime\" ||\n input.operations.length ||\n !input.vectorWrites?.length ||\n input.expectedLinks.length ||\n input.expectedLinkScopes.length\n ) {\n throw new MaterializationValidationError(\n \"Vector indexing authority only permits its persisted vector writes.\"\n )\n }\n const writes = input.vectorWrites!\n const refs = new Set(writes.map((write) => objectRefKey(write.input.ref)))\n if (\n input.expectedObjects.length !== refs.size ||\n input.expectedObjects.some((expected) => !refs.has(objectRefKey(expected.ref)))\n ) {\n throw new MaterializationValidationError(\n \"Vector indexing must fence exactly its written objects.\"\n )\n }\n\n const indexing = storage.ontology.vectorIndexing\n const indexingId = executor.operation.indexingId\n const single = await indexing?.get({ projectId, id: indexingId })\n if (single && writes.length !== 1) {\n throw new MaterializationValidationError(\n \"Individual indexing authority only permits one vector write.\"\n )\n }\n\n // Multi-object publication reads membership/results once, not once per object.\n let members: readonly VectorIndexingWork[]\n if (single) {\n members = [single]\n } else if (writes.length === 1) {\n const member = await indexing?.getBatchMember({\n projectId,\n batchId: indexingId,\n ref: writes[0]!.input.ref,\n profile: writes[0]!.input.profile,\n })\n members = member ? [member] : []\n } else {\n members = (await indexing?.getBatch({ projectId, batchId: indexingId })) ?? []\n }\n\n const byProfile = new Map(\n members.map((work) => [JSON.stringify([objectRefKey(work.ref), work.profile]), work])\n )\n const source = execution.scope.execution.source\n\n for (const write of writes) {\n const work = byProfile.get(JSON.stringify([objectRefKey(write.input.ref), write.input.profile]))\n if (!work || work.status !== \"ready\") {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Vector indexing work is no longer ready.\"\n )\n }\n if (\n source.type !== \"ontologyCommit\" ||\n source.commitId !== work.sourceCommitId ||\n !matchesStoredResult(write, work)\n ) {\n throw new MaterializationValidationError(\n \"Vector indexing authority only permits its current prepared representation.\"\n )\n }\n }\n return true\n}\n\nfunction matchesStoredResult(write: ObjectVectorWrite, work: VectorIndexingWork): boolean {\n const prepared = write.input\n return (\n prepared.ref.objectTypeId === work.ref.objectTypeId &&\n prepared.ref.primaryId === work.ref.primaryId &&\n prepared.profile === work.profile &&\n prepared.configuration === work.configuration &&\n prepared.sourceFingerprint === work.sourceFingerprint &&\n work.values !== undefined &&\n work.values.length === write.values.length &&\n work.values.every((value, index) => value === write.values[index])\n )\n}\n",
|
|
33
34
|
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type { OntologyEditCommit } from \"../../materialization/model\"\nimport { objectRefKey } from \"../../materialization/refs\"\nimport { normalizeVector, vectorConfiguration, vectorSources } from \"../../objects/vectors/profile\"\nimport type { Storage } from \"../../storage\"\nimport { objectBatchKey } from \"../../storage/objects/keys\"\nimport type { MaterializationSession, OntologyVectorStorage } from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\n\nexport async function commitVectorWrites(\n context: MaterializerContext,\n storage: Storage,\n input: OntologyEditCommit,\n commitId: string,\n session: MaterializationSession\n): Promise<void> {\n if (input.mode !== \"atomic\" || !input.vectorWrites?.length) return\n const vectors = storage.ontology.vectors\n if (!vectors)\n throw new MaterializationValidationError(\"Storage does not support vector profiles.\")\n const rows = await storage.objects.getByPrimaryIdBatch({\n projectId: context.projectId,\n items: input.vectorWrites.map((write) => write.input.ref),\n })\n const expectations = new Map(\n input.expectedObjects.map((expected) => [objectRefKey(expected.ref), expected])\n )\n const entries: Parameters<OntologyVectorStorage[\"writeBatch\"]>[0][\"entries\"][number][] = []\n const seen = new Set<string>()\n for (const write of input.vectorWrites) {\n const prepared = write.input\n const key = JSON.stringify([objectRefKey(prepared.ref), prepared.profile])\n if (seen.has(key)) throw new MaterializationValidationError(`Duplicate vector write: ${key}`)\n seen.add(key)\n const profileDefinition = context.ontology.resolveObjectType(prepared.ref.objectTypeId).search\n ?.vectors?.[prepared.profile]\n if (\n prepared.projectId !== context.projectId ||\n !profileDefinition ||\n vectorConfiguration(profileDefinition) !== prepared.configuration\n ) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Vector profile configuration changed; index it again.\"\n )\n }\n const expected = expectations.get(objectRefKey(prepared.ref))\n if (\n !expected?.exists ||\n !prepared.expectedObject?.exists ||\n objectRefKey(prepared.expectedObject.ref) !== objectRefKey(prepared.ref) ||\n expected.version !== prepared.expectedObject.version ||\n expected.lastCommitId !== prepared.expectedObject.lastCommitId\n ) {\n throw new MaterializationValidationError(\n \"Vector writes must fence their prepared object revision.\"\n )\n }\n const row = rows.get(objectBatchKey(prepared.ref.objectTypeId, prepared.ref.primaryId))\n if (\n !row ||\n row.version !== expected.version ||\n row.lastCommitId !== expected.lastCommitId ||\n vectorSources(profileDefinition.source, row.properties).sourceFingerprint !==\n prepared.sourceFingerprint\n ) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Vector sources changed; index the profile again.\"\n )\n }\n entries.push({\n expectedCommitId: prepared.expectedVectorCommitId,\n value: {\n ref: prepared.ref,\n profile: prepared.profile,\n configuration: prepared.configuration,\n source: profileDefinition.source,\n sourceFingerprint: prepared.sourceFingerprint,\n values: normalizeVector(write.values, profileDefinition.model.definition.dimensions),\n lastCommitId: commitId,\n },\n })\n }\n\n await vectors.writeBatch({ session, projectId: context.projectId, entries })\n await storage.ontology.vectorIndexing?.complete({\n session,\n projectId: context.projectId,\n entries: input.vectorWrites.map(({ input: prepared }) => ({\n ref: prepared.ref,\n profile: prepared.profile,\n configuration: prepared.configuration,\n sourceFingerprint: prepared.sourceFingerprint,\n })),\n })\n}\n",
|
|
34
|
-
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n EditCommitResult,\n OntologyEditCommit,\n OntologyEditOperation,\n OntologyMaterializationOrigin,\n OntologyOperationOutcome,\n} from \"../../materialization/model\"\nimport type { Storage } from \"../../storage\"\nimport type { MaterializationSession, OntologyCommitWrite } from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommit, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport {\n assertMaterializerRunExecution,\n assertRuntimeMutationExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n createActionIdempotencyKey,\n createRuntimeIdempotencyKey,\n createTimedCommitIdentity,\n type TimedCommitIdentity,\n} from \"../shared/identity\"\nimport { normalizeOntologyEditCommit } from \"../shared/normalize\"\nimport { compileEditExecutionUnits, type EditExecutionUnit } from \"./execution-units\"\nimport { loadEditWorkingState } from \"./load-state\"\nimport { applyEditOperation, type EditUndoJournal, undoEditJournal } from \"./operations\"\nimport { stageEditPlan } from \"./plan\"\nimport { authorizeVectorIndexingCommit } from \"./vector-authority\"\nimport { commitVectorWrites } from \"./vectors\"\nimport type { EditWorkingState } from \"./working-state\"\n\ntype NormalizedEditCommit = ReturnType<typeof normalizeOntologyEditCommit>\n\ninterface PreparedEditCommit {\n readonly input: NormalizedEditCommit\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly execution: MaterializerExecution\n}\n\nexport async function commitEdits(\n context: MaterializerContext,\n raw: MaterializerCommand<OntologyEditCommit>\n): Promise<EditCommitResult> {\n const command = prepareEditCommit(context, raw)\n return executeEditCommit(context, command)\n}\n\nfunction prepareEditCommit(\n context: Pick<MaterializerContext, \"projectId\" | \"clock\">,\n raw: MaterializerCommand<OntologyEditCommit>\n): PreparedEditCommit {\n const input = normalizeOntologyEditCommit(raw.input)\n const idempotencyKey = editIdempotencyKey(input)\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey,\n normalizedCallerIntent: input,\n now: context.clock(),\n })\n return {\n input,\n identity,\n origin: input.source,\n execution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n}\n\nfunction editIdempotencyKey(input: NormalizedEditCommit): string {\n if (input.source.kind === \"action\") {\n return createActionIdempotencyKey(input.source.runId)\n }\n return createRuntimeIdempotencyKey(input.source.requestId)\n}\n\nasync function lockActionRunForMaterialization(\n storage: Storage,\n projectId: string,\n input: NormalizedEditCommit,\n execution: MaterializerExecution\n): Promise<void> {\n if (input.source.kind !== \"action\") return\n if (!storage.actionRuns) {\n throw new MaterializationValidationError(\n \"Storage does not provide Action run capabilities required by this commit.\"\n )\n }\n const run = await storage.actionRuns.lockForMaterialization({\n projectId,\n actionId: input.source.actionId,\n runId: input.source.runId,\n })\n assertMaterializerRunExecution(execution, run.executionId, `Action run '${run.id}'`)\n}\n\nasync function validateMutationExecution(\n storage: Storage,\n projectId: string,\n input: NormalizedEditCommit,\n execution: MaterializerExecution\n): Promise<void> {\n if (await authorizeVectorIndexingCommit(storage, projectId, input, execution)) return\n if (input.source.kind !== \"action\") {\n assertRuntimeMutationExecution(execution)\n return\n }\n assertTrustedPrimitiveMutationExecution(execution, {\n kind: \"action\",\n id: input.source.actionId,\n runId: input.source.runId,\n })\n if (!storage.actionRuns) {\n throw new MaterializationValidationError(\n \"Storage does not provide Action run capabilities required by this commit.\"\n )\n }\n const run = await storage.actionRuns.getById({ projectId, id: input.source.runId })\n if (!run) {\n throw new MaterializationValidationError(`Action run '${input.source.runId}' was not found.`)\n }\n if (run.actionId !== input.source.actionId) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Action run '${run.id}' does not belong to action '${input.source.actionId}'.`\n )\n }\n assertMaterializerRunExecution(execution, run.executionId, `Action run '${run.id}'`)\n}\n\nasync function executeEditCommit(\n context: MaterializerContext,\n command: PreparedEditCommit\n): Promise<EditCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction((storage) => executeEditTransaction(context, storage, command), {\n isolation: \"serializable\",\n })\n )\n}\n\nasync function executeEditTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedEditCommit\n): Promise<EditCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n await validateMutationExecution(storage, context.projectId, command.input, command.execution)\n\n const replay = await replayCommit<EditCommitResult>(\n context,\n command.identity,\n command.execution.executionId,\n storage\n )\n if (replay) return replay\n\n await lockActionRunForMaterialization(\n storage,\n context.projectId,\n command.input,\n command.execution\n )\n\n const session = await beginEditMaterialization(context, storage, command)\n const workingState = await loadEditWorkingState(\n context,\n storage.ontology.materializations,\n session,\n command.input.operations\n )\n const outcomes = applyEditOperations(context, workingState, command)\n const changes = await stageEditPlan(\n context,\n storage.ontology.materializations,\n session,\n workingState,\n editPlanContext(command)\n )\n await drainStagedWork(context, storage, session)\n await commitVectorWrites(context, storage, command.input, command.identity.commitId, session)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n command.identity\n )\n\n const result: EditCommitResult = {\n kind: \"edit\",\n commitId: command.identity.commitId,\n created: true,\n eventCount,\n committedAt: command.identity.committedAt,\n outcomes,\n changes,\n }\n return finalizeEditMaterialization(storage, session, result)\n}\n\nasync function beginEditMaterialization(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n storage: MaterializerStorage,\n command: PreparedEditCommit\n): Promise<MaterializationSession> {\n const commit = buildEditCommit(context, command)\n return storage.ontology.materializations.begin({\n commit,\n expected: {\n sources: [],\n ...editExpectations(command.input),\n points: [],\n },\n })\n}\n\nfunction buildEditCommit(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n command: PreparedEditCommit\n): OntologyCommitWrite {\n const commit: OntologyCommitWrite = {\n projectId: context.projectId,\n id: command.identity.commitId,\n idempotencyKey: command.identity.idempotencyKey,\n requestHash: command.identity.requestHash,\n executionId: command.execution.executionId,\n origin: command.origin,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n intent: {\n kind: \"edit\",\n mode: command.input.mode,\n operationCount: command.input.operations.length,\n ...(command.input.mode === \"atomic\" && command.input.vectorWrites?.length\n ? { vectorWriteCount: command.input.vectorWrites.length }\n : {}),\n },\n committedAt: command.identity.committedAt,\n }\n if (command.execution.actor === undefined) return commit\n return { ...commit, actor: command.execution.actor }\n}\n\nfunction editExpectations(input: NormalizedEditCommit) {\n if (input.mode === \"atomic\") {\n return {\n objects: input.expectedObjects,\n links: input.expectedLinks,\n linkScopes: input.expectedLinkScopes,\n }\n }\n return { objects: [], links: [], linkScopes: [] }\n}\n\nfunction applyEditOperations(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit\n): OntologyOperationOutcome[] {\n const outcomes: OntologyOperationOutcome[] = []\n const units = compileEditExecutionUnits(command.input)\n for (const unit of units) {\n outcomes.push(...applyEditExecutionUnit(context, state, command, unit))\n }\n return outcomes\n}\n\nfunction applyEditExecutionUnit(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit,\n unit: EditExecutionUnit\n): OntologyOperationOutcome[] {\n if (unit.kind === \"atomic-group\") {\n return applyEditOperationGroup(context, state, command, unit.operations)\n }\n return [applyOneEditOperation(context, state, unit.operation, command)]\n}\n\nfunction applyOneEditOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: OntologyEditOperation,\n command: PreparedEditCommit\n): OntologyOperationOutcome {\n try {\n return applyEditOperation(context, state, operation, command.identity)\n } catch (error) {\n if (!isRecoverableEditValidation(command.input, error)) throw error\n return { id: operation.id, ok: false, error: { code: \"validation\", message: error.message } }\n }\n}\n\n/**\n * Applies one grouped item, rolling the whole group back if any operation in it fails.\n *\n * Without this, continue mode would leave an item half-applied: a cardinality-one reassignment\n * whose `link.delete` succeeded and whose `link.upsert` failed would report an item error while the\n * original edge stayed deleted.\n */\nfunction applyEditOperationGroup(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit,\n group: readonly OntologyEditOperation[]\n): OntologyOperationOutcome[] {\n const journal: EditUndoJournal = []\n const applied: OntologyOperationOutcome[] = []\n\n for (const operation of group) {\n let outcome: OntologyOperationOutcome\n try {\n outcome = applyEditOperation(context, state, operation, command.identity, journal)\n } catch (error) {\n if (!isRecoverableEditValidation(command.input, error)) throw error\n undoEditJournal(journal)\n return failedEditGroup(group, error.message)\n }\n if (!outcome.ok) {\n undoEditJournal(journal)\n return failedEditGroup(group, outcome.error.message)\n }\n applied.push(outcome)\n }\n return applied\n}\n\n/** Reports every id in a rolled-back group as failed, so no position looks applied. */\nfunction failedEditGroup(\n group: readonly OntologyEditOperation[],\n message: string\n): OntologyOperationOutcome[] {\n return group.map((operation) => ({\n id: operation.id,\n ok: false as const,\n error: { code: \"validation\" as const, message },\n }))\n}\n\nfunction isRecoverableEditValidation(\n input: NormalizedEditCommit,\n error: unknown\n): error is MaterializationValidationError {\n if (input.mode === \"atomic\") return false\n return error instanceof MaterializationValidationError\n}\n\nfunction editPlanContext(command: PreparedEditCommit) {\n const context = {\n identity: command.identity,\n origin: command.origin,\n correlationId: command.execution.correlationId,\n }\n if (command.execution.actor === undefined) return context\n return { ...context, actor: command.execution.actor }\n}\n\nasync function finalizeEditMaterialization(\n storage: MaterializerStorage,\n session: MaterializationSession,\n result: EditCommitResult\n): Promise<EditCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: { sourceActivations: [], result },\n })\n return applied.commit.result as EditCommitResult\n}\n",
|
|
35
|
+
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n EditCommitResult,\n OntologyEditCommit,\n OntologyEditOperation,\n OntologyMaterializationOrigin,\n OntologyOperationOutcome,\n} from \"../../materialization/model\"\nimport type { Storage } from \"../../storage\"\nimport type { MaterializationSession, OntologyCommitWrite } from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommit, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport {\n assertMaterializerRunExecution,\n assertRuntimeMutationExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n createActionIdempotencyKey,\n createRuntimeIdempotencyKey,\n createTimedCommitIdentity,\n type TimedCommitIdentity,\n} from \"../shared/identity\"\nimport { normalizeOntologyEditCommit } from \"../shared/normalize\"\nimport { compileEditExecutionUnits, type EditExecutionUnit } from \"./execution-units\"\nimport { loadEditWorkingState } from \"./load-state\"\nimport { applyEditOperation, type EditUndoJournal, undoEditJournal } from \"./operations\"\nimport { stageEditPlan } from \"./plan\"\nimport { loadReferencedUsers, type ReferencedUsers } from \"./user-refs\"\nimport { authorizeVectorIndexingCommit } from \"./vector-authority\"\nimport { commitVectorWrites } from \"./vectors\"\nimport type { EditWorkingState } from \"./working-state\"\n\ntype NormalizedEditCommit = ReturnType<typeof normalizeOntologyEditCommit>\n\ninterface PreparedEditCommit {\n readonly input: NormalizedEditCommit\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly execution: MaterializerExecution\n /** Read before the transaction opens; see `user-refs.ts`. */\n readonly users: ReferencedUsers\n}\n\nexport async function commitEdits(\n context: MaterializerContext,\n raw: MaterializerCommand<OntologyEditCommit>\n): Promise<EditCommitResult> {\n const command = await prepareEditCommit(context, raw)\n return executeEditCommit(context, command)\n}\n\nasync function prepareEditCommit(\n context: Pick<MaterializerContext, \"projectId\" | \"clock\" | \"ontology\" | \"storage\">,\n raw: MaterializerCommand<OntologyEditCommit>\n): Promise<PreparedEditCommit> {\n const input = normalizeOntologyEditCommit(raw.input)\n const idempotencyKey = editIdempotencyKey(input)\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey,\n normalizedCallerIntent: input,\n now: context.clock(),\n })\n return {\n input,\n identity,\n origin: input.source,\n execution: prepareMaterializerExecution(context.projectId, raw.scope),\n users: await loadReferencedUsers(context, input.operations),\n }\n}\n\nfunction editIdempotencyKey(input: NormalizedEditCommit): string {\n if (input.source.kind === \"action\") {\n return createActionIdempotencyKey(input.source.runId)\n }\n return createRuntimeIdempotencyKey(input.source.requestId)\n}\n\nasync function lockActionRunForMaterialization(\n storage: Storage,\n projectId: string,\n input: NormalizedEditCommit,\n execution: MaterializerExecution\n): Promise<void> {\n if (input.source.kind !== \"action\") return\n if (!storage.actionRuns) {\n throw new MaterializationValidationError(\n \"Storage does not provide Action run capabilities required by this commit.\"\n )\n }\n const run = await storage.actionRuns.lockForMaterialization({\n projectId,\n actionId: input.source.actionId,\n runId: input.source.runId,\n })\n assertMaterializerRunExecution(execution, run.executionId, `Action run '${run.id}'`)\n}\n\nasync function validateMutationExecution(\n storage: Storage,\n projectId: string,\n input: NormalizedEditCommit,\n execution: MaterializerExecution\n): Promise<void> {\n if (await authorizeVectorIndexingCommit(storage, projectId, input, execution)) return\n if (input.source.kind !== \"action\") {\n assertRuntimeMutationExecution(execution)\n return\n }\n assertTrustedPrimitiveMutationExecution(execution, {\n kind: \"action\",\n id: input.source.actionId,\n runId: input.source.runId,\n })\n if (!storage.actionRuns) {\n throw new MaterializationValidationError(\n \"Storage does not provide Action run capabilities required by this commit.\"\n )\n }\n const run = await storage.actionRuns.getById({ projectId, id: input.source.runId })\n if (!run) {\n throw new MaterializationValidationError(`Action run '${input.source.runId}' was not found.`)\n }\n if (run.actionId !== input.source.actionId) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Action run '${run.id}' does not belong to action '${input.source.actionId}'.`\n )\n }\n assertMaterializerRunExecution(execution, run.executionId, `Action run '${run.id}'`)\n}\n\nasync function executeEditCommit(\n context: MaterializerContext,\n command: PreparedEditCommit\n): Promise<EditCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction((storage) => executeEditTransaction(context, storage, command), {\n isolation: \"serializable\",\n })\n )\n}\n\nasync function executeEditTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedEditCommit\n): Promise<EditCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n await validateMutationExecution(storage, context.projectId, command.input, command.execution)\n\n const replay = await replayCommit<EditCommitResult>(\n context,\n command.identity,\n command.execution.executionId,\n storage\n )\n if (replay) return replay\n\n await lockActionRunForMaterialization(\n storage,\n context.projectId,\n command.input,\n command.execution\n )\n\n const session = await beginEditMaterialization(context, storage, command)\n const workingState = await loadEditWorkingState(\n context,\n storage.ontology.materializations,\n session,\n command.input.operations\n )\n const outcomes = applyEditOperations(context, workingState, command)\n const changes = await stageEditPlan(\n context,\n storage.ontology.materializations,\n session,\n workingState,\n editPlanContext(command)\n )\n await drainStagedWork(context, storage, session)\n await commitVectorWrites(context, storage, command.input, command.identity.commitId, session)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n command.identity\n )\n\n const result: EditCommitResult = {\n kind: \"edit\",\n commitId: command.identity.commitId,\n created: true,\n eventCount,\n committedAt: command.identity.committedAt,\n outcomes,\n changes,\n }\n return finalizeEditMaterialization(storage, session, result)\n}\n\nasync function beginEditMaterialization(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n storage: MaterializerStorage,\n command: PreparedEditCommit\n): Promise<MaterializationSession> {\n const commit = buildEditCommit(context, command)\n return storage.ontology.materializations.begin({\n commit,\n expected: {\n sources: [],\n ...editExpectations(command.input),\n points: [],\n },\n })\n}\n\nfunction buildEditCommit(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n command: PreparedEditCommit\n): OntologyCommitWrite {\n return {\n projectId: context.projectId,\n id: command.identity.commitId,\n idempotencyKey: command.identity.idempotencyKey,\n requestHash: command.identity.requestHash,\n executionId: command.execution.executionId,\n origin: command.origin,\n ...command.execution.attribution,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n intent: {\n kind: \"edit\",\n mode: command.input.mode,\n operationCount: command.input.operations.length,\n ...(command.input.mode === \"atomic\" && command.input.vectorWrites?.length\n ? { vectorWriteCount: command.input.vectorWrites.length }\n : {}),\n },\n committedAt: command.identity.committedAt,\n }\n}\n\nfunction editExpectations(input: NormalizedEditCommit) {\n if (input.mode === \"atomic\") {\n return {\n objects: input.expectedObjects,\n links: input.expectedLinks,\n linkScopes: input.expectedLinkScopes,\n }\n }\n return { objects: [], links: [], linkScopes: [] }\n}\n\nfunction applyEditOperations(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit\n): OntologyOperationOutcome[] {\n const outcomes: OntologyOperationOutcome[] = []\n const units = compileEditExecutionUnits(command.input)\n for (const unit of units) {\n outcomes.push(...applyEditExecutionUnit(context, state, command, unit))\n }\n return outcomes\n}\n\nfunction applyEditExecutionUnit(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit,\n unit: EditExecutionUnit\n): OntologyOperationOutcome[] {\n if (unit.kind === \"atomic-group\") {\n return applyEditOperationGroup(context, state, command, unit.operations)\n }\n return [applyOneEditOperation(context, state, unit.operation, command)]\n}\n\nfunction applyOneEditOperation(\n context: MaterializerContext,\n state: EditWorkingState,\n operation: OntologyEditOperation,\n command: PreparedEditCommit\n): OntologyOperationOutcome {\n try {\n return applyEditOperation(context, state, operation, command.identity, command.users)\n } catch (error) {\n if (!isRecoverableEditValidation(command.input, error)) throw error\n return { id: operation.id, ok: false, error: { code: \"validation\", message: error.message } }\n }\n}\n\n/**\n * Applies one grouped item, rolling the whole group back if any operation in it fails.\n *\n * Without this, continue mode would leave an item half-applied: a cardinality-one reassignment\n * whose `link.delete` succeeded and whose `link.upsert` failed would report an item error while the\n * original edge stayed deleted.\n */\nfunction applyEditOperationGroup(\n context: MaterializerContext,\n state: EditWorkingState,\n command: PreparedEditCommit,\n group: readonly OntologyEditOperation[]\n): OntologyOperationOutcome[] {\n const journal: EditUndoJournal = []\n const applied: OntologyOperationOutcome[] = []\n\n for (const operation of group) {\n let outcome: OntologyOperationOutcome\n try {\n outcome = applyEditOperation(\n context,\n state,\n operation,\n command.identity,\n command.users,\n journal\n )\n } catch (error) {\n if (!isRecoverableEditValidation(command.input, error)) throw error\n undoEditJournal(journal)\n return failedEditGroup(group, error.message)\n }\n if (!outcome.ok) {\n undoEditJournal(journal)\n return failedEditGroup(group, outcome.error.message)\n }\n applied.push(outcome)\n }\n return applied\n}\n\n/** Reports every id in a rolled-back group as failed, so no position looks applied. */\nfunction failedEditGroup(\n group: readonly OntologyEditOperation[],\n message: string\n): OntologyOperationOutcome[] {\n return group.map((operation) => ({\n id: operation.id,\n ok: false as const,\n error: { code: \"validation\" as const, message },\n }))\n}\n\nfunction isRecoverableEditValidation(\n input: NormalizedEditCommit,\n error: unknown\n): error is MaterializationValidationError {\n if (input.mode === \"atomic\") return false\n return error instanceof MaterializationValidationError\n}\n\nfunction editPlanContext(command: PreparedEditCommit) {\n return {\n identity: command.identity,\n origin: command.origin,\n correlationId: command.execution.correlationId,\n attribution: command.execution.attribution,\n }\n}\n\nasync function finalizeEditMaterialization(\n storage: MaterializerStorage,\n session: MaterializationSession,\n result: EditCommitResult\n): Promise<EditCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: { sourceActivations: [], result },\n })\n return applied.commit.result as EditCommitResult\n}\n",
|
|
35
36
|
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type { ProjectionMaterializationIdentity } from \"../../materialization/model\"\nimport type { ProjectionDefinition, ResolvedProjection } from \"../../projections/types\"\nimport type { ProjectionRunRecord, ProjectionRunStorage, Storage } from \"../../storage\"\n\nexport interface LockProjectionExecutionInput {\n readonly projectId: string\n readonly projectionRunId: string\n readonly executionToken: string\n readonly identity: ProjectionMaterializationIdentity\n readonly resolved: ResolvedProjection<ProjectionDefinition>\n readonly capabilityErrorMessage?: string\n}\n\nexport interface LockedProjectionExecution {\n readonly projectionRuns: ProjectionRunStorage\n readonly run: ProjectionRunRecord\n}\n\n/** Locks and validates the current execution inside the materialization transaction. */\nexport async function lockProjectionRunForMaterialization(\n storage: Pick<Storage, \"projectionRuns\">,\n input: LockProjectionExecutionInput\n): Promise<LockedProjectionExecution> {\n const projectionRuns = storage.projectionRuns\n if (!projectionRuns) {\n throw new MaterializationValidationError(\n input.capabilityErrorMessage ??\n \"Storage transaction does not provide projection run capabilities.\"\n )\n }\n\n const run = await projectionRuns.lockForMaterialization({\n id: input.projectionRunId,\n projectId: input.projectId,\n executionToken: input.executionToken,\n identity: input.identity,\n })\n assertProjectionRunTargets(run, input.resolved)\n return { projectionRuns, run }\n}\n\nexport function assertProjectionRunTargets(\n run: ProjectionRunRecord,\n resolved: ResolvedProjection<ProjectionDefinition>\n): void {\n if (projectionRunTargetsMatch(run, resolved.definition)) return\n\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection run '${run.id}' target object types do not match projection '${resolved.projectionId}'.`\n )\n}\n\nfunction projectionRunTargetsMatch(\n run: ProjectionRunRecord,\n definition: ProjectionDefinition\n): boolean {\n switch (definition._tag) {\n case \"ObjectProjectionDefinition\":\n case \"TelemetryProjectionDefinition\":\n return \"objectTypeId\" in run.target && run.target.objectTypeId === definition.objectTypeId\n case \"LinkProjectionDefinition\":\n return (\n \"sourceObjectTypeId\" in run.target &&\n run.target.sourceObjectTypeId === definition.sourceObjectTypeId &&\n run.target.targetObjectTypeId === definition.targetObjectTypeId\n )\n }\n}\n",
|
|
36
37
|
"import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionMaterializationIdentity,\n} from \"../../materialization/model\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ResolvedProjection,\n TelemetryProjectionDefinition,\n} from \"../../projections/types\"\n\ntype SourceProjectionDefinition = ObjectProjectionDefinition | LinkProjectionDefinition\ntype SourceMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"replacement\" }\n>\ntype TelemetryMaterializationIdentity = Extract<\n ProjectionMaterializationIdentity,\n { readonly protocol: \"telemetry\" }\n>\n\ninterface ProjectionRunIdentityInput<\n TDefinition extends SourceProjectionDefinition | TelemetryProjectionDefinition,\n> {\n readonly resolved: ResolvedProjection<TDefinition>\n readonly datasetVersion: PinnedDatasetVersion\n readonly ontologyRevision: string\n}\n\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition>\n): SourceMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<TelemetryProjectionDefinition>\n): TelemetryMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition | TelemetryProjectionDefinition>\n): ProjectionMaterializationIdentity\nexport function createProjectionRunMaterializationIdentity(\n input: ProjectionRunIdentityInput<SourceProjectionDefinition | TelemetryProjectionDefinition>\n): ProjectionMaterializationIdentity {\n const base = {\n projectionId: input.resolved.projectionId,\n datasetVersion: input.datasetVersion,\n ontologyRevision: input.ontologyRevision,\n projectionRevision: input.resolved.projectionRevision,\n ownershipHash: input.resolved.ownershipHash,\n }\n\n switch (input.resolved.definition._tag) {\n case \"ObjectProjectionDefinition\":\n return { ...base, projectionKind: \"object\", protocol: \"replacement\" }\n case \"LinkProjectionDefinition\":\n return { ...base, projectionKind: \"link\", protocol: \"replacement\" }\n case \"TelemetryProjectionDefinition\":\n return { ...base, projectionKind: \"telemetry\", protocol: \"telemetry\" }\n default:\n throw new MaterializationValidationError(\"Expected a supported projection definition.\")\n }\n}\n",
|
|
37
38
|
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionMaterializationIdentity,\n ProjectionRunFinishInput,\n ProjectionRunTerminalDecision,\n} from \"../../materialization/model\"\nimport type { ProjectionDefinition, ResolvedProjection } from \"../../projections/types\"\nimport type { OntologyCommitRecord } from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\n\ninterface PreparedProjectionRunFinish {\n readonly projectId: string\n readonly input: ProjectionRunFinishInput\n readonly identity: ProjectionMaterializationIdentity\n readonly resolved: ResolvedProjection<ProjectionDefinition>\n readonly finishedAt: Date\n readonly execution: MaterializerExecution\n}\n\nexport async function finishProjectionRun(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionRunFinishInput>\n): Promise<void> {\n const command = prepareProjectionRunFinish(context, raw)\n await withSerializationRetry(context, () =>\n context.storage.transaction((storage) => finishProjectionRunTransaction(storage, command), {\n isolation: \"serializable\",\n })\n )\n}\n\nfunction prepareProjectionRunFinish(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\" | \"clock\">,\n raw: MaterializerCommand<ProjectionRunFinishInput>\n): PreparedProjectionRunFinish {\n assertValidTerminalDecision(raw.input)\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const projectionExecution = normalizeProjectionExecution(raw.input.execution)\n const resolved =\n raw.input.protocol === \"replacement\"\n ? context.projectionRegistry.resolveSource(source.projectionId)\n : context.projectionRegistry.resolveTelemetry(source.projectionId)\n if (resolved.datasetId !== datasetVersion.datasetId) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n }\n const identity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n return {\n projectId: context.projectId,\n input: { ...raw.input, source, datasetVersion, execution: projectionExecution },\n identity,\n resolved,\n finishedAt: new Date(raw.input.finishedAt ?? context.clock()),\n execution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n}\n\nasync function finishProjectionRunTransaction(\n storage: MaterializerStorage,\n command: PreparedProjectionRunFinish\n): Promise<void> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n assertTrustedPrimitiveMutationExecution(command.execution, {\n kind: \"projection\",\n id: command.input.source.projectionId,\n runId: command.input.execution.projectionRunId,\n })\n const { projectionRuns, run } = await lockProjectionRunForMaterialization(storage, {\n projectId: command.projectId,\n projectionRunId: command.input.execution.projectionRunId,\n executionToken: command.input.execution.executionToken,\n identity: command.identity,\n resolved: command.resolved,\n })\n assertMaterializerRunExecution(command.execution, run.executionId, `Projection run '${run.id}'`)\n\n if (command.input.protocol === \"replacement\") {\n await assertReplacementTerminalDecision(storage, command)\n }\n\n await projectionRuns.finish({\n id: command.input.execution.projectionRunId,\n projectId: command.projectId,\n executionToken: command.input.execution.executionToken,\n identity: command.identity,\n ...terminalDecision(command.input),\n finishedAt: command.finishedAt,\n })\n}\n\nfunction assertValidTerminalDecision(input: ProjectionRunFinishInput): void {\n if (input.protocol !== \"replacement\" && input.protocol !== \"telemetry\") {\n throw new MaterializationValidationError(\"Projection finish protocol is invalid.\")\n }\n if (input.status !== \"succeeded\" && input.status !== \"failed\" && input.status !== \"cancelled\") {\n throw new MaterializationValidationError(\"Projection finish status must be terminal.\")\n }\n const inputExhausted = \"inputExhausted\" in input ? input.inputExhausted : undefined\n if (input.status === \"succeeded\" && input.protocol === \"telemetry\") {\n if (inputExhausted === true) return\n throw new MaterializationValidationError(\n \"Telemetry projection success requires an explicit exhausted-input acknowledgement.\"\n )\n }\n if (inputExhausted !== undefined) {\n throw new MaterializationValidationError(\n \"Only telemetry projection success can acknowledge exhausted input.\"\n )\n }\n}\n\nfunction terminalDecision(input: ProjectionRunFinishInput): ProjectionRunTerminalDecision {\n if (input.status !== \"succeeded\") {\n return {\n protocol: input.protocol,\n status: input.status,\n ...(input.error === undefined ? {} : { error: input.error }),\n }\n }\n if (input.protocol === \"telemetry\") {\n return { protocol: \"telemetry\", status: \"succeeded\", inputExhausted: true }\n }\n return { protocol: \"replacement\", status: \"succeeded\" }\n}\n\nasync function assertReplacementTerminalDecision(\n storage: MaterializerStorage,\n command: PreparedProjectionRunFinish\n): Promise<void> {\n const commit = await storage.ontology.commits.getByOrigin({\n projectId: command.projectId,\n origin: {\n kind: \"projection\",\n projectionRunId: command.input.execution.projectionRunId,\n },\n })\n if (command.input.status === \"succeeded\") {\n if (!commit) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${command.input.execution.projectionRunId}' cannot succeed before its ontology commit exists.`\n )\n }\n assertReplacementCommitCorrelation(commit, command)\n return\n }\n if (commit) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${command.input.execution.projectionRunId}' cannot finish as '${command.input.status}' after its ontology commit exists.`\n )\n }\n}\n\nfunction assertReplacementCommitCorrelation(\n commit: OntologyCommitRecord,\n command: PreparedProjectionRunFinish\n): void {\n const { input, identity } = command\n if (\n commit.origin.kind !== \"projection\" ||\n commit.executionId !== command.execution.executionId ||\n commit.intent.kind !== \"projection\" ||\n commit.result.kind !== \"projection\" ||\n commit.origin.projectionRunId !== input.execution.projectionRunId ||\n commit.origin.projectionId !== input.source.projectionId ||\n commit.intent.source.projectionId !== input.source.projectionId ||\n !datasetVersionsEqual(commit.intent.datasetVersion, input.datasetVersion) ||\n commit.ontologyRevision !== identity.ontologyRevision ||\n commit.projectionRevision !== identity.projectionRevision ||\n commit.ownershipHash !== identity.ownershipHash\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection replacement run '${input.execution.projectionRunId}' commit identity does not match.`\n )\n }\n}\n\nfunction datasetVersionsEqual(left: PinnedDatasetVersion, right: PinnedDatasetVersion): boolean {\n return (\n left.datasetId === right.datasetId &&\n left.versionId === right.versionId &&\n left.createdAt === right.createdAt\n )\n}\n",
|
|
38
39
|
"import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type { ProjectionEntityRef, ProjectionSourceEntry } from \"../../materialization/model\"\nimport { linkOwnershipKey } from \"../../materialization/refs\"\nimport type { OntologyRegistry } from \"../../ontology\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport {\n validateLinkAuthorityProperties,\n validateObjectAuthorityProperties,\n} from \"../effective/validate\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\ntype ProjectionAssertion = ProjectionSourceEntry[\"assertions\"][number]\ntype ObjectAssertion = Extract<ProjectionAssertion, { readonly kind: \"object\" }>\ntype LinkAssertion = Extract<ProjectionAssertion, { readonly kind: \"link\" }>\n\ninterface ProjectionValidationPolicy {\n readonly expectedRootKind: ProjectionSourceEntry[\"root\"][\"kind\"]\n readonly expectedRootDescription: string\n readonly ownedProperties: ReadonlyMap<string, ReadonlySet<string>>\n readonly ownedLinks: ReadonlySet<string>\n}\n\nexport type ProjectionEntryValidator = (entry: ProjectionSourceEntry) => ProjectionSourceEntry\n\nexport function createProjectionEntryValidator(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection\n): ProjectionEntryValidator {\n const policy = createValidationPolicy(resolved)\n return (entry) => validateProjectionEntry(ontology, resolved, policy, entry)\n}\n\nexport function validateProjectionRootRef(\n resolved: ResolvedSourceProjection,\n root: ProjectionEntityRef\n): void {\n const definition = resolved.definition\n const owned =\n definition._tag === \"ObjectProjectionDefinition\"\n ? root.kind === \"object\" && root.ref.objectTypeId === definition.objectTypeId\n : root.kind === \"link\" &&\n root.ref.source.objectTypeId === definition.sourceObjectTypeId &&\n root.ref.target.objectTypeId === definition.targetObjectTypeId &&\n root.ref.linkId === definition.linkId\n if (!owned)\n throw new MaterializationValidationError(\n \"Projection root is outside its owned type or link scope.\"\n )\n}\n\nfunction createValidationPolicy(resolved: ResolvedSourceProjection): ProjectionValidationPolicy {\n const ownedProperties = new Map(\n resolved.ownership.objects.map((object) => [object.objectTypeId, new Set(object.propertyIds)])\n )\n const ownedLinks = new Set(\n resolved.ownership.links.map((link) => linkOwnershipKey(link.sourceObjectTypeId, link.linkId))\n )\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return {\n expectedRootKind: \"object\",\n expectedRootDescription: \"an object\",\n ownedProperties,\n ownedLinks,\n }\n }\n return {\n expectedRootKind: \"link\",\n expectedRootDescription: \"a link\",\n ownedProperties,\n ownedLinks,\n }\n}\n\nfunction validateProjectionEntry(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): ProjectionSourceEntry {\n validateProjectionRoot(resolved, policy, entry)\n return {\n root: entry.root,\n assertions: entry.assertions.map((assertion) =>\n validateProjectionAssertion(ontology, resolved, policy, assertion)\n ),\n }\n}\n\nfunction validateProjectionRoot(\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n entry: ProjectionSourceEntry\n): void {\n if (entry.root.kind === policy.expectedRootKind) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires ${policy.expectedRootDescription} root.`\n )\n}\n\nfunction validateProjectionAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ProjectionAssertion\n): ProjectionAssertion {\n if (assertion.kind === \"object\") {\n return validateObjectAssertion(ontology, resolved, policy, assertion)\n }\n return validateLinkAssertion(ontology, resolved, policy, assertion)\n}\n\nfunction validateObjectAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: ObjectAssertion\n): ObjectAssertion {\n if (\n resolved.definition._tag !== \"ObjectProjectionDefinition\" ||\n assertion.ref.objectTypeId !== resolved.definition.objectTypeId\n ) {\n throw new MaterializationValidationError(\n \"Projection asserted an object outside its owned type.\"\n )\n }\n\n const properties = validateObjectAuthorityProperties(\n ontology,\n assertion.ref,\n assertion.properties\n )\n const owned = policy.ownedProperties.get(assertion.ref.objectTypeId) ?? new Set<string>()\n for (const propertyId of Object.keys(properties)) {\n if (owned.has(propertyId)) continue\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted unowned property '${assertion.ref.objectTypeId}.${propertyId}'.`\n )\n }\n const conflictResolution = resolved.definition.conflictResolution ?? { strategy: \"editsWin\" }\n if (conflictResolution.strategy !== \"mostRecent\") {\n return { kind: \"object\", ref: assertion.ref, properties }\n }\n if (assertion.sourceUpdatedAt === undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires source update timestamp ` +\n `'${conflictResolution.sourceTimestamp}' on every object assertion.`\n )\n }\n const primaryPropertyId = ontology.getPrimaryPropertyId(assertion.ref.objectTypeId)\n const absentSourcePropertyIds = [...owned]\n .filter(\n (propertyId) => propertyId !== primaryPropertyId && !Object.hasOwn(properties, propertyId)\n )\n .sort()\n return {\n kind: \"object\",\n ref: assertion.ref,\n properties,\n sourceUpdatedAt: assertion.sourceUpdatedAt,\n ...(absentSourcePropertyIds.length === 0 ? {} : { absentSourcePropertyIds }),\n }\n}\n\nfunction validateLinkAssertion(\n ontology: OntologyRegistry,\n resolved: ResolvedSourceProjection,\n policy: ProjectionValidationPolicy,\n assertion: LinkAssertion\n): LinkAssertion {\n const ownershipKey = linkOwnershipKey(assertion.ref.source.objectTypeId, assertion.ref.linkId)\n if (!policy.ownedLinks.has(ownershipKey)) {\n throw new MaterializationValidationError(\"Projection asserted a link outside its owned scope.\")\n }\n\n const expectedTargetTypeId = projectionLinkTargetType(resolved, assertion)\n if (expectedTargetTypeId !== assertion.ref.target.objectTypeId) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' asserted link target type '${assertion.ref.target.objectTypeId}' outside its mapping.`\n )\n }\n\n validateLinkAuthorityProperties(ontology, assertion.ref, assertion.properties)\n if (assertion.properties !== undefined) {\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' does not map link assertion properties.`\n )\n }\n return { ...assertion }\n}\n\nfunction projectionLinkTargetType(\n resolved: ResolvedSourceProjection,\n assertion: LinkAssertion\n): string | undefined {\n if (resolved.definition._tag === \"LinkProjectionDefinition\") {\n return resolved.definition.targetObjectTypeId\n }\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") {\n return resolved.definition.links[assertion.ref.linkId]?.targetObjectTypeId\n }\n return undefined\n}\n",
|
|
39
|
-
"import type {\n EffectiveChangeCounts,\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkRefSortKey,\n linkScopeSortKey,\n objectRefKey,\n objectRefSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n SourceReplacementLinkState,\n SourceReplacementObjectState,\n SourceReplacementStatePage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport {\n buildLinkMaterializationEventDraft,\n buildObjectMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveLink, diffEffectiveObject } from \"../effective/diff\"\nimport { oneStateRequest } from \"../effective/load-state\"\nimport {\n resolveEffectiveLink,\n resolveEffectiveLinkSlotMember,\n resolveEffectiveObject,\n storedObjectEditedAt,\n usableLinkSlotOverride,\n} from \"../effective/resolve\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport { stageWorkBounded, validateStagedCardinality } from \"../execution/work-executor\"\nimport {\n appendEffectiveLinkWork,\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface ProjectionReplacementPlanInput {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly projectionKind: \"object\" | \"link\"\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly correlationId: string\n readonly signal?: AbortSignal\n}\n\nexport async function planProjectionReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput\n): Promise<EffectiveChangeCounts> {\n const counts = emptyCounts()\n if (input.projectionKind === \"object\") {\n await planObjectReplacement(context, storage, session, input, counts)\n }\n await planLinkReplacement(context, storage, session, input, counts)\n await validateStagedCardinality(context, storage, session, input.signal)\n return counts\n}\n\nasync function planObjectReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"object\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const work = planObjectPage(context, input, page, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nfunction planObjectPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.objects) {\n work.push(...planReplacementObject(context, input, state, counts))\n }\n return work\n}\n\nfunction planReplacementObject(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementObjectState,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementObject(context, state)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n\n const change = diffEffectiveObject({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = objectRefSortKey(state.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(state.ref), sortKey),\n {\n kind: \"object-existence\",\n recordKey: `existence:${sortKey}`,\n ref: state.ref,\n exists: resolved !== null,\n },\n ]\n if (Boolean(state.effective) !== Boolean(resolved)) {\n work.push({ kind: \"incident-object\", recordKey: `incident:${sortKey}`, ref: state.ref })\n }\n\n if (!change) {\n counts.objectsUnchanged += 1\n return work\n }\n\n incrementObjectCount(counts, change.kind)\n appendObjectChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction appendObjectChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveObjectChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildObjectMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n change,\n })\n )\n )\n}\n\nasync function planLinkReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"link\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const endpointExistence = await loadEndpointExistence(context, storage, session, page)\n const work = planLinkPage(context, input, page, endpointExistence, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nasync function loadEndpointExistence(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n page: SourceReplacementStatePage\n): Promise<ReadonlyMap<string, boolean>> {\n const endpointRefs = collectEndpointRefs(page.links)\n const endpointExistence = new Map<string, boolean>()\n for (const value of await storage.readObjectExistence({\n session,\n refs: [...endpointRefs.values()],\n })) {\n endpointExistence.set(objectRefKey(value.ref), value.exists)\n }\n\n const missingEndpoints = [...endpointRefs.values()].filter(\n (ref) => !endpointExistence.has(objectRefKey(ref))\n )\n if (missingEndpoints.length === 0) return endpointExistence\n\n for await (const endpointPage of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: missingEndpoints,\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const endpoint of endpointPage.objects) {\n endpointExistence.set(objectRefKey(endpoint.ref), endpoint.effective !== null)\n }\n }\n return endpointExistence\n}\n\nfunction collectEndpointRefs(\n links: readonly SourceReplacementLinkState[]\n): ReadonlyMap<string, OntologyObjectRef> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const state of links) {\n refs.set(objectRefKey(state.ref.source), state.ref.source)\n refs.set(objectRefKey(state.ref.target), state.ref.target)\n }\n return refs\n}\n\nfunction planLinkPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.links) {\n work.push(...planReplacementLink(context, input, state, endpointExistence, counts))\n }\n return work\n}\n\nfunction planReplacementLink(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementLink(context, state, endpointExistence)\n const work = cardinalityWork(context, state, resolved !== null)\n if (!state.diffRequired) return work\n\n const change = diffEffectiveLink({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = linkRefSortKey(state.ref)\n work.push(classificationWork(\"link\", linkRefKey(state.ref), sortKey))\n if (!change) {\n counts.linksUnchanged += 1\n return work\n }\n\n incrementLinkCount(counts, change.kind)\n appendLinkChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction resolveReplacementLink(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>\n) {\n if (!state.diffRequired) return state.effective\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality === \"one\") {\n return resolveEffectiveLinkSlotMember({\n ref: state.ref,\n source: state.candidateSource,\n override: usableLinkSlotOverride(state.slotOverride),\n endpointExists: (ref) => endpointExistence.get(objectRefKey(ref)) ?? false,\n })\n }\n return resolveEffectiveLink({\n ref: state.ref,\n source: state.candidateSource,\n override: state.override?.value ?? null,\n sourceEndpointExists: endpointExistence.get(objectRefKey(state.ref.source)) ?? false,\n targetEndpointExists: endpointExistence.get(objectRefKey(state.ref.target)) ?? false,\n })\n}\n\nfunction cardinalityWork(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n occupied: boolean\n): MaterializationWorkRecord[] {\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality !== \"one\") return []\n\n const scopeSortKey = linkScopeSortKey(state.ref.source, state.ref.linkId)\n const linkSortKey = linkRefSortKey(state.ref)\n return [\n {\n kind: \"cardinality\",\n recordKey: `cardinality:candidate:${scopeSortKey}:${linkSortKey}`,\n view: \"candidate\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied: state.candidateSource !== null,\n },\n {\n kind: \"cardinality\",\n recordKey: `cardinality:effective:${scopeSortKey}:${linkSortKey}`,\n view: \"effective\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied,\n },\n ]\n}\n\nfunction appendLinkChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveLinkChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveLinkWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildLinkMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n change,\n })\n )\n )\n}\n\nfunction resolveReplacementObject(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementObjectState\n) {\n return resolveEffectiveObject({\n ref: state.ref,\n primaryPropertyId: context.ontology.getPrimaryPropertyId(state.ref.objectTypeId),\n source: state.candidateSource,\n override: state.override?.value ?? null,\n editedAt: storedObjectEditedAt(state.override),\n latestTelemetry: state.latestTelemetry,\n })\n}\n\nfunction emptyCounts(): MutableCounts {\n return {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n objectsUnchanged: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n linksUnchanged: 0,\n }\n}\n\ntype MutableCounts = { -readonly [K in keyof EffectiveChangeCounts]: EffectiveChangeCounts[K] }\n\nfunction incrementObjectCount(counts: MutableCounts, kind: EffectiveObjectChange[\"kind\"]): void {\n if (kind === \"created\") counts.objectsCreated += 1\n else if (kind === \"updated\") counts.objectsUpdated += 1\n else counts.objectsDeleted += 1\n}\n\nfunction incrementLinkCount(counts: MutableCounts, kind: EffectiveLinkChange[\"kind\"]): void {\n if (kind === \"created\") counts.linksCreated += 1\n else if (kind === \"updated\") counts.linksUpdated += 1\n else counts.linksDeleted += 1\n}\n",
|
|
40
|
+
"import type {\n EffectiveChangeCounts,\n EffectiveLinkChange,\n EffectiveObjectChange,\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkRefSortKey,\n linkScopeSortKey,\n objectRefKey,\n objectRefSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n SourceReplacementLinkState,\n SourceReplacementObjectState,\n SourceReplacementStatePage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport {\n buildLinkMaterializationEventDraft,\n buildObjectMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveLink, diffEffectiveObject } from \"../effective/diff\"\nimport { oneStateRequest } from \"../effective/load-state\"\nimport {\n resolveEffectiveLink,\n resolveEffectiveLinkSlotMember,\n resolveEffectiveObject,\n storedObjectEditedAt,\n usableLinkSlotOverride,\n} from \"../effective/resolve\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport type { MaterializerAttribution } from \"../execution/scope\"\nimport { stageWorkBounded, validateStagedCardinality } from \"../execution/work-executor\"\nimport {\n appendEffectiveLinkWork,\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface ProjectionReplacementPlanInput {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly projectionKind: \"object\" | \"link\"\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly correlationId: string\n readonly attribution: MaterializerAttribution\n readonly signal?: AbortSignal\n}\n\nexport async function planProjectionReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput\n): Promise<EffectiveChangeCounts> {\n const counts = emptyCounts()\n if (input.projectionKind === \"object\") {\n await planObjectReplacement(context, storage, session, input, counts)\n }\n await planLinkReplacement(context, storage, session, input, counts)\n await validateStagedCardinality(context, storage, session, input.signal)\n return counts\n}\n\nasync function planObjectReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"object\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const work = planObjectPage(context, input, page, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nfunction planObjectPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.objects) {\n work.push(...planReplacementObject(context, input, state, counts))\n }\n return work\n}\n\nfunction planReplacementObject(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementObjectState,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementObject(context, state)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n\n const change = diffEffectiveObject({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = objectRefSortKey(state.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(state.ref), sortKey),\n {\n kind: \"object-existence\",\n recordKey: `existence:${sortKey}`,\n ref: state.ref,\n exists: resolved !== null,\n },\n ]\n if (Boolean(state.effective) !== Boolean(resolved)) {\n work.push({ kind: \"incident-object\", recordKey: `incident:${sortKey}`, ref: state.ref })\n }\n\n if (!change) {\n counts.objectsUnchanged += 1\n return work\n }\n\n incrementObjectCount(counts, change.kind)\n appendObjectChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction appendObjectChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveObjectChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildObjectMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n attribution: input.attribution,\n change,\n })\n )\n )\n}\n\nasync function planLinkReplacement(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: ProjectionReplacementPlanInput,\n counts: MutableCounts\n): Promise<void> {\n for await (const page of storage.streamSourceReplacementState({\n session,\n source: input.source,\n candidateMaterializationId: input.materializationId,\n entityKind: \"link\",\n pageRows: context.batching.statePageRows,\n })) {\n throwIfAborted(input.signal)\n const endpointExistence = await loadEndpointExistence(context, storage, session, page)\n const work = planLinkPage(context, input, page, endpointExistence, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n}\n\nasync function loadEndpointExistence(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n page: SourceReplacementStatePage\n): Promise<ReadonlyMap<string, boolean>> {\n const endpointRefs = collectEndpointRefs(page.links)\n const endpointExistence = new Map<string, boolean>()\n for (const value of await storage.readObjectExistence({\n session,\n refs: [...endpointRefs.values()],\n })) {\n endpointExistence.set(objectRefKey(value.ref), value.exists)\n }\n\n const missingEndpoints = [...endpointRefs.values()].filter(\n (ref) => !endpointExistence.has(objectRefKey(ref))\n )\n if (missingEndpoints.length === 0) return endpointExistence\n\n for await (const endpointPage of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: missingEndpoints,\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const endpoint of endpointPage.objects) {\n endpointExistence.set(objectRefKey(endpoint.ref), endpoint.effective !== null)\n }\n }\n return endpointExistence\n}\n\nfunction collectEndpointRefs(\n links: readonly SourceReplacementLinkState[]\n): ReadonlyMap<string, OntologyObjectRef> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const state of links) {\n refs.set(objectRefKey(state.ref.source), state.ref.source)\n refs.set(objectRefKey(state.ref.target), state.ref.target)\n }\n return refs\n}\n\nfunction planLinkPage(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n page: SourceReplacementStatePage,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const state of page.links) {\n work.push(...planReplacementLink(context, input, state, endpointExistence, counts))\n }\n return work\n}\n\nfunction planReplacementLink(\n context: MaterializerContext,\n input: ProjectionReplacementPlanInput,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>,\n counts: MutableCounts\n): MaterializationWorkRecord[] {\n const resolved = resolveReplacementLink(context, state, endpointExistence)\n const work = cardinalityWork(context, state, resolved !== null)\n if (!state.diffRequired) return work\n\n const change = diffEffectiveLink({\n before: state.effective,\n resolved,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n })\n const sortKey = linkRefSortKey(state.ref)\n work.push(classificationWork(\"link\", linkRefKey(state.ref), sortKey))\n if (!change) {\n counts.linksUnchanged += 1\n return work\n }\n\n incrementLinkCount(counts, change.kind)\n appendLinkChangeWork(work, sortKey, context, input, change)\n return work\n}\n\nfunction resolveReplacementLink(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n endpointExistence: ReadonlyMap<string, boolean>\n) {\n if (!state.diffRequired) return state.effective\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality === \"one\") {\n return resolveEffectiveLinkSlotMember({\n ref: state.ref,\n source: state.candidateSource,\n override: usableLinkSlotOverride(state.slotOverride),\n endpointExists: (ref) => endpointExistence.get(objectRefKey(ref)) ?? false,\n })\n }\n return resolveEffectiveLink({\n ref: state.ref,\n source: state.candidateSource,\n override: state.override?.value ?? null,\n sourceEndpointExists: endpointExistence.get(objectRefKey(state.ref.source)) ?? false,\n targetEndpointExists: endpointExistence.get(objectRefKey(state.ref.target)) ?? false,\n })\n}\n\nfunction cardinalityWork(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementLinkState,\n occupied: boolean\n): MaterializationWorkRecord[] {\n const definition = context.ontology\n .resolveObjectType(state.ref.source.objectTypeId)\n .links.find((candidate) => candidate.id === state.ref.linkId)\n if (definition?.cardinality !== \"one\") return []\n\n const scopeSortKey = linkScopeSortKey(state.ref.source, state.ref.linkId)\n const linkSortKey = linkRefSortKey(state.ref)\n return [\n {\n kind: \"cardinality\",\n recordKey: `cardinality:candidate:${scopeSortKey}:${linkSortKey}`,\n view: \"candidate\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied: state.candidateSource !== null,\n },\n {\n kind: \"cardinality\",\n recordKey: `cardinality:effective:${scopeSortKey}:${linkSortKey}`,\n view: \"effective\",\n scopeSortKey,\n linkSortKey,\n ref: state.ref,\n occupied,\n },\n ]\n}\n\nfunction appendLinkChangeWork(\n work: MaterializationWorkRecord[],\n sortKey: string,\n context: Pick<MaterializerContext, \"projectId\">,\n input: ProjectionReplacementPlanInput,\n change: EffectiveLinkChange\n): void {\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveLinkWork(items, change)\n for (const item of items) work.push(planWork(item, sortKey))\n work.push(\n eventWork(\n buildLinkMaterializationEventDraft({\n projectId: context.projectId,\n commitId: input.identity.commitId,\n committedAt: input.identity.committedAt,\n origin: input.origin,\n correlationId: input.correlationId,\n attribution: input.attribution,\n change,\n })\n )\n )\n}\n\nfunction resolveReplacementObject(\n context: Pick<MaterializerContext, \"ontology\">,\n state: SourceReplacementObjectState\n) {\n return resolveEffectiveObject({\n ref: state.ref,\n primaryPropertyId: context.ontology.getPrimaryPropertyId(state.ref.objectTypeId),\n source: state.candidateSource,\n override: state.override?.value ?? null,\n editedAt: storedObjectEditedAt(state.override),\n latestTelemetry: state.latestTelemetry,\n })\n}\n\nfunction emptyCounts(): MutableCounts {\n return {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n objectsUnchanged: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n linksUnchanged: 0,\n }\n}\n\ntype MutableCounts = { -readonly [K in keyof EffectiveChangeCounts]: EffectiveChangeCounts[K] }\n\nfunction incrementObjectCount(counts: MutableCounts, kind: EffectiveObjectChange[\"kind\"]): void {\n if (kind === \"created\") counts.objectsCreated += 1\n else if (kind === \"updated\") counts.objectsUpdated += 1\n else counts.objectsDeleted += 1\n}\n\nfunction incrementLinkCount(counts: MutableCounts, kind: EffectiveLinkChange[\"kind\"]): void {\n if (kind === \"created\") counts.linksCreated += 1\n else if (kind === \"updated\") counts.linksUpdated += 1\n else counts.linksDeleted += 1\n}\n",
|
|
40
41
|
"import { MaterializationValidationError } from \"../../materialization/errors\"\nimport type {\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionSourceBase,\n ProjectionSourceDeletion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n} from \"../../materialization/model\"\nimport { utf8JsonByteLength } from \"../../materialization/refs\"\nimport type { StageSourceAssertion, StageSourceRoot } from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport { chunkBySize } from \"../shared/chunking\"\nimport { normalizeProjectionEntity, normalizeProjectionSourceEntry } from \"../shared/normalize\"\nimport { type ProjectionEntryValidator, validateProjectionRootRef } from \"./entry-validator\"\n\nexport interface StagedProjectionMaterialization {\n readonly rootCount: number\n readonly assertionCount: number\n}\n\n/**\n * Persist and seal one explicit source-materialization candidate.\n *\n * A candidate is deliberately left staging/ready when execution is interrupted. The next claim\n * reclaims it with a fresh execution token; age is never used to infer abandonment.\n */\nexport async function stageProjectionMaterialization(\n context: Pick<\n MaterializerContext,\n \"projectId\" | \"storage\" | \"batching\" | \"projectionRegistry\" | \"clock\"\n >,\n input: {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly execution: ProjectionExecution\n readonly projectionKind: \"object\" | \"link\"\n readonly datasetVersion: PinnedDatasetVersion\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly createdAt: string\n readonly entries: AsyncIterable<ProjectionSourceEntry | ProjectionSourceDeletion>\n readonly base?: ProjectionSourceBase\n readonly validateEntry: ProjectionEntryValidator\n readonly signal?: AbortSignal\n }\n): Promise<StagedProjectionMaterialization> {\n await context.storage.ontology.sources.beginMaterialization({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n projectionKind: input.projectionKind,\n protocol: \"replacement\",\n datasetVersion: input.datasetVersion,\n projectionRevision: input.projectionRevision,\n ownershipHash: input.ownershipHash,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n createdAt: input.createdAt,\n ...(input.base ? { base: input.base } : {}),\n })\n\n let rootCount = 0\n let assertionCount = 0\n async function* assertions(): AsyncIterable<StageSourceAssertion | StageSourceRoot> {\n for await (const rawEntry of input.entries) {\n throwIfAborted(input.signal)\n if (\"deleted\" in rawEntry) {\n if (!input.base || rawEntry.deleted !== true) {\n throw new MaterializationValidationError(\n \"Explicit root deletions require a pinned source base.\"\n )\n }\n const root = normalizeProjectionEntity(rawEntry.root)\n validateProjectionRootRef(\n context.projectionRegistry.resolveSource(input.source.projectionId),\n root\n )\n yield { root, stagingOrdinal: rootCount++ }\n continue\n }\n const entry = input.validateEntry(normalizeProjectionSourceEntry(rawEntry))\n const stagingOrdinal = rootCount\n for (const assertion of entry.assertions) {\n assertionCount += 1\n yield { root: entry.root, assertion, stagingOrdinal }\n }\n rootCount += 1\n }\n throwIfAborted(input.signal)\n }\n\n for await (const rows of chunkBySize(assertions(), {\n maxRows: context.batching.sourceStageRows,\n maxBytes: context.batching.sourceStageBytes,\n byteLength: utf8JsonByteLength,\n })) {\n await context.storage.ontology.sources.stageRows({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rows: rows.filter((row): row is StageSourceAssertion => \"assertion\" in row),\n deletions: rows.filter((row) => !(\"assertion\" in row)),\n })\n }\n\n await context.storage.ontology.sources.markReady({\n projectId: context.projectId,\n source: input.source,\n materializationId: input.materializationId,\n execution: input.execution,\n rootCount,\n assertionCount,\n readyAt: context.clock().toISOString(),\n })\n return { rootCount, assertionCount }\n}\n",
|
|
41
|
-
"import { assertPinnedDatasetWatermark } from \"../../materialization/dataset-watermark\"\nimport {\n MaterializationCancellationError,\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n PinnedDatasetVersion,\n ProjectionCommitResult,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionSourceBase,\n ProjectionSourceDeletion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n} from \"../../materialization/model\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type {\n OntologyCommitRecord,\n OntologyCommitWrite,\n OntologyMaterializationStorage,\n OntologySourceRecord,\n OntologyStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport {\n type CommitIdentity,\n createCommitIdentity,\n createProjectionIdempotencyKey,\n type TimedCommitIdentity,\n timestampCommitIdentity,\n} from \"../shared/identity\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { createProjectionEntryValidator } from \"./entry-validator\"\nimport { planProjectionReplacement } from \"./replacement-plan\"\nimport {\n type StagedProjectionMaterialization,\n stageProjectionMaterialization,\n} from \"./source-materialization\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\n\ninterface PreparedProjectionReplacement {\n readonly source: ProjectionSourceRef\n readonly datasetVersion: PinnedDatasetVersion\n readonly execution: ProjectionExecution\n readonly entries: AsyncIterable<ProjectionSourceEntry | ProjectionSourceDeletion>\n readonly base?: ProjectionSourceBase\n readonly signal?: AbortSignal\n readonly resolved: ResolvedSourceProjection\n readonly projectionKind: \"object\" | \"link\"\n readonly runIdentity: ProjectionMaterializationIdentity\n readonly identity: CommitIdentity\n readonly scopeExecution: MaterializerExecution\n}\n\ninterface ProjectionCandidate {\n readonly materializationId: string\n readonly createdAt: string\n readonly expectedSource: {\n readonly source: ProjectionSourceRef\n readonly activeMaterializationId: string | null\n readonly lastCommitId: string | null\n }\n}\n\ninterface ReadyProjectionReplacement extends ProjectionCandidate {\n readonly staged: StagedProjectionMaterialization\n readonly identity: TimedCommitIdentity\n}\n\nexport async function replaceProjection(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): Promise<ProjectionCommitResult> {\n const command = prepareProjectionReplacement(context, raw)\n const replay = await admitProjectionExecution(context, command)\n if (replay) return replay\n\n const candidate = await prepareProjectionCandidate(context, command)\n try {\n const ready = await stageProjectionCandidate(context, command, candidate)\n return await commitProjectionCandidate(context, command, ready)\n } catch (error) {\n await abandonFailedCandidate(context, command, candidate, error)\n throw error\n }\n}\n\nfunction prepareProjectionReplacement(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): PreparedProjectionReplacement {\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const execution = normalizeProjectionExecution(raw.input.execution)\n const resolved = context.projectionRegistry.resolveSource(source.projectionId)\n validateProjectionDataset(resolved, datasetVersion)\n\n const projectionKind = sourceProjectionKind(resolved)\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n const identity = createCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionIdempotencyKey(runIdentity),\n normalizedCallerIntent: { source, datasetVersion },\n })\n const command = {\n source,\n datasetVersion,\n execution,\n entries: raw.input.entries,\n ...(raw.input.base ? { base: Object.freeze({ ...raw.input.base }) } : {}),\n resolved,\n projectionKind,\n runIdentity,\n identity,\n scopeExecution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n if (raw.input.signal === undefined) return command\n return { ...command, signal: raw.input.signal }\n}\n\nfunction validateProjectionDataset(\n resolved: ResolvedSourceProjection,\n datasetVersion: PinnedDatasetVersion\n): void {\n if (datasetVersion.datasetId === resolved.datasetId) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction sourceProjectionKind(resolved: ResolvedSourceProjection): \"object\" | \"link\" {\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") return \"object\"\n return \"link\"\n}\n\nasync function assertProjectionExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedProjectionReplacement,\n options: { readonly capabilityErrorMessage?: string } = {}\n): Promise<void> {\n assertTrustedPrimitiveMutationExecution(command.scopeExecution, {\n kind: \"projection\",\n id: command.source.projectionId,\n runId: command.execution.projectionRunId,\n })\n const locked = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.execution.projectionRunId,\n executionToken: command.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolved,\n ...options,\n })\n assertMaterializerRunExecution(\n command.scopeExecution,\n locked.run.executionId,\n `Projection run '${locked.run.id}'`\n )\n}\n\nasync function admitProjectionExecution(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCommitResult | null> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n async (storage) => {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command, {\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by source replacement.\",\n })\n const commit = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n return commit ? projectionReplayResult(commit, command) : null\n },\n { isolation: \"serializable\" }\n )\n )\n}\n\nfunction projectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionReplacement\n): ProjectionCommitResult {\n if (\n commit.origin.kind !== \"projection\" ||\n commit.origin.projectionRunId !== command.execution.projectionRunId ||\n commit.result.kind !== \"projection\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection commit '${commit.id}' belongs to a different logical run.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function prepareProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCandidate> {\n await context.storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: context.projectId,\n source: command.source,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n const active = await context.storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n return {\n materializationId: context.materializationId(),\n createdAt: context.clock().toISOString(),\n expectedSource: {\n source: command.source,\n activeMaterializationId: active?.materializationId ?? null,\n lastCommitId: active?.lastCommitId ?? null,\n },\n }\n}\n\nasync function stageProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate\n): Promise<ReadyProjectionReplacement> {\n const input = {\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.resolved.projectionRevision,\n ownershipHash: command.resolved.ownershipHash,\n createdAt: candidate.createdAt,\n entries: command.entries,\n ...(command.base ? { base: command.base } : {}),\n validateEntry: createProjectionEntryValidator(context.ontology, command.resolved),\n }\n const staged = await stageCandidateEntries(context, input, command.signal)\n return {\n ...candidate,\n staged,\n // Commit time starts only after the source candidate is sealed ready.\n identity: timestampCommitIdentity(command.identity, context.clock()),\n }\n}\n\nasync function stageCandidateEntries(\n context: MaterializerContext,\n input: Parameters<typeof stageProjectionMaterialization>[1],\n signal: AbortSignal | undefined\n): Promise<StagedProjectionMaterialization> {\n if (signal === undefined) return stageProjectionMaterialization(context, input)\n return stageProjectionMaterialization(context, { ...input, signal })\n}\n\nasync function commitProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeProjectionTransaction(context, storage, command, ready),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeProjectionTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n if (replay) return projectionReplayResult(replay, command)\n\n if (command.base) {\n const active = await storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n }\n const origin = projectionOrigin(command)\n throwIfAborted(command.signal)\n const session = await storage.ontology.materializations.begin({\n commit: projectionCommit(context.projectId, command, ready.identity, origin),\n expected: {\n sources: [ready.expectedSource],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n const counts = await planReadyProjection(\n context,\n storage.ontology.materializations,\n session,\n command,\n ready,\n origin\n )\n await drainStagedWork(context, storage, session, command.signal, true)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n ready.identity,\n command.signal\n )\n const result: ProjectionCommitResult = {\n kind: \"projection\",\n commitId: ready.identity.commitId,\n created: true,\n eventCount,\n committedAt: ready.identity.committedAt,\n counts,\n }\n throwIfAborted(command.signal)\n return finalizeProjectionMaterialization(storage, session, command, ready, result)\n}\n\nasync function finalizeProjectionMaterialization(\n storage: MaterializerStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n result: ProjectionCommitResult\n): Promise<ProjectionCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [projectionActivation(command, ready)],\n result,\n },\n })\n return applied.commit.result as ProjectionCommitResult\n}\n\nfunction projectionOrigin(command: PreparedProjectionReplacement): OntologyMaterializationOrigin {\n return {\n kind: \"projection\",\n projectionId: command.resolved.projectionId,\n projectionRunId: command.execution.projectionRunId,\n datasetId: command.datasetVersion.datasetId,\n datasetVersionId: command.datasetVersion.versionId,\n }\n}\n\nfunction projectionCommit(\n projectId: string,\n command: PreparedProjectionReplacement,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n return {\n projectId,\n id: identity.commitId,\n idempotencyKey: identity.idempotencyKey,\n requestHash: identity.requestHash,\n executionId: command.scopeExecution.executionId,\n origin,\n ontologyRevision: command.runIdentity.ontologyRevision,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n intent: { kind: \"projection\", source: command.source, datasetVersion: command.datasetVersion },\n committedAt: identity.committedAt,\n }\n}\n\nasync function planReadyProjection(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n origin: OntologyMaterializationOrigin\n) {\n const input = {\n source: command.source,\n materializationId: ready.materializationId,\n projectionKind: command.projectionKind,\n identity: ready.identity,\n origin,\n correlationId: command.scopeExecution.correlationId,\n }\n if (command.signal === undefined) {\n return planProjectionReplacement(context, storage, session, input)\n }\n return planProjectionReplacement(context, storage, session, {\n ...input,\n signal: command.signal,\n })\n}\n\nfunction projectionActivation(\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n) {\n return {\n source: command.source,\n materializationId: ready.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n protocol: \"replacement\" as const,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n ontologyRevision: command.runIdentity.ontologyRevision,\n expected: ready.expectedSource,\n lastCommitId: ready.identity.commitId,\n updatedAt: ready.identity.committedAt,\n }\n}\n\nasync function abandonFailedCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate,\n error: unknown\n): Promise<void> {\n if (!shouldAbandonCandidate(error)) return\n await context.storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: context.projectId,\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n}\n\nfunction shouldAbandonCandidate(error: unknown): boolean {\n if (error instanceof MaterializationValidationError) return true\n if (error instanceof MaterializationCancellationError) return true\n return (\n error instanceof MaterializationConflictError &&\n (error.kind === \"run-correlation\" || error.kind === \"idempotency\")\n )\n}\n\nfunction validateProjectionWatermark(\n active: Awaited<ReturnType<OntologyStorage[\"sources\"][\"getActive\"]>>,\n next: PinnedDatasetVersion\n): void {\n if (!active) return\n assertPinnedDatasetWatermark(active.datasetVersion, next, \"Projection replacement\")\n}\n\nfunction assertDeltaBase(\n active: OntologySourceRecord | null,\n command: PreparedProjectionReplacement\n): void {\n if (\n command.base &&\n (!active ||\n active.materializationId !== command.base.materializationId ||\n active.lastCommitId !== command.base.lastCommitId ||\n active.projectionRevision !== command.runIdentity.projectionRevision ||\n active.ontologyRevision !== command.runIdentity.ontologyRevision ||\n active.ownershipHash !== command.runIdentity.ownershipHash)\n ) {\n throw new MaterializationConflictError(\n \"source-materialization\",\n \"Projection delta no longer matches the active source or its definition.\"\n )\n }\n}\n",
|
|
42
|
-
"import type { EventActor } from \"../../events/envelope\"\nimport { stableJsonStringify } from \"../../json\"\nimport { MaterializationObjectNotFoundError } from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n TelemetryAppend,\n TelemetryPointWrite,\n} from \"../../materialization/model\"\nimport {\n objectRefKey,\n objectRefSortKey,\n telemetryPointKey,\n telemetryPointSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationObjectState,\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n StoredTelemetryPoint,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { resolveObject, type WorkingObject, workingObjectFromState } from \"../edits/working-state\"\nimport {\n buildObjectMaterializationEventDraft,\n buildTelemetryMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveObject } from \"../effective/diff\"\nimport { loadState, oneStateRequest } from \"../effective/load-state\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport { stageWorkBounded } from \"../execution/work-executor\"\nimport {\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface TelemetryPlanCounts {\n readonly pointsCreated: number\n readonly pointsUpdated: number\n readonly pointsUnchanged: number\n readonly latestObjectsChanged: number\n}\n\ninterface MutableTelemetryPlanCounts {\n pointsCreated: number\n pointsUpdated: number\n pointsUnchanged: number\n latestObjectsChanged: number\n}\n\ninterface TelemetryObjectGroup {\n readonly objectRef: OntologyObjectRef\n readonly start: number\n readonly end: number\n}\n\ninterface TelemetryPlanContext {\n readonly input: TelemetryAppend\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly event: TelemetryEventContext\n}\n\ninterface TelemetryEventContext {\n readonly correlationId: string\n readonly actor?: EventActor\n}\n\nexport async function planTelemetryAppend(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: TelemetryAppend,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin,\n event: TelemetryEventContext\n): Promise<TelemetryPlanCounts> {\n const counts = emptyTelemetryCounts()\n const planContext = { input, identity, origin, event }\n const objects = await loadTelemetryObjects(context, storage, session, input.points)\n const existingPoints = await loadExistingPoints(context, storage, session, input.points)\n for (const group of telemetryObjectGroups(input.points)) {\n const storedObject = objects.get(objectRefKey(group.objectRef))\n if (!storedObject?.effective) {\n throw new MaterializationObjectNotFoundError(\n group.objectRef.objectTypeId,\n group.objectRef.primaryId\n )\n }\n await planTelemetryObject(\n context,\n storage,\n session,\n planContext,\n group,\n workingObjectFromState(storedObject),\n existingPoints,\n counts\n )\n }\n return counts\n}\n\nfunction* telemetryObjectGroups(\n points: readonly TelemetryPointWrite[]\n): Iterable<TelemetryObjectGroup> {\n let start = 0\n while (start < points.length) {\n const objectRef = points[start].series.object\n const objectKey = objectRefKey(objectRef)\n let end = start + 1\n while (end < points.length && objectRefKey(points[end].series.object) === objectKey) {\n end += 1\n }\n yield { objectRef, start, end }\n start = end\n }\n}\n\nasync function planTelemetryObject(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n group: TelemetryObjectGroup,\n working: WorkingObject,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const latest = new Map(working.latestTelemetry.map((point) => [point.series.propertyId, point]))\n\n for (let start = group.start; start < group.end; start += context.batching.statePageRows) {\n const end = Math.min(group.end, start + context.batching.statePageRows)\n const points = planContext.input.points.slice(start, end)\n const work = planTelemetryChunk(context, planContext, points, existingPoints, latest, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n\n working.latestTelemetry = [...latest.values()]\n await stageTelemetryObjectPlan(context, storage, session, planContext, working, counts)\n}\n\nasync function loadTelemetryObjects(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, MaterializationObjectState>> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const point of points) refs.set(objectRefKey(point.series.object), point.series.object)\n const objectState = await loadState(context, storage, session, {\n objects: [...refs.values()],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n })\n return new Map(objectState.objects.map((object) => [objectRefKey(object.ref), object]))\n}\n\nfunction planTelemetryChunk(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n points: readonly TelemetryPointWrite[],\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const point of points) {\n work.push(...planTelemetryPoint(context, planContext, point, existingPoints, latest, counts))\n }\n return work\n}\n\nasync function loadExistingPoints(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, StoredTelemetryPoint>> {\n const existingPoints = new Map<string, StoredTelemetryPoint>()\n for await (const page of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: [],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: points.map((point) => ({ series: point.series, at: point.at })),\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const existing of page.points) {\n existingPoints.set(telemetryPointKey(existing.series, existing.at), existing)\n }\n }\n context.observeCoreBuffer?.(\"telemetry.existing-points\", existingPoints.size)\n return existingPoints\n}\n\nfunction planTelemetryPoint(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const identityKey = telemetryPointKey(point.series, point.at)\n const sortKey = telemetryPointSortKey(point.series, point.at)\n const existing = existingPoints.get(identityKey)\n const unchanged = telemetryPointUnchanged(existing, point)\n const work: MaterializationWorkRecord[] = [classificationWork(\"point\", identityKey, sortKey)]\n\n if (unchanged) {\n counts.pointsUnchanged += 1\n } else {\n countTelemetryPointChange(counts, existing)\n work.push(planWork(telemetryPointUpsert(point, existing, planContext.identity), sortKey))\n work.push(eventWork(buildTelemetryEvent(context, planContext, point)))\n }\n\n updateLatestPoint(latest, point, existing, unchanged, planContext.identity)\n return work\n}\n\nfunction telemetryPointUnchanged(\n existing: StoredTelemetryPoint | undefined,\n point: TelemetryPointWrite\n): boolean {\n if (!existing) return false\n return (\n stableJsonStringify({ value: existing.value, unit: existing.unit ?? null }) ===\n stableJsonStringify({ value: point.value, unit: point.unit ?? null })\n )\n}\n\nfunction countTelemetryPointChange(\n counts: MutableTelemetryPlanCounts,\n existing: StoredTelemetryPoint | undefined\n): void {\n if (existing) counts.pointsUpdated += 1\n else counts.pointsCreated += 1\n}\n\nfunction telemetryPointUpsert(\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n identity: TimedCommitIdentity\n): MaterializationPlanWorkItem {\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId: identity.commitId,\n }\n const pointWithUnit = storedTelemetryPointWithUnit(storedPoint, point.unit)\n return {\n kind: \"point-upsert\",\n value: {\n point: pointWithUnit,\n expected: {\n series: point.series,\n at: point.at,\n lastCommitId: existing?.lastCommitId ?? null,\n },\n },\n }\n}\n\nfunction storedTelemetryPointWithUnit<T extends object>(\n point: T,\n unit: string | undefined\n): T | (T & { readonly unit: string }) {\n if (unit === undefined) return point\n return { ...point, unit }\n}\n\nfunction buildTelemetryEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite\n) {\n const eventContext = telemetryEventContext(context, planContext)\n return buildTelemetryMaterializationEventDraft({ ...eventContext, point })\n}\n\nfunction updateLatestPoint(\n latest: Map<string, StoredTelemetryPoint>,\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n unchanged: boolean,\n identity: TimedCommitIdentity\n): void {\n const current = latest.get(point.series.propertyId)\n if (current && point.at < current.at) return\n\n let lastCommitId = identity.commitId\n if (unchanged && existing) lastCommitId = existing.lastCommitId\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId,\n }\n if (point.unit === undefined) {\n latest.set(point.series.propertyId, storedPoint)\n return\n }\n latest.set(point.series.propertyId, { ...storedPoint, unit: point.unit })\n}\n\nasync function stageTelemetryObjectPlan(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n working: WorkingObject,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n const sortKey = objectRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(working.ref), sortKey),\n ]\n if (change) {\n counts.latestObjectsChanged += 1\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n work.push(...items.map((item) => planWork(item, sortKey)))\n const eventContext = telemetryEventContext(context, planContext)\n work.push(eventWork(buildObjectMaterializationEventDraft({ ...eventContext, change })))\n }\n await stageWorkBounded(context, storage, session, work)\n}\n\nfunction telemetryEventContext(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext\n) {\n const eventContext = {\n projectId: context.projectId,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n origin: planContext.origin,\n correlationId: planContext.event.correlationId,\n }\n if (planContext.event.actor === undefined) return eventContext\n return { ...eventContext, actor: planContext.event.actor }\n}\n\nfunction emptyTelemetryCounts(): MutableTelemetryPlanCounts {\n return {\n pointsCreated: 0,\n pointsUpdated: 0,\n pointsUnchanged: 0,\n latestObjectsChanged: 0,\n }\n}\n",
|
|
43
|
-
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n ProjectionMaterializationIdentity,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../../materialization/model\"\nimport { telemetryOwnershipKey } from \"../../materialization/refs\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type { ProjectionRunRecord, ProjectionRunStorage } from \"../../storage\"\nimport type {\n MaterializationSession,\n OntologyCommitRecord,\n OntologyCommitWrite,\n TelemetryOntologyCommitIntent,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { validateTelemetryPoint } from \"../effective/validate\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport {\n type LockedProjectionExecution,\n lockProjectionRunForMaterialization,\n} from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertRuntimeMutationExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n createProjectionTelemetryIdempotencyKey,\n createRuntimeTelemetryIdempotencyKey,\n createTimedCommitIdentity,\n type TimedCommitIdentity,\n} from \"../shared/identity\"\nimport { normalizeTelemetryAppend } from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { planTelemetryAppend } from \"./plan\"\n\ntype NormalizedTelemetryAppend = ReturnType<typeof normalizeTelemetryAppend>\ntype NormalizedTelemetrySource = NormalizedTelemetryAppend[\"source\"]\ntype RuntimeTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"runtime\" }>\ntype ProjectionTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"projection\" }>\ntype ResolvedTelemetryProjection = ReturnType<ProjectionRegistry[\"resolveTelemetry\"]>\n\ninterface PreparedTelemetryBase {\n readonly input: NormalizedTelemetryAppend\n readonly inputPointCount: number\n readonly ontologyRevision: string\n readonly identity: TimedCommitIdentity\n readonly execution: MaterializerExecution\n}\n\ninterface PreparedRuntimeTelemetry extends PreparedTelemetryBase {\n readonly kind: \"runtime\"\n readonly source: RuntimeTelemetrySource\n}\n\ninterface PreparedProjectionTelemetry extends PreparedTelemetryBase {\n readonly kind: \"projection\"\n readonly source: ProjectionTelemetrySource\n readonly resolvedProjection: ResolvedTelemetryProjection\n readonly runIdentity: ProjectionMaterializationIdentity\n}\n\ntype PreparedTelemetryAppend = PreparedRuntimeTelemetry | PreparedProjectionTelemetry\n\nexport async function appendTelemetry(\n context: MaterializerContext,\n raw: MaterializerCommand<TelemetryAppend>\n): Promise<TelemetryCommitResult> {\n const command = prepareTelemetryAppend(context, raw)\n return executeTelemetryCommit(context, command)\n}\n\nfunction prepareTelemetryAppend(\n context: Pick<MaterializerContext, \"projectId\" | \"ontology\" | \"projectionRegistry\" | \"clock\">,\n raw: MaterializerCommand<TelemetryAppend>\n): PreparedTelemetryAppend {\n const rawInputPointCount = raw.input.points.length\n const input = normalizeTelemetryAppend({\n ...raw.input,\n points: raw.input.points.map((point) => validateTelemetryPoint(context.ontology, point)),\n })\n const inputPointCount = telemetryInputPointCount(input, rawInputPointCount)\n\n const ontologyRevision = context.projectionRegistry.ontologyRevision\n const execution = prepareMaterializerExecution(context.projectId, raw.scope)\n if (input.source.kind === \"runtime\") {\n return {\n ...prepareRuntimeTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n }\n return {\n ...prepareProjectionTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n}\n\nfunction telemetryInputPointCount(\n input: NormalizedTelemetryAppend,\n rawInputPointCount: number\n): number {\n if (input.source.kind === \"projection\") return rawInputPointCount\n return input.points.length\n}\n\nfunction prepareRuntimeTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: RuntimeTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedRuntimeTelemetry, \"execution\"> {\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createRuntimeTelemetryIdempotencyKey(source.requestId),\n normalizedCallerIntent: input,\n now: context.clock(),\n })\n return { kind: \"runtime\", input, source, inputPointCount, ontologyRevision, identity }\n}\n\nfunction prepareProjectionTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedProjectionTelemetry, \"execution\"> {\n const resolvedProjection = context.projectionRegistry.resolveTelemetry(\n source.projection.projectionId\n )\n validateTelemetryProjectionDataset(resolvedProjection, source)\n validateTelemetryOwnership(resolvedProjection, input)\n validateTelemetryBatchCardinality(resolvedProjection, source, inputPointCount)\n\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved: resolvedProjection,\n datasetVersion: source.datasetVersion,\n ontologyRevision,\n })\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionTelemetryIdempotencyKey(runIdentity, source.batchOrdinal),\n // Execution ownership is transient: a reclaimed delivery retains the same request hash.\n normalizedCallerIntent: projectionTelemetryCallerIntent(input, source, inputPointCount),\n now: context.clock(),\n })\n return {\n kind: \"projection\",\n input,\n source,\n inputPointCount,\n ontologyRevision,\n identity,\n resolvedProjection,\n runIdentity,\n }\n}\n\nfunction validateTelemetryBatchCardinality(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n): void {\n if (source.sourceRowCount === 0) {\n throw new MaterializationValidationError(\n \"Projection telemetry batches must consume at least one source row; an empty dataset produces no batch commit.\"\n )\n }\n\n const mappedPropertyCount = resolved.ownership.telemetry.length\n if (mappedPropertyCount === 0) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must own at least one telemetry property.`\n )\n }\n\n const sourceRowsEmitted = source.sourceRowCount - source.sourceRowsSkipped\n const maximumPointCount = sourceRowsEmitted * mappedPropertyCount\n if (!Number.isSafeInteger(maximumPointCount)) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' batch point capacity exceeds the safe integer range.`\n )\n }\n if (inputPointCount < sourceRowsEmitted || inputPointCount > maximumPointCount) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must emit between ${sourceRowsEmitted} and ${maximumPointCount} points for ${source.sourceRowCount} source rows with ${source.sourceRowsSkipped} skipped.`\n )\n }\n}\n\nfunction validateTelemetryProjectionDataset(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource\n): void {\n if (resolved.datasetId === source.datasetVersion.datasetId) return\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction validateTelemetryOwnership(\n resolved: ResolvedTelemetryProjection,\n input: NormalizedTelemetryAppend\n): void {\n const ownedSeries = new Set(\n resolved.ownership.telemetry.map(({ objectTypeId, propertyId }) =>\n telemetryOwnershipKey(objectTypeId, propertyId)\n )\n )\n for (const point of input.points) {\n const scope = telemetryOwnershipKey(point.series.object.objectTypeId, point.series.propertyId)\n if (ownedSeries.has(scope)) continue\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' does not own series '${point.series.object.objectTypeId}.${point.series.propertyId}'.`\n )\n }\n}\n\nfunction projectionTelemetryCallerIntent(\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n) {\n const intent = {\n source: {\n kind: \"projection\" as const,\n projection: source.projection,\n datasetVersion: source.datasetVersion,\n batchOrdinal: source.batchOrdinal,\n sourceRowCount: source.sourceRowCount,\n sourceRowsSkipped: source.sourceRowsSkipped,\n inputExhausted: source.inputExhausted,\n },\n inputPointCount,\n points: input.points,\n }\n return intent\n}\n\nasync function assertTelemetryExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedTelemetryAppend\n): Promise<LockedProjectionExecution | null> {\n if (command.kind === \"runtime\") {\n assertRuntimeMutationExecution(command.execution)\n return null\n }\n assertTrustedPrimitiveMutationExecution(command.execution, {\n kind: \"projection\",\n id: command.source.projection.projectionId,\n runId: command.source.execution.projectionRunId,\n })\n const execution = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.source.execution.projectionRunId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolvedProjection,\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by telemetry projection.\",\n })\n assertMaterializerRunExecution(\n command.execution,\n execution.run.executionId,\n `Projection run '${execution.run.id}'`\n )\n assertTelemetryBatchPosition(\n execution.run,\n command.source.batchOrdinal,\n command.source.sourceRowCount,\n command.source.inputExhausted\n )\n return execution\n}\n\nfunction assertTelemetryBatchPosition(\n run: ProjectionRunRecord,\n batchOrdinal: number,\n sourceRowCount: number,\n inputExhausted: boolean\n): void {\n const checkpoint = run.telemetryCheckpoint\n if (!checkpoint) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has incomplete checkpoint state.`\n )\n }\n if (batchOrdinal > checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' expected batch ordinal ${checkpoint.nextBatchOrdinal}, got ${batchOrdinal}.`\n )\n }\n if (checkpoint.inputExhausted && batchOrdinal >= checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has already exhausted its input.`\n )\n }\n if (sourceRowCount > checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' batch exceeds its fixed size.`\n )\n }\n if (!inputExhausted && sourceRowCount !== checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' cannot advance past a partial non-final batch.`\n )\n }\n}\n\nfunction assertTelemetryReplayCheckpoint(run: ProjectionRunRecord, batchOrdinal: number): void {\n if (!run.telemetryCheckpoint || batchOrdinal >= run.telemetryCheckpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry commit batch ${batchOrdinal} exists without an advanced run checkpoint.`\n )\n }\n}\n\nfunction telemetryProjectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionTelemetry\n): TelemetryCommitResult {\n const origin = commit.origin\n if (\n origin.kind !== \"telemetry\" ||\n origin.source.kind !== \"projection\" ||\n origin.source.projectionRunId !== command.source.execution.projectionRunId ||\n origin.source.batchOrdinal !== command.source.batchOrdinal ||\n commit.result.kind !== \"telemetry\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Telemetry commit '${commit.id}' belongs to a different logical run or batch.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function executeTelemetryCommit(\n context: MaterializerContext,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeTelemetryTransaction(context, storage, command),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeTelemetryTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n const execution = await assertTelemetryExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.execution.executionId,\n storage\n )\n if (replay) {\n if (command.kind === \"projection\" && execution) {\n assertTelemetryReplayCheckpoint(execution.run, command.source.batchOrdinal)\n return telemetryProjectionReplayResult(replay, command)\n }\n return { ...structuredClone(replay.result), created: false } as TelemetryCommitResult\n }\n if (command.kind === \"projection\") {\n if (\n !execution?.run.telemetryCheckpoint ||\n execution.run.telemetryCheckpoint.nextBatchOrdinal !== command.source.batchOrdinal\n ) {\n throw new MaterializationValidationError(\n `Telemetry projection batch ${command.source.batchOrdinal} is behind its run checkpoint.`\n )\n }\n }\n\n const origin = telemetryOrigin(command)\n const session = await beginTelemetryMaterialization(context, storage, command, origin)\n const counts = await planTelemetryAppend(\n context,\n storage.ontology.materializations,\n session,\n command.input,\n command.identity,\n origin,\n {\n correlationId: command.execution.correlationId,\n ...(command.execution.actor === undefined ? {} : { actor: command.execution.actor }),\n }\n )\n await drainStagedWork(context, storage, session)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n command.identity\n )\n const result: TelemetryCommitResult = {\n kind: \"telemetry\",\n commitId: command.identity.commitId,\n created: true,\n eventCount,\n committedAt: command.identity.committedAt,\n ...counts,\n }\n return finalizeTelemetryMaterialization(\n storage,\n session,\n command,\n result,\n execution?.projectionRuns\n )\n}\n\nfunction telemetryOrigin(command: PreparedTelemetryAppend): OntologyMaterializationOrigin {\n if (command.kind === \"runtime\") {\n return { kind: \"telemetry\", source: command.source }\n }\n return {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projectionId: command.source.projection.projectionId,\n projectionRunId: command.source.execution.projectionRunId,\n datasetId: command.source.datasetVersion.datasetId,\n datasetVersionId: command.source.datasetVersion.versionId,\n batchOrdinal: command.source.batchOrdinal,\n },\n }\n}\n\nasync function beginTelemetryMaterialization(\n context: Pick<MaterializerContext, \"projectId\">,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): Promise<MaterializationSession> {\n return storage.ontology.materializations.begin({\n commit: telemetryCommit(context.projectId, command, origin),\n expected: {\n sources: [],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n}\n\nfunction telemetryCommit(\n projectId: string,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n const base: OntologyCommitWrite = {\n projectId,\n id: command.identity.commitId,\n idempotencyKey: command.identity.idempotencyKey,\n requestHash: command.identity.requestHash,\n executionId: command.execution.executionId,\n origin,\n ontologyRevision: command.ontologyRevision,\n intent: telemetryCommitIntent(command),\n committedAt: command.identity.committedAt,\n }\n const withActor = telemetryCommitActor(base, command)\n if (command.kind === \"runtime\") return withActor\n return {\n ...withActor,\n projectionRevision: command.resolvedProjection.projectionRevision,\n ownershipHash: command.resolvedProjection.ownershipHash,\n }\n}\n\nfunction telemetryCommitActor(\n commit: OntologyCommitWrite,\n command: PreparedTelemetryAppend\n): OntologyCommitWrite {\n if (command.execution.actor === undefined) return commit\n return { ...commit, actor: command.execution.actor }\n}\n\nfunction telemetryCommitIntent(command: PreparedTelemetryAppend): TelemetryOntologyCommitIntent {\n if (command.kind === \"runtime\") {\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: { kind: \"runtime\" },\n }\n }\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: {\n kind: \"projection\",\n projection: command.source.projection,\n datasetVersion: command.source.datasetVersion,\n batchOrdinal: command.source.batchOrdinal,\n sourceRowCount: command.source.sourceRowCount,\n sourceRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n },\n }\n}\n\nasync function finalizeTelemetryMaterialization(\n storage: MaterializerStorage,\n session: MaterializationSession,\n command: PreparedTelemetryAppend,\n result: TelemetryCommitResult,\n projectionRuns: ProjectionRunStorage | undefined\n): Promise<TelemetryCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: { sourceActivations: [], result },\n })\n if (command.kind === \"projection\") {\n if (!projectionRuns) {\n throw new MaterializationValidationError(\"Expected an asserted telemetry projection run.\")\n }\n await projectionRuns.advanceTelemetryCheckpoint({\n id: command.source.execution.projectionRunId,\n projectId: applied.commit.projectId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n batchOrdinal: command.source.batchOrdinal,\n batchRowCount: command.source.sourceRowCount,\n batchRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n })\n }\n return applied.commit.result as TelemetryCommitResult\n}\n",
|
|
42
|
+
"import { assertPinnedDatasetWatermark } from \"../../materialization/dataset-watermark\"\nimport {\n MaterializationCancellationError,\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n PinnedDatasetVersion,\n ProjectionCommitResult,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionSourceBase,\n ProjectionSourceDeletion,\n ProjectionSourceEntry,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n} from \"../../materialization/model\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type {\n OntologyCommitRecord,\n OntologyCommitWrite,\n OntologyMaterializationStorage,\n OntologySourceRecord,\n OntologyStorage,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport { lockProjectionRunForMaterialization } from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport { throwIfAborted } from \"../shared/abort\"\nimport {\n type CommitIdentity,\n createCommitIdentity,\n createProjectionIdempotencyKey,\n type TimedCommitIdentity,\n timestampCommitIdentity,\n} from \"../shared/identity\"\nimport {\n normalizePinnedDatasetVersion,\n normalizeProjectionExecution,\n normalizeProjectionSourceRef,\n} from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { createProjectionEntryValidator } from \"./entry-validator\"\nimport { planProjectionReplacement } from \"./replacement-plan\"\nimport {\n type StagedProjectionMaterialization,\n stageProjectionMaterialization,\n} from \"./source-materialization\"\n\ntype ResolvedSourceProjection = ReturnType<ProjectionRegistry[\"resolveSource\"]>\n\ninterface PreparedProjectionReplacement {\n readonly source: ProjectionSourceRef\n readonly datasetVersion: PinnedDatasetVersion\n readonly execution: ProjectionExecution\n readonly entries: AsyncIterable<ProjectionSourceEntry | ProjectionSourceDeletion>\n readonly base?: ProjectionSourceBase\n readonly signal?: AbortSignal\n readonly resolved: ResolvedSourceProjection\n readonly projectionKind: \"object\" | \"link\"\n readonly runIdentity: ProjectionMaterializationIdentity\n readonly identity: CommitIdentity\n readonly scopeExecution: MaterializerExecution\n}\n\ninterface ProjectionCandidate {\n readonly materializationId: string\n readonly createdAt: string\n readonly expectedSource: {\n readonly source: ProjectionSourceRef\n readonly activeMaterializationId: string | null\n readonly lastCommitId: string | null\n }\n}\n\ninterface ReadyProjectionReplacement extends ProjectionCandidate {\n readonly staged: StagedProjectionMaterialization\n readonly identity: TimedCommitIdentity\n}\n\nexport async function replaceProjection(\n context: MaterializerContext,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): Promise<ProjectionCommitResult> {\n const command = prepareProjectionReplacement(context, raw)\n const replay = await admitProjectionExecution(context, command)\n if (replay) return replay\n\n const candidate = await prepareProjectionCandidate(context, command)\n try {\n const ready = await stageProjectionCandidate(context, command, candidate)\n return await commitProjectionCandidate(context, command, ready)\n } catch (error) {\n await abandonFailedCandidate(context, command, candidate, error)\n throw error\n }\n}\n\nfunction prepareProjectionReplacement(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\">,\n raw: MaterializerCommand<ProjectionSourceReplacement>\n): PreparedProjectionReplacement {\n const source = normalizeProjectionSourceRef(raw.input.source)\n const datasetVersion = normalizePinnedDatasetVersion(raw.input.datasetVersion)\n const execution = normalizeProjectionExecution(raw.input.execution)\n const resolved = context.projectionRegistry.resolveSource(source.projectionId)\n validateProjectionDataset(resolved, datasetVersion)\n\n const projectionKind = sourceProjectionKind(resolved)\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved,\n datasetVersion,\n ontologyRevision: context.projectionRegistry.ontologyRevision,\n })\n const identity = createCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionIdempotencyKey(runIdentity),\n normalizedCallerIntent: { source, datasetVersion },\n })\n const command = {\n source,\n datasetVersion,\n execution,\n entries: raw.input.entries,\n ...(raw.input.base ? { base: Object.freeze({ ...raw.input.base }) } : {}),\n resolved,\n projectionKind,\n runIdentity,\n identity,\n scopeExecution: prepareMaterializerExecution(context.projectId, raw.scope),\n }\n if (raw.input.signal === undefined) return command\n return { ...command, signal: raw.input.signal }\n}\n\nfunction validateProjectionDataset(\n resolved: ResolvedSourceProjection,\n datasetVersion: PinnedDatasetVersion\n): void {\n if (datasetVersion.datasetId === resolved.datasetId) return\n throw new MaterializationValidationError(\n `Projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction sourceProjectionKind(resolved: ResolvedSourceProjection): \"object\" | \"link\" {\n if (resolved.definition._tag === \"ObjectProjectionDefinition\") return \"object\"\n return \"link\"\n}\n\nasync function assertProjectionExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedProjectionReplacement,\n options: { readonly capabilityErrorMessage?: string } = {}\n): Promise<void> {\n assertTrustedPrimitiveMutationExecution(command.scopeExecution, {\n kind: \"projection\",\n id: command.source.projectionId,\n runId: command.execution.projectionRunId,\n })\n const locked = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.execution.projectionRunId,\n executionToken: command.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolved,\n ...options,\n })\n assertMaterializerRunExecution(\n command.scopeExecution,\n locked.run.executionId,\n `Projection run '${locked.run.id}'`\n )\n}\n\nasync function admitProjectionExecution(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCommitResult | null> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n async (storage) => {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command, {\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by source replacement.\",\n })\n const commit = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n return commit ? projectionReplayResult(commit, command) : null\n },\n { isolation: \"serializable\" }\n )\n )\n}\n\nfunction projectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionReplacement\n): ProjectionCommitResult {\n if (\n commit.origin.kind !== \"projection\" ||\n commit.origin.projectionRunId !== command.execution.projectionRunId ||\n commit.result.kind !== \"projection\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Projection commit '${commit.id}' belongs to a different logical run.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function prepareProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement\n): Promise<ProjectionCandidate> {\n await context.storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: context.projectId,\n source: command.source,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n const active = await context.storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n return {\n materializationId: context.materializationId(),\n createdAt: context.clock().toISOString(),\n expectedSource: {\n source: command.source,\n activeMaterializationId: active?.materializationId ?? null,\n lastCommitId: active?.lastCommitId ?? null,\n },\n }\n}\n\nasync function stageProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate\n): Promise<ReadyProjectionReplacement> {\n const input = {\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.resolved.projectionRevision,\n ownershipHash: command.resolved.ownershipHash,\n createdAt: candidate.createdAt,\n entries: command.entries,\n ...(command.base ? { base: command.base } : {}),\n validateEntry: createProjectionEntryValidator(context.ontology, command.resolved),\n }\n const staged = await stageCandidateEntries(context, input, command.signal)\n return {\n ...candidate,\n staged,\n // Commit time starts only after the source candidate is sealed ready.\n identity: timestampCommitIdentity(command.identity, context.clock()),\n }\n}\n\nasync function stageCandidateEntries(\n context: MaterializerContext,\n input: Parameters<typeof stageProjectionMaterialization>[1],\n signal: AbortSignal | undefined\n): Promise<StagedProjectionMaterialization> {\n if (signal === undefined) return stageProjectionMaterialization(context, input)\n return stageProjectionMaterialization(context, { ...input, signal })\n}\n\nasync function commitProjectionCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeProjectionTransaction(context, storage, command, ready),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeProjectionTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n): Promise<ProjectionCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.scopeExecution)\n await assertProjectionExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.scopeExecution.executionId,\n storage\n )\n if (replay) return projectionReplayResult(replay, command)\n\n if (command.base) {\n const active = await storage.ontology.sources.getActive({\n projectId: context.projectId,\n source: command.source,\n })\n validateProjectionWatermark(active, command.datasetVersion)\n assertDeltaBase(active, command)\n }\n const origin = projectionOrigin(command)\n throwIfAborted(command.signal)\n const session = await storage.ontology.materializations.begin({\n commit: projectionCommit(context.projectId, command, ready.identity, origin),\n expected: {\n sources: [ready.expectedSource],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n const counts = await planReadyProjection(\n context,\n storage.ontology.materializations,\n session,\n command,\n ready,\n origin\n )\n await drainStagedWork(context, storage, session, command.signal, true)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n ready.identity,\n command.signal\n )\n const result: ProjectionCommitResult = {\n kind: \"projection\",\n commitId: ready.identity.commitId,\n created: true,\n eventCount,\n committedAt: ready.identity.committedAt,\n counts,\n }\n throwIfAborted(command.signal)\n return finalizeProjectionMaterialization(storage, session, command, ready, result)\n}\n\nasync function finalizeProjectionMaterialization(\n storage: MaterializerStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n result: ProjectionCommitResult\n): Promise<ProjectionCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [projectionActivation(command, ready)],\n result,\n },\n })\n return applied.commit.result as ProjectionCommitResult\n}\n\nfunction projectionOrigin(command: PreparedProjectionReplacement): OntologyMaterializationOrigin {\n return {\n kind: \"projection\",\n projectionId: command.resolved.projectionId,\n projectionRunId: command.execution.projectionRunId,\n datasetId: command.datasetVersion.datasetId,\n datasetVersionId: command.datasetVersion.versionId,\n }\n}\n\nfunction projectionCommit(\n projectId: string,\n command: PreparedProjectionReplacement,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n return {\n projectId,\n id: identity.commitId,\n idempotencyKey: identity.idempotencyKey,\n requestHash: identity.requestHash,\n executionId: command.scopeExecution.executionId,\n origin,\n ...command.scopeExecution.attribution,\n ontologyRevision: command.runIdentity.ontologyRevision,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n intent: { kind: \"projection\", source: command.source, datasetVersion: command.datasetVersion },\n committedAt: identity.committedAt,\n }\n}\n\nasync function planReadyProjection(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: Parameters<OntologyMaterializationStorage[\"finalize\"]>[0][\"session\"],\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement,\n origin: OntologyMaterializationOrigin\n) {\n const input = {\n source: command.source,\n materializationId: ready.materializationId,\n projectionKind: command.projectionKind,\n identity: ready.identity,\n origin,\n correlationId: command.scopeExecution.correlationId,\n attribution: command.scopeExecution.attribution,\n }\n if (command.signal === undefined) {\n return planProjectionReplacement(context, storage, session, input)\n }\n return planProjectionReplacement(context, storage, session, {\n ...input,\n signal: command.signal,\n })\n}\n\nfunction projectionActivation(\n command: PreparedProjectionReplacement,\n ready: ReadyProjectionReplacement\n) {\n return {\n source: command.source,\n materializationId: ready.materializationId,\n execution: command.execution,\n projectionKind: command.projectionKind,\n protocol: \"replacement\" as const,\n datasetVersion: command.datasetVersion,\n projectionRevision: command.runIdentity.projectionRevision,\n ownershipHash: command.runIdentity.ownershipHash,\n ontologyRevision: command.runIdentity.ontologyRevision,\n expected: ready.expectedSource,\n lastCommitId: ready.identity.commitId,\n updatedAt: ready.identity.committedAt,\n }\n}\n\nasync function abandonFailedCandidate(\n context: MaterializerContext,\n command: PreparedProjectionReplacement,\n candidate: ProjectionCandidate,\n error: unknown\n): Promise<void> {\n if (!shouldAbandonCandidate(error)) return\n await context.storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: context.projectId,\n source: command.source,\n materializationId: candidate.materializationId,\n execution: command.execution,\n abandonedAt: context.clock().toISOString(),\n })\n}\n\nfunction shouldAbandonCandidate(error: unknown): boolean {\n if (error instanceof MaterializationValidationError) return true\n if (error instanceof MaterializationCancellationError) return true\n return (\n error instanceof MaterializationConflictError &&\n (error.kind === \"run-correlation\" || error.kind === \"idempotency\")\n )\n}\n\nfunction validateProjectionWatermark(\n active: Awaited<ReturnType<OntologyStorage[\"sources\"][\"getActive\"]>>,\n next: PinnedDatasetVersion\n): void {\n if (!active) return\n assertPinnedDatasetWatermark(active.datasetVersion, next, \"Projection replacement\")\n}\n\nfunction assertDeltaBase(\n active: OntologySourceRecord | null,\n command: PreparedProjectionReplacement\n): void {\n if (\n command.base &&\n (!active ||\n active.materializationId !== command.base.materializationId ||\n active.lastCommitId !== command.base.lastCommitId ||\n active.projectionRevision !== command.runIdentity.projectionRevision ||\n active.ontologyRevision !== command.runIdentity.ontologyRevision ||\n active.ownershipHash !== command.runIdentity.ownershipHash)\n ) {\n throw new MaterializationConflictError(\n \"source-materialization\",\n \"Projection delta no longer matches the active source or its definition.\"\n )\n }\n}\n",
|
|
43
|
+
"import { stableJsonStringify } from \"../../json\"\nimport { MaterializationObjectNotFoundError } from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n OntologyObjectRef,\n TelemetryAppend,\n TelemetryPointWrite,\n} from \"../../materialization/model\"\nimport {\n objectRefKey,\n objectRefSortKey,\n telemetryPointKey,\n telemetryPointSortKey,\n} from \"../../materialization/refs\"\nimport type {\n MaterializationObjectState,\n MaterializationPlanWorkItem,\n MaterializationSession,\n MaterializationWorkRecord,\n OntologyMaterializationStorage,\n StoredTelemetryPoint,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext } from \"../context\"\nimport { resolveObject, type WorkingObject, workingObjectFromState } from \"../edits/working-state\"\nimport {\n buildObjectMaterializationEventDraft,\n buildTelemetryMaterializationEventDraft,\n} from \"../effective/build-events\"\nimport { diffEffectiveObject } from \"../effective/diff\"\nimport { loadState, oneStateRequest } from \"../effective/load-state\"\nimport { validateEffectiveObject } from \"../effective/validate\"\nimport type { MaterializerAttribution } from \"../execution/scope\"\nimport { stageWorkBounded } from \"../execution/work-executor\"\nimport {\n appendEffectiveObjectWork,\n classificationWork,\n eventWork,\n planWork,\n} from \"../execution/work-records\"\nimport type { TimedCommitIdentity } from \"../shared/identity\"\n\nexport interface TelemetryPlanCounts {\n readonly pointsCreated: number\n readonly pointsUpdated: number\n readonly pointsUnchanged: number\n readonly latestObjectsChanged: number\n}\n\ninterface MutableTelemetryPlanCounts {\n pointsCreated: number\n pointsUpdated: number\n pointsUnchanged: number\n latestObjectsChanged: number\n}\n\ninterface TelemetryObjectGroup {\n readonly objectRef: OntologyObjectRef\n readonly start: number\n readonly end: number\n}\n\ninterface TelemetryPlanContext {\n readonly input: TelemetryAppend\n readonly identity: TimedCommitIdentity\n readonly origin: OntologyMaterializationOrigin\n readonly event: TelemetryEventContext\n}\n\ninterface TelemetryEventContext {\n readonly correlationId: string\n readonly attribution: MaterializerAttribution\n}\n\nexport async function planTelemetryAppend(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n input: TelemetryAppend,\n identity: TimedCommitIdentity,\n origin: OntologyMaterializationOrigin,\n event: TelemetryEventContext\n): Promise<TelemetryPlanCounts> {\n const counts = emptyTelemetryCounts()\n const planContext = { input, identity, origin, event }\n const objects = await loadTelemetryObjects(context, storage, session, input.points)\n const existingPoints = await loadExistingPoints(context, storage, session, input.points)\n for (const group of telemetryObjectGroups(input.points)) {\n const storedObject = objects.get(objectRefKey(group.objectRef))\n if (!storedObject?.effective) {\n throw new MaterializationObjectNotFoundError(\n group.objectRef.objectTypeId,\n group.objectRef.primaryId\n )\n }\n await planTelemetryObject(\n context,\n storage,\n session,\n planContext,\n group,\n workingObjectFromState(storedObject),\n existingPoints,\n counts\n )\n }\n return counts\n}\n\nfunction* telemetryObjectGroups(\n points: readonly TelemetryPointWrite[]\n): Iterable<TelemetryObjectGroup> {\n let start = 0\n while (start < points.length) {\n const objectRef = points[start].series.object\n const objectKey = objectRefKey(objectRef)\n let end = start + 1\n while (end < points.length && objectRefKey(points[end].series.object) === objectKey) {\n end += 1\n }\n yield { objectRef, start, end }\n start = end\n }\n}\n\nasync function planTelemetryObject(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n group: TelemetryObjectGroup,\n working: WorkingObject,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const latest = new Map(working.latestTelemetry.map((point) => [point.series.propertyId, point]))\n\n for (let start = group.start; start < group.end; start += context.batching.statePageRows) {\n const end = Math.min(group.end, start + context.batching.statePageRows)\n const points = planContext.input.points.slice(start, end)\n const work = planTelemetryChunk(context, planContext, points, existingPoints, latest, counts)\n await stageWorkBounded(context, storage, session, work)\n }\n\n working.latestTelemetry = [...latest.values()]\n await stageTelemetryObjectPlan(context, storage, session, planContext, working, counts)\n}\n\nasync function loadTelemetryObjects(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, MaterializationObjectState>> {\n const refs = new Map<string, OntologyObjectRef>()\n for (const point of points) refs.set(objectRefKey(point.series.object), point.series.object)\n const objectState = await loadState(context, storage, session, {\n objects: [...refs.values()],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: [],\n })\n return new Map(objectState.objects.map((object) => [objectRefKey(object.ref), object]))\n}\n\nfunction planTelemetryChunk(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n points: readonly TelemetryPointWrite[],\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const work: MaterializationWorkRecord[] = []\n for (const point of points) {\n work.push(...planTelemetryPoint(context, planContext, point, existingPoints, latest, counts))\n }\n return work\n}\n\nasync function loadExistingPoints(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n points: readonly TelemetryPointWrite[]\n): Promise<ReadonlyMap<string, StoredTelemetryPoint>> {\n const existingPoints = new Map<string, StoredTelemetryPoint>()\n for await (const page of storage.streamState({\n session,\n requests: oneStateRequest({\n objects: [],\n links: [],\n linkScopes: [],\n incidentObjects: [],\n points: points.map((point) => ({ series: point.series, at: point.at })),\n }),\n pageRows: context.batching.statePageRows,\n })) {\n for (const existing of page.points) {\n existingPoints.set(telemetryPointKey(existing.series, existing.at), existing)\n }\n }\n context.observeCoreBuffer?.(\"telemetry.existing-points\", existingPoints.size)\n return existingPoints\n}\n\nfunction planTelemetryPoint(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite,\n existingPoints: ReadonlyMap<string, StoredTelemetryPoint>,\n latest: Map<string, StoredTelemetryPoint>,\n counts: MutableTelemetryPlanCounts\n): MaterializationWorkRecord[] {\n const identityKey = telemetryPointKey(point.series, point.at)\n const sortKey = telemetryPointSortKey(point.series, point.at)\n const existing = existingPoints.get(identityKey)\n const unchanged = telemetryPointUnchanged(existing, point)\n const work: MaterializationWorkRecord[] = [classificationWork(\"point\", identityKey, sortKey)]\n\n if (unchanged) {\n counts.pointsUnchanged += 1\n } else {\n countTelemetryPointChange(counts, existing)\n work.push(planWork(telemetryPointUpsert(point, existing, planContext.identity), sortKey))\n work.push(eventWork(buildTelemetryEvent(context, planContext, point)))\n }\n\n updateLatestPoint(latest, point, existing, unchanged, planContext.identity)\n return work\n}\n\nfunction telemetryPointUnchanged(\n existing: StoredTelemetryPoint | undefined,\n point: TelemetryPointWrite\n): boolean {\n if (!existing) return false\n return (\n stableJsonStringify({ value: existing.value, unit: existing.unit ?? null }) ===\n stableJsonStringify({ value: point.value, unit: point.unit ?? null })\n )\n}\n\nfunction countTelemetryPointChange(\n counts: MutableTelemetryPlanCounts,\n existing: StoredTelemetryPoint | undefined\n): void {\n if (existing) counts.pointsUpdated += 1\n else counts.pointsCreated += 1\n}\n\nfunction telemetryPointUpsert(\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n identity: TimedCommitIdentity\n): MaterializationPlanWorkItem {\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId: identity.commitId,\n }\n const pointWithUnit = storedTelemetryPointWithUnit(storedPoint, point.unit)\n return {\n kind: \"point-upsert\",\n value: {\n point: pointWithUnit,\n expected: {\n series: point.series,\n at: point.at,\n lastCommitId: existing?.lastCommitId ?? null,\n },\n },\n }\n}\n\nfunction storedTelemetryPointWithUnit<T extends object>(\n point: T,\n unit: string | undefined\n): T | (T & { readonly unit: string }) {\n if (unit === undefined) return point\n return { ...point, unit }\n}\n\nfunction buildTelemetryEvent(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext,\n point: TelemetryPointWrite\n) {\n const eventContext = telemetryEventContext(context, planContext)\n return buildTelemetryMaterializationEventDraft({ ...eventContext, point })\n}\n\nfunction updateLatestPoint(\n latest: Map<string, StoredTelemetryPoint>,\n point: TelemetryPointWrite,\n existing: StoredTelemetryPoint | undefined,\n unchanged: boolean,\n identity: TimedCommitIdentity\n): void {\n const current = latest.get(point.series.propertyId)\n if (current && point.at < current.at) return\n\n let lastCommitId = identity.commitId\n if (unchanged && existing) lastCommitId = existing.lastCommitId\n const storedPoint = {\n series: point.series,\n value: point.value,\n at: point.at,\n lastCommitId,\n }\n if (point.unit === undefined) {\n latest.set(point.series.propertyId, storedPoint)\n return\n }\n latest.set(point.series.propertyId, { ...storedPoint, unit: point.unit })\n}\n\nasync function stageTelemetryObjectPlan(\n context: MaterializerContext,\n storage: OntologyMaterializationStorage,\n session: MaterializationSession,\n planContext: TelemetryPlanContext,\n working: WorkingObject,\n counts: MutableTelemetryPlanCounts\n): Promise<void> {\n const resolved = resolveObject(context.ontology, working)\n if (resolved) validateEffectiveObject(context.ontology, resolved.ref, resolved.properties)\n const change = diffEffectiveObject({\n before: working.before,\n resolved,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n })\n const sortKey = objectRefSortKey(working.ref)\n const work: MaterializationWorkRecord[] = [\n classificationWork(\"object\", objectRefKey(working.ref), sortKey),\n ]\n if (change) {\n counts.latestObjectsChanged += 1\n const items: MaterializationPlanWorkItem[] = []\n appendEffectiveObjectWork(items, change)\n work.push(...items.map((item) => planWork(item, sortKey)))\n const eventContext = telemetryEventContext(context, planContext)\n work.push(eventWork(buildObjectMaterializationEventDraft({ ...eventContext, change })))\n }\n await stageWorkBounded(context, storage, session, work)\n}\n\nfunction telemetryEventContext(\n context: Pick<MaterializerContext, \"projectId\">,\n planContext: TelemetryPlanContext\n) {\n return {\n projectId: context.projectId,\n commitId: planContext.identity.commitId,\n committedAt: planContext.identity.committedAt,\n origin: planContext.origin,\n correlationId: planContext.event.correlationId,\n attribution: planContext.event.attribution,\n }\n}\n\nfunction emptyTelemetryCounts(): MutableTelemetryPlanCounts {\n return {\n pointsCreated: 0,\n pointsUpdated: 0,\n pointsUnchanged: 0,\n latestObjectsChanged: 0,\n }\n}\n",
|
|
44
|
+
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n OntologyMaterializationOrigin,\n ProjectionMaterializationIdentity,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../../materialization/model\"\nimport { telemetryOwnershipKey } from \"../../materialization/refs\"\nimport type { ProjectionRegistry } from \"../../projections/registry\"\nimport type { ProjectionRunRecord, ProjectionRunStorage } from \"../../storage\"\nimport type {\n MaterializationSession,\n OntologyCommitRecord,\n OntologyCommitWrite,\n TelemetryOntologyCommitIntent,\n} from \"../../storage/ontology\"\nimport type { MaterializerContext, MaterializerStorage } from \"../context\"\nimport { validateTelemetryPoint } from \"../effective/validate\"\nimport { replayCommitRecord, withSerializationRetry } from \"../execution/commit-lifecycle\"\nimport {\n type LockedProjectionExecution,\n lockProjectionRunForMaterialization,\n} from \"../execution/run-correlation\"\nimport {\n assertMaterializerRunExecution,\n assertRuntimeMutationExecution,\n assertTrustedPrimitiveMutationExecution,\n ensureMaterializerExecution,\n type MaterializerExecution,\n prepareMaterializerExecution,\n} from \"../execution/scope\"\nimport { drainStagedEvents, drainStagedWork } from \"../execution/work-executor\"\nimport type { MaterializerCommand } from \"../materializer\"\nimport {\n createProjectionTelemetryIdempotencyKey,\n createRuntimeTelemetryIdempotencyKey,\n createTimedCommitIdentity,\n type TimedCommitIdentity,\n} from \"../shared/identity\"\nimport { normalizeTelemetryAppend } from \"../shared/normalize\"\nimport { createProjectionRunMaterializationIdentity } from \"../shared/projection-run\"\nimport { planTelemetryAppend } from \"./plan\"\n\ntype NormalizedTelemetryAppend = ReturnType<typeof normalizeTelemetryAppend>\ntype NormalizedTelemetrySource = NormalizedTelemetryAppend[\"source\"]\ntype RuntimeTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"runtime\" }>\ntype ProjectionTelemetrySource = Extract<NormalizedTelemetrySource, { readonly kind: \"projection\" }>\ntype ResolvedTelemetryProjection = ReturnType<ProjectionRegistry[\"resolveTelemetry\"]>\n\ninterface PreparedTelemetryBase {\n readonly input: NormalizedTelemetryAppend\n readonly inputPointCount: number\n readonly ontologyRevision: string\n readonly identity: TimedCommitIdentity\n readonly execution: MaterializerExecution\n}\n\ninterface PreparedRuntimeTelemetry extends PreparedTelemetryBase {\n readonly kind: \"runtime\"\n readonly source: RuntimeTelemetrySource\n}\n\ninterface PreparedProjectionTelemetry extends PreparedTelemetryBase {\n readonly kind: \"projection\"\n readonly source: ProjectionTelemetrySource\n readonly resolvedProjection: ResolvedTelemetryProjection\n readonly runIdentity: ProjectionMaterializationIdentity\n}\n\ntype PreparedTelemetryAppend = PreparedRuntimeTelemetry | PreparedProjectionTelemetry\n\nexport async function appendTelemetry(\n context: MaterializerContext,\n raw: MaterializerCommand<TelemetryAppend>\n): Promise<TelemetryCommitResult> {\n const command = prepareTelemetryAppend(context, raw)\n return executeTelemetryCommit(context, command)\n}\n\nfunction prepareTelemetryAppend(\n context: Pick<MaterializerContext, \"projectId\" | \"ontology\" | \"projectionRegistry\" | \"clock\">,\n raw: MaterializerCommand<TelemetryAppend>\n): PreparedTelemetryAppend {\n const rawInputPointCount = raw.input.points.length\n const input = normalizeTelemetryAppend({\n ...raw.input,\n points: raw.input.points.map((point) => validateTelemetryPoint(context.ontology, point)),\n })\n const inputPointCount = telemetryInputPointCount(input, rawInputPointCount)\n\n const ontologyRevision = context.projectionRegistry.ontologyRevision\n const execution = prepareMaterializerExecution(context.projectId, raw.scope)\n if (input.source.kind === \"runtime\") {\n return {\n ...prepareRuntimeTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n }\n return {\n ...prepareProjectionTelemetry(context, input, input.source, inputPointCount, ontologyRevision),\n execution,\n }\n}\n\nfunction telemetryInputPointCount(\n input: NormalizedTelemetryAppend,\n rawInputPointCount: number\n): number {\n if (input.source.kind === \"projection\") return rawInputPointCount\n return input.points.length\n}\n\nfunction prepareRuntimeTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: RuntimeTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedRuntimeTelemetry, \"execution\"> {\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createRuntimeTelemetryIdempotencyKey(source.requestId),\n normalizedCallerIntent: input,\n now: context.clock(),\n })\n return { kind: \"runtime\", input, source, inputPointCount, ontologyRevision, identity }\n}\n\nfunction prepareProjectionTelemetry(\n context: Pick<MaterializerContext, \"projectId\" | \"projectionRegistry\" | \"clock\">,\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number,\n ontologyRevision: string\n): Omit<PreparedProjectionTelemetry, \"execution\"> {\n const resolvedProjection = context.projectionRegistry.resolveTelemetry(\n source.projection.projectionId\n )\n validateTelemetryProjectionDataset(resolvedProjection, source)\n validateTelemetryOwnership(resolvedProjection, input)\n validateTelemetryBatchCardinality(resolvedProjection, source, inputPointCount)\n\n const runIdentity = createProjectionRunMaterializationIdentity({\n resolved: resolvedProjection,\n datasetVersion: source.datasetVersion,\n ontologyRevision,\n })\n const identity = createTimedCommitIdentity({\n projectId: context.projectId,\n idempotencyKey: createProjectionTelemetryIdempotencyKey(runIdentity, source.batchOrdinal),\n // Execution ownership is transient: a reclaimed delivery retains the same request hash.\n normalizedCallerIntent: projectionTelemetryCallerIntent(input, source, inputPointCount),\n now: context.clock(),\n })\n return {\n kind: \"projection\",\n input,\n source,\n inputPointCount,\n ontologyRevision,\n identity,\n resolvedProjection,\n runIdentity,\n }\n}\n\nfunction validateTelemetryBatchCardinality(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n): void {\n if (source.sourceRowCount === 0) {\n throw new MaterializationValidationError(\n \"Projection telemetry batches must consume at least one source row; an empty dataset produces no batch commit.\"\n )\n }\n\n const mappedPropertyCount = resolved.ownership.telemetry.length\n if (mappedPropertyCount === 0) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must own at least one telemetry property.`\n )\n }\n\n const sourceRowsEmitted = source.sourceRowCount - source.sourceRowsSkipped\n const maximumPointCount = sourceRowsEmitted * mappedPropertyCount\n if (!Number.isSafeInteger(maximumPointCount)) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' batch point capacity exceeds the safe integer range.`\n )\n }\n if (inputPointCount < sourceRowsEmitted || inputPointCount > maximumPointCount) {\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' must emit between ${sourceRowsEmitted} and ${maximumPointCount} points for ${source.sourceRowCount} source rows with ${source.sourceRowsSkipped} skipped.`\n )\n }\n}\n\nfunction validateTelemetryProjectionDataset(\n resolved: ResolvedTelemetryProjection,\n source: ProjectionTelemetrySource\n): void {\n if (resolved.datasetId === source.datasetVersion.datasetId) return\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' requires dataset '${resolved.datasetId}'.`\n )\n}\n\nfunction validateTelemetryOwnership(\n resolved: ResolvedTelemetryProjection,\n input: NormalizedTelemetryAppend\n): void {\n const ownedSeries = new Set(\n resolved.ownership.telemetry.map(({ objectTypeId, propertyId }) =>\n telemetryOwnershipKey(objectTypeId, propertyId)\n )\n )\n for (const point of input.points) {\n const scope = telemetryOwnershipKey(point.series.object.objectTypeId, point.series.propertyId)\n if (ownedSeries.has(scope)) continue\n throw new MaterializationValidationError(\n `Telemetry projection '${resolved.projectionId}' does not own series '${point.series.object.objectTypeId}.${point.series.propertyId}'.`\n )\n }\n}\n\nfunction projectionTelemetryCallerIntent(\n input: NormalizedTelemetryAppend,\n source: ProjectionTelemetrySource,\n inputPointCount: number\n) {\n const intent = {\n source: {\n kind: \"projection\" as const,\n projection: source.projection,\n datasetVersion: source.datasetVersion,\n batchOrdinal: source.batchOrdinal,\n sourceRowCount: source.sourceRowCount,\n sourceRowsSkipped: source.sourceRowsSkipped,\n inputExhausted: source.inputExhausted,\n },\n inputPointCount,\n points: input.points,\n }\n return intent\n}\n\nasync function assertTelemetryExecution(\n storage: MaterializerStorage,\n projectId: string,\n command: PreparedTelemetryAppend\n): Promise<LockedProjectionExecution | null> {\n if (command.kind === \"runtime\") {\n assertRuntimeMutationExecution(command.execution)\n return null\n }\n assertTrustedPrimitiveMutationExecution(command.execution, {\n kind: \"projection\",\n id: command.source.projection.projectionId,\n runId: command.source.execution.projectionRunId,\n })\n const execution = await lockProjectionRunForMaterialization(storage, {\n projectId,\n projectionRunId: command.source.execution.projectionRunId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n resolved: command.resolvedProjection,\n capabilityErrorMessage:\n \"Storage does not provide projection run capabilities required by telemetry projection.\",\n })\n assertMaterializerRunExecution(\n command.execution,\n execution.run.executionId,\n `Projection run '${execution.run.id}'`\n )\n assertTelemetryBatchPosition(\n execution.run,\n command.source.batchOrdinal,\n command.source.sourceRowCount,\n command.source.inputExhausted\n )\n return execution\n}\n\nfunction assertTelemetryBatchPosition(\n run: ProjectionRunRecord,\n batchOrdinal: number,\n sourceRowCount: number,\n inputExhausted: boolean\n): void {\n const checkpoint = run.telemetryCheckpoint\n if (!checkpoint) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has incomplete checkpoint state.`\n )\n }\n if (batchOrdinal > checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' expected batch ordinal ${checkpoint.nextBatchOrdinal}, got ${batchOrdinal}.`\n )\n }\n if (checkpoint.inputExhausted && batchOrdinal >= checkpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' has already exhausted its input.`\n )\n }\n if (sourceRowCount > checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' batch exceeds its fixed size.`\n )\n }\n if (!inputExhausted && sourceRowCount !== checkpoint.fixedBatchSize) {\n throw new MaterializationValidationError(\n `Telemetry projection run '${run.id}' cannot advance past a partial non-final batch.`\n )\n }\n}\n\nfunction assertTelemetryReplayCheckpoint(run: ProjectionRunRecord, batchOrdinal: number): void {\n if (!run.telemetryCheckpoint || batchOrdinal >= run.telemetryCheckpoint.nextBatchOrdinal) {\n throw new MaterializationValidationError(\n `Telemetry commit batch ${batchOrdinal} exists without an advanced run checkpoint.`\n )\n }\n}\n\nfunction telemetryProjectionReplayResult(\n commit: OntologyCommitRecord,\n command: PreparedProjectionTelemetry\n): TelemetryCommitResult {\n const origin = commit.origin\n if (\n origin.kind !== \"telemetry\" ||\n origin.source.kind !== \"projection\" ||\n origin.source.projectionRunId !== command.source.execution.projectionRunId ||\n origin.source.batchOrdinal !== command.source.batchOrdinal ||\n commit.result.kind !== \"telemetry\"\n ) {\n throw new MaterializationConflictError(\n \"run-correlation\",\n `Telemetry commit '${commit.id}' belongs to a different logical run or batch.`\n )\n }\n return { ...structuredClone(commit.result), created: false }\n}\n\nasync function executeTelemetryCommit(\n context: MaterializerContext,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n return withSerializationRetry(context, () =>\n context.storage.transaction(\n (storage) => executeTelemetryTransaction(context, storage, command),\n { isolation: \"serializable\" }\n )\n )\n}\n\nasync function executeTelemetryTransaction(\n context: MaterializerContext,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend\n): Promise<TelemetryCommitResult> {\n await ensureMaterializerExecution(storage.executions, command.execution)\n const execution = await assertTelemetryExecution(storage, context.projectId, command)\n const replay = await replayCommitRecord(\n context,\n command.identity,\n command.execution.executionId,\n storage\n )\n if (replay) {\n if (command.kind === \"projection\" && execution) {\n assertTelemetryReplayCheckpoint(execution.run, command.source.batchOrdinal)\n return telemetryProjectionReplayResult(replay, command)\n }\n return { ...structuredClone(replay.result), created: false } as TelemetryCommitResult\n }\n if (command.kind === \"projection\") {\n if (\n !execution?.run.telemetryCheckpoint ||\n execution.run.telemetryCheckpoint.nextBatchOrdinal !== command.source.batchOrdinal\n ) {\n throw new MaterializationValidationError(\n `Telemetry projection batch ${command.source.batchOrdinal} is behind its run checkpoint.`\n )\n }\n }\n\n const origin = telemetryOrigin(command)\n const session = await beginTelemetryMaterialization(context, storage, command, origin)\n const counts = await planTelemetryAppend(\n context,\n storage.ontology.materializations,\n session,\n command.input,\n command.identity,\n origin,\n {\n correlationId: command.execution.correlationId,\n attribution: command.execution.attribution,\n }\n )\n await drainStagedWork(context, storage, session)\n const eventCount = await drainStagedEvents(\n context,\n storage.ontology.materializations,\n session,\n command.identity\n )\n const result: TelemetryCommitResult = {\n kind: \"telemetry\",\n commitId: command.identity.commitId,\n created: true,\n eventCount,\n committedAt: command.identity.committedAt,\n ...counts,\n }\n return finalizeTelemetryMaterialization(\n storage,\n session,\n command,\n result,\n execution?.projectionRuns\n )\n}\n\nfunction telemetryOrigin(command: PreparedTelemetryAppend): OntologyMaterializationOrigin {\n if (command.kind === \"runtime\") {\n return { kind: \"telemetry\", source: command.source }\n }\n return {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projectionId: command.source.projection.projectionId,\n projectionRunId: command.source.execution.projectionRunId,\n datasetId: command.source.datasetVersion.datasetId,\n datasetVersionId: command.source.datasetVersion.versionId,\n batchOrdinal: command.source.batchOrdinal,\n },\n }\n}\n\nasync function beginTelemetryMaterialization(\n context: Pick<MaterializerContext, \"projectId\">,\n storage: MaterializerStorage,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): Promise<MaterializationSession> {\n return storage.ontology.materializations.begin({\n commit: telemetryCommit(context.projectId, command, origin),\n expected: {\n sources: [],\n objects: [],\n links: [],\n linkScopes: [],\n points: [],\n },\n })\n}\n\nfunction telemetryCommit(\n projectId: string,\n command: PreparedTelemetryAppend,\n origin: OntologyMaterializationOrigin\n): OntologyCommitWrite {\n const base: OntologyCommitWrite = {\n projectId,\n id: command.identity.commitId,\n idempotencyKey: command.identity.idempotencyKey,\n requestHash: command.identity.requestHash,\n executionId: command.execution.executionId,\n origin,\n ...command.execution.attribution,\n ontologyRevision: command.ontologyRevision,\n intent: telemetryCommitIntent(command),\n committedAt: command.identity.committedAt,\n }\n if (command.kind === \"runtime\") return base\n return {\n ...base,\n projectionRevision: command.resolvedProjection.projectionRevision,\n ownershipHash: command.resolvedProjection.ownershipHash,\n }\n}\n\nfunction telemetryCommitIntent(command: PreparedTelemetryAppend): TelemetryOntologyCommitIntent {\n if (command.kind === \"runtime\") {\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: { kind: \"runtime\" },\n }\n }\n return {\n kind: \"telemetry\",\n pointCount: command.input.points.length,\n inputPointCount: command.inputPointCount,\n source: {\n kind: \"projection\",\n projection: command.source.projection,\n datasetVersion: command.source.datasetVersion,\n batchOrdinal: command.source.batchOrdinal,\n sourceRowCount: command.source.sourceRowCount,\n sourceRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n },\n }\n}\n\nasync function finalizeTelemetryMaterialization(\n storage: MaterializerStorage,\n session: MaterializationSession,\n command: PreparedTelemetryAppend,\n result: TelemetryCommitResult,\n projectionRuns: ProjectionRunStorage | undefined\n): Promise<TelemetryCommitResult> {\n const applied = await storage.ontology.materializations.finalize({\n session,\n finalization: { sourceActivations: [], result },\n })\n if (command.kind === \"projection\") {\n if (!projectionRuns) {\n throw new MaterializationValidationError(\"Expected an asserted telemetry projection run.\")\n }\n await projectionRuns.advanceTelemetryCheckpoint({\n id: command.source.execution.projectionRunId,\n projectId: applied.commit.projectId,\n executionToken: command.source.execution.executionToken,\n identity: command.runIdentity,\n batchOrdinal: command.source.batchOrdinal,\n batchRowCount: command.source.sourceRowCount,\n batchRowsSkipped: command.source.sourceRowsSkipped,\n inputExhausted: command.source.inputExhausted,\n })\n }\n return applied.commit.result as TelemetryCommitResult\n}\n",
|
|
44
45
|
"import type { ExecutionScope } from \"../execution\"\nimport type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { OntologyRegistry } from \"../ontology\"\nimport type { ProjectionRegistry } from \"../projections/registry\"\nimport type { OntologySourceRecord } from \"../storage/ontology\"\nimport {\n createMaterializerContext,\n type MaterializerContext,\n type MaterializerStorage,\n type OntologyMaterializerDependencies,\n} from \"./context\"\nimport { commitEdits } from \"./edits/commit\"\nimport { finishProjectionRun } from \"./projections/finish-run\"\nimport { replaceProjection } from \"./projections/replace\"\nimport { appendTelemetry } from \"./telemetry/append\"\n\nexport type { MaterializerStorage, OntologyMaterializerDependencies } from \"./context\"\n\nexport interface MaterializerCommand<TInput> {\n readonly scope: ExecutionScope\n readonly input: TInput\n}\n\nexport interface OntologyMaterializerContract {\n withScope(scope: ExecutionScope): BoundOntologyMaterializer\n readonly edits: {\n commit(input: MaterializerCommand<OntologyEditCommit>): Promise<EditCommitResult>\n }\n readonly projections: {\n getActive(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n replace(\n input: MaterializerCommand<ProjectionSourceReplacement>\n ): Promise<ProjectionCommitResult>\n finishRun(input: MaterializerCommand<ProjectionRunFinishInput>): Promise<void>\n }\n readonly telemetry: {\n append(input: MaterializerCommand<TelemetryAppend>): Promise<TelemetryCommitResult>\n }\n}\n\n/** Materializer facade closed over one explicit execution scope. */\nexport interface BoundOntologyMaterializer {\n readonly edits: {\n commit(input: OntologyEditCommit): Promise<EditCommitResult>\n }\n readonly projections: {\n getActive(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n replace(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishRun(input: ProjectionRunFinishInput): Promise<void>\n }\n readonly telemetry: {\n append(input: TelemetryAppend): Promise<TelemetryCommitResult>\n }\n}\n\nexport class OntologyMaterializer implements OntologyMaterializerContract {\n readonly edits = {\n commit: (command: MaterializerCommand<OntologyEditCommit>) =>\n commitEdits(this.context, command),\n }\n readonly projections = {\n getActive: (source: ProjectionSourceRef) =>\n this.context.storage.ontology.sources.getActive({\n projectId: this.context.projectId,\n source,\n }),\n replace: (command: MaterializerCommand<ProjectionSourceReplacement>) =>\n replaceProjection(this.context, command),\n finishRun: (command: MaterializerCommand<ProjectionRunFinishInput>) =>\n finishProjectionRun(this.context, command),\n }\n readonly telemetry = {\n append: (command: MaterializerCommand<TelemetryAppend>) =>\n appendTelemetry(this.context, command),\n }\n\n withScope(scope: ExecutionScope): BoundOntologyMaterializer {\n return Object.freeze({\n edits: Object.freeze({\n commit: (input: OntologyEditCommit) => this.edits.commit({ scope, input }),\n }),\n projections: Object.freeze({\n getActive: (source: ProjectionSourceRef) => this.projections.getActive(source),\n replace: (input: ProjectionSourceReplacement) => this.projections.replace({ scope, input }),\n finishRun: (input: ProjectionRunFinishInput) =>\n this.projections.finishRun({ scope, input }),\n }),\n telemetry: Object.freeze({\n append: (input: TelemetryAppend) => this.telemetry.append({ scope, input }),\n }),\n })\n }\n\n private readonly context: MaterializerContext\n\n constructor(\n projectId: string,\n ontology: OntologyRegistry,\n projectionRegistry: ProjectionRegistry,\n storage: MaterializerStorage,\n dependencies: OntologyMaterializerDependencies = {}\n ) {\n this.context = createMaterializerContext({\n projectId,\n ontology,\n projections: projectionRegistry,\n storage,\n dependencies,\n })\n }\n}\n\nexport function createOntologyMaterializer(input: {\n readonly projectId: string\n readonly ontology: OntologyRegistry\n readonly projections: ProjectionRegistry\n readonly storage: MaterializerStorage\n readonly dependencies?: OntologyMaterializerDependencies\n}): OntologyMaterializer {\n return new OntologyMaterializer(\n input.projectId,\n input.ontology,\n input.projections,\n input.storage,\n input.dependencies\n )\n}\n"
|
|
45
46
|
],
|
|
46
|
-
"mappings": "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",
|
|
47
|
-
"debugId": "
|
|
47
|
+
"mappings": "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",
|
|
48
|
+
"debugId": "61B9FC5452B219F064756E2164756E21",
|
|
48
49
|
"names": []
|
|
49
50
|
}
|