@sixb/core 0.1.1 → 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 +31 -20
- 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 +35 -24
- 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 +7 -7
- 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/context.js +2 -2
- package/dist/agents/dispatch.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +45 -0
- package/dist/agents/execution.d.ts.map +1 -0
- package/dist/agents/index.d.ts +6 -6
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +64 -16
- 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/types.d.ts +2 -2
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +3 -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 +2 -2
- 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 +3 -3
- 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 +60 -60
- 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-y2ygpd0m.js → chunk-3j7573mj.js} +2 -2
- package/dist/{chunk-y2ygpd0m.js.map → chunk-3j7573mj.js.map} +2 -2
- package/dist/{chunk-md9jbrm9.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-nbywkytr.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-63te770v.js.map +1 -1
- 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-sb0shdvv.js → chunk-85j5ybfj.js} +1 -1
- package/dist/{chunk-sb0shdvv.js.map → chunk-85j5ybfj.js.map} +2 -2
- package/dist/{chunk-6rzdtvn5.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-r82k4z7z.js → chunk-a31h57d5.js} +2 -2
- 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-avppcgt6.js → chunk-c6qd89g5.js} +241 -144
- package/dist/chunk-c6qd89g5.js.map +15 -0
- package/dist/{chunk-qzyemcj7.js → chunk-ckxfnx7f.js} +2 -2
- 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-yn947ck3.js → chunk-f2rt4vkh.js} +48 -29
- package/dist/chunk-f2rt4vkh.js.map +14 -0
- package/dist/{chunk-hb9xcx9c.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-f6kyyeef.js → chunk-ghteq96b.js} +8 -8
- package/dist/{chunk-f6kyyeef.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-xt6qx9sh.js → chunk-jaj13078.js} +121 -9
- package/dist/chunk-jaj13078.js.map +38 -0
- package/dist/{chunk-p7vj8xgb.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-b1bqvhpe.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-53s4asfm.js → chunk-rnshztfq.js} +2 -2
- package/dist/chunk-sa4340y1.js +607 -0
- package/dist/chunk-sa4340y1.js.map +14 -0
- package/dist/{chunk-rjqm6ksg.js → chunk-st4xgxey.js} +583 -251
- package/dist/chunk-st4xgxey.js.map +45 -0
- package/dist/{chunk-be9vm29v.js → chunk-t8t39h7v.js} +1 -1
- package/dist/{chunk-be9vm29v.js.map → chunk-t8t39h7v.js.map} +3 -3
- 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-8kv2sez0.js → chunk-vybf6pkp.js} +1 -1
- package/dist/{chunk-4tvj3ate.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-raq0x6bd.js → chunk-ys1nse2v.js} +2175 -381
- package/dist/chunk-ys1nse2v.js.map +56 -0
- package/dist/{chunk-6zrpewy4.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-hz8m927w.js → chunk-zqysyfjt.js} +1 -1
- 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/execution.d.ts +8 -0
- package/dist/datasets/execution.d.ts.map +1 -0
- 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/index.d.ts +30 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -105
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +0 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- 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 +4 -4
- package/dist/ontology/registry.d.ts +15 -2
- package/dist/ontology/registry.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 +92 -29
- 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 +28 -11
- 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 +28 -30
- package/dist/storage/workflow-runs/types.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 +16 -9
- package/dist/syncs/types.d.ts.map +1 -1
- 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 +12 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4088 -1556
- package/dist/testing/index.js.map +25 -13
- 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 +64 -36
- 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 +7 -3
- package/src/agents/authority.ts +189 -0
- package/src/agents/dispatch.ts +1 -6
- package/src/agents/errors.ts +2 -0
- package/src/agents/execution.ts +254 -0
- package/src/agents/index.ts +15 -3
- package/src/agents/prompt.ts +15 -3
- package/src/agents/request.ts +153 -13
- package/src/agents/streams.ts +150 -3
- package/src/agents/types.ts +2 -4
- package/src/agents/validation.ts +3 -3
- 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/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/execution.ts +24 -0
- 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 +3 -3
- package/src/index.ts +109 -9
- package/src/json.ts +0 -4
- 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/registry.ts +16 -2
- 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 -822
- 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 +154 -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 +90 -7
- package/src/storage/sync-runs/index.ts +4 -1
- package/src/storage/sync-runs/provider.ts +25 -0
- package/src/storage/sync-runs/types.ts +35 -11
- package/src/storage/types.ts +44 -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 +89 -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 +36 -25
- package/src/syncs/builders.ts +2 -2
- package/src/syncs/execution.ts +78 -0
- package/src/syncs/index.ts +13 -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 +32 -8
- 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 +52 -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/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-4hwxq5e6.js +0 -49
- package/dist/chunk-4hwxq5e6.js.map +0 -10
- package/dist/chunk-4tvj3ate.js.map +0 -11
- package/dist/chunk-50kv63vj.js.map +0 -12
- package/dist/chunk-86459jn0.js +0 -1091
- package/dist/chunk-86459jn0.js.map +0 -22
- package/dist/chunk-867jxh7c.js.map +0 -19
- package/dist/chunk-9k3hgv8h.js +0 -352
- package/dist/chunk-9k3hgv8h.js.map +0 -13
- package/dist/chunk-avppcgt6.js.map +0 -14
- package/dist/chunk-b1bqvhpe.js.map +0 -13
- package/dist/chunk-b5dp7gaf.js +0 -1092
- package/dist/chunk-b5dp7gaf.js.map +0 -26
- package/dist/chunk-bh8bwma3.js +0 -37
- package/dist/chunk-bh8bwma3.js.map +0 -10
- package/dist/chunk-btcsywk4.js +0 -985
- package/dist/chunk-btcsywk4.js.map +0 -15
- package/dist/chunk-exrfbt2d.js +0 -354
- package/dist/chunk-exrfbt2d.js.map +0 -17
- package/dist/chunk-hb9xcx9c.js.map +0 -14
- package/dist/chunk-k25jm1x5.js +0 -102
- package/dist/chunk-k25jm1x5.js.map +0 -10
- package/dist/chunk-k6j72mtt.js +0 -9
- package/dist/chunk-k6j72mtt.js.map +0 -10
- package/dist/chunk-m9w0artv.js +0 -554
- package/dist/chunk-m9w0artv.js.map +0 -13
- package/dist/chunk-nbywkytr.js.map +0 -16
- package/dist/chunk-p7vj8xgb.js.map +0 -34
- package/dist/chunk-raq0x6bd.js.map +0 -48
- package/dist/chunk-rgzed50y.js +0 -1445
- package/dist/chunk-rgzed50y.js.map +0 -22
- package/dist/chunk-rjqm6ksg.js.map +0 -44
- package/dist/chunk-t72dvahb.js.map +0 -12
- package/dist/chunk-v5c085yp.js.map +0 -10
- package/dist/chunk-xt6qx9sh.js.map +0 -36
- package/dist/chunk-xz5g49bp.js.map +0 -11
- package/dist/chunk-ya6brh8a.js.map +0 -11
- package/dist/chunk-yn947ck3.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-md9jbrm9.js.map → chunk-4gz41why.js.map} +0 -0
- /package/dist/{chunk-6rzdtvn5.js.map → chunk-8b55ygje.js.map} +0 -0
- /package/dist/{chunk-r82k4z7z.js.map → chunk-a31h57d5.js.map} +0 -0
- /package/dist/{chunk-qzyemcj7.js.map → chunk-ckxfnx7f.js.map} +0 -0
- /package/dist/{chunk-53s4asfm.js.map → chunk-rnshztfq.js.map} +0 -0
- /package/dist/{chunk-8kv2sez0.js.map → chunk-vybf6pkp.js.map} +0 -0
- /package/dist/{chunk-6zrpewy4.js.map → chunk-z3zp0bj1.js.map} +0 -0
- /package/dist/{chunk-hz8m927w.js.map → chunk-zqysyfjt.js.map} +0 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
ExecutionStorageError
|
|
4
|
+
} from "./chunk-h9kxd41f.js";
|
|
5
|
+
import {
|
|
6
|
+
createTrustedPrimitiveRuntimeAuthorization,
|
|
7
|
+
getAuthorizationRef
|
|
8
|
+
} from "./chunk-34bqh420.js";
|
|
9
|
+
|
|
10
|
+
// src/execution/durable.ts
|
|
11
|
+
import { isDeepStrictEqual } from "util";
|
|
12
|
+
function executionRecordInputFromRuntime(input) {
|
|
13
|
+
const execution = input.execution;
|
|
14
|
+
return {
|
|
15
|
+
id: execution.id,
|
|
16
|
+
projectId: execution.projectId,
|
|
17
|
+
...execution.requestedBy === undefined ? {} : { requestedBy: structuredClone(execution.requestedBy) },
|
|
18
|
+
executor: durableExecutor(execution),
|
|
19
|
+
source: structuredClone(execution.source),
|
|
20
|
+
correlationId: execution.correlationId,
|
|
21
|
+
authorizationRef: getAuthorizationRef(input.runtimeAuthorization)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async function ensureExecutionRecord(storage, input) {
|
|
25
|
+
const existing = await storage.getById({ projectId: input.projectId, id: input.id });
|
|
26
|
+
if (existing) {
|
|
27
|
+
assertExecutionRecordMatches(existing, input);
|
|
28
|
+
return existing;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return await storage.create(input);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (!(error instanceof ExecutionStorageError) || error.code !== "duplicate_execution") {
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
const raced = await storage.getById({ projectId: input.projectId, id: input.id });
|
|
37
|
+
if (!raced)
|
|
38
|
+
throw error;
|
|
39
|
+
assertExecutionRecordMatches(raced, input);
|
|
40
|
+
return raced;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function createPrimitiveExecutionRecord(input) {
|
|
44
|
+
const provenance = input.origin.type === "execution" ? {
|
|
45
|
+
projectId: input.origin.parent.projectId,
|
|
46
|
+
...input.origin.parent.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.origin.parent.requestedBy) },
|
|
47
|
+
source: { type: "execution", executionId: input.origin.parent.id },
|
|
48
|
+
correlationId: input.origin.parent.correlationId
|
|
49
|
+
} : {
|
|
50
|
+
projectId: input.origin.projectId,
|
|
51
|
+
...input.origin.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.origin.requestedBy) },
|
|
52
|
+
source: structuredClone(input.origin.source),
|
|
53
|
+
correlationId: input.origin.correlationId
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
id: input.id,
|
|
57
|
+
...provenance,
|
|
58
|
+
executor: {
|
|
59
|
+
type: "primitive",
|
|
60
|
+
kind: input.primitive.kind,
|
|
61
|
+
runId: input.primitive.runId
|
|
62
|
+
},
|
|
63
|
+
authorizationRef: {
|
|
64
|
+
type: "trustedPrimitive",
|
|
65
|
+
primitive: structuredClone(input.primitive)
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function restoreTrustedPrimitiveExecutionScope(input) {
|
|
70
|
+
assertPrimitiveExecution(input.execution, input.primitive);
|
|
71
|
+
const context = Object.freeze({
|
|
72
|
+
id: input.execution.id,
|
|
73
|
+
projectId: input.execution.projectId,
|
|
74
|
+
...input.execution.requestedBy === undefined ? {} : { requestedBy: Object.freeze(structuredClone(input.execution.requestedBy)) },
|
|
75
|
+
executor: Object.freeze({ type: "primitive", ...structuredClone(input.primitive) }),
|
|
76
|
+
source: Object.freeze(structuredClone(input.execution.source)),
|
|
77
|
+
correlationId: input.execution.correlationId
|
|
78
|
+
});
|
|
79
|
+
return Object.freeze({
|
|
80
|
+
execution: context,
|
|
81
|
+
authorization: createTrustedPrimitiveRuntimeAuthorization({
|
|
82
|
+
projectId: input.execution.projectId,
|
|
83
|
+
primitive: input.primitive
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function durableExecutor(execution) {
|
|
88
|
+
switch (execution.executor.type) {
|
|
89
|
+
case "request":
|
|
90
|
+
return { type: "request", requestId: execution.executor.requestId };
|
|
91
|
+
case "primitive":
|
|
92
|
+
return {
|
|
93
|
+
type: "primitive",
|
|
94
|
+
kind: execution.executor.kind,
|
|
95
|
+
runId: execution.executor.runId
|
|
96
|
+
};
|
|
97
|
+
case "agent":
|
|
98
|
+
return { type: "agent", runId: execution.executor.runId };
|
|
99
|
+
case "kernel":
|
|
100
|
+
return { type: "kernel", operation: structuredClone(execution.executor.operation) };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function assertExecutionRecordMatches(existing, input) {
|
|
104
|
+
const { createdAt: _createdAt, ...stored } = existing;
|
|
105
|
+
if (!isDeepStrictEqual(stored, input)) {
|
|
106
|
+
throw new ExecutionStorageError("duplicate_execution", `[Sixb] Execution '${input.id}' already exists with different immutable provenance.`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function assertPrimitiveExecution(execution, primitive) {
|
|
110
|
+
const authority = execution.authorizationRef;
|
|
111
|
+
if (execution.executor.type !== "primitive" || execution.executor.kind !== primitive.kind || execution.executor.runId !== primitive.runId || authority.type !== "trustedPrimitive" || authority.primitive.kind !== primitive.kind || authority.primitive.id !== primitive.id || authority.primitive.runId !== primitive.runId) {
|
|
112
|
+
throw new ExecutionStorageError("invalid_input", `[Sixb] Execution '${execution.id}' does not authorize ${primitive.kind} run '${primitive.runId}'.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export { executionRecordInputFromRuntime, ensureExecutionRecord, createPrimitiveExecutionRecord, restoreTrustedPrimitiveExecutionScope };
|
|
117
|
+
|
|
118
|
+
//# debugId=FD635CE58B49306C64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/execution/durable.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { isDeepStrictEqual } from \"node:util\"\nimport {\n type CreateExecutionInput,\n type ExecutionRecord,\n type ExecutionStorage,\n ExecutionStorageError,\n} from \"../storage/executions\"\nimport { createTrustedPrimitiveRuntimeAuthorization, getAuthorizationRef } from \"./authorization\"\nimport type {\n ExecutionContext,\n ExecutionScope,\n RuntimeAuthorization,\n TrustedPrimitiveRef,\n} from \"./types\"\n\n/** Convert one currently bound execution to the immutable provider representation. */\nexport function executionRecordInputFromRuntime(input: {\n readonly execution: ExecutionContext\n readonly runtimeAuthorization: RuntimeAuthorization\n}): CreateExecutionInput {\n const execution = input.execution\n return {\n id: execution.id,\n projectId: execution.projectId,\n ...(execution.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(execution.requestedBy) }),\n executor: durableExecutor(execution),\n source: structuredClone(execution.source),\n correlationId: execution.correlationId,\n authorizationRef: getAuthorizationRef(input.runtimeAuthorization),\n }\n}\n\n/**\n * Store a caller execution once. Repeated boundaries may observe the same immutable execution;\n * only an exact match is idempotent.\n */\nexport async function ensureExecutionRecord(\n storage: ExecutionStorage,\n input: CreateExecutionInput\n): Promise<ExecutionRecord> {\n const existing = await storage.getById({ projectId: input.projectId, id: input.id })\n if (existing) {\n assertExecutionRecordMatches(existing, input)\n return existing\n }\n\n try {\n return await storage.create(input)\n } catch (error) {\n if (!(error instanceof ExecutionStorageError) || error.code !== \"duplicate_execution\") {\n throw error\n }\n\n const raced = await storage.getById({ projectId: input.projectId, id: input.id })\n if (!raced) throw error\n assertExecutionRecordMatches(raced, input)\n return raced\n }\n}\n\ntype PrimitiveExecutionOrigin =\n | {\n readonly type: \"execution\"\n readonly parent: ExecutionRecord\n }\n | {\n readonly type: \"automatic\"\n readonly projectId: string\n readonly source: Extract<\n CreateExecutionInput[\"source\"],\n { readonly type: \"schedule\" | \"event\" | \"datasetVersion\" | \"webhook\" }\n >\n readonly correlationId: string\n readonly requestedBy?: CreateExecutionInput[\"requestedBy\"]\n }\n\n/** Build an immutable primitive execution from its parent execution or automatic trigger. */\nexport function createPrimitiveExecutionRecord(input: {\n readonly id: string\n readonly primitive: TrustedPrimitiveRef\n readonly origin: PrimitiveExecutionOrigin\n}): CreateExecutionInput {\n const provenance =\n input.origin.type === \"execution\"\n ? {\n projectId: input.origin.parent.projectId,\n ...(input.origin.parent.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(input.origin.parent.requestedBy) }),\n source: { type: \"execution\" as const, executionId: input.origin.parent.id },\n correlationId: input.origin.parent.correlationId,\n }\n : {\n projectId: input.origin.projectId,\n ...(input.origin.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(input.origin.requestedBy) }),\n source: structuredClone(input.origin.source),\n correlationId: input.origin.correlationId,\n }\n\n return {\n id: input.id,\n ...provenance,\n executor: {\n type: \"primitive\",\n kind: input.primitive.kind,\n runId: input.primitive.runId,\n },\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: structuredClone(input.primitive),\n },\n }\n}\n\n/** Restore the trusted scope of a provider-validated primitive execution record. */\nexport function restoreTrustedPrimitiveExecutionScope(input: {\n readonly execution: ExecutionRecord\n readonly primitive: TrustedPrimitiveRef\n}): ExecutionScope {\n assertPrimitiveExecution(input.execution, input.primitive)\n const context: ExecutionContext = Object.freeze({\n id: input.execution.id,\n projectId: input.execution.projectId,\n ...(input.execution.requestedBy === undefined\n ? {}\n : { requestedBy: Object.freeze(structuredClone(input.execution.requestedBy)) }),\n executor: Object.freeze({ type: \"primitive\", ...structuredClone(input.primitive) }),\n source: Object.freeze(structuredClone(input.execution.source)),\n correlationId: input.execution.correlationId,\n })\n return Object.freeze({\n execution: context,\n authorization: createTrustedPrimitiveRuntimeAuthorization({\n projectId: input.execution.projectId,\n primitive: input.primitive,\n }),\n })\n}\n\nfunction durableExecutor(execution: ExecutionContext): CreateExecutionInput[\"executor\"] {\n switch (execution.executor.type) {\n case \"request\":\n return { type: \"request\", requestId: execution.executor.requestId }\n case \"primitive\":\n return {\n type: \"primitive\",\n kind: execution.executor.kind,\n runId: execution.executor.runId,\n }\n case \"agent\":\n return { type: \"agent\", runId: execution.executor.runId }\n case \"kernel\":\n return { type: \"kernel\", operation: structuredClone(execution.executor.operation) }\n }\n}\n\nfunction assertExecutionRecordMatches(\n existing: ExecutionRecord,\n input: CreateExecutionInput\n): void {\n const { createdAt: _createdAt, ...stored } = existing\n if (!isDeepStrictEqual(stored, input)) {\n throw new ExecutionStorageError(\n \"duplicate_execution\",\n `[Sixb] Execution '${input.id}' already exists with different immutable provenance.`\n )\n }\n}\n\nfunction assertPrimitiveExecution(\n execution: ExecutionRecord,\n primitive: TrustedPrimitiveRef\n): void {\n const authority = execution.authorizationRef\n if (\n execution.executor.type !== \"primitive\" ||\n execution.executor.kind !== primitive.kind ||\n execution.executor.runId !== primitive.runId ||\n authority.type !== \"trustedPrimitive\" ||\n authority.primitive.kind !== primitive.kind ||\n authority.primitive.id !== primitive.id ||\n authority.primitive.runId !== primitive.runId\n ) {\n throw new ExecutionStorageError(\n \"invalid_input\",\n `[Sixb] Execution '${execution.id}' does not authorize ${primitive.kind} run '${primitive.runId}'.`\n )\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "FD635CE58B49306C64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/schedules/errors.ts
|
|
3
|
+
class ScheduleValidationError extends Error {
|
|
4
|
+
name = "ScheduleValidationError";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
class CronValidationError extends Error {
|
|
8
|
+
name = "CronValidationError";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/schedules/cron.ts
|
|
12
|
+
function parseInteger(input, fieldName) {
|
|
13
|
+
if (!/^\d+$/.test(input)) {
|
|
14
|
+
throw new CronValidationError(`Invalid ${fieldName}: '${input}'.`);
|
|
15
|
+
}
|
|
16
|
+
return Number.parseInt(input, 10);
|
|
17
|
+
}
|
|
18
|
+
function createCronFieldMatcher(params) {
|
|
19
|
+
const { field, min, max, fieldName } = params;
|
|
20
|
+
const normalize = params.normalize ?? ((value) => value);
|
|
21
|
+
const input = field.trim();
|
|
22
|
+
if (!input) {
|
|
23
|
+
throw new CronValidationError(`Empty cron ${fieldName} field.`);
|
|
24
|
+
}
|
|
25
|
+
if (input === "*") {
|
|
26
|
+
return {
|
|
27
|
+
isAny: true,
|
|
28
|
+
values: null,
|
|
29
|
+
matches: () => true
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const allowed = new Set;
|
|
33
|
+
const segments = input.split(",");
|
|
34
|
+
for (const segment of segments) {
|
|
35
|
+
if (!segment) {
|
|
36
|
+
throw new CronValidationError(`Invalid cron ${fieldName} field: '${input}'.`);
|
|
37
|
+
}
|
|
38
|
+
const stepParts = segment.split("/");
|
|
39
|
+
if (stepParts.length > 2) {
|
|
40
|
+
throw new CronValidationError(`Invalid cron ${fieldName} segment: '${segment}'.`);
|
|
41
|
+
}
|
|
42
|
+
const base = stepParts[0];
|
|
43
|
+
const step = stepParts[1] === undefined ? 1 : parseInteger(stepParts[1], `cron ${fieldName} step for '${segment}'`);
|
|
44
|
+
if (step <= 0) {
|
|
45
|
+
throw new CronValidationError(`Cron ${fieldName} step must be > 0 in segment '${segment}'.`);
|
|
46
|
+
}
|
|
47
|
+
let rangeStart;
|
|
48
|
+
let rangeEnd;
|
|
49
|
+
if (base === "*") {
|
|
50
|
+
rangeStart = min;
|
|
51
|
+
rangeEnd = max;
|
|
52
|
+
} else if (base.includes("-")) {
|
|
53
|
+
const [rawStart, rawEnd] = base.split("-");
|
|
54
|
+
if (!rawStart || !rawEnd) {
|
|
55
|
+
throw new CronValidationError(`Invalid cron ${fieldName} range: '${base}'.`);
|
|
56
|
+
}
|
|
57
|
+
rangeStart = parseInteger(rawStart, `cron ${fieldName} range start for '${base}'`);
|
|
58
|
+
rangeEnd = parseInteger(rawEnd, `cron ${fieldName} range end for '${base}'`);
|
|
59
|
+
} else {
|
|
60
|
+
const value = parseInteger(base, `cron ${fieldName} value '${base}'`);
|
|
61
|
+
rangeStart = value;
|
|
62
|
+
rangeEnd = value;
|
|
63
|
+
}
|
|
64
|
+
if (rangeStart > rangeEnd) {
|
|
65
|
+
throw new CronValidationError(`Cron ${fieldName} range start must be <= end in segment '${segment}'.`);
|
|
66
|
+
}
|
|
67
|
+
for (let value = rangeStart;value <= rangeEnd; value += step) {
|
|
68
|
+
const normalized = normalize(value);
|
|
69
|
+
if (normalized < min || normalized > max) {
|
|
70
|
+
throw new CronValidationError(`Cron ${fieldName} value ${value} is outside range ${min}-${max}.`);
|
|
71
|
+
}
|
|
72
|
+
allowed.add(normalized);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
isAny: false,
|
|
77
|
+
values: allowed,
|
|
78
|
+
matches(value) {
|
|
79
|
+
const normalized = normalize(value);
|
|
80
|
+
return allowed.has(normalized);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function createCronMatcher(expression) {
|
|
85
|
+
const parts = expression.trim().split(/\s+/);
|
|
86
|
+
if (parts.length !== 5) {
|
|
87
|
+
throw new CronValidationError(`Invalid cron expression '${expression}'. Expected 5 fields (minute hour day month weekday).`);
|
|
88
|
+
}
|
|
89
|
+
const [minuteField, hourField, dayOfMonthField, monthField, dayOfWeekField] = parts;
|
|
90
|
+
const minute = createCronFieldMatcher({
|
|
91
|
+
field: minuteField,
|
|
92
|
+
min: 0,
|
|
93
|
+
max: 59,
|
|
94
|
+
fieldName: "minute"
|
|
95
|
+
});
|
|
96
|
+
const hour = createCronFieldMatcher({
|
|
97
|
+
field: hourField,
|
|
98
|
+
min: 0,
|
|
99
|
+
max: 23,
|
|
100
|
+
fieldName: "hour"
|
|
101
|
+
});
|
|
102
|
+
const dayOfMonth = createCronFieldMatcher({
|
|
103
|
+
field: dayOfMonthField,
|
|
104
|
+
min: 1,
|
|
105
|
+
max: 31,
|
|
106
|
+
fieldName: "day-of-month"
|
|
107
|
+
});
|
|
108
|
+
const month = createCronFieldMatcher({
|
|
109
|
+
field: monthField,
|
|
110
|
+
min: 1,
|
|
111
|
+
max: 12,
|
|
112
|
+
fieldName: "month"
|
|
113
|
+
});
|
|
114
|
+
const dayOfWeek = createCronFieldMatcher({
|
|
115
|
+
field: dayOfWeekField,
|
|
116
|
+
min: 0,
|
|
117
|
+
max: 6,
|
|
118
|
+
fieldName: "day-of-week",
|
|
119
|
+
normalize: (value) => value === 7 ? 0 : value
|
|
120
|
+
});
|
|
121
|
+
return (now) => {
|
|
122
|
+
if (!minute.matches(now.getMinutes()))
|
|
123
|
+
return false;
|
|
124
|
+
if (!hour.matches(now.getHours()))
|
|
125
|
+
return false;
|
|
126
|
+
if (!month.matches(now.getMonth() + 1))
|
|
127
|
+
return false;
|
|
128
|
+
const dayOfMonthMatches = dayOfMonth.matches(now.getDate());
|
|
129
|
+
const dayOfWeekMatches = dayOfWeek.matches(now.getDay());
|
|
130
|
+
const dayMatches = dayOfMonth.isAny || dayOfWeek.isAny ? dayOfMonthMatches && dayOfWeekMatches : dayOfMonthMatches || dayOfWeekMatches;
|
|
131
|
+
return dayMatches;
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// src/schedules/next-occurrence.ts
|
|
136
|
+
var MAX_SEARCH_MS = 4 * 365.25 * 24 * 60 * 60 * 1000;
|
|
137
|
+
var timezoneFormatterCache = new Map;
|
|
138
|
+
function getTimezoneFormatter(timezone) {
|
|
139
|
+
let formatter = timezoneFormatterCache.get(timezone);
|
|
140
|
+
if (!formatter) {
|
|
141
|
+
formatter = new Intl.DateTimeFormat("en-US", {
|
|
142
|
+
timeZone: timezone,
|
|
143
|
+
year: "numeric",
|
|
144
|
+
month: "numeric",
|
|
145
|
+
day: "numeric",
|
|
146
|
+
hour: "numeric",
|
|
147
|
+
minute: "numeric",
|
|
148
|
+
weekday: "short",
|
|
149
|
+
hour12: false
|
|
150
|
+
});
|
|
151
|
+
timezoneFormatterCache.set(timezone, formatter);
|
|
152
|
+
}
|
|
153
|
+
return formatter;
|
|
154
|
+
}
|
|
155
|
+
function getLocalComponents(date, timezone) {
|
|
156
|
+
if (timezone === undefined) {
|
|
157
|
+
return {
|
|
158
|
+
minute: date.getUTCMinutes(),
|
|
159
|
+
hour: date.getUTCHours(),
|
|
160
|
+
dayOfMonth: date.getUTCDate(),
|
|
161
|
+
month: date.getUTCMonth() + 1,
|
|
162
|
+
dayOfWeek: date.getUTCDay()
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const formatter = getTimezoneFormatter(timezone);
|
|
166
|
+
const parts = formatter.formatToParts(date);
|
|
167
|
+
const get = (type) => {
|
|
168
|
+
const part = parts.find((p) => p.type === type);
|
|
169
|
+
if (!part)
|
|
170
|
+
throw new CronValidationError(`Failed to extract ${type} for timezone ${timezone}.`);
|
|
171
|
+
return part.value;
|
|
172
|
+
};
|
|
173
|
+
const weekdayStr = get("weekday");
|
|
174
|
+
const weekdayMap = {
|
|
175
|
+
Sun: 0,
|
|
176
|
+
Mon: 1,
|
|
177
|
+
Tue: 2,
|
|
178
|
+
Wed: 3,
|
|
179
|
+
Thu: 4,
|
|
180
|
+
Fri: 5,
|
|
181
|
+
Sat: 6
|
|
182
|
+
};
|
|
183
|
+
return {
|
|
184
|
+
minute: Number.parseInt(get("minute"), 10),
|
|
185
|
+
hour: Number.parseInt(get("hour"), 10) % 24,
|
|
186
|
+
dayOfMonth: Number.parseInt(get("day"), 10),
|
|
187
|
+
month: Number.parseInt(get("month"), 10),
|
|
188
|
+
dayOfWeek: weekdayMap[weekdayStr] ?? 0
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function matchesDay(dayOfMonth, dayOfWeek, comp) {
|
|
192
|
+
const domMatches = dayOfMonth.matches(comp.dayOfMonth);
|
|
193
|
+
const dowMatches = dayOfWeek.matches(comp.dayOfWeek);
|
|
194
|
+
if (dayOfMonth.isAny || dayOfWeek.isAny) {
|
|
195
|
+
return domMatches && dowMatches;
|
|
196
|
+
}
|
|
197
|
+
return domMatches || dowMatches;
|
|
198
|
+
}
|
|
199
|
+
function nextCronOccurrence(expression, after, timezone) {
|
|
200
|
+
const parts = expression.trim().split(/\s+/);
|
|
201
|
+
if (parts.length !== 5) {
|
|
202
|
+
throw new CronValidationError(`Invalid cron expression '${expression}'. Expected 5 fields (minute hour day month weekday).`);
|
|
203
|
+
}
|
|
204
|
+
const [minuteField, hourField, dayOfMonthField, monthField, dayOfWeekField] = parts;
|
|
205
|
+
const minuteMatcher = createCronFieldMatcher({
|
|
206
|
+
field: minuteField,
|
|
207
|
+
min: 0,
|
|
208
|
+
max: 59,
|
|
209
|
+
fieldName: "minute"
|
|
210
|
+
});
|
|
211
|
+
const hourMatcher = createCronFieldMatcher({
|
|
212
|
+
field: hourField,
|
|
213
|
+
min: 0,
|
|
214
|
+
max: 23,
|
|
215
|
+
fieldName: "hour"
|
|
216
|
+
});
|
|
217
|
+
const dayOfMonthMatcher = createCronFieldMatcher({
|
|
218
|
+
field: dayOfMonthField,
|
|
219
|
+
min: 1,
|
|
220
|
+
max: 31,
|
|
221
|
+
fieldName: "day-of-month"
|
|
222
|
+
});
|
|
223
|
+
const monthMatcher = createCronFieldMatcher({
|
|
224
|
+
field: monthField,
|
|
225
|
+
min: 1,
|
|
226
|
+
max: 12,
|
|
227
|
+
fieldName: "month"
|
|
228
|
+
});
|
|
229
|
+
const dayOfWeekMatcher = createCronFieldMatcher({
|
|
230
|
+
field: dayOfWeekField,
|
|
231
|
+
min: 0,
|
|
232
|
+
max: 6,
|
|
233
|
+
fieldName: "day-of-week",
|
|
234
|
+
normalize: (value) => value === 7 ? 0 : value
|
|
235
|
+
});
|
|
236
|
+
const startMs = after.getTime();
|
|
237
|
+
let candidateMs = Math.ceil(startMs / 60000) * 60000;
|
|
238
|
+
if (candidateMs <= startMs)
|
|
239
|
+
candidateMs += 60000;
|
|
240
|
+
const limitMs = startMs + MAX_SEARCH_MS;
|
|
241
|
+
while (candidateMs <= limitMs) {
|
|
242
|
+
const candidate = new Date(candidateMs);
|
|
243
|
+
const comp = getLocalComponents(candidate, timezone);
|
|
244
|
+
if (!monthMatcher.matches(comp.month)) {
|
|
245
|
+
if (timezone === undefined) {
|
|
246
|
+
const next = findNextMatchingMonth(candidate, monthMatcher);
|
|
247
|
+
candidateMs = next.getTime();
|
|
248
|
+
} else {
|
|
249
|
+
candidateMs += ((24 - comp.hour) * 60 - comp.minute) * 60000;
|
|
250
|
+
}
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
if (!matchesDay(dayOfMonthMatcher, dayOfWeekMatcher, comp)) {
|
|
254
|
+
if (timezone === undefined) {
|
|
255
|
+
const next = new Date(candidateMs);
|
|
256
|
+
next.setUTCDate(next.getUTCDate() + 1);
|
|
257
|
+
next.setUTCHours(0, 0, 0, 0);
|
|
258
|
+
candidateMs = next.getTime();
|
|
259
|
+
} else {
|
|
260
|
+
candidateMs += ((24 - comp.hour) * 60 - comp.minute) * 60000;
|
|
261
|
+
}
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
if (!hourMatcher.matches(comp.hour)) {
|
|
265
|
+
if (timezone === undefined) {
|
|
266
|
+
const next = new Date(candidateMs);
|
|
267
|
+
next.setUTCHours(next.getUTCHours() + 1, 0, 0, 0);
|
|
268
|
+
candidateMs = next.getTime();
|
|
269
|
+
} else {
|
|
270
|
+
candidateMs += (60 - comp.minute) * 60000;
|
|
271
|
+
}
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
if (!minuteMatcher.matches(comp.minute)) {
|
|
275
|
+
candidateMs += 60000;
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
return candidate;
|
|
279
|
+
}
|
|
280
|
+
throw new CronValidationError(`No matching occurrence found for '${expression}' within 4 years.`);
|
|
281
|
+
}
|
|
282
|
+
function findNextMatchingMonth(current, monthMatcher) {
|
|
283
|
+
const d = new Date(current);
|
|
284
|
+
d.setUTCDate(1);
|
|
285
|
+
d.setUTCHours(0, 0, 0, 0);
|
|
286
|
+
d.setUTCMonth(d.getUTCMonth() + 1);
|
|
287
|
+
for (let i = 0;i < 48; i++) {
|
|
288
|
+
if (monthMatcher.matches(d.getUTCMonth() + 1)) {
|
|
289
|
+
return d;
|
|
290
|
+
}
|
|
291
|
+
d.setUTCMonth(d.getUTCMonth() + 1);
|
|
292
|
+
}
|
|
293
|
+
return d;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export { ScheduleValidationError, CronValidationError, createCronFieldMatcher, createCronMatcher, nextCronOccurrence };
|
|
297
|
+
|
|
298
|
+
//# debugId=99F060BDE8225E7864756E2164756E21
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/schedules/errors.ts", "../src/schedules/cron.ts", "../src/schedules/next-occurrence.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export class ScheduleValidationError extends Error {\n readonly name = \"ScheduleValidationError\"\n}\n\nexport class CronValidationError extends Error {\n readonly name = \"CronValidationError\"\n}\n",
|
|
6
|
+
"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",
|
|
7
|
+
"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"
|
|
8
|
+
],
|
|
9
|
+
"mappings": ";;AAAO,MAAM,gCAAgC,MAAM;AAAA,EACxC,OAAO;AAClB;AAAA;AAEO,MAAM,4BAA4B,MAAM;AAAA,EACpC,OAAO;AAClB;;;ACEA,SAAS,YAAY,CAAC,OAAe,WAA2B;AAAA,EAC9D,IAAI,CAAC,QAAQ,KAAK,KAAK,GAAG;AAAA,IACxB,MAAM,IAAI,oBAAoB,WAAW,eAAe,SAAS;AAAA,EACnE;AAAA,EAEA,OAAO,OAAO,SAAS,OAAO,EAAE;AAAA;AAG3B,SAAS,sBAAsB,CAAC,QAMlB;AAAA,EACnB,QAAQ,OAAO,KAAK,KAAK,cAAc;AAAA,EACvC,MAAM,YAAY,OAAO,cAAc,CAAC,UAAkB;AAAA,EAC1D,MAAM,QAAQ,MAAM,KAAK;AAAA,EAEzB,IAAI,CAAC,OAAO;AAAA,IACV,MAAM,IAAI,oBAAoB,cAAc,kBAAkB;AAAA,EAChE;AAAA,EAEA,IAAI,UAAU,KAAK;AAAA,IACjB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS,MAAM;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,WAAW,MAAM,MAAM,GAAG;AAAA,EAEhC,WAAW,WAAW,UAAU;AAAA,IAC9B,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,oBAAoB,gBAAgB,qBAAqB,SAAS;AAAA,IAC9E;AAAA,IAEA,MAAM,YAAY,QAAQ,MAAM,GAAG;AAAA,IACnC,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,MAAM,IAAI,oBAAoB,gBAAgB,uBAAuB,WAAW;AAAA,IAClF;AAAA,IAEA,MAAM,OAAO,UAAU;AAAA,IACvB,MAAM,OACJ,UAAU,OAAO,YACb,IACA,aAAa,UAAU,IAAI,QAAQ,uBAAuB,UAAU;AAAA,IAE1E,IAAI,QAAQ,GAAG;AAAA,MACb,MAAM,IAAI,oBAAoB,QAAQ,0CAA0C,WAAW;AAAA,IAC7F;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,IAAI,SAAS,KAAK;AAAA,MAChB,aAAa;AAAA,MACb,WAAW;AAAA,IACb,EAAO,SAAI,KAAK,SAAS,GAAG,GAAG;AAAA,MAC7B,OAAO,UAAU,UAAU,KAAK,MAAM,GAAG;AAAA,MACzC,IAAI,CAAC,YAAY,CAAC,QAAQ;AAAA,QACxB,MAAM,IAAI,oBAAoB,gBAAgB,qBAAqB,QAAQ;AAAA,MAC7E;AAAA,MAEA,aAAa,aAAa,UAAU,QAAQ,8BAA8B,OAAO;AAAA,MACjF,WAAW,aAAa,QAAQ,QAAQ,4BAA4B,OAAO;AAAA,IAC7E,EAAO;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM,QAAQ,oBAAoB,OAAO;AAAA,MACpE,aAAa;AAAA,MACb,WAAW;AAAA;AAAA,IAGb,IAAI,aAAa,UAAU;AAAA,MACzB,MAAM,IAAI,oBACR,QAAQ,oDAAoD,WAC9D;AAAA,IACF;AAAA,IAEA,SAAS,QAAQ,WAAY,SAAS,UAAU,SAAS,MAAM;AAAA,MAC7D,MAAM,aAAa,UAAU,KAAK;AAAA,MAClC,IAAI,aAAa,OAAO,aAAa,KAAK;AAAA,QACxC,MAAM,IAAI,oBACR,QAAQ,mBAAmB,0BAA0B,OAAO,MAC9D;AAAA,MACF;AAAA,MACA,QAAQ,IAAI,UAAU;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO,CAAC,OAAe;AAAA,MACrB,MAAM,aAAa,UAAU,KAAK;AAAA,MAClC,OAAO,QAAQ,IAAI,UAAU;AAAA;AAAA,EAEjC;AAAA;AAGK,SAAS,iBAAiB,CAAC,YAA4C;AAAA,EAC5E,MAAM,QAAQ,WAAW,KAAK,EAAE,MAAM,KAAK;AAAA,EAC3C,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,IAAI,oBACR,4BAA4B,iEAC9B;AAAA,EACF;AAAA,EAEA,OAAO,aAAa,WAAW,iBAAiB,YAAY,kBAAkB;AAAA,EAE9E,MAAM,SAAS,uBAAuB;AAAA,IACpC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,OAAO,uBAAuB;AAAA,IAClC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,aAAa,uBAAuB;AAAA,IACxC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,QAAQ,uBAAuB;AAAA,IACnC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,YAAY,uBAAuB;AAAA,IACvC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,IACX,WAAW,CAAC,UAAW,UAAU,IAAI,IAAI;AAAA,EAC3C,CAAC;AAAA,EAED,OAAO,CAAC,QAAc;AAAA,IACpB,IAAI,CAAC,OAAO,QAAQ,IAAI,WAAW,CAAC;AAAA,MAAG,OAAO;AAAA,IAC9C,IAAI,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC;AAAA,MAAG,OAAO;AAAA,IAC1C,IAAI,CAAC,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC;AAAA,MAAG,OAAO;AAAA,IAE/C,MAAM,oBAAoB,WAAW,QAAQ,IAAI,QAAQ,CAAC;AAAA,IAC1D,MAAM,mBAAmB,UAAU,QAAQ,IAAI,OAAO,CAAC;AAAA,IACvD,MAAM,aACJ,WAAW,SAAS,UAAU,QAC1B,qBAAqB,mBACrB,qBAAqB;AAAA,IAE3B,OAAO;AAAA;AAAA;;;AChKX,IAAM,gBAAgB,IAAI,SAAS,KAAK,KAAK,KAAK;AAalD,IAAM,yBAAyB,IAAI;AAEnC,SAAS,oBAAoB,CAAC,UAAuC;AAAA,EACnE,IAAI,YAAY,uBAAuB,IAAI,QAAQ;AAAA,EACnD,IAAI,CAAC,WAAW;AAAA,IACd,YAAY,IAAI,KAAK,eAAe,SAAS;AAAA,MAC3C,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,uBAAuB,IAAI,UAAU,SAAS;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,MAAY,UAA+C;AAAA,EACrF,IAAI,aAAa,WAAW;AAAA,IAC1B,OAAO;AAAA,MACL,QAAQ,KAAK,cAAc;AAAA,MAC3B,MAAM,KAAK,YAAY;AAAA,MACvB,YAAY,KAAK,WAAW;AAAA,MAC5B,OAAO,KAAK,YAAY,IAAI;AAAA,MAC5B,WAAW,KAAK,UAAU;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,qBAAqB,QAAQ;AAAA,EAC/C,MAAM,QAAQ,UAAU,cAAc,IAAI;AAAA,EAC1C,MAAM,MAAM,CAAC,SAA+C;AAAA,IAC1D,MAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,IAC9C,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,oBAAoB,qBAAqB,qBAAqB,WAAW;AAAA,IAC9F,OAAO,KAAK;AAAA;AAAA,EAGd,MAAM,aAAa,IAAI,SAAS;AAAA,EAChC,MAAM,aAAqC;AAAA,IACzC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EAEA,OAAO;AAAA,IACL,QAAQ,OAAO,SAAS,IAAI,QAAQ,GAAG,EAAE;AAAA,IACzC,MAAM,OAAO,SAAS,IAAI,MAAM,GAAG,EAAE,IAAI;AAAA,IACzC,YAAY,OAAO,SAAS,IAAI,KAAK,GAAG,EAAE;AAAA,IAC1C,OAAO,OAAO,SAAS,IAAI,OAAO,GAAG,EAAE;AAAA,IACvC,WAAW,WAAW,eAAe;AAAA,EACvC;AAAA;AAGF,SAAS,UAAU,CACjB,YACA,WACA,MACS;AAAA,EACT,MAAM,aAAa,WAAW,QAAQ,KAAK,UAAU;AAAA,EACrD,MAAM,aAAa,UAAU,QAAQ,KAAK,SAAS;AAAA,EAEnD,IAAI,WAAW,SAAS,UAAU,OAAO;AAAA,IACvC,OAAO,cAAc;AAAA,EACvB;AAAA,EACA,OAAO,cAAc;AAAA;AAYhB,SAAS,kBAAkB,CAAC,YAAoB,OAAa,UAAyB;AAAA,EAC3F,MAAM,QAAQ,WAAW,KAAK,EAAE,MAAM,KAAK;AAAA,EAC3C,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,IAAI,oBACR,4BAA4B,iEAC9B;AAAA,EACF;AAAA,EAEA,OAAO,aAAa,WAAW,iBAAiB,YAAY,kBAAkB;AAAA,EAE9E,MAAM,gBAAgB,uBAAuB;AAAA,IAC3C,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,cAAc,uBAAuB;AAAA,IACzC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,oBAAoB,uBAAuB;AAAA,IAC/C,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,eAAe,uBAAuB;AAAA,IAC1C,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,EACb,CAAC;AAAA,EACD,MAAM,mBAAmB,uBAAuB;AAAA,IAC9C,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,WAAW;AAAA,IACX,WAAW,CAAC,UAAW,UAAU,IAAI,IAAI;AAAA,EAC3C,CAAC;AAAA,EAGD,MAAM,UAAU,MAAM,QAAQ;AAAA,EAC9B,IAAI,cAAc,KAAK,KAAK,UAAU,KAAM,IAAI;AAAA,EAChD,IAAI,eAAe;AAAA,IAAS,eAAe;AAAA,EAE3C,MAAM,UAAU,UAAU;AAAA,EAE1B,OAAO,eAAe,SAAS;AAAA,IAC7B,MAAM,YAAY,IAAI,KAAK,WAAW;AAAA,IACtC,MAAM,OAAO,mBAAmB,WAAW,QAAQ;AAAA,IAGnD,IAAI,CAAC,aAAa,QAAQ,KAAK,KAAK,GAAG;AAAA,MACrC,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,OAAO,sBAAsB,WAAW,YAAY;AAAA,QAC1D,cAAc,KAAK,QAAQ;AAAA,MAC7B,EAAO;AAAA,QAEL,iBAAiB,KAAK,KAAK,QAAQ,KAAK,KAAK,UAAU;AAAA;AAAA,MAEzD;AAAA,IACF;AAAA,IAGA,IAAI,CAAC,WAAW,mBAAmB,kBAAkB,IAAI,GAAG;AAAA,MAC1D,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,OAAO,IAAI,KAAK,WAAW;AAAA,QACjC,KAAK,WAAW,KAAK,WAAW,IAAI,CAAC;AAAA,QACrC,KAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,QAC3B,cAAc,KAAK,QAAQ;AAAA,MAC7B,EAAO;AAAA,QAEL,iBAAiB,KAAK,KAAK,QAAQ,KAAK,KAAK,UAAU;AAAA;AAAA,MAEzD;AAAA,IACF;AAAA,IAGA,IAAI,CAAC,YAAY,QAAQ,KAAK,IAAI,GAAG;AAAA,MACnC,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,OAAO,IAAI,KAAK,WAAW;AAAA,QACjC,KAAK,YAAY,KAAK,YAAY,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,QAChD,cAAc,KAAK,QAAQ;AAAA,MAC7B,EAAO;AAAA,QAEL,gBAAgB,KAAK,KAAK,UAAU;AAAA;AAAA,MAEtC;AAAA,IACF;AAAA,IAGA,IAAI,CAAC,cAAc,QAAQ,KAAK,MAAM,GAAG;AAAA,MACvC,eAAe;AAAA,MACf;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,oBAAoB,qCAAqC,6BAA6B;AAAA;AAGlG,SAAS,qBAAqB,CAAC,SAAe,cAAsC;AAAA,EAClF,MAAM,IAAI,IAAI,KAAK,OAAO;AAAA,EAC1B,EAAE,WAAW,CAAC;AAAA,EACd,EAAE,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,EACxB,EAAE,YAAY,EAAE,YAAY,IAAI,CAAC;AAAA,EAEjC,SAAS,IAAI,EAAG,IAAI,IAAI,KAAK;AAAA,IAC3B,IAAI,aAAa,QAAQ,EAAE,YAAY,IAAI,CAAC,GAAG;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IACA,EAAE,YAAY,EAAE,YAAY,IAAI,CAAC;AAAA,EACnC;AAAA,EAEA,OAAO;AAAA;",
|
|
10
|
+
"debugId": "99F060BDE8225E7864756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
nextCronOccurrence
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-979ww6b3.js";
|
|
5
5
|
|
|
6
6
|
// src/scheduler/errors.ts
|
|
7
7
|
class SchedulerError extends Error {
|
|
@@ -13,6 +13,7 @@ class SchedulerValidationError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
// src/scheduler/runtime.ts
|
|
15
15
|
var DEFAULT_EMIT_DRAIN_TIMEOUT_MS = 5000;
|
|
16
|
+
var MAX_TIMER_DELAY_MS = 2147483647;
|
|
16
17
|
|
|
17
18
|
class SchedulerRuntime {
|
|
18
19
|
schedules;
|
|
@@ -39,8 +40,12 @@ class SchedulerRuntime {
|
|
|
39
40
|
}
|
|
40
41
|
const now = this.now();
|
|
41
42
|
for (const schedule of this.schedules) {
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
try {
|
|
44
|
+
const next = nextCronOccurrence(schedule.trigger.expression, now, schedule.trigger.timezone);
|
|
45
|
+
this.nextOccurrences.set(schedule.id, next);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
console.error(`[Sixb] Scheduler failed to compute next occurrence for '${schedule.id}':`, error);
|
|
48
|
+
}
|
|
44
49
|
}
|
|
45
50
|
this.armTimer();
|
|
46
51
|
this.started = true;
|
|
@@ -86,7 +91,7 @@ class SchedulerRuntime {
|
|
|
86
91
|
}
|
|
87
92
|
if (earliest === null)
|
|
88
93
|
return;
|
|
89
|
-
const delayMs = Math.max(0, earliest.getTime() - this.now().getTime());
|
|
94
|
+
const delayMs = Math.min(Math.max(0, earliest.getTime() - this.now().getTime()), MAX_TIMER_DELAY_MS);
|
|
90
95
|
this.timer = setTimeout(() => this.tick(), delayMs);
|
|
91
96
|
}
|
|
92
97
|
tick() {
|
|
@@ -133,4 +138,4 @@ function isCronSchedule(schedule) {
|
|
|
133
138
|
}
|
|
134
139
|
export { SchedulerError, SchedulerValidationError, SchedulerRuntime };
|
|
135
140
|
|
|
136
|
-
//# debugId=
|
|
141
|
+
//# debugId=D42DA56033AA99DC64756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/scheduler/errors.ts", "../src/scheduler/runtime.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export class SchedulerError extends Error {\n readonly name = \"SchedulerError\"\n}\n\nexport class SchedulerValidationError extends Error {\n readonly name = \"SchedulerValidationError\"\n}\n",
|
|
6
|
+
"import type { DomainEventLog } from \"../events\"\nimport { nextCronOccurrence } from \"../schedules/next-occurrence\"\nimport type { CronScheduleDefinition, ScheduleDefinition } from \"../schedules/types\"\nimport { SchedulerValidationError } from \"./errors\"\n\n/** Matches the `onError` flush budget: long enough for a healthy broker, short enough to shut down. */\nconst DEFAULT_EMIT_DRAIN_TIMEOUT_MS = 5_000\n\n/**\n * Largest delay `setTimeout` accepts before it overflows its 32-bit counter.\n *\n * Node coerces anything larger to `1`, so an unclamped monthly or yearly occurrence would fire\n * immediately, find nothing due, and re-arm on the next tick -- spinning the event loop and\n * emitting a `TimeoutOverflowWarning` for every re-arm until the occurrence came into range.\n */\nconst MAX_TIMER_DELAY_MS = 2_147_483_647\n\nexport interface SchedulerRuntimeOptions {\n schedules: readonly ScheduleDefinition[]\n events: DomainEventLog\n now?: () => Date\n}\n\n/** Process lifecycle surface exposed by SixbHost. */\nexport interface SchedulerController {\n start(): Promise<void>\n stop(): Promise<void>\n}\n\nexport class SchedulerRuntime implements SchedulerController {\n private readonly schedules: readonly CronScheduleDefinition[]\n private readonly events: DomainEventLog\n private readonly now: () => Date\n private started = false\n private timer: ReturnType<typeof setTimeout> | null = null\n private readonly nextOccurrences = new Map<string, Date>()\n private readonly pendingEmits = new Set<Promise<void>>()\n\n constructor(options: SchedulerRuntimeOptions) {\n this.schedules = options.schedules.filter(isCronSchedule)\n this.events = options.events\n this.now = options.now ?? (() => new Date())\n }\n\n async start(): Promise<void> {\n if (this.started) return\n\n const seenIds = new Set<string>()\n for (const schedule of this.schedules) {\n if (seenIds.has(schedule.id)) {\n throw new SchedulerValidationError(`Duplicate schedule id '${schedule.id}'.`)\n }\n seenIds.add(schedule.id)\n }\n\n const now = this.now()\n for (const schedule of this.schedules) {\n // Syntactically valid expressions can still have no reachable occurrence -- `0 0 30 2 *`\n // parses but never matches. `tick()` already tolerates that per schedule; start-up must\n // agree, or one unschedulable expression stops every other schedule in the project and\n // crash-loops the scheduler role.\n try {\n const next = nextCronOccurrence(schedule.trigger.expression, now, schedule.trigger.timezone)\n this.nextOccurrences.set(schedule.id, next)\n } catch (error) {\n console.error(\n `[Sixb] Scheduler failed to compute next occurrence for '${schedule.id}':`,\n error\n )\n }\n }\n\n this.armTimer()\n this.started = true\n }\n\n async stop(): Promise<void> {\n if (this.timer !== null) {\n clearTimeout(this.timer)\n this.timer = null\n }\n this.nextOccurrences.clear()\n this.started = false\n await this.drainEmits()\n }\n\n /**\n * Wait for in-flight `schedule.triggered` emits so shutdown does not return mid-delivery.\n *\n * Bounded on purpose. `emit` never rejects, so an emit that never *settles* — a broker that accepts\n * the call and then hangs — would make `stop()` wait forever, turning a provider stall into a\n * process that cannot shut down. Losing the wait is recoverable; losing shutdown is not.\n */\n private async drainEmits(timeoutMs = DEFAULT_EMIT_DRAIN_TIMEOUT_MS): Promise<void> {\n if (this.pendingEmits.size === 0) return\n\n let timer: ReturnType<typeof setTimeout> | undefined\n try {\n const drained = await Promise.race([\n Promise.all([...this.pendingEmits]).then(() => true),\n new Promise<false>((resolve) => {\n timer = setTimeout(() => resolve(false), timeoutMs)\n }),\n ])\n if (!drained) {\n console.error(\n `[Sixb] Timed out after ${timeoutMs}ms waiting for ${this.pendingEmits.size} schedule emit(s) to settle.`\n )\n }\n } finally {\n if (timer) clearTimeout(timer)\n }\n }\n\n private armTimer(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer)\n this.timer = null\n }\n\n let earliest: Date | null = null\n for (const date of this.nextOccurrences.values()) {\n if (earliest === null || date.getTime() < earliest.getTime()) {\n earliest = date\n }\n }\n\n if (earliest === null) return\n\n // Waking early is harmless: `tick()` re-arms from the same occurrence map, so a clamped delay\n // just becomes several sleeps instead of one.\n const delayMs = Math.min(\n Math.max(0, earliest.getTime() - this.now().getTime()),\n MAX_TIMER_DELAY_MS\n )\n this.timer = setTimeout(() => this.tick(), delayMs)\n }\n\n private tick(): void {\n const now = this.now()\n\n // Collect all due schedules\n const dueSchedules: Array<{ schedule: CronScheduleDefinition; occurrenceAt: Date }> = []\n for (const schedule of this.schedules) {\n const occurrence = this.nextOccurrences.get(schedule.id)\n if (occurrence && occurrence.getTime() <= now.getTime()) {\n dueSchedules.push({ schedule, occurrenceAt: occurrence })\n }\n }\n\n // Emit events and recalculate next occurrences\n for (const { schedule, occurrenceAt } of dueSchedules) {\n const occurrenceAtIso = occurrenceAt.toISOString()\n // `emit` reports instead of rejecting, so nothing is swallowed here. The previous\n // `void this.events.append(...)` inside a `try` could not observe a rejection at all: a broker\n // outage meant the schedule silently never fired.\n this.track(\n this.events.emit(\n {\n events: [\n {\n type: \"schedule.triggered\",\n payload: {\n scheduleId: schedule.id,\n occurrenceAt: occurrenceAtIso,\n triggeredAt: now.toISOString(),\n occurrenceKey: `${schedule.id}:${occurrenceAtIso}`,\n },\n },\n ],\n },\n { source: \"Sixb\" }\n )\n )\n\n // Calculate next from the logical occurrence time (not now) to avoid drift\n try {\n const next = nextCronOccurrence(\n schedule.trigger.expression,\n occurrenceAt,\n schedule.trigger.timezone\n )\n this.nextOccurrences.set(schedule.id, next)\n } catch (error) {\n console.error(\n `[Sixb] Scheduler failed to compute next occurrence for '${schedule.id}':`,\n error\n )\n this.nextOccurrences.delete(schedule.id)\n }\n }\n\n this.armTimer()\n }\n\n /** Keep in-flight emits awaitable so `stop()` does not return mid-delivery. */\n private track(emit: Promise<void>): void {\n const tracked = emit.finally(() => this.pendingEmits.delete(tracked))\n this.pendingEmits.add(tracked)\n }\n}\n\nfunction isCronSchedule(schedule: ScheduleDefinition): schedule is CronScheduleDefinition {\n return schedule.trigger.type === \"cron\"\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": ";;;;;;AAAO,MAAM,uBAAuB,MAAM;AAAA,EAC/B,OAAO;AAClB;AAAA;AAEO,MAAM,iCAAiC,MAAM;AAAA,EACzC,OAAO;AAClB;;ACAA,IAAM,gCAAgC;AAStC,IAAM,qBAAqB;AAAA;AAcpB,MAAM,iBAAgD;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACT,UAAU;AAAA,EACV,QAA8C;AAAA,EACrC,kBAAkB,IAAI;AAAA,EACtB,eAAe,IAAI;AAAA,EAEpC,WAAW,CAAC,SAAkC;AAAA,IAC5C,KAAK,YAAY,QAAQ,UAAU,OAAO,cAAc;AAAA,IACxD,KAAK,SAAS,QAAQ;AAAA,IACtB,KAAK,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA;AAAA,OAGjC,MAAK,GAAkB;AAAA,IAC3B,IAAI,KAAK;AAAA,MAAS;AAAA,IAElB,MAAM,UAAU,IAAI;AAAA,IACpB,WAAW,YAAY,KAAK,WAAW;AAAA,MACrC,IAAI,QAAQ,IAAI,SAAS,EAAE,GAAG;AAAA,QAC5B,MAAM,IAAI,yBAAyB,0BAA0B,SAAS,MAAM;AAAA,MAC9E;AAAA,MACA,QAAQ,IAAI,SAAS,EAAE;AAAA,IACzB;AAAA,IAEA,MAAM,MAAM,KAAK,IAAI;AAAA,IACrB,WAAW,YAAY,KAAK,WAAW;AAAA,MAKrC,IAAI;AAAA,QACF,MAAM,OAAO,mBAAmB,SAAS,QAAQ,YAAY,KAAK,SAAS,QAAQ,QAAQ;AAAA,QAC3F,KAAK,gBAAgB,IAAI,SAAS,IAAI,IAAI;AAAA,QAC1C,OAAO,OAAO;AAAA,QACd,QAAQ,MACN,2DAA2D,SAAS,QACpE,KACF;AAAA;AAAA,IAEJ;AAAA,IAEA,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA;AAAA,OAGX,KAAI,GAAkB;AAAA,IAC1B,IAAI,KAAK,UAAU,MAAM;AAAA,MACvB,aAAa,KAAK,KAAK;AAAA,MACvB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,gBAAgB,MAAM;AAAA,IAC3B,KAAK,UAAU;AAAA,IACf,MAAM,KAAK,WAAW;AAAA;AAAA,OAUV,WAAU,CAAC,YAAY,+BAA8C;AAAA,IACjF,IAAI,KAAK,aAAa,SAAS;AAAA,MAAG;AAAA,IAElC,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,QAAQ,KAAK;AAAA,QACjC,QAAQ,IAAI,CAAC,GAAG,KAAK,YAAY,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,QACnD,IAAI,QAAe,CAAC,YAAY;AAAA,UAC9B,QAAQ,WAAW,MAAM,QAAQ,KAAK,GAAG,SAAS;AAAA,SACnD;AAAA,MACH,CAAC;AAAA,MACD,IAAI,CAAC,SAAS;AAAA,QACZ,QAAQ,MACN,0BAA0B,2BAA2B,KAAK,aAAa,kCACzE;AAAA,MACF;AAAA,cACA;AAAA,MACA,IAAI;AAAA,QAAO,aAAa,KAAK;AAAA;AAAA;AAAA,EAIzB,QAAQ,GAAS;AAAA,IACvB,IAAI,KAAK,UAAU,MAAM;AAAA,MACvB,aAAa,KAAK,KAAK;AAAA,MACvB,KAAK,QAAQ;AAAA,IACf;AAAA,IAEA,IAAI,WAAwB;AAAA,IAC5B,WAAW,QAAQ,KAAK,gBAAgB,OAAO,GAAG;AAAA,MAChD,IAAI,aAAa,QAAQ,KAAK,QAAQ,IAAI,SAAS,QAAQ,GAAG;AAAA,QAC5D,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IAEA,IAAI,aAAa;AAAA,MAAM;AAAA,IAIvB,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,GAAG,SAAS,QAAQ,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,GACrD,kBACF;AAAA,IACA,KAAK,QAAQ,WAAW,MAAM,KAAK,KAAK,GAAG,OAAO;AAAA;AAAA,EAG5C,IAAI,GAAS;AAAA,IACnB,MAAM,MAAM,KAAK,IAAI;AAAA,IAGrB,MAAM,eAAgF,CAAC;AAAA,IACvF,WAAW,YAAY,KAAK,WAAW;AAAA,MACrC,MAAM,aAAa,KAAK,gBAAgB,IAAI,SAAS,EAAE;AAAA,MACvD,IAAI,cAAc,WAAW,QAAQ,KAAK,IAAI,QAAQ,GAAG;AAAA,QACvD,aAAa,KAAK,EAAE,UAAU,cAAc,WAAW,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IAGA,aAAa,UAAU,kBAAkB,cAAc;AAAA,MACrD,MAAM,kBAAkB,aAAa,YAAY;AAAA,MAIjD,KAAK,MACH,KAAK,OAAO,KACV;AAAA,QACE,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP,YAAY,SAAS;AAAA,cACrB,cAAc;AAAA,cACd,aAAa,IAAI,YAAY;AAAA,cAC7B,eAAe,GAAG,SAAS,MAAM;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF,GACA,EAAE,QAAQ,OAAO,CACnB,CACF;AAAA,MAGA,IAAI;AAAA,QACF,MAAM,OAAO,mBACX,SAAS,QAAQ,YACjB,cACA,SAAS,QAAQ,QACnB;AAAA,QACA,KAAK,gBAAgB,IAAI,SAAS,IAAI,IAAI;AAAA,QAC1C,OAAO,OAAO;AAAA,QACd,QAAQ,MACN,2DAA2D,SAAS,QACpE,KACF;AAAA,QACA,KAAK,gBAAgB,OAAO,SAAS,EAAE;AAAA;AAAA,IAE3C;AAAA,IAEA,KAAK,SAAS;AAAA;AAAA,EAIR,KAAK,CAAC,MAA2B;AAAA,IACvC,MAAM,UAAU,KAAK,QAAQ,MAAM,KAAK,aAAa,OAAO,OAAO,CAAC;AAAA,IACpE,KAAK,aAAa,IAAI,OAAO;AAAA;AAEjC;AAEA,SAAS,cAAc,CAAC,UAAkE;AAAA,EACxF,OAAO,SAAS,QAAQ,SAAS;AAAA;",
|
|
9
|
+
"debugId": "D42DA56033AA99DC64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
} from "./chunk-04b07a9q.js";
|
|
5
5
|
import {
|
|
6
6
|
isFileRef
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-zqysyfjt.js";
|
|
8
8
|
import {
|
|
9
9
|
isJsonValue,
|
|
10
10
|
isPlainRecord
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-t8t39h7v.js";
|
|
12
12
|
|
|
13
13
|
// src/datasets/errors.ts
|
|
14
14
|
class DatasetValidationError extends Error {
|