@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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/AttemptProbe.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Survivor discovery for an action key's attempt rows.\n *\n * Two implementations answer the same question \u2014 the durable state's single\n * ordered range read (issue #77) and the point-probe walk against\n * `AttemptStore` for storage that cannot range-scan. They are kept here\n * together, behind one entry point, because their answers must agree: a run\n * that resumes under SQL state and under the fallback must restore the same\n * retry origin and the same attempt counter (issue #96).\n *\n * @since 0.1.0\n */\n\nimport type { AttemptStore } from \"@smthrs/run-store\"\nimport * as Effect from \"effect/Effect\"\nimport * as Option from \"effect/Option\"\nimport type * as DurableEngineState from \"../DurableEngineState.ts\"\n\n/**\n * How long a pruned leading run of attempt numbers the survivor scan\n * tolerates before it reports \"no attempt row survives\".\n *\n * A retention/prune job removes attempts oldest-first, so a surviving\n * sequence is contiguous once its first row is found; the bound caps the\n * pruned prefix walk (issue #69). It is a *semantic* bound, not merely a\n * cost bound: the point-probe fallback cannot distinguish \"nothing ever ran\"\n * from \"the first 33 attempts were pruned\" without a range read, so both\n * paths apply the same tolerance and a key whose earliest survivor sits past\n * it restarts its expiration budget and attempt numbering on either backend\n * (issue #96). Restarting is safe \u2014 the pruned numbers are gone, so the\n * fresh counter cannot collide \u2014 and, unlike the previous split, it is the\n * same behaviour on every backend.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const prunedPrefixScanLimit = 32\n\n/**\n * Finds the surviving attempt rows for an action key: the earliest row's\n * start time \u2014 the durable retry origin when attempt 1 itself was pruned\n * (issue #69) \u2014 and the highest attempt number contiguous from it, from\n * which the engine resumes the attempt counter (issue #59). `Option.none()`\n * means no attempt row survives within `prunedPrefixScanLimit`.\n *\n * When the durable state can range-scan attempts, one ordered SELECT answers\n * both questions (issue #77); otherwise the point-read scan against\n * `AttemptStore` answers them, paying up to `prunedPrefixScanLimit`\n * sequential gets for a key that never ran. Both answers pass through the\n * same tolerance check, so the two paths cannot diverge (issue #96).\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const probeAttempts = (\n attemptStore: AttemptStore.Service,\n survivors: DurableEngineState.Service[\"attemptSurvivors\"],\n runId: string,\n stepKeyDigest: string\n): Effect.Effect<Option.Option<DurableEngineState.AttemptSurvivors>> =>\n Effect.gen(function*() {\n if (survivors !== undefined) {\n const found = yield* survivors(runId, stepKeyDigest)\n if (Option.isNone(found)) return Option.none()\n return found.value.earliestAttempt > prunedPrefixScanLimit\n ? Option.none()\n : found\n }\n let earliest = Option.none<AttemptStore.Attempt>()\n let attempt = 1\n for (; attempt <= prunedPrefixScanLimit; attempt++) {\n const row = yield* attemptStore.get({ runId, stepKeyDigest, attempt }).pipe(Effect.orDie)\n if (Option.isSome(row)) {\n earliest = row\n break\n }\n }\n if (Option.isNone(earliest)) return Option.none()\n let latest = attempt\n for (let next = attempt + 1;; next++) {\n const row = yield* attemptStore.get({ runId, stepKeyDigest, attempt: next }).pipe(Effect.orDie)\n if (Option.isNone(row)) break\n latest = next\n }\n return Option.some({\n earliestAttempt: attempt,\n earliestStartedAtMs: earliest.value.startedAtMs,\n latest\n })\n })\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,aAAwB;AACxB,aAAwB;AAqBjB,MAAM,wBAAwB;AAkB9B,MAAM,gBAAgB,CAC3B,cACA,WACA,OACA,kBAEA,OAAO,IAAI,aAAY;AACrB,MAAI,cAAc,QAAW;AAC3B,UAAM,QAAQ,OAAO,UAAU,OAAO,aAAa;AACnD,QAAI,OAAO,OAAO,KAAK,EAAG,QAAO,OAAO,KAAK;AAC7C,WAAO,MAAM,MAAM,kBAAkB,wBACjC,OAAO,KAAK,IACZ;AAAA,EACN;AACA,MAAI,WAAW,OAAO,KAA2B;AACjD,MAAI,UAAU;AACd,SAAO,WAAW,uBAAuB,WAAW;AAClD,UAAM,MAAM,OAAO,aAAa,IAAI,EAAE,OAAO,eAAe,QAAQ,CAAC,EAAE,KAAK,OAAO,KAAK;AACxF,QAAI,OAAO,OAAO,GAAG,GAAG;AACtB,iBAAW;AACX;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,OAAO,QAAQ,EAAG,QAAO,OAAO,KAAK;AAChD,MAAI,SAAS;AACb,WAAS,OAAO,UAAU,KAAI,QAAQ;AACpC,UAAM,MAAM,OAAO,aAAa,IAAI,EAAE,OAAO,eAAe,SAAS,KAAK,CAAC,EAAE,KAAK,OAAO,KAAK;AAC9F,QAAI,OAAO,OAAO,GAAG,EAAG;AACxB,aAAS;AAAA,EACX;AACA,SAAO,OAAO,KAAK;AAAA,IACjB,iBAAiB;AAAA,IACjB,qBAAqB,SAAS,MAAM;AAAA,IACpC;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, phase-specific cache evidence admission. Storage decoding, current-read
|
|
3
|
+
* measurement, TTL history, output replay and publication I/O stay with their owners.
|
|
4
|
+
* @since 1.0.0-rc.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Action } from "@smthrs/flow";
|
|
7
|
+
import type { FileBoundary } from "@smthrs/flow/FileBoundary";
|
|
8
|
+
import type * as StepBoundary from "../StepBoundary.ts";
|
|
9
|
+
/** Reasons an existing declaration cannot name reusable results.
|
|
10
|
+
* @category models
|
|
11
|
+
* @since 1.0.0-rc.0
|
|
12
|
+
*/
|
|
13
|
+
export type DisabledReason = "unsealed" | "missing-boundary" | "expected-boundary" | "unresolved-read-glob";
|
|
14
|
+
/** Declaration eligibility is separate from proof that a result may be reused.
|
|
15
|
+
* @category models
|
|
16
|
+
* @since 1.0.0-rc.0
|
|
17
|
+
*/
|
|
18
|
+
export type Declaration = {
|
|
19
|
+
readonly _tag: "Eligible";
|
|
20
|
+
readonly metadata: FileBoundary;
|
|
21
|
+
} | {
|
|
22
|
+
readonly _tag: "Disabled";
|
|
23
|
+
readonly reason: DisabledReason;
|
|
24
|
+
};
|
|
25
|
+
/** The proof-bearing part of already-decoded attempt metadata.
|
|
26
|
+
* @category models
|
|
27
|
+
* @since 1.0.0-rc.0
|
|
28
|
+
*/
|
|
29
|
+
export interface Metadata {
|
|
30
|
+
readonly tier: Action.Tier;
|
|
31
|
+
readonly boundary?: StepBoundary.BoundaryEvidence | undefined;
|
|
32
|
+
readonly readSetVerified?: true | undefined;
|
|
33
|
+
readonly boundaryQuarantined?: true | undefined;
|
|
34
|
+
}
|
|
35
|
+
/** A refusal is not a failure of an already durable action outcome.
|
|
36
|
+
* @category models
|
|
37
|
+
* @since 1.0.0-rc.0
|
|
38
|
+
*/
|
|
39
|
+
export interface Refused {
|
|
40
|
+
readonly _tag: "Refused";
|
|
41
|
+
readonly reason: DisabledReason | "invalid-meta" | "unsealed-meta" | "missing-evidence" | "deviation" | "unverified-writes" | "unverified-hermetic-reads" | "unverified-recorded-reads" | "quarantined-evidence" | "contradictory-evidence";
|
|
42
|
+
}
|
|
43
|
+
/** Necessary historical evidence, not yet a hit: current reads and outputs still need verification.
|
|
44
|
+
* @category models
|
|
45
|
+
* @since 1.0.0-rc.0
|
|
46
|
+
*/
|
|
47
|
+
export interface CandidateEvidence<M extends Metadata> {
|
|
48
|
+
readonly _tag: "CandidateEvidence";
|
|
49
|
+
readonly meta: M;
|
|
50
|
+
readonly evidence: StepBoundary.BoundaryEvidence;
|
|
51
|
+
}
|
|
52
|
+
/** Shared gate for fresh completion and durable-completion convergence.
|
|
53
|
+
* @category models
|
|
54
|
+
* @since 1.0.0-rc.0
|
|
55
|
+
*/
|
|
56
|
+
export interface PublishCompletion<M extends Metadata> {
|
|
57
|
+
readonly _tag: "PublishCompletion";
|
|
58
|
+
readonly meta: M;
|
|
59
|
+
}
|
|
60
|
+
/** Classifies existing declaration policy without changing keys or measuring the host.
|
|
61
|
+
* @category classifiers
|
|
62
|
+
* @since 1.0.0-rc.0
|
|
63
|
+
*/
|
|
64
|
+
export declare const declaration: (input: {
|
|
65
|
+
readonly tier: Action.Tier;
|
|
66
|
+
readonly metadata?: FileBoundary | undefined;
|
|
67
|
+
}) => Declaration;
|
|
68
|
+
/** Candidate reads are remeasured, so do not require a historical readSetVerified flag here.
|
|
69
|
+
* @category classifiers
|
|
70
|
+
* @since 1.0.0-rc.0
|
|
71
|
+
*/
|
|
72
|
+
export declare const candidate: <M extends Metadata>(meta: M | undefined) => CandidateEvidence<M> | Refused;
|
|
73
|
+
/** Publication additionally requires the read proof associated with the completed body.
|
|
74
|
+
* Both stored quarantine and the caller's current integrity verdict forbid publication.
|
|
75
|
+
* @category classifiers
|
|
76
|
+
* @since 1.0.0-rc.0
|
|
77
|
+
*/
|
|
78
|
+
export declare const completion: <M extends Metadata>(declared: Declaration, meta: M | undefined, quarantined: boolean) => PublishCompletion<M> | Refused;
|
|
79
|
+
//# sourceMappingURL=CacheAdmission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheAdmission.d.ts","sourceRoot":"","sources":["../../../src/internal/CacheAdmission.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAEvD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,sBAAsB,CAAA;AAE3G;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,gBAAgB,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,MAAM,EACX,cAAc,GACd,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,mBAAmB,GACnB,2BAA2B,GAC3B,2BAA2B,GAC3B,sBAAsB,GACtB,wBAAwB,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,QAAQ;IACnD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAA;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,QAAQ;IACnD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,KAClF,WAMF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,KAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAsB1F,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,QAAQ,EAC3C,UAAU,WAAW,EACrB,MAAM,CAAC,GAAG,SAAS,EACnB,aAAa,OAAO,KACnB,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAOzB,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var CacheAdmission_exports = {};
|
|
30
|
+
__export(CacheAdmission_exports, {
|
|
31
|
+
candidate: () => candidate,
|
|
32
|
+
completion: () => completion,
|
|
33
|
+
declaration: () => declaration
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(CacheAdmission_exports);
|
|
36
|
+
var FileSet = __toESM(require("@smthrs/plan/FileSet"), 1);
|
|
37
|
+
const declaration = (input) => {
|
|
38
|
+
if (input.tier !== "sealed") return { _tag: "Disabled", reason: "unsealed" };
|
|
39
|
+
if (input.metadata === void 0) return { _tag: "Disabled", reason: "missing-boundary" };
|
|
40
|
+
if (input.metadata.boundaryMode !== "hard") return { _tag: "Disabled", reason: "expected-boundary" };
|
|
41
|
+
if (input.metadata.readSet.some(FileSet.isGlob)) return { _tag: "Disabled", reason: "unresolved-read-glob" };
|
|
42
|
+
return { _tag: "Eligible", metadata: input.metadata };
|
|
43
|
+
};
|
|
44
|
+
const candidate = (meta) => {
|
|
45
|
+
if (meta === void 0) return { _tag: "Refused", reason: "invalid-meta" };
|
|
46
|
+
if (meta.boundaryQuarantined === true) {
|
|
47
|
+
return {
|
|
48
|
+
_tag: "Refused",
|
|
49
|
+
reason: meta.boundary !== void 0 || meta.readSetVerified === true ? "contradictory-evidence" : "quarantined-evidence"
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (meta.readSetVerified === true && meta.boundary === void 0) {
|
|
53
|
+
return { _tag: "Refused", reason: "contradictory-evidence" };
|
|
54
|
+
}
|
|
55
|
+
if (meta.tier !== "sealed") return { _tag: "Refused", reason: "unsealed-meta" };
|
|
56
|
+
const evidence = meta.boundary;
|
|
57
|
+
if (evidence === void 0) return { _tag: "Refused", reason: "missing-evidence" };
|
|
58
|
+
if (evidence.deviation !== void 0) return { _tag: "Refused", reason: "deviation" };
|
|
59
|
+
if (evidence.wholeTreeWritesVerified !== true) return { _tag: "Refused", reason: "unverified-writes" };
|
|
60
|
+
if (evidence.hermeticReadsVerified !== true) return { _tag: "Refused", reason: "unverified-hermetic-reads" };
|
|
61
|
+
return { _tag: "CandidateEvidence", meta, evidence };
|
|
62
|
+
};
|
|
63
|
+
const completion = (declared, meta, quarantined) => {
|
|
64
|
+
if (quarantined) return { _tag: "Refused", reason: "quarantined-evidence" };
|
|
65
|
+
if (declared._tag === "Disabled") return { _tag: "Refused", reason: declared.reason };
|
|
66
|
+
const checked = candidate(meta);
|
|
67
|
+
if (checked._tag === "Refused") return checked;
|
|
68
|
+
if (checked.meta.readSetVerified !== true) return { _tag: "Refused", reason: "unverified-recorded-reads" };
|
|
69
|
+
return { _tag: "PublishCompletion", meta: checked.meta };
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=CacheAdmission.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/CacheAdmission.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Pure, phase-specific cache evidence admission. Storage decoding, current-read\n * measurement, TTL history, output replay and publication I/O stay with their owners.\n * @since 1.0.0-rc.0\n */\n\nimport type { Action } from \"@smthrs/flow\"\nimport type { FileBoundary } from \"@smthrs/flow/FileBoundary\"\nimport * as FileSet from \"@smthrs/plan/FileSet\"\nimport type * as StepBoundary from \"../StepBoundary.ts\"\n\n/** Reasons an existing declaration cannot name reusable results.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type DisabledReason = \"unsealed\" | \"missing-boundary\" | \"expected-boundary\" | \"unresolved-read-glob\"\n\n/** Declaration eligibility is separate from proof that a result may be reused.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Declaration =\n | { readonly _tag: \"Eligible\"; readonly metadata: FileBoundary }\n | { readonly _tag: \"Disabled\"; readonly reason: DisabledReason }\n\n/** The proof-bearing part of already-decoded attempt metadata.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface Metadata {\n readonly tier: Action.Tier\n readonly boundary?: StepBoundary.BoundaryEvidence | undefined\n readonly readSetVerified?: true | undefined\n readonly boundaryQuarantined?: true | undefined\n}\n\n/** A refusal is not a failure of an already durable action outcome.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface Refused {\n readonly _tag: \"Refused\"\n readonly reason:\n | DisabledReason\n | \"invalid-meta\"\n | \"unsealed-meta\"\n | \"missing-evidence\"\n | \"deviation\"\n | \"unverified-writes\"\n | \"unverified-hermetic-reads\"\n | \"unverified-recorded-reads\"\n | \"quarantined-evidence\"\n | \"contradictory-evidence\"\n}\n\n/** Necessary historical evidence, not yet a hit: current reads and outputs still need verification.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface CandidateEvidence<M extends Metadata> {\n readonly _tag: \"CandidateEvidence\"\n readonly meta: M\n readonly evidence: StepBoundary.BoundaryEvidence\n}\n\n/** Shared gate for fresh completion and durable-completion convergence.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface PublishCompletion<M extends Metadata> {\n readonly _tag: \"PublishCompletion\"\n readonly meta: M\n}\n\n/** Classifies existing declaration policy without changing keys or measuring the host.\n * @category classifiers\n * @since 1.0.0-rc.0\n */\nexport const declaration = (\n input: { readonly tier: Action.Tier; readonly metadata?: FileBoundary | undefined }\n): Declaration => {\n if (input.tier !== \"sealed\") return { _tag: \"Disabled\", reason: \"unsealed\" }\n if (input.metadata === undefined) return { _tag: \"Disabled\", reason: \"missing-boundary\" }\n if (input.metadata.boundaryMode !== \"hard\") return { _tag: \"Disabled\", reason: \"expected-boundary\" }\n if (input.metadata.readSet.some(FileSet.isGlob)) return { _tag: \"Disabled\", reason: \"unresolved-read-glob\" }\n return { _tag: \"Eligible\", metadata: input.metadata }\n}\n\n/** Candidate reads are remeasured, so do not require a historical readSetVerified flag here.\n * @category classifiers\n * @since 1.0.0-rc.0\n */\nexport const candidate = <M extends Metadata>(meta: M | undefined): CandidateEvidence<M> | Refused => {\n if (meta === undefined) return { _tag: \"Refused\", reason: \"invalid-meta\" }\n // Legacy flags never override quarantine. Retain the durable outcome and\n // the original metadata, but refuse to promote contradictory proof to reuse.\n if (meta.boundaryQuarantined === true) {\n return {\n _tag: \"Refused\",\n reason: meta.boundary !== undefined || meta.readSetVerified === true\n ? \"contradictory-evidence\"\n : \"quarantined-evidence\"\n }\n }\n if (meta.readSetVerified === true && meta.boundary === undefined) {\n return { _tag: \"Refused\", reason: \"contradictory-evidence\" }\n }\n if (meta.tier !== \"sealed\") return { _tag: \"Refused\", reason: \"unsealed-meta\" }\n const evidence = meta.boundary\n if (evidence === undefined) return { _tag: \"Refused\", reason: \"missing-evidence\" }\n if (evidence.deviation !== undefined) return { _tag: \"Refused\", reason: \"deviation\" }\n if (evidence.wholeTreeWritesVerified !== true) return { _tag: \"Refused\", reason: \"unverified-writes\" }\n if (evidence.hermeticReadsVerified !== true) return { _tag: \"Refused\", reason: \"unverified-hermetic-reads\" }\n return { _tag: \"CandidateEvidence\", meta, evidence }\n}\n\n/** Publication additionally requires the read proof associated with the completed body.\n * Both stored quarantine and the caller's current integrity verdict forbid publication.\n * @category classifiers\n * @since 1.0.0-rc.0\n */\nexport const completion = <M extends Metadata>(\n declared: Declaration,\n meta: M | undefined,\n quarantined: boolean\n): PublishCompletion<M> | Refused => {\n if (quarantined) return { _tag: \"Refused\", reason: \"quarantined-evidence\" }\n if (declared._tag === \"Disabled\") return { _tag: \"Refused\", reason: declared.reason }\n const checked = candidate(meta)\n if (checked._tag === \"Refused\") return checked\n if (checked.meta.readSetVerified !== true) return { _tag: \"Refused\", reason: \"unverified-recorded-reads\" }\n return { _tag: \"PublishCompletion\", meta: checked.meta }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,cAAyB;AAsElB,MAAM,cAAc,CACzB,UACgB;AAChB,MAAI,MAAM,SAAS,SAAU,QAAO,EAAE,MAAM,YAAY,QAAQ,WAAW;AAC3E,MAAI,MAAM,aAAa,OAAW,QAAO,EAAE,MAAM,YAAY,QAAQ,mBAAmB;AACxF,MAAI,MAAM,SAAS,iBAAiB,OAAQ,QAAO,EAAE,MAAM,YAAY,QAAQ,oBAAoB;AACnG,MAAI,MAAM,SAAS,QAAQ,KAAK,QAAQ,MAAM,EAAG,QAAO,EAAE,MAAM,YAAY,QAAQ,uBAAuB;AAC3G,SAAO,EAAE,MAAM,YAAY,UAAU,MAAM,SAAS;AACtD;AAMO,MAAM,YAAY,CAAqB,SAAwD;AACpG,MAAI,SAAS,OAAW,QAAO,EAAE,MAAM,WAAW,QAAQ,eAAe;AAGzE,MAAI,KAAK,wBAAwB,MAAM;AACrC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK,aAAa,UAAa,KAAK,oBAAoB,OAC5D,2BACA;AAAA,IACN;AAAA,EACF;AACA,MAAI,KAAK,oBAAoB,QAAQ,KAAK,aAAa,QAAW;AAChE,WAAO,EAAE,MAAM,WAAW,QAAQ,yBAAyB;AAAA,EAC7D;AACA,MAAI,KAAK,SAAS,SAAU,QAAO,EAAE,MAAM,WAAW,QAAQ,gBAAgB;AAC9E,QAAM,WAAW,KAAK;AACtB,MAAI,aAAa,OAAW,QAAO,EAAE,MAAM,WAAW,QAAQ,mBAAmB;AACjF,MAAI,SAAS,cAAc,OAAW,QAAO,EAAE,MAAM,WAAW,QAAQ,YAAY;AACpF,MAAI,SAAS,4BAA4B,KAAM,QAAO,EAAE,MAAM,WAAW,QAAQ,oBAAoB;AACrG,MAAI,SAAS,0BAA0B,KAAM,QAAO,EAAE,MAAM,WAAW,QAAQ,4BAA4B;AAC3G,SAAO,EAAE,MAAM,qBAAqB,MAAM,SAAS;AACrD;AAOO,MAAM,aAAa,CACxB,UACA,MACA,gBACmC;AACnC,MAAI,YAAa,QAAO,EAAE,MAAM,WAAW,QAAQ,uBAAuB;AAC1E,MAAI,SAAS,SAAS,WAAY,QAAO,EAAE,MAAM,WAAW,QAAQ,SAAS,OAAO;AACpF,QAAM,UAAU,UAAU,IAAI;AAC9B,MAAI,QAAQ,SAAS,UAAW,QAAO;AACvC,MAAI,QAAQ,KAAK,oBAAoB,KAAM,QAAO,EAAE,MAAM,WAAW,QAAQ,4BAA4B;AACzG,SAAO,EAAE,MAAM,qBAAqB,MAAM,QAAQ,KAAK;AACzD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only validation of copied cache-age decisions. Producer identities and
|
|
3
|
+
* persisted payloads remain unchanged; ancestry alone is not a reuse proof.
|
|
4
|
+
* @since 1.0.0-rc.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Journal, JournalEvent } from "@smthrs/journal";
|
|
7
|
+
import type { RunStore } from "@smthrs/run-store";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
/**
|
|
10
|
+
* Paged journal lookup shared with copied-record validation.
|
|
11
|
+
* @category accessors
|
|
12
|
+
* @since 1.0.0-rc.0
|
|
13
|
+
*/
|
|
14
|
+
export { find } from "./CopiedRecord.ts";
|
|
15
|
+
/** A copied verdict is usable only through an exact, retained fork prefix.
|
|
16
|
+
* Missing/compacted ancestry and malformed or unrelated history fail closed.
|
|
17
|
+
* @category accessors
|
|
18
|
+
* @since 1.0.0-rc.0
|
|
19
|
+
*/
|
|
20
|
+
export declare const copiedVerdict: (options: {
|
|
21
|
+
readonly journal: Journal.Service;
|
|
22
|
+
readonly runs: RunStore.Service;
|
|
23
|
+
readonly runId: string;
|
|
24
|
+
readonly decision: JournalEvent.Input;
|
|
25
|
+
readonly conflict: Journal.JournalError;
|
|
26
|
+
}) => Effect.Effect<"admitted" | "expired", Journal.JournalError>;
|
|
27
|
+
//# sourceMappingURL=CacheAgeHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheAgeHistory.d.ts","sourceRoot":"","sources":["../../../src/internal/CacheAgeHistory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAWxC;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAA;CACxC,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC,YAAY,CAkB1D,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var CacheAgeHistory_exports = {};
|
|
30
|
+
__export(CacheAgeHistory_exports, {
|
|
31
|
+
copiedVerdict: () => copiedVerdict,
|
|
32
|
+
find: () => import_CopiedRecord2.find
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(CacheAgeHistory_exports);
|
|
35
|
+
var import_engine = require("@smthrs/engine");
|
|
36
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
37
|
+
var import_CopiedRecord = require("./CopiedRecord.js");
|
|
38
|
+
var import_CopiedRecord2 = require("./CopiedRecord.js");
|
|
39
|
+
const fieldsEqual = (value, expected) => {
|
|
40
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
41
|
+
if (typeof expected !== "object" || expected === null || Array.isArray(expected)) return false;
|
|
42
|
+
const record = value;
|
|
43
|
+
const keys = Object.keys(expected);
|
|
44
|
+
return Object.keys(record).length === keys.length && keys.every((key) => record[key] === expected[key]);
|
|
45
|
+
};
|
|
46
|
+
const copiedVerdict = (options) => Effect.gen(function* () {
|
|
47
|
+
const { journal, conflict, decision } = options;
|
|
48
|
+
const source = (entry2) => entry2.sourceId === decision.sourceId && entry2.sourceSeq === decision.sourceSeq;
|
|
49
|
+
const entry = yield* (0, import_CopiedRecord.find)(journal, options.runId, source);
|
|
50
|
+
if (entry === void 0) return yield* Effect.fail(conflict);
|
|
51
|
+
const payload = entry.payload;
|
|
52
|
+
const verdict = payload?.verdict;
|
|
53
|
+
if (verdict !== "admitted" && verdict !== "expired") return yield* Effect.fail(conflict);
|
|
54
|
+
const expected = { ...decision.payload, verdict };
|
|
55
|
+
if (entry.eventType !== decision.eventType || !fieldsEqual(entry.payload, expected)) {
|
|
56
|
+
return yield* Effect.fail(conflict);
|
|
57
|
+
}
|
|
58
|
+
const original = yield* (0, import_CopiedRecord.prove)({ ...options, entry, same: fieldsEqual });
|
|
59
|
+
return fieldsEqual(original.record.meta, { lineageId: import_engine.FlowEngine.Lineage.root(original.ancestor) }) ? verdict : yield* Effect.fail(conflict);
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=CacheAgeHistory.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/CacheAgeHistory.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Read-only validation of copied cache-age decisions. Producer identities and\n * persisted payloads remain unchanged; ancestry alone is not a reuse proof.\n * @since 1.0.0-rc.0\n */\n\nimport { FlowEngine } from \"@smthrs/engine\"\nimport type { Journal, JournalEvent } from \"@smthrs/journal\"\nimport type { RunStore } from \"@smthrs/run-store\"\nimport * as Effect from \"effect/Effect\"\nimport { find, prove } from \"./CopiedRecord.ts\"\n\n/**\n * Paged journal lookup shared with copied-record validation.\n * @category accessors\n * @since 1.0.0-rc.0\n */\nexport { find } from \"./CopiedRecord.ts\"\n\nconst fieldsEqual = (value: unknown, expected: unknown): boolean => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (typeof expected !== \"object\" || expected === null || Array.isArray(expected)) return false\n const record = value as Readonly<Record<string, unknown>>\n const keys = Object.keys(expected)\n return Object.keys(record).length === keys.length &&\n keys.every((key) => record[key] === (expected as Readonly<Record<string, unknown>>)[key])\n}\n\n/** A copied verdict is usable only through an exact, retained fork prefix.\n * Missing/compacted ancestry and malformed or unrelated history fail closed.\n * @category accessors\n * @since 1.0.0-rc.0\n */\nexport const copiedVerdict = (options: {\n readonly journal: Journal.Service\n readonly runs: RunStore.Service\n readonly runId: string\n readonly decision: JournalEvent.Input\n readonly conflict: Journal.JournalError\n}): Effect.Effect<\"admitted\" | \"expired\", Journal.JournalError> =>\n Effect.gen(function*() {\n const { journal, conflict, decision } = options\n const source = (entry: JournalEvent.Entry) =>\n entry.sourceId === decision.sourceId && entry.sourceSeq === decision.sourceSeq\n const entry = yield* find(journal, options.runId, source)\n if (entry === undefined) return yield* Effect.fail(conflict)\n const payload = entry.payload as { readonly verdict?: unknown } | null\n const verdict = payload?.verdict\n if (verdict !== \"admitted\" && verdict !== \"expired\") return yield* Effect.fail(conflict)\n const expected = { ...decision.payload as Readonly<Record<string, unknown>>, verdict }\n if (entry.eventType !== decision.eventType || !fieldsEqual(entry.payload, expected)) {\n return yield* Effect.fail(conflict)\n }\n const original = yield* prove({ ...options, entry, same: fieldsEqual })\n return fieldsEqual(original.record.meta, { lineageId: FlowEngine.Lineage.root(original.ancestor) })\n ? verdict\n : yield* Effect.fail(conflict)\n })\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA2B;AAG3B,aAAwB;AACxB,0BAA4B;AAO5B,IAAAA,uBAAqB;AAErB,MAAM,cAAc,CAAC,OAAgB,aAA+B;AAClE,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,EAAG,QAAO;AAChF,MAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,EAAG,QAAO;AACzF,QAAM,SAAS;AACf,QAAM,OAAO,OAAO,KAAK,QAAQ;AACjC,SAAO,OAAO,KAAK,MAAM,EAAE,WAAW,KAAK,UACzC,KAAK,MAAM,CAAC,QAAQ,OAAO,GAAG,MAAO,SAA+C,GAAG,CAAC;AAC5F;AAOO,MAAM,gBAAgB,CAAC,YAO5B,OAAO,IAAI,aAAY;AACrB,QAAM,EAAE,SAAS,UAAU,SAAS,IAAI;AACxC,QAAM,SAAS,CAACC,WACdA,OAAM,aAAa,SAAS,YAAYA,OAAM,cAAc,SAAS;AACvE,QAAM,QAAQ,WAAO,0BAAK,SAAS,QAAQ,OAAO,MAAM;AACxD,MAAI,UAAU,OAAW,QAAO,OAAO,OAAO,KAAK,QAAQ;AAC3D,QAAM,UAAU,MAAM;AACtB,QAAM,UAAU,SAAS;AACzB,MAAI,YAAY,cAAc,YAAY,UAAW,QAAO,OAAO,OAAO,KAAK,QAAQ;AACvF,QAAM,WAAW,EAAE,GAAG,SAAS,SAA8C,QAAQ;AACrF,MAAI,MAAM,cAAc,SAAS,aAAa,CAAC,YAAY,MAAM,SAAS,QAAQ,GAAG;AACnF,WAAO,OAAO,OAAO,KAAK,QAAQ;AAAA,EACpC;AACA,QAAM,WAAW,WAAO,2BAAM,EAAE,GAAG,SAAS,OAAO,MAAM,YAAY,CAAC;AACtE,SAAO,YAAY,SAAS,OAAO,MAAM,EAAE,WAAW,yBAAW,QAAQ,KAAK,SAAS,QAAQ,EAAE,CAAC,IAC9F,UACA,OAAO,OAAO,KAAK,QAAQ;AACjC,CAAC;",
|
|
6
|
+
"names": ["import_CopiedRecord", "entry"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental evidence for the no-TTL cache guard.
|
|
3
|
+
* @since 1.0.0-rc.0
|
|
4
|
+
*/
|
|
5
|
+
import { Journal, JournalEvent } from "@smthrs/journal";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
/**
|
|
8
|
+
* Per-executor index of TTL markers in an append-only journal generation.
|
|
9
|
+
* Refresh before answering, retaining the first record for either its producer
|
|
10
|
+
* key or payload key so malformed and copied verdicts still refuse removal.
|
|
11
|
+
* @category constructors
|
|
12
|
+
* @since 1.0.0-rc.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const make: (runId: string) => (journal: Journal.Service, keyDigest: string) => Effect.Effect<JournalEvent.Entry | undefined, Journal.JournalError>;
|
|
15
|
+
//# sourceMappingURL=CacheAgeVerdicts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheAgeVerdicts.d.ts","sourceRoot":"","sources":["../../../src/internal/CacheAgeVerdicts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,MAQ9B,SAAS,OAAO,CAAC,OAAO,EACxB,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,YAAY,CAkCtE,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var CacheAgeVerdicts_exports = {};
|
|
30
|
+
__export(CacheAgeVerdicts_exports, {
|
|
31
|
+
make: () => make
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(CacheAgeVerdicts_exports);
|
|
34
|
+
var import_journal = require("@smthrs/journal");
|
|
35
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
36
|
+
var Semaphore = __toESM(require("effect/Semaphore"), 1);
|
|
37
|
+
const make = (runId) => {
|
|
38
|
+
const gate = Semaphore.makeUnsafe(1);
|
|
39
|
+
const id = import_journal.JournalEvent.RunId.make(runId);
|
|
40
|
+
let source;
|
|
41
|
+
let generation;
|
|
42
|
+
let after;
|
|
43
|
+
const verdicts = /* @__PURE__ */ new Map();
|
|
44
|
+
return (journal, keyDigest) => Semaphore.withPermit(gate)(Effect.gen(function* () {
|
|
45
|
+
const currentGeneration = journal.generation === void 0 ? 0 : (yield* journal.generation(id)).generation;
|
|
46
|
+
if (source !== journal || generation !== currentGeneration) {
|
|
47
|
+
source = journal;
|
|
48
|
+
generation = currentGeneration;
|
|
49
|
+
after = void 0;
|
|
50
|
+
verdicts.clear();
|
|
51
|
+
}
|
|
52
|
+
while (true) {
|
|
53
|
+
const page = yield* journal.entries({ runId: id, limit: 128, ...after === void 0 ? {} : { after } });
|
|
54
|
+
const next = page.entries.at(-1)?.seq;
|
|
55
|
+
if (page.hasMore && next === void 0 || next !== void 0 && after !== void 0 && next <= after) {
|
|
56
|
+
return yield* Effect.fail(
|
|
57
|
+
new import_journal.Journal.JournalError({ code: "read_failed", message: "cache history cursor did not advance" })
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
for (const entry of page.entries) {
|
|
61
|
+
const producerKey = /^cache:([^:]+):ttl:/.exec(entry.sourceId)?.[1];
|
|
62
|
+
const payload = entry.payload;
|
|
63
|
+
if (producerKey !== void 0 && !verdicts.has(producerKey)) verdicts.set(producerKey, entry);
|
|
64
|
+
if (payload?.action === "ttl" && typeof payload.keyDigest === "string" && !verdicts.has(payload.keyDigest)) {
|
|
65
|
+
verdicts.set(payload.keyDigest, entry);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
after = next ?? after;
|
|
69
|
+
if (!page.hasMore) return verdicts.get(keyDigest);
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=CacheAgeVerdicts.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/CacheAgeVerdicts.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Incremental evidence for the no-TTL cache guard.\n * @since 1.0.0-rc.0\n */\n\nimport { Journal, JournalEvent } from \"@smthrs/journal\"\nimport * as Effect from \"effect/Effect\"\nimport * as Semaphore from \"effect/Semaphore\"\n\n/**\n * Per-executor index of TTL markers in an append-only journal generation.\n * Refresh before answering, retaining the first record for either its producer\n * key or payload key so malformed and copied verdicts still refuse removal.\n * @category constructors\n * @since 1.0.0-rc.0\n */\nexport const make = (runId: string) => {\n const gate = Semaphore.makeUnsafe(1)\n const id = JournalEvent.RunId.make(runId)\n let source: Journal.Service | undefined\n let generation: number | undefined\n let after: JournalEvent.Seq | undefined\n const verdicts = new Map<string, JournalEvent.Entry>()\n return (\n journal: Journal.Service,\n keyDigest: string\n ): Effect.Effect<JournalEvent.Entry | undefined, Journal.JournalError> =>\n Semaphore.withPermit(gate)(Effect.gen(function*() {\n const currentGeneration = journal.generation === undefined ? 0 : (yield* journal.generation(id)).generation\n if (source !== journal || generation !== currentGeneration) {\n source = journal\n generation = currentGeneration\n after = undefined\n verdicts.clear()\n }\n while (true) {\n const page = yield* journal.entries({ runId: id, limit: 128, ...after === undefined ? {} : { after } })\n const next = page.entries.at(-1)?.seq\n if (\n (page.hasMore && next === undefined) ||\n (next !== undefined && after !== undefined && next <= after)\n ) {\n return yield* Effect.fail(\n new Journal.JournalError({ code: \"read_failed\", message: \"cache history cursor did not advance\" })\n )\n }\n for (const entry of page.entries) {\n const producerKey = /^cache:([^:]+):ttl:/.exec(entry.sourceId)?.[1]\n const payload = entry.payload as { action?: unknown; keyDigest?: unknown } | null\n if (producerKey !== undefined && !verdicts.has(producerKey)) verdicts.set(producerKey, entry)\n if (payload?.action === \"ttl\" && typeof payload.keyDigest === \"string\" && !verdicts.has(payload.keyDigest)) {\n verdicts.set(payload.keyDigest, entry)\n }\n }\n // Publish each fully processed page, including the final one. A read\n // failure or interruption retries only the unvalidated suffix.\n after = next ?? after\n if (!page.hasMore) return verdicts.get(keyDigest)\n }\n }))\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAAsC;AACtC,aAAwB;AACxB,gBAA2B;AASpB,MAAM,OAAO,CAAC,UAAkB;AACrC,QAAM,OAAO,UAAU,WAAW,CAAC;AACnC,QAAM,KAAK,4BAAa,MAAM,KAAK,KAAK;AACxC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,WAAW,oBAAI,IAAgC;AACrD,SAAO,CACL,SACA,cAEA,UAAU,WAAW,IAAI,EAAE,OAAO,IAAI,aAAY;AAChD,UAAM,oBAAoB,QAAQ,eAAe,SAAY,KAAK,OAAO,QAAQ,WAAW,EAAE,GAAG;AACjG,QAAI,WAAW,WAAW,eAAe,mBAAmB;AAC1D,eAAS;AACT,mBAAa;AACb,cAAQ;AACR,eAAS,MAAM;AAAA,IACjB;AACA,WAAO,MAAM;AACX,YAAM,OAAO,OAAO,QAAQ,QAAQ,EAAE,OAAO,IAAI,OAAO,KAAK,GAAG,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACtG,YAAM,OAAO,KAAK,QAAQ,GAAG,EAAE,GAAG;AAClC,UACG,KAAK,WAAW,SAAS,UACzB,SAAS,UAAa,UAAU,UAAa,QAAQ,OACtD;AACA,eAAO,OAAO,OAAO;AAAA,UACnB,IAAI,uBAAQ,aAAa,EAAE,MAAM,eAAe,SAAS,uCAAuC,CAAC;AAAA,QACnG;AAAA,MACF;AACA,iBAAW,SAAS,KAAK,SAAS;AAChC,cAAM,cAAc,sBAAsB,KAAK,MAAM,QAAQ,IAAI,CAAC;AAClE,cAAM,UAAU,MAAM;AACtB,YAAI,gBAAgB,UAAa,CAAC,SAAS,IAAI,WAAW,EAAG,UAAS,IAAI,aAAa,KAAK;AAC5F,YAAI,SAAS,WAAW,SAAS,OAAO,QAAQ,cAAc,YAAY,CAAC,SAAS,IAAI,QAAQ,SAAS,GAAG;AAC1G,mBAAS,IAAI,QAAQ,WAAW,KAAK;AAAA,QACvC;AAAA,MACF;AAGA,cAAQ,QAAQ;AAChB,UAAI,CAAC,KAAK,QAAS,QAAO,SAAS,IAAI,SAAS;AAAA,IAClD;AAAA,EACF,CAAC,CAAC;AACN;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay authority comes from the current descriptor, never the recorded paths.
|
|
3
|
+
* This preflight performs no host I/O; every path is checked before replay can prune.
|
|
4
|
+
* @since 1.0.0-rc.0
|
|
5
|
+
*/
|
|
6
|
+
import type { FileBoundary } from "@smthrs/flow/FileBoundary";
|
|
7
|
+
import type * as StepBoundary from "../StepBoundary.ts";
|
|
8
|
+
/** A typed refusal leaves both the evidence and the workspace intact.
|
|
9
|
+
* @category models
|
|
10
|
+
* @since 1.0.0-rc.0
|
|
11
|
+
*/
|
|
12
|
+
export type Decision = {
|
|
13
|
+
readonly _tag: "ReplayOutputs";
|
|
14
|
+
} | {
|
|
15
|
+
readonly _tag: "Refused";
|
|
16
|
+
readonly reason: "output-boundary-mismatch" | "unsupported-output-evidence";
|
|
17
|
+
};
|
|
18
|
+
/** Validate all recorded writes, removals and pruning roots before materialization.
|
|
19
|
+
* Unknown output formats cannot establish current filesystem authority.
|
|
20
|
+
* @category classifiers
|
|
21
|
+
* @since 1.0.0-rc.0
|
|
22
|
+
*/
|
|
23
|
+
export declare const replay: (descriptor: FileBoundary | undefined, evidence: StepBoundary.BoundaryEvidence) => Decision;
|
|
24
|
+
//# sourceMappingURL=CacheOutputPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheOutputPolicy.d.ts","sourceRoot":"","sources":["../../../src/internal/CacheOutputPolicy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAWvD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,GAAG,6BAA6B,CAAA;CAAE,CAAA;AAE7G;;;;GAIG;AACH,eAAO,MAAM,MAAM,GACjB,YAAY,YAAY,GAAG,SAAS,EACpC,UAAU,YAAY,CAAC,gBAAgB,KACtC,QA4CF,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var CacheOutputPolicy_exports = {};
|
|
30
|
+
__export(CacheOutputPolicy_exports, {
|
|
31
|
+
replay: () => replay
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(CacheOutputPolicy_exports);
|
|
34
|
+
var ArtifactStore = __toESM(require("@smthrs/artifacts/ArtifactStore"), 1);
|
|
35
|
+
var FileSet = __toESM(require("@smthrs/plan/FileSet"), 1);
|
|
36
|
+
var Schema = __toESM(require("effect/Schema"), 1);
|
|
37
|
+
const Outputs = Schema.Struct({
|
|
38
|
+
outputs: Schema.Array(Schema.Struct({ path: Schema.String, digest: Schema.NullOr(ArtifactStore.Digest) })),
|
|
39
|
+
trees: Schema.optional(Schema.Array(Schema.Struct({ path: Schema.String, identity: Schema.String })))
|
|
40
|
+
});
|
|
41
|
+
const DeclaredPaths = Schema.Struct({ paths: Schema.Array(FileSet.Entry) });
|
|
42
|
+
const samePaths = Schema.toEquivalence(Schema.Array(FileSet.Entry));
|
|
43
|
+
const replay = (descriptor, evidence) => {
|
|
44
|
+
const mismatch = { _tag: "Refused", reason: "output-boundary-mismatch" };
|
|
45
|
+
if (descriptor === void 0) return mismatch;
|
|
46
|
+
const decoded = Schema.decodeUnknownResult(Outputs)(evidence.declaredOutputs);
|
|
47
|
+
if (decoded._tag === "Failure") {
|
|
48
|
+
const paths2 = Schema.decodeUnknownResult(DeclaredPaths)(evidence.declaredOutputs);
|
|
49
|
+
if (paths2._tag === "Failure" || Object.hasOwn(evidence.declaredOutputs, "outputs")) {
|
|
50
|
+
return { _tag: "Refused", reason: "unsupported-output-evidence" };
|
|
51
|
+
}
|
|
52
|
+
return (descriptor.removes ?? []).length === 0 && samePaths(paths2.success.paths, descriptor.writeSet) ? { _tag: "ReplayOutputs" } : mismatch;
|
|
53
|
+
}
|
|
54
|
+
const { outputs, trees = [] } = decoded.success;
|
|
55
|
+
const paths = [...outputs.map((output) => output.path), ...trees.map((tree) => tree.path)];
|
|
56
|
+
if (paths.some((path) => !FileSet.workspaceRelative(path) || FileSet.canonical(path) !== path)) return mismatch;
|
|
57
|
+
if (new Set(outputs.map((output) => output.path)).size !== outputs.length) return mismatch;
|
|
58
|
+
if (new Set(trees.map((tree) => tree.path)).size !== trees.length) return mismatch;
|
|
59
|
+
const removes = descriptor.removes ?? [];
|
|
60
|
+
for (const output of outputs) {
|
|
61
|
+
if (output.digest === null) {
|
|
62
|
+
if (!removes.includes(output.path)) return mismatch;
|
|
63
|
+
} else if (removes.includes(output.path) || !descriptor.writeSet.some((entry) => FileSet.overlaps(entry, output.path))) return mismatch;
|
|
64
|
+
}
|
|
65
|
+
const declaredTrees = descriptor.writeSet.filter(FileSet.isTreeArtifact);
|
|
66
|
+
if (declaredTrees.some((entry) => outputs.some((output) => output.path === entry.path))) return mismatch;
|
|
67
|
+
if (trees.some((tree) => !declaredTrees.some((entry) => entry.path === tree.path))) return mismatch;
|
|
68
|
+
if (declaredTrees.some((entry) => !trees.some((tree) => tree.path === entry.path))) return mismatch;
|
|
69
|
+
if (removes.some((path) => !outputs.some((output) => output.path === path && output.digest === null))) return mismatch;
|
|
70
|
+
if (descriptor.writeSet.some(
|
|
71
|
+
(entry) => typeof entry === "string" && !outputs.some((output) => output.path === entry && output.digest !== null)
|
|
72
|
+
)) return mismatch;
|
|
73
|
+
return { _tag: "ReplayOutputs" };
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=CacheOutputPolicy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/CacheOutputPolicy.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Replay authority comes from the current descriptor, never the recorded paths.\n * This preflight performs no host I/O; every path is checked before replay can prune.\n * @since 1.0.0-rc.0\n */\n\nimport * as ArtifactStore from \"@smthrs/artifacts/ArtifactStore\"\nimport type { FileBoundary } from \"@smthrs/flow/FileBoundary\"\nimport * as FileSet from \"@smthrs/plan/FileSet\"\nimport * as Schema from \"effect/Schema\"\nimport type * as StepBoundary from \"../StepBoundary.ts\"\n\nconst Outputs = Schema.Struct({\n outputs: Schema.Array(Schema.Struct({ path: Schema.String, digest: Schema.NullOr(ArtifactStore.Digest) })),\n trees: Schema.optional(Schema.Array(Schema.Struct({ path: Schema.String, identity: Schema.String })))\n})\n// The existing abstract boundary protocol records its exact declared path set.\n// Validate that format separately; it does not claim a filesystem blob manifest.\nconst DeclaredPaths = Schema.Struct({ paths: Schema.Array(FileSet.Entry) })\nconst samePaths = Schema.toEquivalence(Schema.Array(FileSet.Entry))\n\n/** A typed refusal leaves both the evidence and the workspace intact.\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Decision =\n | { readonly _tag: \"ReplayOutputs\" }\n | { readonly _tag: \"Refused\"; readonly reason: \"output-boundary-mismatch\" | \"unsupported-output-evidence\" }\n\n/** Validate all recorded writes, removals and pruning roots before materialization.\n * Unknown output formats cannot establish current filesystem authority.\n * @category classifiers\n * @since 1.0.0-rc.0\n */\nexport const replay = (\n descriptor: FileBoundary | undefined,\n evidence: StepBoundary.BoundaryEvidence\n): Decision => {\n const mismatch = { _tag: \"Refused\", reason: \"output-boundary-mismatch\" } as const\n if (descriptor === undefined) return mismatch\n const decoded = Schema.decodeUnknownResult(Outputs)(evidence.declaredOutputs)\n if (decoded._tag === \"Failure\") {\n const paths = Schema.decodeUnknownResult(DeclaredPaths)(evidence.declaredOutputs)\n // Malformed production evidence cannot downgrade itself to the abstract\n // protocol by also supplying a matching path list.\n if (paths._tag === \"Failure\" || Object.hasOwn(evidence.declaredOutputs as object, \"outputs\")) {\n return { _tag: \"Refused\", reason: \"unsupported-output-evidence\" }\n }\n return (descriptor.removes ?? []).length === 0 && samePaths(paths.success.paths, descriptor.writeSet)\n ? { _tag: \"ReplayOutputs\" }\n : mismatch\n }\n const { outputs, trees = [] } = decoded.success\n const paths = [...outputs.map((output) => output.path), ...trees.map((tree) => tree.path)]\n // Use the exact coordinate spelling that replay passes to the filesystem.\n if (paths.some((path) => !FileSet.workspaceRelative(path) || FileSet.canonical(path) !== path)) return mismatch\n if (new Set(outputs.map((output) => output.path)).size !== outputs.length) return mismatch\n if (new Set(trees.map((tree) => tree.path)).size !== trees.length) return mismatch\n const removes = descriptor.removes ?? []\n for (const output of outputs) {\n if (output.digest === null) {\n if (!removes.includes(output.path)) return mismatch\n } else if (\n removes.includes(output.path) ||\n !descriptor.writeSet.some((entry) => FileSet.overlaps(entry, output.path))\n ) return mismatch\n }\n // A tree root authorizes pruning its entire subtree. A glob or a narrower\n // tree is never sufficient authority for a recorded broader pruning root.\n const declaredTrees = descriptor.writeSet.filter(FileSet.isTreeArtifact)\n // A declared tree root is a directory, never a replayable file or deletion.\n if (declaredTrees.some((entry) => outputs.some((output) => output.path === entry.path))) return mismatch\n if (trees.some((tree) => !declaredTrees.some((entry) => entry.path === tree.path))) return mismatch\n if (declaredTrees.some((entry) => !trees.some((tree) => tree.path === entry.path))) return mismatch\n if (removes.some((path) => !outputs.some((output) => output.path === path && output.digest === null))) return mismatch\n if (\n descriptor.writeSet.some((entry) =>\n typeof entry === \"string\" && !outputs.some((output) => output.path === entry && output.digest !== null)\n )\n ) return mismatch\n return { _tag: \"ReplayOutputs\" }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA+B;AAE/B,cAAyB;AACzB,aAAwB;AAGxB,MAAM,UAAU,OAAO,OAAO;AAAA,EAC5B,SAAS,OAAO,MAAM,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ,QAAQ,OAAO,OAAO,cAAc,MAAM,EAAE,CAAC,CAAC;AAAA,EACzG,OAAO,OAAO,SAAS,OAAO,MAAM,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC;AACtG,CAAC;AAGD,MAAM,gBAAgB,OAAO,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,KAAK,EAAE,CAAC;AAC1E,MAAM,YAAY,OAAO,cAAc,OAAO,MAAM,QAAQ,KAAK,CAAC;AAe3D,MAAM,SAAS,CACpB,YACA,aACa;AACb,QAAM,WAAW,EAAE,MAAM,WAAW,QAAQ,2BAA2B;AACvE,MAAI,eAAe,OAAW,QAAO;AACrC,QAAM,UAAU,OAAO,oBAAoB,OAAO,EAAE,SAAS,eAAe;AAC5E,MAAI,QAAQ,SAAS,WAAW;AAC9B,UAAMA,SAAQ,OAAO,oBAAoB,aAAa,EAAE,SAAS,eAAe;AAGhF,QAAIA,OAAM,SAAS,aAAa,OAAO,OAAO,SAAS,iBAA2B,SAAS,GAAG;AAC5F,aAAO,EAAE,MAAM,WAAW,QAAQ,8BAA8B;AAAA,IAClE;AACA,YAAQ,WAAW,WAAW,CAAC,GAAG,WAAW,KAAK,UAAUA,OAAM,QAAQ,OAAO,WAAW,QAAQ,IAChG,EAAE,MAAM,gBAAgB,IACxB;AAAA,EACN;AACA,QAAM,EAAE,SAAS,QAAQ,CAAC,EAAE,IAAI,QAAQ;AACxC,QAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AAEzF,MAAI,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,kBAAkB,IAAI,KAAK,QAAQ,UAAU,IAAI,MAAM,IAAI,EAAG,QAAO;AACvG,MAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,EAAE,SAAS,QAAQ,OAAQ,QAAO;AAClF,MAAI,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,SAAS,MAAM,OAAQ,QAAO;AAC1E,QAAM,UAAU,WAAW,WAAW,CAAC;AACvC,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,WAAW,MAAM;AAC1B,UAAI,CAAC,QAAQ,SAAS,OAAO,IAAI,EAAG,QAAO;AAAA,IAC7C,WACE,QAAQ,SAAS,OAAO,IAAI,KAC5B,CAAC,WAAW,SAAS,KAAK,CAAC,UAAU,QAAQ,SAAS,OAAO,OAAO,IAAI,CAAC,EACzE,QAAO;AAAA,EACX;AAGA,QAAM,gBAAgB,WAAW,SAAS,OAAO,QAAQ,cAAc;AAEvE,MAAI,cAAc,KAAK,CAAC,UAAU,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,MAAM,IAAI,CAAC,EAAG,QAAO;AAChG,MAAI,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,KAAK,CAAC,UAAU,MAAM,SAAS,KAAK,IAAI,CAAC,EAAG,QAAO;AAC3F,MAAI,cAAc,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,IAAI,CAAC,EAAG,QAAO;AAC3F,MAAI,QAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,QAAQ,OAAO,WAAW,IAAI,CAAC,EAAG,QAAO;AAC9G,MACE,WAAW,SAAS;AAAA,IAAK,CAAC,UACxB,OAAO,UAAU,YAAY,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,SAAS,OAAO,WAAW,IAAI;AAAA,EACxG,EACA,QAAO;AACT,SAAO,EAAE,MAAM,gBAAgB;AACjC;",
|
|
6
|
+
"names": ["paths"]
|
|
7
|
+
}
|