@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.4
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/CHANGELOG.md +247 -0
- package/LICENSE +21 -0
- package/README.md +146 -2
- package/dist/cjs/ArtifactGc.d.ts +235 -0
- package/dist/cjs/ArtifactGc.d.ts.map +1 -0
- package/dist/cjs/ArtifactGc.js +183 -0
- package/dist/cjs/ArtifactGc.js.map +7 -0
- package/dist/cjs/ArtifactSync.d.ts +164 -0
- package/dist/cjs/ArtifactSync.d.ts.map +1 -0
- package/dist/cjs/ArtifactSync.js +144 -0
- package/dist/cjs/ArtifactSync.js.map +7 -0
- package/dist/cjs/CacheSync.d.ts +112 -0
- package/dist/cjs/CacheSync.d.ts.map +1 -0
- package/dist/cjs/CacheSync.js +64 -0
- package/dist/cjs/CacheSync.js.map +7 -0
- package/dist/cjs/DeferredClockFold.d.ts +354 -0
- package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
- package/dist/cjs/DeferredClockFold.js +335 -0
- package/dist/cjs/DeferredClockFold.js.map +7 -0
- package/dist/cjs/DisasterRecovery.d.ts +431 -0
- package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
- package/dist/cjs/DisasterRecovery.js +453 -0
- package/dist/cjs/DisasterRecovery.js.map +7 -0
- package/dist/cjs/DurableEngineState.d.ts +776 -0
- package/dist/cjs/DurableEngineState.d.ts.map +1 -0
- package/dist/cjs/DurableEngineState.js +1536 -0
- package/dist/cjs/DurableEngineState.js.map +7 -0
- package/dist/cjs/EngineStore.d.ts +158 -0
- package/dist/cjs/EngineStore.d.ts.map +1 -0
- package/dist/cjs/EngineStore.js +398 -0
- package/dist/cjs/EngineStore.js.map +7 -0
- package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
- package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/cjs/EngineStoreMetrics.js +135 -0
- package/dist/cjs/EngineStoreMetrics.js.map +7 -0
- package/dist/cjs/Errors.d.ts +22 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +39 -0
- package/dist/cjs/Errors.js.map +7 -0
- package/dist/cjs/EventTypes.d.ts +27 -0
- package/dist/cjs/EventTypes.d.ts.map +1 -0
- package/dist/cjs/EventTypes.js +37 -0
- package/dist/cjs/EventTypes.js.map +7 -0
- package/dist/cjs/ExecutionFacts.d.ts +59 -0
- package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
- package/dist/cjs/ExecutionFacts.js +123 -0
- package/dist/cjs/ExecutionFacts.js.map +7 -0
- package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
- package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/cjs/ExecutionSnapshot.js +111 -0
- package/dist/cjs/ExecutionSnapshot.js.map +7 -0
- package/dist/cjs/Inconsistency.d.ts +154 -0
- package/dist/cjs/Inconsistency.d.ts.map +1 -0
- package/dist/cjs/Inconsistency.js +135 -0
- package/dist/cjs/Inconsistency.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +56 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +78 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/OwnerIdentity.d.ts +91 -0
- package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
- package/dist/cjs/OwnerIdentity.js +65 -0
- package/dist/cjs/OwnerIdentity.js.map +7 -0
- package/dist/cjs/PlanInputStore.d.ts +110 -0
- package/dist/cjs/PlanInputStore.d.ts.map +1 -0
- package/dist/cjs/PlanInputStore.js +224 -0
- package/dist/cjs/PlanInputStore.js.map +7 -0
- package/dist/cjs/PlanMergeStore.d.ts +113 -0
- package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
- package/dist/cjs/PlanMergeStore.js +255 -0
- package/dist/cjs/PlanMergeStore.js.map +7 -0
- package/dist/cjs/PlanScheduler.d.ts +363 -0
- package/dist/cjs/PlanScheduler.d.ts.map +1 -0
- package/dist/cjs/PlanScheduler.js +1090 -0
- package/dist/cjs/PlanScheduler.js.map +7 -0
- package/dist/cjs/Reconciliation.d.ts +175 -0
- package/dist/cjs/Reconciliation.d.ts.map +1 -0
- package/dist/cjs/Reconciliation.js +119 -0
- package/dist/cjs/Reconciliation.js.map +7 -0
- package/dist/cjs/ReplayOnly.d.ts +91 -0
- package/dist/cjs/ReplayOnly.d.ts.map +1 -0
- package/dist/cjs/ReplayOnly.js +52 -0
- package/dist/cjs/ReplayOnly.js.map +7 -0
- package/dist/cjs/Retention.d.ts +113 -0
- package/dist/cjs/Retention.d.ts.map +1 -0
- package/dist/cjs/Retention.js +99 -0
- package/dist/cjs/Retention.js.map +7 -0
- package/dist/cjs/RunCatalogRead.d.ts +17 -0
- package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
- package/dist/cjs/RunCatalogRead.js +33 -0
- package/dist/cjs/RunCatalogRead.js.map +7 -0
- package/dist/cjs/RunChangeFeed.d.ts +75 -0
- package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
- package/dist/cjs/RunChangeFeed.js +96 -0
- package/dist/cjs/RunChangeFeed.js.map +7 -0
- package/dist/cjs/RunState.d.ts +116 -0
- package/dist/cjs/RunState.d.ts.map +1 -0
- package/dist/cjs/RunState.js +76 -0
- package/dist/cjs/RunState.js.map +7 -0
- package/dist/cjs/Selection.d.ts +495 -0
- package/dist/cjs/Selection.d.ts.map +1 -0
- package/dist/cjs/Selection.js +288 -0
- package/dist/cjs/Selection.js.map +7 -0
- package/dist/cjs/SelectionStore.d.ts +141 -0
- package/dist/cjs/SelectionStore.d.ts.map +1 -0
- package/dist/cjs/SelectionStore.js +229 -0
- package/dist/cjs/SelectionStore.js.map +7 -0
- package/dist/cjs/StepBoundary.d.ts +501 -0
- package/dist/cjs/StepBoundary.d.ts.map +1 -0
- package/dist/cjs/StepBoundary.js +619 -0
- package/dist/cjs/StepBoundary.js.map +7 -0
- package/dist/cjs/StepCacheFold.d.ts +148 -0
- package/dist/cjs/StepCacheFold.d.ts.map +1 -0
- package/dist/cjs/StepCacheFold.js +131 -0
- package/dist/cjs/StepCacheFold.js.map +7 -0
- package/dist/cjs/StepSandbox.d.ts +78 -0
- package/dist/cjs/StepSandbox.d.ts.map +1 -0
- package/dist/cjs/StepSandbox.js +75 -0
- package/dist/cjs/StepSandbox.js.map +7 -0
- package/dist/cjs/WakeBus.d.ts +116 -0
- package/dist/cjs/WakeBus.d.ts.map +1 -0
- package/dist/cjs/WakeBus.js +89 -0
- package/dist/cjs/WakeBus.js.map +7 -0
- package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
- package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/cjs/WorkspaceSandbox.js +711 -0
- package/dist/cjs/WorkspaceSandbox.js.map +7 -0
- package/dist/cjs/index.d.ts +157 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
- package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/ActionPersistence.js +1395 -0
- package/dist/cjs/internal/ActionPersistence.js.map +7 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/cjs/internal/ArtifactRoots.js +89 -0
- package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptAdmission.js +52 -0
- package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptLifecycle.js +112 -0
- package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
- package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
- package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptProbe.js +66 -0
- package/dist/cjs/internal/AttemptProbe.js.map +7 -0
- package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
- package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAdmission.js +71 -0
- package/dist/cjs/internal/CacheAdmission.js.map +7 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeHistory.js +61 -0
- package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
- package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
- package/dist/cjs/internal/CachePublication.d.ts +97 -0
- package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
- package/dist/cjs/internal/CachePublication.js +80 -0
- package/dist/cjs/internal/CachePublication.js.map +7 -0
- package/dist/cjs/internal/CallFacts.d.ts +15 -0
- package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
- package/dist/cjs/internal/CallFacts.js +97 -0
- package/dist/cjs/internal/CallFacts.js.map +7 -0
- package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
- package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/cjs/internal/CopiedRecord.js +134 -0
- package/dist/cjs/internal/CopiedRecord.js.map +7 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/DeferredPersistence.js +270 -0
- package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
- package/dist/cjs/internal/EffectRecords.d.ts +92 -0
- package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
- package/dist/cjs/internal/EffectRecords.js +63 -0
- package/dist/cjs/internal/EffectRecords.js.map +7 -0
- package/dist/cjs/internal/EngineJj.d.ts +30 -0
- package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
- package/dist/cjs/internal/EngineJj.js +42 -0
- package/dist/cjs/internal/EngineJj.js.map +7 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/cjs/internal/EngineStateSchema.js +58 -0
- package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js +201 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
- package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
- package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/cjs/internal/ExitEncoding.js +236 -0
- package/dist/cjs/internal/ExitEncoding.js.map +7 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
- package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
- package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/cjs/internal/FileEnumeration.js +194 -0
- package/dist/cjs/internal/FileEnumeration.js.map +7 -0
- package/dist/cjs/internal/HostReflection.d.ts +80 -0
- package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
- package/dist/cjs/internal/HostReflection.js +43 -0
- package/dist/cjs/internal/HostReflection.js.map +7 -0
- package/dist/cjs/internal/JournalRecords.d.ts +325 -0
- package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
- package/dist/cjs/internal/JournalRecords.js +122 -0
- package/dist/cjs/internal/JournalRecords.js.map +7 -0
- package/dist/cjs/internal/NodeJournal.d.ts +157 -0
- package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
- package/dist/cjs/internal/NodeJournal.js +192 -0
- package/dist/cjs/internal/NodeJournal.js.map +7 -0
- package/dist/cjs/internal/Ordering.d.ts +14 -0
- package/dist/cjs/internal/Ordering.d.ts.map +1 -0
- package/dist/cjs/internal/Ordering.js +25 -0
- package/dist/cjs/internal/Ordering.js.map +7 -0
- package/dist/cjs/internal/PlanInputs.d.ts +14 -0
- package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
- package/dist/cjs/internal/PlanInputs.js +78 -0
- package/dist/cjs/internal/PlanInputs.js.map +7 -0
- package/dist/cjs/internal/PlanMerges.d.ts +178 -0
- package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
- package/dist/cjs/internal/PlanMerges.js +125 -0
- package/dist/cjs/internal/PlanMerges.js.map +7 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/cjs/internal/ProvenanceSlot.js +53 -0
- package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/cjs/internal/ResultEnvelope.js +90 -0
- package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
- package/dist/cjs/internal/RetentionOps.d.ts +414 -0
- package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
- package/dist/cjs/internal/RetentionOps.js +354 -0
- package/dist/cjs/internal/RetentionOps.js.map +7 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/cjs/internal/RunCatalogOps.js +85 -0
- package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
- package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
- package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/cjs/internal/RunCoordinator.js +123 -0
- package/dist/cjs/internal/RunCoordinator.js.map +7 -0
- package/dist/cjs/internal/RunDriver.d.ts +192 -0
- package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
- package/dist/cjs/internal/RunDriver.js +1586 -0
- package/dist/cjs/internal/RunDriver.js.map +7 -0
- package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
- package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/RunLifecycle.js +63 -0
- package/dist/cjs/internal/RunLifecycle.js.map +7 -0
- package/dist/cjs/internal/RunListing.d.ts +78 -0
- package/dist/cjs/internal/RunListing.d.ts.map +1 -0
- package/dist/cjs/internal/RunListing.js +171 -0
- package/dist/cjs/internal/RunListing.js.map +7 -0
- package/dist/cjs/internal/RunListingError.d.ts +35 -0
- package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
- package/dist/cjs/internal/RunListingError.js +47 -0
- package/dist/cjs/internal/RunListingError.js.map +7 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/cjs/internal/RuntimeGraph.js +180 -0
- package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/cjs/internal/SandboxedExecution.js +104 -0
- package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
- package/dist/cjs/internal/StateTransaction.d.ts +44 -0
- package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
- package/dist/cjs/internal/StateTransaction.js +52 -0
- package/dist/cjs/internal/StateTransaction.js.map +7 -0
- package/dist/cjs/internal/StepFacts.d.ts +14 -0
- package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
- package/dist/cjs/internal/StepFacts.js +58 -0
- package/dist/cjs/internal/StepFacts.js.map +7 -0
- package/dist/cjs/internal/TypedEvents.d.ts +14 -0
- package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
- package/dist/cjs/internal/TypedEvents.js +37 -0
- package/dist/cjs/internal/TypedEvents.js.map +7 -0
- package/dist/cjs/migrations/0001_initial.d.ts +17 -0
- package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_initial.js +61 -0
- package/dist/cjs/migrations/0001_initial.js.map +7 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_selection_store.js +56 -0
- package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
- package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_plan_environment.js +56 -0
- package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_plan_merges.js +82 -0
- package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_execution_listing.js +101 -0
- package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestStores.d.ts +89 -0
- package/dist/cjs/test/TestStores.d.ts.map +1 -0
- package/dist/cjs/test/TestStores.js +98 -0
- package/dist/cjs/test/TestStores.js.map +7 -0
- package/dist/esm/ArtifactGc.d.ts +235 -0
- package/dist/esm/ArtifactGc.d.ts.map +1 -0
- package/dist/esm/ArtifactGc.js +268 -0
- package/dist/esm/ArtifactGc.js.map +1 -0
- package/dist/esm/ArtifactSync.d.ts +164 -0
- package/dist/esm/ArtifactSync.d.ts.map +1 -0
- package/dist/esm/ArtifactSync.js +176 -0
- package/dist/esm/ArtifactSync.js.map +1 -0
- package/dist/esm/CacheSync.d.ts +112 -0
- package/dist/esm/CacheSync.d.ts.map +1 -0
- package/dist/esm/CacheSync.js +94 -0
- package/dist/esm/CacheSync.js.map +1 -0
- package/dist/esm/DeferredClockFold.d.ts +354 -0
- package/dist/esm/DeferredClockFold.d.ts.map +1 -0
- package/dist/esm/DeferredClockFold.js +472 -0
- package/dist/esm/DeferredClockFold.js.map +1 -0
- package/dist/esm/DisasterRecovery.d.ts +431 -0
- package/dist/esm/DisasterRecovery.d.ts.map +1 -0
- package/dist/esm/DisasterRecovery.js +523 -0
- package/dist/esm/DisasterRecovery.js.map +1 -0
- package/dist/esm/DurableEngineState.d.ts +776 -0
- package/dist/esm/DurableEngineState.d.ts.map +1 -0
- package/dist/esm/DurableEngineState.js +1648 -0
- package/dist/esm/DurableEngineState.js.map +1 -0
- package/dist/esm/EngineStore.d.ts +158 -0
- package/dist/esm/EngineStore.d.ts.map +1 -0
- package/dist/esm/EngineStore.js +403 -0
- package/dist/esm/EngineStore.js.map +1 -0
- package/dist/esm/EngineStoreMetrics.d.ts +276 -0
- package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/esm/EngineStoreMetrics.js +260 -0
- package/dist/esm/EngineStoreMetrics.js.map +1 -0
- package/dist/esm/Errors.d.ts +22 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +22 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/EventTypes.d.ts +27 -0
- package/dist/esm/EventTypes.d.ts.map +1 -0
- package/dist/esm/EventTypes.js +27 -0
- package/dist/esm/EventTypes.js.map +1 -0
- package/dist/esm/ExecutionFacts.d.ts +59 -0
- package/dist/esm/ExecutionFacts.d.ts.map +1 -0
- package/dist/esm/ExecutionFacts.js +96 -0
- package/dist/esm/ExecutionFacts.js.map +1 -0
- package/dist/esm/ExecutionSnapshot.d.ts +117 -0
- package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/esm/ExecutionSnapshot.js +95 -0
- package/dist/esm/ExecutionSnapshot.js.map +1 -0
- package/dist/esm/Inconsistency.d.ts +154 -0
- package/dist/esm/Inconsistency.d.ts.map +1 -0
- package/dist/esm/Inconsistency.js +133 -0
- package/dist/esm/Inconsistency.js.map +1 -0
- package/dist/esm/Migrations.d.ts +56 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +91 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/OwnerIdentity.d.ts +91 -0
- package/dist/esm/OwnerIdentity.d.ts.map +1 -0
- package/dist/esm/OwnerIdentity.js +99 -0
- package/dist/esm/OwnerIdentity.js.map +1 -0
- package/dist/esm/PlanInputStore.d.ts +110 -0
- package/dist/esm/PlanInputStore.d.ts.map +1 -0
- package/dist/esm/PlanInputStore.js +207 -0
- package/dist/esm/PlanInputStore.js.map +1 -0
- package/dist/esm/PlanMergeStore.d.ts +113 -0
- package/dist/esm/PlanMergeStore.d.ts.map +1 -0
- package/dist/esm/PlanMergeStore.js +244 -0
- package/dist/esm/PlanMergeStore.js.map +1 -0
- package/dist/esm/PlanScheduler.d.ts +363 -0
- package/dist/esm/PlanScheduler.d.ts.map +1 -0
- package/dist/esm/PlanScheduler.js +1321 -0
- package/dist/esm/PlanScheduler.js.map +1 -0
- package/dist/esm/Reconciliation.d.ts +175 -0
- package/dist/esm/Reconciliation.d.ts.map +1 -0
- package/dist/esm/Reconciliation.js +175 -0
- package/dist/esm/Reconciliation.js.map +1 -0
- package/dist/esm/ReplayOnly.d.ts +91 -0
- package/dist/esm/ReplayOnly.d.ts.map +1 -0
- package/dist/esm/ReplayOnly.js +59 -0
- package/dist/esm/ReplayOnly.js.map +1 -0
- package/dist/esm/Retention.d.ts +113 -0
- package/dist/esm/Retention.d.ts.map +1 -0
- package/dist/esm/Retention.js +139 -0
- package/dist/esm/Retention.js.map +1 -0
- package/dist/esm/RunCatalogRead.d.ts +17 -0
- package/dist/esm/RunCatalogRead.d.ts.map +1 -0
- package/dist/esm/RunCatalogRead.js +17 -0
- package/dist/esm/RunCatalogRead.js.map +1 -0
- package/dist/esm/RunChangeFeed.d.ts +75 -0
- package/dist/esm/RunChangeFeed.d.ts.map +1 -0
- package/dist/esm/RunChangeFeed.js +81 -0
- package/dist/esm/RunChangeFeed.js.map +1 -0
- package/dist/esm/RunState.d.ts +116 -0
- package/dist/esm/RunState.d.ts.map +1 -0
- package/dist/esm/RunState.js +109 -0
- package/dist/esm/RunState.js.map +1 -0
- package/dist/esm/Selection.d.ts +495 -0
- package/dist/esm/Selection.d.ts.map +1 -0
- package/dist/esm/Selection.js +482 -0
- package/dist/esm/Selection.js.map +1 -0
- package/dist/esm/SelectionStore.d.ts +141 -0
- package/dist/esm/SelectionStore.d.ts.map +1 -0
- package/dist/esm/SelectionStore.js +215 -0
- package/dist/esm/SelectionStore.js.map +1 -0
- package/dist/esm/StepBoundary.d.ts +501 -0
- package/dist/esm/StepBoundary.d.ts.map +1 -0
- package/dist/esm/StepBoundary.js +919 -0
- package/dist/esm/StepBoundary.js.map +1 -0
- package/dist/esm/StepCacheFold.d.ts +148 -0
- package/dist/esm/StepCacheFold.d.ts.map +1 -0
- package/dist/esm/StepCacheFold.js +201 -0
- package/dist/esm/StepCacheFold.js.map +1 -0
- package/dist/esm/StepSandbox.d.ts +78 -0
- package/dist/esm/StepSandbox.d.ts.map +1 -0
- package/dist/esm/StepSandbox.js +70 -0
- package/dist/esm/StepSandbox.js.map +1 -0
- package/dist/esm/WakeBus.d.ts +116 -0
- package/dist/esm/WakeBus.d.ts.map +1 -0
- package/dist/esm/WakeBus.js +121 -0
- package/dist/esm/WakeBus.js.map +1 -0
- package/dist/esm/WorkspaceSandbox.d.ts +619 -0
- package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/esm/WorkspaceSandbox.js +985 -0
- package/dist/esm/WorkspaceSandbox.js.map +1 -0
- package/dist/esm/index.d.ts +157 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +157 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ActionPersistence.d.ts +276 -0
- package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/esm/internal/ActionPersistence.js +2306 -0
- package/dist/esm/internal/ActionPersistence.js.map +1 -0
- package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
- package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/esm/internal/ArtifactRoots.js +76 -0
- package/dist/esm/internal/ArtifactRoots.js.map +1 -0
- package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
- package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/esm/internal/AttemptAdmission.js +52 -0
- package/dist/esm/internal/AttemptAdmission.js.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.js +104 -0
- package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
- package/dist/esm/internal/AttemptProbe.d.ts +53 -0
- package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/esm/internal/AttemptProbe.js +83 -0
- package/dist/esm/internal/AttemptProbe.js.map +1 -0
- package/dist/esm/internal/CacheAdmission.d.ts +79 -0
- package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/esm/internal/CacheAdmission.js +72 -0
- package/dist/esm/internal/CacheAdmission.js.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.js +49 -0
- package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
- package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.js +73 -0
- package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
- package/dist/esm/internal/CachePublication.d.ts +97 -0
- package/dist/esm/internal/CachePublication.d.ts.map +1 -0
- package/dist/esm/internal/CachePublication.js +116 -0
- package/dist/esm/internal/CachePublication.js.map +1 -0
- package/dist/esm/internal/CallFacts.d.ts +15 -0
- package/dist/esm/internal/CallFacts.d.ts.map +1 -0
- package/dist/esm/internal/CallFacts.js +83 -0
- package/dist/esm/internal/CallFacts.js.map +1 -0
- package/dist/esm/internal/CopiedRecord.d.ts +61 -0
- package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/esm/internal/CopiedRecord.js +165 -0
- package/dist/esm/internal/CopiedRecord.js.map +1 -0
- package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
- package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/esm/internal/DeferredPersistence.js +240 -0
- package/dist/esm/internal/DeferredPersistence.js.map +1 -0
- package/dist/esm/internal/EffectRecords.d.ts +92 -0
- package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
- package/dist/esm/internal/EffectRecords.js +94 -0
- package/dist/esm/internal/EffectRecords.js.map +1 -0
- package/dist/esm/internal/EngineJj.d.ts +30 -0
- package/dist/esm/internal/EngineJj.d.ts.map +1 -0
- package/dist/esm/internal/EngineJj.js +29 -0
- package/dist/esm/internal/EngineJj.js.map +1 -0
- package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
- package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/esm/internal/EngineStateSchema.js +53 -0
- package/dist/esm/internal/EngineStateSchema.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
- package/dist/esm/internal/ExitEncoding.d.ts +180 -0
- package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/esm/internal/ExitEncoding.js +361 -0
- package/dist/esm/internal/ExitEncoding.js.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
- package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
- package/dist/esm/internal/FileEnumeration.d.ts +127 -0
- package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/esm/internal/FileEnumeration.js +236 -0
- package/dist/esm/internal/FileEnumeration.js.map +1 -0
- package/dist/esm/internal/HostReflection.d.ts +80 -0
- package/dist/esm/internal/HostReflection.d.ts.map +1 -0
- package/dist/esm/internal/HostReflection.js +98 -0
- package/dist/esm/internal/HostReflection.js.map +1 -0
- package/dist/esm/internal/JournalRecords.d.ts +325 -0
- package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
- package/dist/esm/internal/JournalRecords.js +306 -0
- package/dist/esm/internal/JournalRecords.js.map +1 -0
- package/dist/esm/internal/NodeJournal.d.ts +157 -0
- package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
- package/dist/esm/internal/NodeJournal.js +298 -0
- package/dist/esm/internal/NodeJournal.js.map +1 -0
- package/dist/esm/internal/Ordering.d.ts +14 -0
- package/dist/esm/internal/Ordering.d.ts.map +1 -0
- package/dist/esm/internal/Ordering.js +14 -0
- package/dist/esm/internal/Ordering.js.map +1 -0
- package/dist/esm/internal/PlanInputs.d.ts +14 -0
- package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
- package/dist/esm/internal/PlanInputs.js +57 -0
- package/dist/esm/internal/PlanInputs.js.map +1 -0
- package/dist/esm/internal/PlanMerges.d.ts +178 -0
- package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
- package/dist/esm/internal/PlanMerges.js +113 -0
- package/dist/esm/internal/PlanMerges.js.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.js +39 -0
- package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
- package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
- package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/esm/internal/ResultEnvelope.js +83 -0
- package/dist/esm/internal/ResultEnvelope.js.map +1 -0
- package/dist/esm/internal/RetentionOps.d.ts +414 -0
- package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
- package/dist/esm/internal/RetentionOps.js +576 -0
- package/dist/esm/internal/RetentionOps.js.map +1 -0
- package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
- package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/esm/internal/RunCatalogOps.js +120 -0
- package/dist/esm/internal/RunCatalogOps.js.map +1 -0
- package/dist/esm/internal/RunCoordinator.d.ts +78 -0
- package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/esm/internal/RunCoordinator.js +115 -0
- package/dist/esm/internal/RunCoordinator.js.map +1 -0
- package/dist/esm/internal/RunDriver.d.ts +192 -0
- package/dist/esm/internal/RunDriver.d.ts.map +1 -0
- package/dist/esm/internal/RunDriver.js +2334 -0
- package/dist/esm/internal/RunDriver.js.map +1 -0
- package/dist/esm/internal/RunLifecycle.d.ts +22 -0
- package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/RunLifecycle.js +49 -0
- package/dist/esm/internal/RunLifecycle.js.map +1 -0
- package/dist/esm/internal/RunListing.d.ts +78 -0
- package/dist/esm/internal/RunListing.d.ts.map +1 -0
- package/dist/esm/internal/RunListing.js +146 -0
- package/dist/esm/internal/RunListing.js.map +1 -0
- package/dist/esm/internal/RunListingError.d.ts +35 -0
- package/dist/esm/internal/RunListingError.d.ts.map +1 -0
- package/dist/esm/internal/RunListingError.js +27 -0
- package/dist/esm/internal/RunListingError.js.map +1 -0
- package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
- package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/esm/internal/RuntimeGraph.js +182 -0
- package/dist/esm/internal/RuntimeGraph.js.map +1 -0
- package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
- package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/esm/internal/SandboxedExecution.js +107 -0
- package/dist/esm/internal/SandboxedExecution.js.map +1 -0
- package/dist/esm/internal/StateTransaction.d.ts +44 -0
- package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
- package/dist/esm/internal/StateTransaction.js +54 -0
- package/dist/esm/internal/StateTransaction.js.map +1 -0
- package/dist/esm/internal/StepFacts.d.ts +14 -0
- package/dist/esm/internal/StepFacts.d.ts.map +1 -0
- package/dist/esm/internal/StepFacts.js +35 -0
- package/dist/esm/internal/StepFacts.js.map +1 -0
- package/dist/esm/internal/TypedEvents.d.ts +14 -0
- package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
- package/dist/esm/internal/TypedEvents.js +14 -0
- package/dist/esm/internal/TypedEvents.js.map +1 -0
- package/dist/esm/migrations/0001_initial.d.ts +17 -0
- package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
- package/dist/esm/migrations/0001_initial.js +41 -0
- package/dist/esm/migrations/0001_initial.js.map +1 -0
- package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
- package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/esm/migrations/0002_selection_store.js +34 -0
- package/dist/esm/migrations/0002_selection_store.js.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.js +70 -0
- package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.js +33 -0
- package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.js +59 -0
- package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.js +81 -0
- package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
- package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
- package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
- package/dist/esm/test/TestStores.d.ts +89 -0
- package/dist/esm/test/TestStores.d.ts.map +1 -0
- package/dist/esm/test/TestStores.js +103 -0
- package/dist/esm/test/TestStores.js.map +1 -0
- package/docs/README.md +113 -0
- package/docs/api.md +1494 -0
- package/docs/concepts/attempts-and-replay.md +149 -0
- package/docs/concepts/cache-admission.md +265 -0
- package/docs/concepts/call-facts.md +86 -0
- package/docs/concepts/durable-waits.md +175 -0
- package/docs/concepts/execution-facts.md +90 -0
- package/docs/concepts/ownership-and-fencing.md +128 -0
- package/docs/concepts/step-boundaries.md +148 -0
- package/docs/concepts/workspace-transactions.md +199 -0
- package/docs/event-types.md +14 -0
- package/docs/guides/back-up-and-restore.md +164 -0
- package/docs/guides/collect-unreferenced-artifacts.md +128 -0
- package/docs/guides/compose-a-durable-engine.md +146 -0
- package/docs/guides/coordinate-two-processes.md +120 -0
- package/docs/guides/defer-work-with-selection.md +171 -0
- package/docs/guides/delete-old-run-history.md +154 -0
- package/docs/guides/drive-a-plan.md +314 -0
- package/docs/guides/observe-engine-metrics.md +98 -0
- package/docs/guides/observe-executions.md +187 -0
- package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
- package/docs/guides/share-a-cache-across-machines.md +134 -0
- package/docs/guides/testing.md +123 -0
- package/docs/installation.md +102 -0
- package/docs/quickstart.md +215 -0
- package/docs/troubleshooting.md +347 -0
- package/package.json +438 -3
- package/src/ArtifactGc.ts +408 -0
- package/src/ArtifactSync.ts +278 -0
- package/src/CacheSync.ts +131 -0
- package/src/DeferredClockFold.ts +586 -0
- package/src/DisasterRecovery.ts +888 -0
- package/src/DurableEngineState.ts +2656 -0
- package/src/EngineStore.ts +656 -0
- package/src/EngineStoreMetrics.ts +331 -0
- package/src/Errors.ts +28 -0
- package/src/EventTypes.ts +27 -0
- package/src/ExecutionFacts.ts +125 -0
- package/src/ExecutionSnapshot.ts +186 -0
- package/src/Inconsistency.ts +253 -0
- package/src/Migrations.ts +95 -0
- package/src/OwnerIdentity.ts +125 -0
- package/src/PlanInputStore.ts +292 -0
- package/src/PlanMergeStore.ts +330 -0
- package/src/PlanScheduler.ts +1806 -0
- package/src/Reconciliation.ts +224 -0
- package/src/ReplayOnly.ts +95 -0
- package/src/Retention.ts +214 -0
- package/src/RunCatalogRead.ts +27 -0
- package/src/RunChangeFeed.ts +125 -0
- package/src/RunState.ts +137 -0
- package/src/Selection.ts +683 -0
- package/src/SelectionStore.ts +353 -0
- package/src/StepBoundary.ts +1165 -0
- package/src/StepCacheFold.ts +244 -0
- package/src/StepSandbox.ts +110 -0
- package/src/WakeBus.ts +167 -0
- package/src/WorkspaceSandbox.ts +1604 -0
- package/src/index.ts +185 -0
- package/src/internal/ActionPersistence.ts +2687 -0
- package/src/internal/ArtifactRoots.ts +92 -0
- package/src/internal/AttemptAdmission.ts +76 -0
- package/src/internal/AttemptLifecycle.ts +163 -0
- package/src/internal/AttemptProbe.ts +90 -0
- package/src/internal/CacheAdmission.ts +133 -0
- package/src/internal/CacheAgeHistory.ts +58 -0
- package/src/internal/CacheAgeVerdicts.ts +61 -0
- package/src/internal/CacheOutputPolicy.ts +82 -0
- package/src/internal/CachePublication.ts +153 -0
- package/src/internal/CallFacts.ts +87 -0
- package/src/internal/CopiedRecord.ts +201 -0
- package/src/internal/DeferredPersistence.ts +459 -0
- package/src/internal/EffectRecords.ts +136 -0
- package/src/internal/EngineJj.ts +30 -0
- package/src/internal/EngineStateSchema.ts +92 -0
- package/src/internal/ExecutionSnapshotRead.ts +300 -0
- package/src/internal/ExecutionSnapshotRelations.ts +121 -0
- package/src/internal/ExitEncoding.ts +453 -0
- package/src/internal/FileBoundarySnapshot.ts +39 -0
- package/src/internal/FileEnumeration.ts +334 -0
- package/src/internal/HostReflection.ts +128 -0
- package/src/internal/JournalRecords.ts +396 -0
- package/src/internal/NodeJournal.ts +340 -0
- package/src/internal/Ordering.ts +14 -0
- package/src/internal/PlanInputs.ts +62 -0
- package/src/internal/PlanMerges.ts +123 -0
- package/src/internal/ProvenanceSlot.ts +52 -0
- package/src/internal/ResultEnvelope.ts +118 -0
- package/src/internal/RetentionOps.ts +865 -0
- package/src/internal/RunCatalogOps.ts +174 -0
- package/src/internal/RunCoordinator.ts +215 -0
- package/src/internal/RunDriver.ts +3154 -0
- package/src/internal/RunLifecycle.ts +53 -0
- package/src/internal/RunListing.ts +210 -0
- package/src/internal/RunListingError.ts +37 -0
- package/src/internal/RuntimeGraph.ts +253 -0
- package/src/internal/SandboxedExecution.ts +165 -0
- package/src/internal/StateTransaction.ts +71 -0
- package/src/internal/StepFacts.ts +36 -0
- package/src/internal/TypedEvents.ts +29 -0
- package/src/migrations/0001_initial.ts +51 -0
- package/src/migrations/0002_selection_store.ts +38 -0
- package/src/migrations/0003_plan_inputs.ts +75 -0
- package/src/migrations/0004_plan_environment.ts +34 -0
- package/src/migrations/0005_plan_merges.ts +60 -0
- package/src/migrations/0006_execution_listing.ts +86 -0
- package/src/migrations/0007_run_parent_sequence.ts +19 -0
- package/src/migrations/0008_deferred_consumption.ts +27 -0
- package/src/migrations/0009_deferred_clock_facts.ts +163 -0
- package/src/migrations/0010_pending_cancellation.ts +20 -0
- package/src/test/TestStores.ts +145 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration recovery only needs completions the run has not observed.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Retains completion values for replay while removing consumed rows from sweeps.
|
|
10
|
+
* Existing completions stay eligible until first read by the upgraded engine.
|
|
11
|
+
*
|
|
12
|
+
* @category migrations
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export declare const deferredConsumption: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
16
|
+
//# sourceMappingURL=0008_deferred_consumption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0008_deferred_consumption.d.ts","sourceRoot":"","sources":["../../../src/migrations/0008_deferred_consumption.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAShF,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var deferred_consumption_exports = {};
|
|
30
|
+
__export(deferred_consumption_exports, {
|
|
31
|
+
deferredConsumption: () => deferredConsumption
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(deferred_consumption_exports);
|
|
34
|
+
var Dialect = __toESM(require("@smthrs/database/Dialect"), 1);
|
|
35
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
36
|
+
var SqlClient = __toESM(require("effect/unstable/sql/SqlClient"), 1);
|
|
37
|
+
const deferredConsumption = Effect.gen(function* () {
|
|
38
|
+
const sql = yield* SqlClient.SqlClient;
|
|
39
|
+
yield* sql`ALTER TABLE flows_deferred_completions ADD COLUMN consumed_at_ms ${Dialect.integer(sql)}
|
|
40
|
+
CHECK (consumed_at_ms IS NULL OR (${Dialect.isInteger(sql, sql`consumed_at_ms`)} AND consumed_at_ms >= 0 AND consumed_at_ms <= 9007199254740991))`;
|
|
41
|
+
yield* sql`CREATE INDEX flows_deferred_completions_unconsumed_idx
|
|
42
|
+
ON flows_deferred_completions (flow_name, execution_id, deferred_name)
|
|
43
|
+
WHERE consumed_at_ms IS NULL`;
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=0008_deferred_consumption.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/migrations/0008_deferred_consumption.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Registration recovery only needs completions the run has not observed.\n *\n * @since 1.0.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Retains completion values for replay while removing consumed rows from sweeps.\n * Existing completions stay eligible until first read by the upgraded engine.\n *\n * @category migrations\n * @since 1.0.0\n */\nexport const deferredConsumption: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n yield* sql`ALTER TABLE flows_deferred_completions ADD COLUMN consumed_at_ms ${Dialect.integer(sql)}\n CHECK (consumed_at_ms IS NULL OR (${\n Dialect.isInteger(sql, sql`consumed_at_ms`)\n } AND consumed_at_ms >= 0 AND consumed_at_ms <= 9007199254740991))`\n yield* sql`CREATE INDEX flows_deferred_completions_unconsumed_idx\n ON flows_deferred_completions (flow_name, execution_id, deferred_name)\n WHERE consumed_at_ms IS NULL`\n})\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAyB;AACzB,aAAwB;AACxB,gBAA2B;AASpB,MAAM,sBAAyE,OAAO,IAAI,aAAY;AAC3G,QAAM,MAAM,OAAO,UAAU;AAC7B,SAAO,uEAAuE,QAAQ,QAAQ,GAAG,CAAC;AAAA,wCAEhG,QAAQ,UAAU,KAAK,mBAAmB,CAC5C;AACA,SAAO;AAAA;AAAA;AAGT,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backfills the journal records the deferred/clock fold reads.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Journals every deferred/clock change written before the fold's records
|
|
10
|
+
* existed: a clock row with no `clock-scheduled` record, a completed clock
|
|
11
|
+
* with no `clock-completed` record, a completion with no `deferred-completed`
|
|
12
|
+
* record, and a consumed completion with no `deferred-consumed` record. Without
|
|
13
|
+
* them a rebuild would drop the clock, or re-arm a completed one and wake a run
|
|
14
|
+
* for a result it already observed (issue #2037).
|
|
15
|
+
*
|
|
16
|
+
* Each backfilled record is appended at the run's next sequence under a
|
|
17
|
+
* `flows.engine.backfill:` producer whose identity names the row, with the
|
|
18
|
+
* lineage meta every engine record carries.
|
|
19
|
+
*
|
|
20
|
+
* @category migrations
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
export declare const deferredClockFacts: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
24
|
+
//# sourceMappingURL=0009_deferred_clock_facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0009_deferred_clock_facts.d.ts","sourceRoot":"","sources":["../../../src/migrations/0009_deferred_clock_facts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAwB1D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAkH/E,CAAA"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var deferred_clock_facts_exports = {};
|
|
30
|
+
__export(deferred_clock_facts_exports, {
|
|
31
|
+
deferredClockFacts: () => deferredClockFacts
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(deferred_clock_facts_exports);
|
|
34
|
+
var import_engine = require("@smthrs/engine");
|
|
35
|
+
var JournalEvent = __toESM(require("@smthrs/journal/JournalEvent"), 1);
|
|
36
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
37
|
+
var SqlClient = __toESM(require("effect/unstable/sql/SqlClient"), 1);
|
|
38
|
+
var import_EventTypes = require("../EventTypes.js");
|
|
39
|
+
const optionalTime = (value) => value === null ? null : Number(value);
|
|
40
|
+
const deferredClockFacts = Effect.gen(function* () {
|
|
41
|
+
const sql = yield* SqlClient.SqlClient;
|
|
42
|
+
const recorded = /* @__PURE__ */ new Set();
|
|
43
|
+
const events = yield* sql`
|
|
44
|
+
SELECT run_id, event_type, payload_json FROM flows_journal_events
|
|
45
|
+
WHERE ${sql.in("event_type", [
|
|
46
|
+
import_EventTypes.EventTypes.clockScheduled,
|
|
47
|
+
import_EventTypes.EventTypes.clockCompleted,
|
|
48
|
+
import_EventTypes.EventTypes.deferredCompleted,
|
|
49
|
+
import_EventTypes.EventTypes.deferredConsumed
|
|
50
|
+
])}
|
|
51
|
+
`;
|
|
52
|
+
for (const event of events) {
|
|
53
|
+
const payload = JSON.parse(event.payload_json);
|
|
54
|
+
const name = event.event_type === import_EventTypes.EventTypes.clockScheduled || event.event_type === import_EventTypes.EventTypes.clockCompleted ? payload.clockName : payload.deferredName;
|
|
55
|
+
recorded.add(JSON.stringify([event.event_type, payload.flowName, payload.executionId, name]));
|
|
56
|
+
}
|
|
57
|
+
const next = /* @__PURE__ */ new Map();
|
|
58
|
+
const append = (eventType, executionId, name, emittedAtMs, payload) => Effect.gen(function* () {
|
|
59
|
+
const identity = JSON.stringify([eventType, payload.flowName, executionId, name]);
|
|
60
|
+
if (recorded.has(identity)) return;
|
|
61
|
+
recorded.add(identity);
|
|
62
|
+
let seq = next.get(executionId);
|
|
63
|
+
if (seq === void 0) {
|
|
64
|
+
const rows = yield* sql`
|
|
65
|
+
SELECT MAX(seq) + 1 AS next FROM flows_journal_events WHERE run_id = ${executionId}
|
|
66
|
+
`;
|
|
67
|
+
seq = Number(rows[0]?.next ?? 0);
|
|
68
|
+
}
|
|
69
|
+
next.set(executionId, seq + 1);
|
|
70
|
+
const sourceId = `flows.engine.backfill:${JournalEvent.contentDigest(identity)}`;
|
|
71
|
+
yield* sql`
|
|
72
|
+
INSERT INTO flows_journal_events (
|
|
73
|
+
run_id, seq, event_id, source_id, source_seq, emitted_at_ms, event_type, payload_json, meta_json
|
|
74
|
+
) VALUES (
|
|
75
|
+
${executionId},
|
|
76
|
+
${seq},
|
|
77
|
+
${JournalEvent.makeEventId(
|
|
78
|
+
executionId,
|
|
79
|
+
sourceId,
|
|
80
|
+
0
|
|
81
|
+
)},
|
|
82
|
+
${sourceId},
|
|
83
|
+
${0},
|
|
84
|
+
${emittedAtMs},
|
|
85
|
+
${eventType},
|
|
86
|
+
${JSON.stringify(payload)},
|
|
87
|
+
${JSON.stringify({ lineageId: import_engine.FlowEngine.Lineage.root(executionId) })}
|
|
88
|
+
)
|
|
89
|
+
`;
|
|
90
|
+
});
|
|
91
|
+
const clocks = yield* sql`
|
|
92
|
+
SELECT flow_name, execution_id, clock_name, deferred_name, due_at_ms, completed_at_ms
|
|
93
|
+
FROM flows_clock_deadlines
|
|
94
|
+
ORDER BY execution_id, flow_name, clock_name
|
|
95
|
+
`;
|
|
96
|
+
for (const clock of clocks) {
|
|
97
|
+
const dueAtMs = Number(clock.due_at_ms);
|
|
98
|
+
const completedAtMs = optionalTime(clock.completed_at_ms);
|
|
99
|
+
yield* append(import_EventTypes.EventTypes.clockScheduled, clock.execution_id, clock.clock_name, completedAtMs ?? dueAtMs, {
|
|
100
|
+
flowName: clock.flow_name,
|
|
101
|
+
executionId: clock.execution_id,
|
|
102
|
+
clockName: clock.clock_name,
|
|
103
|
+
deferredName: clock.deferred_name,
|
|
104
|
+
dueAtMs
|
|
105
|
+
});
|
|
106
|
+
if (completedAtMs !== null) {
|
|
107
|
+
yield* append(import_EventTypes.EventTypes.clockCompleted, clock.execution_id, clock.clock_name, completedAtMs, {
|
|
108
|
+
flowName: clock.flow_name,
|
|
109
|
+
executionId: clock.execution_id,
|
|
110
|
+
clockName: clock.clock_name,
|
|
111
|
+
completedAtMs
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const deferreds = yield* sql`
|
|
116
|
+
SELECT flow_name, execution_id, deferred_name, exit_json, metadata_json, completed_at_ms, consumed_at_ms
|
|
117
|
+
FROM flows_deferred_completions
|
|
118
|
+
ORDER BY execution_id, flow_name, deferred_name
|
|
119
|
+
`;
|
|
120
|
+
for (const deferred of deferreds) {
|
|
121
|
+
const completedAtMs = Number(deferred.completed_at_ms);
|
|
122
|
+
const consumedAtMs = optionalTime(deferred.consumed_at_ms);
|
|
123
|
+
yield* append(import_EventTypes.EventTypes.deferredCompleted, deferred.execution_id, deferred.deferred_name, completedAtMs, {
|
|
124
|
+
flowName: deferred.flow_name,
|
|
125
|
+
executionId: deferred.execution_id,
|
|
126
|
+
deferredName: deferred.deferred_name,
|
|
127
|
+
completedAtMs,
|
|
128
|
+
exitDigest: JournalEvent.contentDigest(deferred.exit_json),
|
|
129
|
+
metadataDigest: deferred.metadata_json === null ? null : JournalEvent.contentDigest(deferred.metadata_json)
|
|
130
|
+
});
|
|
131
|
+
if (consumedAtMs !== null) {
|
|
132
|
+
yield* append(import_EventTypes.EventTypes.deferredConsumed, deferred.execution_id, deferred.deferred_name, consumedAtMs, {
|
|
133
|
+
flowName: deferred.flow_name,
|
|
134
|
+
executionId: deferred.execution_id,
|
|
135
|
+
deferredName: deferred.deferred_name,
|
|
136
|
+
consumedAtMs
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=0009_deferred_clock_facts.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/migrations/0009_deferred_clock_facts.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Backfills the journal records the deferred/clock fold reads.\n *\n * @since 1.0.0\n */\n\nimport { FlowEngine } from \"@smthrs/engine\"\nimport * as JournalEvent from \"@smthrs/journal/JournalEvent\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\nimport { EventTypes } from \"../EventTypes.ts\"\n\ninterface ClockRow {\n readonly flow_name: string\n readonly execution_id: string\n readonly clock_name: string\n readonly deferred_name: string\n readonly due_at_ms: number | string\n readonly completed_at_ms: number | string | null\n}\n\ninterface DeferredRow {\n readonly flow_name: string\n readonly execution_id: string\n readonly deferred_name: string\n readonly exit_json: string\n readonly metadata_json: string | null\n readonly completed_at_ms: number | string\n readonly consumed_at_ms: number | string | null\n}\n\nconst optionalTime = (value: number | string | null): number | null => value === null ? null : Number(value)\n\n/**\n * Journals every deferred/clock change written before the fold's records\n * existed: a clock row with no `clock-scheduled` record, a completed clock\n * with no `clock-completed` record, a completion with no `deferred-completed`\n * record, and a consumed completion with no `deferred-consumed` record. Without\n * them a rebuild would drop the clock, or re-arm a completed one and wake a run\n * for a result it already observed (issue #2037).\n *\n * Each backfilled record is appended at the run's next sequence under a\n * `flows.engine.backfill:` producer whose identity names the row, with the\n * lineage meta every engine record carries.\n *\n * @category migrations\n * @since 1.0.0\n */\nexport const deferredClockFacts: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n const recorded = new Set<string>()\n const events = yield* sql<{ readonly run_id: string; readonly event_type: string; readonly payload_json: string }>`\n SELECT run_id, event_type, payload_json FROM flows_journal_events\n WHERE ${\n sql.in(\"event_type\", [\n EventTypes.clockScheduled,\n EventTypes.clockCompleted,\n EventTypes.deferredCompleted,\n EventTypes.deferredConsumed\n ])\n }\n `\n for (const event of events) {\n const payload = JSON.parse(event.payload_json) as Record<string, unknown>\n const name = event.event_type === EventTypes.clockScheduled || event.event_type === EventTypes.clockCompleted\n ? payload.clockName\n : payload.deferredName\n recorded.add(JSON.stringify([event.event_type, payload.flowName, payload.executionId, name]))\n }\n const next = new Map<string, number>()\n const append = (\n eventType: string,\n executionId: string,\n name: string,\n emittedAtMs: number,\n payload: Readonly<Record<string, unknown>>\n ) =>\n Effect.gen(function*() {\n const identity = JSON.stringify([eventType, payload.flowName, executionId, name])\n if (recorded.has(identity)) return\n recorded.add(identity)\n let seq = next.get(executionId)\n if (seq === undefined) {\n const rows = yield* sql<{ readonly next: number | string | null }>`\n SELECT MAX(seq) + 1 AS next FROM flows_journal_events WHERE run_id = ${executionId}\n `\n seq = Number(rows[0]?.next ?? 0)\n }\n next.set(executionId, seq + 1)\n const sourceId = `flows.engine.backfill:${JournalEvent.contentDigest(identity)}`\n yield* sql`\n INSERT INTO flows_journal_events (\n run_id, seq, event_id, source_id, source_seq, emitted_at_ms, event_type, payload_json, meta_json\n ) VALUES (\n ${executionId},\n ${seq},\n ${\n JournalEvent.makeEventId(\n executionId as JournalEvent.RunId,\n sourceId as JournalEvent.SourceId,\n 0 as JournalEvent.SourceSeq\n )\n },\n ${sourceId},\n ${0},\n ${emittedAtMs},\n ${eventType},\n ${JSON.stringify(payload)},\n ${JSON.stringify({ lineageId: FlowEngine.Lineage.root(executionId) })}\n )\n `\n })\n\n const clocks = yield* sql<ClockRow>`\n SELECT flow_name, execution_id, clock_name, deferred_name, due_at_ms, completed_at_ms\n FROM flows_clock_deadlines\n ORDER BY execution_id, flow_name, clock_name\n `\n for (const clock of clocks) {\n const dueAtMs = Number(clock.due_at_ms)\n const completedAtMs = optionalTime(clock.completed_at_ms)\n yield* append(EventTypes.clockScheduled, clock.execution_id, clock.clock_name, completedAtMs ?? dueAtMs, {\n flowName: clock.flow_name,\n executionId: clock.execution_id,\n clockName: clock.clock_name,\n deferredName: clock.deferred_name,\n dueAtMs\n })\n if (completedAtMs !== null) {\n yield* append(EventTypes.clockCompleted, clock.execution_id, clock.clock_name, completedAtMs, {\n flowName: clock.flow_name,\n executionId: clock.execution_id,\n clockName: clock.clock_name,\n completedAtMs\n })\n }\n }\n const deferreds = yield* sql<DeferredRow>`\n SELECT flow_name, execution_id, deferred_name, exit_json, metadata_json, completed_at_ms, consumed_at_ms\n FROM flows_deferred_completions\n ORDER BY execution_id, flow_name, deferred_name\n `\n for (const deferred of deferreds) {\n const completedAtMs = Number(deferred.completed_at_ms)\n const consumedAtMs = optionalTime(deferred.consumed_at_ms)\n yield* append(EventTypes.deferredCompleted, deferred.execution_id, deferred.deferred_name, completedAtMs, {\n flowName: deferred.flow_name,\n executionId: deferred.execution_id,\n deferredName: deferred.deferred_name,\n completedAtMs,\n exitDigest: JournalEvent.contentDigest(deferred.exit_json),\n metadataDigest: deferred.metadata_json === null ? null : JournalEvent.contentDigest(deferred.metadata_json)\n })\n if (consumedAtMs !== null) {\n yield* append(EventTypes.deferredConsumed, deferred.execution_id, deferred.deferred_name, consumedAtMs, {\n flowName: deferred.flow_name,\n executionId: deferred.execution_id,\n deferredName: deferred.deferred_name,\n consumedAtMs\n })\n }\n }\n})\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA2B;AAC3B,mBAA8B;AAC9B,aAAwB;AACxB,gBAA2B;AAC3B,wBAA2B;AAqB3B,MAAM,eAAe,CAAC,UAAiD,UAAU,OAAO,OAAO,OAAO,KAAK;AAiBpG,MAAM,qBAAwE,OAAO,IAAI,aAAY;AAC1G,QAAM,MAAM,OAAO,UAAU;AAC7B,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,SAAS,OAAO;AAAA;AAAA,YAGpB,IAAI,GAAG,cAAc;AAAA,IACnB,6BAAW;AAAA,IACX,6BAAW;AAAA,IACX,6BAAW;AAAA,IACX,6BAAW;AAAA,EACb,CAAC,CACH;AAAA;AAEA,aAAW,SAAS,QAAQ;AAC1B,UAAM,UAAU,KAAK,MAAM,MAAM,YAAY;AAC7C,UAAM,OAAO,MAAM,eAAe,6BAAW,kBAAkB,MAAM,eAAe,6BAAW,iBAC3F,QAAQ,YACR,QAAQ;AACZ,aAAS,IAAI,KAAK,UAAU,CAAC,MAAM,YAAY,QAAQ,UAAU,QAAQ,aAAa,IAAI,CAAC,CAAC;AAAA,EAC9F;AACA,QAAM,OAAO,oBAAI,IAAoB;AACrC,QAAM,SAAS,CACb,WACA,aACA,MACA,aACA,YAEA,OAAO,IAAI,aAAY;AACrB,UAAM,WAAW,KAAK,UAAU,CAAC,WAAW,QAAQ,UAAU,aAAa,IAAI,CAAC;AAChF,QAAI,SAAS,IAAI,QAAQ,EAAG;AAC5B,aAAS,IAAI,QAAQ;AACrB,QAAI,MAAM,KAAK,IAAI,WAAW;AAC9B,QAAI,QAAQ,QAAW;AACrB,YAAM,OAAO,OAAO;AAAA,iFACqD,WAAW;AAAA;AAEpF,YAAM,OAAO,KAAK,CAAC,GAAG,QAAQ,CAAC;AAAA,IACjC;AACA,SAAK,IAAI,aAAa,MAAM,CAAC;AAC7B,UAAM,WAAW,yBAAyB,aAAa,cAAc,QAAQ,CAAC;AAC9E,WAAO;AAAA;AAAA;AAAA;AAAA,YAID,WAAW;AAAA,YACX,GAAG;AAAA,YAEP,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CACF;AAAA,YACM,QAAQ;AAAA,YACR,CAAC;AAAA,YACD,WAAW;AAAA,YACX,SAAS;AAAA,YACT,KAAK,UAAU,OAAO,CAAC;AAAA,YACvB,KAAK,UAAU,EAAE,WAAW,yBAAW,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC;AAAA;AAAA;AAAA,EAG3E,CAAC;AAEH,QAAM,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAKtB,aAAW,SAAS,QAAQ;AAC1B,UAAM,UAAU,OAAO,MAAM,SAAS;AACtC,UAAM,gBAAgB,aAAa,MAAM,eAAe;AACxD,WAAO,OAAO,6BAAW,gBAAgB,MAAM,cAAc,MAAM,YAAY,iBAAiB,SAAS;AAAA,MACvG,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,WAAW,MAAM;AAAA,MACjB,cAAc,MAAM;AAAA,MACpB;AAAA,IACF,CAAC;AACD,QAAI,kBAAkB,MAAM;AAC1B,aAAO,OAAO,6BAAW,gBAAgB,MAAM,cAAc,MAAM,YAAY,eAAe;AAAA,QAC5F,UAAU,MAAM;AAAA,QAChB,aAAa,MAAM;AAAA,QACnB,WAAW,MAAM;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAKzB,aAAW,YAAY,WAAW;AAChC,UAAM,gBAAgB,OAAO,SAAS,eAAe;AACrD,UAAM,eAAe,aAAa,SAAS,cAAc;AACzD,WAAO,OAAO,6BAAW,mBAAmB,SAAS,cAAc,SAAS,eAAe,eAAe;AAAA,MACxG,UAAU,SAAS;AAAA,MACnB,aAAa,SAAS;AAAA,MACtB,cAAc,SAAS;AAAA,MACvB;AAAA,MACA,YAAY,aAAa,cAAc,SAAS,SAAS;AAAA,MACzD,gBAAgB,SAAS,kBAAkB,OAAO,OAAO,aAAa,cAAc,SAAS,aAAa;AAAA,IAC5G,CAAC;AACD,QAAI,iBAAiB,MAAM;AACzB,aAAO,OAAO,6BAAW,kBAAkB,SAAS,cAAc,SAAS,eAAe,cAAc;AAAA,QACtG,UAAU,SAAS;AAAA,QACnB,aAAa,SAAS;AAAA,QACtB,cAAc,SAAS;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indexed cancellation cleanup for admissions whose handler is unavailable.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Bounds cleanup reads to requested pending rows.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const pendingCancellation: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
15
|
+
//# sourceMappingURL=0010_pending_cancellation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0010_pending_cancellation.d.ts","sourceRoot":"","sources":["../../../src/migrations/0010_pending_cancellation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAIhF,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var pending_cancellation_exports = {};
|
|
30
|
+
__export(pending_cancellation_exports, {
|
|
31
|
+
pendingCancellation: () => pendingCancellation
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(pending_cancellation_exports);
|
|
34
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
35
|
+
var SqlClient = __toESM(require("effect/unstable/sql/SqlClient"), 1);
|
|
36
|
+
const pendingCancellation = Effect.gen(function* () {
|
|
37
|
+
const sql = yield* SqlClient.SqlClient;
|
|
38
|
+
yield* sql`CREATE INDEX flows_runs_pending_cancel_idx ON flows_runs (created_at_ms, run_id)
|
|
39
|
+
WHERE status = 'pending' AND cancel_requested_at_ms IS NOT NULL`;
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=0010_pending_cancellation.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/migrations/0010_pending_cancellation.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Indexed cancellation cleanup for admissions whose handler is unavailable.\n *\n * @since 1.0.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Bounds cleanup reads to requested pending rows.\n *\n * @category migrations\n * @since 1.0.0\n */\nexport const pendingCancellation: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n yield* sql`CREATE INDEX flows_runs_pending_cancel_idx ON flows_runs (created_at_ms, run_id)\n WHERE status = 'pending' AND cancel_requested_at_ms IS NOT NULL`\n})\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,aAAwB;AACxB,gBAA2B;AAQpB,MAAM,sBAAyE,OAAO,IAAI,aAAY;AAC3G,QAAM,MAAM,OAAO,UAAU;AAC7B,SAAO;AAAA;AAET,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic bundle of every durable store a flow engine composes.
|
|
3
|
+
*
|
|
4
|
+
* The stores split into `@smthrs/journal`, `@smthrs/run-store`, and
|
|
5
|
+
* `@smthrs/step-cache`, each with its own in-memory test layer. An engine
|
|
6
|
+
* needs all of them over ONE database, which is what this layer builds:
|
|
7
|
+
* the composed migration sets from `../Migrations.ts` run first, then the four
|
|
8
|
+
* services bind to the same in-memory SQLite connection.
|
|
9
|
+
*
|
|
10
|
+
* Governing design: `packages/smithers/flows/journal/docs/README.md`.
|
|
11
|
+
*
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
import * as DurableWriter from "@smthrs/database/DurableWriter";
|
|
15
|
+
import * as PlanStore from "@smthrs/plan-store/PlanStore";
|
|
16
|
+
import * as AttemptStore from "@smthrs/run-store/AttemptStore";
|
|
17
|
+
import * as RunStore from "@smthrs/run-store/RunStore";
|
|
18
|
+
import * as CacheStore from "@smthrs/step-cache/CacheStore";
|
|
19
|
+
import * as Layer from "effect/Layer";
|
|
20
|
+
import * as DurableEngineState from "../DurableEngineState.ts";
|
|
21
|
+
import * as OwnerIdentity from "../OwnerIdentity.ts";
|
|
22
|
+
import * as PlanInputStore from "../PlanInputStore.ts";
|
|
23
|
+
import * as PlanMergeStore from "../PlanMergeStore.ts";
|
|
24
|
+
/**
|
|
25
|
+
* Options for the deterministic store bundle.
|
|
26
|
+
*
|
|
27
|
+
* @category models
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
export interface TestStoresOptions {
|
|
31
|
+
readonly capacity?: number;
|
|
32
|
+
readonly overflow?: "reject" | "drop-newest" | "drop-oldest";
|
|
33
|
+
readonly batchSize?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* An in-memory SQLite database with the complete durable engine schema
|
|
37
|
+
* installed, exposed as `SqlClient` and `DurableWriter`.
|
|
38
|
+
*
|
|
39
|
+
* @category layers
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
*/
|
|
42
|
+
export declare const database: Layer.Layer<import("effect/unstable/sql/SqlClient").SqlClient | DurableWriter.DurableWriter, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, never>;
|
|
43
|
+
/**
|
|
44
|
+
* Provides the production SQLite journal, run, attempt, and cache services
|
|
45
|
+
* over one in-memory database. Migrations run before any durable service is
|
|
46
|
+
* exposed. The shared writer remains exposed for the engine cancellation
|
|
47
|
+
* boundary, which must inspect its complete Exit before error normalization.
|
|
48
|
+
*
|
|
49
|
+
* `OwnerIdentity.layer` rides along: it is not a store, but it is the other
|
|
50
|
+
* service `EngineStore.make` requires and has no in-memory variant to choose
|
|
51
|
+
* between. The default is used rather than a pinned one so a test observes
|
|
52
|
+
* the same fresh-per-incarnation owner the production composition mints.
|
|
53
|
+
*
|
|
54
|
+
* @category layers
|
|
55
|
+
* @since 0.1.0
|
|
56
|
+
*/
|
|
57
|
+
export declare const layer: (options?: TestStoresOptions) => Layer.Layer<DurableWriter.DurableWriter | CacheStore.CacheStore | import("@smthrs/journal/Journal").Journal | RunStore.RunStore | AttemptStore.AttemptStore | OwnerIdentity.OwnerIdentity | PlanInputStore.PlanInputStore | PlanMergeStore.PlanMergeStore | PlanStore.PlanStore, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError | import("@smthrs/journal/Journal").JournalError, import("effect/Crypto").Crypto>;
|
|
58
|
+
/**
|
|
59
|
+
* The same schema over a named SQLite database or PostgreSQL URL, with the connection exposed.
|
|
60
|
+
*
|
|
61
|
+
* {@link database} hides `SqlClient` behind the stores it provisions, which is
|
|
62
|
+
* right for a case that only needs an engine. Two other shapes need the
|
|
63
|
+
* connection itself: a composition that adds another SQL-backed service over
|
|
64
|
+
* the same database (a control runtime, for one), and a case that has to prove
|
|
65
|
+
* cross-process durability, which needs a persistent identity rather than the private
|
|
66
|
+
* in-memory database each `:memory:` connection gets to itself.
|
|
67
|
+
*
|
|
68
|
+
* @category layers
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
*/
|
|
71
|
+
export declare const databaseAt: (filename: string) => Layer.Layer<import("effect/unstable/sql/SqlClient").SqlClient | DurableWriter.DurableWriter, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, never>;
|
|
72
|
+
/**
|
|
73
|
+
* Every durable engine service over one named database, connection included.
|
|
74
|
+
*
|
|
75
|
+
* `layer` builds the same stores over a private in-memory database and keeps
|
|
76
|
+
* `SqlClient` to itself. This one takes the database by name and re-exports
|
|
77
|
+
* the connection, so a case can point two independently constructed bundles at
|
|
78
|
+
* one file — two connections, two engines, no shared object graph — which is
|
|
79
|
+
* what a second process actually looks like. `DurableEngineState` rides along
|
|
80
|
+
* for the same reason: its in-memory variant is a map that a second bundle
|
|
81
|
+
* would not see.
|
|
82
|
+
*
|
|
83
|
+
* Pass `:memory:` for the cheap variant when the connection is still needed.
|
|
84
|
+
*
|
|
85
|
+
* @category layers
|
|
86
|
+
* @since 0.1.0
|
|
87
|
+
*/
|
|
88
|
+
export declare const layerAt: (filename: string, options?: TestStoresOptions) => Layer.Layer<import("effect/unstable/sql/SqlClient").SqlClient | DurableWriter.DurableWriter | CacheStore.CacheStore | import("@smthrs/journal/Journal").Journal | RunStore.RunStore | DurableEngineState.DurableEngineState | AttemptStore.AttemptStore | OwnerIdentity.OwnerIdentity | PlanInputStore.PlanInputStore | PlanMergeStore.PlanMergeStore | PlanStore.PlanStore, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError | import("@smthrs/journal/Journal").JournalError, import("effect/Crypto").Crypto>;
|
|
89
|
+
//# sourceMappingURL=TestStores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestStores.d.ts","sourceRoot":"","sources":["../../../src/test/TestStores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,aAAa,MAAM,gCAAgC,CAAA;AAI/D,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAA;AAE3D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAA;AAE9D,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAA;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,8MAA2D,CAAA;AAEhF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,GAAI,UAAU,iBAAiB,+cAckB,CAAA;AAEnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,iNAkB1C,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,EAAE,UAAU,iBAAiB,2iBAce,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var TestStores_exports = {};
|
|
30
|
+
__export(TestStores_exports, {
|
|
31
|
+
database: () => database,
|
|
32
|
+
databaseAt: () => databaseAt,
|
|
33
|
+
layer: () => layer,
|
|
34
|
+
layerAt: () => layerAt
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(TestStores_exports);
|
|
37
|
+
var DurableWriter = __toESM(require("@smthrs/database/DurableWriter"), 1);
|
|
38
|
+
var NodeDatabase = __toESM(require("@smthrs/database/node/NodeDatabase"), 1);
|
|
39
|
+
var TestDatabase = __toESM(require("@smthrs/database/test/TestDatabase"), 1);
|
|
40
|
+
var SqlJournal = __toESM(require("@smthrs/journal/SqlJournal"), 1);
|
|
41
|
+
var PlanStore = __toESM(require("@smthrs/plan-store/PlanStore"), 1);
|
|
42
|
+
var AttemptStore = __toESM(require("@smthrs/run-store/AttemptStore"), 1);
|
|
43
|
+
var RunStore = __toESM(require("@smthrs/run-store/RunStore"), 1);
|
|
44
|
+
var CacheStore = __toESM(require("@smthrs/step-cache/CacheStore"), 1);
|
|
45
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
46
|
+
var Layer = __toESM(require("effect/Layer"), 1);
|
|
47
|
+
var DurableEngineState = __toESM(require("../DurableEngineState.js"), 1);
|
|
48
|
+
var Migrations = __toESM(require("../Migrations.js"), 1);
|
|
49
|
+
var OwnerIdentity = __toESM(require("../OwnerIdentity.js"), 1);
|
|
50
|
+
var PlanInputStore = __toESM(require("../PlanInputStore.js"), 1);
|
|
51
|
+
var PlanMergeStore = __toESM(require("../PlanMergeStore.js"), 1);
|
|
52
|
+
const database = Layer.provideMerge(Migrations.layer, TestDatabase.layer);
|
|
53
|
+
const layer = (options) => Layer.mergeAll(
|
|
54
|
+
SqlJournal.layer({
|
|
55
|
+
capacity: options?.capacity ?? 1024,
|
|
56
|
+
overflow: options?.overflow ?? "reject",
|
|
57
|
+
batchSize: options?.batchSize
|
|
58
|
+
}),
|
|
59
|
+
RunStore.layer,
|
|
60
|
+
AttemptStore.layer,
|
|
61
|
+
CacheStore.layer,
|
|
62
|
+
PlanStore.layer,
|
|
63
|
+
PlanInputStore.layer,
|
|
64
|
+
PlanMergeStore.layer,
|
|
65
|
+
Layer.effect(DurableWriter.DurableWriter, DurableWriter.DurableWriter)
|
|
66
|
+
).pipe(Layer.provide(database), Layer.merge(OwnerIdentity.layer));
|
|
67
|
+
const databaseAt = (filename) => {
|
|
68
|
+
const url = /^postgres(?:ql)?:/.test(filename) ? new URL(filename) : void 0;
|
|
69
|
+
const schema = url?.searchParams.get("schema") ?? void 0;
|
|
70
|
+
url?.searchParams.delete("schema");
|
|
71
|
+
const database2 = url === void 0 ? NodeDatabase.layer({ filename }) : Layer.unwrap(
|
|
72
|
+
Effect.promise(() => import("@smthrs/database/postgres/PostgresDatabase")).pipe(
|
|
73
|
+
Effect.map(
|
|
74
|
+
(PostgresDatabase) => PostgresDatabase.layer({
|
|
75
|
+
url: url.toString(),
|
|
76
|
+
schema,
|
|
77
|
+
postgres: { connectTimeout: Infinity, idleTimeout: Infinity, connectionTTL: Infinity }
|
|
78
|
+
})
|
|
79
|
+
)
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
return Layer.provideMerge(Migrations.layer, Layer.provideMerge(DurableWriter.layer(), database2));
|
|
83
|
+
};
|
|
84
|
+
const layerAt = (filename, options) => Layer.mergeAll(
|
|
85
|
+
SqlJournal.layer({
|
|
86
|
+
capacity: options?.capacity ?? 1024,
|
|
87
|
+
overflow: options?.overflow ?? "reject",
|
|
88
|
+
batchSize: options?.batchSize
|
|
89
|
+
}),
|
|
90
|
+
RunStore.layer,
|
|
91
|
+
AttemptStore.layer,
|
|
92
|
+
CacheStore.layer,
|
|
93
|
+
PlanStore.layer,
|
|
94
|
+
PlanInputStore.layer,
|
|
95
|
+
PlanMergeStore.layer,
|
|
96
|
+
DurableEngineState.layer
|
|
97
|
+
).pipe(Layer.provideMerge(databaseAt(filename)), Layer.merge(OwnerIdentity.layer));
|
|
98
|
+
//# sourceMappingURL=TestStores.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/test/TestStores.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Deterministic bundle of every durable store a flow engine composes.\n *\n * The stores split into `@smthrs/journal`, `@smthrs/run-store`, and\n * `@smthrs/step-cache`, each with its own in-memory test layer. An engine\n * needs all of them over ONE database, which is what this layer builds:\n * the composed migration sets from `../Migrations.ts` run first, then the four\n * services bind to the same in-memory SQLite connection.\n *\n * Governing design: `packages/smithers/flows/journal/docs/README.md`.\n *\n * @since 0.1.0\n */\n\nimport * as DurableWriter from \"@smthrs/database/DurableWriter\"\nimport * as NodeDatabase from \"@smthrs/database/node/NodeDatabase\"\nimport * as TestDatabase from \"@smthrs/database/test/TestDatabase\"\nimport * as SqlJournal from \"@smthrs/journal/SqlJournal\"\nimport * as PlanStore from \"@smthrs/plan-store/PlanStore\"\nimport * as AttemptStore from \"@smthrs/run-store/AttemptStore\"\nimport * as RunStore from \"@smthrs/run-store/RunStore\"\nimport * as CacheStore from \"@smthrs/step-cache/CacheStore\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as DurableEngineState from \"../DurableEngineState.ts\"\nimport * as Migrations from \"../Migrations.ts\"\nimport * as OwnerIdentity from \"../OwnerIdentity.ts\"\nimport * as PlanInputStore from \"../PlanInputStore.ts\"\nimport * as PlanMergeStore from \"../PlanMergeStore.ts\"\n\n/**\n * Options for the deterministic store bundle.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface TestStoresOptions {\n readonly capacity?: number\n readonly overflow?: \"reject\" | \"drop-newest\" | \"drop-oldest\"\n readonly batchSize?: number\n}\n\n/**\n * An in-memory SQLite database with the complete durable engine schema\n * installed, exposed as `SqlClient` and `DurableWriter`.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const database = Layer.provideMerge(Migrations.layer, TestDatabase.layer)\n\n/**\n * Provides the production SQLite journal, run, attempt, and cache services\n * over one in-memory database. Migrations run before any durable service is\n * exposed. The shared writer remains exposed for the engine cancellation\n * boundary, which must inspect its complete Exit before error normalization.\n *\n * `OwnerIdentity.layer` rides along: it is not a store, but it is the other\n * service `EngineStore.make` requires and has no in-memory variant to choose\n * between. The default is used rather than a pinned one so a test observes\n * the same fresh-per-incarnation owner the production composition mints.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer = (options?: TestStoresOptions) =>\n Layer.mergeAll(\n SqlJournal.layer({\n capacity: options?.capacity ?? 1024,\n overflow: options?.overflow ?? \"reject\",\n batchSize: options?.batchSize\n }),\n RunStore.layer,\n AttemptStore.layer,\n CacheStore.layer,\n PlanStore.layer,\n PlanInputStore.layer,\n PlanMergeStore.layer,\n Layer.effect(DurableWriter.DurableWriter, DurableWriter.DurableWriter)\n ).pipe(Layer.provide(database), Layer.merge(OwnerIdentity.layer))\n\n/**\n * The same schema over a named SQLite database or PostgreSQL URL, with the connection exposed.\n *\n * {@link database} hides `SqlClient` behind the stores it provisions, which is\n * right for a case that only needs an engine. Two other shapes need the\n * connection itself: a composition that adds another SQL-backed service over\n * the same database (a control runtime, for one), and a case that has to prove\n * cross-process durability, which needs a persistent identity rather than the private\n * in-memory database each `:memory:` connection gets to itself.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const databaseAt = (filename: string) => {\n const url = /^postgres(?:ql)?:/.test(filename) ? new URL(filename) : undefined\n const schema = url?.searchParams.get(\"schema\") ?? undefined\n url?.searchParams.delete(\"schema\")\n const database = url === undefined ?\n NodeDatabase.layer({ filename }) :\n Layer.unwrap(\n Effect.promise(() => import(\"@smthrs/database/postgres/PostgresDatabase\")).pipe(\n Effect.map((PostgresDatabase) =>\n PostgresDatabase.layer({\n url: url.toString(),\n schema,\n postgres: { connectTimeout: Infinity, idleTimeout: Infinity, connectionTTL: Infinity }\n })\n )\n )\n )\n return Layer.provideMerge(Migrations.layer, Layer.provideMerge(DurableWriter.layer(), database))\n}\n\n/**\n * Every durable engine service over one named database, connection included.\n *\n * `layer` builds the same stores over a private in-memory database and keeps\n * `SqlClient` to itself. This one takes the database by name and re-exports\n * the connection, so a case can point two independently constructed bundles at\n * one file \u2014 two connections, two engines, no shared object graph \u2014 which is\n * what a second process actually looks like. `DurableEngineState` rides along\n * for the same reason: its in-memory variant is a map that a second bundle\n * would not see.\n *\n * Pass `:memory:` for the cheap variant when the connection is still needed.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerAt = (filename: string, options?: TestStoresOptions) =>\n Layer.mergeAll(\n SqlJournal.layer({\n capacity: options?.capacity ?? 1024,\n overflow: options?.overflow ?? \"reject\",\n batchSize: options?.batchSize\n }),\n RunStore.layer,\n AttemptStore.layer,\n CacheStore.layer,\n PlanStore.layer,\n PlanInputStore.layer,\n PlanMergeStore.layer,\n DurableEngineState.layer\n ).pipe(Layer.provideMerge(databaseAt(filename)), Layer.merge(OwnerIdentity.layer))\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,oBAA+B;AAC/B,mBAA8B;AAC9B,mBAA8B;AAC9B,iBAA4B;AAC5B,gBAA2B;AAC3B,mBAA8B;AAC9B,eAA0B;AAC1B,iBAA4B;AAC5B,aAAwB;AACxB,YAAuB;AACvB,yBAAoC;AACpC,iBAA4B;AAC5B,oBAA+B;AAC/B,qBAAgC;AAChC,qBAAgC;AAqBzB,MAAM,WAAW,MAAM,aAAa,WAAW,OAAO,aAAa,KAAK;AAgBxE,MAAM,QAAQ,CAAC,YACpB,MAAM;AAAA,EACJ,WAAW,MAAM;AAAA,IACf,UAAU,SAAS,YAAY;AAAA,IAC/B,UAAU,SAAS,YAAY;AAAA,IAC/B,WAAW,SAAS;AAAA,EACtB,CAAC;AAAA,EACD,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,eAAe;AAAA,EACf,eAAe;AAAA,EACf,MAAM,OAAO,cAAc,eAAe,cAAc,aAAa;AACvE,EAAE,KAAK,MAAM,QAAQ,QAAQ,GAAG,MAAM,MAAM,cAAc,KAAK,CAAC;AAe3D,MAAM,aAAa,CAAC,aAAqB;AAC9C,QAAM,MAAM,oBAAoB,KAAK,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI;AACrE,QAAM,SAAS,KAAK,aAAa,IAAI,QAAQ,KAAK;AAClD,OAAK,aAAa,OAAO,QAAQ;AACjC,QAAMA,YAAW,QAAQ,SACvB,aAAa,MAAM,EAAE,SAAS,CAAC,IAC/B,MAAM;AAAA,IACJ,OAAO,QAAQ,MAAM,OAAO,4CAA4C,CAAC,EAAE;AAAA,MACzE,OAAO;AAAA,QAAI,CAAC,qBACV,iBAAiB,MAAM;AAAA,UACrB,KAAK,IAAI,SAAS;AAAA,UAClB;AAAA,UACA,UAAU,EAAE,gBAAgB,UAAU,aAAa,UAAU,eAAe,SAAS;AAAA,QACvF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,SAAO,MAAM,aAAa,WAAW,OAAO,MAAM,aAAa,cAAc,MAAM,GAAGA,SAAQ,CAAC;AACjG;AAkBO,MAAM,UAAU,CAAC,UAAkB,YACxC,MAAM;AAAA,EACJ,WAAW,MAAM;AAAA,IACf,UAAU,SAAS,YAAY;AAAA,IAC/B,UAAU,SAAS,YAAY;AAAA,IAC/B,WAAW,SAAS;AAAA,EACtB,CAAC;AAAA,EACD,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,eAAe;AAAA,EACf,eAAe;AAAA,EACf,mBAAmB;AACrB,EAAE,KAAK,MAAM,aAAa,WAAW,QAAQ,CAAC,GAAG,MAAM,MAAM,cAAc,KAAK,CAAC;",
|
|
6
|
+
"names": ["database"]
|
|
7
|
+
}
|