@smthrs/flow 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +160 -0
- package/LICENSE +21 -0
- package/README.md +210 -2
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/cjs/Action/Action.d.ts +250 -0
- package/dist/cjs/Action/Action.d.ts.map +1 -0
- package/dist/cjs/Action/Action.js +42 -0
- package/dist/cjs/Action/Action.js.map +7 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/cjs/Action/AttemptTimedOut.js +51 -0
- package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
- package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
- package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/cjs/Action/BoundaryMode.js +36 -0
- package/dist/cjs/Action/BoundaryMode.js.map +7 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/cjs/Action/CacheEnvironment.js +57 -0
- package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
- package/dist/cjs/Action/Context.d.ts +131 -0
- package/dist/cjs/Action/Context.d.ts.map +1 -0
- package/dist/cjs/Action/Context.js +68 -0
- package/dist/cjs/Action/Context.js.map +7 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/cjs/Action/DuplicateImplementation.js +46 -0
- package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
- package/dist/cjs/Action/FileBoundary.d.ts +59 -0
- package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
- package/dist/cjs/Action/FileBoundary.js +81 -0
- package/dist/cjs/Action/FileBoundary.js.map +7 -0
- package/dist/cjs/Action/FileInput.d.ts +28 -0
- package/dist/cjs/Action/FileInput.d.ts.map +1 -0
- package/dist/cjs/Action/FileInput.js +42 -0
- package/dist/cjs/Action/FileInput.js.map +7 -0
- package/dist/cjs/Action/Filegroup.d.ts +16 -0
- package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
- package/dist/cjs/Action/Filegroup.js +27 -0
- package/dist/cjs/Action/Filegroup.js.map +7 -0
- package/dist/cjs/Action/Glob.d.ts +8 -0
- package/dist/cjs/Action/Glob.d.ts.map +1 -0
- package/dist/cjs/Action/Glob.js +28 -0
- package/dist/cjs/Action/Glob.js.map +7 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
- package/dist/cjs/Action/Implementations.d.ts +114 -0
- package/dist/cjs/Action/Implementations.d.ts.map +1 -0
- package/dist/cjs/Action/Implementations.js +65 -0
- package/dist/cjs/Action/Implementations.js.map +7 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterrupt.js +46 -0
- package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/StepIdentity.d.ts +153 -0
- package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
- package/dist/cjs/Action/StepIdentity.js +75 -0
- package/dist/cjs/Action/StepIdentity.js.map +7 -0
- package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
- package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/cjs/Action/TreeArtifact.js +25 -0
- package/dist/cjs/Action/TreeArtifact.js.map +7 -0
- package/dist/cjs/Action/TypeId.d.ts +8 -0
- package/dist/cjs/Action/TypeId.d.ts.map +1 -0
- package/dist/cjs/Action/TypeId.js +25 -0
- package/dist/cjs/Action/TypeId.js.map +7 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
- package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/idempotencyKey.js +59 -0
- package/dist/cjs/Action/idempotencyKey.js.map +7 -0
- package/dist/cjs/Action/index.d.ts +29 -0
- package/dist/cjs/Action/index.d.ts.map +1 -0
- package/dist/cjs/Action/index.js +60 -0
- package/dist/cjs/Action/index.js.map +7 -0
- package/dist/cjs/Action/make.d.ts +128 -0
- package/dist/cjs/Action/make.d.ts.map +1 -0
- package/dist/cjs/Action/make.js +373 -0
- package/dist/cjs/Action/make.js.map +7 -0
- package/dist/cjs/Action/raceAll.d.ts +21 -0
- package/dist/cjs/Action/raceAll.d.ts.map +1 -0
- package/dist/cjs/Action/raceAll.js +46 -0
- package/dist/cjs/Action/raceAll.js.map +7 -0
- package/dist/cjs/Action/retry.d.ts +19 -0
- package/dist/cjs/Action/retry.d.ts.map +1 -0
- package/dist/cjs/Action/retry.js +75 -0
- package/dist/cjs/Action/retry.js.map +7 -0
- package/dist/cjs/Deadline.d.ts +105 -0
- package/dist/cjs/Deadline.d.ts.map +1 -0
- package/dist/cjs/Deadline.js +104 -0
- package/dist/cjs/Deadline.js.map +7 -0
- package/dist/cjs/DurableClock.d.ts +61 -0
- package/dist/cjs/DurableClock.d.ts.map +1 -0
- package/dist/cjs/DurableClock.js +90 -0
- package/dist/cjs/DurableClock.js.map +7 -0
- package/dist/cjs/DurableDeferred.d.ts +311 -0
- package/dist/cjs/DurableDeferred.d.ts.map +1 -0
- package/dist/cjs/DurableDeferred.js +322 -0
- package/dist/cjs/DurableDeferred.js.map +7 -0
- package/dist/cjs/DurableQueue.d.ts +160 -0
- package/dist/cjs/DurableQueue.d.ts.map +1 -0
- package/dist/cjs/DurableQueue.js +229 -0
- package/dist/cjs/DurableQueue.js.map +7 -0
- package/dist/cjs/ExternalJob.d.ts +179 -0
- package/dist/cjs/ExternalJob.d.ts.map +1 -0
- package/dist/cjs/ExternalJob.js +338 -0
- package/dist/cjs/ExternalJob.js.map +7 -0
- package/dist/cjs/Fault.d.ts +131 -0
- package/dist/cjs/Fault.d.ts.map +1 -0
- package/dist/cjs/Fault.js +157 -0
- package/dist/cjs/Fault.js.map +7 -0
- package/dist/cjs/Flow/Annotations.d.ts +245 -0
- package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
- package/dist/cjs/Flow/Annotations.js +72 -0
- package/dist/cjs/Flow/Annotations.js.map +7 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
- package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
- package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIds.js +66 -0
- package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
- package/dist/cjs/Flow/Flow.d.ts +422 -0
- package/dist/cjs/Flow/Flow.d.ts.map +1 -0
- package/dist/cjs/Flow/Flow.js +17 -0
- package/dist/cjs/Flow/Flow.js.map +7 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
- package/dist/cjs/Flow/Outcome.d.ts +162 -0
- package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
- package/dist/cjs/Flow/Outcome.js +80 -0
- package/dist/cjs/Flow/Outcome.js.map +7 -0
- package/dist/cjs/Flow/Result.d.ts +186 -0
- package/dist/cjs/Flow/Result.d.ts.map +1 -0
- package/dist/cjs/Flow/Result.js +159 -0
- package/dist/cjs/Flow/Result.js.map +7 -0
- package/dist/cjs/Flow/Runtime.d.ts +98 -0
- package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
- package/dist/cjs/Flow/Runtime.js +160 -0
- package/dist/cjs/Flow/Runtime.js.map +7 -0
- package/dist/cjs/Flow/TypeId.d.ts +8 -0
- package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
- package/dist/cjs/Flow/TypeId.js +25 -0
- package/dist/cjs/Flow/TypeId.js.map +7 -0
- package/dist/cjs/Flow/index.d.ts +17 -0
- package/dist/cjs/Flow/index.d.ts.map +1 -0
- package/dist/cjs/Flow/index.js +29 -0
- package/dist/cjs/Flow/index.js.map +7 -0
- package/dist/cjs/Flow/internal.d.ts +34 -0
- package/dist/cjs/Flow/internal.d.ts.map +1 -0
- package/dist/cjs/Flow/internal.js +187 -0
- package/dist/cjs/Flow/internal.js.map +7 -0
- package/dist/cjs/Flow/make.d.ts +134 -0
- package/dist/cjs/Flow/make.d.ts.map +1 -0
- package/dist/cjs/Flow/make.js +104 -0
- package/dist/cjs/Flow/make.js.map +7 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
- package/dist/cjs/FlowRuntime/index.d.ts +14 -0
- package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/index.js +26 -0
- package/dist/cjs/FlowRuntime/index.js.map +7 -0
- package/dist/cjs/Graph.d.ts +325 -0
- package/dist/cjs/Graph.d.ts.map +1 -0
- package/dist/cjs/Graph.js +1021 -0
- package/dist/cjs/Graph.js.map +7 -0
- package/dist/cjs/HumanTask.d.ts +440 -0
- package/dist/cjs/HumanTask.d.ts.map +1 -0
- package/dist/cjs/HumanTask.js +413 -0
- package/dist/cjs/HumanTask.js.map +7 -0
- package/dist/cjs/Interpreter.d.ts +222 -0
- package/dist/cjs/Interpreter.d.ts.map +1 -0
- package/dist/cjs/Interpreter.js +888 -0
- package/dist/cjs/Interpreter.js.map +7 -0
- package/dist/cjs/Poll.d.ts +238 -0
- package/dist/cjs/Poll.d.ts.map +1 -0
- package/dist/cjs/Poll.js +150 -0
- package/dist/cjs/Poll.js.map +7 -0
- package/dist/cjs/RetryPolicy.d.ts +273 -0
- package/dist/cjs/RetryPolicy.d.ts.map +1 -0
- package/dist/cjs/RetryPolicy.js +251 -0
- package/dist/cjs/RetryPolicy.js.map +7 -0
- package/dist/cjs/Sleep.d.ts +98 -0
- package/dist/cjs/Sleep.d.ts.map +1 -0
- package/dist/cjs/Sleep.js +133 -0
- package/dist/cjs/Sleep.js.map +7 -0
- package/dist/cjs/Stall.d.ts +173 -0
- package/dist/cjs/Stall.d.ts.map +1 -0
- package/dist/cjs/Stall.js +92 -0
- package/dist/cjs/Stall.js.map +7 -0
- package/dist/cjs/WaitFor.d.ts +109 -0
- package/dist/cjs/WaitFor.d.ts.map +1 -0
- package/dist/cjs/WaitFor.js +117 -0
- package/dist/cjs/WaitFor.js.map +7 -0
- package/dist/cjs/index.d.ts +107 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +69 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/BoundedJson.d.ts +48 -0
- package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
- package/dist/cjs/internal/BoundedJson.js +96 -0
- package/dist/cjs/internal/BoundedJson.js.map +7 -0
- package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
- package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/cjs/internal/DeclarationSite.js +89 -0
- package/dist/cjs/internal/DeclarationSite.js.map +7 -0
- package/dist/cjs/internal/Declarations.d.ts +35 -0
- package/dist/cjs/internal/Declarations.d.ts.map +1 -0
- package/dist/cjs/internal/Declarations.js +50 -0
- package/dist/cjs/internal/Declarations.js.map +7 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
- package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
- package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/cjs/internal/OutcomeMarker.js +27 -0
- package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/Action/Action.d.ts +250 -0
- package/dist/esm/Action/Action.d.ts.map +1 -0
- package/dist/esm/Action/Action.js +30 -0
- package/dist/esm/Action/Action.js.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.js +32 -0
- package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
- package/dist/esm/Action/BoundaryMode.d.ts +29 -0
- package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/esm/Action/BoundaryMode.js +23 -0
- package/dist/esm/Action/BoundaryMode.js.map +1 -0
- package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
- package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/esm/Action/CacheEnvironment.js +130 -0
- package/dist/esm/Action/CacheEnvironment.js.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
- package/dist/esm/Action/Context.d.ts +131 -0
- package/dist/esm/Action/Context.d.ts.map +1 -0
- package/dist/esm/Action/Context.js +99 -0
- package/dist/esm/Action/Context.js.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.js +20 -0
- package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
- package/dist/esm/Action/FileBoundary.d.ts +59 -0
- package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
- package/dist/esm/Action/FileBoundary.js +60 -0
- package/dist/esm/Action/FileBoundary.js.map +1 -0
- package/dist/esm/Action/FileInput.d.ts +28 -0
- package/dist/esm/Action/FileInput.d.ts.map +1 -0
- package/dist/esm/Action/FileInput.js +32 -0
- package/dist/esm/Action/FileInput.js.map +1 -0
- package/dist/esm/Action/Filegroup.d.ts +16 -0
- package/dist/esm/Action/Filegroup.d.ts.map +1 -0
- package/dist/esm/Action/Filegroup.js +15 -0
- package/dist/esm/Action/Filegroup.js.map +1 -0
- package/dist/esm/Action/Glob.d.ts +8 -0
- package/dist/esm/Action/Glob.d.ts.map +1 -0
- package/dist/esm/Action/Glob.js +7 -0
- package/dist/esm/Action/Glob.js.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
- package/dist/esm/Action/Implementations.d.ts +114 -0
- package/dist/esm/Action/Implementations.d.ts.map +1 -0
- package/dist/esm/Action/Implementations.js +94 -0
- package/dist/esm/Action/Implementations.js.map +1 -0
- package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
- package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterrupt.js +25 -0
- package/dist/esm/Action/InfraInterrupt.js.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/StepIdentity.d.ts +153 -0
- package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
- package/dist/esm/Action/StepIdentity.js +139 -0
- package/dist/esm/Action/StepIdentity.js.map +1 -0
- package/dist/esm/Action/TreeArtifact.d.ts +8 -0
- package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/esm/Action/TreeArtifact.js +7 -0
- package/dist/esm/Action/TreeArtifact.js.map +1 -0
- package/dist/esm/Action/TypeId.d.ts +8 -0
- package/dist/esm/Action/TypeId.d.ts.map +1 -0
- package/dist/esm/Action/TypeId.js +9 -0
- package/dist/esm/Action/TypeId.js.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/idempotencyKey.d.ts +21 -0
- package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/idempotencyKey.js +50 -0
- package/dist/esm/Action/idempotencyKey.js.map +1 -0
- package/dist/esm/Action/index.d.ts +29 -0
- package/dist/esm/Action/index.d.ts.map +1 -0
- package/dist/esm/Action/index.js +30 -0
- package/dist/esm/Action/index.js.map +1 -0
- package/dist/esm/Action/make.d.ts +128 -0
- package/dist/esm/Action/make.d.ts.map +1 -0
- package/dist/esm/Action/make.js +405 -0
- package/dist/esm/Action/make.js.map +1 -0
- package/dist/esm/Action/raceAll.d.ts +21 -0
- package/dist/esm/Action/raceAll.d.ts.map +1 -0
- package/dist/esm/Action/raceAll.js +20 -0
- package/dist/esm/Action/raceAll.js.map +1 -0
- package/dist/esm/Action/retry.d.ts +19 -0
- package/dist/esm/Action/retry.d.ts.map +1 -0
- package/dist/esm/Action/retry.js +72 -0
- package/dist/esm/Action/retry.js.map +1 -0
- package/dist/esm/Deadline.d.ts +105 -0
- package/dist/esm/Deadline.d.ts.map +1 -0
- package/dist/esm/Deadline.js +152 -0
- package/dist/esm/Deadline.js.map +1 -0
- package/dist/esm/DurableClock.d.ts +61 -0
- package/dist/esm/DurableClock.d.ts.map +1 -0
- package/dist/esm/DurableClock.js +75 -0
- package/dist/esm/DurableClock.js.map +1 -0
- package/dist/esm/DurableDeferred.d.ts +311 -0
- package/dist/esm/DurableDeferred.d.ts.map +1 -0
- package/dist/esm/DurableDeferred.js +357 -0
- package/dist/esm/DurableDeferred.js.map +1 -0
- package/dist/esm/DurableQueue.d.ts +160 -0
- package/dist/esm/DurableQueue.d.ts.map +1 -0
- package/dist/esm/DurableQueue.js +303 -0
- package/dist/esm/DurableQueue.js.map +1 -0
- package/dist/esm/ExternalJob.d.ts +179 -0
- package/dist/esm/ExternalJob.d.ts.map +1 -0
- package/dist/esm/ExternalJob.js +296 -0
- package/dist/esm/ExternalJob.js.map +1 -0
- package/dist/esm/Fault.d.ts +131 -0
- package/dist/esm/Fault.d.ts.map +1 -0
- package/dist/esm/Fault.js +198 -0
- package/dist/esm/Fault.js.map +1 -0
- package/dist/esm/Flow/Annotations.d.ts +245 -0
- package/dist/esm/Flow/Annotations.d.ts.map +1 -0
- package/dist/esm/Flow/Annotations.js +110 -0
- package/dist/esm/Flow/Annotations.js.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.js +27 -0
- package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.js +34 -0
- package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
- package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
- package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
- package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIds.js +91 -0
- package/dist/esm/Flow/ExecutionIds.js.map +1 -0
- package/dist/esm/Flow/Flow.d.ts +422 -0
- package/dist/esm/Flow/Flow.d.ts.map +1 -0
- package/dist/esm/Flow/Flow.js +3 -0
- package/dist/esm/Flow/Flow.js.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
- package/dist/esm/Flow/Outcome.d.ts +162 -0
- package/dist/esm/Flow/Outcome.d.ts.map +1 -0
- package/dist/esm/Flow/Outcome.js +115 -0
- package/dist/esm/Flow/Outcome.js.map +1 -0
- package/dist/esm/Flow/Result.d.ts +186 -0
- package/dist/esm/Flow/Result.d.ts.map +1 -0
- package/dist/esm/Flow/Result.js +171 -0
- package/dist/esm/Flow/Result.js.map +1 -0
- package/dist/esm/Flow/Runtime.d.ts +98 -0
- package/dist/esm/Flow/Runtime.d.ts.map +1 -0
- package/dist/esm/Flow/Runtime.js +231 -0
- package/dist/esm/Flow/Runtime.js.map +1 -0
- package/dist/esm/Flow/TypeId.d.ts +8 -0
- package/dist/esm/Flow/TypeId.d.ts.map +1 -0
- package/dist/esm/Flow/TypeId.js +9 -0
- package/dist/esm/Flow/TypeId.js.map +1 -0
- package/dist/esm/Flow/index.d.ts +17 -0
- package/dist/esm/Flow/index.d.ts.map +1 -0
- package/dist/esm/Flow/index.js +18 -0
- package/dist/esm/Flow/index.js.map +1 -0
- package/dist/esm/Flow/internal.d.ts +34 -0
- package/dist/esm/Flow/internal.d.ts.map +1 -0
- package/dist/esm/Flow/internal.js +149 -0
- package/dist/esm/Flow/internal.js.map +1 -0
- package/dist/esm/Flow/make.d.ts +134 -0
- package/dist/esm/Flow/make.d.ts.map +1 -0
- package/dist/esm/Flow/make.js +106 -0
- package/dist/esm/Flow/make.js.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
- package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
- package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
- package/dist/esm/FlowRuntime/index.d.ts +14 -0
- package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/index.js +15 -0
- package/dist/esm/FlowRuntime/index.js.map +1 -0
- package/dist/esm/Graph.d.ts +325 -0
- package/dist/esm/Graph.d.ts.map +1 -0
- package/dist/esm/Graph.js +1483 -0
- package/dist/esm/Graph.js.map +1 -0
- package/dist/esm/HumanTask.d.ts +440 -0
- package/dist/esm/HumanTask.d.ts.map +1 -0
- package/dist/esm/HumanTask.js +794 -0
- package/dist/esm/HumanTask.js.map +1 -0
- package/dist/esm/Interpreter.d.ts +222 -0
- package/dist/esm/Interpreter.d.ts.map +1 -0
- package/dist/esm/Interpreter.js +1269 -0
- package/dist/esm/Interpreter.js.map +1 -0
- package/dist/esm/Poll.d.ts +238 -0
- package/dist/esm/Poll.d.ts.map +1 -0
- package/dist/esm/Poll.js +282 -0
- package/dist/esm/Poll.js.map +1 -0
- package/dist/esm/RetryPolicy.d.ts +273 -0
- package/dist/esm/RetryPolicy.d.ts.map +1 -0
- package/dist/esm/RetryPolicy.js +429 -0
- package/dist/esm/RetryPolicy.js.map +1 -0
- package/dist/esm/Sleep.d.ts +98 -0
- package/dist/esm/Sleep.d.ts.map +1 -0
- package/dist/esm/Sleep.js +230 -0
- package/dist/esm/Sleep.js.map +1 -0
- package/dist/esm/Stall.d.ts +173 -0
- package/dist/esm/Stall.d.ts.map +1 -0
- package/dist/esm/Stall.js +138 -0
- package/dist/esm/Stall.js.map +1 -0
- package/dist/esm/WaitFor.d.ts +109 -0
- package/dist/esm/WaitFor.d.ts.map +1 -0
- package/dist/esm/WaitFor.js +184 -0
- package/dist/esm/WaitFor.js.map +1 -0
- package/dist/esm/index.d.ts +107 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +108 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/BoundedJson.d.ts +48 -0
- package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
- package/dist/esm/internal/BoundedJson.js +107 -0
- package/dist/esm/internal/BoundedJson.js.map +1 -0
- package/dist/esm/internal/DeclarationSite.d.ts +135 -0
- package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/esm/internal/DeclarationSite.js +196 -0
- package/dist/esm/internal/DeclarationSite.js.map +1 -0
- package/dist/esm/internal/Declarations.d.ts +35 -0
- package/dist/esm/internal/Declarations.d.ts.map +1 -0
- package/dist/esm/internal/Declarations.js +43 -0
- package/dist/esm/internal/Declarations.js.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.js +13 -0
- package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.js +363 -0
- package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
- package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
- package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/esm/internal/OutcomeMarker.js +18 -0
- package/dist/esm/internal/OutcomeMarker.js.map +1 -0
- package/docs/README.md +150 -0
- package/docs/api.md +436 -0
- package/docs/concepts/bodies-and-plans.md +157 -0
- package/docs/concepts/execution-identity.md +142 -0
- package/docs/concepts/flows-and-actions.md +129 -0
- package/docs/concepts/suspension-and-replay.md +130 -0
- package/docs/concepts/the-runtime-port.md +110 -0
- package/docs/concepts/trampoline-rounds.md +151 -0
- package/docs/guides/ask-a-person.md +184 -0
- package/docs/guides/build-a-body.md +161 -0
- package/docs/guides/cancel-and-roll-back.md +112 -0
- package/docs/guides/implement-an-action.md +147 -0
- package/docs/guides/inspect-the-plan.md +154 -0
- package/docs/guides/poll-until-ready.md +167 -0
- package/docs/guides/queue-work-to-a-worker.md +122 -0
- package/docs/guides/retry-a-failing-action.md +243 -0
- package/docs/guides/reuse-a-recorded-result.md +122 -0
- package/docs/guides/run-a-child-flow.md +108 -0
- package/docs/guides/run-an-external-job.md +86 -0
- package/docs/guides/use-a-prompt.md +38 -0
- package/docs/guides/wait-for-a-deadline.md +141 -0
- package/docs/guides/wait-for-an-external-signal.md +151 -0
- package/docs/installation.md +82 -0
- package/docs/quickstart.md +155 -0
- package/docs/reference/flow.md +1831 -0
- package/docs/testing.md +157 -0
- package/docs/troubleshooting.md +286 -0
- package/package.json +327 -3
- package/src/Action/Action.ts +333 -0
- package/src/Action/AttemptTimedOut.ts +37 -0
- package/src/Action/BoundaryMode.ts +33 -0
- package/src/Action/CacheEnvironment.ts +170 -0
- package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
- package/src/Action/Context.ts +156 -0
- package/src/Action/DuplicateImplementation.ts +24 -0
- package/src/Action/FileBoundary.ts +77 -0
- package/src/Action/FileInput.ts +42 -0
- package/src/Action/Filegroup.ts +16 -0
- package/src/Action/Glob.ts +8 -0
- package/src/Action/ImplementationVersionMismatch.ts +27 -0
- package/src/Action/Implementations.ts +149 -0
- package/src/Action/InfraInterrupt.ts +30 -0
- package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
- package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
- package/src/Action/StepIdentity.ts +219 -0
- package/src/Action/TreeArtifact.ts +8 -0
- package/src/Action/TypeId.ts +9 -0
- package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
- package/src/Action/idempotencyKey.ts +67 -0
- package/src/Action/index.ts +31 -0
- package/src/Action/make.ts +657 -0
- package/src/Action/raceAll.ts +48 -0
- package/src/Action/retry.ts +92 -0
- package/src/Deadline.ts +185 -0
- package/src/DurableClock.ts +133 -0
- package/src/DurableDeferred.ts +753 -0
- package/src/DurableQueue.ts +519 -0
- package/src/ExternalJob.ts +432 -0
- package/src/Fault.ts +279 -0
- package/src/Flow/Annotations.ts +151 -0
- package/src/Flow/CapabilityCeiling.ts +37 -0
- package/src/Flow/DeadlineExceeded.ts +40 -0
- package/src/Flow/ExecutionIdRequired.ts +36 -0
- package/src/Flow/ExecutionIds.ts +133 -0
- package/src/Flow/Flow.ts +576 -0
- package/src/Flow/MaxRoundsExceeded.ts +39 -0
- package/src/Flow/Outcome.ts +179 -0
- package/src/Flow/Result.ts +284 -0
- package/src/Flow/Runtime.ts +309 -0
- package/src/Flow/TypeId.ts +9 -0
- package/src/Flow/index.ts +19 -0
- package/src/Flow/internal.ts +237 -0
- package/src/Flow/make.ts +279 -0
- package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
- package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
- package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
- package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
- package/src/FlowRuntime/FlowInstance.ts +128 -0
- package/src/FlowRuntime/FlowRuntime.ts +333 -0
- package/src/FlowRuntime/NodeRecord.ts +183 -0
- package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
- package/src/FlowRuntime/index.ts +17 -0
- package/src/Graph.ts +1862 -0
- package/src/HumanTask.ts +1003 -0
- package/src/Interpreter.ts +1593 -0
- package/src/Poll.ts +414 -0
- package/src/RetryPolicy.ts +550 -0
- package/src/Sleep.ts +267 -0
- package/src/Stall.ts +217 -0
- package/src/WaitFor.ts +228 -0
- package/src/index.ts +125 -0
- package/src/internal/BoundedJson.ts +109 -0
- package/src/internal/DeclarationSite.ts +214 -0
- package/src/internal/Declarations.ts +49 -0
- package/src/internal/ExecutionMiddleware.ts +29 -0
- package/src/internal/JsonSchemaSubset.ts +392 -0
- package/src/internal/OutcomeMarker.ts +19 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the defect an action attempt settles with when it outlives its
|
|
3
|
+
* declared `attemptTimeoutMs` or misses its `heartbeatTimeoutMs`.
|
|
4
|
+
*
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect"
|
|
9
|
+
import * as Schema from "effect/Schema"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* One attempt of an action ran past a declared time bound and was
|
|
13
|
+
* interrupted.
|
|
14
|
+
*
|
|
15
|
+
* It is a defect rather than a typed failure because the bound belongs to the
|
|
16
|
+
* dispatch, not to the action's declared error channel. The engine's retry
|
|
17
|
+
* decision point still counts it as a retryable attempt failure under the
|
|
18
|
+
* action's `retryPolicy`, and a policy can refuse it by listing this tag in
|
|
19
|
+
* `nonRetryable`.
|
|
20
|
+
*
|
|
21
|
+
* @category errors
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
export class AttemptTimedOut extends Schema.TaggedError<AttemptTimedOut>()(
|
|
25
|
+
"@smthrs/flow/AttemptTimedOut",
|
|
26
|
+
{
|
|
27
|
+
code: Schema.Literal("attempt_timed_out").pipe(
|
|
28
|
+
Schema.withConstructorDefault(Effect.succeed("attempt_timed_out"))
|
|
29
|
+
),
|
|
30
|
+
actionName: Schema.String,
|
|
31
|
+
attempt: Schema.Number,
|
|
32
|
+
/** Which bound expired: the whole attempt, or the gap between heartbeats. */
|
|
33
|
+
bound: Schema.Literals(["attempt", "heartbeat"]),
|
|
34
|
+
timeoutMs: Schema.Number,
|
|
35
|
+
message: Schema.String
|
|
36
|
+
}
|
|
37
|
+
) {}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Defines filesystem boundary enforcement modes.
|
|
5
|
+
*
|
|
6
|
+
* The schema itself is `@smthrs/plan`'s `FileSet.BoundaryMode`, because the
|
|
7
|
+
* same two words are what a plan node's `effects.boundaryMode` carries. This
|
|
8
|
+
* module is the name an action reaches for; there is one declaration behind
|
|
9
|
+
* both.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import * as FileSet from "@smthrs/plan/FileSet"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Schema for how strictly an action's filesystem boundary is enforced.
|
|
18
|
+
*
|
|
19
|
+
* `hard` rejects undeclared access. `expected` records access for validation
|
|
20
|
+
* after execution without requiring the sandbox to reject it immediately.
|
|
21
|
+
*
|
|
22
|
+
* @category models
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
export const BoundaryMode = FileSet.BoundaryMode
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* How strictly an action's filesystem boundary is enforced.
|
|
29
|
+
*
|
|
30
|
+
* @category models
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
*/
|
|
33
|
+
export type BoundaryMode = FileSet.BoundaryMode
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The environment description folded into every cross-run cache key.
|
|
5
|
+
*
|
|
6
|
+
* A cached result is only reusable on a host that would have produced the same
|
|
7
|
+
* bytes, so the key has to name the environment as well as the inputs — the
|
|
8
|
+
* platform, the toolchain, and the capability groups in force. Bazel's action
|
|
9
|
+
* key does the same thing for the same reason.
|
|
10
|
+
*
|
|
11
|
+
* It is a *complete* value on purpose: an environment a composition cannot
|
|
12
|
+
* fully describe is one whose cache hits cannot be justified, and the engine
|
|
13
|
+
* executes rather than guessing at the missing part.
|
|
14
|
+
*
|
|
15
|
+
* @since 0.1.0
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import * as PlanCachePolicy from "@smthrs/plan/CachePolicy"
|
|
19
|
+
import * as Schema from "effect/Schema"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Validates named capability groups.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
*/
|
|
27
|
+
const Capabilities = Schema.Record(Schema.String, Schema.Array(Schema.NonEmptyString)).check(
|
|
28
|
+
Schema.makeFilter((capabilities) =>
|
|
29
|
+
Object.keys(capabilities).every((name) => name.length > 0) || "Capability names must not be empty"
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Complete runtime environment included in every cross-run cache key.
|
|
35
|
+
*
|
|
36
|
+
* If a composition cannot provide this complete value, the engine executes
|
|
37
|
+
* normally but does not derive a cross-run cache key.
|
|
38
|
+
*
|
|
39
|
+
* @category models
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
*/
|
|
42
|
+
export type CacheEnvironment = typeof CacheEnvironment.Type
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Schema for the complete runtime environment included in cache keys.
|
|
46
|
+
*
|
|
47
|
+
* @category models
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
*/
|
|
50
|
+
export const CacheEnvironment = Schema.Struct({
|
|
51
|
+
/** Ordered semantic runtime layers, including versions and configuration. */
|
|
52
|
+
layers: Schema.Array(Schema.NonEmptyString),
|
|
53
|
+
/** Complete effective capability groups. */
|
|
54
|
+
capabilities: Capabilities
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* How far a recorded sealed result may travel.
|
|
59
|
+
*
|
|
60
|
+
* `shared` is the content-addressed default: the key names the inputs and the
|
|
61
|
+
* environment, so any run on any host that would have produced the same bytes
|
|
62
|
+
* may reuse the row. `run` and `flow` narrow that on purpose — a step whose
|
|
63
|
+
* result is only meaningful inside one execution, or inside one flow, folds
|
|
64
|
+
* that identity into its key so a sibling never reads it.
|
|
65
|
+
*
|
|
66
|
+
* This is `@smthrs/plan`'s `CachePolicy.CacheScope`, the one scope vocabulary
|
|
67
|
+
* `@smthrs/patterns` also declares its policy with.
|
|
68
|
+
*
|
|
69
|
+
* @category models
|
|
70
|
+
* @since 0.1.0
|
|
71
|
+
*/
|
|
72
|
+
export const CacheScope = PlanCachePolicy.CacheScope
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* How far a recorded sealed result may travel.
|
|
76
|
+
*
|
|
77
|
+
* @category models
|
|
78
|
+
* @since 0.1.0
|
|
79
|
+
*/
|
|
80
|
+
export type CacheScope = PlanCachePolicy.CacheScope
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The caller's declaration about the decay and the reach of a sealed action's
|
|
84
|
+
* recorded result.
|
|
85
|
+
*
|
|
86
|
+
* `ttlMs` bounds the age of a row the engine may serve: past it the dispatch
|
|
87
|
+
* executes again and journals `cache-expired`, so the refusal is durable
|
|
88
|
+
* evidence a replay reads rather than a fresh clock reading. `scope` decides
|
|
89
|
+
* what the key names besides the inputs.
|
|
90
|
+
*
|
|
91
|
+
* This is `@smthrs/plan`'s `CachePolicy.CachePolicy`, the one policy schema.
|
|
92
|
+
*
|
|
93
|
+
* @category schemas
|
|
94
|
+
* @since 0.1.0
|
|
95
|
+
*/
|
|
96
|
+
export const CachePolicy = PlanCachePolicy.CachePolicy
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The caller's declaration about the decay and the reach of a sealed action's
|
|
100
|
+
* recorded result.
|
|
101
|
+
*
|
|
102
|
+
* @category models
|
|
103
|
+
* @since 0.1.0
|
|
104
|
+
*/
|
|
105
|
+
export type CachePolicy = PlanCachePolicy.CachePolicy
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Annotation key carrying a declaration's {@link CachePolicy}.
|
|
109
|
+
*
|
|
110
|
+
* It is an annotation, not a field on the action, for the same reason
|
|
111
|
+
* placement and effects are: the policy is data that travels with the
|
|
112
|
+
* declaration and is read by whoever executes it, and adding it changes no
|
|
113
|
+
* existing call site.
|
|
114
|
+
*
|
|
115
|
+
* It is `@smthrs/plan`'s `CachePolicy.CachePolicyAnnotation` itself, the same
|
|
116
|
+
* object `@smthrs/patterns` annotates a flow with, identified by
|
|
117
|
+
* `"@smthrs/flow/Action/CachePolicy"`.
|
|
118
|
+
*
|
|
119
|
+
* @category annotations
|
|
120
|
+
* @since 0.1.0
|
|
121
|
+
*/
|
|
122
|
+
export const CachePolicyAnnotation = PlanCachePolicy.CachePolicyAnnotation
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Reads the cache policy an annotation bag carries, or `undefined` when it
|
|
126
|
+
* carries none.
|
|
127
|
+
*
|
|
128
|
+
* @category getters
|
|
129
|
+
* @since 0.1.0
|
|
130
|
+
*/
|
|
131
|
+
export const cachePolicyOf = PlanCachePolicy.cachePolicyOf
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Declares a cache policy on an action.
|
|
135
|
+
*
|
|
136
|
+
* This is the form the engine honors today: `@smthrs/engine-store` reads
|
|
137
|
+
* {@link CachePolicyAnnotation} off the dispatched action, bounds the age of
|
|
138
|
+
* the row it may serve by `ttlMs`, and narrows the address that row is stored
|
|
139
|
+
* under from `scope`. `@smthrs/patterns`' `WithCache` declares the same policy
|
|
140
|
+
* over a `@smthrs/core` flow under the same annotation key, for the
|
|
141
|
+
* declaration surface, so a policy written by either is read by the engine.
|
|
142
|
+
*
|
|
143
|
+
* The action is not mutated. `annotate` returns a new declaration carrying the
|
|
144
|
+
* policy, which is what a plan captures.
|
|
145
|
+
*
|
|
146
|
+
* It is `@smthrs/plan`'s `CachePolicy.annotate` under this package's name for
|
|
147
|
+
* it.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* import { Action } from "@smthrs/flow"
|
|
152
|
+
* import * as CacheEnvironment from "@smthrs/flow/CacheEnvironment"
|
|
153
|
+
* import * as Effect from "effect/Effect"
|
|
154
|
+
* import * as Schema from "effect/Schema"
|
|
155
|
+
*
|
|
156
|
+
* const compile = CacheEnvironment.withCache(
|
|
157
|
+
* Action.make({
|
|
158
|
+
* name: "build/compile",
|
|
159
|
+
* success: Schema.String,
|
|
160
|
+
* tier: "sealed",
|
|
161
|
+
* execute: Effect.succeed("dist/server.js")
|
|
162
|
+
* }),
|
|
163
|
+
* { ttlMs: 60_000, scope: "shared" }
|
|
164
|
+
* )
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* @category combinators
|
|
168
|
+
* @since 0.1.0
|
|
169
|
+
*/
|
|
170
|
+
export const withCache = PlanCachePolicy.annotate
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the `ConcurrentKeylessDispatch` action failure.
|
|
3
|
+
*
|
|
4
|
+
* The `_tag` string was settled under `@smthrs/flow/` for 1.0.0-rc.0. The RC
|
|
5
|
+
* makes no compatibility promise to 0.x journals, and the tag freezes when
|
|
6
|
+
* the RC ships.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.1.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import * as Effect from "effect/Effect"
|
|
12
|
+
import * as Schema from "effect/Schema"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Two ordinal-keyed invocations of one allocation scope were in flight
|
|
16
|
+
* concurrently, either keyless invocations of one declaration or same-key
|
|
17
|
+
* invocations at a non-sealed tier (issue #130), so their ordinals, and with
|
|
18
|
+
* them their step keys, attempt rows, and recorded outcomes, would be
|
|
19
|
+
* assigned by fiber arrival order. A crash-resume that replays the fibers in
|
|
20
|
+
* the opposite order would silently hand one invocation the other's recorded
|
|
21
|
+
* outcome (issue #111); Temporal fails such replays with a nondeterminism
|
|
22
|
+
* error, and the engine refuses the hazard up front instead of detecting it
|
|
23
|
+
* after the corruption. Declare an `idempotencyKey` *distinguishing* the
|
|
24
|
+
* invocations to dispatch them concurrently; a sealed action with a key
|
|
25
|
+
* takes a pure cache key and is exempt.
|
|
26
|
+
*
|
|
27
|
+
* @category errors
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
export class ConcurrentKeylessDispatch extends Schema.TaggedError<ConcurrentKeylessDispatch>()(
|
|
31
|
+
"@smthrs/flow/ConcurrentKeylessDispatch",
|
|
32
|
+
{
|
|
33
|
+
code: Schema.Literal("concurrent_keyless_dispatch").pipe(
|
|
34
|
+
Schema.withConstructorDefault(Effect.succeed("concurrent_keyless_dispatch"))
|
|
35
|
+
),
|
|
36
|
+
actionName: Schema.String
|
|
37
|
+
}
|
|
38
|
+
) {}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Defines runtime context carried across action attempts.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import * as Context from "effect/Context"
|
|
10
|
+
import * as Effect from "effect/Effect"
|
|
11
|
+
import * as Layer from "effect/Layer"
|
|
12
|
+
import type { CacheEnvironment } from "./CacheEnvironment.ts"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Context reference carrying the complete environment folded into reusable
|
|
16
|
+
* action keys.
|
|
17
|
+
*
|
|
18
|
+
* A composition either provides a complete {@link CacheEnvironment} or leaves
|
|
19
|
+
* it absent. When absent, the engine scopes action keys to the current run
|
|
20
|
+
* instead of presenting incomplete environment data as reusable identity.
|
|
21
|
+
*
|
|
22
|
+
* @category idempotency
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
export const CurrentCacheEnvironment = Context.Reference<CacheEnvironment | undefined>(
|
|
26
|
+
"@smthrs/flow/Action/CurrentCacheEnvironment",
|
|
27
|
+
{ defaultValue: () => undefined }
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Declares the complete cache environment of a composition as a layer.
|
|
32
|
+
*
|
|
33
|
+
* **When to use**
|
|
34
|
+
*
|
|
35
|
+
* Use this only when the composition can identify every semantic runtime
|
|
36
|
+
* layer and its complete capability set. Otherwise leave the context absent.
|
|
37
|
+
*
|
|
38
|
+
* @category idempotency
|
|
39
|
+
* @since 0.1.0
|
|
40
|
+
*/
|
|
41
|
+
export const layerCacheEnvironment = (
|
|
42
|
+
environment: CacheEnvironment
|
|
43
|
+
): Layer.Layer<never> => Layer.succeed(CurrentCacheEnvironment)(environment)
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The ordinal slots a retry sequence shares across its attempts, keyed by
|
|
47
|
+
* allocation scope.
|
|
48
|
+
*
|
|
49
|
+
* `Action.retry` cannot allocate ordinals itself — allocation is scoped by
|
|
50
|
+
* action identity and only the engine knows which action is being
|
|
51
|
+
* dispatched (issue #73) — so it provides an empty map the engine fills per
|
|
52
|
+
* scope on the first attempt and reads back on every later one. The map is
|
|
53
|
+
* scope-keyed rather than a single value because one retry block may
|
|
54
|
+
* dispatch several distinct actions; a shared unkeyed slot handed the
|
|
55
|
+
* first action's ordinal to every later one, silently skipping their own
|
|
56
|
+
* name-scoped counters and aliasing a later independent dispatch onto an
|
|
57
|
+
* in-block key (issue #84).
|
|
58
|
+
*
|
|
59
|
+
* Each scope pins a *sequence* of ordinals rather than a single value
|
|
60
|
+
* (issue #100): one retry block may dispatch the same declaration several
|
|
61
|
+
* times, and a single-valued slot handed the first dispatch's ordinal to
|
|
62
|
+
* every later one, so the second dispatch silently replayed the first's
|
|
63
|
+
* recorded outcome. `cursors` counts the dispatches of each scope within the
|
|
64
|
+
* current attempt — `Action.retry` resets it at every attempt boundary —
|
|
65
|
+
* so the n-th same-scope dispatch of every attempt reuses the n-th pinned
|
|
66
|
+
* ordinal.
|
|
67
|
+
*
|
|
68
|
+
* @category attempts
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
*/
|
|
71
|
+
export interface OrdinalSlot {
|
|
72
|
+
readonly values: Map<string, Array<number>>
|
|
73
|
+
readonly cursors: Map<string, number>
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Context reference carrying the ordinal slot of the enclosing
|
|
78
|
+
* `Action.retry` sequence, when present.
|
|
79
|
+
*
|
|
80
|
+
* @category attempts
|
|
81
|
+
* @since 0.1.0
|
|
82
|
+
*/
|
|
83
|
+
export const CurrentOrdinal = Context.Reference<OrdinalSlot | undefined>(
|
|
84
|
+
"@smthrs/flow/Action/CurrentOrdinal",
|
|
85
|
+
{ defaultValue: () => undefined }
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Context reference containing the current action retry attempt, defaulting
|
|
90
|
+
* to `1`.
|
|
91
|
+
*
|
|
92
|
+
* @category attempts
|
|
93
|
+
* @since 0.1.0
|
|
94
|
+
*/
|
|
95
|
+
export const CurrentAttempt = Context.Reference<number>(
|
|
96
|
+
"@smthrs/flow/Action/CurrentAttempt",
|
|
97
|
+
{ defaultValue: () => 1 }
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Context reference carrying the persisted key of the dispatch an
|
|
102
|
+
* implementation is currently running under, when the runtime supplies one.
|
|
103
|
+
*
|
|
104
|
+
* **When to use**
|
|
105
|
+
*
|
|
106
|
+
* Use it in an action implementation that has to name durable state of its
|
|
107
|
+
* own — `Sleep` names a `DurableClock` — so the name it derives belongs to
|
|
108
|
+
* THIS dispatch. The key is the identity the engine already allocated for the
|
|
109
|
+
* dispatch: its attempt rows, its recorded outcome, and its cache row are
|
|
110
|
+
* addressed by it, so it is stable across every replay of one node and
|
|
111
|
+
* distinct between two identical calls of the same declaration. Deriving from
|
|
112
|
+
* it is therefore the only way an implementation gets both properties without
|
|
113
|
+
* allocating a second identity beside the engine's.
|
|
114
|
+
*
|
|
115
|
+
* **Gotchas**
|
|
116
|
+
*
|
|
117
|
+
* A runtime that has not adopted the seam leaves the reference absent rather
|
|
118
|
+
* than substituting a placeholder, because a placeholder would silently alias
|
|
119
|
+
* every dispatch of one declaration onto one name. An implementation that
|
|
120
|
+
* needs durable identity refuses instead.
|
|
121
|
+
*
|
|
122
|
+
* @category idempotency
|
|
123
|
+
* @since 0.1.0
|
|
124
|
+
*/
|
|
125
|
+
export const CurrentInvocationKey = Context.Reference<string | undefined>(
|
|
126
|
+
"@smthrs/flow/Action/CurrentInvocationKey",
|
|
127
|
+
{ defaultValue: () => undefined }
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Context reference carrying the heartbeat of the attempt currently running,
|
|
132
|
+
* which the runtime installs for an action declared with
|
|
133
|
+
* `heartbeatTimeoutMs`. Outside such an attempt it does nothing.
|
|
134
|
+
*
|
|
135
|
+
* @category attempts
|
|
136
|
+
* @since 1.0.0
|
|
137
|
+
*/
|
|
138
|
+
export const CurrentHeartbeat = Context.Reference<Effect.Effect<void>>(
|
|
139
|
+
"@smthrs/flow/Action/CurrentHeartbeat",
|
|
140
|
+
{ defaultValue: () => Effect.void }
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Reports that the running action attempt is still making progress.
|
|
145
|
+
*
|
|
146
|
+
* An action declared with `heartbeatTimeoutMs` fails its attempt with
|
|
147
|
+
* `AttemptTimedOut` when that long passes without a heartbeat; each call
|
|
148
|
+
* restarts the gap. In any other action it is a no-op.
|
|
149
|
+
*
|
|
150
|
+
* @category attempts
|
|
151
|
+
* @since 1.0.0
|
|
152
|
+
*/
|
|
153
|
+
export const heartbeat: Effect.Effect<void> = Effect.gen(function*() {
|
|
154
|
+
const beat = yield* CurrentHeartbeat
|
|
155
|
+
yield* beat
|
|
156
|
+
})
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the `DuplicateImplementation` action failure.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as Schema from "effect/Schema"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Two implementations competed for one action tag without an explicit override.
|
|
11
|
+
* @category errors
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
export class DuplicateImplementation extends Schema.TaggedError<DuplicateImplementation>()(
|
|
15
|
+
"@smthrs/flow/Action/DuplicateImplementation",
|
|
16
|
+
{ name: Schema.String }
|
|
17
|
+
) {
|
|
18
|
+
// The `name` field shadows `Error.name`, so without a message a recorded
|
|
19
|
+
// defect reads only as the bare action tag.
|
|
20
|
+
/** @since 1.0.0 */
|
|
21
|
+
override get message(): string {
|
|
22
|
+
return `Action "${this.name}" already has an implementation in this registry; provide its layer once, or pass override: true to replace it`
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* An action's declaration of which files it reads and which it may write.
|
|
5
|
+
*
|
|
6
|
+
* The declaration is what makes a step hermetic enough to cache: the read set
|
|
7
|
+
* is the dependency edge set folded into the step key, and the write set is
|
|
8
|
+
* what the host measures the execution against afterwards. `boundaryMode`
|
|
9
|
+
* decides what happens when the two disagree — a hard boundary refuses the
|
|
10
|
+
* result, an expected one records the deviation and carries on.
|
|
11
|
+
*
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as FileSet from "@smthrs/plan/FileSet"
|
|
16
|
+
import * as Schema from "effect/Schema"
|
|
17
|
+
import { BoundaryMode } from "./BoundaryMode.ts"
|
|
18
|
+
import { FileInput } from "./FileInput.ts"
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Schema for the filesystem boundary of an action.
|
|
22
|
+
*
|
|
23
|
+
* @category models
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
export const FileBoundary = Schema.Struct({
|
|
27
|
+
/**
|
|
28
|
+
* Exact files already measured, or globs to expand while preparing.
|
|
29
|
+
*
|
|
30
|
+
* Workspace-relative in both forms: a measured {@link FileInput} path is
|
|
31
|
+
* checked like every pattern, because the engine measures reads inside the
|
|
32
|
+
* workspace sandbox and would refuse an absolute or upward path only at
|
|
33
|
+
* prepare time.
|
|
34
|
+
*/
|
|
35
|
+
readSet: Schema.Array(Schema.Union([FileInput, FileSet.Glob])),
|
|
36
|
+
/** Files or patterns the action is allowed to write. */
|
|
37
|
+
writeSet: Schema.Array(FileSet.Entry),
|
|
38
|
+
/**
|
|
39
|
+
* Files the action is allowed to DELETE.
|
|
40
|
+
*
|
|
41
|
+
* A declared write that is absent when the action finishes is a defect —
|
|
42
|
+
* Bazel's `SkyframeActionExecutor.checkOutputs` reports "output was not
|
|
43
|
+
* created" and fails the action — because recording the absence as valid
|
|
44
|
+
* evidence caches the claim "this file should not exist", which a later
|
|
45
|
+
* replay then acts on by deleting the path. Deletion stays a feature here,
|
|
46
|
+
* but only when it was declared, and a declared removal is what makes an
|
|
47
|
+
* absent path legitimate rather than a crash mid-execution.
|
|
48
|
+
*
|
|
49
|
+
* Optional with an empty default, so boundaries persisted before it keep
|
|
50
|
+
* decoding. Disjoint from {@link writeSet}: a path cannot be both promised
|
|
51
|
+
* and disclaimed. Workspace-relative like every other declared path —
|
|
52
|
+
* replay acts on a removal by deleting it, so an absolute or upward
|
|
53
|
+
* spelling would hand evidence an eraser aimed outside the workspace.
|
|
54
|
+
*/
|
|
55
|
+
removes: Schema.optional(Schema.Array(FileSet.Pattern)),
|
|
56
|
+
/** Whether undeclared access is rejected immediately or validated later. */
|
|
57
|
+
boundaryMode: BoundaryMode
|
|
58
|
+
}).check(
|
|
59
|
+
Schema.makeFilter(
|
|
60
|
+
(boundary) => {
|
|
61
|
+
const both = (boundary.removes ?? []).filter((path) =>
|
|
62
|
+
boundary.writeSet.some((entry) => FileSet.overlaps(entry, path))
|
|
63
|
+
)
|
|
64
|
+
return both.length === 0 ||
|
|
65
|
+
`a path cannot be both written and removed: ${both.join(", ")}`
|
|
66
|
+
},
|
|
67
|
+
{ title: "disjointWritesAndRemoves" }
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The filesystem boundary of an action.
|
|
73
|
+
*
|
|
74
|
+
* @category models
|
|
75
|
+
* @since 0.1.0
|
|
76
|
+
*/
|
|
77
|
+
export type FileBoundary = typeof FileBoundary.Type
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A file path paired with the digest measured for its contents.
|
|
5
|
+
*
|
|
6
|
+
* Paths alone cannot key a step — the same path holds different bytes on
|
|
7
|
+
* different days — so every declared read carries the digest observed for it,
|
|
8
|
+
* and a later run compares digests rather than mtimes.
|
|
9
|
+
*
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import * as FileSet from "@smthrs/plan/FileSet"
|
|
14
|
+
import * as Schema from "effect/Schema"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Schema for an input file path paired with its measured content digest.
|
|
18
|
+
*
|
|
19
|
+
* The path is workspace-relative like every other declared path in a
|
|
20
|
+
* {@link FileBoundary}: the engine measures reads through the workspace
|
|
21
|
+
* sandbox, which refuses absolute and upward spellings, so a boundary that
|
|
22
|
+
* admitted them here would only be refused later, at prepare or replay.
|
|
23
|
+
* Checking here keeps the boundary this package admits the boundary the
|
|
24
|
+
* engine accepts.
|
|
25
|
+
*
|
|
26
|
+
* @category models
|
|
27
|
+
* @since 0.1.0
|
|
28
|
+
*/
|
|
29
|
+
export const FileInput = Schema.Struct({
|
|
30
|
+
/** Workspace-relative path of the input file. */
|
|
31
|
+
path: FileSet.Pattern,
|
|
32
|
+
/** Non-empty digest observed for the file contents. */
|
|
33
|
+
digest: Schema.NonEmptyString
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* An input file path paired with its measured content digest.
|
|
38
|
+
*
|
|
39
|
+
* @category models
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
*/
|
|
42
|
+
export type FileInput = typeof FileInput.Type
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named reusable filesystem declaration groups.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Filegroup, makeFilegroup } from "@smthrs/plan/FileSet"
|
|
8
|
+
export { Filegroup }
|
|
9
|
+
export type { Filegroup as Type } from "@smthrs/plan/FileSet"
|
|
10
|
+
/**
|
|
11
|
+
* Creates a named filegroup.
|
|
12
|
+
*
|
|
13
|
+
* @category constructors
|
|
14
|
+
* @since 0.1.0
|
|
15
|
+
*/
|
|
16
|
+
export const make = makeFilegroup
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the `ImplementationVersionMismatch` action failure.
|
|
3
|
+
*
|
|
4
|
+
* The `_tag` string was settled under `@smthrs/flow/` for 1.0.0-rc.0. The RC
|
|
5
|
+
* makes no compatibility promise to 0.x journals, and the tag freezes when
|
|
6
|
+
* the RC ships.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.1.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import * as Schema from "effect/Schema"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A handler registration does not attest the declaration's implementation version.
|
|
15
|
+
*
|
|
16
|
+
* @category errors
|
|
17
|
+
* @since 0.1.0
|
|
18
|
+
*/
|
|
19
|
+
export class ImplementationVersionMismatch extends Schema.TaggedError<ImplementationVersionMismatch>()(
|
|
20
|
+
"@smthrs/flow/ImplementationVersionMismatch",
|
|
21
|
+
{
|
|
22
|
+
actionName: Schema.String,
|
|
23
|
+
declaredVersion: Schema.NullOr(Schema.String),
|
|
24
|
+
registeredVersion: Schema.NullOr(Schema.String),
|
|
25
|
+
message: Schema.String
|
|
26
|
+
}
|
|
27
|
+
) {}
|