@smthrs/flow 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 +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 +1022 -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 +1482 -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 +1860 -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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/FlowRuntime/FlowCycleDetected.ts"],
|
|
4
|
+
"sourcesContent": ["// Deep reviewed and polished by a human on 2026-08-10.\n\n/**\n * Failure raised when executing a flow would close a cycle in the persisted\n * parent-execution chain.\n *\n * @since 0.1.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * Raised when executing a flow would close a cycle in the persisted\n * parent-execution chain, which is a child asking to execute an execution id\n * that already appears among its own ancestors.\n *\n * This is a **typed failure**, never a defect: the caller is expected to be\n * able to recover from it (see `docs/troubleshooting.md`,\n * \"FlowRuntime.FlowCycleDetected\"). Detection itself lives in\n * `@smthrs/engine-store`'s `DurableEngineState.recordRunParent`, which\n * inserts the durable parent edge and walks the parent chain in O(depth)\n * inside one storage transaction, rolling back on a hit; the error is\n * declared here because it is part of the `execute` contract this package\n * owns.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class FlowCycleDetected extends Schema.TaggedError<FlowCycleDetected>()(\n \"@smthrs/flow/FlowCycleDetected\",\n {\n /** Stable public error code. */\n // This wire shape freezes at 1.0.0-rc.0.\n code: Schema.Literal(\"flow_cycle_detected\").pipe(\n Schema.withConstructorDefault(Effect.succeed(\"flow_cycle_detected\"))\n ),\n /** Ordered execution ids from the cycle's target back to itself. */\n path: Schema.Array(Schema.String)\n }\n) {}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,aAAwB;AACxB,aAAwB;AAmBjB,MAAM,0BAA0B,OAAO,YAA+B;AAAA,EAC3E;AAAA,EACA;AAAA;AAAA;AAAA,IAGE,MAAM,OAAO,QAAQ,qBAAqB,EAAE;AAAA,MAC1C,OAAO,uBAAuB,OAAO,QAAQ,qBAAqB,CAAC;AAAA,IACrE;AAAA;AAAA,IAEA,MAAM,OAAO,MAAM,OAAO,MAAM;AAAA,EAClC;AACF,EAAE;AAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure raised when `poll` addresses an execution the runtime has no record
|
|
3
|
+
* of.
|
|
4
|
+
*
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
8
|
+
declare const FlowExecutionNotFound_base: Schema.Class<FlowExecutionNotFound, Schema.TaggedStruct<"@smthrs/flow/FlowExecutionNotFound", {
|
|
9
|
+
/** Stable public error code. */
|
|
10
|
+
readonly code: Schema.withConstructorDefault<Schema.Literal<"execution_not_found">>;
|
|
11
|
+
/** The execution id the runtime has no record of. */
|
|
12
|
+
readonly executionId: Schema.String;
|
|
13
|
+
}>, import("effect/Cause").YieldableError>;
|
|
14
|
+
/**
|
|
15
|
+
* Raised when `poll` is asked about an execution id the runtime never
|
|
16
|
+
* recorded.
|
|
17
|
+
*
|
|
18
|
+
* This is a **typed failure**, never a defect, and never folded into the
|
|
19
|
+
* success channel: `poll` answers `Option.none` for a known execution that has
|
|
20
|
+
* not settled yet, so answering it for an unknown id as well would leave the
|
|
21
|
+
* caller unable to distinguish "still running" from "no such execution". A
|
|
22
|
+
* caller holding a stored execution id needs that distinction — a run that is
|
|
23
|
+
* still in flight is waited on, one the runtime has no record of is a wiring
|
|
24
|
+
* or retention problem to surface.
|
|
25
|
+
*
|
|
26
|
+
* The error is declared here because it is part of the `poll` contract this
|
|
27
|
+
* package owns; every runtime — the in-memory engine and the durable
|
|
28
|
+
* `@smthrs/engine-store` driver alike — raises it for an unknown id.
|
|
29
|
+
*
|
|
30
|
+
* @category errors
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
*/
|
|
33
|
+
export declare class FlowExecutionNotFound extends FlowExecutionNotFound_base {
|
|
34
|
+
/** @since 0.1.0 */
|
|
35
|
+
get message(): string;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=FlowExecutionNotFound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowExecutionNotFound.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/FlowExecutionNotFound.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;IAwBnC,gCAAgC;;IAKhC,qDAAqD;;;AA3BzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,qBAAsB,SAAQ,0BAW1C;IACC,mBAAmB;IACnB,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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 FlowExecutionNotFound_exports = {};
|
|
30
|
+
__export(FlowExecutionNotFound_exports, {
|
|
31
|
+
FlowExecutionNotFound: () => FlowExecutionNotFound
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(FlowExecutionNotFound_exports);
|
|
34
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
35
|
+
var Schema = __toESM(require("effect/Schema"), 1);
|
|
36
|
+
class FlowExecutionNotFound extends Schema.TaggedError()(
|
|
37
|
+
"@smthrs/flow/FlowExecutionNotFound",
|
|
38
|
+
{
|
|
39
|
+
/** Stable public error code. */
|
|
40
|
+
// This wire shape freezes at 1.0.0-rc.0.
|
|
41
|
+
code: Schema.Literal("execution_not_found").pipe(
|
|
42
|
+
Schema.withConstructorDefault(Effect.succeed("execution_not_found"))
|
|
43
|
+
),
|
|
44
|
+
/** The execution id the runtime has no record of. */
|
|
45
|
+
executionId: Schema.String
|
|
46
|
+
}
|
|
47
|
+
) {
|
|
48
|
+
/** @since 0.1.0 */
|
|
49
|
+
get message() {
|
|
50
|
+
return `No flow execution is recorded under id "${this.executionId}"`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=FlowExecutionNotFound.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/FlowRuntime/FlowExecutionNotFound.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Failure raised when `poll` addresses an execution the runtime has no record\n * of.\n *\n * @since 0.1.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * Raised when `poll` is asked about an execution id the runtime never\n * recorded.\n *\n * This is a **typed failure**, never a defect, and never folded into the\n * success channel: `poll` answers `Option.none` for a known execution that has\n * not settled yet, so answering it for an unknown id as well would leave the\n * caller unable to distinguish \"still running\" from \"no such execution\". A\n * caller holding a stored execution id needs that distinction \u2014 a run that is\n * still in flight is waited on, one the runtime has no record of is a wiring\n * or retention problem to surface.\n *\n * The error is declared here because it is part of the `poll` contract this\n * package owns; every runtime \u2014 the in-memory engine and the durable\n * `@smthrs/engine-store` driver alike \u2014 raises it for an unknown id.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class FlowExecutionNotFound extends Schema.TaggedError<FlowExecutionNotFound>()(\n \"@smthrs/flow/FlowExecutionNotFound\",\n {\n /** Stable public error code. */\n // This wire shape freezes at 1.0.0-rc.0.\n code: Schema.Literal(\"execution_not_found\").pipe(\n Schema.withConstructorDefault(Effect.succeed(\"execution_not_found\"))\n ),\n /** The execution id the runtime has no record of. */\n executionId: Schema.String\n }\n) {\n /** @since 0.1.0 */\n override get message(): string {\n return `No flow execution is recorded under id \"${this.executionId}\"`\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,aAAwB;AACxB,aAAwB;AAqBjB,MAAM,8BAA8B,OAAO,YAAmC;AAAA,EACnF;AAAA,EACA;AAAA;AAAA;AAAA,IAGE,MAAM,OAAO,QAAQ,qBAAqB,EAAE;AAAA,MAC1C,OAAO,uBAAuB,OAAO,QAAQ,qBAAqB,CAAC;AAAA,IACrE;AAAA;AAAA,IAEA,aAAa,OAAO;AAAA,EACtB;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAkB;AAC7B,WAAO,2CAA2C,KAAK,WAAW;AAAA,EACpE;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-execution state contract flow authoring APIs read and update.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import type * as Cause from "effect/Cause";
|
|
7
|
+
import * as Context from "effect/Context";
|
|
8
|
+
import type * as Latch from "effect/Latch";
|
|
9
|
+
import type * as Scope from "effect/Scope";
|
|
10
|
+
import type * as Flow from "../Flow/index.ts";
|
|
11
|
+
import type { WaitingAnnotation } from "./WaitingAnnotation.ts";
|
|
12
|
+
declare const FlowInstance_base: Context.ServiceClass<FlowInstance, "@smthrs/flow/FlowRuntime/FlowInstance", {
|
|
13
|
+
/**
|
|
14
|
+
* The flow execution ID.
|
|
15
|
+
*/
|
|
16
|
+
readonly executionId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The journal lineage this execution's records address themselves to.
|
|
19
|
+
*
|
|
20
|
+
* `docs/concepts/the-runtime-port.md` makes a frame the journal position
|
|
21
|
+
* `(lineageId, seq)`, and `docs/guides/run-a-child-flow.md` defines the
|
|
22
|
+
* lineage id as the run id followed by the node-id path from the run root.
|
|
23
|
+
* A runtime mints it; every durable record this execution writes carries it
|
|
24
|
+
* as `meta.lineageId`, which is what lets `TimeTravel.inspect` fold an
|
|
25
|
+
* ordinary engine journal at all.
|
|
26
|
+
*/
|
|
27
|
+
readonly lineageId: string;
|
|
28
|
+
/**
|
|
29
|
+
* The flow definition.
|
|
30
|
+
*/
|
|
31
|
+
readonly flow: Flow.Any;
|
|
32
|
+
/**
|
|
33
|
+
* A scope that represents the lifetime of the flow.
|
|
34
|
+
*
|
|
35
|
+
* It is only closed when the flow is completed.
|
|
36
|
+
*/
|
|
37
|
+
readonly scope: Scope.Closeable;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the flow has requested to be suspended.
|
|
40
|
+
*/
|
|
41
|
+
suspended: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the flow has requested to be interrupted.
|
|
44
|
+
*/
|
|
45
|
+
interrupted: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* The waiting classification the flow declared for its next suspension
|
|
48
|
+
* via `annotateWaiting`. Durable drivers read it when parking the
|
|
49
|
+
* run so approval and quota waits (and their wake token) are
|
|
50
|
+
* representable; when absent the driver derives `timer`/`event` from
|
|
51
|
+
* durable state.
|
|
52
|
+
*/
|
|
53
|
+
waiting: WaitingAnnotation | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* The next-round invocation this round settled with, when its body's root
|
|
56
|
+
* value was a `to` rather than a `done`.
|
|
57
|
+
*
|
|
58
|
+
* A handoff is a settlement, not a failure and not a suspension, so it
|
|
59
|
+
* cannot travel out through the effect's exit; `Flow.intoResult` reads the
|
|
60
|
+
* slot and answers `Flow.Handoff` instead of `Flow.Complete`. The engine
|
|
61
|
+
* then opens the next round under the same lineage
|
|
62
|
+
* (`docs/concepts/trampoline-rounds.md`).
|
|
63
|
+
*/
|
|
64
|
+
handoff: Flow.Handoff | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* The lineage deadline this round inherited from the round that handed
|
|
67
|
+
* off to it, when its lineage is bounded. `Deadline.bound` runs the round
|
|
68
|
+
* under it instead of starting a deadline of its own.
|
|
69
|
+
*/
|
|
70
|
+
readonly lineageDeadline?: Flow.LineageDeadline | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* When SuspendOnFailure is triggered, the cause of the failure is stored
|
|
73
|
+
* here.
|
|
74
|
+
*/
|
|
75
|
+
cause: Cause.Cause<never> | undefined;
|
|
76
|
+
readonly actionState: {
|
|
77
|
+
count: number;
|
|
78
|
+
readonly latch: Latch.Latch;
|
|
79
|
+
readonly nextOrdinal: (scope: string) => number;
|
|
80
|
+
readonly snapshots: Map<string, unknown>;
|
|
81
|
+
/**
|
|
82
|
+
* Allocation scopes with a keyless dispatch currently in flight
|
|
83
|
+
* (issue #111). Indistinguishable invocations of one declaration are
|
|
84
|
+
* allocation-ordered, so two in flight at once would take their
|
|
85
|
+
* ordinals from the fiber schedule and a replay could swap their
|
|
86
|
+
* recorded outcomes undetected; the engine refuses the second dispatch
|
|
87
|
+
* instead. Distinct interpreter graph sites refine the scope and do not
|
|
88
|
+
* contend here.
|
|
89
|
+
*/
|
|
90
|
+
readonly keylessInFlight: Set<string>;
|
|
91
|
+
};
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Service that contains flow runtime state for one execution.
|
|
95
|
+
*
|
|
96
|
+
* **When to use**
|
|
97
|
+
*
|
|
98
|
+
* Use to read or update flow execution, suspension, interruption,
|
|
99
|
+
* lifetime, failure, and action coordination state inside flow authoring
|
|
100
|
+
* combinators and runtime implementations.
|
|
101
|
+
*
|
|
102
|
+
* **Details**
|
|
103
|
+
*
|
|
104
|
+
* The service stores the execution ID, flow definition, long-lived scope,
|
|
105
|
+
* suspension and interruption flags, the stored failure cause, and action
|
|
106
|
+
* coordination state for a single flow run. `@smthrs/flow` declares the
|
|
107
|
+
* contract; a runtime — `@smthrs/engine` — constructs the value.
|
|
108
|
+
*
|
|
109
|
+
* @category services
|
|
110
|
+
* @since 0.1.0
|
|
111
|
+
*/
|
|
112
|
+
export declare class FlowInstance extends FlowInstance_base {
|
|
113
|
+
}
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=FlowInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowInstance.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/FlowInstance.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;;IAwB3D;;OAEG;0BACmB,MAAM;IAE5B;;;;;;;;;OASG;wBACiB,MAAM;IAE1B;;OAEG;mBACY,IAAI,CAAC,GAAG;IAEvB;;;;OAIG;oBACa,KAAK,CAAC,SAAS;IAE/B;;OAEG;eACQ,OAAO;IAElB;;OAEG;iBACU,OAAO;IAEpB;;;;;;OAMG;aACM,iBAAiB,GAAG,SAAS;IAEtC;;;;;;;;;OASG;aACM,IAAI,CAAC,OAAO,GAAG,SAAS;IAEjC;;;;OAIG;+BACwB,IAAI,CAAC,eAAe,GAAG,SAAS;IAE3D;;;OAGG;WACI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS;0BAEf;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAA;QAC3B,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;QAC/C,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC;;;;;;;;WAQG;QACH,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KACtC;;AA9GL;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAa,SAAQ,iBA6FU;CAAG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 FlowInstance_exports = {};
|
|
30
|
+
__export(FlowInstance_exports, {
|
|
31
|
+
FlowInstance: () => FlowInstance
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(FlowInstance_exports);
|
|
34
|
+
var Context = __toESM(require("effect/Context"), 1);
|
|
35
|
+
class FlowInstance extends Context.Service()("@smthrs/flow/FlowRuntime/FlowInstance") {
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=FlowInstance.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/FlowRuntime/FlowInstance.ts"],
|
|
4
|
+
"sourcesContent": ["// Deep reviewed and polished by a human on 2026-08-10.\n\n/**\n * The per-execution state contract flow authoring APIs read and update.\n *\n * @since 0.1.0\n */\n\nimport type * as Cause from \"effect/Cause\"\nimport * as Context from \"effect/Context\"\nimport type * as Latch from \"effect/Latch\"\nimport type * as Scope from \"effect/Scope\"\nimport type * as Flow from \"../Flow/index.ts\"\nimport type { WaitingAnnotation } from \"./WaitingAnnotation.ts\"\n\n/**\n * Service that contains flow runtime state for one execution.\n *\n * **When to use**\n *\n * Use to read or update flow execution, suspension, interruption,\n * lifetime, failure, and action coordination state inside flow authoring\n * combinators and runtime implementations.\n *\n * **Details**\n *\n * The service stores the execution ID, flow definition, long-lived scope,\n * suspension and interruption flags, the stored failure cause, and action\n * coordination state for a single flow run. `@smthrs/flow` declares the\n * contract; a runtime \u2014 `@smthrs/engine` \u2014 constructs the value.\n *\n * @category services\n * @since 0.1.0\n */\nexport class FlowInstance extends Context.Service<\n FlowInstance,\n {\n /**\n * The flow execution ID.\n */\n readonly executionId: string\n\n /**\n * The journal lineage this execution's records address themselves to.\n *\n * `docs/concepts/the-runtime-port.md` makes a frame the journal position\n * `(lineageId, seq)`, and `docs/guides/run-a-child-flow.md` defines the\n * lineage id as the run id followed by the node-id path from the run root.\n * A runtime mints it; every durable record this execution writes carries it\n * as `meta.lineageId`, which is what lets `TimeTravel.inspect` fold an\n * ordinary engine journal at all.\n */\n readonly lineageId: string\n\n /**\n * The flow definition.\n */\n readonly flow: Flow.Any\n\n /**\n * A scope that represents the lifetime of the flow.\n *\n * It is only closed when the flow is completed.\n */\n readonly scope: Scope.Closeable\n\n /**\n * Whether the flow has requested to be suspended.\n */\n suspended: boolean\n\n /**\n * Whether the flow has requested to be interrupted.\n */\n interrupted: boolean\n\n /**\n * The waiting classification the flow declared for its next suspension\n * via `annotateWaiting`. Durable drivers read it when parking the\n * run so approval and quota waits (and their wake token) are\n * representable; when absent the driver derives `timer`/`event` from\n * durable state.\n */\n waiting: WaitingAnnotation | undefined\n\n /**\n * The next-round invocation this round settled with, when its body's root\n * value was a `to` rather than a `done`.\n *\n * A handoff is a settlement, not a failure and not a suspension, so it\n * cannot travel out through the effect's exit; `Flow.intoResult` reads the\n * slot and answers `Flow.Handoff` instead of `Flow.Complete`. The engine\n * then opens the next round under the same lineage\n * (`docs/concepts/trampoline-rounds.md`).\n */\n handoff: Flow.Handoff | undefined\n\n /**\n * The lineage deadline this round inherited from the round that handed\n * off to it, when its lineage is bounded. `Deadline.bound` runs the round\n * under it instead of starting a deadline of its own.\n */\n readonly lineageDeadline?: Flow.LineageDeadline | undefined\n\n /**\n * When SuspendOnFailure is triggered, the cause of the failure is stored\n * here.\n */\n cause: Cause.Cause<never> | undefined\n\n readonly actionState: {\n count: number\n readonly latch: Latch.Latch\n readonly nextOrdinal: (scope: string) => number\n readonly snapshots: Map<string, unknown>\n /**\n * Allocation scopes with a keyless dispatch currently in flight\n * (issue #111). Indistinguishable invocations of one declaration are\n * allocation-ordered, so two in flight at once would take their\n * ordinals from the fiber schedule and a replay could swap their\n * recorded outcomes undetected; the engine refuses the second dispatch\n * instead. Distinct interpreter graph sites refine the scope and do not\n * contend here.\n */\n readonly keylessInFlight: Set<string>\n }\n }\n>()(\"@smthrs/flow/FlowRuntime/FlowInstance\") {}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,cAAyB;AAyBlB,MAAM,qBAAqB,QAAQ,QA6FxC,EAAE,uCAAuC,EAAE;AAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The execution contract flow authoring APIs are written against.
|
|
3
|
+
*
|
|
4
|
+
* `FlowRuntime` is the port: the smallest service a `Flow`, an `Action`, a
|
|
5
|
+
* `DurableDeferred`, or a `DurableClock` needs in order to be executed,
|
|
6
|
+
* polled, suspended, and resumed. `@smthrs/flow` declares it and depends on
|
|
7
|
+
* nothing that implements it; `@smthrs/engine` supplies the implementation,
|
|
8
|
+
* so the dependency runs one way only.
|
|
9
|
+
*
|
|
10
|
+
* Every method here takes a flow whatever its requirement channel says, and
|
|
11
|
+
* demands none of it. The channel is a compile-time statement about which
|
|
12
|
+
* action implementations a body names, and this port is below the place that
|
|
13
|
+
* statement is settled: a runtime resolves each call by the tag the node
|
|
14
|
+
* carries, which is the only thing left of a plan read back out of a journal.
|
|
15
|
+
* `Flow.execute` — written against this port, one level up — is where the
|
|
16
|
+
* requirements are collected, so the erasure is deliberate rather than a hole:
|
|
17
|
+
* a caller reaching the port directly has already been asked, or is replaying a
|
|
18
|
+
* persisted plan and has nothing to be asked about.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
*/
|
|
22
|
+
import * as Context from "effect/Context";
|
|
23
|
+
import type * as Crypto from "effect/Crypto";
|
|
24
|
+
import type * as Effect from "effect/Effect";
|
|
25
|
+
import type * as Exit from "effect/Exit";
|
|
26
|
+
import type * as Option from "effect/Option";
|
|
27
|
+
import type * as Schema from "effect/Schema";
|
|
28
|
+
import type * as Scope from "effect/Scope";
|
|
29
|
+
import type * as Action from "../Action/index.ts";
|
|
30
|
+
import type { DurableClock } from "../DurableClock.ts";
|
|
31
|
+
import type * as DurableDeferred from "../DurableDeferred.ts";
|
|
32
|
+
import type * as Flow from "../Flow/index.ts";
|
|
33
|
+
import type * as RetryPolicy from "../RetryPolicy.ts";
|
|
34
|
+
import type { CancelRequestFailed } from "./CancelRequestFailed.ts";
|
|
35
|
+
import type { FlowCycleDetected } from "./FlowCycleDetected.ts";
|
|
36
|
+
import type { FlowExecutionNotFound } from "./FlowExecutionNotFound.ts";
|
|
37
|
+
import type { FlowInstance } from "./FlowInstance.ts";
|
|
38
|
+
import type * as NodeRecord from "./NodeRecord.ts";
|
|
39
|
+
/**
|
|
40
|
+
* Result of atomically completing a deferred only while its run is parked.
|
|
41
|
+
*
|
|
42
|
+
* @category models
|
|
43
|
+
* @since 1.0.0
|
|
44
|
+
*/
|
|
45
|
+
export type DeferredDoneIfWaitingOutcome = "Completed" | "Existing" | "NotWaiting";
|
|
46
|
+
/**
|
|
47
|
+
* How a caller asks a suspended execution to resume.
|
|
48
|
+
*
|
|
49
|
+
* `delegated` marks a background resume a host takes up on someone else's
|
|
50
|
+
* behalf: an approval decision, a saved request, a peer's delegation. It is
|
|
51
|
+
* not recovery consent, so a durable engine refuses it for a quarantined
|
|
52
|
+
* execution in the same transaction that reads the park. A host that checks
|
|
53
|
+
* the park first and resumes after has a window in which a peer can
|
|
54
|
+
* quarantine the run; only the engine's own check closes it.
|
|
55
|
+
*
|
|
56
|
+
* @category models
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
*/
|
|
59
|
+
export interface ResumeOptions {
|
|
60
|
+
readonly poll?: boolean | undefined;
|
|
61
|
+
readonly delegated?: boolean | undefined;
|
|
62
|
+
}
|
|
63
|
+
declare const FlowRuntime_base: Context.ServiceClass<FlowRuntime, "@smthrs/flow/FlowRuntime/FlowRuntime", {
|
|
64
|
+
/** Storage capability advertised by the runtime implementation. Absence is volatile. */
|
|
65
|
+
readonly durability?: "durable" | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Register a flow with the runtime. `ifAbsent` preserves a live registration
|
|
68
|
+
* when discovering a reachable child. Explicit registrations otherwise
|
|
69
|
+
* replace the registered handler; the registration scope owns its removal.
|
|
70
|
+
*/
|
|
71
|
+
readonly register: <Name extends string, Payload extends Flow.AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top, R>(flow: Flow.Flow<Name, Payload, Success, Error, any>, execute: (payload: Payload["Type"], executionId: string) => Effect.Effect<Success["Type"], Error["Type"], R>, options?: {
|
|
72
|
+
readonly ifAbsent?: boolean | undefined;
|
|
73
|
+
}) => Effect.Effect<void, never, Scope.Scope | Exclude<R, FlowRuntime | FlowInstance | Flow.Execution<Name> | Scope.Scope> | Payload["DecodingServices"] | Payload["EncodingServices"] | Success["DecodingServices"] | Success["EncodingServices"] | Error["DecodingServices"] | Error["EncodingServices"]>;
|
|
74
|
+
/**
|
|
75
|
+
* Execute a registered flow.
|
|
76
|
+
*/
|
|
77
|
+
readonly execute: <Name extends string, Payload extends Flow.AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top, const Discard extends boolean = false>(flow: Flow.Flow<Name, Payload, Success, Error, any>, options: {
|
|
78
|
+
readonly executionId: string;
|
|
79
|
+
readonly payload: Payload["Type"];
|
|
80
|
+
readonly discard?: Discard | undefined;
|
|
81
|
+
readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined;
|
|
82
|
+
}) => Effect.Effect<Discard extends true ? string : Success["Type"], Error["Type"] | FlowCycleDetected, Payload["EncodingServices"] | Success["DecodingServices"] | Error["DecodingServices"]>;
|
|
83
|
+
/**
|
|
84
|
+
* Poll the current status of a registered flow execution.
|
|
85
|
+
*
|
|
86
|
+
* `Option.none` means the execution is known and has not settled;
|
|
87
|
+
* {@link FlowExecutionNotFound} means the runtime has no record of the
|
|
88
|
+
* execution id at all. Folding the two together would leave a caller
|
|
89
|
+
* unable to tell a run still in flight from an id that names nothing.
|
|
90
|
+
*/
|
|
91
|
+
readonly poll: <Name extends string, Payload extends Flow.AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top>(flow: Flow.Flow<Name, Payload, Success, Error, any>, executionId: string) => Effect.Effect<Option.Option<Flow.Result<Success["Type"], Error["Type"]>>, FlowExecutionNotFound, Success["DecodingServices"] | Error["DecodingServices"]>;
|
|
92
|
+
/**
|
|
93
|
+
* Requests cancellation of a registered execution while preserving normal
|
|
94
|
+
* cleanup, compensation, and child-flow handling. This is not a pause, and
|
|
95
|
+
* a later `resume` does not undo the cancellation request.
|
|
96
|
+
*
|
|
97
|
+
* A durable runtime records the request before it interrupts anything, and
|
|
98
|
+
* reports {@link CancelRequestFailed} when that record could not be
|
|
99
|
+
* written: the execution is then still running and still cancellable, so
|
|
100
|
+
* the caller must see the failure rather than a false success. An
|
|
101
|
+
* in-memory runtime has nothing to record and never raises it.
|
|
102
|
+
*/
|
|
103
|
+
readonly interrupt: (flow: Flow.Any, executionId: string) => Effect.Effect<void, CancelRequestFailed>;
|
|
104
|
+
/**
|
|
105
|
+
* Immediately cancels a registered execution, potentially ignoring
|
|
106
|
+
* compensation finalizers and orphaning child flows. This unsafe operation
|
|
107
|
+
* is intended for forced shutdown, not ordinary cancellation or pausing.
|
|
108
|
+
*
|
|
109
|
+
* It reports {@link CancelRequestFailed} on the same terms as
|
|
110
|
+
* `interrupt`: forcing cancellation without a durable record would leave a
|
|
111
|
+
* run that nothing later re-cancels.
|
|
112
|
+
*/
|
|
113
|
+
readonly interruptUnsafe: (flow: Flow.Any, executionId: string) => Effect.Effect<void, CancelRequestFailed>;
|
|
114
|
+
/**
|
|
115
|
+
* Re-drives a registered execution that returned `Suspended`, allowing it
|
|
116
|
+
* to replay durable history and continue after an awaited condition becomes
|
|
117
|
+
* ready. It does not undo `interrupt` and is not a general unpause operation.
|
|
118
|
+
*
|
|
119
|
+
* Without options this is the operator's own resume, which is authority
|
|
120
|
+
* to recover a quarantined execution. `poll` is background wake intent and
|
|
121
|
+
* does not authorize recovery of quarantined work. See {@link ResumeOptions}.
|
|
122
|
+
*/
|
|
123
|
+
readonly resume: (flow: Flow.Any, executionId: string, options?: ResumeOptions | undefined) => Effect.Effect<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Execute an action from a flow.
|
|
126
|
+
*/
|
|
127
|
+
readonly actionExecute: <Success extends Schema.Constraint, Error extends Schema.Constraint, R>(action: Action.Action<Success, Error, R>, attempt: number) => Effect.Effect<Flow.Result<Success["Type"], Error["Type"]>, never, Success["DecodingServices"] | Error["DecodingServices"] | R | Crypto.Crypto | FlowInstance>;
|
|
128
|
+
/**
|
|
129
|
+
* Try to retrieve the result of an DurableDeferred
|
|
130
|
+
*/
|
|
131
|
+
readonly deferredResult: <Success extends Schema.Constraint, Error extends Schema.Constraint>(deferred: DurableDeferred.DurableDeferred<Success, Error>) => Effect.Effect<Option.Option<Exit.Exit<Success["Type"], Error["Type"]>>, never, FlowInstance>;
|
|
132
|
+
/**
|
|
133
|
+
* Records the result of a DurableDeferred and schedules waiting flows to
|
|
134
|
+
* resume. Returning acknowledges delivery; it does not wait for the resumed
|
|
135
|
+
* flow to complete. Use `poll` to observe the flow's eventual result.
|
|
136
|
+
*/
|
|
137
|
+
readonly deferredDone: <Success extends Schema.Constraint, Error extends Schema.Constraint>(deferred: DurableDeferred.DurableDeferred<Success, Error>, options: {
|
|
138
|
+
readonly flowName: string;
|
|
139
|
+
readonly executionId: string;
|
|
140
|
+
readonly deferredName: string;
|
|
141
|
+
readonly exit: Exit.Exit<Success["Type"], Error["Type"]>;
|
|
142
|
+
}) => Effect.Effect<void, never, Success["EncodingServices"] | Error["EncodingServices"]>;
|
|
143
|
+
/**
|
|
144
|
+
* Completes a deferred only when the addressed execution is currently
|
|
145
|
+
* parked on the exact reason and token supplied. The check and the
|
|
146
|
+
* first-writer completion are one runtime mutation, preventing guessed,
|
|
147
|
+
* stale, or already-advanced approval tokens from pre-answering a run.
|
|
148
|
+
*/
|
|
149
|
+
readonly deferredDoneIfWaiting: <Success extends Schema.Constraint, Error extends Schema.Constraint>(deferred: DurableDeferred.DurableDeferred<Success, Error>, options: {
|
|
150
|
+
readonly flowName: string;
|
|
151
|
+
readonly executionId: string;
|
|
152
|
+
readonly deferredName: string;
|
|
153
|
+
readonly reason: string;
|
|
154
|
+
readonly token: string;
|
|
155
|
+
readonly exit: Exit.Exit<Success["Type"], Error["Type"]>;
|
|
156
|
+
}) => Effect.Effect<DeferredDoneIfWaitingOutcome, never, Success["EncodingServices"] | Error["EncodingServices"]>;
|
|
157
|
+
/**
|
|
158
|
+
* Records what a driven graph is and how its nodes settled.
|
|
159
|
+
*
|
|
160
|
+
* OPTIONAL, and optional in the strong sense: a runtime that keeps no
|
|
161
|
+
* history has nothing to record, and the interpreter skips journal preflight when none does. An engine with a journal implements it by
|
|
162
|
+
* writing the record; an in-memory or test runtime leaves it absent and
|
|
163
|
+
* the walk is unchanged. That is also why it is not `void`-returning
|
|
164
|
+
* bookkeeping bolted onto `actionExecute`: a node is not an action, and
|
|
165
|
+
* three of the four records describe nodes no action ever dispatched.
|
|
166
|
+
*
|
|
167
|
+
* The record carries its own replay-stable `sourceId`. An implementation
|
|
168
|
+
* MUST use it as the record's producer identity rather than minting one,
|
|
169
|
+
* because that is what makes a resumed walk collapse onto the rows the
|
|
170
|
+
* first walk wrote instead of doubling every node.
|
|
171
|
+
*/
|
|
172
|
+
readonly recordNode?: ((record: NodeRecord.NodeRecord) => Effect.Effect<void, never, FlowInstance>) | undefined;
|
|
173
|
+
/**
|
|
174
|
+
* Upper bound on UTF-8 bytes for a node record's persisted journal entry,
|
|
175
|
+
* including the writer's envelope. Used to page a plan before any writes.
|
|
176
|
+
* Must be deterministic for the execution so resume keeps page identities.
|
|
177
|
+
*/
|
|
178
|
+
readonly nodeRecordBytes?: ((record: NodeRecord.NodeRecord) => Effect.Effect<number, never, FlowInstance>) | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Schedule a wake up for a DurableClock
|
|
181
|
+
*/
|
|
182
|
+
readonly scheduleClock: (flow: Flow.Any, options: {
|
|
183
|
+
readonly executionId: string;
|
|
184
|
+
readonly clock: DurableClock;
|
|
185
|
+
}) => Effect.Effect<void>;
|
|
186
|
+
}>;
|
|
187
|
+
/**
|
|
188
|
+
* Service that represents a flow runtime, responsible for registering and
|
|
189
|
+
* executing flows and coordinating actions, durable deferreds,
|
|
190
|
+
* interrupts, resumes, and clocks.
|
|
191
|
+
*
|
|
192
|
+
* @category services
|
|
193
|
+
* @since 0.1.0
|
|
194
|
+
*/
|
|
195
|
+
export declare class FlowRuntime extends FlowRuntime_base {
|
|
196
|
+
}
|
|
197
|
+
export {};
|
|
198
|
+
//# sourceMappingURL=FlowRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowRuntime.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/FlowRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 FlowRuntime_exports = {};
|
|
30
|
+
__export(FlowRuntime_exports, {
|
|
31
|
+
FlowRuntime: () => FlowRuntime
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(FlowRuntime_exports);
|
|
34
|
+
var Context = __toESM(require("effect/Context"), 1);
|
|
35
|
+
class FlowRuntime extends Context.Service()("@smthrs/flow/FlowRuntime/FlowRuntime") {
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=FlowRuntime.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/FlowRuntime/FlowRuntime.ts"],
|
|
4
|
+
"sourcesContent": ["// Deep reviewed and polished by a human on 2026-08-10.\n\n/**\n * The execution contract flow authoring APIs are written against.\n *\n * `FlowRuntime` is the port: the smallest service a `Flow`, an `Action`, a\n * `DurableDeferred`, or a `DurableClock` needs in order to be executed,\n * polled, suspended, and resumed. `@smthrs/flow` declares it and depends on\n * nothing that implements it; `@smthrs/engine` supplies the implementation,\n * so the dependency runs one way only.\n *\n * Every method here takes a flow whatever its requirement channel says, and\n * demands none of it. The channel is a compile-time statement about which\n * action implementations a body names, and this port is below the place that\n * statement is settled: a runtime resolves each call by the tag the node\n * carries, which is the only thing left of a plan read back out of a journal.\n * `Flow.execute` \u2014 written against this port, one level up \u2014 is where the\n * requirements are collected, so the erasure is deliberate rather than a hole:\n * a caller reaching the port directly has already been asked, or is replaying a\n * persisted plan and has nothing to be asked about.\n *\n * @since 0.1.0\n */\n\nimport * as Context from \"effect/Context\"\nimport type * as Crypto from \"effect/Crypto\"\nimport type * as Effect from \"effect/Effect\"\nimport type * as Exit from \"effect/Exit\"\nimport type * as Option from \"effect/Option\"\nimport type * as Schema from \"effect/Schema\"\nimport type * as Scope from \"effect/Scope\"\nimport type * as Action from \"../Action/index.ts\"\nimport type { DurableClock } from \"../DurableClock.ts\"\nimport type * as DurableDeferred from \"../DurableDeferred.ts\"\nimport type * as Flow from \"../Flow/index.ts\"\nimport type * as RetryPolicy from \"../RetryPolicy.ts\"\nimport type { CancelRequestFailed } from \"./CancelRequestFailed.ts\"\nimport type { FlowCycleDetected } from \"./FlowCycleDetected.ts\"\nimport type { FlowExecutionNotFound } from \"./FlowExecutionNotFound.ts\"\nimport type { FlowInstance } from \"./FlowInstance.ts\"\nimport type * as NodeRecord from \"./NodeRecord.ts\"\n\n/**\n * Result of atomically completing a deferred only while its run is parked.\n *\n * @category models\n * @since 1.0.0\n */\nexport type DeferredDoneIfWaitingOutcome = \"Completed\" | \"Existing\" | \"NotWaiting\"\n\n/**\n * How a caller asks a suspended execution to resume.\n *\n * `delegated` marks a background resume a host takes up on someone else's\n * behalf: an approval decision, a saved request, a peer's delegation. It is\n * not recovery consent, so a durable engine refuses it for a quarantined\n * execution in the same transaction that reads the park. A host that checks\n * the park first and resumes after has a window in which a peer can\n * quarantine the run; only the engine's own check closes it.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface ResumeOptions {\n readonly poll?: boolean | undefined\n readonly delegated?: boolean | undefined\n}\n\n/**\n * Service that represents a flow runtime, responsible for registering and\n * executing flows and coordinating actions, durable deferreds,\n * interrupts, resumes, and clocks.\n *\n * @category services\n * @since 0.1.0\n */\nexport class FlowRuntime extends Context.Service<\n FlowRuntime,\n {\n /** Storage capability advertised by the runtime implementation. Absence is volatile. */\n readonly durability?: \"durable\" | undefined\n /**\n * Register a flow with the runtime. `ifAbsent` preserves a live registration\n * when discovering a reachable child. Explicit registrations otherwise\n * replace the registered handler; the registration scope owns its removal.\n */\n readonly register: <\n Name extends string,\n Payload extends Flow.AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top,\n R\n >(\n flow: Flow.Flow<Name, Payload, Success, Error, any>,\n execute: (\n payload: Payload[\"Type\"],\n executionId: string\n ) => Effect.Effect<Success[\"Type\"], Error[\"Type\"], R>,\n options?: { readonly ifAbsent?: boolean | undefined }\n ) => Effect.Effect<\n void,\n never,\n | Scope.Scope\n | Exclude<\n R,\n | FlowRuntime\n | FlowInstance\n | Flow.Execution<Name>\n | Scope.Scope\n >\n | Payload[\"DecodingServices\"]\n | Payload[\"EncodingServices\"]\n | Success[\"DecodingServices\"]\n | Success[\"EncodingServices\"]\n | Error[\"DecodingServices\"]\n | Error[\"EncodingServices\"]\n >\n\n /**\n * Execute a registered flow.\n */\n readonly execute: <\n Name extends string,\n Payload extends Flow.AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top,\n const Discard extends boolean = false\n >(\n flow: Flow.Flow<Name, Payload, Success, Error, any>,\n options: {\n readonly executionId: string\n readonly payload: Payload[\"Type\"]\n readonly discard?: Discard | undefined\n readonly suspendedRetryPolicy?:\n | RetryPolicy.RetryPolicy\n | undefined\n }\n ) => Effect.Effect<\n Discard extends true ? string : Success[\"Type\"],\n Error[\"Type\"] | FlowCycleDetected,\n | Payload[\"EncodingServices\"]\n | Success[\"DecodingServices\"]\n | Error[\"DecodingServices\"]\n >\n\n /**\n * Poll the current status of a registered flow execution.\n *\n * `Option.none` means the execution is known and has not settled;\n * {@link FlowExecutionNotFound} means the runtime has no record of the\n * execution id at all. Folding the two together would leave a caller\n * unable to tell a run still in flight from an id that names nothing.\n */\n readonly poll: <\n Name extends string,\n Payload extends Flow.AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top\n >(\n flow: Flow.Flow<Name, Payload, Success, Error, any>,\n executionId: string\n ) => Effect.Effect<\n Option.Option<Flow.Result<Success[\"Type\"], Error[\"Type\"]>>,\n FlowExecutionNotFound,\n Success[\"DecodingServices\"] | Error[\"DecodingServices\"]\n >\n\n /**\n * Requests cancellation of a registered execution while preserving normal\n * cleanup, compensation, and child-flow handling. This is not a pause, and\n * a later `resume` does not undo the cancellation request.\n *\n * A durable runtime records the request before it interrupts anything, and\n * reports {@link CancelRequestFailed} when that record could not be\n * written: the execution is then still running and still cancellable, so\n * the caller must see the failure rather than a false success. An\n * in-memory runtime has nothing to record and never raises it.\n */\n readonly interrupt: (\n flow: Flow.Any,\n executionId: string\n ) => Effect.Effect<void, CancelRequestFailed>\n\n /**\n * Immediately cancels a registered execution, potentially ignoring\n * compensation finalizers and orphaning child flows. This unsafe operation\n * is intended for forced shutdown, not ordinary cancellation or pausing.\n *\n * It reports {@link CancelRequestFailed} on the same terms as\n * `interrupt`: forcing cancellation without a durable record would leave a\n * run that nothing later re-cancels.\n */\n readonly interruptUnsafe: (\n flow: Flow.Any,\n executionId: string\n ) => Effect.Effect<void, CancelRequestFailed>\n\n /**\n * Re-drives a registered execution that returned `Suspended`, allowing it\n * to replay durable history and continue after an awaited condition becomes\n * ready. It does not undo `interrupt` and is not a general unpause operation.\n *\n * Without options this is the operator's own resume, which is authority\n * to recover a quarantined execution. `poll` is background wake intent and\n * does not authorize recovery of quarantined work. See {@link ResumeOptions}.\n */\n readonly resume: (\n flow: Flow.Any,\n executionId: string,\n options?: ResumeOptions | undefined\n ) => Effect.Effect<void>\n\n /**\n * Execute an action from a flow.\n */\n readonly actionExecute: <\n Success extends Schema.Constraint,\n Error extends Schema.Constraint,\n R\n >(\n action: Action.Action<Success, Error, R>,\n attempt: number\n ) => Effect.Effect<\n Flow.Result<Success[\"Type\"], Error[\"Type\"]>,\n never,\n | Success[\"DecodingServices\"]\n | Error[\"DecodingServices\"]\n | R\n | Crypto.Crypto\n | FlowInstance\n >\n\n /**\n * Try to retrieve the result of an DurableDeferred\n */\n readonly deferredResult: <\n Success extends Schema.Constraint,\n Error extends Schema.Constraint\n >(\n deferred: DurableDeferred.DurableDeferred<Success, Error>\n ) => Effect.Effect<\n Option.Option<Exit.Exit<Success[\"Type\"], Error[\"Type\"]>>,\n never,\n FlowInstance\n >\n\n /**\n * Records the result of a DurableDeferred and schedules waiting flows to\n * resume. Returning acknowledges delivery; it does not wait for the resumed\n * flow to complete. Use `poll` to observe the flow's eventual result.\n */\n readonly deferredDone: <\n Success extends Schema.Constraint,\n Error extends Schema.Constraint\n >(\n deferred: DurableDeferred.DurableDeferred<Success, Error>,\n options: {\n readonly flowName: string\n readonly executionId: string\n readonly deferredName: string\n readonly exit: Exit.Exit<Success[\"Type\"], Error[\"Type\"]>\n }\n ) => Effect.Effect<\n void,\n never,\n Success[\"EncodingServices\"] | Error[\"EncodingServices\"]\n >\n\n /**\n * Completes a deferred only when the addressed execution is currently\n * parked on the exact reason and token supplied. The check and the\n * first-writer completion are one runtime mutation, preventing guessed,\n * stale, or already-advanced approval tokens from pre-answering a run.\n */\n readonly deferredDoneIfWaiting: <\n Success extends Schema.Constraint,\n Error extends Schema.Constraint\n >(\n deferred: DurableDeferred.DurableDeferred<Success, Error>,\n options: {\n readonly flowName: string\n readonly executionId: string\n readonly deferredName: string\n readonly reason: string\n readonly token: string\n readonly exit: Exit.Exit<Success[\"Type\"], Error[\"Type\"]>\n }\n ) => Effect.Effect<\n DeferredDoneIfWaitingOutcome,\n never,\n Success[\"EncodingServices\"] | Error[\"EncodingServices\"]\n >\n\n /**\n * Records what a driven graph is and how its nodes settled.\n *\n * OPTIONAL, and optional in the strong sense: a runtime that keeps no\n * history has nothing to record, and the interpreter skips journal preflight when none does. An engine with a journal implements it by\n * writing the record; an in-memory or test runtime leaves it absent and\n * the walk is unchanged. That is also why it is not `void`-returning\n * bookkeeping bolted onto `actionExecute`: a node is not an action, and\n * three of the four records describe nodes no action ever dispatched.\n *\n * The record carries its own replay-stable `sourceId`. An implementation\n * MUST use it as the record's producer identity rather than minting one,\n * because that is what makes a resumed walk collapse onto the rows the\n * first walk wrote instead of doubling every node.\n */\n readonly recordNode?:\n | ((record: NodeRecord.NodeRecord) => Effect.Effect<void, never, FlowInstance>)\n | undefined\n\n /**\n * Upper bound on UTF-8 bytes for a node record's persisted journal entry,\n * including the writer's envelope. Used to page a plan before any writes.\n * Must be deterministic for the execution so resume keeps page identities.\n */\n readonly nodeRecordBytes?:\n | ((record: NodeRecord.NodeRecord) => Effect.Effect<number, never, FlowInstance>)\n | undefined\n\n /**\n * Schedule a wake up for a DurableClock\n */\n readonly scheduleClock: (\n flow: Flow.Any,\n options: {\n readonly executionId: string\n readonly clock: DurableClock\n }\n ) => Effect.Effect<void>\n }\n>()(\"@smthrs/flow/FlowRuntime/FlowRuntime\") {}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA,cAAyB;AAoDlB,MAAM,oBAAoB,QAAQ,QAgQvC,EAAE,sCAAsC,EAAE;AAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|