@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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `EngineStateFault`: a durable engine-state invariant that breaks (a JSON
|
|
8
|
+
column that cannot be written or read back, or a row a lost first-writer
|
|
9
|
+
transaction expected) dies with this tagged defect, carrying `reason` and
|
|
10
|
+
`field`, instead of a plain `Error`. Its message is unchanged.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Failed unknown effect-boundary appends now warn with their cause, run ID, and
|
|
15
|
+
action key while preserving the primary outcome. Missing completed-lineage
|
|
16
|
+
flow registration now exposes the tagged `FlowEngine.FlowNotRegistered` defect.
|
|
17
|
+
|
|
18
|
+
- Durable engine-state JSON codec and missing first-writer row defects now
|
|
19
|
+
expose `EngineStateFault` with typed reasons, optional field, and cause.
|
|
20
|
+
|
|
21
|
+
- Cache replay and workspace copy-back confine to a Windows drive root instead
|
|
22
|
+
of failing with `host_unavailable`. Breaking: `StepBoundary.makeFileSystem`
|
|
23
|
+
and `WorkspaceSandbox.makeFileSystem` take the host `Path` after `fs`, and
|
|
24
|
+
`StepBoundary.layer`, `WorkspaceSandbox.layerFileSystem`, and
|
|
25
|
+
`StepSandbox.layer` require `Path.Path` (`NodePath.layer` on Node). The Node
|
|
26
|
+
and Bun runtimes already provide it (#2302).
|
|
27
|
+
|
|
28
|
+
### Security
|
|
29
|
+
|
|
30
|
+
- Workspace copy-back can no longer be redirected outside the workspace by a
|
|
31
|
+
symlink swapped in between its confinement check and its write. Every
|
|
32
|
+
copy-back host call (lock, preflight, apply, rollback) now goes through
|
|
33
|
+
`@smthrs/kernel/FileSystem`'s `confined` view: one descriptor-relative,
|
|
34
|
+
no-follow request against the root pinned for that commit. The path-based
|
|
35
|
+
`realPath`/`readLink` confinement pre-check is gone. Breaking: a copy-back
|
|
36
|
+
through a symlink that stays inside the root is refused with
|
|
37
|
+
`path_escapes_workspace` instead of followed, and
|
|
38
|
+
`WorkspaceSandbox.layerFileSystem` and `StepSandbox.layer` fail to build with
|
|
39
|
+
`host_unavailable` over a plain path-based `FileSystem`. Compose them over
|
|
40
|
+
`@smthrs/platform-node`'s `AtomicFileSystem.layer` (which `NodeHost` and
|
|
41
|
+
`BunHost` already provide), the kernel-guarded `FileSystem.layer`, or an
|
|
42
|
+
in-memory volume wrapped in `withIsolatedFileSystem`.
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- `EngineStore.Options.requestResume` reports every wake this engine itself
|
|
47
|
+
initiates against a parked execution: a durable deferred completing, a
|
|
48
|
+
durable clock firing, and a child settling under a parent that parked on it.
|
|
49
|
+
An operator's own resume is not reported, because the host that asked for it
|
|
50
|
+
has already claimed the run. A host that refuses to re-enter a parked run
|
|
51
|
+
nobody asked for had no way to tell an engine wake from its own heartbeat
|
|
52
|
+
sweep, so a run that slept, or whose child parked, never settled. Optional: a
|
|
53
|
+
composition without such a host leaves it undefined and every wake is exactly
|
|
54
|
+
what it was.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- Breaking: `DurableEngineState.staleRunningRuns` returns
|
|
59
|
+
`ReadonlyArray<StaleRunningRow>` (`{ runId, heartbeatAtMs }`) instead of run
|
|
60
|
+
ids, so a sweep can scope a steal refusal to the lease it was refused
|
|
61
|
+
against. Custom `DurableEngineState` implementations must return the frozen
|
|
62
|
+
heartbeat with each run id; callers read `row.runId`.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Compiled `stop-merge` recovery retains the stopped attempt's `skipped`
|
|
67
|
+
outcome. `PlanMergeStore` persists eligible peers and atomically commits
|
|
68
|
+
merge completion with its plan, source observations, and append event.
|
|
69
|
+
Reopening can recover recorded merge-only extensions from the original base;
|
|
70
|
+
intervening manual generations still require their approved plan. Generated
|
|
71
|
+
IDs avoid ordinary user IDs without treating names or bodies as authority.
|
|
72
|
+
Compose the new layer on the scheduler's database. Migration `3005` refuses
|
|
73
|
+
old observation heads whose merge state is unknown; finish on the prior
|
|
74
|
+
runtime or reconcile unfinished effects before starting a new run.
|
|
75
|
+
|
|
76
|
+
- Compiled recovery binds the normalized runtime environment before dispatch
|
|
77
|
+
for all effect tiers. Changing `Options.environment` no longer repeats a
|
|
78
|
+
completed action under a fresh key. Nested environment options are copied at
|
|
79
|
+
construction. `PlanInputStore.Address` now requires `environmentDigest`,
|
|
80
|
+
derived by `StepKey.environmentIdentity`; migration `3004` refuses older
|
|
81
|
+
observation heads whose original environment is unknown instead of guessing.
|
|
82
|
+
Existing action keys are unchanged. Recover with the original environment,
|
|
83
|
+
or reconcile unfinished effects before intentionally starting new work.
|
|
84
|
+
|
|
85
|
+
- `PlanInputStore` persists source digests and glob membership before compiled
|
|
86
|
+
dispatch. Reopening a self-updating run replays its original key instead of
|
|
87
|
+
observing its own output as a new input. Appended generations retain earlier
|
|
88
|
+
pins; corrupt, missing, incompatible or unfenced observations are refused.
|
|
89
|
+
The new layer is required on the scheduler's database and is included in
|
|
90
|
+
`TestStores`. Migration `3003` refuses compiled recovery for older runs that
|
|
91
|
+
already had attempts but no input observations; finish them before upgrading
|
|
92
|
+
or explicitly reconcile their effects. Changed approved graphs require a
|
|
93
|
+
new run, not replacement within an observed run.
|
|
94
|
+
|
|
95
|
+
- File inputs are classified relative to each reader's predecessors. Explicit
|
|
96
|
+
read-before-write sequences pin initial sources, and intermediate reads see
|
|
97
|
+
preceding outputs. Future writers/removers no longer cause late source
|
|
98
|
+
remeasurement or expand source-glob membership. Durable input snapshots now
|
|
99
|
+
preserve that selection across reopening as well.
|
|
100
|
+
|
|
101
|
+
- Ready-work admission uses `@smthrs/plan/Scheduling` for priority, aging, plan-
|
|
102
|
+
order ties and step/agent caps. Priority plus waiting age is compared exactly
|
|
103
|
+
even outside the safe-number range. This does not change the interpreter's
|
|
104
|
+
separate execution path or claim conditional scheduling parity.
|
|
105
|
+
|
|
106
|
+
- Plan scheduling preserves declared effect tiers. Compensable and irreversible
|
|
107
|
+
work uses run-local, structurally scoped execution keys and never publishes a
|
|
108
|
+
shared-cache result. Durable replay survives reopening the database;
|
|
109
|
+
compensable retries restore their pre-image and keyless irreversible retries
|
|
110
|
+
remain refused. An irreversible conflict fails without automatic rebase or
|
|
111
|
+
merge execution. Compensable merge elaboration preserves the stopped node's
|
|
112
|
+
tier instead of turning it into shared-cache work.
|
|
113
|
+
|
|
114
|
+
- Cancellation through any trampoline round now reaches live successors and
|
|
115
|
+
linked child lineages, including children created by earlier rounds. Requests
|
|
116
|
+
and handoffs serialize in the owning write transaction; local interruption
|
|
117
|
+
is sent only after commit and does not wait on user cleanup. Normal parent
|
|
118
|
+
exit resolves child policy from the round that created the edge and preserves
|
|
119
|
+
it across handoffs. Fork ancestry alone does not propagate cancellation.
|
|
120
|
+
|
|
121
|
+
- Fixed the CommonJS build of the migration set. esbuild compiles a default
|
|
122
|
+
import of a sibling module under `"type": "module"` to Node-style interop,
|
|
123
|
+
where `import_x.default` is the sibling's whole exports object rather than
|
|
124
|
+
the Effect it exported, so `set.migrations["0001_initial"]` and
|
|
125
|
+
`set.migrations["0002_selection_store"]` had no `pipe` in `dist/cjs` and
|
|
126
|
+
every `require` consumer failed at schema time. `migrations/0001_initial`
|
|
127
|
+
now exports the named `initial` binding, `migrations/0002_selection_store`
|
|
128
|
+
exports the named `selectionStore` binding, neither has a default export,
|
|
129
|
+
and `Migrations` imports both by name.
|
|
130
|
+
|
|
131
|
+
## [1.0.0-rc.0] - 2026-09-01
|
|
132
|
+
|
|
133
|
+
### Release notes
|
|
134
|
+
|
|
135
|
+
> **Issue links.** This package was imported from the `smithersai/flows`
|
|
136
|
+
> repository, so the issue numbers cited below resolve there. Issues opened
|
|
137
|
+
> since the import resolve in `smithersai/smithers`, which `package.json`
|
|
138
|
+
> names as this package's repository.
|
|
139
|
+
|
|
140
|
+
> **Databases.** Smithers 1.0.0-rc.0 stores run state in local SQLite only (`@effect/sql-sqlite-node` over Node.js `node:sqlite`). PostgreSQL and PGlite are not supported: no client layer or migration ladder ships, `SMITHERS_BACKEND=pglite|postgres` and `--backend pglite|postgres` exit with `unsupported_database`, and the 0.x `smithers migrate --to` database move is removed. Projects that ran 0.x on PGlite or PostgreSQL must finish or discard their runs on 0.x; there is no import path.
|
|
141
|
+
|
|
142
|
+
### Added
|
|
143
|
+
|
|
144
|
+
- Added persisted plan scheduling and reconciliation, workspace and step
|
|
145
|
+
sandboxes, selection and training, local/remote artifact and cache sync,
|
|
146
|
+
metrics, in-process wakes, bounded retention, run-catalog reads, artifact
|
|
147
|
+
garbage collection, and hot backup/verify/restore/fence operations.
|
|
148
|
+
- Added cross-process artifact backup leases and frozen-root verification so a
|
|
149
|
+
backup cannot race artifact sweep or publish an incomplete manifest.
|
|
150
|
+
|
|
151
|
+
### Changed
|
|
152
|
+
|
|
153
|
+
- Required an owner-liveness probe when constructing the durable engine.
|
|
154
|
+
- `DurableEngineState` now requires Effect's `SqlClient` service plus
|
|
155
|
+
`DurableWriter` (the renamed `Database` service).
|
|
156
|
+
- Made durable state, journal records, plan mutations, and multi-row selection
|
|
157
|
+
updates transactional, with strict numeric bounds and host-independent
|
|
158
|
+
UTF-16 ordering.
|
|
159
|
+
- Snapshot caller-owned descriptors and bytes before asynchronous work, and
|
|
160
|
+
bind checkpoint operations to the configured repository workspace.
|
|
161
|
+
- Derived workspace-revision and bundle-identity strings from domain-tagged
|
|
162
|
+
canonical JSON. Their persisted values now change.
|
|
163
|
+
- Removed the internal `@slop` review markers from every published JSDoc block.
|
|
164
|
+
They shipped in `src/**/*.ts` and the generated declarations, so a consumer's
|
|
165
|
+
editor hover showed a repository to-do instead of the contract.
|
|
166
|
+
- Repointed every JSDoc design reference, every reference in the package's own
|
|
167
|
+
`docs/` prose, and the remaining references in test headers at their published
|
|
168
|
+
`docs/pages` successors. The imported `docs/specs` tree and the
|
|
169
|
+
`.smithers/tickets` notes do not exist in this repository, so each pointer
|
|
170
|
+
named a file no reader could open.
|
|
171
|
+
- Renamed the durable `flows.engine.cache-conflict` payload field `key` to
|
|
172
|
+
`cacheKey`. `@smthrs/journal` reads a field named `key` as a credential and
|
|
173
|
+
replaces its value with `[REDACTED]`, which erased the very content address
|
|
174
|
+
the conflict record exists to preserve.
|
|
175
|
+
- Renamed the dispatch observability field `key` to `stepKey` on every log
|
|
176
|
+
annotation and span attribute this package writes. The same journal rule that
|
|
177
|
+
redacts a durable `key` also redacts a log annotation named `key`, and
|
|
178
|
+
`RedactedLogger` is installed by `@smthrs/flows`' `NodeRuntime` and by the
|
|
179
|
+
`smithers` binary, so every dispatch line an operator read said
|
|
180
|
+
`key=[REDACTED]` and no longer named which step it described. Span attributes
|
|
181
|
+
take the new name too, so a trace and a log line agree.
|
|
182
|
+
- Validated `DisasterRecovery` `maxFileSizeBytes` at option admission. A
|
|
183
|
+
fractional, NaN, infinite, negative, or unsafe value now fails with the new
|
|
184
|
+
`invalid_options` code instead of dying inside `BigInt`.
|
|
185
|
+
|
|
186
|
+
### Fixed
|
|
187
|
+
|
|
188
|
+
- Prevented torn scheduler/journal settlements, retention partial deletes,
|
|
189
|
+
mutable boundary evidence, forged materialization conflicts, ambiguous
|
|
190
|
+
deviation identities, and failure-Exit corruption after in-memory restart.
|
|
191
|
+
- Made artifact GC and disaster recovery fail closed on corrupt durable roots,
|
|
192
|
+
and made the local CAS coordinate writers and sweepers across processes.
|
|
193
|
+
- Required explicit whole-tree write verification before admitting a sealed
|
|
194
|
+
result to the cross-run cache.
|
|
195
|
+
- Quarantined corrupt boundary evidence off succeeded attempt rows after
|
|
196
|
+
journalling the inconsistency, so a later resume returns the durable outcome
|
|
197
|
+
without re-executing the action
|
|
198
|
+
([#171](https://github.com/smithersai/flows/issues/171)).
|
|
199
|
+
- Included recorded-row provenance in corruption journal identities so an
|
|
200
|
+
identically re-corrupted row records a new incident after healing
|
|
201
|
+
([#172](https://github.com/smithersai/flows/issues/172)).
|
|
202
|
+
- Reduced a live failure value to inert JSON before it reaches the attempt row,
|
|
203
|
+
so a boundary refusal, a sandbox refusal, or any `Data.TaggedError` settles
|
|
204
|
+
the attempt instead of being refused by the store as a non-plain object. A
|
|
205
|
+
value JSON cannot express at all now records as `null` rather than as a
|
|
206
|
+
dropped key the replay decoder could not read. The reduction reads own data
|
|
207
|
+
properties only, so persisting a failure no longer runs the failing value's
|
|
208
|
+
getters, `toJSON`, or proxy traps, and it is bounded by the depth, node, and
|
|
209
|
+
character allowances the attempt store admits, so an outsized failure records
|
|
210
|
+
as `null` instead of being refused and leaving the row `running`.
|
|
211
|
+
- Enumerated a declared tree artifact in full. `.git`, `.jj`, and `node_modules`
|
|
212
|
+
are pruned from glob expansion only; pruning them from `filesUnder` and
|
|
213
|
+
`entriesUnder` left files out of a tree's captured identity and left stale
|
|
214
|
+
copies of them behind on replay.
|
|
215
|
+
- Derived glob-pruning exemptions from every full include that shares a walk
|
|
216
|
+
prefix. An ignored-directory segment after a wildcard now remains in a
|
|
217
|
+
declared read set instead of disappearing from boundary measurement, while a
|
|
218
|
+
root glob still skips undeclared repository metadata and dependency trees.
|
|
219
|
+
- Charged the persisted cause envelope and interrupt reasons against one node
|
|
220
|
+
budget, with a replayable one-reason fallback when it is exhausted. A large
|
|
221
|
+
interrupted fan-out can no longer make `AttemptStore.finish` reject the
|
|
222
|
+
terminal update and leave the attempt `running`.
|
|
223
|
+
- Reduced array-buffer views to a bounded marker before own-key enumeration and
|
|
224
|
+
charged every other enumerated key against a shared walk allowance. A large
|
|
225
|
+
typed-array defect can no longer materialize one property name per byte on
|
|
226
|
+
the terminal failure path.
|
|
227
|
+
- Measured the encoded backup manifest against `maxFileSizeBytes` before its
|
|
228
|
+
final write. Backup can no longer report success for a manifest that verify
|
|
229
|
+
and restore reject under the same file-size option.
|
|
230
|
+
- Dropped quarantined boundary evidence by omitting the key rather than writing
|
|
231
|
+
`undefined` over it, which the attempt store refuses.
|
|
232
|
+
|
|
233
|
+
## [0.1.0] - 2026-08-05
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
|
|
237
|
+
- Removed composition-time throws and structural boundary sniffing by using
|
|
238
|
+
Deferred service wiring and Schema-backed boundary descriptors.
|
|
239
|
+
- Supervised ownership heartbeats through structured interruption races.
|
|
240
|
+
|
|
241
|
+
### Added
|
|
242
|
+
|
|
243
|
+
- Added the journal-backed engine composition, claim-gated run
|
|
244
|
+
driver, durable deferred and absolute-clock state, action persistence
|
|
245
|
+
wiring, and deterministic test layers.
|
|
246
|
+
- Added SQL-backed deferred completions and clock deadlines with owner-fenced
|
|
247
|
+
scheduling, first-writer completion, and restart recovery.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 William Cory and the Smithers Flows contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,147 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @smthrs/engine-store
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Release candidate scope, host requirements and compatibility review are defined in the [library support policy](https://github.com/smithersai/smithers/blob/main/RELEASE_SUPPORT.md).
|
|
4
|
+
|
|
5
|
+
This package declares `effect` as an exact
|
|
6
|
+
`4.0.0-rc.115` peer dependency. Keep the application on that version so
|
|
7
|
+
all Smithers packages share one Effect runtime.
|
|
8
|
+
|
|
9
|
+
**Documentation:** https://engine-store.smithers.sh
|
|
10
|
+
|
|
11
|
+
The durable half of the Smithers flow engine. It persists every step a flow
|
|
12
|
+
takes to a SQLite database, so a flow that crashes, is killed, or waits for a
|
|
13
|
+
week resumes where it stopped instead of starting over.
|
|
14
|
+
|
|
15
|
+
It is an [Effect](https://effect.website) library: every surface it exports is
|
|
16
|
+
a `Layer` you compose or an `Effect` you run.
|
|
17
|
+
|
|
18
|
+
## Install
|
|
19
|
+
|
|
20
|
+
Not on npm yet; see [Installation](https://github.com/smithersai/smithers/blob/main/packages/smithers/flows/flow/docs/installation.md#use-the-libraries).
|
|
21
|
+
|
|
22
|
+
Node.js 26.4.0 or later. The package ships as both ESM and CommonJS with
|
|
23
|
+
TypeScript declarations.
|
|
24
|
+
|
|
25
|
+
## Testing
|
|
26
|
+
|
|
27
|
+
`smthrs test '//packages/smithers/flows/engine-store:test'` runs the existing
|
|
28
|
+
suite on SQLite and real PostgreSQL. By default the matrix starts and cleans
|
|
29
|
+
up its own disposable PostgreSQL server. To use an existing server, supply
|
|
30
|
+
`SMITHERS_TEST_PG_URL` before invoking the command; the target declares that
|
|
31
|
+
connection in its environment and execution key.
|
|
32
|
+
|
|
33
|
+
The canonical override accepts a credential-free `postgres:` or `postgresql:`
|
|
34
|
+
URL with optional `sslmode` and positive, at most two-digit `connect_timeout`.
|
|
35
|
+
Declared configuration is visible in plans, so passwords, credential files,
|
|
36
|
+
service configuration and other query options are refused without echoing the
|
|
37
|
+
URL. An unavailable configured server fails the PostgreSQL leg. The direct
|
|
38
|
+
matrix script retains its existing password support and disposable-server path.
|
|
39
|
+
|
|
40
|
+
## The shortest real use
|
|
41
|
+
|
|
42
|
+
`EngineStore.layer` is the composition. It provides `FlowRuntime`, the service
|
|
43
|
+
that executes a flow durably, and the snapshot boundary the engine measures
|
|
44
|
+
each step against:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { EngineStore } from "@smthrs/engine-store"
|
|
48
|
+
import { FlowRuntime } from "@smthrs/flow"
|
|
49
|
+
import { Effect } from "effect"
|
|
50
|
+
|
|
51
|
+
const engineLayer = EngineStore.layer({
|
|
52
|
+
owner: { hostId: "worker-a" },
|
|
53
|
+
journalSource: "engine-store"
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const program = Effect.gen(function*() {
|
|
57
|
+
return yield* FlowRuntime.FlowRuntime
|
|
58
|
+
}).pipe(Effect.provide(engineLayer))
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`engineLayer` still needs the storage it composes: `DurableWriter`, `Journal`, `RunStore`,
|
|
62
|
+
`AttemptStore`, `CacheStore`, `DurableEngineState`, `StepBoundary`, `Jj`,
|
|
63
|
+
`OwnerIdentity`, Effect's `Crypto`, and a `Scope`. Supply the same `DurableWriter`
|
|
64
|
+
used by the journal and run store. A missing service is an unmet
|
|
65
|
+
requirement in the layer's type, so a bad composition fails to compile rather
|
|
66
|
+
than at run time. Run the schema migrations before any SQL-backed service reads
|
|
67
|
+
the database, and provide `OwnerIdentity.layer` unless the host mints its own
|
|
68
|
+
owner tokens.
|
|
69
|
+
|
|
70
|
+
[The quickstart](https://engine-store.smithers.sh/quickstart/) wires all of it
|
|
71
|
+
over one SQLite file and watches a sealed step replay after a restart.
|
|
72
|
+
|
|
73
|
+
If you want the wiring rather than control over it, reach for
|
|
74
|
+
[`@smthrs/flows`](https://flows.smithers.sh) instead. It ships `NodeRuntime`,
|
|
75
|
+
which composes this package with the flow language, the journal, the run and
|
|
76
|
+
cache stores, and the artifact tier over one file.
|
|
77
|
+
|
|
78
|
+
## What it gives you
|
|
79
|
+
|
|
80
|
+
- **Durable attempts.** A step opens a row before its body runs and settles it
|
|
81
|
+
afterwards, so a restart replays the recorded result instead of executing the
|
|
82
|
+
body a second time.
|
|
83
|
+
- **One owner per run.** Every durable write is fenced against the owner that
|
|
84
|
+
claimed the run, so two processes over one database cannot both drive it. A
|
|
85
|
+
dead owner's runs are reclaimed under a liveness check you choose.
|
|
86
|
+
- **Waits that outlive the process.** A parked run holds a durable deferred or
|
|
87
|
+
clock row, so a timer set by a process that has since died still fires.
|
|
88
|
+
- **Declared file boundaries.** The engine measures the tree a step actually
|
|
89
|
+
touched against what it declared, refuses a step that wrote outside it, and
|
|
90
|
+
admits only whole-tree evidence into the cache other runs read.
|
|
91
|
+
- **Explicit deletion.** Old run history and unreferenced artifacts go away
|
|
92
|
+
when you run a retention or garbage-collection pass, never on a schedule you
|
|
93
|
+
did not set.
|
|
94
|
+
|
|
95
|
+
Every durable write is one transaction. A lifecycle event is written inside the
|
|
96
|
+
same transaction that carries the state transition it describes: the attempt
|
|
97
|
+
row with its start and finish records, the run-row compare-and-set with its
|
|
98
|
+
decision, the deferred or clock row with its record, the cache entry with its
|
|
99
|
+
provenance. Either both halves are durable or neither is, so audit, sync, and
|
|
100
|
+
time travel never read a hole. No local transaction makes a remote effect
|
|
101
|
+
atomic, so external effects still need idempotency keys, fencing, or
|
|
102
|
+
compensation.
|
|
103
|
+
|
|
104
|
+
Closing an engine's Effect scope releases its run ownership across the full
|
|
105
|
+
claim, execution, and settlement lifetime. An interrupted partial claim is
|
|
106
|
+
abandoned; an activated run returns to `suspended`, preserving any declared
|
|
107
|
+
approval, timer, or event wait. This lets a replacement engine in the same
|
|
108
|
+
process resume with a new owner nonce without weakening the PID liveness
|
|
109
|
+
check. Only a persisted operator cancellation closes the run as `cancelled`.
|
|
110
|
+
|
|
111
|
+
## Browser imports and native durable execution
|
|
112
|
+
|
|
113
|
+
The entry point bundles for a browser. The two host reads it once made
|
|
114
|
+
directly, `process.pid` and `randomUUID` from `node:crypto`, enter through the
|
|
115
|
+
injectable `OwnerIdentity` service, and the SQL contracts it imports are
|
|
116
|
+
driver-neutral.
|
|
117
|
+
|
|
118
|
+
Bundling is not running. The durable backing is SQLite or PostgreSQL, composed by the
|
|
119
|
+
aggregate [`@smthrs/flows` runtime](../README.md) with native Node.js or Bun
|
|
120
|
+
host adapters and the selected SQL client over these driver-neutral stores. A browser or edge deployment
|
|
121
|
+
can import the types and browser-safe in-memory helpers, but cannot execute
|
|
122
|
+
durable flows; supplying an alternative browser SQL client is not a supported
|
|
123
|
+
runtime.
|
|
124
|
+
|
|
125
|
+
## Documentation
|
|
126
|
+
|
|
127
|
+
The full documentation is at <https://engine-store.smithers.sh>:
|
|
128
|
+
|
|
129
|
+
- [Installation](https://engine-store.smithers.sh/installation/): runtime
|
|
130
|
+
requirements, import forms, and the storage packages a runnable composition
|
|
131
|
+
adds.
|
|
132
|
+
- [Quickstart](https://engine-store.smithers.sh/quickstart/): compose a durable
|
|
133
|
+
engine over SQLite and watch a step replay after a restart.
|
|
134
|
+
- [Compose a durable engine](https://engine-store.smithers.sh/guides/compose-a-durable-engine/):
|
|
135
|
+
the required and optional services, and what each one changes.
|
|
136
|
+
- [API reference](https://engine-store.smithers.sh/reference/api/): every public
|
|
137
|
+
export, with signatures and error codes.
|
|
138
|
+
- [Observe executions and page runs](https://engine-store.smithers.sh/guides/observe-executions/):
|
|
139
|
+
coherent snapshots, filtered keyset pages, durable children and revisioned catch-up.
|
|
140
|
+
- [Troubleshooting](https://engine-store.smithers.sh/troubleshooting/): each
|
|
141
|
+
typed failure, its cause, and its fix.
|
|
142
|
+
|
|
143
|
+
See also [durable execution](https://smithers.sh/docs/concepts/durable-execution/)
|
|
144
|
+
and [content addressing](https://smithers.sh/docs/concepts/content-addressing/)
|
|
145
|
+
on smithers.sh.
|
|
146
|
+
|
|
147
|
+
List reads of durable wait state skip corrupt rows and log storage-integrity warnings; point reads still fail for an invalid row.
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mark/sweep garbage collection for the content-addressed artifact store.
|
|
3
|
+
*
|
|
4
|
+
* The artifact tier is the one store in the composition with true *garbage*:
|
|
5
|
+
* every output over the inline bound is spilled to `.flows/objects` by digest
|
|
6
|
+
* (`StepBoundary`), nothing ever deletes a published blob, and a blob whose
|
|
7
|
+
* every referencing row is gone is unreachable forever. The step cache is
|
|
8
|
+
* deliberately NOT collected here — its rows are the *roots* of this graph,
|
|
9
|
+
* they never become unreachable, and removing one is the policy decision
|
|
10
|
+
* `CacheStore.evict` already serves.
|
|
11
|
+
*
|
|
12
|
+
* The design combines the two prior arts on the shelf:
|
|
13
|
+
*
|
|
14
|
+
* - **Reachability from durable roots** — git's `git gc` marks from refs;
|
|
15
|
+
* Skyframe deletes what a keyed graph walk cannot reach. Here the roots are
|
|
16
|
+
* every attempt row of every existing (never-deleted) run and every step
|
|
17
|
+
* cache entry; each carries boundary evidence, and
|
|
18
|
+
* `StepBoundary.referencedDigests` names the blobs that evidence needs.
|
|
19
|
+
* Attempt checkpoints are roots too: they are opaque executable state, so
|
|
20
|
+
* the mark keeps digest-shaped strings found in their JSON.
|
|
21
|
+
* - **A grace period over mtime** — git refuses to prune unreachable objects
|
|
22
|
+
* younger than `gc.pruneExpire` (two weeks), jj keeps operations newer than
|
|
23
|
+
* its keep bound, and Bazel's disk-cache collector
|
|
24
|
+
* (`reference/bazel/.../remote/disk/DiskCacheGarbageCollector.java`) fences
|
|
25
|
+
* on mtime. The cutoff is the collection start time minus the grace period,
|
|
26
|
+
* sampled before resolving policy pins or scanning roots and held fixed
|
|
27
|
+
* through inventory and deletion. Only mtimes strictly before it are
|
|
28
|
+
* eligible: a blob published — or freshened by a dedupe `put` — at or after
|
|
29
|
+
* collection start survives, including same-millisecond writes at zero
|
|
30
|
+
* grace, no lock required.
|
|
31
|
+
*
|
|
32
|
+
* Collection NEVER runs automatically. `gc()` is an explicit verb because
|
|
33
|
+
* deletion is irreversible, and a human approving a plan must approve the
|
|
34
|
+
* deletions too. The opt-in {@link ArtifactGcPolicy} layer
|
|
35
|
+
* configures *how* an invocation collects (grace bound, pinned digests); it
|
|
36
|
+
* does not schedule anything.
|
|
37
|
+
*
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
import * as ArtifactSweep from "@smthrs/artifacts/ArtifactSweep";
|
|
41
|
+
import * as Context from "effect/Context";
|
|
42
|
+
import * as Effect from "effect/Effect";
|
|
43
|
+
import type * as FileSystem from "effect/FileSystem";
|
|
44
|
+
import * as Layer from "effect/Layer";
|
|
45
|
+
import * as Schema from "effect/Schema";
|
|
46
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
47
|
+
/**
|
|
48
|
+
* Stable error codes returned by artifact garbage collection.
|
|
49
|
+
*
|
|
50
|
+
* @category models
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
*/
|
|
53
|
+
export declare const ArtifactGcErrorCode: Schema.Literals<readonly ["invalid_options", "mark_failed", "sweep_failed"]>;
|
|
54
|
+
/**
|
|
55
|
+
* Stable error codes returned by artifact garbage collection.
|
|
56
|
+
*
|
|
57
|
+
* @category models
|
|
58
|
+
* @since 0.1.0
|
|
59
|
+
*/
|
|
60
|
+
export type ArtifactGcErrorCode = typeof ArtifactGcErrorCode.Type;
|
|
61
|
+
declare const ArtifactGcError_base: Schema.Class<ArtifactGcError, Schema.TaggedStruct<"@smthrs/engine-store/ArtifactGcError", {
|
|
62
|
+
readonly code: Schema.Literals<readonly ["invalid_options", "mark_failed", "sweep_failed"]>;
|
|
63
|
+
readonly message: Schema.String;
|
|
64
|
+
readonly cause: Schema.optional<Schema.Unknown>;
|
|
65
|
+
}>, import("effect/Cause").YieldableError>;
|
|
66
|
+
/**
|
|
67
|
+
* A collection that could not complete. `mark_failed` means the live set
|
|
68
|
+
* could not be computed — nothing was deleted. `sweep_failed` means the live
|
|
69
|
+
* set held but a deletion refused; everything already swept was garbage, so a
|
|
70
|
+
* re-run converges from wherever the failure stopped it.
|
|
71
|
+
*
|
|
72
|
+
* @category errors
|
|
73
|
+
* @since 0.1.0
|
|
74
|
+
*/
|
|
75
|
+
export declare class ArtifactGcError extends ArtifactGcError_base {
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The opt-in collection policy. Explicit {@link GcOptions} on a `gc()` call
|
|
79
|
+
* override the installed policy; the policy overrides the defaults.
|
|
80
|
+
*
|
|
81
|
+
* @category models
|
|
82
|
+
* @since 0.1.0
|
|
83
|
+
*/
|
|
84
|
+
export interface Policy {
|
|
85
|
+
/** Grace bound applied when a `gc()` call does not name one. */
|
|
86
|
+
readonly graceMs?: number | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Digests held live regardless of reachability — the seam for references
|
|
89
|
+
* this composition's tables cannot see (an external index, an export a
|
|
90
|
+
* human wants kept). Resolved fresh on every collection.
|
|
91
|
+
*/
|
|
92
|
+
readonly pins?: Effect.Effect<ReadonlyArray<string>> | undefined;
|
|
93
|
+
}
|
|
94
|
+
declare const ArtifactGcPolicy_base: Context.ServiceClass<ArtifactGcPolicy, "@smthrs/engine-store/ArtifactGcPolicy", Policy>;
|
|
95
|
+
/**
|
|
96
|
+
* Service tag for the opt-in collection policy.
|
|
97
|
+
*
|
|
98
|
+
* @category services
|
|
99
|
+
* @since 0.1.0
|
|
100
|
+
*/
|
|
101
|
+
export declare class ArtifactGcPolicy extends ArtifactGcPolicy_base {
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Installs a collection policy.
|
|
105
|
+
*
|
|
106
|
+
* @category layers
|
|
107
|
+
* @since 0.1.0
|
|
108
|
+
*/
|
|
109
|
+
export declare const layerPolicy: (policy: Policy) => Layer.Layer<ArtifactGcPolicy>;
|
|
110
|
+
/**
|
|
111
|
+
* Options for one explicit collection.
|
|
112
|
+
*
|
|
113
|
+
* @category models
|
|
114
|
+
* @since 0.1.0
|
|
115
|
+
*/
|
|
116
|
+
export interface GcOptions {
|
|
117
|
+
/**
|
|
118
|
+
* How recently a blob must have been written or freshened to survive
|
|
119
|
+
* unreferenced. Defaults to the installed {@link ArtifactGcPolicy}'s bound,
|
|
120
|
+
* then to {@link defaultGraceMs}.
|
|
121
|
+
*/
|
|
122
|
+
readonly graceMs?: number | undefined;
|
|
123
|
+
/** Digests held live for this collection, unioned with the policy's pins. */
|
|
124
|
+
readonly pins?: ReadonlyArray<string> | undefined;
|
|
125
|
+
/** Compute and report without deleting anything. */
|
|
126
|
+
readonly dryRun?: boolean | undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* What one collection did.
|
|
130
|
+
*
|
|
131
|
+
* @category models
|
|
132
|
+
* @since 0.1.0
|
|
133
|
+
*/
|
|
134
|
+
export interface GcReport {
|
|
135
|
+
/** Blobs the inventory enumerated. */
|
|
136
|
+
readonly scannedBlobs: number;
|
|
137
|
+
/** Distinct digests the mark phase proved live, pins included. */
|
|
138
|
+
readonly liveDigests: number;
|
|
139
|
+
/** Digests deleted — or, under `dryRun`, the ones a real run would delete. */
|
|
140
|
+
readonly sweptDigests: ReadonlyArray<string>;
|
|
141
|
+
/** Bytes the swept blobs held. */
|
|
142
|
+
readonly reclaimedBytes: number;
|
|
143
|
+
/** Unreferenced blobs retained by the grace bound or a freshen race. */
|
|
144
|
+
readonly keptByGrace: number;
|
|
145
|
+
readonly dryRun: boolean;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Explicit artifact garbage collection.
|
|
149
|
+
*
|
|
150
|
+
* @category models
|
|
151
|
+
* @since 0.1.0
|
|
152
|
+
*/
|
|
153
|
+
export interface Service {
|
|
154
|
+
/**
|
|
155
|
+
* Marks the live set from the durable roots, then sweeps every blob that
|
|
156
|
+
* is both outside it and older than the grace bound. Explicit only —
|
|
157
|
+
* nothing in the engine composition ever calls this.
|
|
158
|
+
*/
|
|
159
|
+
readonly gc: (options?: GcOptions) => Effect.Effect<GcReport, ArtifactGcError>;
|
|
160
|
+
}
|
|
161
|
+
declare const ArtifactGc_base: Context.ServiceClass<ArtifactGc, "@smthrs/engine-store/ArtifactGc", Service>;
|
|
162
|
+
/**
|
|
163
|
+
* Service tag for artifact garbage collection.
|
|
164
|
+
*
|
|
165
|
+
* @category services
|
|
166
|
+
* @since 0.1.0
|
|
167
|
+
*/
|
|
168
|
+
export declare class ArtifactGc extends ArtifactGc_base {
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Two weeks, git's `gc.pruneExpire` default. The bound is deliberately far
|
|
172
|
+
* beyond any live attempt's duration: a blob spilled by a running step is
|
|
173
|
+
* unreferenced until its attempt row finishes, and the grace period is the
|
|
174
|
+
* only thing protecting it in that window.
|
|
175
|
+
*
|
|
176
|
+
* @category constants
|
|
177
|
+
* @since 0.1.0
|
|
178
|
+
*/
|
|
179
|
+
export declare const defaultGraceMs: number;
|
|
180
|
+
/**
|
|
181
|
+
* Construction options.
|
|
182
|
+
*
|
|
183
|
+
* @category models
|
|
184
|
+
* @since 0.1.0
|
|
185
|
+
*/
|
|
186
|
+
export interface MakeOptions {
|
|
187
|
+
/** Rows per mark-phase page. Defaults to 500. */
|
|
188
|
+
readonly pageSize?: number | undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Builds the collector over the composition's own durable tables and the
|
|
192
|
+
* host-local sweep surface.
|
|
193
|
+
*
|
|
194
|
+
* The mark phase reads `flows_step_cache` and `flows_attempts` directly, the
|
|
195
|
+
* same way `DurableEngineState` range-scans `flows_runs`: this package
|
|
196
|
+
* composes every one of those migrations, so the schema is its own. Every run
|
|
197
|
+
* present in `flows_runs` is a live root — there is no deleted state, and the
|
|
198
|
+
* attempt table's foreign key guarantees each attempt's run exists — so the
|
|
199
|
+
* scan is simply *all* attempt rows plus *all* cache entries, paged by
|
|
200
|
+
* primary key so no page holds more than `pageSize` rows in memory.
|
|
201
|
+
*
|
|
202
|
+
* Ordering is the safety argument. The live set is computed BEFORE the
|
|
203
|
+
* inventory, so a root recorded during the sweep can only be missed, never
|
|
204
|
+
* half-seen — and the blob such a root references is protected anyway: a
|
|
205
|
+
* fresh publication carries a fresh mtime, a re-publication of existing bytes
|
|
206
|
+
* freshens the blob's mtime (`ArtifactStore.put`), and the sweep's deletion
|
|
207
|
+
* is fenced on that mtime (`ArtifactSweep.remove`'s `ifUnmodifiedSinceMs`).
|
|
208
|
+
* A crash mid-sweep deletes some garbage and no live blobs; re-running
|
|
209
|
+
* converges.
|
|
210
|
+
*
|
|
211
|
+
* @category constructors
|
|
212
|
+
* @since 0.1.0
|
|
213
|
+
*/
|
|
214
|
+
export declare const make: (options?: MakeOptions) => Effect.Effect<Service, never, SqlClient.SqlClient | ArtifactSweep.ArtifactSweep>;
|
|
215
|
+
/**
|
|
216
|
+
* Provides the artifact garbage collector. Install {@link layerPolicy} into
|
|
217
|
+
* this layer's inputs to configure collection; nothing schedules `gc()` —
|
|
218
|
+
* invoking it stays an explicit caller decision.
|
|
219
|
+
*
|
|
220
|
+
* @category layers
|
|
221
|
+
* @since 0.1.0
|
|
222
|
+
*/
|
|
223
|
+
export declare const layer: (options?: MakeOptions) => Layer.Layer<ArtifactGc, never, SqlClient.SqlClient | ArtifactSweep.ArtifactSweep>;
|
|
224
|
+
/**
|
|
225
|
+
* Provides the artifact garbage collector over a filesystem objects directory:
|
|
226
|
+
* {@link layer} with `ArtifactSweep.layerFileSystem` beneath it. Pass the same
|
|
227
|
+
* `directory` and `coordination` the paired `ArtifactStore.layerFileSystem`
|
|
228
|
+
* publishes with.
|
|
229
|
+
*
|
|
230
|
+
* @category layers
|
|
231
|
+
* @since 1.0.0
|
|
232
|
+
*/
|
|
233
|
+
export declare const layerFileSystem: (options?: MakeOptions & ArtifactSweep.SweepOptions) => Layer.Layer<ArtifactGc, never, SqlClient.SqlClient | FileSystem.FileSystem>;
|
|
234
|
+
export {};
|
|
235
|
+
//# sourceMappingURL=ArtifactGc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactGc.d.ts","sourceRoot":"","sources":["../../src/ArtifactGc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAG1D;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,8EAAsE,CAAA;AAEtG;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;;;;;;AAEjE;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,oBAOpC;CAAG;AAEJ;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;CACjE;;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,qBAErC;CAAG;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAA4C,CAAA;AAErH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACjD,oDAAoD;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,sCAAsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,kCAAkC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;CAC/E;;AAED;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,eAAyE;CAAG;AAE5G;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,QAA2B,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AA4BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,GACf,UAAS,WAAgB,KACxB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC,aAAa,CAyH9E,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAChB,UAAS,WAAgB,KACxB,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC,aAAa,CAC1C,CAAA;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAS,WAAW,GAAG,aAAa,CAAC,YAAiB,KACrD,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,UAAU,CAG1E,CAAA"}
|