@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +247 -0
- package/LICENSE +21 -0
- package/README.md +146 -2
- package/dist/cjs/ArtifactGc.d.ts +235 -0
- package/dist/cjs/ArtifactGc.d.ts.map +1 -0
- package/dist/cjs/ArtifactGc.js +183 -0
- package/dist/cjs/ArtifactGc.js.map +7 -0
- package/dist/cjs/ArtifactSync.d.ts +164 -0
- package/dist/cjs/ArtifactSync.d.ts.map +1 -0
- package/dist/cjs/ArtifactSync.js +144 -0
- package/dist/cjs/ArtifactSync.js.map +7 -0
- package/dist/cjs/CacheSync.d.ts +112 -0
- package/dist/cjs/CacheSync.d.ts.map +1 -0
- package/dist/cjs/CacheSync.js +64 -0
- package/dist/cjs/CacheSync.js.map +7 -0
- package/dist/cjs/DeferredClockFold.d.ts +354 -0
- package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
- package/dist/cjs/DeferredClockFold.js +335 -0
- package/dist/cjs/DeferredClockFold.js.map +7 -0
- package/dist/cjs/DisasterRecovery.d.ts +431 -0
- package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
- package/dist/cjs/DisasterRecovery.js +453 -0
- package/dist/cjs/DisasterRecovery.js.map +7 -0
- package/dist/cjs/DurableEngineState.d.ts +776 -0
- package/dist/cjs/DurableEngineState.d.ts.map +1 -0
- package/dist/cjs/DurableEngineState.js +1536 -0
- package/dist/cjs/DurableEngineState.js.map +7 -0
- package/dist/cjs/EngineStore.d.ts +158 -0
- package/dist/cjs/EngineStore.d.ts.map +1 -0
- package/dist/cjs/EngineStore.js +398 -0
- package/dist/cjs/EngineStore.js.map +7 -0
- package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
- package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/cjs/EngineStoreMetrics.js +135 -0
- package/dist/cjs/EngineStoreMetrics.js.map +7 -0
- package/dist/cjs/Errors.d.ts +22 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +39 -0
- package/dist/cjs/Errors.js.map +7 -0
- package/dist/cjs/EventTypes.d.ts +27 -0
- package/dist/cjs/EventTypes.d.ts.map +1 -0
- package/dist/cjs/EventTypes.js +37 -0
- package/dist/cjs/EventTypes.js.map +7 -0
- package/dist/cjs/ExecutionFacts.d.ts +59 -0
- package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
- package/dist/cjs/ExecutionFacts.js +123 -0
- package/dist/cjs/ExecutionFacts.js.map +7 -0
- package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
- package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/cjs/ExecutionSnapshot.js +111 -0
- package/dist/cjs/ExecutionSnapshot.js.map +7 -0
- package/dist/cjs/Inconsistency.d.ts +154 -0
- package/dist/cjs/Inconsistency.d.ts.map +1 -0
- package/dist/cjs/Inconsistency.js +135 -0
- package/dist/cjs/Inconsistency.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +56 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +78 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/OwnerIdentity.d.ts +91 -0
- package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
- package/dist/cjs/OwnerIdentity.js +65 -0
- package/dist/cjs/OwnerIdentity.js.map +7 -0
- package/dist/cjs/PlanInputStore.d.ts +110 -0
- package/dist/cjs/PlanInputStore.d.ts.map +1 -0
- package/dist/cjs/PlanInputStore.js +224 -0
- package/dist/cjs/PlanInputStore.js.map +7 -0
- package/dist/cjs/PlanMergeStore.d.ts +113 -0
- package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
- package/dist/cjs/PlanMergeStore.js +255 -0
- package/dist/cjs/PlanMergeStore.js.map +7 -0
- package/dist/cjs/PlanScheduler.d.ts +363 -0
- package/dist/cjs/PlanScheduler.d.ts.map +1 -0
- package/dist/cjs/PlanScheduler.js +1090 -0
- package/dist/cjs/PlanScheduler.js.map +7 -0
- package/dist/cjs/Reconciliation.d.ts +175 -0
- package/dist/cjs/Reconciliation.d.ts.map +1 -0
- package/dist/cjs/Reconciliation.js +119 -0
- package/dist/cjs/Reconciliation.js.map +7 -0
- package/dist/cjs/ReplayOnly.d.ts +91 -0
- package/dist/cjs/ReplayOnly.d.ts.map +1 -0
- package/dist/cjs/ReplayOnly.js +52 -0
- package/dist/cjs/ReplayOnly.js.map +7 -0
- package/dist/cjs/Retention.d.ts +113 -0
- package/dist/cjs/Retention.d.ts.map +1 -0
- package/dist/cjs/Retention.js +99 -0
- package/dist/cjs/Retention.js.map +7 -0
- package/dist/cjs/RunCatalogRead.d.ts +17 -0
- package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
- package/dist/cjs/RunCatalogRead.js +33 -0
- package/dist/cjs/RunCatalogRead.js.map +7 -0
- package/dist/cjs/RunChangeFeed.d.ts +75 -0
- package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
- package/dist/cjs/RunChangeFeed.js +96 -0
- package/dist/cjs/RunChangeFeed.js.map +7 -0
- package/dist/cjs/RunState.d.ts +116 -0
- package/dist/cjs/RunState.d.ts.map +1 -0
- package/dist/cjs/RunState.js +76 -0
- package/dist/cjs/RunState.js.map +7 -0
- package/dist/cjs/Selection.d.ts +495 -0
- package/dist/cjs/Selection.d.ts.map +1 -0
- package/dist/cjs/Selection.js +288 -0
- package/dist/cjs/Selection.js.map +7 -0
- package/dist/cjs/SelectionStore.d.ts +141 -0
- package/dist/cjs/SelectionStore.d.ts.map +1 -0
- package/dist/cjs/SelectionStore.js +229 -0
- package/dist/cjs/SelectionStore.js.map +7 -0
- package/dist/cjs/StepBoundary.d.ts +501 -0
- package/dist/cjs/StepBoundary.d.ts.map +1 -0
- package/dist/cjs/StepBoundary.js +619 -0
- package/dist/cjs/StepBoundary.js.map +7 -0
- package/dist/cjs/StepCacheFold.d.ts +148 -0
- package/dist/cjs/StepCacheFold.d.ts.map +1 -0
- package/dist/cjs/StepCacheFold.js +131 -0
- package/dist/cjs/StepCacheFold.js.map +7 -0
- package/dist/cjs/StepSandbox.d.ts +78 -0
- package/dist/cjs/StepSandbox.d.ts.map +1 -0
- package/dist/cjs/StepSandbox.js +75 -0
- package/dist/cjs/StepSandbox.js.map +7 -0
- package/dist/cjs/WakeBus.d.ts +116 -0
- package/dist/cjs/WakeBus.d.ts.map +1 -0
- package/dist/cjs/WakeBus.js +89 -0
- package/dist/cjs/WakeBus.js.map +7 -0
- package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
- package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/cjs/WorkspaceSandbox.js +711 -0
- package/dist/cjs/WorkspaceSandbox.js.map +7 -0
- package/dist/cjs/index.d.ts +157 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
- package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/ActionPersistence.js +1395 -0
- package/dist/cjs/internal/ActionPersistence.js.map +7 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/cjs/internal/ArtifactRoots.js +89 -0
- package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptAdmission.js +52 -0
- package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptLifecycle.js +112 -0
- package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
- package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
- package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptProbe.js +66 -0
- package/dist/cjs/internal/AttemptProbe.js.map +7 -0
- package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
- package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAdmission.js +71 -0
- package/dist/cjs/internal/CacheAdmission.js.map +7 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeHistory.js +61 -0
- package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
- package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
- package/dist/cjs/internal/CachePublication.d.ts +97 -0
- package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
- package/dist/cjs/internal/CachePublication.js +80 -0
- package/dist/cjs/internal/CachePublication.js.map +7 -0
- package/dist/cjs/internal/CallFacts.d.ts +15 -0
- package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
- package/dist/cjs/internal/CallFacts.js +97 -0
- package/dist/cjs/internal/CallFacts.js.map +7 -0
- package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
- package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/cjs/internal/CopiedRecord.js +134 -0
- package/dist/cjs/internal/CopiedRecord.js.map +7 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/DeferredPersistence.js +270 -0
- package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
- package/dist/cjs/internal/EffectRecords.d.ts +92 -0
- package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
- package/dist/cjs/internal/EffectRecords.js +63 -0
- package/dist/cjs/internal/EffectRecords.js.map +7 -0
- package/dist/cjs/internal/EngineJj.d.ts +30 -0
- package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
- package/dist/cjs/internal/EngineJj.js +42 -0
- package/dist/cjs/internal/EngineJj.js.map +7 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/cjs/internal/EngineStateSchema.js +58 -0
- package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js +201 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
- package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
- package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/cjs/internal/ExitEncoding.js +236 -0
- package/dist/cjs/internal/ExitEncoding.js.map +7 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
- package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
- package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/cjs/internal/FileEnumeration.js +194 -0
- package/dist/cjs/internal/FileEnumeration.js.map +7 -0
- package/dist/cjs/internal/HostReflection.d.ts +80 -0
- package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
- package/dist/cjs/internal/HostReflection.js +43 -0
- package/dist/cjs/internal/HostReflection.js.map +7 -0
- package/dist/cjs/internal/JournalRecords.d.ts +325 -0
- package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
- package/dist/cjs/internal/JournalRecords.js +122 -0
- package/dist/cjs/internal/JournalRecords.js.map +7 -0
- package/dist/cjs/internal/NodeJournal.d.ts +157 -0
- package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
- package/dist/cjs/internal/NodeJournal.js +192 -0
- package/dist/cjs/internal/NodeJournal.js.map +7 -0
- package/dist/cjs/internal/Ordering.d.ts +14 -0
- package/dist/cjs/internal/Ordering.d.ts.map +1 -0
- package/dist/cjs/internal/Ordering.js +25 -0
- package/dist/cjs/internal/Ordering.js.map +7 -0
- package/dist/cjs/internal/PlanInputs.d.ts +14 -0
- package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
- package/dist/cjs/internal/PlanInputs.js +78 -0
- package/dist/cjs/internal/PlanInputs.js.map +7 -0
- package/dist/cjs/internal/PlanMerges.d.ts +178 -0
- package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
- package/dist/cjs/internal/PlanMerges.js +125 -0
- package/dist/cjs/internal/PlanMerges.js.map +7 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/cjs/internal/ProvenanceSlot.js +53 -0
- package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/cjs/internal/ResultEnvelope.js +90 -0
- package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
- package/dist/cjs/internal/RetentionOps.d.ts +414 -0
- package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
- package/dist/cjs/internal/RetentionOps.js +354 -0
- package/dist/cjs/internal/RetentionOps.js.map +7 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/cjs/internal/RunCatalogOps.js +85 -0
- package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
- package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
- package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/cjs/internal/RunCoordinator.js +123 -0
- package/dist/cjs/internal/RunCoordinator.js.map +7 -0
- package/dist/cjs/internal/RunDriver.d.ts +192 -0
- package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
- package/dist/cjs/internal/RunDriver.js +1586 -0
- package/dist/cjs/internal/RunDriver.js.map +7 -0
- package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
- package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/RunLifecycle.js +63 -0
- package/dist/cjs/internal/RunLifecycle.js.map +7 -0
- package/dist/cjs/internal/RunListing.d.ts +78 -0
- package/dist/cjs/internal/RunListing.d.ts.map +1 -0
- package/dist/cjs/internal/RunListing.js +171 -0
- package/dist/cjs/internal/RunListing.js.map +7 -0
- package/dist/cjs/internal/RunListingError.d.ts +35 -0
- package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
- package/dist/cjs/internal/RunListingError.js +47 -0
- package/dist/cjs/internal/RunListingError.js.map +7 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/cjs/internal/RuntimeGraph.js +180 -0
- package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/cjs/internal/SandboxedExecution.js +104 -0
- package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
- package/dist/cjs/internal/StateTransaction.d.ts +44 -0
- package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
- package/dist/cjs/internal/StateTransaction.js +52 -0
- package/dist/cjs/internal/StateTransaction.js.map +7 -0
- package/dist/cjs/internal/StepFacts.d.ts +14 -0
- package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
- package/dist/cjs/internal/StepFacts.js +58 -0
- package/dist/cjs/internal/StepFacts.js.map +7 -0
- package/dist/cjs/internal/TypedEvents.d.ts +14 -0
- package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
- package/dist/cjs/internal/TypedEvents.js +37 -0
- package/dist/cjs/internal/TypedEvents.js.map +7 -0
- package/dist/cjs/migrations/0001_initial.d.ts +17 -0
- package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_initial.js +61 -0
- package/dist/cjs/migrations/0001_initial.js.map +7 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_selection_store.js +56 -0
- package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
- package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_plan_environment.js +56 -0
- package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_plan_merges.js +82 -0
- package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_execution_listing.js +101 -0
- package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestStores.d.ts +89 -0
- package/dist/cjs/test/TestStores.d.ts.map +1 -0
- package/dist/cjs/test/TestStores.js +98 -0
- package/dist/cjs/test/TestStores.js.map +7 -0
- package/dist/esm/ArtifactGc.d.ts +235 -0
- package/dist/esm/ArtifactGc.d.ts.map +1 -0
- package/dist/esm/ArtifactGc.js +268 -0
- package/dist/esm/ArtifactGc.js.map +1 -0
- package/dist/esm/ArtifactSync.d.ts +164 -0
- package/dist/esm/ArtifactSync.d.ts.map +1 -0
- package/dist/esm/ArtifactSync.js +176 -0
- package/dist/esm/ArtifactSync.js.map +1 -0
- package/dist/esm/CacheSync.d.ts +112 -0
- package/dist/esm/CacheSync.d.ts.map +1 -0
- package/dist/esm/CacheSync.js +94 -0
- package/dist/esm/CacheSync.js.map +1 -0
- package/dist/esm/DeferredClockFold.d.ts +354 -0
- package/dist/esm/DeferredClockFold.d.ts.map +1 -0
- package/dist/esm/DeferredClockFold.js +472 -0
- package/dist/esm/DeferredClockFold.js.map +1 -0
- package/dist/esm/DisasterRecovery.d.ts +431 -0
- package/dist/esm/DisasterRecovery.d.ts.map +1 -0
- package/dist/esm/DisasterRecovery.js +523 -0
- package/dist/esm/DisasterRecovery.js.map +1 -0
- package/dist/esm/DurableEngineState.d.ts +776 -0
- package/dist/esm/DurableEngineState.d.ts.map +1 -0
- package/dist/esm/DurableEngineState.js +1648 -0
- package/dist/esm/DurableEngineState.js.map +1 -0
- package/dist/esm/EngineStore.d.ts +158 -0
- package/dist/esm/EngineStore.d.ts.map +1 -0
- package/dist/esm/EngineStore.js +403 -0
- package/dist/esm/EngineStore.js.map +1 -0
- package/dist/esm/EngineStoreMetrics.d.ts +276 -0
- package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/esm/EngineStoreMetrics.js +260 -0
- package/dist/esm/EngineStoreMetrics.js.map +1 -0
- package/dist/esm/Errors.d.ts +22 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +22 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/EventTypes.d.ts +27 -0
- package/dist/esm/EventTypes.d.ts.map +1 -0
- package/dist/esm/EventTypes.js +27 -0
- package/dist/esm/EventTypes.js.map +1 -0
- package/dist/esm/ExecutionFacts.d.ts +59 -0
- package/dist/esm/ExecutionFacts.d.ts.map +1 -0
- package/dist/esm/ExecutionFacts.js +96 -0
- package/dist/esm/ExecutionFacts.js.map +1 -0
- package/dist/esm/ExecutionSnapshot.d.ts +117 -0
- package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/esm/ExecutionSnapshot.js +95 -0
- package/dist/esm/ExecutionSnapshot.js.map +1 -0
- package/dist/esm/Inconsistency.d.ts +154 -0
- package/dist/esm/Inconsistency.d.ts.map +1 -0
- package/dist/esm/Inconsistency.js +133 -0
- package/dist/esm/Inconsistency.js.map +1 -0
- package/dist/esm/Migrations.d.ts +56 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +91 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/OwnerIdentity.d.ts +91 -0
- package/dist/esm/OwnerIdentity.d.ts.map +1 -0
- package/dist/esm/OwnerIdentity.js +99 -0
- package/dist/esm/OwnerIdentity.js.map +1 -0
- package/dist/esm/PlanInputStore.d.ts +110 -0
- package/dist/esm/PlanInputStore.d.ts.map +1 -0
- package/dist/esm/PlanInputStore.js +207 -0
- package/dist/esm/PlanInputStore.js.map +1 -0
- package/dist/esm/PlanMergeStore.d.ts +113 -0
- package/dist/esm/PlanMergeStore.d.ts.map +1 -0
- package/dist/esm/PlanMergeStore.js +244 -0
- package/dist/esm/PlanMergeStore.js.map +1 -0
- package/dist/esm/PlanScheduler.d.ts +363 -0
- package/dist/esm/PlanScheduler.d.ts.map +1 -0
- package/dist/esm/PlanScheduler.js +1321 -0
- package/dist/esm/PlanScheduler.js.map +1 -0
- package/dist/esm/Reconciliation.d.ts +175 -0
- package/dist/esm/Reconciliation.d.ts.map +1 -0
- package/dist/esm/Reconciliation.js +175 -0
- package/dist/esm/Reconciliation.js.map +1 -0
- package/dist/esm/ReplayOnly.d.ts +91 -0
- package/dist/esm/ReplayOnly.d.ts.map +1 -0
- package/dist/esm/ReplayOnly.js +59 -0
- package/dist/esm/ReplayOnly.js.map +1 -0
- package/dist/esm/Retention.d.ts +113 -0
- package/dist/esm/Retention.d.ts.map +1 -0
- package/dist/esm/Retention.js +139 -0
- package/dist/esm/Retention.js.map +1 -0
- package/dist/esm/RunCatalogRead.d.ts +17 -0
- package/dist/esm/RunCatalogRead.d.ts.map +1 -0
- package/dist/esm/RunCatalogRead.js +17 -0
- package/dist/esm/RunCatalogRead.js.map +1 -0
- package/dist/esm/RunChangeFeed.d.ts +75 -0
- package/dist/esm/RunChangeFeed.d.ts.map +1 -0
- package/dist/esm/RunChangeFeed.js +81 -0
- package/dist/esm/RunChangeFeed.js.map +1 -0
- package/dist/esm/RunState.d.ts +116 -0
- package/dist/esm/RunState.d.ts.map +1 -0
- package/dist/esm/RunState.js +109 -0
- package/dist/esm/RunState.js.map +1 -0
- package/dist/esm/Selection.d.ts +495 -0
- package/dist/esm/Selection.d.ts.map +1 -0
- package/dist/esm/Selection.js +482 -0
- package/dist/esm/Selection.js.map +1 -0
- package/dist/esm/SelectionStore.d.ts +141 -0
- package/dist/esm/SelectionStore.d.ts.map +1 -0
- package/dist/esm/SelectionStore.js +215 -0
- package/dist/esm/SelectionStore.js.map +1 -0
- package/dist/esm/StepBoundary.d.ts +501 -0
- package/dist/esm/StepBoundary.d.ts.map +1 -0
- package/dist/esm/StepBoundary.js +919 -0
- package/dist/esm/StepBoundary.js.map +1 -0
- package/dist/esm/StepCacheFold.d.ts +148 -0
- package/dist/esm/StepCacheFold.d.ts.map +1 -0
- package/dist/esm/StepCacheFold.js +201 -0
- package/dist/esm/StepCacheFold.js.map +1 -0
- package/dist/esm/StepSandbox.d.ts +78 -0
- package/dist/esm/StepSandbox.d.ts.map +1 -0
- package/dist/esm/StepSandbox.js +70 -0
- package/dist/esm/StepSandbox.js.map +1 -0
- package/dist/esm/WakeBus.d.ts +116 -0
- package/dist/esm/WakeBus.d.ts.map +1 -0
- package/dist/esm/WakeBus.js +121 -0
- package/dist/esm/WakeBus.js.map +1 -0
- package/dist/esm/WorkspaceSandbox.d.ts +619 -0
- package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/esm/WorkspaceSandbox.js +985 -0
- package/dist/esm/WorkspaceSandbox.js.map +1 -0
- package/dist/esm/index.d.ts +157 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +157 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ActionPersistence.d.ts +276 -0
- package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/esm/internal/ActionPersistence.js +2306 -0
- package/dist/esm/internal/ActionPersistence.js.map +1 -0
- package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
- package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/esm/internal/ArtifactRoots.js +76 -0
- package/dist/esm/internal/ArtifactRoots.js.map +1 -0
- package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
- package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/esm/internal/AttemptAdmission.js +52 -0
- package/dist/esm/internal/AttemptAdmission.js.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.js +104 -0
- package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
- package/dist/esm/internal/AttemptProbe.d.ts +53 -0
- package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/esm/internal/AttemptProbe.js +83 -0
- package/dist/esm/internal/AttemptProbe.js.map +1 -0
- package/dist/esm/internal/CacheAdmission.d.ts +79 -0
- package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/esm/internal/CacheAdmission.js +72 -0
- package/dist/esm/internal/CacheAdmission.js.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.js +49 -0
- package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
- package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.js +73 -0
- package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
- package/dist/esm/internal/CachePublication.d.ts +97 -0
- package/dist/esm/internal/CachePublication.d.ts.map +1 -0
- package/dist/esm/internal/CachePublication.js +116 -0
- package/dist/esm/internal/CachePublication.js.map +1 -0
- package/dist/esm/internal/CallFacts.d.ts +15 -0
- package/dist/esm/internal/CallFacts.d.ts.map +1 -0
- package/dist/esm/internal/CallFacts.js +83 -0
- package/dist/esm/internal/CallFacts.js.map +1 -0
- package/dist/esm/internal/CopiedRecord.d.ts +61 -0
- package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/esm/internal/CopiedRecord.js +165 -0
- package/dist/esm/internal/CopiedRecord.js.map +1 -0
- package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
- package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/esm/internal/DeferredPersistence.js +240 -0
- package/dist/esm/internal/DeferredPersistence.js.map +1 -0
- package/dist/esm/internal/EffectRecords.d.ts +92 -0
- package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
- package/dist/esm/internal/EffectRecords.js +94 -0
- package/dist/esm/internal/EffectRecords.js.map +1 -0
- package/dist/esm/internal/EngineJj.d.ts +30 -0
- package/dist/esm/internal/EngineJj.d.ts.map +1 -0
- package/dist/esm/internal/EngineJj.js +29 -0
- package/dist/esm/internal/EngineJj.js.map +1 -0
- package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
- package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/esm/internal/EngineStateSchema.js +53 -0
- package/dist/esm/internal/EngineStateSchema.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
- package/dist/esm/internal/ExitEncoding.d.ts +180 -0
- package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/esm/internal/ExitEncoding.js +361 -0
- package/dist/esm/internal/ExitEncoding.js.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
- package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
- package/dist/esm/internal/FileEnumeration.d.ts +127 -0
- package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/esm/internal/FileEnumeration.js +236 -0
- package/dist/esm/internal/FileEnumeration.js.map +1 -0
- package/dist/esm/internal/HostReflection.d.ts +80 -0
- package/dist/esm/internal/HostReflection.d.ts.map +1 -0
- package/dist/esm/internal/HostReflection.js +98 -0
- package/dist/esm/internal/HostReflection.js.map +1 -0
- package/dist/esm/internal/JournalRecords.d.ts +325 -0
- package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
- package/dist/esm/internal/JournalRecords.js +306 -0
- package/dist/esm/internal/JournalRecords.js.map +1 -0
- package/dist/esm/internal/NodeJournal.d.ts +157 -0
- package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
- package/dist/esm/internal/NodeJournal.js +298 -0
- package/dist/esm/internal/NodeJournal.js.map +1 -0
- package/dist/esm/internal/Ordering.d.ts +14 -0
- package/dist/esm/internal/Ordering.d.ts.map +1 -0
- package/dist/esm/internal/Ordering.js +14 -0
- package/dist/esm/internal/Ordering.js.map +1 -0
- package/dist/esm/internal/PlanInputs.d.ts +14 -0
- package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
- package/dist/esm/internal/PlanInputs.js +57 -0
- package/dist/esm/internal/PlanInputs.js.map +1 -0
- package/dist/esm/internal/PlanMerges.d.ts +178 -0
- package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
- package/dist/esm/internal/PlanMerges.js +113 -0
- package/dist/esm/internal/PlanMerges.js.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.js +39 -0
- package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
- package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
- package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/esm/internal/ResultEnvelope.js +83 -0
- package/dist/esm/internal/ResultEnvelope.js.map +1 -0
- package/dist/esm/internal/RetentionOps.d.ts +414 -0
- package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
- package/dist/esm/internal/RetentionOps.js +576 -0
- package/dist/esm/internal/RetentionOps.js.map +1 -0
- package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
- package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/esm/internal/RunCatalogOps.js +120 -0
- package/dist/esm/internal/RunCatalogOps.js.map +1 -0
- package/dist/esm/internal/RunCoordinator.d.ts +78 -0
- package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/esm/internal/RunCoordinator.js +115 -0
- package/dist/esm/internal/RunCoordinator.js.map +1 -0
- package/dist/esm/internal/RunDriver.d.ts +192 -0
- package/dist/esm/internal/RunDriver.d.ts.map +1 -0
- package/dist/esm/internal/RunDriver.js +2334 -0
- package/dist/esm/internal/RunDriver.js.map +1 -0
- package/dist/esm/internal/RunLifecycle.d.ts +22 -0
- package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/RunLifecycle.js +49 -0
- package/dist/esm/internal/RunLifecycle.js.map +1 -0
- package/dist/esm/internal/RunListing.d.ts +78 -0
- package/dist/esm/internal/RunListing.d.ts.map +1 -0
- package/dist/esm/internal/RunListing.js +146 -0
- package/dist/esm/internal/RunListing.js.map +1 -0
- package/dist/esm/internal/RunListingError.d.ts +35 -0
- package/dist/esm/internal/RunListingError.d.ts.map +1 -0
- package/dist/esm/internal/RunListingError.js +27 -0
- package/dist/esm/internal/RunListingError.js.map +1 -0
- package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
- package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/esm/internal/RuntimeGraph.js +182 -0
- package/dist/esm/internal/RuntimeGraph.js.map +1 -0
- package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
- package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/esm/internal/SandboxedExecution.js +107 -0
- package/dist/esm/internal/SandboxedExecution.js.map +1 -0
- package/dist/esm/internal/StateTransaction.d.ts +44 -0
- package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
- package/dist/esm/internal/StateTransaction.js +54 -0
- package/dist/esm/internal/StateTransaction.js.map +1 -0
- package/dist/esm/internal/StepFacts.d.ts +14 -0
- package/dist/esm/internal/StepFacts.d.ts.map +1 -0
- package/dist/esm/internal/StepFacts.js +35 -0
- package/dist/esm/internal/StepFacts.js.map +1 -0
- package/dist/esm/internal/TypedEvents.d.ts +14 -0
- package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
- package/dist/esm/internal/TypedEvents.js +14 -0
- package/dist/esm/internal/TypedEvents.js.map +1 -0
- package/dist/esm/migrations/0001_initial.d.ts +17 -0
- package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
- package/dist/esm/migrations/0001_initial.js +41 -0
- package/dist/esm/migrations/0001_initial.js.map +1 -0
- package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
- package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/esm/migrations/0002_selection_store.js +34 -0
- package/dist/esm/migrations/0002_selection_store.js.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.js +70 -0
- package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.js +33 -0
- package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.js +59 -0
- package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.js +81 -0
- package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
- package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
- package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
- package/dist/esm/test/TestStores.d.ts +89 -0
- package/dist/esm/test/TestStores.d.ts.map +1 -0
- package/dist/esm/test/TestStores.js +103 -0
- package/dist/esm/test/TestStores.js.map +1 -0
- package/docs/README.md +113 -0
- package/docs/api.md +1494 -0
- package/docs/concepts/attempts-and-replay.md +149 -0
- package/docs/concepts/cache-admission.md +265 -0
- package/docs/concepts/call-facts.md +86 -0
- package/docs/concepts/durable-waits.md +175 -0
- package/docs/concepts/execution-facts.md +90 -0
- package/docs/concepts/ownership-and-fencing.md +128 -0
- package/docs/concepts/step-boundaries.md +148 -0
- package/docs/concepts/workspace-transactions.md +199 -0
- package/docs/event-types.md +14 -0
- package/docs/guides/back-up-and-restore.md +164 -0
- package/docs/guides/collect-unreferenced-artifacts.md +128 -0
- package/docs/guides/compose-a-durable-engine.md +146 -0
- package/docs/guides/coordinate-two-processes.md +120 -0
- package/docs/guides/defer-work-with-selection.md +171 -0
- package/docs/guides/delete-old-run-history.md +154 -0
- package/docs/guides/drive-a-plan.md +314 -0
- package/docs/guides/observe-engine-metrics.md +98 -0
- package/docs/guides/observe-executions.md +187 -0
- package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
- package/docs/guides/share-a-cache-across-machines.md +134 -0
- package/docs/guides/testing.md +123 -0
- package/docs/installation.md +102 -0
- package/docs/quickstart.md +215 -0
- package/docs/troubleshooting.md +347 -0
- package/package.json +438 -3
- package/src/ArtifactGc.ts +408 -0
- package/src/ArtifactSync.ts +278 -0
- package/src/CacheSync.ts +131 -0
- package/src/DeferredClockFold.ts +586 -0
- package/src/DisasterRecovery.ts +888 -0
- package/src/DurableEngineState.ts +2656 -0
- package/src/EngineStore.ts +656 -0
- package/src/EngineStoreMetrics.ts +331 -0
- package/src/Errors.ts +28 -0
- package/src/EventTypes.ts +27 -0
- package/src/ExecutionFacts.ts +125 -0
- package/src/ExecutionSnapshot.ts +186 -0
- package/src/Inconsistency.ts +253 -0
- package/src/Migrations.ts +95 -0
- package/src/OwnerIdentity.ts +125 -0
- package/src/PlanInputStore.ts +292 -0
- package/src/PlanMergeStore.ts +330 -0
- package/src/PlanScheduler.ts +1806 -0
- package/src/Reconciliation.ts +224 -0
- package/src/ReplayOnly.ts +95 -0
- package/src/Retention.ts +214 -0
- package/src/RunCatalogRead.ts +27 -0
- package/src/RunChangeFeed.ts +125 -0
- package/src/RunState.ts +137 -0
- package/src/Selection.ts +683 -0
- package/src/SelectionStore.ts +353 -0
- package/src/StepBoundary.ts +1165 -0
- package/src/StepCacheFold.ts +244 -0
- package/src/StepSandbox.ts +110 -0
- package/src/WakeBus.ts +167 -0
- package/src/WorkspaceSandbox.ts +1604 -0
- package/src/index.ts +185 -0
- package/src/internal/ActionPersistence.ts +2687 -0
- package/src/internal/ArtifactRoots.ts +92 -0
- package/src/internal/AttemptAdmission.ts +76 -0
- package/src/internal/AttemptLifecycle.ts +163 -0
- package/src/internal/AttemptProbe.ts +90 -0
- package/src/internal/CacheAdmission.ts +133 -0
- package/src/internal/CacheAgeHistory.ts +58 -0
- package/src/internal/CacheAgeVerdicts.ts +61 -0
- package/src/internal/CacheOutputPolicy.ts +82 -0
- package/src/internal/CachePublication.ts +153 -0
- package/src/internal/CallFacts.ts +87 -0
- package/src/internal/CopiedRecord.ts +201 -0
- package/src/internal/DeferredPersistence.ts +459 -0
- package/src/internal/EffectRecords.ts +136 -0
- package/src/internal/EngineJj.ts +30 -0
- package/src/internal/EngineStateSchema.ts +92 -0
- package/src/internal/ExecutionSnapshotRead.ts +300 -0
- package/src/internal/ExecutionSnapshotRelations.ts +121 -0
- package/src/internal/ExitEncoding.ts +453 -0
- package/src/internal/FileBoundarySnapshot.ts +39 -0
- package/src/internal/FileEnumeration.ts +334 -0
- package/src/internal/HostReflection.ts +128 -0
- package/src/internal/JournalRecords.ts +396 -0
- package/src/internal/NodeJournal.ts +340 -0
- package/src/internal/Ordering.ts +14 -0
- package/src/internal/PlanInputs.ts +62 -0
- package/src/internal/PlanMerges.ts +123 -0
- package/src/internal/ProvenanceSlot.ts +52 -0
- package/src/internal/ResultEnvelope.ts +118 -0
- package/src/internal/RetentionOps.ts +865 -0
- package/src/internal/RunCatalogOps.ts +174 -0
- package/src/internal/RunCoordinator.ts +215 -0
- package/src/internal/RunDriver.ts +3154 -0
- package/src/internal/RunLifecycle.ts +53 -0
- package/src/internal/RunListing.ts +210 -0
- package/src/internal/RunListingError.ts +37 -0
- package/src/internal/RuntimeGraph.ts +253 -0
- package/src/internal/SandboxedExecution.ts +165 -0
- package/src/internal/StateTransaction.ts +71 -0
- package/src/internal/StepFacts.ts +36 -0
- package/src/internal/TypedEvents.ts +29 -0
- package/src/migrations/0001_initial.ts +51 -0
- package/src/migrations/0002_selection_store.ts +38 -0
- package/src/migrations/0003_plan_inputs.ts +75 -0
- package/src/migrations/0004_plan_environment.ts +34 -0
- package/src/migrations/0005_plan_merges.ts +60 -0
- package/src/migrations/0006_execution_listing.ts +86 -0
- package/src/migrations/0007_run_parent_sequence.ts +19 -0
- package/src/migrations/0008_deferred_consumption.ts +27 -0
- package/src/migrations/0009_deferred_clock_facts.ts +163 -0
- package/src/migrations/0010_pending_cancellation.ts +20 -0
- package/src/test/TestStores.ts +145 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injectable, scope-safe step sandboxing over the workspace transaction.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import type * as ArtifactStore from "@smthrs/artifacts/ArtifactStore";
|
|
7
|
+
import type * as KernelWorkspace from "@smthrs/kernel/Workspace";
|
|
8
|
+
import * as Context from "effect/Context";
|
|
9
|
+
import type * as Crypto from "effect/Crypto";
|
|
10
|
+
import * as Effect from "effect/Effect";
|
|
11
|
+
import type * as FileSystem from "effect/FileSystem";
|
|
12
|
+
import * as Layer from "effect/Layer";
|
|
13
|
+
import type * as Path from "effect/Path";
|
|
14
|
+
import * as Schema from "effect/Schema";
|
|
15
|
+
import * as StepBoundary from "./StepBoundary.ts";
|
|
16
|
+
import * as WorkspaceSandbox from "./WorkspaceSandbox.ts";
|
|
17
|
+
declare const UndeclaredRead_base: Schema.Class<UndeclaredRead, Schema.TaggedStruct<"@smthrs/engine-store/UndeclaredRead", {
|
|
18
|
+
readonly code: Schema.Literal<"undeclared_read">;
|
|
19
|
+
readonly paths: Schema.$Array<Schema.String>;
|
|
20
|
+
readonly diffIdentity: Schema.NonEmptyString;
|
|
21
|
+
}>, import("effect/Cause").YieldableError>;
|
|
22
|
+
/**
|
|
23
|
+
* A hermetic body attempted to read a path outside its declared read set.
|
|
24
|
+
*
|
|
25
|
+
* @category errors
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
*/
|
|
28
|
+
export declare class UndeclaredRead extends UndeclaredRead_base {
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A sandbox that can acquire an isolated workspace for one step.
|
|
32
|
+
*
|
|
33
|
+
* @category models
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
*/
|
|
36
|
+
export interface Service {
|
|
37
|
+
readonly open: Effect.Effect<WorkspaceSandbox.Service, StepBoundary.UnsupportedBoundary>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Injectable step-sandbox service.
|
|
41
|
+
*
|
|
42
|
+
* @category services
|
|
43
|
+
* @since 0.1.0
|
|
44
|
+
*/
|
|
45
|
+
export declare const StepSandbox: Context.Service<Service, Service>;
|
|
46
|
+
/**
|
|
47
|
+
* Constructs a step sandbox around a workspace transaction backend.
|
|
48
|
+
*
|
|
49
|
+
* @category constructors
|
|
50
|
+
* @since 0.1.0
|
|
51
|
+
*/
|
|
52
|
+
export declare const make: (workspace: WorkspaceSandbox.Service) => Service;
|
|
53
|
+
/**
|
|
54
|
+
* Filesystem-backed sandbox layer. The workspace transaction seeds only the
|
|
55
|
+
* declared reads, exposes its scoped FileSystem to the body, observes every
|
|
56
|
+
* mutation, and performs atomic copy-back on release. Built from
|
|
57
|
+
* `WorkspaceSandbox.layerFileSystem`, so it refuses a path-based host the same way.
|
|
58
|
+
*
|
|
59
|
+
* @category layers
|
|
60
|
+
* @since 0.1.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const layer: Layer.Layer<Service, WorkspaceSandbox.WorkspaceError, FileSystem.FileSystem | Path.Path | ArtifactStore.ArtifactStore | KernelWorkspace.Workspace>;
|
|
63
|
+
/**
|
|
64
|
+
* Deterministic in-memory sandbox layer for tests.
|
|
65
|
+
*
|
|
66
|
+
* @category layers
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export declare const layerTest: (initialFiles?: WorkspaceSandbox.InitialFiles) => Layer.Layer<Service, WorkspaceSandbox.WorkspaceError, Crypto.Crypto>;
|
|
70
|
+
/**
|
|
71
|
+
* Fail-closed host layer for environments that cannot sandbox (for example browsers).
|
|
72
|
+
*
|
|
73
|
+
* @category layers
|
|
74
|
+
* @since 0.1.0
|
|
75
|
+
*/
|
|
76
|
+
export declare const layerNoop: Layer.Layer<Service>;
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=StepSandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSandbox.d.ts","sourceRoot":"","sources":["../../src/StepSandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,aAAa,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;;;;;;AAEzD;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,mBAOnC;CAAG;AAEJ;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CACzF;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAEzD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,WAAW,gBAAgB,CAAC,OAAO,KAAG,OAGvD,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,OAAO,EACP,gBAAgB,CAAC,cAAc,EAC/B,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,GAAG,eAAe,CAAC,SAAS,CAIpC,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,eAAc,gBAAgB,CAAC,YAAiB,KAC/C,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CACgD,CAAA;AAOtH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAK1C,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injectable, scope-safe step sandboxing over the workspace transaction.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Layer from "effect/Layer";
|
|
9
|
+
import * as Schema from "effect/Schema";
|
|
10
|
+
import * as StepBoundary from "./StepBoundary.js";
|
|
11
|
+
import * as WorkspaceSandbox from "./WorkspaceSandbox.js";
|
|
12
|
+
/**
|
|
13
|
+
* A hermetic body attempted to read a path outside its declared read set.
|
|
14
|
+
*
|
|
15
|
+
* @category errors
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
export class UndeclaredRead extends Schema.TaggedError()("@smthrs/engine-store/UndeclaredRead", {
|
|
19
|
+
code: Schema.Literal("undeclared_read"),
|
|
20
|
+
paths: Schema.Array(Schema.String),
|
|
21
|
+
diffIdentity: Schema.NonEmptyString
|
|
22
|
+
}) {
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Injectable step-sandbox service.
|
|
26
|
+
*
|
|
27
|
+
* @category services
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
export const StepSandbox = Context.Service("@smthrs/engine-store/StepSandbox");
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a step sandbox around a workspace transaction backend.
|
|
33
|
+
*
|
|
34
|
+
* @category constructors
|
|
35
|
+
* @since 0.1.0
|
|
36
|
+
*/
|
|
37
|
+
export const make = (workspace) => StepSandbox.of({
|
|
38
|
+
open: Effect.succeed(workspace)
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Filesystem-backed sandbox layer. The workspace transaction seeds only the
|
|
42
|
+
* declared reads, exposes its scoped FileSystem to the body, observes every
|
|
43
|
+
* mutation, and performs atomic copy-back on release. Built from
|
|
44
|
+
* `WorkspaceSandbox.layerFileSystem`, so it refuses a path-based host the same way.
|
|
45
|
+
*
|
|
46
|
+
* @category layers
|
|
47
|
+
* @since 0.1.0
|
|
48
|
+
*/
|
|
49
|
+
export const layer = Layer.effect(StepSandbox, Effect.map(WorkspaceSandbox.WorkspaceSandbox, make)).pipe(Layer.provide(WorkspaceSandbox.layerFileSystem()));
|
|
50
|
+
/**
|
|
51
|
+
* Deterministic in-memory sandbox layer for tests.
|
|
52
|
+
*
|
|
53
|
+
* @category layers
|
|
54
|
+
* @since 0.1.0
|
|
55
|
+
*/
|
|
56
|
+
export const layerTest = (initialFiles = {}) => Layer.effect(StepSandbox, Effect.map(WorkspaceSandbox.makeMemory(initialFiles), (sandbox) => make(sandbox.service)));
|
|
57
|
+
const unsupported = new StepBoundary.UnsupportedBoundary({
|
|
58
|
+
code: "unsupported_boundary",
|
|
59
|
+
message: "this host cannot provide a hermetic step sandbox"
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Fail-closed host layer for environments that cannot sandbox (for example browsers).
|
|
63
|
+
*
|
|
64
|
+
* @category layers
|
|
65
|
+
* @since 0.1.0
|
|
66
|
+
*/
|
|
67
|
+
export const layerNoop = Layer.succeed(StepSandbox, StepSandbox.of({
|
|
68
|
+
open: Effect.fail(unsupported)
|
|
69
|
+
}));
|
|
70
|
+
//# sourceMappingURL=StepSandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSandbox.js","sourceRoot":"","sources":["../../src/StepSandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CACtE,qCAAqC,EACrC;IACE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,cAAc;CACpC,CACF;CAAG;AAYJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAsC,OAAO,CAAC,OAAO,CAC3E,kCAAkC,CACnC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,SAAmC,EAAW,EAAE,CACnE,WAAW,CAAC,EAAE,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;CAChC,CAAC,CAAA;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAId,KAAK,CAAC,MAAM,CACd,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACpD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,eAA8C,EAAE,EACsB,EAAE,CACxE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAEtH,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC,mBAAmB,CAAC;IACvD,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,kDAAkD;CAC5D,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAyB,KAAK,CAAC,OAAO,CAC1D,WAAW,EACX,WAAW,CAAC,EAAE,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;CAC/B,CAAC,CACH,CAAA","sourcesContent":["/**\n * Injectable, scope-safe step sandboxing over the workspace transaction.\n *\n * @since 0.1.0\n */\n\nimport type * as ArtifactStore from \"@smthrs/artifacts/ArtifactStore\"\nimport type * as KernelWorkspace from \"@smthrs/kernel/Workspace\"\nimport * as Context from \"effect/Context\"\nimport type * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport type * as FileSystem from \"effect/FileSystem\"\nimport * as Layer from \"effect/Layer\"\nimport type * as Path from \"effect/Path\"\nimport * as Schema from \"effect/Schema\"\nimport * as StepBoundary from \"./StepBoundary.ts\"\nimport * as WorkspaceSandbox from \"./WorkspaceSandbox.ts\"\n\n/**\n * A hermetic body attempted to read a path outside its declared read set.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class UndeclaredRead extends Schema.TaggedError<UndeclaredRead>()(\n \"@smthrs/engine-store/UndeclaredRead\",\n {\n code: Schema.Literal(\"undeclared_read\"),\n paths: Schema.Array(Schema.String),\n diffIdentity: Schema.NonEmptyString\n }\n) {}\n\n/**\n * A sandbox that can acquire an isolated workspace for one step.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n readonly open: Effect.Effect<WorkspaceSandbox.Service, StepBoundary.UnsupportedBoundary>\n}\n\n/**\n * Injectable step-sandbox service.\n *\n * @category services\n * @since 0.1.0\n */\nexport const StepSandbox: Context.Service<Service, Service> = Context.Service<Service>(\n \"@smthrs/engine-store/StepSandbox\"\n)\n\n/**\n * Constructs a step sandbox around a workspace transaction backend.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make = (workspace: WorkspaceSandbox.Service): Service =>\n StepSandbox.of({\n open: Effect.succeed(workspace)\n })\n\n/**\n * Filesystem-backed sandbox layer. The workspace transaction seeds only the\n * declared reads, exposes its scoped FileSystem to the body, observes every\n * mutation, and performs atomic copy-back on release. Built from\n * `WorkspaceSandbox.layerFileSystem`, so it refuses a path-based host the same way.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer: Layer.Layer<\n Service,\n WorkspaceSandbox.WorkspaceError,\n FileSystem.FileSystem | Path.Path | ArtifactStore.ArtifactStore | KernelWorkspace.Workspace\n> = Layer.effect(\n StepSandbox,\n Effect.map(WorkspaceSandbox.WorkspaceSandbox, make)\n).pipe(Layer.provide(WorkspaceSandbox.layerFileSystem()))\n\n/**\n * Deterministic in-memory sandbox layer for tests.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerTest = (\n initialFiles: WorkspaceSandbox.InitialFiles = {}\n): Layer.Layer<Service, WorkspaceSandbox.WorkspaceError, Crypto.Crypto> =>\n Layer.effect(StepSandbox, Effect.map(WorkspaceSandbox.makeMemory(initialFiles), (sandbox) => make(sandbox.service)))\n\nconst unsupported = new StepBoundary.UnsupportedBoundary({\n code: \"unsupported_boundary\",\n message: \"this host cannot provide a hermetic step sandbox\"\n})\n\n/**\n * Fail-closed host layer for environments that cannot sandbox (for example browsers).\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerNoop: Layer.Layer<Service> = Layer.succeed(\n StepSandbox,\n StepSandbox.of({\n open: Effect.fail(unsupported)\n })\n)\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The in-process wake bus: durable writes that make a run runnable — a
|
|
3
|
+
* deferred completed, a durable clock fired, an operator resume — announce
|
|
4
|
+
* the run id here, and in-process waiters parked on that run resume
|
|
5
|
+
* immediately instead of waiting out a poll tick.
|
|
6
|
+
*
|
|
7
|
+
* The bus is EDGE-TRIGGERED and MISS-TOLERANT by design. A wake published
|
|
8
|
+
* while nobody waits is dropped, not queued: durable state already records
|
|
9
|
+
* that the run is runnable, and the engine's suspension polling schedule
|
|
10
|
+
* (`suspendedRetryPolicy`) remains the bounded fallback that re-drives any
|
|
11
|
+
* run whose wake the bus missed. Temporal's scheduled task queue takes the
|
|
12
|
+
* same position — `NotifyNewTasks` is a coalesced, non-blocking channel send
|
|
13
|
+
* and `MaxPollInterval` bounds the polling fallback (`reference/temporal`
|
|
14
|
+
* `service/history/queues/queue_scheduled.go`) — because a lossless bus
|
|
15
|
+
* would have to be durable, and the durable record already exists. Waiter
|
|
16
|
+
* registration follows opencode's in-process job registry: one `Deferred`
|
|
17
|
+
* per waiter, succeeded on completion, removed when the waiter's own scope
|
|
18
|
+
* closes (`reference/opencode` `packages/smithers/flows/core/src/background-job.ts`).
|
|
19
|
+
*
|
|
20
|
+
* Cross-process wakes never reach this bus: another process's deferred
|
|
21
|
+
* completion is observed through the store, on the polling schedule and the
|
|
22
|
+
* heartbeat sweeps. That split is deliberate v1 scope — an event-driven
|
|
23
|
+
* cross-process wake needs a committed journal subscription, which is a
|
|
24
|
+
* separate seam.
|
|
25
|
+
*
|
|
26
|
+
* The bus holds no host access at all — a `Map` of `Deferred`s — so it is
|
|
27
|
+
* browser-safe without a platform layer.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.1.0
|
|
30
|
+
*/
|
|
31
|
+
import * as Context from "effect/Context";
|
|
32
|
+
import * as Effect from "effect/Effect";
|
|
33
|
+
import * as Layer from "effect/Layer";
|
|
34
|
+
/**
|
|
35
|
+
* Wake bus operations.
|
|
36
|
+
*
|
|
37
|
+
* @category models
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
export interface Service {
|
|
41
|
+
/**
|
|
42
|
+
* Announces that a durable write made the run runnable. Every waiter
|
|
43
|
+
* currently parked on `executionId` resumes; with no waiters the wake is
|
|
44
|
+
* dropped and the polling fallback covers the run.
|
|
45
|
+
*/
|
|
46
|
+
readonly wake: (executionId: string) => Effect.Effect<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Parks until the next {@link wake} for `executionId`. Registration is
|
|
49
|
+
* removed when the waiting fiber is interrupted — including scope closure
|
|
50
|
+
* and losing a race against the polling sleep — so an abandoned wait
|
|
51
|
+
* leaks nothing.
|
|
52
|
+
*
|
|
53
|
+
* The wait is keyed by execution id alone: execution ids are unique
|
|
54
|
+
* across flows, so the flow tag adds no discrimination.
|
|
55
|
+
*/
|
|
56
|
+
readonly awaitWake: (executionId: string) => Effect.Effect<void>;
|
|
57
|
+
/**
|
|
58
|
+
* How many waiters are currently parked on `executionId`. This is
|
|
59
|
+
* observability for tests and diagnostics, not a coordination primitive:
|
|
60
|
+
* a count observed now says nothing about a moment later.
|
|
61
|
+
*/
|
|
62
|
+
readonly waiters: (executionId: string) => Effect.Effect<number>;
|
|
63
|
+
}
|
|
64
|
+
declare const WakeBus_base: Context.ServiceClass<WakeBus, "@smthrs/engine-store/WakeBus", Service>;
|
|
65
|
+
/**
|
|
66
|
+
* Service tag for the in-process wake bus.
|
|
67
|
+
*
|
|
68
|
+
* @category services
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
*/
|
|
71
|
+
export declare class WakeBus extends WakeBus_base {
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Constructs a wake bus. Registration and delivery are plain in-memory
|
|
75
|
+
* operations on the constructing process; nothing is durable.
|
|
76
|
+
*
|
|
77
|
+
* @category constructors
|
|
78
|
+
* @since 0.1.0
|
|
79
|
+
*/
|
|
80
|
+
export declare const makeUnsafe: () => Service;
|
|
81
|
+
/**
|
|
82
|
+
* Constructs a wake bus effectfully. Prefer this in compositions;
|
|
83
|
+
* {@link makeUnsafe} exists for construction outside a fiber.
|
|
84
|
+
*
|
|
85
|
+
* @category constructors
|
|
86
|
+
* @since 0.1.0
|
|
87
|
+
*/
|
|
88
|
+
export declare const make: Effect.Effect<Service>;
|
|
89
|
+
/**
|
|
90
|
+
* A bus that never delivers: wakes are dropped and waiters park forever.
|
|
91
|
+
* With it in place every resume travels the polling fallback — which is
|
|
92
|
+
* exactly what a test asserting the fallback provides it for.
|
|
93
|
+
*
|
|
94
|
+
* @category constructors
|
|
95
|
+
* @since 0.1.0
|
|
96
|
+
*/
|
|
97
|
+
export declare const makeNoop: (overrides?: Partial<Service>) => Service;
|
|
98
|
+
/**
|
|
99
|
+
* Provides a fresh wake bus. An engine composition resolves the bus
|
|
100
|
+
* optionally, so providing this layer is how a host shares one bus between
|
|
101
|
+
* the engine and its own wake sources; a composition given none builds a
|
|
102
|
+
* private bus.
|
|
103
|
+
*
|
|
104
|
+
* @category layers
|
|
105
|
+
* @since 0.1.0
|
|
106
|
+
*/
|
|
107
|
+
export declare const layer: Layer.Layer<WakeBus>;
|
|
108
|
+
/**
|
|
109
|
+
* Provides {@link makeNoop}.
|
|
110
|
+
*
|
|
111
|
+
* @category layers
|
|
112
|
+
* @since 0.1.0
|
|
113
|
+
*/
|
|
114
|
+
export declare const layerNoop: (overrides?: Partial<Service>) => Layer.Layer<WakeBus>;
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=WakeBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WakeBus.d.ts","sourceRoot":"","sources":["../../src/WakeBus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CACjE;;AAED;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,YAAmE;CAAG;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAO,OAuC7B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAA2B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,YAAY,OAAO,CAAC,OAAO,CAAC,KAAG,OAMpD,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmC,CAAA;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,YAAY,OAAO,CAAC,OAAO,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAC5B,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The in-process wake bus: durable writes that make a run runnable — a
|
|
3
|
+
* deferred completed, a durable clock fired, an operator resume — announce
|
|
4
|
+
* the run id here, and in-process waiters parked on that run resume
|
|
5
|
+
* immediately instead of waiting out a poll tick.
|
|
6
|
+
*
|
|
7
|
+
* The bus is EDGE-TRIGGERED and MISS-TOLERANT by design. A wake published
|
|
8
|
+
* while nobody waits is dropped, not queued: durable state already records
|
|
9
|
+
* that the run is runnable, and the engine's suspension polling schedule
|
|
10
|
+
* (`suspendedRetryPolicy`) remains the bounded fallback that re-drives any
|
|
11
|
+
* run whose wake the bus missed. Temporal's scheduled task queue takes the
|
|
12
|
+
* same position — `NotifyNewTasks` is a coalesced, non-blocking channel send
|
|
13
|
+
* and `MaxPollInterval` bounds the polling fallback (`reference/temporal`
|
|
14
|
+
* `service/history/queues/queue_scheduled.go`) — because a lossless bus
|
|
15
|
+
* would have to be durable, and the durable record already exists. Waiter
|
|
16
|
+
* registration follows opencode's in-process job registry: one `Deferred`
|
|
17
|
+
* per waiter, succeeded on completion, removed when the waiter's own scope
|
|
18
|
+
* closes (`reference/opencode` `packages/smithers/flows/core/src/background-job.ts`).
|
|
19
|
+
*
|
|
20
|
+
* Cross-process wakes never reach this bus: another process's deferred
|
|
21
|
+
* completion is observed through the store, on the polling schedule and the
|
|
22
|
+
* heartbeat sweeps. That split is deliberate v1 scope — an event-driven
|
|
23
|
+
* cross-process wake needs a committed journal subscription, which is a
|
|
24
|
+
* separate seam.
|
|
25
|
+
*
|
|
26
|
+
* The bus holds no host access at all — a `Map` of `Deferred`s — so it is
|
|
27
|
+
* browser-safe without a platform layer.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.1.0
|
|
30
|
+
*/
|
|
31
|
+
import * as Context from "effect/Context";
|
|
32
|
+
import * as Deferred from "effect/Deferred";
|
|
33
|
+
import * as Effect from "effect/Effect";
|
|
34
|
+
import * as Layer from "effect/Layer";
|
|
35
|
+
/**
|
|
36
|
+
* Service tag for the in-process wake bus.
|
|
37
|
+
*
|
|
38
|
+
* @category services
|
|
39
|
+
* @since 0.1.0
|
|
40
|
+
*/
|
|
41
|
+
export class WakeBus extends Context.Service()("@smthrs/engine-store/WakeBus") {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Constructs a wake bus. Registration and delivery are plain in-memory
|
|
45
|
+
* operations on the constructing process; nothing is durable.
|
|
46
|
+
*
|
|
47
|
+
* @category constructors
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
*/
|
|
50
|
+
export const makeUnsafe = () => {
|
|
51
|
+
const parked = new Map();
|
|
52
|
+
return WakeBus.of({
|
|
53
|
+
wake: (executionId) => Effect.suspend(() => {
|
|
54
|
+
const waiters = parked.get(executionId);
|
|
55
|
+
if (waiters === undefined)
|
|
56
|
+
return Effect.void;
|
|
57
|
+
// Snapshot before succeeding: each woken waiter's release removes it
|
|
58
|
+
// from the live set, and delivery must not observe that mutation.
|
|
59
|
+
return Effect.forEach(Array.from(waiters), (waiter) => Deferred.succeed(waiter, undefined), { discard: true });
|
|
60
|
+
}),
|
|
61
|
+
awaitWake: (executionId) => Effect.acquireUseRelease(Effect.sync(() => {
|
|
62
|
+
const waiter = Deferred.makeUnsafe();
|
|
63
|
+
let waiters = parked.get(executionId);
|
|
64
|
+
if (waiters === undefined) {
|
|
65
|
+
waiters = new Set();
|
|
66
|
+
parked.set(executionId, waiters);
|
|
67
|
+
}
|
|
68
|
+
waiters.add(waiter);
|
|
69
|
+
return { waiter, waiters };
|
|
70
|
+
}), ({ waiter }) => Deferred.await(waiter),
|
|
71
|
+
// The registration's own set is closed over rather than re-fetched:
|
|
72
|
+
// the map entry can only be deleted by the release that empties it,
|
|
73
|
+
// so the set this waiter joined is the set it must leave.
|
|
74
|
+
({ waiter, waiters }) => Effect.sync(() => {
|
|
75
|
+
waiters.delete(waiter);
|
|
76
|
+
if (waiters.size === 0)
|
|
77
|
+
parked.delete(executionId);
|
|
78
|
+
})),
|
|
79
|
+
waiters: (executionId) => Effect.sync(() => parked.get(executionId)?.size ?? 0)
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Constructs a wake bus effectfully. Prefer this in compositions;
|
|
84
|
+
* {@link makeUnsafe} exists for construction outside a fiber.
|
|
85
|
+
*
|
|
86
|
+
* @category constructors
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
*/
|
|
89
|
+
export const make = Effect.sync(makeUnsafe);
|
|
90
|
+
/**
|
|
91
|
+
* A bus that never delivers: wakes are dropped and waiters park forever.
|
|
92
|
+
* With it in place every resume travels the polling fallback — which is
|
|
93
|
+
* exactly what a test asserting the fallback provides it for.
|
|
94
|
+
*
|
|
95
|
+
* @category constructors
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
*/
|
|
98
|
+
export const makeNoop = (overrides) => WakeBus.of({
|
|
99
|
+
wake: () => Effect.void,
|
|
100
|
+
awaitWake: () => Effect.never,
|
|
101
|
+
waiters: () => Effect.succeed(0),
|
|
102
|
+
...overrides
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* Provides a fresh wake bus. An engine composition resolves the bus
|
|
106
|
+
* optionally, so providing this layer is how a host shares one bus between
|
|
107
|
+
* the engine and its own wake sources; a composition given none builds a
|
|
108
|
+
* private bus.
|
|
109
|
+
*
|
|
110
|
+
* @category layers
|
|
111
|
+
* @since 0.1.0
|
|
112
|
+
*/
|
|
113
|
+
export const layer = Layer.sync(WakeBus)(makeUnsafe);
|
|
114
|
+
/**
|
|
115
|
+
* Provides {@link makeNoop}.
|
|
116
|
+
*
|
|
117
|
+
* @category layers
|
|
118
|
+
* @since 0.1.0
|
|
119
|
+
*/
|
|
120
|
+
export const layerNoop = (overrides) => Layer.sync(WakeBus)(() => makeNoop(overrides));
|
|
121
|
+
//# sourceMappingURL=WakeBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WakeBus.js","sourceRoot":"","sources":["../../src/WakeBus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAiCrC;;;;;GAKG;AACH,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAAoB,CAAC,8BAA8B,CAAC;CAAG;AAEnG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,EAAE;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwC,CAAA;IAC9D,OAAO,OAAO,CAAC,EAAE,CAAC;QAChB,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CACpB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACvC,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAA;YAC7C,qEAAqE;YACrE,kEAAkE;YAClE,OAAO,MAAM,CAAC,OAAO,CACnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EACnB,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;QACH,CAAC,CAAC;QACJ,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE,CACzB,MAAM,CAAC,iBAAiB,CACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAQ,CAAA;YAC1C,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;gBACnB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;YAClC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QAC5B,CAAC,CAAC,EACF,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACtC,oEAAoE;QACpE,oEAAoE;QACpE,0DAA0D;QAC1D,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACtB,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACpD,CAAC,CAAC,CACL;QACH,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;KAChF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAA2B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAA4B,EAAW,EAAE,CAChE,OAAO,CAAC,EAAE,CAAC;IACT,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;IACvB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,GAAG,SAAS;CACb,CAAC,CAAA;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAyB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAA;AAE1E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAA4B,EAAwB,EAAE,CAC9E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA","sourcesContent":["/**\n * The in-process wake bus: durable writes that make a run runnable — a\n * deferred completed, a durable clock fired, an operator resume — announce\n * the run id here, and in-process waiters parked on that run resume\n * immediately instead of waiting out a poll tick.\n *\n * The bus is EDGE-TRIGGERED and MISS-TOLERANT by design. A wake published\n * while nobody waits is dropped, not queued: durable state already records\n * that the run is runnable, and the engine's suspension polling schedule\n * (`suspendedRetryPolicy`) remains the bounded fallback that re-drives any\n * run whose wake the bus missed. Temporal's scheduled task queue takes the\n * same position — `NotifyNewTasks` is a coalesced, non-blocking channel send\n * and `MaxPollInterval` bounds the polling fallback (`reference/temporal`\n * `service/history/queues/queue_scheduled.go`) — because a lossless bus\n * would have to be durable, and the durable record already exists. Waiter\n * registration follows opencode's in-process job registry: one `Deferred`\n * per waiter, succeeded on completion, removed when the waiter's own scope\n * closes (`reference/opencode` `packages/smithers/flows/core/src/background-job.ts`).\n *\n * Cross-process wakes never reach this bus: another process's deferred\n * completion is observed through the store, on the polling schedule and the\n * heartbeat sweeps. That split is deliberate v1 scope — an event-driven\n * cross-process wake needs a committed journal subscription, which is a\n * separate seam.\n *\n * The bus holds no host access at all — a `Map` of `Deferred`s — so it is\n * browser-safe without a platform layer.\n *\n * @since 0.1.0\n */\n\nimport * as Context from \"effect/Context\"\nimport * as Deferred from \"effect/Deferred\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\n\n/**\n * Wake bus operations.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n /**\n * Announces that a durable write made the run runnable. Every waiter\n * currently parked on `executionId` resumes; with no waiters the wake is\n * dropped and the polling fallback covers the run.\n */\n readonly wake: (executionId: string) => Effect.Effect<void>\n /**\n * Parks until the next {@link wake} for `executionId`. Registration is\n * removed when the waiting fiber is interrupted — including scope closure\n * and losing a race against the polling sleep — so an abandoned wait\n * leaks nothing.\n *\n * The wait is keyed by execution id alone: execution ids are unique\n * across flows, so the flow tag adds no discrimination.\n */\n readonly awaitWake: (executionId: string) => Effect.Effect<void>\n /**\n * How many waiters are currently parked on `executionId`. This is\n * observability for tests and diagnostics, not a coordination primitive:\n * a count observed now says nothing about a moment later.\n */\n readonly waiters: (executionId: string) => Effect.Effect<number>\n}\n\n/**\n * Service tag for the in-process wake bus.\n *\n * @category services\n * @since 0.1.0\n */\nexport class WakeBus extends Context.Service<WakeBus, Service>()(\"@smthrs/engine-store/WakeBus\") {}\n\n/**\n * Constructs a wake bus. Registration and delivery are plain in-memory\n * operations on the constructing process; nothing is durable.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeUnsafe = (): Service => {\n const parked = new Map<string, Set<Deferred.Deferred<void>>>()\n return WakeBus.of({\n wake: (executionId) =>\n Effect.suspend(() => {\n const waiters = parked.get(executionId)\n if (waiters === undefined) return Effect.void\n // Snapshot before succeeding: each woken waiter's release removes it\n // from the live set, and delivery must not observe that mutation.\n return Effect.forEach(\n Array.from(waiters),\n (waiter) => Deferred.succeed(waiter, undefined),\n { discard: true }\n )\n }),\n awaitWake: (executionId) =>\n Effect.acquireUseRelease(\n Effect.sync(() => {\n const waiter = Deferred.makeUnsafe<void>()\n let waiters = parked.get(executionId)\n if (waiters === undefined) {\n waiters = new Set()\n parked.set(executionId, waiters)\n }\n waiters.add(waiter)\n return { waiter, waiters }\n }),\n ({ waiter }) => Deferred.await(waiter),\n // The registration's own set is closed over rather than re-fetched:\n // the map entry can only be deleted by the release that empties it,\n // so the set this waiter joined is the set it must leave.\n ({ waiter, waiters }) =>\n Effect.sync(() => {\n waiters.delete(waiter)\n if (waiters.size === 0) parked.delete(executionId)\n })\n ),\n waiters: (executionId) => Effect.sync(() => parked.get(executionId)?.size ?? 0)\n })\n}\n\n/**\n * Constructs a wake bus effectfully. Prefer this in compositions;\n * {@link makeUnsafe} exists for construction outside a fiber.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make: Effect.Effect<Service> = Effect.sync(makeUnsafe)\n\n/**\n * A bus that never delivers: wakes are dropped and waiters park forever.\n * With it in place every resume travels the polling fallback — which is\n * exactly what a test asserting the fallback provides it for.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeNoop = (overrides?: Partial<Service>): Service =>\n WakeBus.of({\n wake: () => Effect.void,\n awaitWake: () => Effect.never,\n waiters: () => Effect.succeed(0),\n ...overrides\n })\n\n/**\n * Provides a fresh wake bus. An engine composition resolves the bus\n * optionally, so providing this layer is how a host shares one bus between\n * the engine and its own wake sources; a composition given none builds a\n * private bus.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer: Layer.Layer<WakeBus> = Layer.sync(WakeBus)(makeUnsafe)\n\n/**\n * Provides {@link makeNoop}.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerNoop = (overrides?: Partial<Service>): Layer.Layer<WakeBus> =>\n Layer.sync(WakeBus)(() => makeNoop(overrides))\n"]}
|