@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.3
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 +199 -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 +1584 -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 +298 -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 +3152 -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,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable engine journal record names shared with replay consumers.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Persisted event types and the child-spawn effect kind. Writers and readers
|
|
8
|
+
* share these identities; changing a value requires migrating stored history.
|
|
9
|
+
* `childSpawnKind` names the effect inside a boundary, not its event type.
|
|
10
|
+
*
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category constants
|
|
13
|
+
*/
|
|
14
|
+
export const EventTypes = {
|
|
15
|
+
runDecision: "flows.engine.run-decision",
|
|
16
|
+
attemptStarted: "flows.engine.attempt-started",
|
|
17
|
+
attemptFinished: "flows.engine.attempt-finished",
|
|
18
|
+
snapshotIdentified: "flows.engine.snapshot-identified",
|
|
19
|
+
planRecorded: "flows.engine.plan-recorded",
|
|
20
|
+
subgraphAppended: "flows.engine.subgraph-appended",
|
|
21
|
+
deferredCompleted: "flows.engine.deferred-completed",
|
|
22
|
+
deferredConsumed: "flows.engine.deferred-consumed",
|
|
23
|
+
clockScheduled: "flows.engine.clock-scheduled",
|
|
24
|
+
clockCompleted: "flows.engine.clock-completed",
|
|
25
|
+
childSpawnKind: "flows/engine-store/child-spawn"
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=EventTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTypes.js","sourceRoot":"","sources":["../../src/EventTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,2BAA2B;IACxC,cAAc,EAAE,8BAA8B;IAC9C,eAAe,EAAE,+BAA+B;IAChD,kBAAkB,EAAE,kCAAkC;IACtD,YAAY,EAAE,4BAA4B;IAC1C,gBAAgB,EAAE,gCAAgC;IAClD,iBAAiB,EAAE,iCAAiC;IACpD,gBAAgB,EAAE,gCAAgC;IAClD,cAAc,EAAE,8BAA8B;IAC9C,cAAc,EAAE,8BAA8B;IAC9C,cAAc,EAAE,gCAAgC;CACxC,CAAA","sourcesContent":["/**\n * Stable engine journal record names shared with replay consumers.\n *\n * @since 1.0.0\n */\n\n/**\n * Persisted event types and the child-spawn effect kind. Writers and readers\n * share these identities; changing a value requires migrating stored history.\n * `childSpawnKind` names the effect inside a boundary, not its event type.\n *\n * @since 1.0.0\n * @category constants\n */\nexport const EventTypes = {\n runDecision: \"flows.engine.run-decision\",\n attemptStarted: \"flows.engine.attempt-started\",\n attemptFinished: \"flows.engine.attempt-finished\",\n snapshotIdentified: \"flows.engine.snapshot-identified\",\n planRecorded: \"flows.engine.plan-recorded\",\n subgraphAppended: \"flows.engine.subgraph-appended\",\n deferredCompleted: \"flows.engine.deferred-completed\",\n deferredConsumed: \"flows.engine.deferred-consumed\",\n clockScheduled: \"flows.engine.clock-scheduled\",\n clockCompleted: \"flows.engine.clock-completed\",\n childSpawnKind: \"flows/engine-store/child-spawn\"\n} as const\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Native lifecycle facts captured using the owning store transaction.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { ExecutionFact, type Journal } from "@smthrs/journal";
|
|
5
|
+
import type { RunStore } from "@smthrs/run-store";
|
|
6
|
+
import { Effect, Schema } from "effect";
|
|
7
|
+
import type * as DurableEngineState from "./DurableEngineState.ts";
|
|
8
|
+
/** Captured native services; never substitute an ambient control journal.
|
|
9
|
+
* @category models
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
export interface Options {
|
|
13
|
+
readonly runs: RunStore.Service;
|
|
14
|
+
readonly state: Pick<DurableEngineState.Service, "waiting" | "runParents" | "transaction">;
|
|
15
|
+
readonly journal: Journal.Service;
|
|
16
|
+
readonly sourceId: string;
|
|
17
|
+
}
|
|
18
|
+
/** Read the semantic subset shared with ExecutionSnapshot inside its caller's transaction.
|
|
19
|
+
* @category queries
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export declare const observe: (row: RunStore.RunRow, state: Pick<Options["state"], "waiting" | "runParents">) => Effect.Effect<ExecutionFact.Observation, Schema.SchemaError>;
|
|
23
|
+
/** Fact admission and cancellation intent share the same native writer transaction.
|
|
24
|
+
* @category constructors
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export declare const make: (options: Options) => {
|
|
28
|
+
fact: (executionId: string, baseline?: "created" | "legacy") => Effect.Effect<{
|
|
29
|
+
version: 1;
|
|
30
|
+
baseline: "created" | "legacy";
|
|
31
|
+
observation: {
|
|
32
|
+
readonly status: "running" | "suspended" | "failed" | "completed" | "pending" | "cancelled";
|
|
33
|
+
readonly createdAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
|
|
34
|
+
readonly lineageId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
|
|
35
|
+
readonly parentRunId: (string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">) | null;
|
|
36
|
+
readonly finishedAtMs: (number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">) | null;
|
|
37
|
+
readonly startedAtMs: (number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">) | null;
|
|
38
|
+
readonly executionId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
|
|
39
|
+
readonly cancelRequestedAtMs: (number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">) | null;
|
|
40
|
+
readonly waiting: {
|
|
41
|
+
readonly reason: string;
|
|
42
|
+
readonly wakeAtMs: (number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">) | null;
|
|
43
|
+
readonly tokenDigest: string | null;
|
|
44
|
+
readonly request?: Schema.Json | undefined;
|
|
45
|
+
readonly point?: string | null | undefined;
|
|
46
|
+
} | null;
|
|
47
|
+
readonly flowName: string;
|
|
48
|
+
readonly roundOrdinal: number;
|
|
49
|
+
readonly treeVersion?: 1 | undefined;
|
|
50
|
+
readonly parentPolicy?: "cancel" | "detach" | undefined;
|
|
51
|
+
};
|
|
52
|
+
} | {
|
|
53
|
+
version: 1;
|
|
54
|
+
unavailable: "invalid-observation";
|
|
55
|
+
}, RunStore.RunStoreError, never>;
|
|
56
|
+
requestCancel: (executionId: string, at: number) => Effect.Effect<RunStore.RequestCancelOutcome, import("@smthrs/database/DurableWriter").DatabaseError | Journal.JournalError | RunStore.RunStoreError, never>;
|
|
57
|
+
requestCancelLineage: (executionId: string, at: number) => Effect.Effect<RunStore.RequestCancelOutcome, import("@smthrs/database/DurableWriter").DatabaseError | Journal.JournalError | RunStore.RunStoreError, never>;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=ExecutionFacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionFacts.d.ts","sourceRoot":"","sources":["../../src/ExecutionFacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAa,MAAM,iBAAiB,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAIlE;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC,CAAA;IAC1F,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,QAAQ,CAAC,MAAM,EACpB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,KACtD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CA2C1D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,OAAO;wBAER,MAAM,aAAY,SAAS,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAmB7B,MAAM,MAAM,MAAM;wCAMX,MAAM,MAAM,MAAM;CAgB9D,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Native lifecycle facts captured using the owning store transaction.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Sha256 from "@smthrs/crypto/Sha256";
|
|
5
|
+
import { FlowEngine } from "@smthrs/engine";
|
|
6
|
+
import { DurableDeferred } from "@smthrs/flow";
|
|
7
|
+
import { ExecutionFact, Redaction } from "@smthrs/journal";
|
|
8
|
+
import { Effect, Option, Schema } from "effect";
|
|
9
|
+
import * as JournalRecords from "./internal/JournalRecords.js";
|
|
10
|
+
import * as StateTransaction from "./internal/StateTransaction.js";
|
|
11
|
+
/** Read the semantic subset shared with ExecutionSnapshot inside its caller's transaction.
|
|
12
|
+
* @category queries
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export const observe = (row, state) => Effect.gen(function* () {
|
|
16
|
+
const waiting = yield* state.waiting(row.runId);
|
|
17
|
+
const parents = row.parentRunId === null ? yield* state.runParents(row.runId) : [];
|
|
18
|
+
const firstParent = [...parents].sort((a, b) => a.seq - b.seq || a.parentId.localeCompare(b.parentId))[0];
|
|
19
|
+
const encoded = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.Struct({
|
|
20
|
+
flowName: Schema.NonEmptyString,
|
|
21
|
+
onParentExit: Schema.optional(Schema.Literals(["cancel", "detach"]))
|
|
22
|
+
})))(row.stateJson);
|
|
23
|
+
let point = null;
|
|
24
|
+
if (Option.isSome(waiting) && waiting.value.token !== null) {
|
|
25
|
+
try {
|
|
26
|
+
const { deferredName } = DurableDeferred.TokenParsed.fromString(waiting.value.token);
|
|
27
|
+
if (deferredName.startsWith("WaitFor/")) {
|
|
28
|
+
point = deferredName.slice("WaitFor/".length);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch { /* An opaque plugin token remains an operational address only. */ }
|
|
32
|
+
}
|
|
33
|
+
return yield* Schema.decodeUnknownEffect(ExecutionFact.Observation)({
|
|
34
|
+
executionId: row.runId,
|
|
35
|
+
flowName: encoded.flowName,
|
|
36
|
+
status: row.status,
|
|
37
|
+
createdAtMs: row.createdAtMs,
|
|
38
|
+
startedAtMs: row.startedAtMs,
|
|
39
|
+
finishedAtMs: row.finishedAtMs,
|
|
40
|
+
parentRunId: row.parentRunId ?? firstParent?.parentId ?? null,
|
|
41
|
+
lineageId: row.lineageId ?? row.runId,
|
|
42
|
+
roundOrdinal: row.roundOrdinal ?? 0,
|
|
43
|
+
cancelRequestedAtMs: row.cancelRequestedAtMs,
|
|
44
|
+
treeVersion: 1,
|
|
45
|
+
parentPolicy: encoded.onParentExit ?? "cancel",
|
|
46
|
+
waiting: Option.isNone(waiting) ? null : {
|
|
47
|
+
reason: waiting.value.reason,
|
|
48
|
+
wakeAtMs: waiting.value.wakeAt,
|
|
49
|
+
tokenDigest: waiting.value.token === null ? null : Sha256.digestSync(waiting.value.token),
|
|
50
|
+
point,
|
|
51
|
+
request: waiting.value.request === undefined ? null : Redaction.redact(waiting.value.request)
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
/** Fact admission and cancellation intent share the same native writer transaction.
|
|
56
|
+
* @category constructors
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
*/
|
|
59
|
+
export const make = (options) => {
|
|
60
|
+
const transactState = StateTransaction.make(options.state, options.journal);
|
|
61
|
+
const fact = (executionId, baseline = "legacy") => options.runs.get(executionId).pipe(Effect.flatMap((row) => observe(row, options.state)), Effect.map((observation) => ({ version: 1, baseline, observation })),
|
|
62
|
+
// Invalid semantic metadata must not prevent the driver's existing
|
|
63
|
+
// corruption/invalid-round path from settling the run. Record a named
|
|
64
|
+
// coverage failure; never normalize a bad ordinal or invent ancestry.
|
|
65
|
+
Effect.catchTag("SchemaError", () => Effect.succeed({ version: 1, unavailable: "invalid-observation" })));
|
|
66
|
+
const cancelled = (executionId) => Effect.gen(function* () {
|
|
67
|
+
const executionFact = yield* fact(executionId);
|
|
68
|
+
yield* options.journal.emitDurableUnfenced(JournalRecords.runDecision({
|
|
69
|
+
runId: executionId,
|
|
70
|
+
lineageId: FlowEngine.Lineage.root(executionId),
|
|
71
|
+
sourceId: options.sourceId
|
|
72
|
+
}, { decision: "cancel-requested", executionFact }));
|
|
73
|
+
});
|
|
74
|
+
const requestCancel = (executionId, at) => transactState(Effect.gen(function* () {
|
|
75
|
+
const outcome = yield* options.runs.requestCancel(executionId, at);
|
|
76
|
+
if (outcome._tag === "CancelRequested")
|
|
77
|
+
yield* cancelled(executionId);
|
|
78
|
+
return outcome;
|
|
79
|
+
}));
|
|
80
|
+
const requestCancelLineage = (executionId, at) => transactState(Effect.gen(function* () {
|
|
81
|
+
const before = yield* options.runs.lineage(executionId);
|
|
82
|
+
const outcome = yield* options.runs.requestCancelLineage(executionId, at);
|
|
83
|
+
if (outcome._tag === "CancelRequested") {
|
|
84
|
+
// The set update excludes terminal/already-requested rows. Record exactly
|
|
85
|
+
// the rows it changed, not a guessed terminal cancellation timestamp.
|
|
86
|
+
for (const row of before) {
|
|
87
|
+
if (row.cancelRequestedAtMs === null && !["completed", "failed", "cancelled"].includes(row.status)) {
|
|
88
|
+
yield* cancelled(row.runId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return outcome;
|
|
93
|
+
}));
|
|
94
|
+
return { fact, requestCancel, requestCancelLineage };
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=ExecutionFacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionFacts.js","sourceRoot":"","sources":["../../src/ExecutionFacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAgB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,gBAAgB,MAAM,gCAAgC,CAAA;AAalE;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,GAAoB,EACpB,KAAuD,EACO,EAAE,CAChE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClF,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzG,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAC/C,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC,cAAc;QAC/B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;KACrE,CAAC,CACH,CACF,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,IAAI,KAAK,GAAkB,IAAI,CAAA;IAC/B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpF,IAAI,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iEAAiE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClE,WAAW,EAAE,GAAG,CAAC,KAAK;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,WAAW,EAAE,QAAQ,IAAI,IAAI;QAC7D,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK;QACrC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC;QACnC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,QAAQ;QAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YAC5B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YAC9B,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACzF,KAAK;YACL,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;SAC9F;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAE,EAAE;IACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E,MAAM,IAAI,GAAG,CAAC,WAAmB,EAAE,WAAiC,QAAQ,EAAE,EAAE,CAC9E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EACpD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7E,mEAAmE;IACnE,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAClC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAU,EAAE,WAAW,EAAE,qBAA8B,EAAE,CAAC,CAAC,CACxF,CAAA;IACH,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC9C,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC;YACpE,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IACJ,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAE,EAAU,EAAE,EAAE,CACxD,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAClE,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB;YAAE,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACrE,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAC,CAAA;IACL,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,EAAU,EAAE,EAAE,CAC/D,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACzE,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvC,0EAA0E;YAC1E,sEAAsE;YACtE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,GAAG,CAAC,mBAAmB,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnG,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAC,CAAA;IACL,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAA;AACtD,CAAC,CAAA","sourcesContent":["/** Native lifecycle facts captured using the owning store transaction.\n * @since 1.0.0\n */\n\nimport * as Sha256 from \"@smthrs/crypto/Sha256\"\nimport { FlowEngine } from \"@smthrs/engine\"\nimport { DurableDeferred } from \"@smthrs/flow\"\nimport { ExecutionFact, type Journal, Redaction } from \"@smthrs/journal\"\nimport type { RunStore } from \"@smthrs/run-store\"\nimport { Effect, Option, Schema } from \"effect\"\nimport type * as DurableEngineState from \"./DurableEngineState.ts\"\nimport * as JournalRecords from \"./internal/JournalRecords.ts\"\nimport * as StateTransaction from \"./internal/StateTransaction.ts\"\n\n/** Captured native services; never substitute an ambient control journal.\n * @category models\n * @since 1.0.0\n */\nexport interface Options {\n readonly runs: RunStore.Service\n readonly state: Pick<DurableEngineState.Service, \"waiting\" | \"runParents\" | \"transaction\">\n readonly journal: Journal.Service\n readonly sourceId: string\n}\n\n/** Read the semantic subset shared with ExecutionSnapshot inside its caller's transaction.\n * @category queries\n * @since 1.0.0\n */\nexport const observe = (\n row: RunStore.RunRow,\n state: Pick<Options[\"state\"], \"waiting\" | \"runParents\">\n): Effect.Effect<ExecutionFact.Observation, Schema.SchemaError> =>\n Effect.gen(function*() {\n const waiting = yield* state.waiting(row.runId)\n const parents = row.parentRunId === null ? yield* state.runParents(row.runId) : []\n const firstParent = [...parents].sort((a, b) => a.seq - b.seq || a.parentId.localeCompare(b.parentId))[0]\n const encoded = yield* Schema.decodeUnknownEffect(\n Schema.fromJsonString(\n Schema.Struct({\n flowName: Schema.NonEmptyString,\n onParentExit: Schema.optional(Schema.Literals([\"cancel\", \"detach\"]))\n })\n )\n )(row.stateJson)\n let point: string | null = null\n if (Option.isSome(waiting) && waiting.value.token !== null) {\n try {\n const { deferredName } = DurableDeferred.TokenParsed.fromString(waiting.value.token)\n if (deferredName.startsWith(\"WaitFor/\")) {\n point = deferredName.slice(\"WaitFor/\".length)\n }\n } catch { /* An opaque plugin token remains an operational address only. */ }\n }\n return yield* Schema.decodeUnknownEffect(ExecutionFact.Observation)({\n executionId: row.runId,\n flowName: encoded.flowName,\n status: row.status,\n createdAtMs: row.createdAtMs,\n startedAtMs: row.startedAtMs,\n finishedAtMs: row.finishedAtMs,\n parentRunId: row.parentRunId ?? firstParent?.parentId ?? null,\n lineageId: row.lineageId ?? row.runId,\n roundOrdinal: row.roundOrdinal ?? 0,\n cancelRequestedAtMs: row.cancelRequestedAtMs,\n treeVersion: 1,\n parentPolicy: encoded.onParentExit ?? \"cancel\",\n waiting: Option.isNone(waiting) ? null : {\n reason: waiting.value.reason,\n wakeAtMs: waiting.value.wakeAt,\n tokenDigest: waiting.value.token === null ? null : Sha256.digestSync(waiting.value.token),\n point,\n request: waiting.value.request === undefined ? null : Redaction.redact(waiting.value.request)\n }\n })\n })\n\n/** Fact admission and cancellation intent share the same native writer transaction.\n * @category constructors\n * @since 1.0.0\n */\nexport const make = (options: Options) => {\n const transactState = StateTransaction.make(options.state, options.journal)\n const fact = (executionId: string, baseline: \"created\" | \"legacy\" = \"legacy\") =>\n options.runs.get(executionId).pipe(\n Effect.flatMap((row) => observe(row, options.state)),\n Effect.map((observation) => ({ version: 1 as const, baseline, observation })),\n // Invalid semantic metadata must not prevent the driver's existing\n // corruption/invalid-round path from settling the run. Record a named\n // coverage failure; never normalize a bad ordinal or invent ancestry.\n Effect.catchTag(\"SchemaError\", () =>\n Effect.succeed({ version: 1 as const, unavailable: \"invalid-observation\" as const }))\n )\n const cancelled = (executionId: string) =>\n Effect.gen(function*() {\n const executionFact = yield* fact(executionId)\n yield* options.journal.emitDurableUnfenced(JournalRecords.runDecision({\n runId: executionId,\n lineageId: FlowEngine.Lineage.root(executionId),\n sourceId: options.sourceId\n }, { decision: \"cancel-requested\", executionFact }))\n })\n const requestCancel = (executionId: string, at: number) =>\n transactState(Effect.gen(function*() {\n const outcome = yield* options.runs.requestCancel(executionId, at)\n if (outcome._tag === \"CancelRequested\") yield* cancelled(executionId)\n return outcome\n }))\n const requestCancelLineage = (executionId: string, at: number) =>\n transactState(Effect.gen(function*() {\n const before = yield* options.runs.lineage(executionId)\n const outcome = yield* options.runs.requestCancelLineage(executionId, at)\n if (outcome._tag === \"CancelRequested\") {\n // The set update excludes terminal/already-requested rows. Record exactly\n // the rows it changed, not a guessed terminal cancellation timestamp.\n for (const row of before) {\n if (row.cancelRequestedAtMs === null && ![\"completed\", \"failed\", \"cancelled\"].includes(row.status)) {\n yield* cancelled(row.runId)\n }\n }\n }\n return outcome\n }))\n return { fact, requestCancel, requestCancelLineage }\n}\n"]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revisioned, round-scoped engine observations.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import type { RunStoreError } from "@smthrs/run-store/RunStore";
|
|
7
|
+
import { Context, Effect, Layer } from "effect";
|
|
8
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
9
|
+
import * as Read from "./internal/ExecutionSnapshotRead.ts";
|
|
10
|
+
import * as Relations from "./internal/ExecutionSnapshotRelations.ts";
|
|
11
|
+
export type { RelatedOptions, RelatedPage } from "./internal/ExecutionSnapshotRelations.ts";
|
|
12
|
+
/**
|
|
13
|
+
* Engine database identity and observed watermark.
|
|
14
|
+
*
|
|
15
|
+
* @category models
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
export type Position = Read.Position;
|
|
19
|
+
/**
|
|
20
|
+
* An authoritative execution row.
|
|
21
|
+
*
|
|
22
|
+
* @category models
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export type Observed = Read.Observed;
|
|
26
|
+
/**
|
|
27
|
+
* A structured durable wait.
|
|
28
|
+
*
|
|
29
|
+
* @category models
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
*/
|
|
32
|
+
export type Waiting = Read.Waiting;
|
|
33
|
+
/**
|
|
34
|
+
* Absence is explicit; deleted distinguishes retained deletion evidence.
|
|
35
|
+
*
|
|
36
|
+
* @category models
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
*/
|
|
39
|
+
export interface Missing extends Position {
|
|
40
|
+
readonly _tag: "Missing";
|
|
41
|
+
readonly runId: string;
|
|
42
|
+
readonly deleted: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* One requested execution observation.
|
|
46
|
+
*
|
|
47
|
+
* @category models
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
*/
|
|
50
|
+
export type Snapshot = Observed | Missing;
|
|
51
|
+
/**
|
|
52
|
+
* Coherent observations in request order, including duplicates.
|
|
53
|
+
*
|
|
54
|
+
* @category models
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
export interface Batch extends Position {
|
|
58
|
+
readonly snapshots: ReadonlyArray<Snapshot>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Maximum IDs admitted by one read.
|
|
62
|
+
*
|
|
63
|
+
* @category constants
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
*/
|
|
66
|
+
export declare const maximumBatchSize = 200;
|
|
67
|
+
/**
|
|
68
|
+
* Reserves a deferred SQLite / repeatable-read PostgreSQL read transaction
|
|
69
|
+
* without the durable writer's admission lock. An existing transaction is
|
|
70
|
+
* reused with its caller-selected isolation.
|
|
71
|
+
* The supplied effect must contain observations only.
|
|
72
|
+
*
|
|
73
|
+
* @category constructors
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
*/
|
|
76
|
+
export declare const withReadTransaction: <A, E, R>(sql: SqlClient.SqlClient, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, import("effect/unstable/sql/SqlError").SqlError | E, R>;
|
|
77
|
+
/**
|
|
78
|
+
* Engine observation operations.
|
|
79
|
+
*
|
|
80
|
+
* @category models
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
*/
|
|
83
|
+
export interface Service {
|
|
84
|
+
readonly read: (runIds: ReadonlyArray<string>) => Effect.Effect<Batch, RunStoreError>;
|
|
85
|
+
readonly related: (options: Relations.RelatedOptions) => Effect.Effect<Relations.RelatedPage, RunStoreError>;
|
|
86
|
+
}
|
|
87
|
+
declare const ExecutionSnapshot_base: Context.ServiceClass<ExecutionSnapshot, "@smthrs/engine-store/ExecutionSnapshot", Service>;
|
|
88
|
+
/**
|
|
89
|
+
* Engine observation service.
|
|
90
|
+
*
|
|
91
|
+
* @category services
|
|
92
|
+
* @since 1.0.0
|
|
93
|
+
*/
|
|
94
|
+
export declare class ExecutionSnapshot extends ExecutionSnapshot_base {
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Guard for applying observations and tombstones to a source-bound projection.
|
|
98
|
+
* Source replacement requires an explicit rebuild, never a revision comparison.
|
|
99
|
+
* @category guards
|
|
100
|
+
* @since 1.0.0
|
|
101
|
+
*/
|
|
102
|
+
export declare const isNewer: (incoming: Position, current: Position) => boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Constructs the SQL read port; migrations must already be applied.
|
|
105
|
+
*
|
|
106
|
+
* @category constructors
|
|
107
|
+
* @since 1.0.0
|
|
108
|
+
*/
|
|
109
|
+
export declare const make: () => Effect.Effect<Service, never, SqlClient.SqlClient>;
|
|
110
|
+
/**
|
|
111
|
+
* Provides the SQL observation port.
|
|
112
|
+
*
|
|
113
|
+
* @category layers
|
|
114
|
+
* @since 1.0.0
|
|
115
|
+
*/
|
|
116
|
+
export declare const layer: Layer.Layer<ExecutionSnapshot, never, SqlClient.SqlClient>;
|
|
117
|
+
//# sourceMappingURL=ExecutionSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionSnapshot.d.ts","sourceRoot":"","sources":["../../src/ExecutionSnapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,IAAI,MAAM,qCAAqC,CAAA;AAC3D,OAAO,KAAK,SAAS,MAAM,0CAA0C,CAAA;AAErE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAE3F;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;AACpC;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;AACpC;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;AAClC;;;;;GAKG;AACH,MAAM,WAAW,OAAQ,SAAQ,QAAQ;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AACD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AACzC;;;;;GAKG;AACH,MAAM,WAAW,KAAM,SAAQ,QAAQ;IACrC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CAC5C;AACD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAA;AACnC;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,iJAAmB,CAAA;AACnD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;IACrF,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;CAC7G;;AACD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,sBAEtC;CAAG;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,UAAU,QAAQ,EAAE,SAAS,QAAQ,KAAG,OACY,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,QAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,CA8DrE,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,CAA2C,CAAA"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revisioned, round-scoped engine observations.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Dialect from "@smthrs/database/Dialect";
|
|
7
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
8
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
9
|
+
import * as Read from "./internal/ExecutionSnapshotRead.js";
|
|
10
|
+
import * as Relations from "./internal/ExecutionSnapshotRelations.js";
|
|
11
|
+
/**
|
|
12
|
+
* Maximum IDs admitted by one read.
|
|
13
|
+
*
|
|
14
|
+
* @category constants
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export const maximumBatchSize = 200;
|
|
18
|
+
/**
|
|
19
|
+
* Reserves a deferred SQLite / repeatable-read PostgreSQL read transaction
|
|
20
|
+
* without the durable writer's admission lock. An existing transaction is
|
|
21
|
+
* reused with its caller-selected isolation.
|
|
22
|
+
* The supplied effect must contain observations only.
|
|
23
|
+
*
|
|
24
|
+
* @category constructors
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export const withReadTransaction = Read.transaction;
|
|
28
|
+
/**
|
|
29
|
+
* Engine observation service.
|
|
30
|
+
*
|
|
31
|
+
* @category services
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export class ExecutionSnapshot extends Context.Service()("@smthrs/engine-store/ExecutionSnapshot") {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Guard for applying observations and tombstones to a source-bound projection.
|
|
38
|
+
* Source replacement requires an explicit rebuild, never a revision comparison.
|
|
39
|
+
* @category guards
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
*/
|
|
42
|
+
export const isNewer = (incoming, current) => incoming.source === current.source && incoming.revision > current.revision;
|
|
43
|
+
/**
|
|
44
|
+
* Constructs the SQL read port; migrations must already be applied.
|
|
45
|
+
*
|
|
46
|
+
* @category constructors
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
*/
|
|
49
|
+
export const make = () => Effect.gen(function* () {
|
|
50
|
+
const sql = yield* SqlClient.SqlClient;
|
|
51
|
+
const read = (runIds) => Read.boundary("ExecutionSnapshot.read", Effect.gen(function* () {
|
|
52
|
+
const ids = yield* Read.decode(Schema.Array(Read.Identifier).check(Schema.isMaxLength(maximumBatchSize)), runIds);
|
|
53
|
+
const batch = yield* Read.transaction(sql, Effect.gen(function* () {
|
|
54
|
+
const at = yield* Read.position(sql);
|
|
55
|
+
if (ids.length === 0)
|
|
56
|
+
return { ...at, snapshots: [] };
|
|
57
|
+
const rows = yield* Dialect.query(sql, `SELECT ${Read.selectColumns} FROM flows_runs r
|
|
58
|
+
LEFT JOIN flows_run_changes c ON c.run_id = r.run_id
|
|
59
|
+
WHERE r.run_id IN (${ids.map(() => "?").join(",")})`, ids);
|
|
60
|
+
const snapshots = new Map();
|
|
61
|
+
for (const row of rows) {
|
|
62
|
+
const value = yield* Read.observed(row, at);
|
|
63
|
+
snapshots.set(value.runId, value);
|
|
64
|
+
}
|
|
65
|
+
const changes = yield* Dialect.query(sql, `SELECT run_id, revision, deleted FROM flows_run_changes WHERE run_id IN (${ids.map(() => "?").join(",")})`, ids);
|
|
66
|
+
for (const change of changes) {
|
|
67
|
+
if (snapshots.has(change.run_id))
|
|
68
|
+
continue;
|
|
69
|
+
const revision = yield* Read.decode(Read.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(at.revision)), change.revision);
|
|
70
|
+
yield* Read.decode(Schema.Literal(1), change.deleted);
|
|
71
|
+
snapshots.set(change.run_id, {
|
|
72
|
+
_tag: "Missing",
|
|
73
|
+
runId: change.run_id,
|
|
74
|
+
source: at.source,
|
|
75
|
+
revision,
|
|
76
|
+
deleted: true
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
...at,
|
|
81
|
+
snapshots: ids.map((runId) => snapshots.get(runId) ?? { _tag: "Missing", runId, ...at, deleted: false })
|
|
82
|
+
};
|
|
83
|
+
}));
|
|
84
|
+
return yield* Read.coherentBatch(ids, batch);
|
|
85
|
+
}));
|
|
86
|
+
return { read, related: Relations.make(sql, read) };
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Provides the SQL observation port.
|
|
90
|
+
*
|
|
91
|
+
* @category layers
|
|
92
|
+
* @since 1.0.0
|
|
93
|
+
*/
|
|
94
|
+
export const layer = Layer.effect(ExecutionSnapshot)(make());
|
|
95
|
+
//# sourceMappingURL=ExecutionSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionSnapshot.js","sourceRoot":"","sources":["../../src/ExecutionSnapshot.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Revisioned, round-scoped engine observations.\n *\n * @since 1.0.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport type { RunStoreError } from \"@smthrs/run-store/RunStore\"\nimport { Context, Effect, Layer, Schema } from \"effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\nimport * as Read from \"./internal/ExecutionSnapshotRead.ts\"\nimport * as Relations from \"./internal/ExecutionSnapshotRelations.ts\"\n\nexport type { RelatedOptions, RelatedPage } from \"./internal/ExecutionSnapshotRelations.ts\"\n\n/**\n * Engine database identity and observed watermark.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Position = Read.Position\n/**\n * An authoritative execution row.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Observed = Read.Observed\n/**\n * A structured durable wait.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Waiting = Read.Waiting\n/**\n * Absence is explicit; deleted distinguishes retained deletion evidence.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Missing extends Position {\n readonly _tag: \"Missing\"\n readonly runId: string\n readonly deleted: boolean\n}\n/**\n * One requested execution observation.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Snapshot = Observed | Missing\n/**\n * Coherent observations in request order, including duplicates.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Batch extends Position {\n readonly snapshots: ReadonlyArray<Snapshot>\n}\n/**\n * Maximum IDs admitted by one read.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const maximumBatchSize = 200\n/**\n * Reserves a deferred SQLite / repeatable-read PostgreSQL read transaction\n * without the durable writer's admission lock. An existing transaction is\n * reused with its caller-selected isolation.\n * The supplied effect must contain observations only.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const withReadTransaction = Read.transaction\n/**\n * Engine observation operations.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Service {\n readonly read: (runIds: ReadonlyArray<string>) => Effect.Effect<Batch, RunStoreError>\n readonly related: (options: Relations.RelatedOptions) => Effect.Effect<Relations.RelatedPage, RunStoreError>\n}\n/**\n * Engine observation service.\n *\n * @category services\n * @since 1.0.0\n */\nexport class ExecutionSnapshot extends Context.Service<ExecutionSnapshot, Service>()(\n \"@smthrs/engine-store/ExecutionSnapshot\"\n) {}\n\n/**\n * Guard for applying observations and tombstones to a source-bound projection.\n * Source replacement requires an explicit rebuild, never a revision comparison.\n * @category guards\n * @since 1.0.0\n */\nexport const isNewer = (incoming: Position, current: Position): boolean =>\n incoming.source === current.source && incoming.revision > current.revision\n\n/**\n * Constructs the SQL read port; migrations must already be applied.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const make = (): Effect.Effect<Service, never, SqlClient.SqlClient> =>\n Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n const read: Service[\"read\"] = (runIds) =>\n Read.boundary(\n \"ExecutionSnapshot.read\",\n Effect.gen(function*() {\n const ids = yield* Read.decode(\n Schema.Array(Read.Identifier).check(Schema.isMaxLength(maximumBatchSize)),\n runIds\n )\n const batch = yield* Read.transaction(\n sql,\n Effect.gen(function*() {\n const at = yield* Read.position(sql)\n if (ids.length === 0) return { ...at, snapshots: [] }\n const rows = yield* Dialect.query(\n sql,\n `SELECT ${Read.selectColumns} FROM flows_runs r\n LEFT JOIN flows_run_changes c ON c.run_id = r.run_id\n WHERE r.run_id IN (${ids.map(() => \"?\").join(\",\")})`,\n ids\n )\n const snapshots = new Map<string, Snapshot>()\n for (const row of rows) {\n const value = yield* Read.observed(row, at)\n snapshots.set(value.runId, value)\n }\n const changes = yield* Dialect.query<{ run_id: string; revision: number; deleted: number }>(\n sql,\n `SELECT run_id, revision, deleted FROM flows_run_changes WHERE run_id IN (${\n ids.map(() => \"?\").join(\",\")\n })`,\n ids\n )\n for (const change of changes) {\n if (snapshots.has(change.run_id)) continue\n const revision = yield* Read.decode(\n Read.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(at.revision)),\n change.revision\n )\n yield* Read.decode(Schema.Literal(1), change.deleted)\n snapshots.set(change.run_id, {\n _tag: \"Missing\",\n runId: change.run_id,\n source: at.source,\n revision,\n deleted: true\n })\n }\n return {\n ...at,\n snapshots: ids.map((runId): Snapshot =>\n snapshots.get(runId) ?? { _tag: \"Missing\", runId, ...at, deleted: false }\n )\n }\n })\n )\n return yield* Read.coherentBatch(ids, batch)\n })\n )\n return { read, related: Relations.make(sql, read) }\n })\n\n/**\n * Provides the SQL observation port.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layer: Layer.Layer<ExecutionSnapshot, never, SqlClient.SqlClient> = Layer.effect(ExecutionSnapshot)(make())\n"]}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Receiver for detected engine inconsistencies.
|
|
3
|
+
*
|
|
4
|
+
* Modeled on Skyframe's `GraphInconsistencyReceiver`: the store layer detects
|
|
5
|
+
* an invariant violation — today, a content-addressed cache key that produced
|
|
6
|
+
* a different result than the recorded row — and this service decides whether
|
|
7
|
+
* the run fails or tolerates it. Either way the conflict is journaled, so the
|
|
8
|
+
* detector is never wired to /dev/null.
|
|
9
|
+
*
|
|
10
|
+
* The `note` signature deliberately matches the plugin spec's
|
|
11
|
+
* `cacheInconsistency` hook (`(event) => Effect<InconsistencyVerdict>`); the
|
|
12
|
+
* strict layer is the future default plugin.
|
|
13
|
+
*
|
|
14
|
+
* The core default is strict so an invariant violation cannot pass silently.
|
|
15
|
+
*
|
|
16
|
+
* Governing designs: `docs/concepts/attempts-and-replay.md` and
|
|
17
|
+
* `apps/site/src/content/docs/docs/concepts/flows-actions-plans.mdx`.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
import { Journal } from "@smthrs/journal";
|
|
22
|
+
import type { Ownership } from "@smthrs/run-store";
|
|
23
|
+
import type { CacheStore } from "@smthrs/step-cache";
|
|
24
|
+
import * as Context from "effect/Context";
|
|
25
|
+
import * as Effect from "effect/Effect";
|
|
26
|
+
import * as Layer from "effect/Layer";
|
|
27
|
+
/**
|
|
28
|
+
* Decision returned by an inconsistency receiver.
|
|
29
|
+
*
|
|
30
|
+
* @category models
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
*/
|
|
33
|
+
export type InconsistencyVerdict = "fail" | "tolerate";
|
|
34
|
+
/**
|
|
35
|
+
* A content-addressed cache key that produced a result different from the
|
|
36
|
+
* recorded row — a hermeticity/determinism violation.
|
|
37
|
+
*
|
|
38
|
+
* @category models
|
|
39
|
+
* @since 0.1.0
|
|
40
|
+
*/
|
|
41
|
+
export interface CacheConflict {
|
|
42
|
+
readonly key: string;
|
|
43
|
+
readonly existing: CacheStore.CacheEntry | undefined;
|
|
44
|
+
readonly attempted: CacheStore.CacheEntry;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Recorded boundary evidence whose blob no longer hashes to its recorded
|
|
48
|
+
* digest — on-disk corruption of the content-addressed store, detected while
|
|
49
|
+
* replaying a verified cache hit or a succeeded attempt (issue #150).
|
|
50
|
+
* Distinct from a transient host failure, which merely refuses the replay
|
|
51
|
+
* and stays retryable.
|
|
52
|
+
*
|
|
53
|
+
* @category models
|
|
54
|
+
* @since 0.1.0
|
|
55
|
+
*/
|
|
56
|
+
export interface BlobCorruption {
|
|
57
|
+
/** The run that observed the corruption; the journaling target. */
|
|
58
|
+
readonly runId: string;
|
|
59
|
+
readonly keyDigest: string;
|
|
60
|
+
readonly path: string;
|
|
61
|
+
readonly recordedDigest: string;
|
|
62
|
+
readonly measuredDigest: string;
|
|
63
|
+
/**
|
|
64
|
+
* Provenance of the corrupt evidence when it came from a shared cache row;
|
|
65
|
+
* absent when it came from this run's own succeeded attempt row.
|
|
66
|
+
*/
|
|
67
|
+
readonly recordedRunId?: string | undefined;
|
|
68
|
+
readonly recordedEventSeq?: number | undefined;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Inconsistency receiver operations.
|
|
72
|
+
*
|
|
73
|
+
* @category models
|
|
74
|
+
* @since 0.1.0
|
|
75
|
+
*/
|
|
76
|
+
export interface Service {
|
|
77
|
+
readonly note: (event: CacheConflict) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>;
|
|
78
|
+
/**
|
|
79
|
+
* Observes on-disk corruption of recorded boundary evidence (issue #150).
|
|
80
|
+
* `"fail"` fails the dispatch; `"tolerate"` lets it fall back to a real
|
|
81
|
+
* execution (which re-captures and heals the corrupt address).
|
|
82
|
+
*/
|
|
83
|
+
readonly noteCorruption: (event: BlobCorruption) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>;
|
|
84
|
+
}
|
|
85
|
+
declare const Inconsistency_base: Context.ServiceClass<Inconsistency, "@smthrs/engine-store/Inconsistency", Service>;
|
|
86
|
+
/**
|
|
87
|
+
* Service tag for the engine inconsistency receiver.
|
|
88
|
+
*
|
|
89
|
+
* @category services
|
|
90
|
+
* @since 0.1.0
|
|
91
|
+
*/
|
|
92
|
+
export declare class Inconsistency extends Inconsistency_base {
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Options for constructing a journaling inconsistency receiver.
|
|
96
|
+
*
|
|
97
|
+
* @category models
|
|
98
|
+
* @since 0.1.0
|
|
99
|
+
*/
|
|
100
|
+
export interface MakeOptions {
|
|
101
|
+
readonly journal: Journal.Service;
|
|
102
|
+
readonly verdict: InconsistencyVerdict;
|
|
103
|
+
/**
|
|
104
|
+
* The owner the conflict record is fenced to: a reclaimed run cannot append
|
|
105
|
+
* hermeticity evidence it no longer owns. Required — every composer of this
|
|
106
|
+
* receiver is a run's owner.
|
|
107
|
+
*/
|
|
108
|
+
readonly owner: Ownership.OwnerId;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Builds a receiver that journals every conflict under the run that attempted
|
|
112
|
+
* the write and returns a fixed verdict.
|
|
113
|
+
*
|
|
114
|
+
* The record goes through the journal's durable channel: a cache conflict is
|
|
115
|
+
* hermeticity evidence, and a `tolerate` verdict that silently dropped its
|
|
116
|
+
* only record would wire the detector to /dev/null (issue #10).
|
|
117
|
+
*
|
|
118
|
+
* @category constructors
|
|
119
|
+
* @since 0.1.0
|
|
120
|
+
*/
|
|
121
|
+
export declare const make: (options: MakeOptions) => Service;
|
|
122
|
+
/**
|
|
123
|
+
* Builds a receiver from overrides. The default notes nothing and tolerates.
|
|
124
|
+
*
|
|
125
|
+
* @category constructors
|
|
126
|
+
* @since 0.1.0
|
|
127
|
+
*/
|
|
128
|
+
export declare const makeNoop: (overrides?: Partial<Service>) => Service;
|
|
129
|
+
/**
|
|
130
|
+
* Provides a receiver that never journals and always tolerates.
|
|
131
|
+
*
|
|
132
|
+
* @category layers
|
|
133
|
+
* @since 0.1.0
|
|
134
|
+
*/
|
|
135
|
+
export declare const layerNoop: (overrides?: Partial<Service>) => Layer.Layer<Inconsistency>;
|
|
136
|
+
/**
|
|
137
|
+
* Journals every cache conflict and fails the run. This is the default
|
|
138
|
+
* receiver for engine wiring: a non-hermetic sealed hard-boundary action is
|
|
139
|
+
* a defect, not a condition to paper over.
|
|
140
|
+
*
|
|
141
|
+
* @category layers
|
|
142
|
+
* @since 0.1.0
|
|
143
|
+
*/
|
|
144
|
+
export declare const layerStrict: (owner: Ownership.OwnerId) => Layer.Layer<Inconsistency, never, Journal.Journal>;
|
|
145
|
+
/**
|
|
146
|
+
* Journals every cache conflict and continues, preserving the first-recorded
|
|
147
|
+
* row (Skyframe's tolerant production configuration).
|
|
148
|
+
*
|
|
149
|
+
* @category layers
|
|
150
|
+
* @since 0.1.0
|
|
151
|
+
*/
|
|
152
|
+
export declare const layerTolerant: (owner: Ownership.OwnerId) => Layer.Layer<Inconsistency, never, Journal.Journal>;
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=Inconsistency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inconsistency.d.ts","sourceRoot":"","sources":["../../src/Inconsistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAA;CAC1C;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAClG;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC9G;;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAA+E;CAAG;AAErH;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAA;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,WAAW,KAAG,OAwE1C,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,YAAW,OAAO,CAAC,OAAO,CAAM,KAAG,OAI1D,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,YAAW,OAAO,CAAC,OAAO,CAAM,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CACnC,CAAA;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,SAAS,CAAC,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAMrG,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,CAAC,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAMvG,CAAA"}
|