@sixb/core 0.1.0 → 0.1.2
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/README.md +54 -23
- package/dist/actions/commit-edits.d.ts +0 -2
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/execution.d.ts +21 -0
- package/dist/actions/execution.d.ts.map +1 -0
- package/dist/actions/index.d.ts +1 -1
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +34 -23
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts +16 -7
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/request.d.ts +3 -2
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-dispatch.d.ts +21 -0
- package/dist/actions/run-dispatch.d.ts.map +1 -0
- package/dist/actions/types/context.d.ts +2 -2
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +4 -4
- package/dist/actions/worker.js.map +1 -1
- package/dist/agents/adapters.d.ts +10 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +31 -0
- package/dist/agents/authority.d.ts.map +1 -0
- package/dist/agents/builders.d.ts +8 -1
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/context.js +2 -2
- package/dist/agents/dispatch.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +16 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +45 -0
- package/dist/agents/execution.d.ts.map +1 -0
- package/dist/agents/index.d.ts +10 -10
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +81 -14
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/request.d.ts +6 -2
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams.d.ts +29 -3
- package/dist/agents/streams.d.ts.map +1 -1
- package/dist/agents/streams.js +22 -3
- package/dist/agents/streams.js.map +1 -1
- package/dist/agents/tool-definition.d.ts +9 -0
- package/dist/agents/tool-definition.d.ts.map +1 -0
- package/dist/agents/types.d.ts +64 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +16 -3
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/attribution.d.ts +17 -0
- package/dist/auth/attribution.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +9 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +4 -4
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +24 -11
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -1
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +8 -4
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/browser.js +3 -2
- package/dist/blob-storage/browser.js.map +1 -1
- package/dist/blob-storage/execution.d.ts +16 -0
- package/dist/blob-storage/execution.d.ts.map +1 -0
- package/dist/blob-storage/index.js +4 -3
- package/dist/blob-storage/index.js.map +1 -1
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/discovery.d.ts +90 -24
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +59 -59
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/broker/in-memory.d.ts.map +1 -1
- package/dist/broker/index.js +2 -2
- package/dist/broker/types.d.ts +5 -0
- package/dist/broker/types.d.ts.map +1 -1
- package/dist/chunk-0172wgm9.js +333 -0
- package/dist/chunk-0172wgm9.js.map +11 -0
- package/dist/chunk-0k4avqr2.js +317 -0
- package/dist/chunk-0k4avqr2.js.map +11 -0
- package/dist/chunk-0mbx247x.js +2922 -0
- package/dist/chunk-0mbx247x.js.map +43 -0
- package/dist/chunk-34bqh420.js +1168 -0
- package/dist/chunk-34bqh420.js.map +23 -0
- package/dist/{chunk-mx84y05q.js → chunk-3j7573mj.js} +2 -2
- package/dist/{chunk-mx84y05q.js.map → chunk-3j7573mj.js.map} +2 -2
- package/dist/{chunk-45tw90k7.js → chunk-4gz41why.js} +1 -1
- package/dist/chunk-4x43bkbp.js +55 -0
- package/dist/chunk-4x43bkbp.js.map +11 -0
- package/dist/{chunk-xqbtf4wn.js → chunk-57r1cpxx.js} +3 -2
- package/dist/{chunk-xqbtf4wn.js.map → chunk-57r1cpxx.js.map} +3 -3
- package/dist/chunk-57zpb99z.js +194 -0
- package/dist/chunk-57zpb99z.js.map +10 -0
- package/dist/{chunk-dhmj53mx.js → chunk-5egfka8j.js} +13 -33
- package/dist/chunk-5egfka8j.js.map +15 -0
- package/dist/chunk-5gd7tpv6.js +28 -0
- package/dist/chunk-5gd7tpv6.js.map +11 -0
- package/dist/{chunk-867jxh7c.js → chunk-5sz8ta9r.js} +6 -295
- package/dist/chunk-5sz8ta9r.js.map +16 -0
- package/dist/chunk-62c7t4jc.js +27 -0
- package/dist/chunk-62c7t4jc.js.map +11 -0
- package/dist/{chunk-8r8cw2xw.js → chunk-63te770v.js} +40 -5
- package/dist/{chunk-8r8cw2xw.js.map → chunk-63te770v.js.map} +3 -3
- package/dist/chunk-663csy96.js +34 -0
- package/dist/chunk-663csy96.js.map +10 -0
- package/dist/{chunk-xz5g49bp.js → chunk-6gjqgd3d.js} +3 -1
- package/dist/chunk-6gjqgd3d.js.map +11 -0
- package/dist/chunk-7pc8b818.js +128 -0
- package/dist/chunk-7pc8b818.js.map +13 -0
- package/dist/{chunk-f2b5e2gf.js → chunk-85j5ybfj.js} +18 -3
- package/dist/{chunk-f2b5e2gf.js.map → chunk-85j5ybfj.js.map} +3 -3
- package/dist/{chunk-vj723r3p.js → chunk-8b55ygje.js} +1 -1
- package/dist/chunk-8m5ejdpn.js +33 -0
- package/dist/chunk-8m5ejdpn.js.map +10 -0
- package/dist/chunk-8ryen3p3.js +118 -0
- package/dist/chunk-8ryen3p3.js.map +10 -0
- package/dist/chunk-979ww6b3.js +298 -0
- package/dist/chunk-979ww6b3.js.map +12 -0
- package/dist/{chunk-ya6brh8a.js → chunk-9t8f5xfx.js} +10 -5
- package/dist/chunk-9t8f5xfx.js.map +11 -0
- package/dist/{chunk-r65yscvk.js → chunk-a31h57d5.js} +131 -13
- package/dist/chunk-a31h57d5.js.map +13 -0
- package/dist/chunk-bct7hmfc.js +402 -0
- package/dist/chunk-bct7hmfc.js.map +14 -0
- package/dist/chunk-bh6k3nc6.js +164 -0
- package/dist/chunk-bh6k3nc6.js.map +12 -0
- package/dist/{chunk-t72dvahb.js → chunk-bhxaq2nn.js} +61 -44
- package/dist/chunk-bhxaq2nn.js.map +12 -0
- package/dist/{chunk-jdwx7vzs.js → chunk-c6qd89g5.js} +240 -143
- package/dist/chunk-c6qd89g5.js.map +15 -0
- package/dist/{chunk-2s6sydsh.js → chunk-ckxfnx7f.js} +294 -4
- package/dist/chunk-ckxfnx7f.js.map +13 -0
- package/dist/chunk-cy0n5dms.js +27 -0
- package/dist/chunk-cy0n5dms.js.map +11 -0
- package/dist/chunk-dsrkgtnh.js +50 -0
- package/dist/chunk-dsrkgtnh.js.map +10 -0
- package/dist/{chunk-50kv63vj.js → chunk-dysw7nsm.js} +118 -26
- package/dist/chunk-dysw7nsm.js.map +14 -0
- package/dist/chunk-ezake7g1.js +32 -0
- package/dist/chunk-ezake7g1.js.map +11 -0
- package/dist/{chunk-yxss87qa.js → chunk-f2rt4vkh.js} +48 -29
- package/dist/chunk-f2rt4vkh.js.map +14 -0
- package/dist/{chunk-q4qzq0ea.js → chunk-fmx1sz2h.js} +117 -56
- package/dist/chunk-fmx1sz2h.js.map +15 -0
- package/dist/chunk-g9t3kdtx.js +90 -0
- package/dist/chunk-g9t3kdtx.js.map +10 -0
- package/dist/{chunk-c3zd880g.js → chunk-ghteq96b.js} +8 -8
- package/dist/{chunk-c3zd880g.js.map → chunk-ghteq96b.js.map} +4 -4
- package/dist/chunk-h9kxd41f.js +271 -0
- package/dist/chunk-h9kxd41f.js.map +11 -0
- package/dist/chunk-htq0qh7z.js +59 -0
- package/dist/chunk-htq0qh7z.js.map +11 -0
- package/dist/{chunk-dcgrzj1t.js → chunk-jaj13078.js} +121 -9
- package/dist/chunk-jaj13078.js.map +38 -0
- package/dist/{chunk-t358gywy.js → chunk-k9pts48t.js} +81 -58
- package/dist/chunk-k9pts48t.js.map +35 -0
- package/dist/chunk-n8herkry.js +3294 -0
- package/dist/chunk-n8herkry.js.map +35 -0
- package/dist/chunk-nf4r78r4.js +44 -0
- package/dist/chunk-nf4r78r4.js.map +10 -0
- package/dist/{chunk-2gpr6jsz.js → chunk-nnyp53zt.js} +14 -34
- package/dist/chunk-nnyp53zt.js.map +13 -0
- package/dist/chunk-nten49ta.js +404 -0
- package/dist/chunk-nten49ta.js.map +12 -0
- package/dist/chunk-qvybnnpe.js +137 -0
- package/dist/chunk-qvybnnpe.js.map +10 -0
- package/dist/{chunk-tsk2bxs3.js → chunk-rnshztfq.js} +13 -13
- package/dist/{chunk-tsk2bxs3.js.map → chunk-rnshztfq.js.map} +3 -3
- package/dist/chunk-sa4340y1.js +607 -0
- package/dist/chunk-sa4340y1.js.map +14 -0
- package/dist/{chunk-yvef9xwc.js → chunk-st4xgxey.js} +583 -251
- package/dist/chunk-st4xgxey.js.map +45 -0
- package/dist/{chunk-1vffvydj.js → chunk-t8t39h7v.js} +6 -6
- package/dist/chunk-t8t39h7v.js.map +10 -0
- package/dist/chunk-t9xghkva.js +28 -0
- package/dist/chunk-t9xghkva.js.map +10 -0
- package/dist/chunk-vp1vc6ee.js +35 -0
- package/dist/chunk-vp1vc6ee.js.map +11 -0
- package/dist/{chunk-p6r5g77m.js → chunk-vybf6pkp.js} +1 -1
- package/dist/{chunk-wj01s5hr.js → chunk-wtmzkcht.js} +4 -3
- package/dist/chunk-wtmzkcht.js.map +11 -0
- package/dist/{chunk-v5c085yp.js → chunk-xhy826cz.js} +3 -2
- package/dist/chunk-xhy826cz.js.map +10 -0
- package/dist/chunk-xkthy56g.js +33 -0
- package/dist/chunk-xkthy56g.js.map +11 -0
- package/dist/{chunk-aebzcsxr.js → chunk-ys1nse2v.js} +2178 -382
- package/dist/chunk-ys1nse2v.js.map +56 -0
- package/dist/{chunk-5yny9z0e.js → chunk-z3zp0bj1.js} +1 -1
- package/dist/chunk-zcnhxkvd.js +7 -0
- package/dist/chunk-zcnhxkvd.js.map +10 -0
- package/dist/chunk-zg9yryhz.js +252 -0
- package/dist/chunk-zg9yryhz.js.map +12 -0
- package/dist/chunk-zqqz8052.js +3 -0
- package/dist/{storage/projection-runs/lifecycle.js.map → chunk-zqqz8052.js.map} +1 -1
- package/dist/{chunk-4pycxcj3.js → chunk-zqysyfjt.js} +6 -9
- package/dist/{chunk-4pycxcj3.js.map → chunk-zqysyfjt.js.map} +3 -3
- package/dist/connectors/builders.d.ts +2 -1
- package/dist/connectors/builders.d.ts.map +1 -1
- package/dist/connectors/connections/authorizations.d.ts +64 -0
- package/dist/connectors/connections/authorizations.d.ts.map +1 -0
- package/dist/connectors/connections/capability.d.ts +7 -0
- package/dist/connectors/connections/capability.d.ts.map +1 -0
- package/dist/connectors/connections/command-context.d.ts +23 -0
- package/dist/connectors/connections/command-context.d.ts.map +1 -0
- package/dist/connectors/connections/contracts.d.ts +127 -0
- package/dist/connectors/connections/contracts.d.ts.map +1 -0
- package/dist/connectors/connections/credential-codec.d.ts +15 -0
- package/dist/connectors/connections/credential-codec.d.ts.map +1 -0
- package/dist/connectors/connections/credential-mutations.d.ts +63 -0
- package/dist/connectors/connections/credential-mutations.d.ts.map +1 -0
- package/dist/connectors/connections/execution.d.ts +20 -0
- package/dist/connectors/connections/execution.d.ts.map +1 -0
- package/dist/connectors/connections/internal.d.ts +5 -0
- package/dist/connectors/connections/internal.d.ts.map +1 -0
- package/dist/connectors/connections/internal.js +16 -0
- package/dist/connectors/connections/internal.js.map +9 -0
- package/dist/connectors/connections/provider-operation.d.ts +7 -0
- package/dist/connectors/connections/provider-operation.d.ts.map +1 -0
- package/dist/connectors/connections/request.d.ts +84 -0
- package/dist/connectors/connections/request.d.ts.map +1 -0
- package/dist/connectors/connections/runs.d.ts +51 -0
- package/dist/connectors/connections/runs.d.ts.map +1 -0
- package/dist/connectors/connections/service.d.ts +52 -0
- package/dist/connectors/connections/service.d.ts.map +1 -0
- package/dist/connectors/connections/storage-boundary.d.ts +3 -0
- package/dist/connectors/connections/storage-boundary.d.ts.map +1 -0
- package/dist/connectors/connections/tokens.d.ts +32 -0
- package/dist/connectors/connections/tokens.d.ts.map +1 -0
- package/dist/connectors/connections/validation.d.ts +27 -0
- package/dist/connectors/connections/validation.d.ts.map +1 -0
- package/dist/connectors/connections/views.d.ts +7 -0
- package/dist/connectors/connections/views.d.ts.map +1 -0
- package/dist/connectors/credentials.d.ts +25 -0
- package/dist/connectors/credentials.d.ts.map +1 -0
- package/dist/connectors/errors.d.ts +35 -3
- package/dist/connectors/errors.d.ts.map +1 -1
- package/dist/connectors/execution.d.ts +19 -0
- package/dist/connectors/execution.d.ts.map +1 -0
- package/dist/connectors/index.d.ts +5 -3
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/service.d.ts +23 -0
- package/dist/connectors/service.d.ts.map +1 -0
- package/dist/connectors/types.d.ts +94 -2
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/datasets/builders.d.ts +18 -5
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/changes.d.ts +18 -0
- package/dist/datasets/changes.d.ts.map +1 -0
- package/dist/datasets/execution.d.ts +8 -0
- package/dist/datasets/execution.d.ts.map +1 -0
- package/dist/datasets/index.d.ts +3 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/error-reporting/capability.d.ts +4 -49
- package/dist/error-reporting/capability.d.ts.map +1 -1
- package/dist/error-reporting/internal.d.ts +2 -2
- package/dist/error-reporting/internal.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +10 -4
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/error-reporting/reporter.d.ts +4 -1
- package/dist/error-reporting/reporter.d.ts.map +1 -1
- package/dist/error-reporting/reports.d.ts +64 -0
- package/dist/error-reporting/reports.d.ts.map +1 -0
- package/dist/error-reporting/types.d.ts +88 -34
- package/dist/error-reporting/types.d.ts.map +1 -1
- package/dist/errors/catalog.d.ts +141 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/internal.d.ts +68 -0
- package/dist/errors/internal.d.ts.map +1 -0
- package/dist/errors/internal.js +29 -0
- package/dist/errors/internal.js.map +9 -0
- package/dist/errors/types.d.ts +20 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/events/definitions.d.ts +0 -1
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts +13 -0
- package/dist/events/execution.d.ts.map +1 -0
- package/dist/events/index.d.ts +3 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +10 -8
- package/dist/events/index.js.map +1 -1
- package/dist/events/outbox-dispatcher.d.ts +4 -2
- package/dist/events/outbox-dispatcher.d.ts.map +1 -1
- package/dist/events/{runtime.d.ts → service.d.ts} +13 -14
- package/dist/events/service.d.ts.map +1 -0
- package/dist/events/types/pipelines.d.ts +4 -1
- package/dist/events/types/pipelines.d.ts.map +1 -1
- package/dist/events/types/syncs.d.ts +3 -0
- package/dist/events/types/syncs.d.ts.map +1 -1
- package/dist/events/types/workflows.d.ts +4 -2
- package/dist/events/types/workflows.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +42 -0
- package/dist/execution/agent.d.ts.map +1 -0
- package/dist/execution/agent.js +70 -0
- package/dist/execution/agent.js.map +9 -0
- package/dist/execution/authorization.d.ts +60 -0
- package/dist/execution/authorization.d.ts.map +1 -0
- package/dist/execution/dispatch.d.ts +8 -0
- package/dist/execution/dispatch.d.ts.map +1 -0
- package/dist/execution/durable.d.ts +37 -0
- package/dist/execution/durable.d.ts.map +1 -0
- package/dist/execution/index.d.ts +2 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/primitive.d.ts +21 -0
- package/dist/execution/primitive.d.ts.map +1 -0
- package/dist/execution/primitive.js +88 -0
- package/dist/execution/primitive.js.map +10 -0
- package/dist/execution/request.d.ts +38 -0
- package/dist/execution/request.d.ts.map +1 -0
- package/dist/execution/request.js +97 -0
- package/dist/execution/request.js.map +10 -0
- package/dist/execution/scopes.d.ts +30 -0
- package/dist/execution/scopes.d.ts.map +1 -0
- package/dist/execution/types.d.ts +111 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +35 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +142 -111
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +8 -2
- package/dist/json.d.ts.map +1 -1
- package/dist/lake-storage/definition-updates.d.ts.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +15 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +3 -1
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +15 -7
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/merge-validation.d.ts +10 -0
- package/dist/lake-storage/merge-validation.d.ts.map +1 -0
- package/dist/lake-storage/merge.d.ts +32 -0
- package/dist/lake-storage/merge.d.ts.map +1 -0
- package/dist/lake-storage/types.d.ts +3 -1
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/logging/execution.d.ts +9 -0
- package/dist/logging/execution.d.ts.map +1 -0
- package/dist/logging/index.d.ts +1 -1
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +8 -8
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/{runtime.d.ts → service.d.ts} +7 -7
- package/dist/logging/{runtime.d.ts.map → service.d.ts.map} +1 -1
- package/dist/logging/types.js +2 -2
- package/dist/materialization/events.d.ts +1 -0
- package/dist/materialization/events.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +2 -2
- package/dist/materialization/model.d.ts +26 -17
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts +2 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/load-state.d.ts +1 -1
- package/dist/materializer/edits/load-state.d.ts.map +1 -1
- package/dist/materializer/edits/operations.d.ts +1 -13
- package/dist/materializer/edits/operations.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts +2 -1
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/working-state.d.ts +36 -8
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/effective/build-events.d.ts +1 -0
- package/dist/materializer/effective/build-events.d.ts.map +1 -1
- package/dist/materializer/effective/diff.d.ts +7 -0
- package/dist/materializer/effective/diff.d.ts.map +1 -1
- package/dist/materializer/effective/load-state.d.ts +0 -2
- package/dist/materializer/effective/load-state.d.ts.map +1 -1
- package/dist/materializer/effective/resolve.d.ts +17 -2
- package/dist/materializer/effective/resolve.d.ts.map +1 -1
- package/dist/materializer/execution/commit-lifecycle.d.ts +2 -2
- package/dist/materializer/execution/commit-lifecycle.d.ts.map +1 -1
- package/dist/materializer/execution/plan-stream.d.ts.map +1 -1
- package/dist/materializer/execution/scope.d.ts +26 -0
- package/dist/materializer/execution/scope.d.ts.map +1 -0
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +6 -5
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.d.ts +2 -2
- package/dist/materializer/index.d.ts.map +1 -1
- package/dist/materializer/index.js +30 -18
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/materializer.d.ts +37 -5
- package/dist/materializer/materializer.d.ts.map +1 -1
- package/dist/materializer/projections/finish-run.d.ts +2 -1
- package/dist/materializer/projections/finish-run.d.ts.map +1 -1
- package/dist/materializer/projections/replace.d.ts +2 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts +1 -0
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/batching.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/materializer/telemetry/append.d.ts +2 -1
- package/dist/materializer/telemetry/append.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts +7 -1
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/objects/action/request.d.ts +3 -3
- package/dist/objects/action/request.d.ts.map +1 -1
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +5 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +100 -0
- package/dist/objects/execution.d.ts.map +1 -0
- package/dist/objects/index.js +37 -24
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/query/executor.d.ts +3 -8
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -2
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +9 -13
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/planner.d.ts +0 -3
- package/dist/objects/query/planner.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts +2 -0
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
- package/dist/objects/service/action-service.d.ts +3 -2
- package/dist/objects/service/action-service.d.ts.map +1 -1
- package/dist/objects/service/list-service.d.ts +1 -1
- package/dist/objects/telemetry/history.d.ts +2 -0
- package/dist/objects/telemetry/history.d.ts.map +1 -1
- package/dist/objects/telemetry/write-batch.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +1 -1
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +5 -5
- package/dist/ontology/internal.js +7 -6
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/registry.d.ts +15 -2
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/validation/normalize.d.ts.map +1 -1
- package/dist/pipelines/execution.d.ts +19 -0
- package/dist/pipelines/execution.d.ts.map +1 -0
- package/dist/pipelines/index.d.ts +1 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +66 -0
- package/dist/pipelines/index.js.map +9 -0
- package/dist/pipelines/request.d.ts +6 -9
- package/dist/pipelines/request.d.ts.map +1 -1
- package/dist/pipelines/run-dispatch.d.ts +47 -0
- package/dist/pipelines/run-dispatch.d.ts.map +1 -0
- package/dist/projections/builders.d.ts +0 -2
- package/dist/projections/builders.d.ts.map +1 -1
- package/dist/projections/capability.d.ts +7 -0
- package/dist/projections/capability.d.ts.map +1 -0
- package/dist/projections/execution.d.ts +19 -0
- package/dist/projections/execution.d.ts.map +1 -0
- package/dist/projections/index.d.ts +3 -1
- package/dist/projections/index.d.ts.map +1 -1
- package/dist/projections/internal.d.ts +4 -10
- package/dist/projections/internal.d.ts.map +1 -1
- package/dist/projections/internal.js +42 -6
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/ownership.d.ts +2 -2
- package/dist/projections/ownership.d.ts.map +1 -1
- package/dist/projections/registry.d.ts +21 -11
- package/dist/projections/registry.d.ts.map +1 -1
- package/dist/projections/revision.d.ts +2 -2
- package/dist/projections/revision.d.ts.map +1 -1
- package/dist/projections/run-dispatch.d.ts +37 -0
- package/dist/projections/run-dispatch.d.ts.map +1 -0
- package/dist/projections/run-id.d.ts +3 -0
- package/dist/projections/run-id.d.ts.map +1 -0
- package/dist/projections/types.d.ts +3 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/projections/validation.d.ts +2 -2
- package/dist/projections/validation.d.ts.map +1 -1
- package/dist/queues/in-memory.d.ts +11 -10
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.d.ts +1 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +52 -42
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/rules/execution.d.ts +14 -0
- package/dist/rules/execution.d.ts.map +1 -0
- package/dist/rules/index.d.ts +1 -1
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/validation.d.ts +1 -2
- package/dist/rules/validation.d.ts.map +1 -1
- package/dist/runtime/ai-usage.d.ts +8 -0
- package/dist/runtime/ai-usage.d.ts.map +1 -0
- package/dist/runtime/create.d.ts +7 -5
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +35 -0
- package/dist/runtime/definitions.d.ts.map +1 -0
- package/dist/runtime/host.d.ts +123 -0
- package/dist/runtime/host.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +6 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +4 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +6 -2
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/ontology-mutations.d.ts +4 -2
- package/dist/runtime/ontology-mutations.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts +42 -0
- package/dist/runtime/resolve-definitions.d.ts.map +1 -0
- package/dist/runtime/sixb.d.ts +43 -219
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +16 -216
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +3 -6
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/runtime.d.ts +7 -2
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/schedules/execution.d.ts +6 -0
- package/dist/schedules/execution.d.ts.map +1 -0
- package/dist/schedules/index.js +9 -7
- package/dist/schedules/index.js.map +1 -1
- package/dist/schedules/types.d.ts +1 -3
- package/dist/schedules/types.d.ts.map +1 -1
- package/dist/security/every.d.ts +4 -1
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +4 -1
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +3 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/registry.d.ts +42 -0
- package/dist/security/registry.d.ts.map +1 -0
- package/dist/security/types.d.ts +7 -12
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +2 -0
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/storage/action-runs/failure.d.ts +7 -0
- package/dist/storage/action-runs/failure.d.ts.map +1 -0
- package/dist/storage/action-runs/failure.js +14 -0
- package/dist/storage/action-runs/failure.js.map +9 -0
- package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
- package/dist/storage/action-runs/in-memory.d.ts +3 -1
- package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/action-runs/index.d.ts +2 -1
- package/dist/storage/action-runs/index.d.ts.map +1 -1
- package/dist/storage/action-runs/provider.d.ts +10 -0
- package/dist/storage/action-runs/provider.d.ts.map +1 -0
- package/dist/storage/action-runs/provider.js +13 -0
- package/dist/storage/action-runs/provider.js.map +9 -0
- package/dist/storage/action-runs/types.d.ts +37 -18
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/errors.d.ts +1 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +4 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +2 -2
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +10 -0
- package/dist/storage/agents/provider.d.ts.map +1 -0
- package/dist/storage/agents/provider.js +17 -0
- package/dist/storage/agents/provider.js.map +9 -0
- package/dist/storage/agents/types.d.ts +13 -22
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/errors.d.ts +8 -0
- package/dist/storage/ai-usage/errors.d.ts.map +1 -0
- package/dist/storage/ai-usage/in-memory.d.ts +28 -0
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -0
- package/dist/storage/ai-usage/index.d.ts +8 -0
- package/dist/storage/ai-usage/index.d.ts.map +1 -0
- package/dist/storage/ai-usage/record.d.ts +6 -0
- package/dist/storage/ai-usage/record.d.ts.map +1 -0
- package/dist/storage/ai-usage/types.d.ts +89 -0
- package/dist/storage/ai-usage/types.d.ts.map +1 -0
- package/dist/storage/ai-usage/usage.d.ts +11 -0
- package/dist/storage/ai-usage/usage.d.ts.map +1 -0
- package/dist/storage/auth/types.d.ts +1 -0
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/errors.d.ts +12 -0
- package/dist/storage/connector-connections/errors.d.ts.map +1 -0
- package/dist/storage/connector-connections/in-memory.d.ts +81 -0
- package/dist/storage/connector-connections/in-memory.d.ts.map +1 -0
- package/dist/storage/connector-connections/index.d.ts +7 -0
- package/dist/storage/connector-connections/index.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider/authorizations.d.ts +20 -0
- package/dist/storage/connector-connections/provider/authorizations.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider/connections.d.ts +17 -0
- package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider/runs.d.ts +14 -0
- package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider/shared.d.ts +74 -0
- package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider.d.ts +49 -0
- package/dist/storage/connector-connections/provider.d.ts.map +1 -0
- package/dist/storage/connector-connections/provider.js +1025 -0
- package/dist/storage/connector-connections/provider.js.map +14 -0
- package/dist/storage/connector-connections/types.d.ts +402 -0
- package/dist/storage/connector-connections/types.d.ts.map +1 -0
- package/dist/storage/executions/errors.d.ts +8 -0
- package/dist/storage/executions/errors.d.ts.map +1 -0
- package/dist/storage/executions/in-memory.d.ts +21 -0
- package/dist/storage/executions/in-memory.d.ts.map +1 -0
- package/dist/storage/executions/index.d.ts +5 -0
- package/dist/storage/executions/index.d.ts.map +1 -0
- package/dist/storage/executions/provider.d.ts +29 -0
- package/dist/storage/executions/provider.d.ts.map +1 -0
- package/dist/storage/executions/provider.js +208 -0
- package/dist/storage/executions/provider.js.map +10 -0
- package/dist/storage/executions/run-link.d.ts +24 -0
- package/dist/storage/executions/run-link.d.ts.map +1 -0
- package/dist/storage/executions/types.d.ts +62 -0
- package/dist/storage/executions/types.d.ts.map +1 -0
- package/dist/storage/executions/validation.d.ts +13 -0
- package/dist/storage/executions/validation.d.ts.map +1 -0
- package/dist/storage/in-memory/index.d.ts +20 -5
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +28 -17
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +90 -27
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -0
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +1 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-state.d.ts +3 -2
- package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations-work.d.ts +2 -2
- package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +3 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -2
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +3 -2
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +50 -5
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +8 -2
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +5 -22
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +6 -7
- 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/pipeline-runs/idempotency.d.ts +3 -0
- package/dist/storage/pipeline-runs/idempotency.d.ts.map +1 -0
- package/dist/storage/pipeline-runs/in-memory.d.ts +5 -1
- package/dist/storage/pipeline-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/pipeline-runs/index.d.ts +3 -1
- package/dist/storage/pipeline-runs/index.d.ts.map +1 -1
- package/dist/storage/pipeline-runs/provider.d.ts +10 -0
- package/dist/storage/pipeline-runs/provider.d.ts.map +1 -0
- package/dist/storage/pipeline-runs/provider.js +11 -0
- package/dist/storage/pipeline-runs/provider.js.map +9 -0
- package/dist/storage/pipeline-runs/types.d.ts +30 -14
- package/dist/storage/pipeline-runs/types.d.ts.map +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +8 -3
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/index.d.ts +2 -2
- package/dist/storage/projection-runs/index.d.ts.map +1 -1
- package/dist/storage/projection-runs/lifecycle.d.ts +14 -8
- package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.d.ts +13 -0
- package/dist/storage/projection-runs/provider.d.ts.map +1 -0
- package/dist/storage/projection-runs/{lifecycle.js → provider.js} +15 -4
- package/dist/storage/projection-runs/provider.js.map +9 -0
- package/dist/storage/projection-runs/types.d.ts +28 -11
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/run-listing.d.ts +8 -9
- package/dist/storage/run-listing.d.ts.map +1 -1
- package/dist/storage/sync-runs/idempotency.d.ts +3 -0
- package/dist/storage/sync-runs/idempotency.d.ts.map +1 -0
- package/dist/storage/sync-runs/in-memory.d.ts +5 -1
- package/dist/storage/sync-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/sync-runs/index.d.ts +3 -1
- package/dist/storage/sync-runs/index.d.ts.map +1 -1
- package/dist/storage/sync-runs/provider.d.ts +10 -0
- package/dist/storage/sync-runs/provider.d.ts.map +1 -0
- package/dist/storage/sync-runs/provider.js +11 -0
- package/dist/storage/sync-runs/provider.js.map +9 -0
- package/dist/storage/sync-runs/types.d.ts +35 -14
- package/dist/storage/sync-runs/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +20 -15
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/webhook-runs/errors.d.ts +3 -0
- package/dist/storage/webhook-runs/errors.d.ts.map +1 -1
- package/dist/storage/webhook-runs/in-memory.d.ts +13 -1
- package/dist/storage/webhook-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/webhook-runs/index.d.ts +3 -2
- package/dist/storage/webhook-runs/index.d.ts.map +1 -1
- package/dist/storage/webhook-runs/provider.d.ts +10 -0
- package/dist/storage/webhook-runs/provider.d.ts.map +1 -0
- package/dist/storage/webhook-runs/provider.js +11 -0
- package/dist/storage/webhook-runs/provider.js.map +9 -0
- package/dist/storage/webhook-runs/types.d.ts +37 -11
- package/dist/storage/webhook-runs/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts +6 -2
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/index.d.ts +2 -1
- package/dist/storage/workflow-runs/index.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.d.ts +19 -0
- package/dist/storage/workflow-runs/provider.d.ts.map +1 -0
- package/dist/storage/workflow-runs/provider.js +19 -0
- package/dist/storage/workflow-runs/provider.js.map +9 -0
- package/dist/storage/workflow-runs/types.d.ts +30 -30
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/builders.d.ts +11 -3
- package/dist/syncs/builders.d.ts.map +1 -1
- package/dist/syncs/execution.d.ts +18 -0
- package/dist/syncs/execution.d.ts.map +1 -0
- package/dist/syncs/index.d.ts +3 -1
- package/dist/syncs/index.d.ts.map +1 -1
- package/dist/syncs/index.js +65 -0
- package/dist/syncs/index.js.map +9 -0
- package/dist/syncs/request.d.ts +6 -16
- package/dist/syncs/request.d.ts.map +1 -1
- package/dist/syncs/run-dispatch.d.ts +47 -0
- package/dist/syncs/run-dispatch.d.ts.map +1 -0
- package/dist/syncs/sources.d.ts +8 -0
- package/dist/syncs/sources.d.ts.map +1 -0
- package/dist/syncs/types.d.ts +34 -22
- package/dist/syncs/types.d.ts.map +1 -1
- package/dist/syncs/validation.d.ts +14 -0
- package/dist/syncs/validation.d.ts.map +1 -0
- package/dist/testing/action-execution.d.ts +12 -0
- package/dist/testing/action-execution.d.ts.map +1 -0
- package/dist/testing/agent-execution.d.ts +14 -0
- package/dist/testing/agent-execution.d.ts.map +1 -0
- package/dist/testing/agent-storage-contract.d.ts +10 -3
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts +13 -0
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/connector-connection-storage-contract.d.ts +16 -0
- package/dist/testing/connector-connection-storage-contract.d.ts.map +1 -0
- package/dist/testing/execution-storage-contract.d.ts +15 -0
- package/dist/testing/execution-storage-contract.d.ts.map +1 -0
- package/dist/testing/execution.d.ts +23 -0
- package/dist/testing/execution.d.ts.map +1 -0
- package/dist/testing/index.d.ts +13 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4270 -1484
- package/dist/testing/index.js.map +27 -14
- package/dist/testing/lake-merge-storage-contract.d.ts +7 -0
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -0
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-fixture.d.ts +2 -2
- package/dist/testing/materializer-fixture.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/ontology-contract-fixture.d.ts +1 -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/pipeline-execution.d.ts +16 -0
- package/dist/testing/pipeline-execution.d.ts.map +1 -0
- package/dist/testing/projection-execution.d.ts +20 -0
- package/dist/testing/projection-execution.d.ts.map +1 -0
- package/dist/testing/projection-run-storage-contract.d.ts +9 -4
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/sync-execution.d.ts +16 -0
- package/dist/testing/sync-execution.d.ts.map +1 -0
- package/dist/testing/webhook-execution.d.ts +12 -0
- package/dist/testing/webhook-execution.d.ts.map +1 -0
- package/dist/testing/webhook-run-storage-contract.d.ts +11 -0
- package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -0
- package/dist/testing/workflow-execution.d.ts +23 -0
- package/dist/testing/workflow-execution.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +2 -1
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/internal.d.ts +2 -0
- package/dist/webhooks/internal.d.ts.map +1 -0
- package/dist/webhooks/internal.js +150 -0
- package/dist/webhooks/internal.js.map +10 -0
- package/dist/webhooks/registry.d.ts +18 -4
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/run-admission.d.ts +25 -0
- package/dist/webhooks/run-admission.d.ts.map +1 -0
- package/dist/webhooks/types.d.ts +8 -5
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/workers/index.js +18 -19
- package/dist/workers/index.js.map +4 -4
- package/dist/workers/queue-delivery.d.ts +7 -7
- package/dist/workers/queue-delivery.d.ts.map +1 -1
- package/dist/workers/queue-worker.d.ts +30 -11
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/execution.d.ts +49 -0
- package/dist/workflows/execution.d.ts.map +1 -0
- package/dist/workflows/failure.d.ts +28 -0
- package/dist/workflows/failure.d.ts.map +1 -0
- package/dist/workflows/index.d.ts +4 -2
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +63 -35
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts +2 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/run-dispatch.d.ts +59 -0
- package/dist/workflows/run-dispatch.d.ts.map +1 -0
- package/dist/workflows/types.d.ts +38 -8
- package/dist/workflows/types.d.ts.map +1 -1
- package/package.json +107 -5
- package/src/actions/commit-edits.ts +0 -3
- package/src/actions/execution.ts +83 -0
- package/src/actions/index.ts +1 -1
- package/src/actions/registry.ts +22 -10
- package/src/actions/request.ts +55 -177
- package/src/actions/run-dispatch.ts +276 -0
- package/src/actions/types/context.ts +2 -4
- package/src/actions/validation.ts +2 -2
- package/src/agents/adapters.ts +8 -12
- package/src/agents/authority.ts +189 -0
- package/src/agents/builders.ts +53 -3
- package/src/agents/dispatch.ts +1 -6
- package/src/agents/errors.ts +24 -0
- package/src/agents/execution.ts +254 -0
- package/src/agents/index.ts +37 -5
- package/src/agents/prompt.ts +17 -5
- package/src/agents/request.ts +153 -13
- package/src/agents/streams.ts +150 -3
- package/src/agents/tool-definition.ts +93 -0
- package/src/agents/types.ts +99 -0
- package/src/agents/validation.ts +289 -5
- package/src/auth/attribution.ts +48 -0
- package/src/auth/index.ts +1 -0
- package/src/auth/runtime.ts +5 -5
- package/src/authorization/decision.ts +75 -14
- package/src/authorization/grant-kinds.ts +9 -0
- package/src/authorization/index.ts +2 -0
- package/src/blob-storage/execution.ts +78 -0
- package/src/blob-storage/validation.ts +2 -10
- package/src/bootstrap/discovery.ts +88 -268
- package/src/bootstrap/index.ts +2 -13
- package/src/broker/in-memory.ts +8 -1
- package/src/broker/types.ts +5 -0
- package/src/connectors/builders.ts +37 -2
- package/src/connectors/connections/authorizations.ts +646 -0
- package/src/connectors/connections/capability.ts +59 -0
- package/src/connectors/connections/command-context.ts +98 -0
- package/src/connectors/connections/contracts.ts +208 -0
- package/src/connectors/connections/credential-codec.ts +48 -0
- package/src/connectors/connections/credential-mutations.ts +574 -0
- package/src/connectors/connections/execution.ts +138 -0
- package/src/connectors/connections/internal.ts +17 -0
- package/src/connectors/connections/provider-operation.ts +41 -0
- package/src/connectors/connections/request.ts +447 -0
- package/src/connectors/connections/runs.ts +702 -0
- package/src/connectors/connections/service.ts +644 -0
- package/src/connectors/connections/storage-boundary.ts +13 -0
- package/src/connectors/connections/tokens.ts +292 -0
- package/src/connectors/connections/validation.ts +316 -0
- package/src/connectors/connections/views.ts +37 -0
- package/src/connectors/credentials.ts +149 -0
- package/src/connectors/errors.ts +111 -3
- package/src/connectors/execution.ts +157 -0
- package/src/connectors/index.ts +26 -2
- package/src/connectors/service.ts +142 -0
- package/src/connectors/types.ts +156 -7
- package/src/datasets/builders.ts +49 -5
- package/src/datasets/changes.ts +13 -0
- package/src/datasets/execution.ts +24 -0
- package/src/datasets/index.ts +3 -0
- package/src/datasets/types.ts +5 -0
- package/src/datasets/validation.ts +53 -11
- package/src/error-reporting/capability.ts +33 -106
- package/src/error-reporting/internal.ts +3 -1
- package/src/error-reporting/reporter.ts +19 -3
- package/src/error-reporting/reports.ts +172 -0
- package/src/error-reporting/types.ts +97 -43
- package/src/errors/catalog.ts +149 -0
- package/src/errors/internal.ts +322 -0
- package/src/errors/types.ts +21 -0
- package/src/events/definitions.ts +0 -4
- package/src/events/execution.ts +45 -0
- package/src/events/index.ts +15 -14
- package/src/events/outbox-dispatcher.ts +53 -18
- package/src/events/{runtime.ts → service.ts} +19 -23
- package/src/events/types/pipelines.ts +4 -1
- package/src/events/types/syncs.ts +3 -0
- package/src/events/types/workflows.ts +4 -2
- package/src/execution/agent.ts +130 -0
- package/src/execution/authorization.ts +409 -0
- package/src/execution/dispatch.ts +7 -0
- package/src/execution/durable.ts +193 -0
- package/src/execution/index.ts +12 -0
- package/src/execution/primitive.ts +50 -0
- package/src/execution/request.ts +109 -0
- package/src/execution/scopes.ts +198 -0
- package/src/execution/types.ts +113 -0
- package/src/http/api-routes.ts +42 -7
- package/src/index.ts +127 -10
- package/src/json.ts +11 -8
- package/src/lake-storage/definition-updates.ts +21 -0
- package/src/lake-storage/in-memory.ts +284 -2
- package/src/lake-storage/index.ts +14 -0
- package/src/lake-storage/merge-validation.ts +117 -0
- package/src/lake-storage/merge.ts +35 -0
- package/src/lake-storage/types.ts +3 -1
- package/src/logging/execution.ts +28 -0
- package/src/logging/index.ts +4 -4
- package/src/logging/{runtime.ts → service.ts} +7 -7
- package/src/materialization/events.ts +1 -0
- package/src/materialization/index.ts +2 -0
- package/src/materialization/model.ts +30 -18
- package/src/materializer/README.md +9 -13
- package/src/materializer/edits/commit.ts +85 -28
- package/src/materializer/edits/load-state.ts +79 -16
- package/src/materializer/edits/operations.ts +72 -36
- package/src/materializer/edits/plan.ts +95 -22
- package/src/materializer/edits/working-state.ts +86 -55
- package/src/materializer/effective/build-events.ts +2 -0
- package/src/materializer/effective/diff.ts +22 -0
- package/src/materializer/effective/load-state.ts +0 -31
- package/src/materializer/effective/resolve.ts +62 -0
- package/src/materializer/execution/commit-lifecycle.ts +9 -1
- package/src/materializer/execution/plan-stream.ts +33 -9
- package/src/materializer/execution/scope.ts +95 -0
- package/src/materializer/execution/work-executor.ts +6 -2
- package/src/materializer/execution/work-records.ts +39 -6
- package/src/materializer/index.ts +9 -1
- package/src/materializer/materializer.ts +67 -5
- package/src/materializer/projections/finish-run.ts +29 -11
- package/src/materializer/projections/replace.ts +55 -22
- package/src/materializer/projections/replacement-plan.ts +37 -7
- package/src/materializer/shared/batching.ts +4 -1
- package/src/materializer/shared/normalize.ts +0 -19
- package/src/materializer/telemetry/append.ts +57 -26
- package/src/materializer/telemetry/plan.ts +15 -6
- package/src/objects/action/request.ts +5 -5
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +6 -0
- package/src/objects/execution.ts +346 -0
- package/src/objects/materializer-adapter.ts +1 -23
- package/src/objects/query/executor.ts +15 -29
- package/src/objects/query/index.ts +1 -2
- package/src/objects/query/planner.ts +0 -6
- package/src/objects/sdk/object-handle.ts +2 -2
- package/src/objects/sdk/object-set.ts +17 -7
- package/src/objects/sdk/runtime-query-executor.ts +9 -2
- package/src/objects/sdk/telemetry-channel.ts +5 -1
- package/src/objects/service/action-service.ts +5 -2
- package/src/objects/service/list-service.ts +1 -1
- package/src/objects/telemetry/history.ts +8 -3
- package/src/objects/telemetry/write-batch.ts +0 -2
- package/src/ontology/index.ts +6 -1
- package/src/ontology/json-schema.ts +2 -1
- package/src/ontology/registry.ts +16 -2
- package/src/ontology/validation/normalize.ts +9 -15
- package/src/pipelines/execution.ts +105 -0
- package/src/pipelines/index.ts +7 -0
- package/src/pipelines/request.ts +32 -26
- package/src/pipelines/run-dispatch.ts +308 -0
- package/src/projections/builders.ts +0 -9
- package/src/projections/capability.ts +37 -0
- package/src/projections/execution.ts +85 -0
- package/src/projections/index.ts +2 -1
- package/src/projections/internal.ts +17 -60
- package/src/projections/ownership.ts +2 -2
- package/src/projections/registry.ts +26 -11
- package/src/projections/revision.ts +7 -5
- package/src/projections/run-dispatch.ts +497 -0
- package/src/projections/run-id.ts +20 -0
- package/src/projections/types.ts +12 -0
- package/src/projections/validation.ts +3 -3
- package/src/queues/in-memory.ts +37 -11
- package/src/queues/index.ts +9 -2
- package/src/queues/types.ts +70 -45
- package/src/rules/execution.ts +49 -0
- package/src/rules/index.ts +0 -1
- package/src/rules/validation.ts +2 -6
- package/src/runtime/ai-usage.ts +17 -0
- package/src/runtime/create.ts +28 -68
- package/src/runtime/definitions.ts +44 -0
- package/src/runtime/host.ts +377 -0
- package/src/runtime/index.ts +5 -13
- package/src/runtime/internal.ts +12 -0
- package/src/runtime/ontology-mutations.ts +5 -3
- package/src/runtime/resolve-definitions.ts +238 -0
- package/src/runtime/sixb.ts +95 -807
- package/src/runtime/types.ts +17 -290
- package/src/scheduler/index.ts +1 -1
- package/src/scheduler/runtime.ts +37 -6
- package/src/schedules/execution.ts +14 -0
- package/src/schedules/types.ts +0 -8
- package/src/security/every.ts +4 -0
- package/src/security/grants.ts +13 -1
- package/src/security/index.ts +3 -1
- package/src/security/registry.ts +107 -0
- package/src/security/types.ts +8 -12
- package/src/security/validation.ts +7 -0
- package/src/storage/action-runs/failure.ts +64 -0
- package/src/storage/action-runs/idempotency.ts +3 -1
- package/src/storage/action-runs/in-memory.ts +39 -9
- package/src/storage/action-runs/index.ts +3 -0
- package/src/storage/action-runs/provider.ts +25 -0
- package/src/storage/action-runs/types.ts +61 -27
- package/src/storage/agents/errors.ts +1 -0
- package/src/storage/agents/in-memory.ts +49 -11
- package/src/storage/agents/index.ts +2 -1
- package/src/storage/agents/provider.ts +27 -0
- package/src/storage/agents/types.ts +19 -19
- package/src/storage/ai-usage/errors.ts +13 -0
- package/src/storage/ai-usage/in-memory.ts +162 -0
- package/src/storage/ai-usage/index.ts +21 -0
- package/src/storage/ai-usage/record.ts +74 -0
- package/src/storage/ai-usage/types.ts +102 -0
- package/src/storage/ai-usage/usage.ts +104 -0
- package/src/storage/auth/types.ts +1 -0
- package/src/storage/connector-connections/errors.ts +24 -0
- package/src/storage/connector-connections/in-memory.ts +1377 -0
- package/src/storage/connector-connections/index.ts +66 -0
- package/src/storage/connector-connections/provider/authorizations.ts +446 -0
- package/src/storage/connector-connections/provider/connections.ts +291 -0
- package/src/storage/connector-connections/provider/runs.ts +369 -0
- package/src/storage/connector-connections/provider/shared.ts +342 -0
- package/src/storage/connector-connections/provider.ts +219 -0
- package/src/storage/connector-connections/types.ts +546 -0
- package/src/storage/executions/errors.ts +21 -0
- package/src/storage/executions/in-memory.ts +75 -0
- package/src/storage/executions/index.ts +16 -0
- package/src/storage/executions/provider.ts +292 -0
- package/src/storage/executions/run-link.ts +70 -0
- package/src/storage/executions/types.ts +49 -0
- package/src/storage/executions/validation.ts +370 -0
- package/src/storage/in-memory/index.ts +50 -16
- package/src/storage/index.ts +155 -15
- package/src/storage/ontology/commits.ts +1 -0
- package/src/storage/ontology/in-memory/index.ts +2 -0
- package/src/storage/ontology/in-memory/materializations-finalization.ts +2 -1
- package/src/storage/ontology/in-memory/materializations-state.ts +10 -0
- package/src/storage/ontology/in-memory/materializations-work.ts +2 -1
- package/src/storage/ontology/in-memory/materializations.ts +131 -9
- package/src/storage/ontology/in-memory/outbox.ts +1 -1
- package/src/storage/ontology/in-memory/shared-state.ts +12 -1
- package/src/storage/ontology/index.ts +6 -0
- package/src/storage/ontology/materializations.ts +50 -4
- package/src/storage/ontology/outbox.ts +13 -2
- package/src/storage/ontology/provider-header-validation.ts +1 -0
- package/src/storage/ontology/provider-work.ts +33 -14
- package/src/storage/ontology/provider.ts +72 -52
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/pipeline-runs/idempotency.ts +14 -0
- package/src/storage/pipeline-runs/in-memory.ts +88 -8
- package/src/storage/pipeline-runs/index.ts +5 -1
- package/src/storage/pipeline-runs/provider.ts +25 -0
- package/src/storage/pipeline-runs/types.ts +37 -14
- package/src/storage/projection-runs/in-memory.ts +93 -24
- package/src/storage/projection-runs/index.ts +4 -0
- package/src/storage/projection-runs/lifecycle.ts +165 -36
- package/src/storage/projection-runs/provider.ts +34 -0
- package/src/storage/projection-runs/types.ts +34 -11
- package/src/storage/run-listing.ts +22 -13
- package/src/storage/sync-runs/idempotency.ts +18 -0
- package/src/storage/sync-runs/in-memory.ts +92 -9
- package/src/storage/sync-runs/index.ts +5 -1
- package/src/storage/sync-runs/provider.ts +25 -0
- package/src/storage/sync-runs/types.ts +44 -15
- package/src/storage/types.ts +45 -17
- package/src/storage/webhook-runs/errors.ts +14 -0
- package/src/storage/webhook-runs/in-memory.ts +84 -9
- package/src/storage/webhook-runs/index.ts +5 -1
- package/src/storage/webhook-runs/provider.ts +30 -0
- package/src/storage/webhook-runs/types.ts +52 -11
- package/src/storage/workflow-runs/in-memory.ts +91 -55
- package/src/storage/workflow-runs/index.ts +2 -0
- package/src/storage/workflow-runs/provider.ts +70 -0
- package/src/storage/workflow-runs/types.ts +38 -25
- package/src/syncs/builders.ts +33 -15
- package/src/syncs/execution.ts +78 -0
- package/src/syncs/index.ts +14 -0
- package/src/syncs/request.ts +32 -43
- package/src/syncs/run-dispatch.ts +312 -0
- package/src/syncs/sources.ts +20 -0
- package/src/syncs/types.ts +75 -25
- package/src/syncs/validation.ts +77 -0
- package/src/testing/action-execution.ts +61 -0
- package/src/testing/agent-execution.ts +81 -0
- package/src/testing/agent-storage-contract.ts +158 -63
- package/src/testing/ai-usage-storage-contract.ts +528 -0
- package/src/testing/auth-storage-contract.ts +17 -1
- package/src/testing/broker-contract.ts +16 -1
- package/src/testing/connector-connection-storage-contract.ts +1052 -0
- package/src/testing/execution-storage-contract.ts +435 -0
- package/src/testing/execution.ts +48 -0
- package/src/testing/index.ts +56 -0
- package/src/testing/lake-merge-storage-contract.ts +302 -0
- package/src/testing/lake-storage-contract.ts +23 -0
- package/src/testing/materializer-fixture.ts +11 -3
- package/src/testing/materializer-storage-contract.ts +213 -11
- package/src/testing/ontology-contract-fixture.ts +35 -2
- package/src/testing/ontology-storage-contract.ts +75 -14
- package/src/testing/pipeline-execution.ts +64 -0
- package/src/testing/projection-execution.ts +98 -0
- package/src/testing/projection-run-storage-contract.ts +215 -29
- package/src/testing/queues-contract.ts +40 -51
- package/src/testing/sync-execution.ts +61 -0
- package/src/testing/webhook-execution.ts +47 -0
- package/src/testing/webhook-run-storage-contract.ts +240 -0
- package/src/testing/workflow-execution.ts +77 -0
- package/src/webhooks/index.ts +2 -1
- package/src/webhooks/internal.ts +5 -0
- package/src/webhooks/registry.ts +60 -36
- package/src/webhooks/run-admission.ts +172 -0
- package/src/webhooks/types.ts +8 -5
- package/src/workers/queue-delivery.ts +25 -22
- package/src/workers/queue-worker.ts +62 -32
- package/src/workflows/execution.ts +292 -0
- package/src/workflows/failure.ts +63 -0
- package/src/workflows/index.ts +10 -1
- package/src/workflows/request.ts +39 -118
- package/src/workflows/run-dispatch.ts +359 -0
- package/src/workflows/snapshot.ts +1 -10
- package/src/workflows/types.ts +39 -8
- package/dist/actions/runtime.d.ts +0 -11
- package/dist/actions/runtime.d.ts.map +0 -1
- package/dist/agents/runtime.d.ts +0 -41
- package/dist/agents/runtime.d.ts.map +0 -1
- package/dist/chunk-0fygrz37.js +0 -354
- package/dist/chunk-0fygrz37.js.map +0 -17
- package/dist/chunk-0psb6kdw.js +0 -989
- package/dist/chunk-0psb6kdw.js.map +0 -15
- package/dist/chunk-1vffvydj.js.map +0 -10
- package/dist/chunk-2gpr6jsz.js.map +0 -13
- package/dist/chunk-2s6sydsh.js.map +0 -12
- package/dist/chunk-50kv63vj.js.map +0 -12
- package/dist/chunk-590dejbp.js +0 -49
- package/dist/chunk-590dejbp.js.map +0 -10
- package/dist/chunk-867jxh7c.js.map +0 -19
- package/dist/chunk-aebzcsxr.js.map +0 -48
- package/dist/chunk-btpe64e4.js +0 -554
- package/dist/chunk-btpe64e4.js.map +0 -13
- package/dist/chunk-dcgrzj1t.js.map +0 -36
- package/dist/chunk-dhmj53mx.js.map +0 -16
- package/dist/chunk-hsv43v58.js +0 -1390
- package/dist/chunk-hsv43v58.js.map +0 -21
- package/dist/chunk-jdwx7vzs.js.map +0 -14
- package/dist/chunk-k25jm1x5.js +0 -102
- package/dist/chunk-k25jm1x5.js.map +0 -10
- package/dist/chunk-k41ajtz7.js +0 -352
- package/dist/chunk-k41ajtz7.js.map +0 -13
- package/dist/chunk-k6j72mtt.js +0 -9
- package/dist/chunk-k6j72mtt.js.map +0 -10
- package/dist/chunk-nvamz5dv.js +0 -819
- package/dist/chunk-nvamz5dv.js.map +0 -21
- package/dist/chunk-pv1yad91.js +0 -1165
- package/dist/chunk-pv1yad91.js.map +0 -27
- package/dist/chunk-q4qzq0ea.js.map +0 -14
- package/dist/chunk-r65yscvk.js.map +0 -11
- package/dist/chunk-t358gywy.js.map +0 -34
- package/dist/chunk-t72dvahb.js.map +0 -12
- package/dist/chunk-v5c085yp.js.map +0 -10
- package/dist/chunk-wj01s5hr.js.map +0 -11
- package/dist/chunk-wxhdnwh4.js +0 -37
- package/dist/chunk-wxhdnwh4.js.map +0 -10
- package/dist/chunk-xz5g49bp.js.map +0 -11
- package/dist/chunk-ya6brh8a.js.map +0 -11
- package/dist/chunk-yvef9xwc.js.map +0 -44
- package/dist/chunk-yxss87qa.js.map +0 -14
- package/dist/connectors/runtime.d.ts +0 -13
- package/dist/connectors/runtime.d.ts.map +0 -1
- package/dist/events/runtime.d.ts.map +0 -1
- package/dist/objects/contexts.d.ts +0 -45
- package/dist/objects/contexts.d.ts.map +0 -1
- package/dist/objects/helpers.d.ts +0 -7
- package/dist/objects/helpers.d.ts.map +0 -1
- package/dist/runtime/scoped.d.ts +0 -158
- package/dist/runtime/scoped.d.ts.map +0 -1
- package/dist/security/runtime.d.ts +0 -16
- package/dist/security/runtime.d.ts.map +0 -1
- package/dist/storage/webhook-deliveries/in-memory.d.ts +0 -18
- package/dist/storage/webhook-deliveries/in-memory.d.ts.map +0 -1
- package/dist/storage/webhook-deliveries/index.d.ts +0 -3
- package/dist/storage/webhook-deliveries/index.d.ts.map +0 -1
- package/dist/storage/webhook-deliveries/types.d.ts +0 -43
- package/dist/storage/webhook-deliveries/types.d.ts.map +0 -1
- package/dist/workflows/runtime.d.ts +0 -33
- package/dist/workflows/runtime.d.ts.map +0 -1
- package/src/actions/runtime.ts +0 -31
- package/src/agents/runtime.ts +0 -124
- package/src/connectors/runtime.ts +0 -100
- package/src/objects/contexts.ts +0 -64
- package/src/objects/helpers.ts +0 -18
- package/src/runtime/scoped.ts +0 -436
- package/src/security/runtime.ts +0 -101
- package/src/storage/webhook-deliveries/in-memory.ts +0 -108
- package/src/storage/webhook-deliveries/index.ts +0 -9
- package/src/storage/webhook-deliveries/types.ts +0 -41
- package/src/workflows/runtime.ts +0 -68
- /package/dist/{chunk-45tw90k7.js.map → chunk-4gz41why.js.map} +0 -0
- /package/dist/{chunk-vj723r3p.js.map → chunk-8b55ygje.js.map} +0 -0
- /package/dist/{chunk-p6r5g77m.js.map → chunk-vybf6pkp.js.map} +0 -0
- /package/dist/{chunk-5yny9z0e.js.map → chunk-z3zp0bj1.js.map} +0 -0
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/storage/projection-runs/errors.ts", "../src/storage/projection-runs/types.ts", "../src/storage/projection-runs/lifecycle.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import {\n MaterializationConflictError,\n type MaterializationConflictKind,\n} from \"../../materialization/errors\"\n\n/**\n * Base error for projection-run storage operations.\n */\nexport class ProjectionRunError extends MaterializationConflictError {\n readonly name = \"ProjectionRunError\"\n\n constructor(message: string, kind: MaterializationConflictKind = \"run-correlation\") {\n super(kind, message)\n }\n}\n",
|
|
6
|
-
"import type {\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionRunTerminalDecision,\n} from \"../../materialization/model\"\nimport type {\n LinkProjectionTarget,\n ObjectProjectionTarget,\n ProjectionKind,\n ProjectionTarget,\n} from \"../../projections/types\"\n\nexport type ProjectionRunStatus = \"running\" | \"succeeded\" | \"failed\" | \"cancelled\"\n\nexport interface ProjectionRunProgress {\n /** Physical immutable-version rows consumed, before normalization or semantic materialization. */\n readonly sourceRowsRead: number\n /** Physical rows intentionally skipped because a required mapped value was blank. */\n readonly sourceRowsSkipped: number\n}\n\nconst progressKeyFlags: Record<keyof ProjectionRunProgress, true> = {\n sourceRowsRead: true,\n sourceRowsSkipped: true,\n}\n\nexport const PROJECTION_RUN_PROGRESS_KEYS = Object.keys(\n progressKeyFlags\n) as readonly (keyof ProjectionRunProgress)[]\n\nexport function zeroProjectionRunProgress(): ProjectionRunProgress {\n const progress = {} as Record<keyof ProjectionRunProgress, number>\n for (const key of PROJECTION_RUN_PROGRESS_KEYS) progress[key] = 0\n return progress\n}\n\nexport interface ProjectionTelemetryCheckpoint {\n readonly fixedBatchSize: number\n readonly nextBatchOrdinal: number\n readonly nextRowOffset: number\n readonly inputExhausted: boolean\n}\n\n/**\n * The object a telemetry batch is waiting for, and when this run first found it missing.\n *\n * A projection's dataset can legitimately be materialized before the objects it references, so\n * the run waits instead of failing. The wait needs a start, and the run has no other durable one:\n * `startedAt` is when the run began, which on a batched projection is long before the batch that\n * cannot commit, and `attempt` counts every reclaim including the ones an unreachable queue caused.\n *\n * Cleared by any committed batch, so a run that is making progress never carries a stale wait.\n */\nexport interface ProjectionMissingTarget {\n readonly objectTypeId: string\n readonly objectId: string\n /** The batch that could not commit because of it. */\n readonly batchOrdinal: number\n readonly firstSeenAt: Date\n}\n\ninterface ProjectionRunRecordBase {\n readonly id: string\n readonly projectId: string\n readonly status: ProjectionRunStatus\n readonly attempt: number\n readonly progress: ProjectionRunProgress\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly errorMessage?: string\n}\n\ntype ProjectionIdentity<TKind extends ProjectionKind> = Extract<\n ProjectionMaterializationIdentity,\n { readonly projectionKind: TKind }\n>\n\nexport type ObjectProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"object\">\n readonly target: ObjectProjectionTarget\n readonly telemetryCheckpoint?: never\n readonly missingTarget?: never\n}\n\nexport type LinkProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"link\">\n readonly target: LinkProjectionTarget\n readonly telemetryCheckpoint?: never\n readonly missingTarget?: never\n}\n\nexport type TelemetryProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"telemetry\">\n readonly target: ObjectProjectionTarget\n readonly telemetryCheckpoint: ProjectionTelemetryCheckpoint\n /**\n * Only telemetry carries this: `MaterializationObjectNotFoundError` is raised by telemetry\n * validation alone, and only a batched protocol has a checkpoint to anchor the wait to.\n */\n readonly missingTarget?: ProjectionMissingTarget\n}\n\n/** Durable projection lifecycle state. The execution token is deliberately returned separately. */\nexport type ProjectionRunRecord =\n | ObjectProjectionRunRecord\n | LinkProjectionRunRecord\n | TelemetryProjectionRunRecord\n\nexport function projectionRunObjectTypesVisible(\n run: ProjectionRunRecord,\n canView: (objectTypeId: string) => boolean\n): boolean {\n const target: ProjectionTarget = run.target\n if (\"sourceObjectTypeId\" in target) {\n return canView(target.sourceObjectTypeId) && canView(target.targetObjectTypeId)\n }\n return canView(target.objectTypeId)\n}\n\ninterface StartOrReclaimProjectionRunBase {\n readonly id: string\n readonly projectId: string\n readonly startedAt?: Date\n}\n\nexport type StartOrReclaimProjectionRunInput =\n | (StartOrReclaimProjectionRunBase & {\n readonly identity: ProjectionIdentity<\"object\">\n readonly target: ObjectProjectionRunRecord[\"target\"]\n readonly fixedBatchSize?: never\n })\n | (StartOrReclaimProjectionRunBase & {\n readonly identity: ProjectionIdentity<\"link\">\n readonly target: LinkProjectionRunRecord[\"target\"]\n readonly fixedBatchSize?: never\n })\n | (StartOrReclaimProjectionRunBase & {\n readonly identity: ProjectionIdentity<\"telemetry\">\n readonly target: TelemetryProjectionRunRecord[\"target\"]\n readonly fixedBatchSize: number\n })\n\nexport interface ProjectionRunClaim {\n readonly run: ProjectionRunRecord\n readonly execution: ProjectionExecution\n}\n\nexport interface LockProjectionRunForMaterializationInput {\n readonly id: string\n readonly projectId: string\n readonly executionToken: string\n readonly identity: ProjectionMaterializationIdentity\n}\n\nexport interface UpdateProjectionRunInput extends LockProjectionRunForMaterializationInput {\n readonly progress: Partial<ProjectionRunProgress>\n}\n\nexport type FinishProjectionRunInput = ProjectionRunTerminalDecision &\n LockProjectionRunForMaterializationInput & {\n readonly finishedAt?: Date\n readonly progress?: Partial<ProjectionRunProgress>\n }\n\nexport interface AdvanceProjectionTelemetryCheckpointInput\n extends LockProjectionRunForMaterializationInput {\n /** Must equal the run's current nextBatchOrdinal. */\n readonly batchOrdinal: number\n /** Physical dataset rows consumed by this batch, including skipped rows. */\n readonly batchRowCount: number\n /** Physical rows intentionally skipped inside this batch. */\n readonly batchRowsSkipped: number\n /** True when this batch consumed the final row of the immutable dataset version. */\n readonly inputExhausted: boolean\n}\n\nexport interface RecordProjectionMissingTargetInput\n extends LockProjectionRunForMaterializationInput {\n readonly missingTarget: ProjectionMissingTarget\n}\n\nexport interface ListProjectionRunsInput {\n readonly projectId: string\n readonly projectionId?: string\n readonly projectionKind?: ProjectionKind\n readonly datasetId?: string\n readonly datasetVersionId?: string\n /**\n * Viewable object type ids. A run is included only if every target type is present. Omit for a\n * privileged caller; an empty set matches no runs.\n */\n readonly objectTypeIds?: readonly string[]\n readonly statuses?: readonly ProjectionRunStatus[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListProjectionRunsResult {\n readonly runs: readonly ProjectionRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface ListLatestProjectionRunsInput {\n readonly projectId: string\n readonly projectionIds: readonly string[]\n}\n\nexport interface ListLatestProjectionRunsResult {\n readonly runs: readonly ProjectionRunRecord[]\n}\n\nexport interface ProjectionRunStorage {\n startOrReclaim(input: StartOrReclaimProjectionRunInput): Promise<ProjectionRunClaim>\n /** Transactionally fences the current execution before ontology materialization writes. */\n lockForMaterialization(\n input: LockProjectionRunForMaterializationInput\n ): Promise<ProjectionRunRecord>\n /** Updates physical source progress only. */\n update(input: UpdateProjectionRunInput): Promise<ProjectionRunRecord>\n /**\n * Advances telemetry progress atomically with the corresponding ontology commit.\n *\n * Clears any recorded missing target: a batch that commits is a batch that was not waiting.\n */\n advanceTelemetryCheckpoint(\n input: AdvanceProjectionTelemetryCheckpointInput\n ): Promise<TelemetryProjectionRunRecord>\n /** Records the object a telemetry batch is waiting for, so the wait has a durable start. */\n recordMissingTarget(\n input: RecordProjectionMissingTargetInput\n ): Promise<TelemetryProjectionRunRecord>\n /** Telemetry success also records the worker's EOF observation atomically. */\n finish(input: FinishProjectionRunInput): Promise<ProjectionRunRecord>\n getById(params: { projectId: string; id: string }): Promise<ProjectionRunRecord | null>\n list(input: ListProjectionRunsInput): Promise<ListProjectionRunsResult>\n listLatestByProjectionIds(\n input: ListLatestProjectionRunsInput\n ): Promise<ListLatestProjectionRunsResult>\n}\n\nexport type {\n LinkProjectionTarget,\n ObjectProjectionTarget,\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionKind,\n ProjectionMaterializationIdentity,\n ProjectionTarget,\n}\n",
|
|
7
|
-
"import type {\n ProjectionMaterializationIdentity,\n ProjectionRunTerminalDecision,\n} from \"../../materialization/model\"\nimport type { ProjectionKind, ProjectionTarget } from \"../../projections/types\"\nimport { ProjectionRunError } from \"./errors\"\nimport type {\n AdvanceProjectionTelemetryCheckpointInput,\n FinishProjectionRunInput,\n ProjectionMissingTarget,\n ProjectionRunClaim,\n ProjectionRunProgress,\n ProjectionRunRecord,\n ProjectionRunStatus,\n ProjectionTelemetryCheckpoint,\n StartOrReclaimProjectionRunInput,\n TelemetryProjectionRunRecord,\n} from \"./types\"\nimport { PROJECTION_RUN_PROGRESS_KEYS, zeroProjectionRunProgress } from \"./types\"\n\nexport type StoredProjectionRunRecord = ProjectionRunRecord & {\n readonly executionToken?: string\n}\n\nexport interface PersistedProjectionRunRecord {\n readonly id: string\n readonly projectId: string\n readonly projectionId: string\n readonly projectionKind: ProjectionKind\n readonly protocol?: \"replacement\" | \"telemetry\"\n readonly datasetId: string\n readonly datasetVersionId: string\n readonly datasetVersionCreatedAt?: string\n readonly ontologyRevision?: string\n readonly projectionRevision?: string\n readonly ownershipHash?: string\n readonly objectTypeId?: string\n readonly sourceObjectTypeId?: string\n readonly targetObjectTypeId?: string\n readonly status: ProjectionRunStatus\n readonly startedAt: Date\n readonly finishedAt?: Date\n readonly attempt: number\n readonly executionToken?: string\n readonly fixedBatchSize?: number\n readonly nextBatchOrdinal?: number\n readonly nextRowOffset?: number\n readonly inputExhausted?: boolean\n readonly missingTargetObjectTypeId?: string\n readonly missingTargetObjectId?: string\n readonly missingTargetBatchOrdinal?: number\n readonly missingTargetFirstSeenAt?: Date\n readonly progress: ProjectionRunProgress\n readonly errorMessage?: string\n}\n\nexport interface ProjectionTelemetryAdvance {\n readonly progress: ProjectionRunProgress\n readonly checkpoint: ProjectionTelemetryCheckpoint\n}\n\nexport interface ProjectionRunFinishPlan {\n readonly status: Exclude<ProjectionRunStatus, \"running\">\n readonly finishedAt: Date\n readonly progress: ProjectionRunProgress\n readonly inputExhausted?: true\n readonly errorMessage?: string\n}\n\n// ── Scalar and identity validation ──────────────────────────\n\nexport function assertProjectionRunNonEmpty(value: string, fieldName: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ProjectionRunError(`[Sixb] Projection run ${fieldName} must not be empty.`)\n }\n}\n\nexport function assertProjectionRunCounter(value: number, fieldName: string): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new ProjectionRunError(\n `[Sixb] Projection run ${fieldName} must be a non-negative safe integer.`\n )\n }\n}\n\nexport function assertProjectionRunListWindow(value: number | undefined, fieldName: string): void {\n if (value !== undefined && (!Number.isSafeInteger(value) || value < 0)) {\n throw new ProjectionRunError(`[Sixb] Projection run list ${fieldName} must be >= 0.`)\n }\n}\n\nexport function addProjectionRunCounter(left: number, right: number, fieldName: string): number {\n const result = left + right\n if (!Number.isSafeInteger(result)) {\n throw new ProjectionRunError(`[Sixb] Projection run ${fieldName} exceeds safe integer range.`)\n }\n return result\n}\n\nexport function assertProjectionRunIdentity(identity: ProjectionMaterializationIdentity): void {\n assertProjectionRunNonEmpty(identity.projectionId, \"projectionId\")\n if (!isProjectionKind(identity.projectionKind)) {\n throw new ProjectionRunError(\n \"[Sixb] Projection run projectionKind must be 'object', 'link', or 'telemetry'.\"\n )\n }\n if (identity.protocol !== \"replacement\" && identity.protocol !== \"telemetry\") {\n throw new ProjectionRunError(\n \"[Sixb] Projection run protocol must be 'replacement' or 'telemetry'.\"\n )\n }\n assertProjectionRunNonEmpty(identity.datasetVersion.datasetId, \"datasetId\")\n assertProjectionRunNonEmpty(identity.datasetVersion.versionId, \"datasetVersionId\")\n assertCanonicalTimestamp(identity.datasetVersion.createdAt, \"datasetVersionCreatedAt\")\n assertProjectionRunNonEmpty(identity.ontologyRevision, \"ontologyRevision\")\n assertProjectionRunNonEmpty(identity.projectionRevision, \"projectionRevision\")\n assertProjectionRunNonEmpty(identity.ownershipHash, \"ownershipHash\")\n if ((identity.protocol === \"telemetry\") !== (identity.projectionKind === \"telemetry\")) {\n throw new ProjectionRunError(\n `[Sixb] Projection run protocol '${identity.protocol}' is incompatible with kind '${identity.projectionKind}'.`\n )\n }\n}\n\nexport function assertProjectionRunIdentityMatches(\n record: Pick<ProjectionRunRecord, \"id\" | \"identity\">,\n identity: ProjectionMaterializationIdentity\n): void {\n if (projectionRunIdentitiesEqual(record.identity, identity)) return\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' materialization identity does not match.`\n )\n}\n\nexport function assertProjectionRunTargetMatches(\n record: Pick<ProjectionRunRecord, \"id\" | \"target\">,\n target: ProjectionTarget\n): void {\n if (projectionTargetsEqual(record.target, target)) return\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' target object types do not match.`\n )\n}\n\nexport function assertProjectionRunStartInput(input: StartOrReclaimProjectionRunInput): void {\n assertProjectionRunNonEmpty(input.id, \"id\")\n assertProjectionRunNonEmpty(input.projectId, \"projectId\")\n assertProjectionRunIdentity(input.identity)\n assertProjectionTarget(input.identity.projectionKind, input.target)\n if (input.startedAt) assertProjectionRunDate(input.startedAt, \"startedAt\")\n if (input.identity.projectionKind === \"telemetry\") {\n const telemetry = input as ProjectionRunStart<\"telemetry\">\n assertPositiveCounter(telemetry.fixedBatchSize, \"fixedBatchSize\")\n } else if (input.fixedBatchSize !== undefined) {\n throw new ProjectionRunError(\n \"[Sixb] Replacement projection runs cannot declare a telemetry fixedBatchSize.\"\n )\n }\n}\n\nexport function planProjectionRunReclaim(\n record: StoredProjectionRunRecord,\n input: StartOrReclaimProjectionRunInput\n): { readonly attempt: number } {\n assertProjectionRunRunning(record)\n assertProjectionRunIdentityMatches(record, input.identity)\n assertProjectionRunTargetMatches(record, input.target)\n if (record.telemetryCheckpoint?.fixedBatchSize !== input.fixedBatchSize) {\n throw new ProjectionRunError(\n `[Sixb] Projection run '${input.id}' fixed batch size does not match.`\n )\n }\n return { attempt: nextProjectionRunAttempt(record.attempt) }\n}\n\n// ── Lifecycle transitions ───────────────────────────────────\n\nexport function createProjectionRunRecord(\n input: StartOrReclaimProjectionRunInput,\n now: Date = new Date()\n): ProjectionRunRecord {\n assertProjectionRunStartInput(input)\n const base = {\n id: input.id,\n projectId: input.projectId,\n status: \"running\" as const,\n attempt: 1,\n progress: zeroProjectionRunProgress(),\n startedAt: new Date(input.startedAt ?? now),\n }\n switch (input.identity.projectionKind) {\n case \"object\": {\n const object = input as ProjectionRunStart<\"object\">\n return { ...base, identity: object.identity, target: object.target }\n }\n case \"link\": {\n const link = input as ProjectionRunStart<\"link\">\n return { ...base, identity: link.identity, target: link.target }\n }\n case \"telemetry\": {\n const telemetry = input as ProjectionRunStart<\"telemetry\">\n return {\n ...base,\n identity: telemetry.identity,\n target: telemetry.target,\n telemetryCheckpoint: {\n fixedBatchSize: telemetry.fixedBatchSize,\n nextBatchOrdinal: 0,\n nextRowOffset: 0,\n inputExhausted: false,\n },\n }\n }\n }\n}\n\nexport function assertProjectionRunRunning(\n record: Pick<ProjectionRunRecord, \"id\" | \"projectId\" | \"status\">\n): void {\n if (record.status === \"running\") return\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' for project '${record.projectId}' is already terminal.`\n )\n}\n\nexport function assertProjectionRunExecution(\n record: StoredProjectionRunRecord,\n input: {\n readonly id: string\n readonly executionToken: string\n readonly identity: ProjectionMaterializationIdentity\n }\n): asserts record is StoredProjectionRunRecord & { readonly executionToken: string } {\n assertProjectionRunNonEmpty(input.executionToken, \"executionToken\")\n assertProjectionRunIdentity(input.identity)\n assertProjectionRunRunning(record)\n assertProjectionRunIdentityMatches(record, input.identity)\n if (record.executionToken !== input.executionToken) {\n throw staleProjectionRunExecution(input.id)\n }\n}\n\nexport function nextProjectionRunAttempt(current: number): number {\n assertProjectionRunCounter(current, \"attempt\")\n return addProjectionRunCounter(current, 1, \"attempt\")\n}\n\nexport function mergeProjectionRunProgress(\n current: ProjectionRunProgress,\n patch: Partial<ProjectionRunProgress>\n): ProjectionRunProgress {\n const progress = { ...current }\n for (const key of PROJECTION_RUN_PROGRESS_KEYS) {\n const value = patch[key]\n if (value === undefined) continue\n assertProjectionRunCounter(value, key)\n if (value < current[key]) {\n throw new ProjectionRunError(`[Sixb] Projection run ${key} must not decrease.`)\n }\n progress[key] = value\n }\n assertProjectionRunProgress(progress)\n return progress\n}\n\nexport function assertGenericProgressDoesNotAdvanceTelemetry(\n record: Pick<ProjectionRunRecord, \"id\" | \"identity\" | \"progress\">,\n patch: Partial<ProjectionRunProgress>\n): void {\n if (record.identity.protocol !== \"telemetry\") return\n for (const key of PROJECTION_RUN_PROGRESS_KEYS) {\n if (patch[key] !== undefined && patch[key] !== record.progress[key]) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' progress can only advance with its checkpoint.`\n )\n }\n }\n}\n\nexport function advanceProjectionTelemetry(\n record: ProjectionRunRecord,\n input: AdvanceProjectionTelemetryCheckpointInput\n): ProjectionTelemetryAdvance {\n const telemetry = requireTelemetryProjectionRun(record)\n const checkpoint = telemetry.telemetryCheckpoint\n assertProjectionRunCounter(input.batchOrdinal, \"batchOrdinal\")\n assertPositiveCounter(input.batchRowCount, \"batchRowCount\")\n assertProjectionRunCounter(input.batchRowsSkipped, \"batchRowsSkipped\")\n if (input.batchRowsSkipped > input.batchRowCount) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' skipped rows exceed its batch row count.`\n )\n }\n if (input.batchOrdinal !== checkpoint.nextBatchOrdinal) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' expected batch ordinal ${checkpoint.nextBatchOrdinal}, got ${input.batchOrdinal}.`\n )\n }\n if (input.batchRowCount > checkpoint.fixedBatchSize) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' batch exceeds its fixed size.`\n )\n }\n if (!input.inputExhausted && input.batchRowCount !== checkpoint.fixedBatchSize) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' cannot advance past a partial non-final batch.`\n )\n }\n if (checkpoint.inputExhausted) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' has already exhausted its input.`\n )\n }\n\n const nextRowOffset = addProjectionRunCounter(\n checkpoint.nextRowOffset,\n input.batchRowCount,\n \"nextRowOffset\"\n )\n return {\n progress: {\n sourceRowsRead: nextRowOffset,\n sourceRowsSkipped: addProjectionRunCounter(\n telemetry.progress.sourceRowsSkipped,\n input.batchRowsSkipped,\n \"sourceRowsSkipped\"\n ),\n },\n checkpoint: {\n ...checkpoint,\n nextBatchOrdinal: addProjectionRunCounter(checkpoint.nextBatchOrdinal, 1, \"nextBatchOrdinal\"),\n nextRowOffset,\n inputExhausted: input.inputExhausted,\n },\n }\n}\n\nexport function planProjectionRunFinish(\n record: ProjectionRunRecord,\n input: FinishProjectionRunInput,\n now: Date = new Date()\n): ProjectionRunFinishPlan {\n assertFinishDecision(record, input)\n const patch = input.progress ?? {}\n assertGenericProgressDoesNotAdvanceTelemetry(record, patch)\n const progress = mergeProjectionRunProgress(record.progress, patch)\n const finishedAt = new Date(input.finishedAt ?? now)\n assertProjectionRunDate(finishedAt, \"finishedAt\")\n return {\n status: input.status,\n finishedAt,\n progress,\n ...(input.status === \"succeeded\" && input.protocol === \"telemetry\"\n ? { inputExhausted: true as const }\n : {}),\n ...(input.status === \"succeeded\" || input.errorMessage === undefined\n ? {}\n : { errorMessage: input.errorMessage }),\n }\n}\n\nexport function finishProjectionRunRecord(\n record: StoredProjectionRunRecord,\n input: FinishProjectionRunInput,\n now: Date = new Date()\n): StoredProjectionRunRecord {\n const plan = planProjectionRunFinish(record, input, now)\n const terminal = {\n executionToken: undefined,\n status: plan.status,\n finishedAt: plan.finishedAt,\n progress: plan.progress,\n errorMessage: plan.errorMessage,\n }\n if (plan.inputExhausted) {\n const telemetry = requireTelemetryProjectionRun(record)\n return {\n ...telemetry,\n ...terminal,\n telemetryCheckpoint: { ...telemetry.telemetryCheckpoint, inputExhausted: true },\n }\n }\n return { ...record, ...terminal }\n}\n\n// ── Persistence mapping ─────────────────────────────────────\n\nexport function restoreProjectionRun(row: PersistedProjectionRunRecord): StoredProjectionRunRecord {\n assertProjectionRunNonEmpty(row.id, \"id\")\n assertProjectionRunNonEmpty(row.projectId, \"projectId\")\n assertProjectionRunCounter(row.attempt, \"attempt\")\n if (row.attempt < 1) {\n throw new ProjectionRunError(`[Sixb] Projection run '${row.id}' attempt must be positive.`)\n }\n assertProjectionRunProgress(row.progress)\n assertValidDate(row.startedAt, \"startedAt\")\n if (row.finishedAt) assertValidDate(row.finishedAt, \"finishedAt\")\n if ((row.status === \"running\") !== (row.finishedAt === undefined)) {\n throw incompleteProjectionRun(row.id)\n }\n if ((row.status === \"running\") !== (row.executionToken !== undefined)) {\n throw incompleteProjectionRun(row.id)\n }\n\n const identity = restoreIdentity(row)\n const base = {\n id: row.id,\n projectId: row.projectId,\n identity,\n status: row.status,\n startedAt: new Date(row.startedAt),\n finishedAt: row.finishedAt ? new Date(row.finishedAt) : undefined,\n attempt: row.attempt,\n progress: { ...row.progress },\n errorMessage: row.errorMessage,\n executionToken: row.executionToken,\n }\n\n if (identity.projectionKind === \"link\") {\n if (!row.sourceObjectTypeId || !row.targetObjectTypeId || row.objectTypeId) {\n throw invalidProjectionRunTarget(row.id)\n }\n assertNoCheckpoint(row)\n return {\n ...base,\n identity,\n target: {\n sourceObjectTypeId: row.sourceObjectTypeId,\n targetObjectTypeId: row.targetObjectTypeId,\n },\n }\n }\n if (!row.objectTypeId || row.sourceObjectTypeId || row.targetObjectTypeId) {\n throw invalidProjectionRunTarget(row.id)\n }\n if (identity.projectionKind === \"telemetry\") {\n const telemetryCheckpoint = restoreCheckpoint(row)\n if (row.progress.sourceRowsRead !== telemetryCheckpoint.nextRowOffset) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${row.id}' progress does not match its checkpoint.`\n )\n }\n if (row.status === \"succeeded\" && !telemetryCheckpoint.inputExhausted) {\n throw incompleteProjectionRun(row.id)\n }\n const missingTarget = restoreMissingTarget(row, telemetryCheckpoint)\n return {\n ...base,\n identity,\n target: { objectTypeId: row.objectTypeId },\n telemetryCheckpoint,\n ...(missingTarget ? { missingTarget } : {}),\n }\n }\n assertNoCheckpoint(row)\n return { ...base, identity, target: { objectTypeId: row.objectTypeId } }\n}\n\nexport function publicProjectionRunRecord(record: StoredProjectionRunRecord): ProjectionRunRecord {\n const cloned = structuredClone(record)\n Reflect.deleteProperty(cloned, \"executionToken\")\n return cloned\n}\n\nexport function createProjectionRunClaim(record: StoredProjectionRunRecord): ProjectionRunClaim {\n assertProjectionRunRunning(record)\n const executionToken = requireProjectionRunExecutionToken(record)\n return {\n run: publicProjectionRunRecord(record),\n execution: { projectionRunId: record.id, executionToken },\n }\n}\n\nexport function requireProjectionRunExecutionToken(record: StoredProjectionRunRecord): string {\n if (record.executionToken) return record.executionToken\n throw incompleteProjectionRun(record.id)\n}\n\nexport function staleProjectionRunExecution(id: string): ProjectionRunError {\n return new ProjectionRunError(\n `[Sixb] Projection run '${id}' execution token is stale.`,\n \"execution-lost\"\n )\n}\n\nexport function projectionRunNotFound(projectId: string, id: string): ProjectionRunError {\n return new ProjectionRunError(\n `[Sixb] Projection run '${id}' not found for project '${projectId}'.`\n )\n}\n\nexport function immutableDatasetVersionConflict(\n identity: ProjectionMaterializationIdentity\n): ProjectionRunError {\n return new ProjectionRunError(\n `[Sixb] Dataset version '${identity.datasetVersion.versionId}' reused an immutable dataset version id with different metadata.`\n )\n}\n\n// ── Private helpers ─────────────────────────────────────────\n\nfunction assertPositiveCounter(value: number, fieldName: string): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new ProjectionRunError(\n `[Sixb] Projection run ${fieldName} must be a positive safe integer.`\n )\n }\n}\n\nfunction assertCanonicalTimestamp(value: string, fieldName: string): void {\n const milliseconds = Date.parse(value)\n if (!Number.isFinite(milliseconds) || new Date(milliseconds).toISOString() !== value) {\n throw new ProjectionRunError(\n `[Sixb] Projection run ${fieldName} must be a canonical UTC timestamp.`\n )\n }\n}\n\nfunction assertValidDate(value: Date, fieldName: string): void {\n if (!Number.isFinite(value.getTime())) {\n throw new ProjectionRunError(`[Sixb] Projection run persisted ${fieldName} is invalid.`)\n }\n}\n\nfunction assertProjectionRunDate(value: Date, fieldName: string): void {\n if (!Number.isFinite(value.getTime())) {\n throw new ProjectionRunError(`[Sixb] Projection run ${fieldName} is invalid.`)\n }\n}\n\nfunction isProjectionKind(value: unknown): value is ProjectionKind {\n return value === \"object\" || value === \"link\" || value === \"telemetry\"\n}\n\nfunction assertProjectionTarget(kind: ProjectionKind, target: ProjectionTarget): void {\n if (kind === \"link\") {\n if (!(\"sourceObjectTypeId\" in target)) {\n throw new ProjectionRunError(\n \"[Sixb] Link projection runs must declare source and target object types.\"\n )\n }\n assertProjectionRunNonEmpty(target.sourceObjectTypeId, \"sourceObjectTypeId\")\n assertProjectionRunNonEmpty(target.targetObjectTypeId, \"targetObjectTypeId\")\n return\n }\n if (!(\"objectTypeId\" in target)) {\n throw new ProjectionRunError(\n \"[Sixb] Object and telemetry projection runs must declare one object type.\"\n )\n }\n assertProjectionRunNonEmpty(target.objectTypeId, \"objectTypeId\")\n}\n\nfunction projectionRunIdentitiesEqual(\n left: ProjectionMaterializationIdentity,\n right: ProjectionMaterializationIdentity\n): boolean {\n return (\n left.projectionId === right.projectionId &&\n left.projectionKind === right.projectionKind &&\n left.protocol === right.protocol &&\n left.datasetVersion.datasetId === right.datasetVersion.datasetId &&\n left.datasetVersion.versionId === right.datasetVersion.versionId &&\n left.datasetVersion.createdAt === right.datasetVersion.createdAt &&\n left.ontologyRevision === right.ontologyRevision &&\n left.projectionRevision === right.projectionRevision &&\n left.ownershipHash === right.ownershipHash\n )\n}\n\nfunction projectionTargetsEqual(left: ProjectionTarget, right: ProjectionTarget): boolean {\n if (\"sourceObjectTypeId\" in left || \"sourceObjectTypeId\" in right) {\n return (\n \"sourceObjectTypeId\" in left &&\n \"sourceObjectTypeId\" in right &&\n left.sourceObjectTypeId === right.sourceObjectTypeId &&\n left.targetObjectTypeId === right.targetObjectTypeId\n )\n }\n return left.objectTypeId === right.objectTypeId\n}\n\nfunction assertProjectionRunProgress(progress: ProjectionRunProgress): void {\n for (const key of PROJECTION_RUN_PROGRESS_KEYS) {\n assertProjectionRunCounter(progress[key], key)\n }\n if (progress.sourceRowsSkipped > progress.sourceRowsRead) {\n throw new ProjectionRunError(\n \"[Sixb] Projection run sourceRowsSkipped must not exceed sourceRowsRead.\"\n )\n }\n}\n\nfunction assertFinishDecision(\n record: ProjectionRunRecord,\n input: ProjectionRunTerminalDecision\n): void {\n if (input.status !== \"succeeded\" && input.status !== \"failed\" && input.status !== \"cancelled\") {\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' finish status must be terminal.`\n )\n }\n if (input.protocol !== \"replacement\" && input.protocol !== \"telemetry\") {\n throw new ProjectionRunError(`[Sixb] Projection run '${record.id}' finish protocol is invalid.`)\n }\n if (input.protocol !== record.identity.protocol) {\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' finish protocol does not match its identity.`\n )\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 ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' cannot succeed before input exhaustion.`\n )\n }\n if (inputExhausted !== undefined) {\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' contains telemetry-only completion metadata.`\n )\n }\n}\n\nfunction restoreIdentity(row: PersistedProjectionRunRecord): ProjectionMaterializationIdentity {\n if (\n !row.protocol ||\n !row.datasetVersionCreatedAt ||\n !row.ontologyRevision ||\n !row.projectionRevision ||\n !row.ownershipHash\n ) {\n throw incompleteProjectionRun(row.id)\n }\n const identity = {\n projectionId: row.projectionId,\n projectionKind: row.projectionKind,\n protocol: row.protocol,\n datasetVersion: {\n datasetId: row.datasetId,\n versionId: row.datasetVersionId,\n createdAt: row.datasetVersionCreatedAt,\n },\n ontologyRevision: row.ontologyRevision,\n projectionRevision: row.projectionRevision,\n ownershipHash: row.ownershipHash,\n } as ProjectionMaterializationIdentity\n assertProjectionRunIdentity(identity)\n return identity\n}\n\nfunction restoreCheckpoint(row: PersistedProjectionRunRecord): ProjectionTelemetryCheckpoint {\n if (\n row.fixedBatchSize === undefined ||\n row.nextBatchOrdinal === undefined ||\n row.nextRowOffset === undefined ||\n row.inputExhausted === undefined\n ) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${row.id}' has incomplete checkpoint state.`\n )\n }\n assertPositiveCounter(row.fixedBatchSize, \"fixedBatchSize\")\n assertProjectionRunCounter(row.nextBatchOrdinal, \"nextBatchOrdinal\")\n assertProjectionRunCounter(row.nextRowOffset, \"nextRowOffset\")\n return {\n fixedBatchSize: row.fixedBatchSize,\n nextBatchOrdinal: row.nextBatchOrdinal,\n nextRowOffset: row.nextRowOffset,\n inputExhausted: row.inputExhausted,\n }\n}\n\n/**\n * A wait is either fully persisted or absent. A partially written one would read as \"waiting since\n * the epoch\" or \"waiting for nothing\", and both would decide a run's fate.\n */\nfunction restoreMissingTarget(\n row: PersistedProjectionRunRecord,\n checkpoint: ProjectionTelemetryCheckpoint\n): ProjectionMissingTarget | undefined {\n const columns = [\n row.missingTargetObjectTypeId,\n row.missingTargetObjectId,\n row.missingTargetBatchOrdinal,\n row.missingTargetFirstSeenAt,\n ]\n if (columns.every((column) => column === undefined)) return undefined\n if (\n row.missingTargetObjectTypeId === undefined ||\n row.missingTargetObjectId === undefined ||\n row.missingTargetBatchOrdinal === undefined ||\n row.missingTargetFirstSeenAt === undefined\n ) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${row.id}' has a partially persisted missing target.`\n )\n }\n const missingTarget: ProjectionMissingTarget = {\n objectTypeId: row.missingTargetObjectTypeId,\n objectId: row.missingTargetObjectId,\n batchOrdinal: row.missingTargetBatchOrdinal,\n firstSeenAt: new Date(row.missingTargetFirstSeenAt),\n }\n assertValidDate(missingTarget.firstSeenAt, \"missingTarget.firstSeenAt\")\n assertProjectionRunCounter(missingTarget.batchOrdinal, \"missingTarget.batchOrdinal\")\n if (missingTarget.batchOrdinal !== checkpoint.nextBatchOrdinal) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${row.id}' is waiting on a batch it has already passed.`\n )\n }\n if (missingTarget.objectTypeId !== row.objectTypeId) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${row.id}' is waiting on an object type it does not write.`\n )\n }\n return missingTarget\n}\n\nfunction assertNoCheckpoint(row: PersistedProjectionRunRecord): void {\n if (\n row.fixedBatchSize === undefined &&\n row.nextBatchOrdinal === undefined &&\n row.nextRowOffset === undefined &&\n row.inputExhausted === undefined\n ) {\n return\n }\n throw new ProjectionRunError(\n `[Sixb] Replacement projection run '${row.id}' contains a telemetry checkpoint.`\n )\n}\n\nfunction incompleteProjectionRun(id: string): ProjectionRunError {\n return new ProjectionRunError(\n `[Sixb] Projection run '${id}' has incomplete materialization state.`\n )\n}\n\nfunction invalidProjectionRunTarget(id: string): ProjectionRunError {\n return new ProjectionRunError(`[Sixb] Projection run '${id}' has an invalid target.`)\n}\n\n/**\n * Validates a wait before it is stored, so every adapter refuses the same shapes and the SQL\n * `CHECK` behind them never has to be the thing that catches it.\n *\n * The ordinal has to be the batch the run is actually stuck on: anchored to a stale one, a wait\n * would survive the progress that resolved it and fail a run that is working. The object type\n * has to be the one this run writes, since that is the only type its telemetry can reference.\n */\nexport function assertProjectionMissingTarget(\n record: TelemetryProjectionRunRecord,\n missingTarget: ProjectionMissingTarget\n): ProjectionMissingTarget {\n assertProjectionRunNonEmpty(missingTarget.objectTypeId, \"missingTarget.objectTypeId\")\n assertProjectionRunNonEmpty(missingTarget.objectId, \"missingTarget.objectId\")\n assertProjectionRunCounter(missingTarget.batchOrdinal, \"missingTarget.batchOrdinal\")\n if (Number.isNaN(missingTarget.firstSeenAt.getTime())) {\n throw new ProjectionRunError(\"[Sixb] Projection run missingTarget.firstSeenAt is invalid.\")\n }\n if (missingTarget.objectTypeId !== record.target.objectTypeId) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' cannot wait on '${missingTarget.objectTypeId}'; it writes '${record.target.objectTypeId}'.`\n )\n }\n if (missingTarget.batchOrdinal !== record.telemetryCheckpoint.nextBatchOrdinal) {\n throw new ProjectionRunError(\n `[Sixb] Telemetry projection run '${record.id}' cannot wait on batch ${missingTarget.batchOrdinal}; it is at ${record.telemetryCheckpoint.nextBatchOrdinal}.`\n )\n }\n return missingTarget\n}\n\nexport function requireTelemetryProjectionRun<TRecord extends ProjectionRunRecord>(\n record: TRecord\n): TRecord & TelemetryProjectionRunRecord {\n if (isTelemetryProjectionRun(record)) return record as TRecord & TelemetryProjectionRunRecord\n throw new ProjectionRunError(\n `[Sixb] Projection run '${record.id}' does not have a telemetry checkpoint.`\n )\n}\n\ntype ProjectionRunStart<TKind extends ProjectionKind> = Extract<\n StartOrReclaimProjectionRunInput,\n { readonly identity: { readonly projectionKind: TKind } }\n>\n\nfunction isTelemetryProjectionRun(\n record: ProjectionRunRecord\n): record is TelemetryProjectionRunRecord {\n return record.identity.projectionKind === \"telemetry\"\n}\n"
|
|
8
|
-
],
|
|
9
|
-
"mappings": "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",
|
|
10
|
-
"debugId": "6023FB3FE52DBB3D64756E2164756E21",
|
|
11
|
-
"names": []
|
|
12
|
-
}
|
package/dist/chunk-590dejbp.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import {
|
|
3
|
-
sha256Canonical
|
|
4
|
-
} from "./chunk-wxhdnwh4.js";
|
|
5
|
-
|
|
6
|
-
// src/projections/internal.ts
|
|
7
|
-
var projectionRegistryKey = Symbol("sixb.projectionRegistry");
|
|
8
|
-
function registerProjectionRegistry(owner, registry) {
|
|
9
|
-
const registered = owner[projectionRegistryKey];
|
|
10
|
-
if (registered && registered !== registry) {
|
|
11
|
-
throw new Error("[Sixb] Projection registry is already registered for this owner.");
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(owner, projectionRegistryKey, {
|
|
14
|
-
configurable: false,
|
|
15
|
-
enumerable: false,
|
|
16
|
-
value: registry,
|
|
17
|
-
writable: false
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
function getProjectionRegistry(owner) {
|
|
21
|
-
const registry = owner[projectionRegistryKey];
|
|
22
|
-
if (registry)
|
|
23
|
-
return registry;
|
|
24
|
-
throw new Error("[Sixb] Projection registry is not registered for this runtime.");
|
|
25
|
-
}
|
|
26
|
-
function getProjectionDispatchDescriptors(owner) {
|
|
27
|
-
return getProjectionRegistry(owner).getDispatchDescriptors();
|
|
28
|
-
}
|
|
29
|
-
function shareProjectionRegistry(source, target) {
|
|
30
|
-
registerProjectionRegistry(target, getProjectionRegistry(source));
|
|
31
|
-
}
|
|
32
|
-
function createProjectionRunId(projectId, identity) {
|
|
33
|
-
return sha256Canonical({
|
|
34
|
-
projectId,
|
|
35
|
-
projectionId: identity.projectionId,
|
|
36
|
-
projectionKind: identity.projectionKind,
|
|
37
|
-
protocol: identity.protocol,
|
|
38
|
-
datasetId: identity.datasetVersion.datasetId,
|
|
39
|
-
versionId: identity.datasetVersion.versionId,
|
|
40
|
-
createdAt: identity.datasetVersion.createdAt,
|
|
41
|
-
ontologyRevision: identity.ontologyRevision,
|
|
42
|
-
projectionRevision: identity.projectionRevision,
|
|
43
|
-
ownershipHash: identity.ownershipHash
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export { registerProjectionRegistry, getProjectionRegistry, getProjectionDispatchDescriptors, shareProjectionRegistry, createProjectionRunId };
|
|
48
|
-
|
|
49
|
-
//# debugId=9599F169852DD35264756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/projections/internal.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { sha256Canonical } from \"../materialization/identity\"\nimport type { ProjectionMaterializationIdentity } from \"../materialization/model\"\nimport type { ProjectionRegistry } from \"./registry\"\nimport type { ProjectionDispatchDescriptor } from \"./types\"\n\nconst projectionRegistryKey: unique symbol = Symbol(\"sixb.projectionRegistry\")\n\ninterface ProjectionRegistryOwner {\n readonly [projectionRegistryKey]?: ProjectionRegistry\n}\n\nexport function registerProjectionRegistry(owner: object, registry: ProjectionRegistry): void {\n const registered = (owner as ProjectionRegistryOwner)[projectionRegistryKey]\n if (registered && registered !== registry) {\n throw new Error(\"[Sixb] Projection registry is already registered for this owner.\")\n }\n\n Object.defineProperty(owner, projectionRegistryKey, {\n configurable: false,\n enumerable: false,\n value: registry,\n writable: false,\n })\n}\n\nexport function getProjectionRegistry(owner: object): ProjectionRegistry {\n const registry = (owner as ProjectionRegistryOwner)[projectionRegistryKey]\n if (registry) return registry\n throw new Error(\"[Sixb] Projection registry is not registered for this runtime.\")\n}\n\n/** Read-only orchestration view without exposing the registry capability to callers. */\nexport function getProjectionDispatchDescriptors(\n owner: object\n): readonly ProjectionDispatchDescriptor[] {\n return getProjectionRegistry(owner).getDispatchDescriptors()\n}\n\n/** Copies the opaque registry capability when an internal runtime context is reconstructed. */\nexport function shareProjectionRegistry(source: object, target: object): void {\n registerProjectionRegistry(target, getProjectionRegistry(source))\n}\n\nexport function createProjectionRunId(\n projectId: string,\n identity: ProjectionMaterializationIdentity\n): string {\n return sha256Canonical({\n projectId,\n projectionId: identity.projectionId,\n projectionKind: identity.projectionKind,\n protocol: identity.protocol,\n datasetId: identity.datasetVersion.datasetId,\n versionId: identity.datasetVersion.versionId,\n createdAt: identity.datasetVersion.createdAt,\n ontologyRevision: identity.ontologyRevision,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n })\n}\n\n/**\n * What the projection worker needs and an app author does not.\n *\n * `projectionTargetOf` derives the object types a projection writes, to record them on the run.\n * `validateTelemetryProjectionFieldMapping` re-checks a telemetry mapping against the dataset schema\n * before writing. Both are plumbing, so they live here instead of on the `@sixb/core` root.\n *\n * `projectionKindOf` deliberately does not follow: nothing outside `packages/core` calls it, and a\n * subpath export with no importer is the dead surface this curation removes.\n */\nexport { projectionTargetOf } from \"./builders\"\nexport { validateTelemetryProjectionFieldMapping } from \"./validation\"\n\nexport type { ProjectionDispatchDescriptor, ProjectionMaterializationIdentity, ProjectionRegistry }\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;;;;;AAKA,IAAM,wBAAuC,OAAO,yBAAyB;AAMtE,SAAS,0BAA0B,CAAC,OAAe,UAAoC;AAAA,EAC5F,MAAM,aAAc,MAAkC;AAAA,EACtD,IAAI,cAAc,eAAe,UAAU;AAAA,IACzC,MAAM,IAAI,MAAM,kEAAkE;AAAA,EACpF;AAAA,EAEA,OAAO,eAAe,OAAO,uBAAuB;AAAA,IAClD,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAAA;AAGI,SAAS,qBAAqB,CAAC,OAAmC;AAAA,EACvE,MAAM,WAAY,MAAkC;AAAA,EACpD,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,MAAM,IAAI,MAAM,gEAAgE;AAAA;AAI3E,SAAS,gCAAgC,CAC9C,OACyC;AAAA,EACzC,OAAO,sBAAsB,KAAK,EAAE,uBAAuB;AAAA;AAItD,SAAS,uBAAuB,CAAC,QAAgB,QAAsB;AAAA,EAC5E,2BAA2B,QAAQ,sBAAsB,MAAM,CAAC;AAAA;AAG3D,SAAS,qBAAqB,CACnC,WACA,UACQ;AAAA,EACR,OAAO,gBAAgB;AAAA,IACrB;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,gBAAgB,SAAS;AAAA,IACzB,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS,eAAe;AAAA,IACnC,WAAW,SAAS,eAAe;AAAA,IACnC,WAAW,SAAS,eAAe;AAAA,IACnC,kBAAkB,SAAS;AAAA,IAC3B,oBAAoB,SAAS;AAAA,IAC7B,eAAe,SAAS;AAAA,EAC1B,CAAC;AAAA;",
|
|
8
|
-
"debugId": "9599F169852DD35264756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/predicates/validation.ts", "../src/predicates/builders.ts", "../src/predicates/evaluate.ts", "../src/schedules/errors.ts", "../src/schedules/cron.ts", "../src/schedules/builders.ts", "../src/schedules/next-occurrence.ts", "../src/schedules/runtime.ts", "../src/schedules/types.ts", "../src/schedules/validation.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type {\n LinkPredicateOperator,\n Predicate,\n PredicateValue,\n PropertyPredicateOperator,\n} from \"./types\"\n\nconst propertyOperators = new Set<PropertyPredicateOperator>([\n \"eq\",\n \"notEq\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"isPresent\",\n \"isMissing\",\n])\n\nconst propertyValueOperators = new Set<PropertyPredicateOperator>([\n \"eq\",\n \"notEq\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n])\n\nconst linkOperators = new Set<LinkPredicateOperator>([\"exists\", \"isMissing\"])\n\ntype AssertPredicateShapeOptions = {\n readonly subject?: string\n readonly createError?: (message: string) => Error\n}\n\nfunction defaultError(message: string): Error {\n return new Error(message)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction assertNonEmptyString(\n value: unknown,\n field: string,\n createError: (message: string) => Error\n): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw createError(`${field} must not be empty.`)\n }\n}\n\nexport function isPredicateValue(value: unknown): value is PredicateValue {\n if (value === null) {\n return true\n }\n\n if (typeof value === \"number\") {\n return Number.isFinite(value)\n }\n\n return typeof value === \"string\" || typeof value === \"boolean\"\n}\n\n/**\n * Validate the portable predicate AST shape.\n *\n * Primitive-specific validators can wrap this with their own `subject` so\n * errors read as \"Rule ...\" or \"Trigger ...\" while sharing the same checks.\n */\nexport function assertPredicateShape(\n value: unknown,\n options: AssertPredicateShapeOptions = {}\n): asserts value is Predicate {\n const subject = options.subject ?? \"Predicate\"\n const createError = options.createError ?? defaultError\n\n if (!isRecord(value)) {\n throw createError(`${subject} predicate must be an object.`)\n }\n\n if (value.kind === \"all\" || value.kind === \"any\") {\n if (!Array.isArray(value.predicates)) {\n throw createError(`${subject} ${value.kind} predicate must declare predicates.`)\n }\n\n for (const predicate of value.predicates) {\n assertPredicateShape(predicate, options)\n }\n return\n }\n\n if (value.kind === \"not\") {\n assertPredicateShape(value.predicate, options)\n return\n }\n\n if (value.kind === \"property\") {\n assertNonEmptyString(value.propertyId, `${subject} property predicate propertyId`, createError)\n\n if (!propertyOperators.has(value.op as PropertyPredicateOperator)) {\n throw createError(\n `${subject} property predicate '${value.propertyId}' has invalid operator '${String(\n value.op\n )}'.`\n )\n }\n\n const op = value.op as PropertyPredicateOperator\n const hasValue = Object.hasOwn(value, \"value\")\n if (propertyValueOperators.has(op)) {\n if (!hasValue || !isPredicateValue(value.value)) {\n throw createError(\n `${subject} property predicate '${value.propertyId}' must declare a value.`\n )\n }\n return\n }\n\n if (hasValue) {\n throw createError(\n `${subject} property predicate '${value.propertyId}' must not declare a value.`\n )\n }\n return\n }\n\n if (value.kind === \"field\") {\n assertNonEmptyString(value.field, `${subject} field predicate field`, createError)\n if (value.op !== \"eq\") {\n throw createError(\n `${subject} field predicate '${value.field}' has invalid operator '${String(value.op)}'.`\n )\n }\n if (!isPredicateValue(value.value)) {\n throw createError(`${subject} field predicate '${value.field}' must declare a value.`)\n }\n return\n }\n\n if (value.kind === \"link\") {\n assertNonEmptyString(value.linkId, `${subject} link predicate linkId`, createError)\n if (!linkOperators.has(value.op as LinkPredicateOperator)) {\n throw createError(\n `${subject} link predicate '${value.linkId}' has invalid operator '${String(value.op)}'.`\n )\n }\n return\n }\n\n throw createError(`Unknown ${subject.toLowerCase()} predicate kind '${String(value.kind)}'.`)\n}\n",
|
|
6
|
-
"import type {\n FieldPredicate,\n LinkPredicate,\n LinkPredicateBuilder,\n Predicate,\n PredicateValue,\n PropertyPredicate,\n PropertyPredicateOperator,\n} from \"./types\"\nimport { isPredicateValue } from \"./validation\"\n\nexport type RuntimePropertyPredicateBuilder<TResult = PropertyPredicate> = {\n eq(value: PredicateValue): TResult\n notEq(value: PredicateValue): TResult\n gt(value: PredicateValue): TResult\n gte(value: PredicateValue): TResult\n lt(value: PredicateValue): TResult\n lte(value: PredicateValue): TResult\n isPresent(): TResult\n isMissing(): TResult\n}\n\nexport function createFieldPredicate(\n field: string,\n value: PredicateValue,\n options: Pick<PropertyPredicateBuilderOptions<unknown>, \"subject\" | \"createError\"> = {}\n): FieldPredicate {\n const subject = options.subject ?? \"Predicate\"\n const createError = options.createError ?? defaultError\n if (!field.trim()) {\n throw createError(`${subject} predicate field must not be empty.`)\n }\n assertSerializablePredicateValue(value, subject, createError)\n\n return { kind: \"field\", field, op: \"eq\", value }\n}\n\nexport type PropertyPredicateBuilderOptions<TResult> = {\n readonly subject?: string\n readonly createError?: (message: string) => Error\n readonly wrap?: (predicate: PropertyPredicate) => TResult\n}\n\nfunction defaultError(message: string): Error {\n return new Error(message)\n}\n\nfunction assertSerializablePredicateValue(\n value: PredicateValue,\n subject: string,\n createError: (message: string) => Error\n): void {\n if (!isPredicateValue(value)) {\n throw createError(`${subject} predicate values must be serializable scalar values.`)\n }\n}\n\nexport function createPropertyPredicate(\n propertyId: string,\n op: PropertyPredicateOperator,\n value?: PredicateValue,\n options: Pick<PropertyPredicateBuilderOptions<unknown>, \"subject\" | \"createError\"> = {}\n): PropertyPredicate {\n const subject = options.subject ?? \"Predicate\"\n const createError = options.createError ?? defaultError\n if (value !== undefined) {\n assertSerializablePredicateValue(value, subject, createError)\n }\n\n return {\n kind: \"property\",\n propertyId,\n op,\n ...(value !== undefined ? { value } : {}),\n }\n}\n\nexport function createPropertyPredicateBuilder<TResult = PropertyPredicate>(\n propertyId: string,\n options: PropertyPredicateBuilderOptions<TResult> = {}\n): RuntimePropertyPredicateBuilder<TResult> {\n const wrap = options.wrap ?? ((predicate: PropertyPredicate) => predicate as TResult)\n const createPredicate = (op: PropertyPredicateOperator, value?: PredicateValue) =>\n wrap(createPropertyPredicate(propertyId, op, value, options))\n\n return {\n eq(value) {\n return createPredicate(\"eq\", value)\n },\n notEq(value) {\n return createPredicate(\"notEq\", value)\n },\n gt(value) {\n return createPredicate(\"gt\", value)\n },\n gte(value) {\n return createPredicate(\"gte\", value)\n },\n lt(value) {\n return createPredicate(\"lt\", value)\n },\n lte(value) {\n return createPredicate(\"lte\", value)\n },\n isPresent() {\n return createPredicate(\"isPresent\")\n },\n isMissing() {\n return createPredicate(\"isMissing\")\n },\n }\n}\n\nexport function createLinkPredicateBuilder(linkId: string): LinkPredicateBuilder {\n return {\n exists(): LinkPredicate {\n return {\n kind: \"link\",\n linkId,\n op: \"exists\",\n }\n },\n isMissing(): LinkPredicate {\n return {\n kind: \"link\",\n linkId,\n op: \"isMissing\",\n }\n },\n }\n}\n\nexport function allPredicates(predicates: readonly Predicate[]): Predicate {\n return {\n kind: \"all\",\n predicates: [...predicates],\n }\n}\n\nexport function anyPredicates(predicates: readonly Predicate[]): Predicate {\n return {\n kind: \"any\",\n predicates: [...predicates],\n }\n}\n\nexport function notPredicate(predicate: Predicate): Predicate {\n return {\n kind: \"not\",\n predicate,\n }\n}\n",
|
|
7
|
-
"import { compareDecimalValues, isDecimalValue } from \"../ontology/decimal\"\nimport type {\n FieldPredicate,\n LinkPredicate,\n Predicate,\n PredicateValue,\n PropertyPredicate,\n} from \"./types\"\n\nexport interface PredicateEvaluationSubject {\n readonly properties?: Readonly<Record<string, unknown>>\n readonly fields?: Readonly<Record<string, unknown>>\n readonly links?: Readonly<Record<string, boolean>>\n}\n\nexport function evaluatePredicate(\n predicate: Predicate,\n subject: PredicateEvaluationSubject\n): boolean {\n switch (predicate.kind) {\n case \"all\":\n return predicate.predicates.every((child) => evaluatePredicate(child, subject))\n case \"any\":\n return predicate.predicates.some((child) => evaluatePredicate(child, subject))\n case \"not\":\n return !evaluatePredicate(predicate.predicate, subject)\n case \"property\":\n return evaluatePropertyPredicate(predicate, subject.properties ?? {})\n case \"field\":\n return evaluateFieldPredicate(predicate, subject.fields ?? {})\n case \"link\":\n return evaluateLinkPredicate(predicate, subject.links ?? {})\n }\n}\n\nfunction evaluateFieldPredicate(\n predicate: FieldPredicate,\n fields: Readonly<Record<string, unknown>>\n): boolean {\n return predicateValueEquals(fields[predicate.field], predicate.value)\n}\n\nfunction evaluatePropertyPredicate(\n predicate: PropertyPredicate,\n properties: Readonly<Record<string, unknown>>\n): boolean {\n const value = properties[predicate.propertyId]\n const isPresent = value !== undefined && value !== null\n\n switch (predicate.op) {\n case \"eq\":\n return isPresent && predicateValueEquals(value, predicate.value)\n case \"notEq\":\n return !isPresent || !predicateValueEquals(value, predicate.value)\n case \"gt\":\n return compareOrderedValues(value, predicate.value, (comparison) => comparison > 0)\n case \"gte\":\n return compareOrderedValues(value, predicate.value, (comparison) => comparison >= 0)\n case \"lt\":\n return compareOrderedValues(value, predicate.value, (comparison) => comparison < 0)\n case \"lte\":\n return compareOrderedValues(value, predicate.value, (comparison) => comparison <= 0)\n case \"isPresent\":\n return isPresent\n case \"isMissing\":\n return !isPresent\n }\n}\n\nfunction evaluateLinkPredicate(\n predicate: LinkPredicate,\n links: Readonly<Record<string, boolean>>\n): boolean {\n const exists = links[predicate.linkId] === true\n switch (predicate.op) {\n case \"exists\":\n return exists\n case \"isMissing\":\n return !exists\n }\n}\n\nfunction predicateValueEquals(left: unknown, right: PredicateValue | undefined): boolean {\n return isPredicateComparableValue(left) && right !== undefined && Object.is(left, right)\n}\n\nfunction isPredicateComparableValue(value: unknown): value is PredicateValue {\n return (\n value === null || typeof value === \"string\" || typeof value === \"boolean\" || isNumber(value)\n )\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value)\n}\n\nfunction compareOrderedValues(\n left: unknown,\n right: unknown,\n matches: (comparison: number) => boolean\n): boolean {\n if (isNumber(left) && isNumber(right)) return matches(left - right)\n if (isDecimalValue(left) && isDecimalValue(right)) {\n return matches(compareDecimalValues(left, right))\n }\n return false\n}\n",
|
|
8
|
-
"export class ScheduleValidationError extends Error {\n readonly name = \"ScheduleValidationError\"\n}\n\nexport class CronValidationError extends Error {\n readonly name = \"CronValidationError\"\n}\n",
|
|
9
|
-
"import { CronValidationError } from \"./errors\"\n\nexport interface CronFieldMatcher {\n readonly isAny: boolean\n readonly values: ReadonlySet<number> | null\n matches(value: number): boolean\n}\n\nfunction parseInteger(input: string, fieldName: string): number {\n if (!/^\\d+$/.test(input)) {\n throw new CronValidationError(`Invalid ${fieldName}: '${input}'.`)\n }\n\n return Number.parseInt(input, 10)\n}\n\nexport function createCronFieldMatcher(params: {\n field: string\n min: number\n max: number\n fieldName: string\n normalize?: (value: number) => number\n}): CronFieldMatcher {\n const { field, min, max, fieldName } = params\n const normalize = params.normalize ?? ((value: number) => value)\n const input = field.trim()\n\n if (!input) {\n throw new CronValidationError(`Empty cron ${fieldName} field.`)\n }\n\n if (input === \"*\") {\n return {\n isAny: true,\n values: null,\n matches: () => true,\n }\n }\n\n const allowed = new Set<number>()\n const segments = input.split(\",\")\n\n for (const segment of segments) {\n if (!segment) {\n throw new CronValidationError(`Invalid cron ${fieldName} field: '${input}'.`)\n }\n\n const stepParts = segment.split(\"/\")\n if (stepParts.length > 2) {\n throw new CronValidationError(`Invalid cron ${fieldName} segment: '${segment}'.`)\n }\n\n const base = stepParts[0]\n const step =\n stepParts[1] === undefined\n ? 1\n : parseInteger(stepParts[1], `cron ${fieldName} step for '${segment}'`)\n\n if (step <= 0) {\n throw new CronValidationError(`Cron ${fieldName} step must be > 0 in segment '${segment}'.`)\n }\n\n let rangeStart: number\n let rangeEnd: number\n\n if (base === \"*\") {\n rangeStart = min\n rangeEnd = max\n } else if (base.includes(\"-\")) {\n const [rawStart, rawEnd] = base.split(\"-\")\n if (!rawStart || !rawEnd) {\n throw new CronValidationError(`Invalid cron ${fieldName} range: '${base}'.`)\n }\n\n rangeStart = parseInteger(rawStart, `cron ${fieldName} range start for '${base}'`)\n rangeEnd = parseInteger(rawEnd, `cron ${fieldName} range end for '${base}'`)\n } else {\n const value = parseInteger(base, `cron ${fieldName} value '${base}'`)\n rangeStart = value\n rangeEnd = value\n }\n\n if (rangeStart > rangeEnd) {\n throw new CronValidationError(\n `Cron ${fieldName} range start must be <= end in segment '${segment}'.`\n )\n }\n\n for (let value = rangeStart; value <= rangeEnd; value += step) {\n const normalized = normalize(value)\n if (normalized < min || normalized > max) {\n throw new CronValidationError(\n `Cron ${fieldName} value ${value} is outside range ${min}-${max}.`\n )\n }\n allowed.add(normalized)\n }\n }\n\n return {\n isAny: false,\n values: allowed,\n matches(value: number) {\n const normalized = normalize(value)\n return allowed.has(normalized)\n },\n }\n}\n\nexport function createCronMatcher(expression: string): (now: Date) => boolean {\n const parts = expression.trim().split(/\\s+/)\n if (parts.length !== 5) {\n throw new CronValidationError(\n `Invalid cron expression '${expression}'. Expected 5 fields (minute hour day month weekday).`\n )\n }\n\n const [minuteField, hourField, dayOfMonthField, monthField, dayOfWeekField] = parts\n\n const minute = createCronFieldMatcher({\n field: minuteField,\n min: 0,\n max: 59,\n fieldName: \"minute\",\n })\n const hour = createCronFieldMatcher({\n field: hourField,\n min: 0,\n max: 23,\n fieldName: \"hour\",\n })\n const dayOfMonth = createCronFieldMatcher({\n field: dayOfMonthField,\n min: 1,\n max: 31,\n fieldName: \"day-of-month\",\n })\n const month = createCronFieldMatcher({\n field: monthField,\n min: 1,\n max: 12,\n fieldName: \"month\",\n })\n const dayOfWeek = createCronFieldMatcher({\n field: dayOfWeekField,\n min: 0,\n max: 6,\n fieldName: \"day-of-week\",\n normalize: (value) => (value === 7 ? 0 : value),\n })\n\n return (now: Date) => {\n if (!minute.matches(now.getMinutes())) return false\n if (!hour.matches(now.getHours())) return false\n if (!month.matches(now.getMonth() + 1)) return false\n\n const dayOfMonthMatches = dayOfMonth.matches(now.getDate())\n const dayOfWeekMatches = dayOfWeek.matches(now.getDay())\n const dayMatches =\n dayOfMonth.isAny || dayOfWeek.isAny\n ? dayOfMonthMatches && dayOfWeekMatches\n : dayOfMonthMatches || dayOfWeekMatches\n\n return dayMatches\n }\n}\n",
|
|
10
|
-
"import type { EventSelectorSpec } from \"../events/selectors\"\nimport { eventSelectorSpec } from \"../events/selectors\"\nimport {\n allPredicates,\n anyPredicates,\n assertPredicateShape,\n createFieldPredicate,\n createPropertyPredicateBuilder,\n notPredicate,\n type Predicate,\n type RuntimePropertyPredicateBuilder,\n} from \"../predicates\"\nimport { createCronMatcher } from \"./cron\"\nimport { ScheduleValidationError } from \"./errors\"\nimport type {\n CronScheduleDefinition,\n EventScheduleCondition,\n EventScheduleConditionScope,\n EventScheduleDefinition,\n EventScheduleScopedPredicate,\n ScheduleBuilder,\n} from \"./types\"\n\ntype RuntimeEventSchedulePropertyPredicateBuilder =\n RuntimePropertyPredicateBuilder<EventScheduleScopedPredicate>\n\ntype RuntimeEventSchedulePredicateSubject = {\n p: Record<string, RuntimeEventSchedulePropertyPredicateBuilder>\n all(...predicates: EventScheduleCondition[]): EventScheduleCondition\n any(...predicates: EventScheduleCondition[]): EventScheduleCondition\n not(predicate: EventScheduleCondition): EventScheduleCondition\n}\n\ntype RuntimeEventSchedulePredicateContext = {\n object?: RuntimeEventSchedulePredicateSubject\n link?: RuntimeEventSchedulePredicateSubject\n target?: RuntimeEventScheduleTargetPredicateSubject\n}\n\ntype RuntimeEventScheduleTargetPredicateSubject = {\n is(objectType: { readonly id: string }): EventScheduleCondition\n id: { eq(value: string): EventScheduleCondition }\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (!value.trim()) {\n throw new ScheduleValidationError(`Schedule ${field} must not be empty.`)\n }\n}\n\nfunction validateTimezone(timezone: string): void {\n try {\n Intl.DateTimeFormat(undefined, { timeZone: timezone })\n } catch {\n throw new ScheduleValidationError(`Invalid timezone '${timezone}'.`)\n }\n}\n\nfunction createCondition(\n scope: EventScheduleConditionScope,\n predicate: Predicate\n): EventScheduleCondition {\n return {\n kind: \"becomesTrue\",\n scope,\n predicate,\n }\n}\n\nfunction createEventSchedulePropertyPredicateBuilder(\n scope: EventScheduleConditionScope,\n propertyId: string\n): RuntimeEventSchedulePropertyPredicateBuilder {\n return createPropertyPredicateBuilder(propertyId, {\n subject: \"Schedule\",\n createError: (message) => new ScheduleValidationError(message),\n wrap: (predicate) => createCondition(scope, predicate),\n })\n}\n\nfunction createPredicateSubject(\n scope: EventScheduleConditionScope\n): RuntimeEventSchedulePredicateSubject {\n const properties = new Proxy<Record<string, RuntimeEventSchedulePropertyPredicateBuilder>>(\n {},\n {\n get(target, property) {\n if (typeof property !== \"string\") return undefined\n target[property] ??= createEventSchedulePropertyPredicateBuilder(scope, property)\n return target[property]\n },\n }\n )\n\n return {\n p: properties,\n all(...conditions) {\n return createCondition(\n scope,\n allPredicates(conditions.map((condition) => condition.predicate))\n )\n },\n any(...conditions) {\n return createCondition(\n scope,\n anyPredicates(conditions.map((condition) => condition.predicate))\n )\n },\n not(condition) {\n return createCondition(scope, notPredicate(condition.predicate))\n },\n }\n}\n\nfunction createTargetPredicateSubject(): RuntimeEventScheduleTargetPredicateSubject {\n const condition = (field: string, value: string) =>\n createCondition(\n \"event.link\",\n createFieldPredicate(field, value, {\n subject: \"Schedule\",\n createError: (message) => new ScheduleValidationError(message),\n })\n )\n\n return {\n is(objectType) {\n assertNonEmpty(objectType.id, \"target object type id\")\n return condition(\"target.objectTypeId\", objectType.id)\n },\n id: {\n eq(value) {\n assertNonEmpty(value, \"target object id\")\n return condition(\"target.primaryId\", value)\n },\n },\n }\n}\n\nfunction createPredicateContext(selector: EventSelectorSpec): RuntimeEventSchedulePredicateContext {\n if (selector.topic === \"objects\") {\n return { object: createPredicateSubject(\"event.object\") }\n }\n\n if (selector.topic === \"links\") {\n return {\n link: createPredicateSubject(\"event.link\"),\n target: createTargetPredicateSubject(),\n }\n }\n\n return {}\n}\n\nfunction assertEventSource(source: EventSelectorSpec): void {\n if (!source.types || source.types.length === 0) {\n throw new ScheduleValidationError(\n \"Schedule event source must select an event operation, e.g. .created(), .updated(), or .succeeded().\"\n )\n }\n\n switch (source.topic) {\n case \"objects\":\n assertNonEmpty(source.objectTypeId ?? \"\", \"event source objectTypeId\")\n return\n case \"links\":\n assertNonEmpty(source.objectTypeId ?? \"\", \"event source objectTypeId\")\n assertNonEmpty(source.linkId ?? \"\", \"event source linkId\")\n return\n case \"rules\":\n assertNonEmpty(source.ruleId ?? \"\", \"event source ruleId\")\n return\n case \"actions\":\n assertNonEmpty(source.actionId ?? \"\", \"event source actionId\")\n return\n case \"datasets\":\n assertNonEmpty(source.datasetId ?? \"\", \"event source datasetId\")\n return\n case \"syncs\":\n assertNonEmpty(source.syncId ?? \"\", \"event source syncId\")\n return\n case \"pipelines\":\n assertNonEmpty(source.pipelineId ?? \"\", \"event source pipelineId\")\n return\n default:\n throw new ScheduleValidationError(\n \"Schedule event source must select object, link, rule, action, dataset, sync, or pipeline events.\"\n )\n }\n}\n\n/** Define an inert, reusable policy describing when work should run. */\nexport function defineSchedule<const TId extends string>(id: TId): ScheduleBuilder<TId>\nexport function defineSchedule(id: string): ScheduleBuilder<string> {\n assertNonEmpty(id, \"id\")\n\n return {\n cron(expression, options): CronScheduleDefinition {\n assertNonEmpty(expression, \"cron expression\")\n createCronMatcher(expression)\n\n if (options?.timezone !== undefined) validateTimezone(options.timezone)\n\n return {\n kind: \"schedule\",\n id,\n trigger: {\n type: \"cron\",\n expression,\n ...(options?.timezone !== undefined ? { timezone: options.timezone } : {}),\n },\n }\n },\n on(selector: EventSelectorSpec): unknown {\n const source = eventSelectorSpec(selector)\n assertEventSource(source)\n\n const base = {\n kind: \"schedule\" as const,\n id,\n trigger: {\n type: \"event\" as const,\n source,\n },\n }\n\n if (source.topic !== \"objects\" && source.topic !== \"links\") {\n return base satisfies EventScheduleDefinition\n }\n\n Object.defineProperty(base, \"where\", {\n enumerable: false,\n value(callback: (event: RuntimeEventSchedulePredicateContext) => EventScheduleCondition) {\n const condition = callback(createPredicateContext(source))\n if (!condition || condition.kind !== \"becomesTrue\") {\n throw new ScheduleValidationError(\n \"Schedule condition must be built from the event DSL.\"\n )\n }\n assertPredicateShape(condition.predicate, {\n subject: \"Schedule\",\n createError: (message) => new ScheduleValidationError(message),\n })\n\n return {\n ...base,\n trigger: {\n ...base.trigger,\n condition,\n },\n } satisfies EventScheduleDefinition\n },\n })\n\n return base\n },\n } as ScheduleBuilder<string>\n}\n",
|
|
11
|
-
"import { type CronFieldMatcher, createCronFieldMatcher } from \"./cron\"\nimport { CronValidationError } from \"./errors\"\n\nconst MAX_SEARCH_MS = 4 * 365.25 * 24 * 60 * 60 * 1000 // ~4 years\n\ninterface LocalComponents {\n minute: number\n hour: number\n dayOfMonth: number\n month: number // 1-based\n dayOfWeek: number // 0=Sunday\n}\n\n// Intl.DateTimeFormat construction is expensive (~30-100µs each); the search\n// loop in nextCronOccurrence calls getLocalComponents many times for sparse\n// crons, so we cache one formatter per timezone for the lifetime of the process.\nconst timezoneFormatterCache = new Map<string, Intl.DateTimeFormat>()\n\nfunction getTimezoneFormatter(timezone: string): Intl.DateTimeFormat {\n let formatter = timezoneFormatterCache.get(timezone)\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(\"en-US\", {\n timeZone: timezone,\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n weekday: \"short\",\n hour12: false,\n })\n timezoneFormatterCache.set(timezone, formatter)\n }\n return formatter\n}\n\nfunction getLocalComponents(date: Date, timezone: string | undefined): LocalComponents {\n if (timezone === undefined) {\n return {\n minute: date.getUTCMinutes(),\n hour: date.getUTCHours(),\n dayOfMonth: date.getUTCDate(),\n month: date.getUTCMonth() + 1,\n dayOfWeek: date.getUTCDay(),\n }\n }\n\n const formatter = getTimezoneFormatter(timezone)\n const parts = formatter.formatToParts(date)\n const get = (type: Intl.DateTimeFormatPartTypes): string => {\n const part = parts.find((p) => p.type === type)\n if (!part) throw new CronValidationError(`Failed to extract ${type} for timezone ${timezone}.`)\n return part.value\n }\n\n const weekdayStr = get(\"weekday\")\n const weekdayMap: Record<string, number> = {\n Sun: 0,\n Mon: 1,\n Tue: 2,\n Wed: 3,\n Thu: 4,\n Fri: 5,\n Sat: 6,\n }\n\n return {\n minute: Number.parseInt(get(\"minute\"), 10),\n hour: Number.parseInt(get(\"hour\"), 10) % 24,\n dayOfMonth: Number.parseInt(get(\"day\"), 10),\n month: Number.parseInt(get(\"month\"), 10),\n dayOfWeek: weekdayMap[weekdayStr] ?? 0,\n }\n}\n\nfunction matchesDay(\n dayOfMonth: CronFieldMatcher,\n dayOfWeek: CronFieldMatcher,\n comp: LocalComponents\n): boolean {\n const domMatches = dayOfMonth.matches(comp.dayOfMonth)\n const dowMatches = dayOfWeek.matches(comp.dayOfWeek)\n\n if (dayOfMonth.isAny || dayOfWeek.isAny) {\n return domMatches && dowMatches\n }\n return domMatches || dowMatches\n}\n\n/**\n * Compute the next occurrence of a cron expression after `after`.\n *\n * The returned Date is always in UTC. When `timezone` is provided, the cron\n * fields are evaluated against wall-clock time in that timezone.\n *\n * The current minute is never returned — the earliest possible result is\n * `after` rounded up to the next whole minute.\n */\nexport function nextCronOccurrence(expression: string, after: Date, timezone?: string): Date {\n const parts = expression.trim().split(/\\s+/)\n if (parts.length !== 5) {\n throw new CronValidationError(\n `Invalid cron expression '${expression}'. Expected 5 fields (minute hour day month weekday).`\n )\n }\n\n const [minuteField, hourField, dayOfMonthField, monthField, dayOfWeekField] = parts\n\n const minuteMatcher = createCronFieldMatcher({\n field: minuteField,\n min: 0,\n max: 59,\n fieldName: \"minute\",\n })\n const hourMatcher = createCronFieldMatcher({\n field: hourField,\n min: 0,\n max: 23,\n fieldName: \"hour\",\n })\n const dayOfMonthMatcher = createCronFieldMatcher({\n field: dayOfMonthField,\n min: 1,\n max: 31,\n fieldName: \"day-of-month\",\n })\n const monthMatcher = createCronFieldMatcher({\n field: monthField,\n min: 1,\n max: 12,\n fieldName: \"month\",\n })\n const dayOfWeekMatcher = createCronFieldMatcher({\n field: dayOfWeekField,\n min: 0,\n max: 6,\n fieldName: \"day-of-week\",\n normalize: (value) => (value === 7 ? 0 : value),\n })\n\n // Start from the next whole minute after `after`\n const startMs = after.getTime()\n let candidateMs = Math.ceil(startMs / 60_000) * 60_000\n if (candidateMs <= startMs) candidateMs += 60_000\n\n const limitMs = startMs + MAX_SEARCH_MS\n\n while (candidateMs <= limitMs) {\n const candidate = new Date(candidateMs)\n const comp = getLocalComponents(candidate, timezone)\n\n // Month check — skip ahead if no match\n if (!monthMatcher.matches(comp.month)) {\n if (timezone === undefined) {\n const next = findNextMatchingMonth(candidate, monthMatcher)\n candidateMs = next.getTime()\n } else {\n // Skip to next local day boundary, then continue\n candidateMs += ((24 - comp.hour) * 60 - comp.minute) * 60_000\n }\n continue\n }\n\n // Day check — skip ahead if no match\n if (!matchesDay(dayOfMonthMatcher, dayOfWeekMatcher, comp)) {\n if (timezone === undefined) {\n const next = new Date(candidateMs)\n next.setUTCDate(next.getUTCDate() + 1)\n next.setUTCHours(0, 0, 0, 0)\n candidateMs = next.getTime()\n } else {\n // Skip to next local day boundary\n candidateMs += ((24 - comp.hour) * 60 - comp.minute) * 60_000\n }\n continue\n }\n\n // Hour check — skip ahead if no match\n if (!hourMatcher.matches(comp.hour)) {\n if (timezone === undefined) {\n const next = new Date(candidateMs)\n next.setUTCHours(next.getUTCHours() + 1, 0, 0, 0)\n candidateMs = next.getTime()\n } else {\n // Skip to next local hour boundary\n candidateMs += (60 - comp.minute) * 60_000\n }\n continue\n }\n\n // Minute check\n if (!minuteMatcher.matches(comp.minute)) {\n candidateMs += 60_000\n continue\n }\n\n return candidate\n }\n\n throw new CronValidationError(`No matching occurrence found for '${expression}' within 4 years.`)\n}\n\nfunction findNextMatchingMonth(current: Date, monthMatcher: CronFieldMatcher): Date {\n const d = new Date(current)\n d.setUTCDate(1)\n d.setUTCHours(0, 0, 0, 0)\n d.setUTCMonth(d.getUTCMonth() + 1)\n\n for (let i = 0; i < 48; i++) {\n if (monthMatcher.matches(d.getUTCMonth() + 1)) {\n return d\n }\n d.setUTCMonth(d.getUTCMonth() + 1)\n }\n\n return d\n}\n",
|
|
12
|
-
"import { buildEventSelectorPredicate, type EventSelectorSpec } from \"../events/selectors\"\nimport type { DomainEvent, PropertyChange, PropertyChangeMap } from \"../events/types\"\nimport { evaluatePredicate } from \"../predicates\"\nimport type { EventScheduleConditionScope, EventScheduleTriggerDefinition } from \"./types\"\n\nexport type RuntimeEventScheduleContext = Readonly<Record<string, unknown>>\n\nexport interface RuntimeEventScheduleDefinition {\n readonly kind: \"schedule\"\n readonly id: string\n readonly trigger: EventScheduleTriggerDefinition<EventSelectorSpec<unknown>>\n}\n\nexport interface EventScheduleEvaluationResult<TEvent = unknown> {\n readonly schedule: RuntimeEventScheduleDefinition\n readonly event: TEvent\n}\n\nexport function eventScheduleSubscribedEventTypes(\n schedule: RuntimeEventScheduleDefinition\n): readonly DomainEvent[\"type\"][] {\n return schedule.trigger.source.types ?? []\n}\n\nexport function evaluateEventSchedule(\n schedule: RuntimeEventScheduleDefinition,\n event: DomainEvent\n): EventScheduleEvaluationResult | null {\n if (!buildEventSelectorPredicate(schedule.trigger.source)(event)) {\n return null\n }\n\n const eventContext = buildEventScheduleContext(event)\n if (!eventContext) {\n return null\n }\n\n const condition = schedule.trigger.condition\n if (!condition) {\n return {\n schedule,\n event: eventContext,\n }\n }\n\n const afterProperties = propertiesForScope(event, condition.scope)\n const fields = fieldsForEvent(event)\n if (!evaluatePredicate(condition.predicate, { properties: afterProperties, fields })) {\n return null\n }\n\n if (isUpdateEvent(event)) {\n const beforeProperties = previousProperties(afterProperties, event.payload.propertyChanges)\n if (evaluatePredicate(condition.predicate, { properties: beforeProperties, fields })) {\n return null\n }\n }\n\n return {\n schedule,\n event: eventContext,\n }\n}\n\nexport function buildEventScheduleContext(event: DomainEvent): RuntimeEventScheduleContext | null {\n switch (event.type) {\n case \"object.created\":\n case \"object.updated\":\n case \"object.deleted\":\n return {\n object: {\n objectTypeId: event.payload.objectTypeId,\n primaryId: event.payload.primaryId,\n p: currentProperties(event),\n },\n }\n case \"link.created\":\n case \"link.updated\":\n case \"link.deleted\":\n return {\n source: {\n objectTypeId: event.payload.sourceTypeId,\n primaryId: event.payload.sourceId,\n },\n target: {\n objectTypeId: event.payload.targetTypeId,\n primaryId: event.payload.targetId,\n },\n link: {\n id: event.payload.linkId,\n p: currentProperties(event),\n },\n }\n case \"rule.triggered\":\n case \"rule.resolved\":\n return {\n ruleId: event.payload.ruleId,\n subject: {\n objectTypeId: event.payload.subject.objectTypeId,\n primaryId: event.payload.subject.primaryId,\n },\n }\n case \"action.requested\":\n return {\n actionId: event.payload.actionId,\n runId: event.payload.runId,\n ...actionSubjectContext(event.payload.subject),\n params: { ...event.payload.params },\n }\n case \"action.completed\":\n return {\n actionId: event.payload.actionId,\n runId: event.payload.runId,\n ...actionSubjectContext(event.payload.subject),\n }\n case \"action.failed\":\n return {\n actionId: event.payload.actionId,\n runId: event.payload.runId,\n ...actionSubjectContext(event.payload.subject),\n error: event.payload.error,\n }\n case \"dataset.version.committed\":\n return { ...event.payload }\n case \"sync.run.finished\":\n return { ...event.payload }\n case \"pipeline.run.finished\":\n return { ...event.payload }\n default:\n return null\n }\n}\n\nfunction actionSubjectContext(subject: {\n readonly kind: \"none\" | \"object\"\n readonly objectTypeId?: string\n readonly primaryId?: string\n}): { readonly subject?: { readonly objectTypeId: string; readonly primaryId: string } } {\n if (\n subject.kind !== \"object\" ||\n subject.objectTypeId === undefined ||\n subject.primaryId === undefined\n ) {\n return {}\n }\n\n return {\n subject: {\n objectTypeId: subject.objectTypeId,\n primaryId: subject.primaryId,\n },\n }\n}\n\nfunction fieldsForEvent(event: DomainEvent): Readonly<Record<string, unknown>> {\n if (event.topic !== \"links\") {\n return {}\n }\n\n return {\n \"target.objectTypeId\": event.payload.targetTypeId,\n \"target.primaryId\": event.payload.targetId,\n }\n}\n\nfunction propertiesForScope(\n event: DomainEvent,\n scope: EventScheduleConditionScope\n): Readonly<Record<string, unknown>> {\n if (scope === \"event.object\" && event.topic !== \"objects\") {\n return {}\n }\n\n if (scope === \"event.link\" && event.topic !== \"links\") {\n return {}\n }\n\n return currentProperties(event)\n}\n\nfunction currentProperties(event: DomainEvent): Readonly<Record<string, unknown>> {\n const payload = event.payload\n if (payload && typeof payload === \"object\" && \"properties\" in payload) {\n return { ...((payload as { properties?: Record<string, unknown> }).properties ?? {}) }\n }\n\n if (payload && typeof payload === \"object\" && \"propertyChanges\" in payload) {\n return propertiesFromChanges(\n (payload as { propertyChanges: PropertyChangeMap }).propertyChanges,\n \"after\"\n )\n }\n\n return {}\n}\n\nfunction previousProperties(\n afterProperties: Readonly<Record<string, unknown>>,\n changes: PropertyChangeMap\n): Readonly<Record<string, unknown>> {\n const before: Record<string, unknown> = { ...afterProperties }\n\n for (const [propertyId, change] of Object.entries(changes)) {\n if (change.operation === \"created\") {\n delete before[propertyId]\n continue\n }\n before[propertyId] = change.before\n }\n\n return before\n}\n\nfunction propertiesFromChanges(\n changes: PropertyChangeMap,\n side: \"before\" | \"after\"\n): Readonly<Record<string, unknown>> {\n const properties: Record<string, unknown> = {}\n\n for (const [propertyId, change] of Object.entries(changes)) {\n const value = propertyChangeValue(change, side)\n if (value !== undefined) {\n properties[propertyId] = value\n }\n }\n\n return properties\n}\n\nfunction propertyChangeValue(change: PropertyChange, side: \"before\" | \"after\"): unknown {\n if (side === \"before\") {\n return change.operation === \"created\" ? undefined : change.before\n }\n return change.after\n}\n\nfunction isUpdateEvent(\n event: DomainEvent\n): event is Extract<DomainEvent, { type: \"object.updated\" | \"link.updated\" }> {\n return event.type === \"object.updated\" || event.type === \"link.updated\"\n}\n",
|
|
13
|
-
"import type {\n EventSelectorSpec,\n InferEventSelectorContext,\n InferEventSelectorEvent,\n LinkEventSelectorContext,\n ObjectEventSelectorContext,\n} from \"../events/selectors\"\nimport type { LinkToken, ObjectTypeWithTokens, Property, PropertyToken } from \"../ontology\"\nimport type {\n FieldPredicate,\n OrderedPredicateValueFor,\n Predicate,\n PredicateValueFor,\n PropertyPredicate,\n PropertyPredicateBuilder,\n} from \"../predicates\"\n\ndeclare const scheduleEventType: unique symbol\n\nexport interface CronScheduleTriggerDefinition {\n readonly type: \"cron\"\n readonly expression: string\n readonly timezone?: string\n}\n\nexport interface EventScheduleTriggerDefinition<\n TSelector extends EventSelectorSpec<unknown> = EventSelectorSpec,\n> {\n readonly type: \"event\"\n readonly source: TSelector\n readonly condition?: EventScheduleCondition\n}\n\nexport type ScheduleTriggerDefinition =\n | CronScheduleTriggerDefinition\n | EventScheduleTriggerDefinition\n\n/** Internal reference stored by definitions that run from a named schedule. */\nexport interface ScheduleReference {\n readonly type: \"schedule\"\n readonly scheduleId: string\n}\n\nexport function isScheduleReference(value: unknown): value is ScheduleReference {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"schedule\" &&\n \"scheduleId\" in value &&\n typeof value.scheduleId === \"string\" &&\n value.scheduleId.trim().length > 0\n )\n}\n\n/** Inert, reusable definition of when work should run. */\nexport interface ScheduleDefinition<TId extends string = string, TEvent = unknown> {\n readonly [scheduleEventType]?: TEvent\n readonly kind: \"schedule\"\n readonly id: TId\n readonly trigger: ScheduleTriggerDefinition\n}\n\nexport type CronScheduleDefinition<TId extends string = string> = ScheduleDefinition<TId, never> & {\n readonly trigger: CronScheduleTriggerDefinition\n}\n\nexport type EventScheduleDefinition<\n TId extends string = string,\n TSelector extends EventSelectorSpec<unknown> = EventSelectorSpec,\n> = ScheduleDefinition<TId, InferEventSelectorEvent<TSelector>> & {\n readonly trigger: EventScheduleTriggerDefinition<TSelector>\n}\n\nexport type ScheduleDefinitionForEvent<TEvent = unknown> = ScheduleDefinition<string, TEvent> & {\n readonly trigger: EventScheduleTriggerDefinition\n}\n\nexport type InferScheduleEvent<TSchedule> = TSchedule extends {\n readonly [scheduleEventType]?: infer TEvent\n}\n ? NonNullable<TEvent>\n : never\n\nexport interface CronScheduleBuilder<TId extends string = string> {\n cron(expression: string, options?: { timezone?: string }): CronScheduleDefinition<TId>\n}\n\nexport interface EventScheduleBuilder<TId extends string = string> {\n on<const TSelector extends EventSelectorSpec<unknown>>(\n selector: TSelector\n ): EventScheduleSourceBuilder<TId, TSelector>\n}\n\nexport interface ScheduleBuilder<TId extends string = string>\n extends CronScheduleBuilder<TId>,\n EventScheduleBuilder<TId> {}\n\nexport type EventScheduleSourceBuilder<\n TId extends string,\n TSelector extends EventSelectorSpec<unknown>,\n> =\n InferEventSelectorContext<TSelector> extends ObjectEventSelectorContext | LinkEventSelectorContext\n ? EventScheduleWhereBuilder<TId, TSelector>\n : EventScheduleDefinition<TId, TSelector>\n\nexport type EventScheduleWhereBuilder<\n TId extends string,\n TSelector extends EventSelectorSpec<unknown>,\n> = EventScheduleDefinition<TId, TSelector> & {\n where(\n predicate: (\n event: EventSchedulePredicateContext<InferEventSelectorContext<TSelector>>\n ) => EventScheduleCondition\n ): EventScheduleDefinition<TId, TSelector>\n}\n\nexport type EventScheduleConditionScope = \"event.object\" | \"event.link\"\n\nexport interface EventScheduleCondition {\n readonly kind: \"becomesTrue\"\n readonly scope: EventScheduleConditionScope\n readonly predicate: Predicate\n}\n\nexport type EventScheduleScopedPredicate = EventScheduleCondition\n\nexport type EventSchedulePredicateContext<TContext> =\n TContext extends ObjectEventSelectorContext<infer TObjectType>\n ? { readonly object: EventScheduleObjectPredicateSubject<TObjectType> }\n : TContext extends LinkEventSelectorContext<infer TObjectType, infer TLink>\n ? {\n readonly link: EventScheduleLinkPredicateSubject<TObjectType, TLink>\n readonly target: EventScheduleTargetPredicateSubject<TLink>\n }\n : never\n\nexport type EventScheduleObjectPredicateSubject<TObjectType extends ObjectTypeWithTokens> =\n EventSchedulePredicateSubject<\"event.object\", TObjectType[\"p\"]>\n\nexport type EventScheduleLinkPredicateSubject<\n _TObjectType extends ObjectTypeWithTokens,\n TLink extends LinkToken,\n> = EventSchedulePredicateSubject<\"event.link\", LinkPropertyTokens<TLink>>\n\nexport type EventScheduleTargetPredicateSubject<TLink extends LinkToken> = {\n is(\n objectType: ObjectTypeWithTokens & { readonly id: AllowedTargetTypeId<TLink> }\n ): EventScheduleConditionFor<\"event.link\", FieldPredicate>\n readonly id: {\n eq(value: string): EventScheduleConditionFor<\"event.link\", FieldPredicate>\n }\n}\n\nexport type EventSchedulePredicateSubject<\n TScope extends EventScheduleConditionScope,\n TTokens extends Record<string, PropertyToken>,\n> = {\n readonly p: {\n readonly [TPropertyId in keyof TTokens]: TTokens[TPropertyId] extends PropertyToken<\n string,\n string,\n infer TProperty\n >\n ? EventSchedulePropertyPredicateBuilder<TScope, TProperty>\n : never\n }\n all(...predicates: EventScheduleCondition[]): EventScheduleCondition\n any(...predicates: EventScheduleCondition[]): EventScheduleCondition\n not(predicate: EventScheduleCondition): EventScheduleCondition\n}\n\nexport type EventSchedulePropertyPredicateBuilder<\n TScope extends EventScheduleConditionScope = EventScheduleConditionScope,\n TProperty extends Property = Property,\n> = PropertyPredicateBuilder<TProperty, EventScheduleConditionFor<TScope>>\n\nexport type EventScheduleConditionFor<\n TScope extends EventScheduleConditionScope,\n TPredicate extends Predicate = PropertyPredicate,\n> = EventScheduleCondition & {\n readonly scope: TScope\n readonly predicate: TPredicate\n}\n\nexport type EventScheduleSerializableValue<TProperty extends Property> =\n PredicateValueFor<TProperty>\n\nexport type EventScheduleNumericValue<TProperty extends Property> =\n OrderedPredicateValueFor<TProperty>\n\ntype LinkPropertyTokens<TLink extends LinkToken> =\n NonNullable<TLink[\"link\"][\"properties\"]> extends readonly Property[]\n ? {\n readonly [P in NonNullable<TLink[\"link\"][\"properties\"]>[number] as P[\"id\"]]: PropertyToken<\n TLink[\"objectTypeId\"],\n P[\"id\"],\n P\n >\n }\n : Record<never, never>\n\ntype ResolveTargetTypeId<TTarget> = TTarget extends readonly string[]\n ? TTarget[number]\n : TTarget extends string\n ? TTarget\n : string\n\ntype AllowedTargetTypeId<TLink extends LinkToken> =\n \"*\" extends ResolveTargetTypeId<TLink[\"targetObjectTypeId\"]>\n ? string\n : ResolveTargetTypeId<TLink[\"targetObjectTypeId\"]>\n",
|
|
14
|
-
"import type { EventSelectorSpec } from \"../events/selectors\"\nimport type { ObjectLink, ObjectType, OntologyRegistry } from \"../ontology\"\nimport { assertPredicateShape, type Predicate } from \"../predicates\"\nimport { createCronMatcher } from \"./cron\"\nimport { ScheduleValidationError } from \"./errors\"\nimport type { EventScheduleCondition, EventScheduleDefinition, ScheduleDefinition } from \"./types\"\n\nconst objectEventTypes = new Set([\"object.created\", \"object.updated\", \"object.deleted\"])\nconst linkEventTypes = new Set([\"link.created\", \"link.updated\", \"link.deleted\"])\nconst ruleEventTypes = new Set([\"rule.triggered\", \"rule.resolved\"])\nconst actionEventTypes = new Set([\"action.requested\", \"action.completed\", \"action.failed\"])\nconst datasetEventTypes = new Set([\"dataset.version.committed\"])\nconst syncEventTypes = new Set([\"sync.run.finished\"])\nconst pipelineEventTypes = new Set([\"pipeline.run.finished\"])\nconst runStatuses = new Set([\"succeeded\", \"failed\", \"cancelled\"])\nconst linkIdentityFields = new Set([\"target.objectTypeId\", \"target.primaryId\"])\n\nexport interface ValidateSchedulesAtStartupOptions {\n readonly registeredRuleIds?: ReadonlySet<string>\n readonly registeredActionIds?: ReadonlySet<string>\n readonly registeredDatasetIds?: ReadonlySet<string>\n readonly registeredSyncIds?: ReadonlySet<string>\n readonly registeredPipelineIds?: ReadonlySet<string>\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction assertNonEmptyString(\n value: unknown,\n field: string,\n createError: (message: string) => Error\n): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw createError(`${field} must not be empty.`)\n }\n}\n\nexport function assertScheduleDefinition(\n value: unknown,\n createError: (message: string) => Error = (message) => new ScheduleValidationError(message)\n): asserts value is ScheduleDefinition {\n if (!isRecord(value)) throw createError(\"Schedule definition must be an object.\")\n if (value.kind !== \"schedule\") {\n throw createError(\"Schedule definition kind must be 'schedule'.\")\n }\n\n assertNonEmptyString(value.id, \"Schedule id\", createError)\n if (!isRecord(value.trigger))\n throw createError(`Schedule \"${value.id}\" trigger must be an object.`)\n\n if (value.trigger.type === \"cron\") {\n assertNonEmptyString(\n value.trigger.expression,\n `Schedule \"${value.id}\" cron expression`,\n createError\n )\n if (value.trigger.timezone !== undefined && typeof value.trigger.timezone !== \"string\") {\n throw createError(`Schedule \"${value.id}\" timezone must be a string.`)\n }\n return\n }\n\n if (value.trigger.type !== \"event\") {\n throw createError(`Schedule \"${value.id}\" trigger type is unsupported.`)\n }\n\n assertEventSourceShape(value.trigger.source, `Schedule \"${value.id}\" event source`, createError)\n if (value.trigger.condition !== undefined) {\n assertEventConditionShape(\n value.trigger.condition,\n `Schedule \"${value.id}\" condition`,\n createError\n )\n }\n}\n\nexport function isScheduleDefinition(value: unknown): value is ScheduleDefinition {\n try {\n assertScheduleDefinition(value, (message) => new Error(message))\n return true\n } catch {\n return false\n }\n}\n\nexport function validateSchedulesAtStartup(\n schedules: readonly ScheduleDefinition[],\n ontology: OntologyRegistry,\n options: ValidateSchedulesAtStartupOptions = {}\n): void {\n const seenIds = new Set<string>()\n\n for (const schedule of schedules) {\n assertScheduleDefinition(schedule)\n if (seenIds.has(schedule.id)) {\n throw new ScheduleValidationError(`Duplicate schedule id: ${schedule.id}`)\n }\n seenIds.add(schedule.id)\n\n if (schedule.trigger.type === \"cron\") {\n createCronMatcher(schedule.trigger.expression)\n if (schedule.trigger.timezone !== undefined) validateTimezone(schedule.trigger.timezone)\n continue\n }\n\n validateEventSchedule(schedule as EventScheduleDefinition, ontology, options)\n }\n}\n\nfunction validateTimezone(timezone: string): void {\n try {\n Intl.DateTimeFormat(undefined, { timeZone: timezone })\n } catch {\n throw new ScheduleValidationError(`Invalid timezone '${timezone}'.`)\n }\n}\n\nfunction assertEventSourceShape(\n value: unknown,\n path: string,\n createError: (message: string) => Error\n): asserts value is EventSelectorSpec {\n if (!isRecord(value)) throw createError(`${path} must be an event selector.`)\n if (!Array.isArray(value.types) || value.types.length === 0) {\n throw createError(`${path} must select at least one event type.`)\n }\n\n switch (value.topic) {\n case \"objects\":\n assertNonEmptyString(value.objectTypeId, `${path} objectTypeId`, createError)\n return\n case \"links\":\n assertNonEmptyString(value.objectTypeId, `${path} objectTypeId`, createError)\n assertNonEmptyString(value.linkId, `${path} linkId`, createError)\n return\n case \"rules\":\n assertNonEmptyString(value.ruleId, `${path} ruleId`, createError)\n return\n case \"actions\":\n assertNonEmptyString(value.actionId, `${path} actionId`, createError)\n return\n case \"datasets\":\n assertNonEmptyString(value.datasetId, `${path} datasetId`, createError)\n return\n case \"syncs\":\n assertNonEmptyString(value.syncId, `${path} syncId`, createError)\n assertRunStatus(value.runStatus, path, createError)\n return\n case \"pipelines\":\n assertNonEmptyString(value.pipelineId, `${path} pipelineId`, createError)\n assertRunStatus(value.runStatus, path, createError)\n return\n default:\n throw createError(\n `${path} must select object, link, rule, action, dataset, sync, or pipeline events.`\n )\n }\n}\n\nfunction assertRunStatus(\n value: unknown,\n path: string,\n createError: (message: string) => Error\n): void {\n if (typeof value !== \"string\" || !runStatuses.has(value)) {\n throw createError(`${path} must select succeeded, failed, or cancelled runs.`)\n }\n}\n\nfunction assertEventConditionShape(\n value: unknown,\n path: string,\n createError: (message: string) => Error\n): asserts value is EventScheduleCondition {\n if (!isRecord(value)) throw createError(`${path} must be an object.`)\n if (value.kind !== \"becomesTrue\") throw createError(`${path} kind must be 'becomesTrue'.`)\n if (value.scope !== \"event.object\" && value.scope !== \"event.link\") {\n throw createError(`${path} scope must be 'event.object' or 'event.link'.`)\n }\n assertPredicateShape(value.predicate, { subject: \"Schedule\", createError })\n}\n\nfunction validateEventSchedule(\n schedule: EventScheduleDefinition,\n ontology: OntologyRegistry,\n options: ValidateSchedulesAtStartupOptions\n): void {\n const { source } = schedule.trigger\n\n switch (source.topic) {\n case \"objects\":\n case \"links\": {\n const objectTypeId = source.objectTypeId\n const objectType = objectTypeId ? ontology.getObjectTypeById(objectTypeId) : undefined\n if (!objectType) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unknown object type \"${objectTypeId}\".`\n )\n }\n if (source.topic === \"objects\") validateObjectSource(schedule, objectType)\n else validateLinkSource(schedule, objectType)\n return\n }\n case \"rules\":\n validateRegisteredSource(\n schedule,\n source.ruleId,\n options.registeredRuleIds,\n ruleEventTypes,\n \"rule\"\n )\n return\n case \"actions\":\n validateRegisteredSource(\n schedule,\n source.actionId,\n options.registeredActionIds,\n actionEventTypes,\n \"action\"\n )\n return\n case \"datasets\":\n validateRegisteredSource(\n schedule,\n source.datasetId,\n options.registeredDatasetIds,\n datasetEventTypes,\n \"dataset\"\n )\n return\n case \"syncs\":\n validateRegisteredSource(\n schedule,\n source.syncId,\n options.registeredSyncIds,\n syncEventTypes,\n \"sync\"\n )\n return\n case \"pipelines\":\n validateRegisteredSource(\n schedule,\n source.pipelineId,\n options.registeredPipelineIds,\n pipelineEventTypes,\n \"pipeline\"\n )\n return\n }\n}\n\nfunction validateObjectSource(schedule: EventScheduleDefinition, objectType: ObjectType): void {\n validateEventTypes(schedule, objectEventTypes, \"object\")\n const propertyIds = new Set(objectType.properties.map((property) => property.id))\n validateSelectorProperty(schedule, propertyIds)\n\n const condition = schedule.trigger.condition\n if (!condition) return\n if (condition.scope !== \"event.object\") {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": object event sources can only use event.object conditions.`\n )\n }\n validateConditionPredicate(schedule, propertyIds, condition.predicate)\n}\n\nfunction validateLinkSource(schedule: EventScheduleDefinition, objectType: ObjectType): void {\n validateEventTypes(schedule, linkEventTypes, \"link\")\n const source = schedule.trigger.source\n const link = objectType.links.find((candidate) => candidate.id === source.linkId)\n if (!link) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unknown link \"${source.linkId}\" on object type \"${objectType.id}\".`\n )\n }\n\n const propertyIds = new Set((link.properties ?? []).map((property) => property.id))\n validateSelectorProperty(schedule, propertyIds)\n\n const condition = schedule.trigger.condition\n if (!condition) return\n if (condition.scope !== \"event.link\") {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": link event sources can only use event.link conditions.`\n )\n }\n validateConditionPredicate(schedule, propertyIds, condition.predicate, link)\n}\n\nfunction validateRegisteredSource(\n schedule: EventScheduleDefinition,\n sourceId: string | undefined,\n registeredIds: ReadonlySet<string> | undefined,\n supportedTypes: ReadonlySet<string>,\n sourceKind: \"rule\" | \"action\" | \"dataset\" | \"sync\" | \"pipeline\"\n): void {\n validateEventTypes(schedule, supportedTypes, sourceKind)\n if (!registeredIds?.has(sourceId ?? \"\")) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unknown ${sourceKind} \"${sourceId}\".`\n )\n }\n if (schedule.trigger.condition) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": ${sourceKind} event sources do not support .where() conditions.`\n )\n }\n}\n\nfunction validateEventTypes(\n schedule: EventScheduleDefinition,\n supportedTypes: ReadonlySet<string>,\n sourceKind: string\n): void {\n for (const type of schedule.trigger.source.types ?? []) {\n if (!supportedTypes.has(type)) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unsupported ${sourceKind} event type \"${type}\".`\n )\n }\n }\n}\n\nfunction validateSelectorProperty(\n schedule: EventScheduleDefinition,\n propertyIds: ReadonlySet<string>\n): void {\n const propertyId = schedule.trigger.source.propertyId\n if (propertyId !== undefined && !propertyIds.has(propertyId)) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unknown selector property \"${propertyId}\".`\n )\n }\n}\n\nfunction validateConditionPredicate(\n schedule: EventScheduleDefinition,\n propertyIds: ReadonlySet<string>,\n predicate: Predicate,\n link?: ObjectLink\n): void {\n if (predicate.kind === \"all\" || predicate.kind === \"any\") {\n if (predicate.predicates.length === 0) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": ${predicate.kind} predicate must contain at least one predicate.`\n )\n }\n for (const child of predicate.predicates) {\n validateConditionPredicate(schedule, propertyIds, child, link)\n }\n return\n }\n\n if (predicate.kind === \"not\") {\n validateConditionPredicate(schedule, propertyIds, predicate.predicate, link)\n return\n }\n\n if (predicate.kind === \"link\") {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": link predicates are not supported in event conditions.`\n )\n }\n\n if (predicate.kind === \"field\") {\n if (!link || !linkIdentityFields.has(predicate.field)) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unsupported event field predicate \"${predicate.field}\".`\n )\n }\n if (typeof predicate.value !== \"string\" || !predicate.value.trim()) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": event field \"${predicate.field}\" must compare against a non-empty string.`\n )\n }\n if (predicate.field === \"target.objectTypeId\") {\n const targetIds = Array.isArray(link.targetObjectTypeId)\n ? link.targetObjectTypeId\n : [link.targetObjectTypeId]\n if (!targetIds.includes(\"*\") && !targetIds.includes(predicate.value)) {\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": object type \"${predicate.value}\" is not a target of link \"${link.id}\".`\n )\n }\n }\n return\n }\n\n if (!propertyIds.has(predicate.propertyId)) {\n const source = schedule.trigger.source\n const subject = link ? `link \"${link.id}\"` : `object type \"${source.objectTypeId}\"`\n throw new ScheduleValidationError(\n `Schedule \"${schedule.id}\": unknown property \"${predicate.propertyId}\" on ${subject}.`\n )\n }\n}\n"
|
|
15
|
-
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "3E911BDE3A5674D064756E2164756E21",
|
|
18
|
-
"names": []
|
|
19
|
-
}
|