@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +247 -0
- package/LICENSE +21 -0
- package/README.md +146 -2
- package/dist/cjs/ArtifactGc.d.ts +235 -0
- package/dist/cjs/ArtifactGc.d.ts.map +1 -0
- package/dist/cjs/ArtifactGc.js +183 -0
- package/dist/cjs/ArtifactGc.js.map +7 -0
- package/dist/cjs/ArtifactSync.d.ts +164 -0
- package/dist/cjs/ArtifactSync.d.ts.map +1 -0
- package/dist/cjs/ArtifactSync.js +144 -0
- package/dist/cjs/ArtifactSync.js.map +7 -0
- package/dist/cjs/CacheSync.d.ts +112 -0
- package/dist/cjs/CacheSync.d.ts.map +1 -0
- package/dist/cjs/CacheSync.js +64 -0
- package/dist/cjs/CacheSync.js.map +7 -0
- package/dist/cjs/DeferredClockFold.d.ts +354 -0
- package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
- package/dist/cjs/DeferredClockFold.js +335 -0
- package/dist/cjs/DeferredClockFold.js.map +7 -0
- package/dist/cjs/DisasterRecovery.d.ts +431 -0
- package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
- package/dist/cjs/DisasterRecovery.js +453 -0
- package/dist/cjs/DisasterRecovery.js.map +7 -0
- package/dist/cjs/DurableEngineState.d.ts +776 -0
- package/dist/cjs/DurableEngineState.d.ts.map +1 -0
- package/dist/cjs/DurableEngineState.js +1536 -0
- package/dist/cjs/DurableEngineState.js.map +7 -0
- package/dist/cjs/EngineStore.d.ts +158 -0
- package/dist/cjs/EngineStore.d.ts.map +1 -0
- package/dist/cjs/EngineStore.js +398 -0
- package/dist/cjs/EngineStore.js.map +7 -0
- package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
- package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/cjs/EngineStoreMetrics.js +135 -0
- package/dist/cjs/EngineStoreMetrics.js.map +7 -0
- package/dist/cjs/Errors.d.ts +22 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +39 -0
- package/dist/cjs/Errors.js.map +7 -0
- package/dist/cjs/EventTypes.d.ts +27 -0
- package/dist/cjs/EventTypes.d.ts.map +1 -0
- package/dist/cjs/EventTypes.js +37 -0
- package/dist/cjs/EventTypes.js.map +7 -0
- package/dist/cjs/ExecutionFacts.d.ts +59 -0
- package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
- package/dist/cjs/ExecutionFacts.js +123 -0
- package/dist/cjs/ExecutionFacts.js.map +7 -0
- package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
- package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/cjs/ExecutionSnapshot.js +111 -0
- package/dist/cjs/ExecutionSnapshot.js.map +7 -0
- package/dist/cjs/Inconsistency.d.ts +154 -0
- package/dist/cjs/Inconsistency.d.ts.map +1 -0
- package/dist/cjs/Inconsistency.js +135 -0
- package/dist/cjs/Inconsistency.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +56 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +78 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/OwnerIdentity.d.ts +91 -0
- package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
- package/dist/cjs/OwnerIdentity.js +65 -0
- package/dist/cjs/OwnerIdentity.js.map +7 -0
- package/dist/cjs/PlanInputStore.d.ts +110 -0
- package/dist/cjs/PlanInputStore.d.ts.map +1 -0
- package/dist/cjs/PlanInputStore.js +224 -0
- package/dist/cjs/PlanInputStore.js.map +7 -0
- package/dist/cjs/PlanMergeStore.d.ts +113 -0
- package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
- package/dist/cjs/PlanMergeStore.js +255 -0
- package/dist/cjs/PlanMergeStore.js.map +7 -0
- package/dist/cjs/PlanScheduler.d.ts +363 -0
- package/dist/cjs/PlanScheduler.d.ts.map +1 -0
- package/dist/cjs/PlanScheduler.js +1090 -0
- package/dist/cjs/PlanScheduler.js.map +7 -0
- package/dist/cjs/Reconciliation.d.ts +175 -0
- package/dist/cjs/Reconciliation.d.ts.map +1 -0
- package/dist/cjs/Reconciliation.js +119 -0
- package/dist/cjs/Reconciliation.js.map +7 -0
- package/dist/cjs/ReplayOnly.d.ts +91 -0
- package/dist/cjs/ReplayOnly.d.ts.map +1 -0
- package/dist/cjs/ReplayOnly.js +52 -0
- package/dist/cjs/ReplayOnly.js.map +7 -0
- package/dist/cjs/Retention.d.ts +113 -0
- package/dist/cjs/Retention.d.ts.map +1 -0
- package/dist/cjs/Retention.js +99 -0
- package/dist/cjs/Retention.js.map +7 -0
- package/dist/cjs/RunCatalogRead.d.ts +17 -0
- package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
- package/dist/cjs/RunCatalogRead.js +33 -0
- package/dist/cjs/RunCatalogRead.js.map +7 -0
- package/dist/cjs/RunChangeFeed.d.ts +75 -0
- package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
- package/dist/cjs/RunChangeFeed.js +96 -0
- package/dist/cjs/RunChangeFeed.js.map +7 -0
- package/dist/cjs/RunState.d.ts +116 -0
- package/dist/cjs/RunState.d.ts.map +1 -0
- package/dist/cjs/RunState.js +76 -0
- package/dist/cjs/RunState.js.map +7 -0
- package/dist/cjs/Selection.d.ts +495 -0
- package/dist/cjs/Selection.d.ts.map +1 -0
- package/dist/cjs/Selection.js +288 -0
- package/dist/cjs/Selection.js.map +7 -0
- package/dist/cjs/SelectionStore.d.ts +141 -0
- package/dist/cjs/SelectionStore.d.ts.map +1 -0
- package/dist/cjs/SelectionStore.js +229 -0
- package/dist/cjs/SelectionStore.js.map +7 -0
- package/dist/cjs/StepBoundary.d.ts +501 -0
- package/dist/cjs/StepBoundary.d.ts.map +1 -0
- package/dist/cjs/StepBoundary.js +619 -0
- package/dist/cjs/StepBoundary.js.map +7 -0
- package/dist/cjs/StepCacheFold.d.ts +148 -0
- package/dist/cjs/StepCacheFold.d.ts.map +1 -0
- package/dist/cjs/StepCacheFold.js +131 -0
- package/dist/cjs/StepCacheFold.js.map +7 -0
- package/dist/cjs/StepSandbox.d.ts +78 -0
- package/dist/cjs/StepSandbox.d.ts.map +1 -0
- package/dist/cjs/StepSandbox.js +75 -0
- package/dist/cjs/StepSandbox.js.map +7 -0
- package/dist/cjs/WakeBus.d.ts +116 -0
- package/dist/cjs/WakeBus.d.ts.map +1 -0
- package/dist/cjs/WakeBus.js +89 -0
- package/dist/cjs/WakeBus.js.map +7 -0
- package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
- package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/cjs/WorkspaceSandbox.js +711 -0
- package/dist/cjs/WorkspaceSandbox.js.map +7 -0
- package/dist/cjs/index.d.ts +157 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
- package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/ActionPersistence.js +1395 -0
- package/dist/cjs/internal/ActionPersistence.js.map +7 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/cjs/internal/ArtifactRoots.js +89 -0
- package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptAdmission.js +52 -0
- package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptLifecycle.js +112 -0
- package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
- package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
- package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptProbe.js +66 -0
- package/dist/cjs/internal/AttemptProbe.js.map +7 -0
- package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
- package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAdmission.js +71 -0
- package/dist/cjs/internal/CacheAdmission.js.map +7 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeHistory.js +61 -0
- package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
- package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
- package/dist/cjs/internal/CachePublication.d.ts +97 -0
- package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
- package/dist/cjs/internal/CachePublication.js +80 -0
- package/dist/cjs/internal/CachePublication.js.map +7 -0
- package/dist/cjs/internal/CallFacts.d.ts +15 -0
- package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
- package/dist/cjs/internal/CallFacts.js +97 -0
- package/dist/cjs/internal/CallFacts.js.map +7 -0
- package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
- package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/cjs/internal/CopiedRecord.js +134 -0
- package/dist/cjs/internal/CopiedRecord.js.map +7 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/DeferredPersistence.js +270 -0
- package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
- package/dist/cjs/internal/EffectRecords.d.ts +92 -0
- package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
- package/dist/cjs/internal/EffectRecords.js +63 -0
- package/dist/cjs/internal/EffectRecords.js.map +7 -0
- package/dist/cjs/internal/EngineJj.d.ts +30 -0
- package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
- package/dist/cjs/internal/EngineJj.js +42 -0
- package/dist/cjs/internal/EngineJj.js.map +7 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/cjs/internal/EngineStateSchema.js +58 -0
- package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js +199 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
- package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
- package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/cjs/internal/ExitEncoding.js +236 -0
- package/dist/cjs/internal/ExitEncoding.js.map +7 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
- package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
- package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/cjs/internal/FileEnumeration.js +194 -0
- package/dist/cjs/internal/FileEnumeration.js.map +7 -0
- package/dist/cjs/internal/HostReflection.d.ts +80 -0
- package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
- package/dist/cjs/internal/HostReflection.js +43 -0
- package/dist/cjs/internal/HostReflection.js.map +7 -0
- package/dist/cjs/internal/JournalRecords.d.ts +325 -0
- package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
- package/dist/cjs/internal/JournalRecords.js +122 -0
- package/dist/cjs/internal/JournalRecords.js.map +7 -0
- package/dist/cjs/internal/NodeJournal.d.ts +157 -0
- package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
- package/dist/cjs/internal/NodeJournal.js +192 -0
- package/dist/cjs/internal/NodeJournal.js.map +7 -0
- package/dist/cjs/internal/Ordering.d.ts +14 -0
- package/dist/cjs/internal/Ordering.d.ts.map +1 -0
- package/dist/cjs/internal/Ordering.js +25 -0
- package/dist/cjs/internal/Ordering.js.map +7 -0
- package/dist/cjs/internal/PlanInputs.d.ts +14 -0
- package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
- package/dist/cjs/internal/PlanInputs.js +78 -0
- package/dist/cjs/internal/PlanInputs.js.map +7 -0
- package/dist/cjs/internal/PlanMerges.d.ts +178 -0
- package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
- package/dist/cjs/internal/PlanMerges.js +125 -0
- package/dist/cjs/internal/PlanMerges.js.map +7 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/cjs/internal/ProvenanceSlot.js +53 -0
- package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/cjs/internal/ResultEnvelope.js +90 -0
- package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
- package/dist/cjs/internal/RetentionOps.d.ts +414 -0
- package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
- package/dist/cjs/internal/RetentionOps.js +354 -0
- package/dist/cjs/internal/RetentionOps.js.map +7 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/cjs/internal/RunCatalogOps.js +85 -0
- package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
- package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
- package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/cjs/internal/RunCoordinator.js +123 -0
- package/dist/cjs/internal/RunCoordinator.js.map +7 -0
- package/dist/cjs/internal/RunDriver.d.ts +192 -0
- package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
- package/dist/cjs/internal/RunDriver.js +1584 -0
- package/dist/cjs/internal/RunDriver.js.map +7 -0
- package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
- package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/RunLifecycle.js +63 -0
- package/dist/cjs/internal/RunLifecycle.js.map +7 -0
- package/dist/cjs/internal/RunListing.d.ts +78 -0
- package/dist/cjs/internal/RunListing.d.ts.map +1 -0
- package/dist/cjs/internal/RunListing.js +171 -0
- package/dist/cjs/internal/RunListing.js.map +7 -0
- package/dist/cjs/internal/RunListingError.d.ts +35 -0
- package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
- package/dist/cjs/internal/RunListingError.js +47 -0
- package/dist/cjs/internal/RunListingError.js.map +7 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/cjs/internal/RuntimeGraph.js +180 -0
- package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/cjs/internal/SandboxedExecution.js +104 -0
- package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
- package/dist/cjs/internal/StateTransaction.d.ts +44 -0
- package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
- package/dist/cjs/internal/StateTransaction.js +52 -0
- package/dist/cjs/internal/StateTransaction.js.map +7 -0
- package/dist/cjs/internal/StepFacts.d.ts +14 -0
- package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
- package/dist/cjs/internal/StepFacts.js +58 -0
- package/dist/cjs/internal/StepFacts.js.map +7 -0
- package/dist/cjs/internal/TypedEvents.d.ts +14 -0
- package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
- package/dist/cjs/internal/TypedEvents.js +37 -0
- package/dist/cjs/internal/TypedEvents.js.map +7 -0
- package/dist/cjs/migrations/0001_initial.d.ts +17 -0
- package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_initial.js +61 -0
- package/dist/cjs/migrations/0001_initial.js.map +7 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_selection_store.js +56 -0
- package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
- package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_plan_environment.js +56 -0
- package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_plan_merges.js +82 -0
- package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_execution_listing.js +101 -0
- package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestStores.d.ts +89 -0
- package/dist/cjs/test/TestStores.d.ts.map +1 -0
- package/dist/cjs/test/TestStores.js +98 -0
- package/dist/cjs/test/TestStores.js.map +7 -0
- package/dist/esm/ArtifactGc.d.ts +235 -0
- package/dist/esm/ArtifactGc.d.ts.map +1 -0
- package/dist/esm/ArtifactGc.js +268 -0
- package/dist/esm/ArtifactGc.js.map +1 -0
- package/dist/esm/ArtifactSync.d.ts +164 -0
- package/dist/esm/ArtifactSync.d.ts.map +1 -0
- package/dist/esm/ArtifactSync.js +176 -0
- package/dist/esm/ArtifactSync.js.map +1 -0
- package/dist/esm/CacheSync.d.ts +112 -0
- package/dist/esm/CacheSync.d.ts.map +1 -0
- package/dist/esm/CacheSync.js +94 -0
- package/dist/esm/CacheSync.js.map +1 -0
- package/dist/esm/DeferredClockFold.d.ts +354 -0
- package/dist/esm/DeferredClockFold.d.ts.map +1 -0
- package/dist/esm/DeferredClockFold.js +472 -0
- package/dist/esm/DeferredClockFold.js.map +1 -0
- package/dist/esm/DisasterRecovery.d.ts +431 -0
- package/dist/esm/DisasterRecovery.d.ts.map +1 -0
- package/dist/esm/DisasterRecovery.js +523 -0
- package/dist/esm/DisasterRecovery.js.map +1 -0
- package/dist/esm/DurableEngineState.d.ts +776 -0
- package/dist/esm/DurableEngineState.d.ts.map +1 -0
- package/dist/esm/DurableEngineState.js +1648 -0
- package/dist/esm/DurableEngineState.js.map +1 -0
- package/dist/esm/EngineStore.d.ts +158 -0
- package/dist/esm/EngineStore.d.ts.map +1 -0
- package/dist/esm/EngineStore.js +403 -0
- package/dist/esm/EngineStore.js.map +1 -0
- package/dist/esm/EngineStoreMetrics.d.ts +276 -0
- package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/esm/EngineStoreMetrics.js +260 -0
- package/dist/esm/EngineStoreMetrics.js.map +1 -0
- package/dist/esm/Errors.d.ts +22 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +22 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/EventTypes.d.ts +27 -0
- package/dist/esm/EventTypes.d.ts.map +1 -0
- package/dist/esm/EventTypes.js +27 -0
- package/dist/esm/EventTypes.js.map +1 -0
- package/dist/esm/ExecutionFacts.d.ts +59 -0
- package/dist/esm/ExecutionFacts.d.ts.map +1 -0
- package/dist/esm/ExecutionFacts.js +96 -0
- package/dist/esm/ExecutionFacts.js.map +1 -0
- package/dist/esm/ExecutionSnapshot.d.ts +117 -0
- package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/esm/ExecutionSnapshot.js +95 -0
- package/dist/esm/ExecutionSnapshot.js.map +1 -0
- package/dist/esm/Inconsistency.d.ts +154 -0
- package/dist/esm/Inconsistency.d.ts.map +1 -0
- package/dist/esm/Inconsistency.js +133 -0
- package/dist/esm/Inconsistency.js.map +1 -0
- package/dist/esm/Migrations.d.ts +56 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +91 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/OwnerIdentity.d.ts +91 -0
- package/dist/esm/OwnerIdentity.d.ts.map +1 -0
- package/dist/esm/OwnerIdentity.js +99 -0
- package/dist/esm/OwnerIdentity.js.map +1 -0
- package/dist/esm/PlanInputStore.d.ts +110 -0
- package/dist/esm/PlanInputStore.d.ts.map +1 -0
- package/dist/esm/PlanInputStore.js +207 -0
- package/dist/esm/PlanInputStore.js.map +1 -0
- package/dist/esm/PlanMergeStore.d.ts +113 -0
- package/dist/esm/PlanMergeStore.d.ts.map +1 -0
- package/dist/esm/PlanMergeStore.js +244 -0
- package/dist/esm/PlanMergeStore.js.map +1 -0
- package/dist/esm/PlanScheduler.d.ts +363 -0
- package/dist/esm/PlanScheduler.d.ts.map +1 -0
- package/dist/esm/PlanScheduler.js +1321 -0
- package/dist/esm/PlanScheduler.js.map +1 -0
- package/dist/esm/Reconciliation.d.ts +175 -0
- package/dist/esm/Reconciliation.d.ts.map +1 -0
- package/dist/esm/Reconciliation.js +175 -0
- package/dist/esm/Reconciliation.js.map +1 -0
- package/dist/esm/ReplayOnly.d.ts +91 -0
- package/dist/esm/ReplayOnly.d.ts.map +1 -0
- package/dist/esm/ReplayOnly.js +59 -0
- package/dist/esm/ReplayOnly.js.map +1 -0
- package/dist/esm/Retention.d.ts +113 -0
- package/dist/esm/Retention.d.ts.map +1 -0
- package/dist/esm/Retention.js +139 -0
- package/dist/esm/Retention.js.map +1 -0
- package/dist/esm/RunCatalogRead.d.ts +17 -0
- package/dist/esm/RunCatalogRead.d.ts.map +1 -0
- package/dist/esm/RunCatalogRead.js +17 -0
- package/dist/esm/RunCatalogRead.js.map +1 -0
- package/dist/esm/RunChangeFeed.d.ts +75 -0
- package/dist/esm/RunChangeFeed.d.ts.map +1 -0
- package/dist/esm/RunChangeFeed.js +81 -0
- package/dist/esm/RunChangeFeed.js.map +1 -0
- package/dist/esm/RunState.d.ts +116 -0
- package/dist/esm/RunState.d.ts.map +1 -0
- package/dist/esm/RunState.js +109 -0
- package/dist/esm/RunState.js.map +1 -0
- package/dist/esm/Selection.d.ts +495 -0
- package/dist/esm/Selection.d.ts.map +1 -0
- package/dist/esm/Selection.js +482 -0
- package/dist/esm/Selection.js.map +1 -0
- package/dist/esm/SelectionStore.d.ts +141 -0
- package/dist/esm/SelectionStore.d.ts.map +1 -0
- package/dist/esm/SelectionStore.js +215 -0
- package/dist/esm/SelectionStore.js.map +1 -0
- package/dist/esm/StepBoundary.d.ts +501 -0
- package/dist/esm/StepBoundary.d.ts.map +1 -0
- package/dist/esm/StepBoundary.js +919 -0
- package/dist/esm/StepBoundary.js.map +1 -0
- package/dist/esm/StepCacheFold.d.ts +148 -0
- package/dist/esm/StepCacheFold.d.ts.map +1 -0
- package/dist/esm/StepCacheFold.js +201 -0
- package/dist/esm/StepCacheFold.js.map +1 -0
- package/dist/esm/StepSandbox.d.ts +78 -0
- package/dist/esm/StepSandbox.d.ts.map +1 -0
- package/dist/esm/StepSandbox.js +70 -0
- package/dist/esm/StepSandbox.js.map +1 -0
- package/dist/esm/WakeBus.d.ts +116 -0
- package/dist/esm/WakeBus.d.ts.map +1 -0
- package/dist/esm/WakeBus.js +121 -0
- package/dist/esm/WakeBus.js.map +1 -0
- package/dist/esm/WorkspaceSandbox.d.ts +619 -0
- package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/esm/WorkspaceSandbox.js +985 -0
- package/dist/esm/WorkspaceSandbox.js.map +1 -0
- package/dist/esm/index.d.ts +157 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +157 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ActionPersistence.d.ts +276 -0
- package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/esm/internal/ActionPersistence.js +2306 -0
- package/dist/esm/internal/ActionPersistence.js.map +1 -0
- package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
- package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/esm/internal/ArtifactRoots.js +76 -0
- package/dist/esm/internal/ArtifactRoots.js.map +1 -0
- package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
- package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/esm/internal/AttemptAdmission.js +52 -0
- package/dist/esm/internal/AttemptAdmission.js.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.js +104 -0
- package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
- package/dist/esm/internal/AttemptProbe.d.ts +53 -0
- package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/esm/internal/AttemptProbe.js +83 -0
- package/dist/esm/internal/AttemptProbe.js.map +1 -0
- package/dist/esm/internal/CacheAdmission.d.ts +79 -0
- package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/esm/internal/CacheAdmission.js +72 -0
- package/dist/esm/internal/CacheAdmission.js.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.js +49 -0
- package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
- package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.js +73 -0
- package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
- package/dist/esm/internal/CachePublication.d.ts +97 -0
- package/dist/esm/internal/CachePublication.d.ts.map +1 -0
- package/dist/esm/internal/CachePublication.js +116 -0
- package/dist/esm/internal/CachePublication.js.map +1 -0
- package/dist/esm/internal/CallFacts.d.ts +15 -0
- package/dist/esm/internal/CallFacts.d.ts.map +1 -0
- package/dist/esm/internal/CallFacts.js +83 -0
- package/dist/esm/internal/CallFacts.js.map +1 -0
- package/dist/esm/internal/CopiedRecord.d.ts +61 -0
- package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/esm/internal/CopiedRecord.js +165 -0
- package/dist/esm/internal/CopiedRecord.js.map +1 -0
- package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
- package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/esm/internal/DeferredPersistence.js +240 -0
- package/dist/esm/internal/DeferredPersistence.js.map +1 -0
- package/dist/esm/internal/EffectRecords.d.ts +92 -0
- package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
- package/dist/esm/internal/EffectRecords.js +94 -0
- package/dist/esm/internal/EffectRecords.js.map +1 -0
- package/dist/esm/internal/EngineJj.d.ts +30 -0
- package/dist/esm/internal/EngineJj.d.ts.map +1 -0
- package/dist/esm/internal/EngineJj.js +29 -0
- package/dist/esm/internal/EngineJj.js.map +1 -0
- package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
- package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/esm/internal/EngineStateSchema.js +53 -0
- package/dist/esm/internal/EngineStateSchema.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
- package/dist/esm/internal/ExitEncoding.d.ts +180 -0
- package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/esm/internal/ExitEncoding.js +361 -0
- package/dist/esm/internal/ExitEncoding.js.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
- package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
- package/dist/esm/internal/FileEnumeration.d.ts +127 -0
- package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/esm/internal/FileEnumeration.js +236 -0
- package/dist/esm/internal/FileEnumeration.js.map +1 -0
- package/dist/esm/internal/HostReflection.d.ts +80 -0
- package/dist/esm/internal/HostReflection.d.ts.map +1 -0
- package/dist/esm/internal/HostReflection.js +98 -0
- package/dist/esm/internal/HostReflection.js.map +1 -0
- package/dist/esm/internal/JournalRecords.d.ts +325 -0
- package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
- package/dist/esm/internal/JournalRecords.js +306 -0
- package/dist/esm/internal/JournalRecords.js.map +1 -0
- package/dist/esm/internal/NodeJournal.d.ts +157 -0
- package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
- package/dist/esm/internal/NodeJournal.js +298 -0
- package/dist/esm/internal/NodeJournal.js.map +1 -0
- package/dist/esm/internal/Ordering.d.ts +14 -0
- package/dist/esm/internal/Ordering.d.ts.map +1 -0
- package/dist/esm/internal/Ordering.js +14 -0
- package/dist/esm/internal/Ordering.js.map +1 -0
- package/dist/esm/internal/PlanInputs.d.ts +14 -0
- package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
- package/dist/esm/internal/PlanInputs.js +57 -0
- package/dist/esm/internal/PlanInputs.js.map +1 -0
- package/dist/esm/internal/PlanMerges.d.ts +178 -0
- package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
- package/dist/esm/internal/PlanMerges.js +113 -0
- package/dist/esm/internal/PlanMerges.js.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.js +39 -0
- package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
- package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
- package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/esm/internal/ResultEnvelope.js +83 -0
- package/dist/esm/internal/ResultEnvelope.js.map +1 -0
- package/dist/esm/internal/RetentionOps.d.ts +414 -0
- package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
- package/dist/esm/internal/RetentionOps.js +576 -0
- package/dist/esm/internal/RetentionOps.js.map +1 -0
- package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
- package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/esm/internal/RunCatalogOps.js +120 -0
- package/dist/esm/internal/RunCatalogOps.js.map +1 -0
- package/dist/esm/internal/RunCoordinator.d.ts +78 -0
- package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/esm/internal/RunCoordinator.js +115 -0
- package/dist/esm/internal/RunCoordinator.js.map +1 -0
- package/dist/esm/internal/RunDriver.d.ts +192 -0
- package/dist/esm/internal/RunDriver.d.ts.map +1 -0
- package/dist/esm/internal/RunDriver.js +2334 -0
- package/dist/esm/internal/RunDriver.js.map +1 -0
- package/dist/esm/internal/RunLifecycle.d.ts +22 -0
- package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/RunLifecycle.js +49 -0
- package/dist/esm/internal/RunLifecycle.js.map +1 -0
- package/dist/esm/internal/RunListing.d.ts +78 -0
- package/dist/esm/internal/RunListing.d.ts.map +1 -0
- package/dist/esm/internal/RunListing.js +146 -0
- package/dist/esm/internal/RunListing.js.map +1 -0
- package/dist/esm/internal/RunListingError.d.ts +35 -0
- package/dist/esm/internal/RunListingError.d.ts.map +1 -0
- package/dist/esm/internal/RunListingError.js +27 -0
- package/dist/esm/internal/RunListingError.js.map +1 -0
- package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
- package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/esm/internal/RuntimeGraph.js +182 -0
- package/dist/esm/internal/RuntimeGraph.js.map +1 -0
- package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
- package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/esm/internal/SandboxedExecution.js +107 -0
- package/dist/esm/internal/SandboxedExecution.js.map +1 -0
- package/dist/esm/internal/StateTransaction.d.ts +44 -0
- package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
- package/dist/esm/internal/StateTransaction.js +54 -0
- package/dist/esm/internal/StateTransaction.js.map +1 -0
- package/dist/esm/internal/StepFacts.d.ts +14 -0
- package/dist/esm/internal/StepFacts.d.ts.map +1 -0
- package/dist/esm/internal/StepFacts.js +35 -0
- package/dist/esm/internal/StepFacts.js.map +1 -0
- package/dist/esm/internal/TypedEvents.d.ts +14 -0
- package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
- package/dist/esm/internal/TypedEvents.js +14 -0
- package/dist/esm/internal/TypedEvents.js.map +1 -0
- package/dist/esm/migrations/0001_initial.d.ts +17 -0
- package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
- package/dist/esm/migrations/0001_initial.js +41 -0
- package/dist/esm/migrations/0001_initial.js.map +1 -0
- package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
- package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/esm/migrations/0002_selection_store.js +34 -0
- package/dist/esm/migrations/0002_selection_store.js.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.js +70 -0
- package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.js +33 -0
- package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.js +59 -0
- package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.js +81 -0
- package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
- package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
- package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
- package/dist/esm/test/TestStores.d.ts +89 -0
- package/dist/esm/test/TestStores.d.ts.map +1 -0
- package/dist/esm/test/TestStores.js +103 -0
- package/dist/esm/test/TestStores.js.map +1 -0
- package/docs/README.md +113 -0
- package/docs/api.md +1494 -0
- package/docs/concepts/attempts-and-replay.md +149 -0
- package/docs/concepts/cache-admission.md +265 -0
- package/docs/concepts/call-facts.md +86 -0
- package/docs/concepts/durable-waits.md +175 -0
- package/docs/concepts/execution-facts.md +90 -0
- package/docs/concepts/ownership-and-fencing.md +128 -0
- package/docs/concepts/step-boundaries.md +148 -0
- package/docs/concepts/workspace-transactions.md +199 -0
- package/docs/event-types.md +14 -0
- package/docs/guides/back-up-and-restore.md +164 -0
- package/docs/guides/collect-unreferenced-artifacts.md +128 -0
- package/docs/guides/compose-a-durable-engine.md +146 -0
- package/docs/guides/coordinate-two-processes.md +120 -0
- package/docs/guides/defer-work-with-selection.md +171 -0
- package/docs/guides/delete-old-run-history.md +154 -0
- package/docs/guides/drive-a-plan.md +314 -0
- package/docs/guides/observe-engine-metrics.md +98 -0
- package/docs/guides/observe-executions.md +187 -0
- package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
- package/docs/guides/share-a-cache-across-machines.md +134 -0
- package/docs/guides/testing.md +123 -0
- package/docs/installation.md +102 -0
- package/docs/quickstart.md +215 -0
- package/docs/troubleshooting.md +347 -0
- package/package.json +438 -3
- package/src/ArtifactGc.ts +408 -0
- package/src/ArtifactSync.ts +278 -0
- package/src/CacheSync.ts +131 -0
- package/src/DeferredClockFold.ts +586 -0
- package/src/DisasterRecovery.ts +888 -0
- package/src/DurableEngineState.ts +2656 -0
- package/src/EngineStore.ts +656 -0
- package/src/EngineStoreMetrics.ts +331 -0
- package/src/Errors.ts +28 -0
- package/src/EventTypes.ts +27 -0
- package/src/ExecutionFacts.ts +125 -0
- package/src/ExecutionSnapshot.ts +186 -0
- package/src/Inconsistency.ts +253 -0
- package/src/Migrations.ts +95 -0
- package/src/OwnerIdentity.ts +125 -0
- package/src/PlanInputStore.ts +292 -0
- package/src/PlanMergeStore.ts +330 -0
- package/src/PlanScheduler.ts +1806 -0
- package/src/Reconciliation.ts +224 -0
- package/src/ReplayOnly.ts +95 -0
- package/src/Retention.ts +214 -0
- package/src/RunCatalogRead.ts +27 -0
- package/src/RunChangeFeed.ts +125 -0
- package/src/RunState.ts +137 -0
- package/src/Selection.ts +683 -0
- package/src/SelectionStore.ts +353 -0
- package/src/StepBoundary.ts +1165 -0
- package/src/StepCacheFold.ts +244 -0
- package/src/StepSandbox.ts +110 -0
- package/src/WakeBus.ts +167 -0
- package/src/WorkspaceSandbox.ts +1604 -0
- package/src/index.ts +185 -0
- package/src/internal/ActionPersistence.ts +2687 -0
- package/src/internal/ArtifactRoots.ts +92 -0
- package/src/internal/AttemptAdmission.ts +76 -0
- package/src/internal/AttemptLifecycle.ts +163 -0
- package/src/internal/AttemptProbe.ts +90 -0
- package/src/internal/CacheAdmission.ts +133 -0
- package/src/internal/CacheAgeHistory.ts +58 -0
- package/src/internal/CacheAgeVerdicts.ts +61 -0
- package/src/internal/CacheOutputPolicy.ts +82 -0
- package/src/internal/CachePublication.ts +153 -0
- package/src/internal/CallFacts.ts +87 -0
- package/src/internal/CopiedRecord.ts +201 -0
- package/src/internal/DeferredPersistence.ts +459 -0
- package/src/internal/EffectRecords.ts +136 -0
- package/src/internal/EngineJj.ts +30 -0
- package/src/internal/EngineStateSchema.ts +92 -0
- package/src/internal/ExecutionSnapshotRead.ts +298 -0
- package/src/internal/ExecutionSnapshotRelations.ts +121 -0
- package/src/internal/ExitEncoding.ts +453 -0
- package/src/internal/FileBoundarySnapshot.ts +39 -0
- package/src/internal/FileEnumeration.ts +334 -0
- package/src/internal/HostReflection.ts +128 -0
- package/src/internal/JournalRecords.ts +396 -0
- package/src/internal/NodeJournal.ts +340 -0
- package/src/internal/Ordering.ts +14 -0
- package/src/internal/PlanInputs.ts +62 -0
- package/src/internal/PlanMerges.ts +123 -0
- package/src/internal/ProvenanceSlot.ts +52 -0
- package/src/internal/ResultEnvelope.ts +118 -0
- package/src/internal/RetentionOps.ts +865 -0
- package/src/internal/RunCatalogOps.ts +174 -0
- package/src/internal/RunCoordinator.ts +215 -0
- package/src/internal/RunDriver.ts +3152 -0
- package/src/internal/RunLifecycle.ts +53 -0
- package/src/internal/RunListing.ts +210 -0
- package/src/internal/RunListingError.ts +37 -0
- package/src/internal/RuntimeGraph.ts +253 -0
- package/src/internal/SandboxedExecution.ts +165 -0
- package/src/internal/StateTransaction.ts +71 -0
- package/src/internal/StepFacts.ts +36 -0
- package/src/internal/TypedEvents.ts +29 -0
- package/src/migrations/0001_initial.ts +51 -0
- package/src/migrations/0002_selection_store.ts +38 -0
- package/src/migrations/0003_plan_inputs.ts +75 -0
- package/src/migrations/0004_plan_environment.ts +34 -0
- package/src/migrations/0005_plan_merges.ts +60 -0
- package/src/migrations/0006_execution_listing.ts +86 -0
- package/src/migrations/0007_run_parent_sequence.ts +19 -0
- package/src/migrations/0008_deferred_consumption.ts +27 -0
- package/src/migrations/0009_deferred_clock_facts.ts +163 -0
- package/src/migrations/0010_pending_cancellation.ts +20 -0
- package/src/test/TestStores.ts +145 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Receiver for detected engine inconsistencies.
|
|
3
|
+
*
|
|
4
|
+
* Modeled on Skyframe's `GraphInconsistencyReceiver`: the store layer detects
|
|
5
|
+
* an invariant violation — today, a content-addressed cache key that produced
|
|
6
|
+
* a different result than the recorded row — and this service decides whether
|
|
7
|
+
* the run fails or tolerates it. Either way the conflict is journaled, so the
|
|
8
|
+
* detector is never wired to /dev/null.
|
|
9
|
+
*
|
|
10
|
+
* The `note` signature deliberately matches the plugin spec's
|
|
11
|
+
* `cacheInconsistency` hook (`(event) => Effect<InconsistencyVerdict>`); the
|
|
12
|
+
* strict layer is the future default plugin.
|
|
13
|
+
*
|
|
14
|
+
* The core default is strict so an invariant violation cannot pass silently.
|
|
15
|
+
*
|
|
16
|
+
* Governing designs: `docs/concepts/attempts-and-replay.md` and
|
|
17
|
+
* `apps/site/src/content/docs/docs/concepts/flows-actions-plans.mdx`.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
import { FlowEngine } from "@smthrs/engine";
|
|
22
|
+
import { Journal } from "@smthrs/journal";
|
|
23
|
+
import * as Context from "effect/Context";
|
|
24
|
+
import * as Effect from "effect/Effect";
|
|
25
|
+
import * as Layer from "effect/Layer";
|
|
26
|
+
import * as JournalRecords from "./internal/JournalRecords.js";
|
|
27
|
+
/**
|
|
28
|
+
* Service tag for the engine inconsistency receiver.
|
|
29
|
+
*
|
|
30
|
+
* @category services
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
*/
|
|
33
|
+
export class Inconsistency extends Context.Service()("@smthrs/engine-store/Inconsistency") {
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builds a receiver that journals every conflict under the run that attempted
|
|
37
|
+
* the write and returns a fixed verdict.
|
|
38
|
+
*
|
|
39
|
+
* The record goes through the journal's durable channel: a cache conflict is
|
|
40
|
+
* hermeticity evidence, and a `tolerate` verdict that silently dropped its
|
|
41
|
+
* only record would wire the detector to /dev/null (issue #10).
|
|
42
|
+
*
|
|
43
|
+
* @category constructors
|
|
44
|
+
* @since 0.1.0
|
|
45
|
+
*/
|
|
46
|
+
export const make = (options) => ({
|
|
47
|
+
note: Effect.fn("Inconsistency.note")((event) => Effect.as(options.journal.emitDurable(JournalRecords.cacheConflict({
|
|
48
|
+
runId: event.attempted.recordedRunId,
|
|
49
|
+
sourceId: "flows/engine-store/inconsistency",
|
|
50
|
+
lineageId: FlowEngine.Lineage.root(event.attempted.recordedRunId)
|
|
51
|
+
}, {
|
|
52
|
+
// `@smthrs/journal` redacts the credential word `key`. A durable
|
|
53
|
+
// content identity must use the specific, non-credential name.
|
|
54
|
+
cacheKey: event.key,
|
|
55
|
+
verdict: options.verdict,
|
|
56
|
+
existing: event.existing === undefined ? null : {
|
|
57
|
+
recordedRunId: event.existing.recordedRunId,
|
|
58
|
+
recordedEventSeq: event.existing.recordedEventSeq,
|
|
59
|
+
createdAtMs: event.existing.createdAtMs
|
|
60
|
+
},
|
|
61
|
+
attempted: {
|
|
62
|
+
recordedRunId: event.attempted.recordedRunId,
|
|
63
|
+
recordedEventSeq: event.attempted.recordedEventSeq,
|
|
64
|
+
createdAtMs: event.attempted.createdAtMs
|
|
65
|
+
}
|
|
66
|
+
}), options.owner), options.verdict)),
|
|
67
|
+
noteCorruption: Effect.fn("Inconsistency.noteCorruption")((event) => Effect.as(options.journal.emitDurable(JournalRecords.cacheCorruption({
|
|
68
|
+
runId: event.runId,
|
|
69
|
+
lineageId: FlowEngine.Lineage.root(event.runId),
|
|
70
|
+
// The producer identity is the corruption evidence plus the
|
|
71
|
+
// recorded row generation (issues #156, #172): a caller
|
|
72
|
+
// re-observing the same corrupt row re-emits an exact producer
|
|
73
|
+
// duplicate the journal collapses, while an identically corrupt
|
|
74
|
+
// row recorded after eviction and healing has new provenance and
|
|
75
|
+
// lands as a distinct incident. Attempt-row evidence has no cache
|
|
76
|
+
// provenance, so its explicit local markers retain same-row
|
|
77
|
+
// convergence. A record already landed by another lineage under
|
|
78
|
+
// this identity surfaces as an idempotency conflict; either way
|
|
79
|
+
// evidence for that row generation exists exactly once.
|
|
80
|
+
sourceId: `flows/engine-store/inconsistency:corruption:${event.keyDigest}:${event.path}:${event.recordedDigest}:${event.measuredDigest}:${event.recordedRunId ?? "local"}:${event.recordedEventSeq ?? "local"}`,
|
|
81
|
+
sourceSeq: 0
|
|
82
|
+
}, {
|
|
83
|
+
keyDigest: event.keyDigest,
|
|
84
|
+
verdict: options.verdict,
|
|
85
|
+
path: event.path,
|
|
86
|
+
recordedDigest: event.recordedDigest,
|
|
87
|
+
measuredDigest: event.measuredDigest,
|
|
88
|
+
recordedRunId: event.recordedRunId ?? null,
|
|
89
|
+
recordedEventSeq: event.recordedEventSeq ?? null
|
|
90
|
+
}), options.owner).pipe(Effect.catch((error) => error.code === "idempotency_conflict" ? Effect.succeed(undefined) : Effect.fail(error))), options.verdict))
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Builds a receiver from overrides. The default notes nothing and tolerates.
|
|
94
|
+
*
|
|
95
|
+
* @category constructors
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
*/
|
|
98
|
+
export const makeNoop = (overrides = {}) => ({
|
|
99
|
+
note: Effect.fn("Inconsistency.note")(() => Effect.succeed("tolerate")),
|
|
100
|
+
noteCorruption: Effect.fn("Inconsistency.noteCorruption")(() => Effect.succeed("tolerate")),
|
|
101
|
+
...overrides
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Provides a receiver that never journals and always tolerates.
|
|
105
|
+
*
|
|
106
|
+
* @category layers
|
|
107
|
+
* @since 0.1.0
|
|
108
|
+
*/
|
|
109
|
+
export const layerNoop = (overrides = {}) => Layer.succeed(Inconsistency)(makeNoop(overrides));
|
|
110
|
+
/**
|
|
111
|
+
* Journals every cache conflict and fails the run. This is the default
|
|
112
|
+
* receiver for engine wiring: a non-hermetic sealed hard-boundary action is
|
|
113
|
+
* a defect, not a condition to paper over.
|
|
114
|
+
*
|
|
115
|
+
* @category layers
|
|
116
|
+
* @since 0.1.0
|
|
117
|
+
*/
|
|
118
|
+
export const layerStrict = (owner) => Layer.effect(Inconsistency)(Effect.gen(function* () {
|
|
119
|
+
const journal = yield* Journal.Journal;
|
|
120
|
+
return make({ journal, verdict: "fail", owner });
|
|
121
|
+
}));
|
|
122
|
+
/**
|
|
123
|
+
* Journals every cache conflict and continues, preserving the first-recorded
|
|
124
|
+
* row (Skyframe's tolerant production configuration).
|
|
125
|
+
*
|
|
126
|
+
* @category layers
|
|
127
|
+
* @since 0.1.0
|
|
128
|
+
*/
|
|
129
|
+
export const layerTolerant = (owner) => Layer.effect(Inconsistency)(Effect.gen(function* () {
|
|
130
|
+
const journal = yield* Journal.Journal;
|
|
131
|
+
return make({ journal, verdict: "tolerate", owner });
|
|
132
|
+
}));
|
|
133
|
+
//# sourceMappingURL=Inconsistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inconsistency.js","sourceRoot":"","sources":["../../src/Inconsistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAgE9D;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAA0B,CAAC,oCAAoC,CAAC;CAAG;AAmBrH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAoB,EAAW,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,OAAO,CAAC,WAAW,CACzB,cAAc,CAAC,aAAa,CAC1B;QACE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;QACpC,QAAQ,EAAE,kCAAkC;QAC5C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;KAClE,EACD;QACE,iEAAiE;QACjE,+DAA+D;QAC/D,QAAQ,EAAE,KAAK,CAAC,GAAG;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;YAC3C,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB;YACjD,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;SACxC;QACD,SAAS,EAAE;YACT,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;YAC5C,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB;YAClD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;SACzC;KACF,CACF,EACD,OAAO,CAAC,KAAK,CACd,EACD,OAAO,CAAC,OAAO,CAChB,CACF;IACD,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAClE,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,OAAO,CAAC,WAAW,CACzB,cAAc,CAAC,eAAe,CAC5B;QACE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/C,4DAA4D;QAC5D,wDAAwD;QACxD,+DAA+D;QAC/D,gEAAgE;QAChE,iEAAiE;QACjE,kEAAkE;QAClE,4DAA4D;QAC5D,gEAAgE;QAChE,gEAAgE;QAChE,wDAAwD;QACxD,QAAQ,EACN,+CAA+C,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,IAC1H,KAAK,CAAC,aAAa,IAAI,OACzB,IAAI,KAAK,CAAC,gBAAgB,IAAI,OAAO,EAAE;QACzC,SAAS,EAAE,CAAC;KACb,EACD;QACE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;QAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;KACjD,CACF,EACD,OAAO,CAAC,KAAK,CACd,CAAC,IAAI,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAChH,EACD,OAAO,CAAC,OAAO,CAChB,CACF;CACF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,YAA8B,EAAE,EAAW,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAmB,CAAC,CAAC;IAChF,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAmB,CAAC,CAAC;IACpG,GAAG,SAAS;CACb,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,YAA8B,EAAE,EAA8B,EAAE,CACxF,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAsD,EAAE,CAC1G,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACtC,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CACH,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAwB,EAAsD,EAAE,CAC5G,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACtC,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;AACtD,CAAC,CAAC,CACH,CAAA","sourcesContent":["/**\n * Receiver for detected engine inconsistencies.\n *\n * Modeled on Skyframe's `GraphInconsistencyReceiver`: the store layer detects\n * an invariant violation — today, a content-addressed cache key that produced\n * a different result than the recorded row — and this service decides whether\n * the run fails or tolerates it. Either way the conflict is journaled, so the\n * detector is never wired to /dev/null.\n *\n * The `note` signature deliberately matches the plugin spec's\n * `cacheInconsistency` hook (`(event) => Effect<InconsistencyVerdict>`); the\n * strict layer is the future default plugin.\n *\n * The core default is strict so an invariant violation cannot pass silently.\n *\n * Governing designs: `docs/concepts/attempts-and-replay.md` and\n * `apps/site/src/content/docs/docs/concepts/flows-actions-plans.mdx`.\n *\n * @since 0.1.0\n */\n\nimport { FlowEngine } from \"@smthrs/engine\"\nimport { Journal } from \"@smthrs/journal\"\nimport type { Ownership } from \"@smthrs/run-store\"\nimport type { CacheStore } from \"@smthrs/step-cache\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as JournalRecords from \"./internal/JournalRecords.ts\"\n\n/**\n * Decision returned by an inconsistency receiver.\n *\n * @category models\n * @since 0.1.0\n */\nexport type InconsistencyVerdict = \"fail\" | \"tolerate\"\n\n/**\n * A content-addressed cache key that produced a result different from the\n * recorded row — a hermeticity/determinism violation.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface CacheConflict {\n readonly key: string\n readonly existing: CacheStore.CacheEntry | undefined\n readonly attempted: CacheStore.CacheEntry\n}\n\n/**\n * Recorded boundary evidence whose blob no longer hashes to its recorded\n * digest — on-disk corruption of the content-addressed store, detected while\n * replaying a verified cache hit or a succeeded attempt (issue #150).\n * Distinct from a transient host failure, which merely refuses the replay\n * and stays retryable.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface BlobCorruption {\n /** The run that observed the corruption; the journaling target. */\n readonly runId: string\n readonly keyDigest: string\n readonly path: string\n readonly recordedDigest: string\n readonly measuredDigest: string\n /**\n * Provenance of the corrupt evidence when it came from a shared cache row;\n * absent when it came from this run's own succeeded attempt row.\n */\n readonly recordedRunId?: string | undefined\n readonly recordedEventSeq?: number | undefined\n}\n\n/**\n * Inconsistency receiver operations.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n readonly note: (event: CacheConflict) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>\n /**\n * Observes on-disk corruption of recorded boundary evidence (issue #150).\n * `\"fail\"` fails the dispatch; `\"tolerate\"` lets it fall back to a real\n * execution (which re-captures and heals the corrupt address).\n */\n readonly noteCorruption: (event: BlobCorruption) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>\n}\n\n/**\n * Service tag for the engine inconsistency receiver.\n *\n * @category services\n * @since 0.1.0\n */\nexport class Inconsistency extends Context.Service<Inconsistency, Service>()(\"@smthrs/engine-store/Inconsistency\") {}\n\n/**\n * Options for constructing a journaling inconsistency receiver.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface MakeOptions {\n readonly journal: Journal.Service\n readonly verdict: InconsistencyVerdict\n /**\n * The owner the conflict record is fenced to: a reclaimed run cannot append\n * hermeticity evidence it no longer owns. Required — every composer of this\n * receiver is a run's owner.\n */\n readonly owner: Ownership.OwnerId\n}\n\n/**\n * Builds a receiver that journals every conflict under the run that attempted\n * the write and returns a fixed verdict.\n *\n * The record goes through the journal's durable channel: a cache conflict is\n * hermeticity evidence, and a `tolerate` verdict that silently dropped its\n * only record would wire the detector to /dev/null (issue #10).\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make = (options: MakeOptions): Service => ({\n note: Effect.fn(\"Inconsistency.note\")((event) =>\n Effect.as(\n options.journal.emitDurable(\n JournalRecords.cacheConflict(\n {\n runId: event.attempted.recordedRunId,\n sourceId: \"flows/engine-store/inconsistency\",\n lineageId: FlowEngine.Lineage.root(event.attempted.recordedRunId)\n },\n {\n // `@smthrs/journal` redacts the credential word `key`. A durable\n // content identity must use the specific, non-credential name.\n cacheKey: event.key,\n verdict: options.verdict,\n existing: event.existing === undefined ? null : {\n recordedRunId: event.existing.recordedRunId,\n recordedEventSeq: event.existing.recordedEventSeq,\n createdAtMs: event.existing.createdAtMs\n },\n attempted: {\n recordedRunId: event.attempted.recordedRunId,\n recordedEventSeq: event.attempted.recordedEventSeq,\n createdAtMs: event.attempted.createdAtMs\n }\n }\n ),\n options.owner\n ),\n options.verdict\n )\n ),\n noteCorruption: Effect.fn(\"Inconsistency.noteCorruption\")((event) =>\n Effect.as(\n options.journal.emitDurable(\n JournalRecords.cacheCorruption(\n {\n runId: event.runId,\n lineageId: FlowEngine.Lineage.root(event.runId),\n // The producer identity is the corruption evidence plus the\n // recorded row generation (issues #156, #172): a caller\n // re-observing the same corrupt row re-emits an exact producer\n // duplicate the journal collapses, while an identically corrupt\n // row recorded after eviction and healing has new provenance and\n // lands as a distinct incident. Attempt-row evidence has no cache\n // provenance, so its explicit local markers retain same-row\n // convergence. A record already landed by another lineage under\n // this identity surfaces as an idempotency conflict; either way\n // evidence for that row generation exists exactly once.\n sourceId:\n `flows/engine-store/inconsistency:corruption:${event.keyDigest}:${event.path}:${event.recordedDigest}:${event.measuredDigest}:${\n event.recordedRunId ?? \"local\"\n }:${event.recordedEventSeq ?? \"local\"}`,\n sourceSeq: 0\n },\n {\n keyDigest: event.keyDigest,\n verdict: options.verdict,\n path: event.path,\n recordedDigest: event.recordedDigest,\n measuredDigest: event.measuredDigest,\n recordedRunId: event.recordedRunId ?? null,\n recordedEventSeq: event.recordedEventSeq ?? null\n }\n ),\n options.owner\n ).pipe(\n Effect.catch((error) => error.code === \"idempotency_conflict\" ? Effect.succeed(undefined) : Effect.fail(error))\n ),\n options.verdict\n )\n )\n})\n\n/**\n * Builds a receiver from overrides. The default notes nothing and tolerates.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeNoop = (overrides: Partial<Service> = {}): Service => ({\n note: Effect.fn(\"Inconsistency.note\")(() => Effect.succeed(\"tolerate\" as const)),\n noteCorruption: Effect.fn(\"Inconsistency.noteCorruption\")(() => Effect.succeed(\"tolerate\" as const)),\n ...overrides\n})\n\n/**\n * Provides a receiver that never journals and always tolerates.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerNoop = (overrides: Partial<Service> = {}): Layer.Layer<Inconsistency> =>\n Layer.succeed(Inconsistency)(makeNoop(overrides))\n\n/**\n * Journals every cache conflict and fails the run. This is the default\n * receiver for engine wiring: a non-hermetic sealed hard-boundary action is\n * a defect, not a condition to paper over.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerStrict = (owner: Ownership.OwnerId): Layer.Layer<Inconsistency, never, Journal.Journal> =>\n Layer.effect(Inconsistency)(\n Effect.gen(function*() {\n const journal = yield* Journal.Journal\n return make({ journal, verdict: \"fail\", owner })\n })\n )\n\n/**\n * Journals every cache conflict and continues, preserving the first-recorded\n * row (Skyframe's tolerant production configuration).\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerTolerant = (owner: Ownership.OwnerId): Layer.Layer<Inconsistency, never, Journal.Journal> =>\n Layer.effect(Inconsistency)(\n Effect.gen(function*() {\n const journal = yield* Journal.Journal\n return make({ journal, verdict: \"tolerate\", owner })\n })\n )\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable engine schema migrations.
|
|
3
|
+
*
|
|
4
|
+
* Engine-store owns persisted deferred/clock state, execution selections,
|
|
5
|
+
* and append-only plan-input observations. These are authoritative execution
|
|
6
|
+
* records, distinct from journal projections and evictable step-cache rows.
|
|
7
|
+
* It reserves migration id block `3000`.
|
|
8
|
+
*
|
|
9
|
+
* Because engine-store composes the journal, the run store, and the step
|
|
10
|
+
* cache, {@link sets} is also the full durable schema an engine needs, and
|
|
11
|
+
* {@link layer} installs it in dependency order.
|
|
12
|
+
*
|
|
13
|
+
* Derived contracts: `docs/api.md` ("Migrations") and
|
|
14
|
+
* `packages/smithers/flows/journal/docs/api.md`.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
import * as DatabaseMigrations from "@smthrs/database/Migrations";
|
|
19
|
+
import * as Layer from "effect/Layer";
|
|
20
|
+
/**
|
|
21
|
+
* Engine-store's own namespaced migration set.
|
|
22
|
+
*
|
|
23
|
+
* @category migrations
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
export declare const set: DatabaseMigrations.MigrationSet;
|
|
27
|
+
/**
|
|
28
|
+
* Every migration set a durable engine needs, in dependency order: journal
|
|
29
|
+
* events, run and attempt state, the step cache, the engine's own deferred and
|
|
30
|
+
* clock, selection, and input tables, then the persisted plan.
|
|
31
|
+
*
|
|
32
|
+
* The plan set has the highest id block (`4000`). The database loader applies
|
|
33
|
+
* forward additions within already installed blocks transactionally before
|
|
34
|
+
* the ordinary migration pass (for example, engine-store `3003` after plan
|
|
35
|
+
* `4003`). Earlier holes and entirely new lower blocks remain refusals.
|
|
36
|
+
*
|
|
37
|
+
* @category migrations
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
export declare const sets: ReadonlyArray<DatabaseMigrations.MigrationSet>;
|
|
41
|
+
/**
|
|
42
|
+
* Creates the complete durable engine schema.
|
|
43
|
+
*
|
|
44
|
+
* @category migrations
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
*/
|
|
47
|
+
export declare const run: import("effect/Effect").Effect<readonly (readonly [id: number, name: string])[], import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, import("effect/unstable/sql/SqlClient").SqlClient>;
|
|
48
|
+
/**
|
|
49
|
+
* Layer that installs the complete durable engine schema before exposing the
|
|
50
|
+
* database to any durable service.
|
|
51
|
+
*
|
|
52
|
+
* @category layers
|
|
53
|
+
* @since 0.1.0
|
|
54
|
+
*/
|
|
55
|
+
export declare const layer: Layer.Layer<never, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, import("effect/unstable/sql/SqlClient").SqlClient>;
|
|
56
|
+
//# sourceMappingURL=Migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrations.d.ts","sourceRoot":"","sources":["../../src/Migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AAKjE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAYrC;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,kBAAkB,CAAC,YAepC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAM/D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,GAAG,8OAA+B,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,gLAA2B,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable engine schema migrations.
|
|
3
|
+
*
|
|
4
|
+
* Engine-store owns persisted deferred/clock state, execution selections,
|
|
5
|
+
* and append-only plan-input observations. These are authoritative execution
|
|
6
|
+
* records, distinct from journal projections and evictable step-cache rows.
|
|
7
|
+
* It reserves migration id block `3000`.
|
|
8
|
+
*
|
|
9
|
+
* Because engine-store composes the journal, the run store, and the step
|
|
10
|
+
* cache, {@link sets} is also the full durable schema an engine needs, and
|
|
11
|
+
* {@link layer} installs it in dependency order.
|
|
12
|
+
*
|
|
13
|
+
* Derived contracts: `docs/api.md` ("Migrations") and
|
|
14
|
+
* `packages/smithers/flows/journal/docs/api.md`.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
import * as DatabaseMigrations from "@smthrs/database/Migrations";
|
|
19
|
+
import * as JournalMigrations from "@smthrs/journal/Migrations";
|
|
20
|
+
import * as PlanMigrations from "@smthrs/plan-store/Migrations";
|
|
21
|
+
import * as RunStoreMigrations from "@smthrs/run-store/Migrations";
|
|
22
|
+
import * as StepCacheMigrations from "@smthrs/step-cache/Migrations";
|
|
23
|
+
import * as Layer from "effect/Layer";
|
|
24
|
+
import { initial } from "./migrations/0001_initial.js";
|
|
25
|
+
import { selectionStore } from "./migrations/0002_selection_store.js";
|
|
26
|
+
import { planInputs } from "./migrations/0003_plan_inputs.js";
|
|
27
|
+
import { planEnvironment } from "./migrations/0004_plan_environment.js";
|
|
28
|
+
import { planMerges } from "./migrations/0005_plan_merges.js";
|
|
29
|
+
import { executionListing } from "./migrations/0006_execution_listing.js";
|
|
30
|
+
import { runParentSequence } from "./migrations/0007_run_parent_sequence.js";
|
|
31
|
+
import { deferredConsumption } from "./migrations/0008_deferred_consumption.js";
|
|
32
|
+
import { deferredClockFacts } from "./migrations/0009_deferred_clock_facts.js";
|
|
33
|
+
import { pendingCancellation } from "./migrations/0010_pending_cancellation.js";
|
|
34
|
+
/**
|
|
35
|
+
* Engine-store's own namespaced migration set.
|
|
36
|
+
*
|
|
37
|
+
* @category migrations
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
export const set = {
|
|
41
|
+
namespace: "engine-store",
|
|
42
|
+
idOffset: DatabaseMigrations.idBlock * 3,
|
|
43
|
+
migrations: {
|
|
44
|
+
"0001_initial": initial,
|
|
45
|
+
"0002_selection_store": selectionStore,
|
|
46
|
+
"0003_plan_inputs": planInputs,
|
|
47
|
+
"0004_plan_environment": planEnvironment,
|
|
48
|
+
"0005_plan_merges": planMerges,
|
|
49
|
+
"0006_execution_listing": executionListing,
|
|
50
|
+
"0007_run_parent_sequence": runParentSequence,
|
|
51
|
+
"0008_deferred_consumption": deferredConsumption,
|
|
52
|
+
"0009_deferred_clock_facts": deferredClockFacts,
|
|
53
|
+
"0010_pending_cancellation": pendingCancellation
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Every migration set a durable engine needs, in dependency order: journal
|
|
58
|
+
* events, run and attempt state, the step cache, the engine's own deferred and
|
|
59
|
+
* clock, selection, and input tables, then the persisted plan.
|
|
60
|
+
*
|
|
61
|
+
* The plan set has the highest id block (`4000`). The database loader applies
|
|
62
|
+
* forward additions within already installed blocks transactionally before
|
|
63
|
+
* the ordinary migration pass (for example, engine-store `3003` after plan
|
|
64
|
+
* `4003`). Earlier holes and entirely new lower blocks remain refusals.
|
|
65
|
+
*
|
|
66
|
+
* @category migrations
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export const sets = [
|
|
70
|
+
JournalMigrations.set,
|
|
71
|
+
RunStoreMigrations.set,
|
|
72
|
+
StepCacheMigrations.set,
|
|
73
|
+
set,
|
|
74
|
+
PlanMigrations.set
|
|
75
|
+
];
|
|
76
|
+
/**
|
|
77
|
+
* Creates the complete durable engine schema.
|
|
78
|
+
*
|
|
79
|
+
* @category migrations
|
|
80
|
+
* @since 0.1.0
|
|
81
|
+
*/
|
|
82
|
+
export const run = DatabaseMigrations.run(sets);
|
|
83
|
+
/**
|
|
84
|
+
* Layer that installs the complete durable engine schema before exposing the
|
|
85
|
+
* database to any durable service.
|
|
86
|
+
*
|
|
87
|
+
* @category layers
|
|
88
|
+
* @since 0.1.0
|
|
89
|
+
*/
|
|
90
|
+
export const layer = Layer.effectDiscard(run);
|
|
91
|
+
//# sourceMappingURL=Migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrations.js","sourceRoot":"","sources":["../../src/Migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,cAAc,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,kBAAkB,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAoC;IAClD,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,kBAAkB,CAAC,OAAO,GAAG,CAAC;IACxC,UAAU,EAAE;QACV,cAAc,EAAE,OAAO;QACvB,sBAAsB,EAAE,cAAc;QACtC,kBAAkB,EAAE,UAAU;QAC9B,uBAAuB,EAAE,eAAe;QACxC,kBAAkB,EAAE,UAAU;QAC9B,wBAAwB,EAAE,gBAAgB;QAC1C,0BAA0B,EAAE,iBAAiB;QAC7C,2BAA2B,EAAE,mBAAmB;QAChD,2BAA2B,EAAE,kBAAkB;QAC/C,2BAA2B,EAAE,mBAAmB;KACjD;CACF,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,IAAI,GAAmD;IAClE,iBAAiB,CAAC,GAAG;IACrB,kBAAkB,CAAC,GAAG;IACtB,mBAAmB,CAAC,GAAG;IACvB,GAAG;IACH,cAAc,CAAC,GAAG;CACnB,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA","sourcesContent":["/**\n * Durable engine schema migrations.\n *\n * Engine-store owns persisted deferred/clock state, execution selections,\n * and append-only plan-input observations. These are authoritative execution\n * records, distinct from journal projections and evictable step-cache rows.\n * It reserves migration id block `3000`.\n *\n * Because engine-store composes the journal, the run store, and the step\n * cache, {@link sets} is also the full durable schema an engine needs, and\n * {@link layer} installs it in dependency order.\n *\n * Derived contracts: `docs/api.md` (\"Migrations\") and\n * `packages/smithers/flows/journal/docs/api.md`.\n *\n * @since 0.1.0\n */\n\nimport * as DatabaseMigrations from \"@smthrs/database/Migrations\"\nimport * as JournalMigrations from \"@smthrs/journal/Migrations\"\nimport * as PlanMigrations from \"@smthrs/plan-store/Migrations\"\nimport * as RunStoreMigrations from \"@smthrs/run-store/Migrations\"\nimport * as StepCacheMigrations from \"@smthrs/step-cache/Migrations\"\nimport * as Layer from \"effect/Layer\"\nimport { initial } from \"./migrations/0001_initial.ts\"\nimport { selectionStore } from \"./migrations/0002_selection_store.ts\"\nimport { planInputs } from \"./migrations/0003_plan_inputs.ts\"\nimport { planEnvironment } from \"./migrations/0004_plan_environment.ts\"\nimport { planMerges } from \"./migrations/0005_plan_merges.ts\"\nimport { executionListing } from \"./migrations/0006_execution_listing.ts\"\nimport { runParentSequence } from \"./migrations/0007_run_parent_sequence.ts\"\nimport { deferredConsumption } from \"./migrations/0008_deferred_consumption.ts\"\nimport { deferredClockFacts } from \"./migrations/0009_deferred_clock_facts.ts\"\nimport { pendingCancellation } from \"./migrations/0010_pending_cancellation.ts\"\n\n/**\n * Engine-store's own namespaced migration set.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const set: DatabaseMigrations.MigrationSet = {\n namespace: \"engine-store\",\n idOffset: DatabaseMigrations.idBlock * 3,\n migrations: {\n \"0001_initial\": initial,\n \"0002_selection_store\": selectionStore,\n \"0003_plan_inputs\": planInputs,\n \"0004_plan_environment\": planEnvironment,\n \"0005_plan_merges\": planMerges,\n \"0006_execution_listing\": executionListing,\n \"0007_run_parent_sequence\": runParentSequence,\n \"0008_deferred_consumption\": deferredConsumption,\n \"0009_deferred_clock_facts\": deferredClockFacts,\n \"0010_pending_cancellation\": pendingCancellation\n }\n}\n\n/**\n * Every migration set a durable engine needs, in dependency order: journal\n * events, run and attempt state, the step cache, the engine's own deferred and\n * clock, selection, and input tables, then the persisted plan.\n *\n * The plan set has the highest id block (`4000`). The database loader applies\n * forward additions within already installed blocks transactionally before\n * the ordinary migration pass (for example, engine-store `3003` after plan\n * `4003`). Earlier holes and entirely new lower blocks remain refusals.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const sets: ReadonlyArray<DatabaseMigrations.MigrationSet> = [\n JournalMigrations.set,\n RunStoreMigrations.set,\n StepCacheMigrations.set,\n set,\n PlanMigrations.set\n]\n\n/**\n * Creates the complete durable engine schema.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const run = DatabaseMigrations.run(sets)\n\n/**\n * Layer that installs the complete durable engine schema before exposing the\n * database to any durable service.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer = Layer.effectDiscard(run)\n"]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The source of the fencing identity a store incarnation runs under.
|
|
3
|
+
*
|
|
4
|
+
* Minting an {@link OwnerId} is an act of nondeterminism against the host: it
|
|
5
|
+
* reads a process identifier and draws a fresh nonce. Both belong behind a
|
|
6
|
+
* port rather than in the composition itself — the closed-host doctrine in
|
|
7
|
+
* `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static
|
|
8
|
+
* `node:crypto` import, and browser support is a hard requirement, so a store
|
|
9
|
+
* that reached for either directly could not be composed in a tab at all.
|
|
10
|
+
*
|
|
11
|
+
* Governing design: `docs/concepts/ownership-and-fencing.md`.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
*/
|
|
15
|
+
import type { OwnerId } from "@smthrs/journal/OwnerId";
|
|
16
|
+
import * as Context from "effect/Context";
|
|
17
|
+
import * as Crypto from "effect/Crypto";
|
|
18
|
+
import * as Effect from "effect/Effect";
|
|
19
|
+
import * as Layer from "effect/Layer";
|
|
20
|
+
/**
|
|
21
|
+
* Owner identity operations.
|
|
22
|
+
*
|
|
23
|
+
* @category models
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
export interface Service {
|
|
27
|
+
/**
|
|
28
|
+
* Mints the identity this incarnation fences its durable writes with. The
|
|
29
|
+
* host supplies the incarnation; the caller supplies the host id, because
|
|
30
|
+
* which host a store speaks for is a composition decision, not a host fact.
|
|
31
|
+
*/
|
|
32
|
+
readonly ownerId: (hostId: string) => Effect.Effect<OwnerId>;
|
|
33
|
+
}
|
|
34
|
+
declare const OwnerIdentity_base: Context.ServiceClass<OwnerIdentity, "@smthrs/engine-store/OwnerIdentity", Service>;
|
|
35
|
+
/**
|
|
36
|
+
* Service tag for the owner identity source.
|
|
37
|
+
*
|
|
38
|
+
* @category services
|
|
39
|
+
* @since 0.1.0
|
|
40
|
+
*/
|
|
41
|
+
export declare class OwnerIdentity extends OwnerIdentity_base {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Constructs an owner identity source from an implementation.
|
|
45
|
+
*
|
|
46
|
+
* @category constructors
|
|
47
|
+
* @since 0.1.0
|
|
48
|
+
*/
|
|
49
|
+
export declare const make: (service: Service) => Service;
|
|
50
|
+
/**
|
|
51
|
+
* Builds the standard identity source over an explicitly supplied process id
|
|
52
|
+
* and the injected `Crypto` service.
|
|
53
|
+
*
|
|
54
|
+
* On node and bun `pid` is the real process id, so the minted token is exactly
|
|
55
|
+
* what the store produced before this service existed. A browser tab has no
|
|
56
|
+
* process, and no stable per-tab integer that means the same thing, so
|
|
57
|
+
* `undefined` draws an incarnation number instead: the component's only job is
|
|
58
|
+
* to distinguish concurrent incarnations on one host, and `Random` is the
|
|
59
|
+
* sanctioned port for drawing one. Effect's own cluster storage does the same
|
|
60
|
+
* where a backend exposes no connection pid (`reference/effect`
|
|
61
|
+
* `unstable/cluster/SqlRunnerStorage.ts`).
|
|
62
|
+
*
|
|
63
|
+
* The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the
|
|
64
|
+
* closed-host seam every composition already provides for digesting — so no
|
|
65
|
+
* ambient `crypto` global is reached from a hot path. A host whose crypto
|
|
66
|
+
* cannot mint a UUID cannot fence anything, so that refusal is a defect.
|
|
67
|
+
*
|
|
68
|
+
* @category constructors
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
*/
|
|
71
|
+
export declare const makeIncarnation: (pid: number | undefined, crypto: Crypto.Crypto) => Service;
|
|
72
|
+
/**
|
|
73
|
+
* Provides {@link makeIncarnation} over whatever process id the running
|
|
74
|
+
* platform reports and the composition's `Crypto` service. This is what
|
|
75
|
+
* engine composition supplies unless a host has a better answer.
|
|
76
|
+
*
|
|
77
|
+
* @category layers
|
|
78
|
+
* @since 0.1.0
|
|
79
|
+
*/
|
|
80
|
+
export declare const layer: Layer.Layer<OwnerIdentity, never, Crypto.Crypto>;
|
|
81
|
+
/**
|
|
82
|
+
* Provides a fixed identity. A test — or a host that derives ownership from
|
|
83
|
+
* something outside this process, such as a lease it already holds — pins the
|
|
84
|
+
* whole token instead of letting the default draw one.
|
|
85
|
+
*
|
|
86
|
+
* @category layers
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
*/
|
|
89
|
+
export declare const layerConstant: (owner: OwnerId) => Layer.Layer<OwnerIdentity>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=OwnerIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerIdentity.d.ts","sourceRoot":"","sources":["../../src/OwnerIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CAC7D;;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAA+E;CAAG;AAErH;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,OAAO,KAAG,OAAoC,CAAA;AAc5E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,GAAG,SAAS,EAAE,QAAQ,MAAM,CAAC,MAAM,KAAG,OAchF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAGlE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CACM,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The source of the fencing identity a store incarnation runs under.
|
|
3
|
+
*
|
|
4
|
+
* Minting an {@link OwnerId} is an act of nondeterminism against the host: it
|
|
5
|
+
* reads a process identifier and draws a fresh nonce. Both belong behind a
|
|
6
|
+
* port rather than in the composition itself — the closed-host doctrine in
|
|
7
|
+
* `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static
|
|
8
|
+
* `node:crypto` import, and browser support is a hard requirement, so a store
|
|
9
|
+
* that reached for either directly could not be composed in a tab at all.
|
|
10
|
+
*
|
|
11
|
+
* Governing design: `docs/concepts/ownership-and-fencing.md`.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
*/
|
|
15
|
+
import * as Context from "effect/Context";
|
|
16
|
+
import * as Crypto from "effect/Crypto";
|
|
17
|
+
import * as Effect from "effect/Effect";
|
|
18
|
+
import * as Layer from "effect/Layer";
|
|
19
|
+
import * as Random from "effect/Random";
|
|
20
|
+
/**
|
|
21
|
+
* Service tag for the owner identity source.
|
|
22
|
+
*
|
|
23
|
+
* @category services
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
export class OwnerIdentity extends Context.Service()("@smthrs/engine-store/OwnerIdentity") {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Constructs an owner identity source from an implementation.
|
|
30
|
+
*
|
|
31
|
+
* @category constructors
|
|
32
|
+
* @since 0.1.0
|
|
33
|
+
*/
|
|
34
|
+
export const make = (service) => OwnerIdentity.of(service);
|
|
35
|
+
/**
|
|
36
|
+
* The host's process identifier, when the platform has one.
|
|
37
|
+
*
|
|
38
|
+
* Read off `globalThis` rather than through a bare `process` reference so the
|
|
39
|
+
* module carries no Node binding at all: a browser bundle sees `undefined`
|
|
40
|
+
* here and falls through to a drawn incarnation number instead. The read
|
|
41
|
+
* happens at layer construction — {@link layer} — so importing the module
|
|
42
|
+
* touches nothing.
|
|
43
|
+
*/
|
|
44
|
+
const hostProcessId = () => globalThis.process?.pid;
|
|
45
|
+
/**
|
|
46
|
+
* Builds the standard identity source over an explicitly supplied process id
|
|
47
|
+
* and the injected `Crypto` service.
|
|
48
|
+
*
|
|
49
|
+
* On node and bun `pid` is the real process id, so the minted token is exactly
|
|
50
|
+
* what the store produced before this service existed. A browser tab has no
|
|
51
|
+
* process, and no stable per-tab integer that means the same thing, so
|
|
52
|
+
* `undefined` draws an incarnation number instead: the component's only job is
|
|
53
|
+
* to distinguish concurrent incarnations on one host, and `Random` is the
|
|
54
|
+
* sanctioned port for drawing one. Effect's own cluster storage does the same
|
|
55
|
+
* where a backend exposes no connection pid (`reference/effect`
|
|
56
|
+
* `unstable/cluster/SqlRunnerStorage.ts`).
|
|
57
|
+
*
|
|
58
|
+
* The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the
|
|
59
|
+
* closed-host seam every composition already provides for digesting — so no
|
|
60
|
+
* ambient `crypto` global is reached from a hot path. A host whose crypto
|
|
61
|
+
* cannot mint a UUID cannot fence anything, so that refusal is a defect.
|
|
62
|
+
*
|
|
63
|
+
* @category constructors
|
|
64
|
+
* @since 0.1.0
|
|
65
|
+
*/
|
|
66
|
+
export const makeIncarnation = (pid, crypto) => {
|
|
67
|
+
const incarnationId = pid === undefined
|
|
68
|
+
? Random.nextIntBetween(0, Number.MAX_SAFE_INTEGER, { halfOpen: true })
|
|
69
|
+
: Effect.succeed(pid);
|
|
70
|
+
return make({
|
|
71
|
+
ownerId: Effect.fn("OwnerIdentity.ownerId")(function* (hostId) {
|
|
72
|
+
yield* Effect.annotateCurrentSpan({ hostId });
|
|
73
|
+
return {
|
|
74
|
+
hostId,
|
|
75
|
+
pid: yield* incarnationId,
|
|
76
|
+
nonce: yield* crypto.randomUUIDv4.pipe(Effect.orDie)
|
|
77
|
+
};
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Provides {@link makeIncarnation} over whatever process id the running
|
|
83
|
+
* platform reports and the composition's `Crypto` service. This is what
|
|
84
|
+
* engine composition supplies unless a host has a better answer.
|
|
85
|
+
*
|
|
86
|
+
* @category layers
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
*/
|
|
89
|
+
export const layer = Layer.effect(OwnerIdentity, Effect.map(Crypto.Crypto, (crypto) => makeIncarnation(hostProcessId(), crypto)));
|
|
90
|
+
/**
|
|
91
|
+
* Provides a fixed identity. A test — or a host that derives ownership from
|
|
92
|
+
* something outside this process, such as a lease it already holds — pins the
|
|
93
|
+
* whole token instead of letting the default draw one.
|
|
94
|
+
*
|
|
95
|
+
* @category layers
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
*/
|
|
98
|
+
export const layerConstant = (owner) => Layer.succeed(OwnerIdentity)(make({ ownerId: () => Effect.succeed(owner) }));
|
|
99
|
+
//# sourceMappingURL=OwnerIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerIdentity.js","sourceRoot":"","sources":["../../src/OwnerIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAiBvC;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAA0B,CAAC,oCAAoC,CAAC;CAAG;AAErH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AAE5E;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAG,GAAuB,EAAE,CAC5C,UAA+D,CAAC,OAAO,EAAE,GAAG,CAAA;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAuB,EAAE,MAAqB,EAAW,EAAE;IACzF,MAAM,aAAa,GAA0B,GAAG,KAAK,SAAS;QAC5D,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvB,OAAO,IAAI,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAC,MAAM;YAC1D,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAC7C,OAAO;gBACL,MAAM;gBACN,GAAG,EAAE,KAAK,CAAC,CAAC,aAAa;gBACzB,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACnC,CAAA;QACrB,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAqD,KAAK,CAAC,MAAM,CACjF,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC,CAChF,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAA8B,EAAE,CAC1E,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA","sourcesContent":["/**\n * The source of the fencing identity a store incarnation runs under.\n *\n * Minting an {@link OwnerId} is an act of nondeterminism against the host: it\n * reads a process identifier and draws a fresh nonce. Both belong behind a\n * port rather than in the composition itself — the closed-host doctrine in\n * `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static\n * `node:crypto` import, and browser support is a hard requirement, so a store\n * that reached for either directly could not be composed in a tab at all.\n *\n * Governing design: `docs/concepts/ownership-and-fencing.md`.\n *\n * @since 0.1.0\n */\n\nimport type { OwnerId } from \"@smthrs/journal/OwnerId\"\nimport * as Context from \"effect/Context\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Random from \"effect/Random\"\n\n/**\n * Owner identity operations.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n /**\n * Mints the identity this incarnation fences its durable writes with. The\n * host supplies the incarnation; the caller supplies the host id, because\n * which host a store speaks for is a composition decision, not a host fact.\n */\n readonly ownerId: (hostId: string) => Effect.Effect<OwnerId>\n}\n\n/**\n * Service tag for the owner identity source.\n *\n * @category services\n * @since 0.1.0\n */\nexport class OwnerIdentity extends Context.Service<OwnerIdentity, Service>()(\"@smthrs/engine-store/OwnerIdentity\") {}\n\n/**\n * Constructs an owner identity source from an implementation.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make = (service: Service): Service => OwnerIdentity.of(service)\n\n/**\n * The host's process identifier, when the platform has one.\n *\n * Read off `globalThis` rather than through a bare `process` reference so the\n * module carries no Node binding at all: a browser bundle sees `undefined`\n * here and falls through to a drawn incarnation number instead. The read\n * happens at layer construction — {@link layer} — so importing the module\n * touches nothing.\n */\nconst hostProcessId = (): number | undefined =>\n (globalThis as { readonly process?: { readonly pid?: number } }).process?.pid\n\n/**\n * Builds the standard identity source over an explicitly supplied process id\n * and the injected `Crypto` service.\n *\n * On node and bun `pid` is the real process id, so the minted token is exactly\n * what the store produced before this service existed. A browser tab has no\n * process, and no stable per-tab integer that means the same thing, so\n * `undefined` draws an incarnation number instead: the component's only job is\n * to distinguish concurrent incarnations on one host, and `Random` is the\n * sanctioned port for drawing one. Effect's own cluster storage does the same\n * where a backend exposes no connection pid (`reference/effect`\n * `unstable/cluster/SqlRunnerStorage.ts`).\n *\n * The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the\n * closed-host seam every composition already provides for digesting — so no\n * ambient `crypto` global is reached from a hot path. A host whose crypto\n * cannot mint a UUID cannot fence anything, so that refusal is a defect.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeIncarnation = (pid: number | undefined, crypto: Crypto.Crypto): Service => {\n const incarnationId: Effect.Effect<number> = pid === undefined\n ? Random.nextIntBetween(0, Number.MAX_SAFE_INTEGER, { halfOpen: true })\n : Effect.succeed(pid)\n return make({\n ownerId: Effect.fn(\"OwnerIdentity.ownerId\")(function*(hostId) {\n yield* Effect.annotateCurrentSpan({ hostId })\n return {\n hostId,\n pid: yield* incarnationId,\n nonce: yield* crypto.randomUUIDv4.pipe(Effect.orDie)\n } satisfies OwnerId\n })\n })\n}\n\n/**\n * Provides {@link makeIncarnation} over whatever process id the running\n * platform reports and the composition's `Crypto` service. This is what\n * engine composition supplies unless a host has a better answer.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer: Layer.Layer<OwnerIdentity, never, Crypto.Crypto> = Layer.effect(\n OwnerIdentity,\n Effect.map(Crypto.Crypto, (crypto) => makeIncarnation(hostProcessId(), crypto))\n)\n\n/**\n * Provides a fixed identity. A test — or a host that derives ownership from\n * something outside this process, such as a lease it already holds — pins the\n * whole token instead of letting the default draw one.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerConstant = (owner: OwnerId): Layer.Layer<OwnerIdentity> =>\n Layer.succeed(OwnerIdentity)(make({ ownerId: () => Effect.succeed(owner) }))\n"]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authoritative source observations for one durable plan execution. These are
|
|
3
|
+
* replay state, not approval data, journal projections, or evictable cache rows.
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import { DurableWriter } from "@smthrs/database/DurableWriter";
|
|
7
|
+
import { OwnerId } from "@smthrs/run-store/Ownership";
|
|
8
|
+
import { Context, Effect, Layer, Option, Schema } from "effect";
|
|
9
|
+
import type * as Crypto from "effect/Crypto";
|
|
10
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
11
|
+
/**
|
|
12
|
+
* Address of an append-only observation generation. `environmentDigest` comes
|
|
13
|
+
* from `StepKey.environmentIdentity` and binds every generation of the run.
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category schemas
|
|
16
|
+
*/
|
|
17
|
+
export declare const Address: Schema.Struct<{
|
|
18
|
+
readonly runId: Schema.NonEmptyString;
|
|
19
|
+
readonly planId: Schema.NonEmptyString;
|
|
20
|
+
readonly baseDigest: Schema.NonEmptyString;
|
|
21
|
+
readonly environmentDigest: Schema.NonEmptyString;
|
|
22
|
+
readonly generation: Schema.Int;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Address of an append-only observation generation.
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
* @category models
|
|
28
|
+
*/
|
|
29
|
+
export type Address = typeof Address.Type;
|
|
30
|
+
/**
|
|
31
|
+
* Maximum encoded snapshot size, in JavaScript string code units.
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category constants
|
|
34
|
+
*/
|
|
35
|
+
export declare const maximumSnapshotCharacters: number;
|
|
36
|
+
/**
|
|
37
|
+
* Frozen membership and newly pinned source digests for one generation.
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
* @category schemas
|
|
40
|
+
*/
|
|
41
|
+
export declare const Snapshot: Schema.Struct<{
|
|
42
|
+
readonly version: Schema.Literal<1>;
|
|
43
|
+
readonly generation: Schema.Int;
|
|
44
|
+
readonly nodes: Schema.$Array<Schema.Struct<{
|
|
45
|
+
readonly id: Schema.NonEmptyString;
|
|
46
|
+
readonly key: Schema.NonEmptyString;
|
|
47
|
+
readonly reads: Schema.$Array<Schema.Struct<{
|
|
48
|
+
readonly entry: Schema.Union<readonly [Schema.NonEmptyString, Schema.TaggedStruct<"Glob", {
|
|
49
|
+
readonly include: Schema.NonEmptyArray<Schema.NonEmptyString>;
|
|
50
|
+
readonly exclude: Schema.optional<Schema.$Array<Schema.NonEmptyString>>;
|
|
51
|
+
}>]>;
|
|
52
|
+
readonly sourcePaths: Schema.$Array<Schema.NonEmptyString>;
|
|
53
|
+
}>>;
|
|
54
|
+
}>>;
|
|
55
|
+
readonly pins: Schema.$Array<Schema.Struct<{
|
|
56
|
+
readonly path: Schema.NonEmptyString;
|
|
57
|
+
readonly digest: Schema.NonEmptyString;
|
|
58
|
+
}>>;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Frozen membership and newly pinned source digests for one generation.
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
* @category models
|
|
64
|
+
*/
|
|
65
|
+
export type Snapshot = typeof Snapshot.Type;
|
|
66
|
+
declare const PlanInputError_base: Schema.Class<PlanInputError, Schema.TaggedStruct<"@smthrs/engine-store/PlanInputError", {
|
|
67
|
+
readonly code: Schema.Literals<readonly ["invalid_input", "corrupt_state", "incompatible_state", "fence_lost", "transaction_open", "persistence_failed"]>;
|
|
68
|
+
readonly message: Schema.String;
|
|
69
|
+
readonly cause: Schema.optional<Schema.Unknown>;
|
|
70
|
+
}>, import("effect/Cause").YieldableError>;
|
|
71
|
+
/**
|
|
72
|
+
* A durable observation cannot be read or safely admitted.
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @category errors
|
|
75
|
+
*/
|
|
76
|
+
export declare class PlanInputError extends PlanInputError_base {
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `get` is a committed-state admission gate and refuses an enclosing SQL
|
|
80
|
+
* transaction. `record` is first-writer-wins and may join a write transaction;
|
|
81
|
+
* callers must wait for its outer commit before executing affected actions.
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
* @category models
|
|
84
|
+
*/
|
|
85
|
+
export interface Service {
|
|
86
|
+
readonly get: (address: Address, owner: OwnerId) => Effect.Effect<Option.Option<Snapshot>, PlanInputError>;
|
|
87
|
+
readonly record: (address: Address, snapshot: Snapshot, owner: OwnerId) => Effect.Effect<Snapshot, PlanInputError>;
|
|
88
|
+
}
|
|
89
|
+
declare const PlanInputStore_base: Context.ServiceClass<PlanInputStore, "@smthrs/engine-store/PlanInputStore", Service>;
|
|
90
|
+
/**
|
|
91
|
+
* Durable plan-input service.
|
|
92
|
+
* @since 1.0.0
|
|
93
|
+
* @category services
|
|
94
|
+
*/
|
|
95
|
+
export declare class PlanInputStore extends PlanInputStore_base {
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Builds the SQL-backed, owner-fenced store.
|
|
99
|
+
* @since 1.0.0
|
|
100
|
+
* @category constructors
|
|
101
|
+
*/
|
|
102
|
+
export declare const make: Effect.Effect<Service, never, SqlClient.SqlClient | DurableWriter | Crypto.Crypto>;
|
|
103
|
+
/**
|
|
104
|
+
* Provides the SQL-backed input store over the same database as the run/attempt stores.
|
|
105
|
+
* @since 1.0.0
|
|
106
|
+
* @category layers
|
|
107
|
+
*/
|
|
108
|
+
export declare const layer: Layer.Layer<PlanInputStore, never, SqlClient.SqlClient | DurableWriter | Crypto.Crypto>;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=PlanInputStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanInputStore.d.ts","sourceRoot":"","sources":["../../src/PlanInputStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAI1D;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;EAMlB,CAAA;AACF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAmB,CAAA;AAEzD;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;EAYnB,CAAA;AACF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;;;;;;AAE3C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAWlC;CAAG;AAEL;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAA;IAC1G,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;CACnH;;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAAiF;CAAG;AAsCxH;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAuInG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAGjG,CAAA"}
|