@smthrs/flow 0.0.0-stage → 1.0.0-rc.12
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 +161 -0
- package/LICENSE +21 -0
- package/README.md +212 -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 +387 -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 +110 -0
- package/dist/cjs/Deadline.d.ts.map +1 -0
- package/dist/cjs/Deadline.js +112 -0
- package/dist/cjs/Deadline.js.map +7 -0
- package/dist/cjs/DurableClock.d.ts +60 -0
- package/dist/cjs/DurableClock.d.ts.map +1 -0
- package/dist/cjs/DurableClock.js +107 -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 +339 -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 +186 -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 +135 -0
- package/dist/cjs/Flow/make.d.ts.map +1 -0
- package/dist/cjs/Flow/make.js +107 -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 +204 -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 +177 -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 +1020 -0
- package/dist/cjs/Graph.js.map +7 -0
- package/dist/cjs/HumanTask.d.ts +442 -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 +223 -0
- package/dist/cjs/Interpreter.d.ts.map +1 -0
- package/dist/cjs/Interpreter.js +908 -0
- package/dist/cjs/Interpreter.js.map +7 -0
- package/dist/cjs/Poll.d.ts +240 -0
- package/dist/cjs/Poll.d.ts.map +1 -0
- package/dist/cjs/Poll.js +154 -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 +141 -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 +413 -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 +110 -0
- package/dist/esm/Deadline.d.ts.map +1 -0
- package/dist/esm/Deadline.js +164 -0
- package/dist/esm/Deadline.js.map +1 -0
- package/dist/esm/DurableClock.d.ts +60 -0
- package/dist/esm/DurableClock.d.ts.map +1 -0
- package/dist/esm/DurableClock.js +122 -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 +252 -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 +135 -0
- package/dist/esm/Flow/make.d.ts.map +1 -0
- package/dist/esm/Flow/make.js +111 -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 +204 -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 +177 -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 +1485 -0
- package/dist/esm/Graph.js.map +1 -0
- package/dist/esm/HumanTask.d.ts +442 -0
- package/dist/esm/HumanTask.d.ts.map +1 -0
- package/dist/esm/HumanTask.js +798 -0
- package/dist/esm/HumanTask.js.map +1 -0
- package/dist/esm/Interpreter.d.ts +223 -0
- package/dist/esm/Interpreter.d.ts.map +1 -0
- package/dist/esm/Interpreter.js +1289 -0
- package/dist/esm/Interpreter.js.map +1 -0
- package/dist/esm/Poll.d.ts +240 -0
- package/dist/esm/Poll.d.ts.map +1 -0
- package/dist/esm/Poll.js +289 -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 +256 -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 +152 -0
- package/docs/api.md +440 -0
- package/docs/concepts/bodies-and-plans.md +167 -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 +164 -0
- package/docs/guides/cancel-and-roll-back.md +112 -0
- package/docs/guides/implement-an-action.md +155 -0
- package/docs/guides/inspect-the-plan.md +235 -0
- package/docs/guides/poll-until-ready.md +169 -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 +129 -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 +87 -0
- package/docs/quickstart.md +164 -0
- package/docs/reference/flow.md +1835 -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 +671 -0
- package/src/Action/raceAll.ts +48 -0
- package/src/Action/retry.ts +92 -0
- package/src/Deadline.ts +201 -0
- package/src/DurableClock.ts +176 -0
- package/src/DurableDeferred.ts +753 -0
- package/src/DurableQueue.ts +519 -0
- package/src/ExternalJob.ts +437 -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 +339 -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 +285 -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 +339 -0
- package/src/FlowRuntime/NodeRecord.ts +185 -0
- package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
- package/src/FlowRuntime/index.ts +17 -0
- package/src/Graph.ts +1865 -0
- package/src/HumanTask.ts +1007 -0
- package/src/Interpreter.ts +1620 -0
- package/src/Poll.ts +420 -0
- package/src/RetryPolicy.ts +550 -0
- package/src/Sleep.ts +296 -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
package/src/Flow/make.ts
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Constructs executable flow declarations from schema and policy data.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type * as Effects from "@smthrs/plan/Effects"
|
|
10
|
+
import * as Node from "@smthrs/plan/Node"
|
|
11
|
+
import type * as Context from "effect/Context"
|
|
12
|
+
import * as Duration from "effect/Duration"
|
|
13
|
+
import * as Option from "effect/Option"
|
|
14
|
+
import * as Predicate from "effect/Predicate"
|
|
15
|
+
import * as Schema from "effect/Schema"
|
|
16
|
+
import type { Declared } from "../Action/Action.ts"
|
|
17
|
+
import * as Action from "../Action/make.ts"
|
|
18
|
+
import { lowerDeclarations } from "../internal/Declarations.ts"
|
|
19
|
+
import * as DeclarationSite from "../internal/DeclarationSite.ts"
|
|
20
|
+
import type * as RetryPolicy from "../RetryPolicy.ts"
|
|
21
|
+
import type { Any, AnyStructSchema, BodySuccess, DeclarationMetadata, Flow, PromptFlow } from "./Flow.ts"
|
|
22
|
+
import { makeProto } from "./internal.ts"
|
|
23
|
+
import { TypeId } from "./TypeId.ts"
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The declaration data every flow takes beside its body.
|
|
27
|
+
*
|
|
28
|
+
* @private
|
|
29
|
+
*/
|
|
30
|
+
interface MakeOptions<
|
|
31
|
+
Payload extends Schema.Struct.Fields | AnyStructSchema,
|
|
32
|
+
Success extends Schema.Top,
|
|
33
|
+
Error extends Schema.Top
|
|
34
|
+
> extends DeclarationMetadata {
|
|
35
|
+
readonly payload: Payload
|
|
36
|
+
/**
|
|
37
|
+
* Native declaration whose source location this reconstructed flow retains.
|
|
38
|
+
* A source with no recorded location preserves that absence. This affects
|
|
39
|
+
* diagnostics only, never identity; the new flow keeps its own body and calls.
|
|
40
|
+
*/
|
|
41
|
+
readonly declaredFrom?: object | undefined
|
|
42
|
+
/**
|
|
43
|
+
* One sentence saying what this flow does, read by a catalog that lists it.
|
|
44
|
+
*/
|
|
45
|
+
readonly description?: string | undefined
|
|
46
|
+
/**
|
|
47
|
+
* The capability ceiling this flow's body runs under, as string literals.
|
|
48
|
+
*
|
|
49
|
+
* It is the same ceiling {@link Annotations.Capabilities} carries, and
|
|
50
|
+
* declaring it here is what makes it READABLE without importing the module:
|
|
51
|
+
* a catalog projects a discovered flow's authority from the declaration, and
|
|
52
|
+
* an annotation built at run time is invisible to that projection.
|
|
53
|
+
*/
|
|
54
|
+
readonly capabilities?: ReadonlyArray<string> | undefined
|
|
55
|
+
/**
|
|
56
|
+
* The effect envelope this flow's body runs under, as a literal.
|
|
57
|
+
*
|
|
58
|
+
* It is the same declaration {@link Annotations.EffectEnvelope} carries, and
|
|
59
|
+
* declaring it here is what makes it READABLE without importing the module,
|
|
60
|
+
* exactly as `capabilities` is: a catalog projects a discovered flow's
|
|
61
|
+
* authority from the source text of this literal, and an annotation built at
|
|
62
|
+
* run time is invisible to that projection.
|
|
63
|
+
*
|
|
64
|
+
* {@link module:Graph.build} refuses a composition beneath this flow that
|
|
65
|
+
* reads or writes outside the envelope, loosens `hermetic` to `expected`, or
|
|
66
|
+
* raises the tier. `reads` and `writes` are normalized to sorted,
|
|
67
|
+
* duplicate-free arrays, so two spellings of one envelope are one envelope.
|
|
68
|
+
*/
|
|
69
|
+
readonly effects?: Effects.MakeOptions | undefined
|
|
70
|
+
/**
|
|
71
|
+
* Whether a catalog may offer this flow to a model, as a literal. Defaults
|
|
72
|
+
* to `true`.
|
|
73
|
+
*
|
|
74
|
+
* It is the same statement {@link Annotations.ModelInvocable} carries, and
|
|
75
|
+
* declaring it here is what makes it READABLE without importing the module,
|
|
76
|
+
* exactly as `capabilities` and `effects` are: a registry projects a
|
|
77
|
+
* discovered flow's visibility from the source text of this literal onto the
|
|
78
|
+
* descriptor it lists, and an annotation built at run time is invisible to
|
|
79
|
+
* that projection.
|
|
80
|
+
*
|
|
81
|
+
* Declare `false` when the actions this flow's body calls are implemented by
|
|
82
|
+
* one host only. The file is discoverable wherever it sits, so a catalog
|
|
83
|
+
* elsewhere would otherwise teach an agent a call with no implementation to
|
|
84
|
+
* reach.
|
|
85
|
+
*/
|
|
86
|
+
readonly modelInvocable?: boolean | undefined
|
|
87
|
+
readonly idempotencyKey?:
|
|
88
|
+
| ((
|
|
89
|
+
payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload>
|
|
90
|
+
: Payload["Type"]
|
|
91
|
+
) => string)
|
|
92
|
+
| undefined
|
|
93
|
+
readonly success?: Success
|
|
94
|
+
readonly error?: Error
|
|
95
|
+
readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined
|
|
96
|
+
/**
|
|
97
|
+
* The round budget a trampoline lineage started from this flow runs under.
|
|
98
|
+
*/
|
|
99
|
+
readonly maxRounds?: number | undefined
|
|
100
|
+
/**
|
|
101
|
+
* How long one execution may take, counted from its journaled first start.
|
|
102
|
+
* A positive finite duration of at most `Number.MAX_SAFE_INTEGER`
|
|
103
|
+
* milliseconds; see {@link Flow.deadline}.
|
|
104
|
+
*/
|
|
105
|
+
readonly deadline?: Duration.Input | undefined
|
|
106
|
+
readonly annotations?: Context.Context<never>
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The pure plan-time body, typed with the decoded payload.
|
|
111
|
+
*
|
|
112
|
+
* @private
|
|
113
|
+
*/
|
|
114
|
+
type Body<
|
|
115
|
+
Payload extends Schema.Struct.Fields | AnyStructSchema,
|
|
116
|
+
Success extends Schema.Top,
|
|
117
|
+
Error extends Schema.Top,
|
|
118
|
+
Requires
|
|
119
|
+
> = (
|
|
120
|
+
payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload> : Payload["Type"]
|
|
121
|
+
) => Node.Node<BodySuccess<Success["Type"]>, Error["Type"], Requires>
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The payload schema a declaration's `payload` field stands for.
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
type PayloadSchemaOf<Payload extends Schema.Struct.Fields | AnyStructSchema> = Payload extends Schema.Struct.Fields
|
|
129
|
+
? Schema.Struct<Payload>
|
|
130
|
+
: Payload
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Whether a value is a flow this package made.
|
|
134
|
+
*
|
|
135
|
+
* The check is the runtime type id, not the shape: a host that loads a module
|
|
136
|
+
* and finds a default export has to decide whether it holds a flow before it
|
|
137
|
+
* reads anything off it, and a structural guess would accept a look-alike from
|
|
138
|
+
* another flow model.
|
|
139
|
+
*
|
|
140
|
+
* @category predicates
|
|
141
|
+
* @since 0.1.0
|
|
142
|
+
*/
|
|
143
|
+
export const isFlow = (value: unknown): value is Any => Predicate.hasProperty(value, TypeId)
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Creates a durable flow with one plan-time body or a typed prompt renderer.
|
|
147
|
+
* A prompt lowers to one ordinary action implemented by the host; neither
|
|
148
|
+
* construction nor planning renders it. Model metadata is interpreted by the
|
|
149
|
+
* host and adds no execution model to this package.
|
|
150
|
+
*
|
|
151
|
+
* Invocation IDs are caller-selected or opt-in deterministic IDs derived
|
|
152
|
+
* from the flow tag and idempotency key.
|
|
153
|
+
*
|
|
154
|
+
* @category constructors
|
|
155
|
+
* @since 0.1.0
|
|
156
|
+
*/
|
|
157
|
+
export const make: {
|
|
158
|
+
<
|
|
159
|
+
const Tag extends string,
|
|
160
|
+
Payload extends Schema.Struct.Fields | AnyStructSchema,
|
|
161
|
+
Success extends Schema.Top = Schema.Void,
|
|
162
|
+
Error extends Schema.Top = Schema.Never,
|
|
163
|
+
Requires = never
|
|
164
|
+
>(
|
|
165
|
+
tag: Tag,
|
|
166
|
+
options: MakeOptions<Payload, Success, Error> & {
|
|
167
|
+
readonly body: Body<Payload, Success, Error, Requires>
|
|
168
|
+
readonly prompt?: never
|
|
169
|
+
}
|
|
170
|
+
): Flow<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>
|
|
171
|
+
<
|
|
172
|
+
const Tag extends string,
|
|
173
|
+
Payload extends Schema.Struct.Fields | AnyStructSchema,
|
|
174
|
+
Success extends Schema.Top = Schema.Void,
|
|
175
|
+
Error extends Schema.Top = Schema.Never
|
|
176
|
+
>(
|
|
177
|
+
tag: Tag,
|
|
178
|
+
options: MakeOptions<Payload, Success, Error> & {
|
|
179
|
+
readonly prompt: (payload: PayloadSchemaOf<Payload>["Type"]) => string
|
|
180
|
+
readonly body?: never
|
|
181
|
+
readonly implementationVersion?: string | undefined
|
|
182
|
+
}
|
|
183
|
+
): PromptFlow<Tag, PayloadSchemaOf<Payload>, Success, Error>
|
|
184
|
+
} = <
|
|
185
|
+
const Tag extends string,
|
|
186
|
+
Payload extends Schema.Struct.Fields | AnyStructSchema,
|
|
187
|
+
Success extends Schema.Top = Schema.Void,
|
|
188
|
+
Error extends Schema.Top = Schema.Never,
|
|
189
|
+
Requires = never
|
|
190
|
+
>(
|
|
191
|
+
tag: Tag,
|
|
192
|
+
options: MakeOptions<Payload, Success, Error> & {
|
|
193
|
+
readonly body?: Body<Payload, Success, Error, Requires> | undefined
|
|
194
|
+
readonly prompt?: ((payload: PayloadSchemaOf<Payload>["Type"]) => string) | undefined
|
|
195
|
+
readonly implementationVersion?: string | undefined
|
|
196
|
+
}
|
|
197
|
+
): any => {
|
|
198
|
+
if (typeof tag !== "string" || tag.trim().length === 0) {
|
|
199
|
+
throw new TypeError("Flow.make: tag must be a non-empty string")
|
|
200
|
+
}
|
|
201
|
+
if (
|
|
202
|
+
(options.body === undefined && typeof options.prompt !== "function") ||
|
|
203
|
+
(options.prompt === undefined && typeof options.body !== "function") ||
|
|
204
|
+
(options.body !== undefined && options.prompt !== undefined)
|
|
205
|
+
) {
|
|
206
|
+
throw new TypeError(`Flow.make: "${tag}" must declare exactly one function: body or prompt`)
|
|
207
|
+
}
|
|
208
|
+
// Invalid static configuration is a programmer error thrown at construction,
|
|
209
|
+
// the same contract as effect's own `ExecutionPlan.make` (which throws on
|
|
210
|
+
// `attempts <= 0`); `RangeError` matches effect's range-violation throws.
|
|
211
|
+
if (
|
|
212
|
+
options.maxRounds !== undefined &&
|
|
213
|
+
(!Number.isSafeInteger(options.maxRounds) || options.maxRounds < 1)
|
|
214
|
+
) {
|
|
215
|
+
throw new RangeError(`Flow.make: "${tag}" maxRounds must be a positive safe integer`)
|
|
216
|
+
}
|
|
217
|
+
const deadline = options.deadline === undefined
|
|
218
|
+
? undefined
|
|
219
|
+
: Option.getOrUndefined(Duration.fromInput(options.deadline))
|
|
220
|
+
if (
|
|
221
|
+
options.deadline !== undefined &&
|
|
222
|
+
(deadline === undefined || !Duration.isFinite(deadline) || Duration.toMillis(deadline) <= 0)
|
|
223
|
+
) {
|
|
224
|
+
throw new RangeError(`Flow.make: "${tag}" deadline must be a positive finite duration`)
|
|
225
|
+
}
|
|
226
|
+
// The durable clock that enforces a deadline is due at its start plus the
|
|
227
|
+
// deadline, and a store records that due time as a safe integer.
|
|
228
|
+
if (deadline !== undefined && Duration.toMillis(deadline) > Number.MAX_SAFE_INTEGER) {
|
|
229
|
+
throw new RangeError(`Flow.make: "${tag}" deadline must be at most ${Number.MAX_SAFE_INTEGER} ms`)
|
|
230
|
+
}
|
|
231
|
+
// Captured here, where the stack still names the author's file, and carried
|
|
232
|
+
// as a non-enumerable property so no digest can see it
|
|
233
|
+
// (`internal/DeclarationSite.ts`).
|
|
234
|
+
const site = options.declaredFrom === undefined
|
|
235
|
+
? DeclarationSite.capture()
|
|
236
|
+
: DeclarationSite.declaredAt(options.declaredFrom)
|
|
237
|
+
const payloadSchema = (Schema.isSchema(options.payload)
|
|
238
|
+
? options.payload
|
|
239
|
+
: Schema.Struct(options.payload as any)) as PayloadSchemaOf<Payload>
|
|
240
|
+
const successSchema = options.success ?? (Schema.Void as unknown as Success)
|
|
241
|
+
const errorSchema = options.error ?? (Schema.Never as unknown as Error)
|
|
242
|
+
const annotations = lowerDeclarations(options)
|
|
243
|
+
const action = options.prompt === undefined ? undefined : Action.make(`${tag}/prompt`, {
|
|
244
|
+
payload: payloadSchema,
|
|
245
|
+
success: successSchema,
|
|
246
|
+
error: errorSchema,
|
|
247
|
+
capabilities: options.capabilities,
|
|
248
|
+
effects: options.effects,
|
|
249
|
+
annotations,
|
|
250
|
+
tier: options.effects?.tier ?? "irreversible",
|
|
251
|
+
implementationVersion: options.implementationVersion,
|
|
252
|
+
declaredFrom: options.declaredFrom
|
|
253
|
+
}) as unknown as Declared<`${Tag}/prompt`, PayloadSchemaOf<Payload>, Success, Error>
|
|
254
|
+
// The adapter only describes one dispatch. Prompt rendering belongs to the
|
|
255
|
+
// host implementation and its reviewed source/implementation identity.
|
|
256
|
+
const body = action === undefined ? options.body : Node.capture(
|
|
257
|
+
{ action: action.name, implementationVersion: action.implementationVersion ?? null },
|
|
258
|
+
(payload: PayloadSchemaOf<Payload>["Type"]) => action.call(payload as never)
|
|
259
|
+
)
|
|
260
|
+
return DeclarationSite.annotate(
|
|
261
|
+
makeProto<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>({
|
|
262
|
+
_tag: tag,
|
|
263
|
+
description: options.description,
|
|
264
|
+
payloadSchema,
|
|
265
|
+
successSchema,
|
|
266
|
+
errorSchema,
|
|
267
|
+
annotations,
|
|
268
|
+
model: options.model,
|
|
269
|
+
effort: options.effort,
|
|
270
|
+
system: options.system,
|
|
271
|
+
chat: options.chat,
|
|
272
|
+
flows: options.flows,
|
|
273
|
+
prompt: options.prompt,
|
|
274
|
+
action,
|
|
275
|
+
body: body as (
|
|
276
|
+
payload: PayloadSchemaOf<Payload>["Type"]
|
|
277
|
+
) => Node.Node<BodySuccess<Success["Type"]>, Error["Type"], Requires>,
|
|
278
|
+
idempotencyKey: options.idempotencyKey as any,
|
|
279
|
+
suspendedRetryPolicy: options.suspendedRetryPolicy,
|
|
280
|
+
maxRounds: options.maxRounds,
|
|
281
|
+
deadline
|
|
282
|
+
}),
|
|
283
|
+
site
|
|
284
|
+
)
|
|
285
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure raised when a cancellation request could not be made durable.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as Schema from "effect/Schema"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Raised when `interrupt` could not durably record its cancellation request.
|
|
11
|
+
*
|
|
12
|
+
* This is a **typed failure**, never a defect, and never swallowed. A durable
|
|
13
|
+
* runtime records operator intent before it interrupts anything: the record is
|
|
14
|
+
* what tells the interruption handler that a cancellation happened rather than
|
|
15
|
+
* a shutdown (issue #26), what survives the requesting process dying, and what
|
|
16
|
+
* a parked or cross-process run is eventually cancelled by. A durable runtime
|
|
17
|
+
* records the run and all linked descendants in one transaction. A storage
|
|
18
|
+
* failure on any write leaves every request unchanged: the run is still
|
|
19
|
+
* running and still cancellable, so the caller sees this typed failure and can
|
|
20
|
+
* retry instead of receiving false success.
|
|
21
|
+
*
|
|
22
|
+
* A runtime that keeps no durable cancellation record — the in-memory engine —
|
|
23
|
+
* never raises it, so its `Effect<void>` remains assignable to the widened
|
|
24
|
+
* contract and no in-memory caller has to handle anything.
|
|
25
|
+
*
|
|
26
|
+
* The same error carries the durable engine's refusal of `interruptUnsafe`.
|
|
27
|
+
* That port promises forced cancellation without cleanup, and the durable
|
|
28
|
+
* engine has no such path — it has one cancellation path, `interrupt`, which
|
|
29
|
+
* is durable and cascades to linked children. Answering the unsafe request
|
|
30
|
+
* with the safe one silently reinterpreted it, so 1.0.0-rc.0 refuses it with
|
|
31
|
+
* code `unsafe_interrupt_unsupported`. It is the same failure type because it
|
|
32
|
+
* is the same question — "your cancellation request was not carried out" —
|
|
33
|
+
* and the code says which of the two reasons applies.
|
|
34
|
+
*
|
|
35
|
+
* The error is declared here because it is part of the `interrupt` contract
|
|
36
|
+
* this package owns; the durable implementation lives in
|
|
37
|
+
* `@smthrs/engine-store`'s `RunDriver`.
|
|
38
|
+
*
|
|
39
|
+
* @category errors
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
*/
|
|
42
|
+
export class CancelRequestFailed extends Schema.TaggedError<CancelRequestFailed>()(
|
|
43
|
+
"@smthrs/flow/CancelRequestFailed",
|
|
44
|
+
{
|
|
45
|
+
/**
|
|
46
|
+
* Stable public error code. `cancel_request_failed` is a storage failure
|
|
47
|
+
* on a supported request; `unsafe_interrupt_unsupported` is the durable
|
|
48
|
+
* engine refusing `interruptUnsafe`, which it does not implement.
|
|
49
|
+
*/
|
|
50
|
+
code: Schema.Literals(["cancel_request_failed", "unsafe_interrupt_unsupported"]),
|
|
51
|
+
/** The execution whose cancellation could not be recorded. */
|
|
52
|
+
executionId: Schema.String,
|
|
53
|
+
/** The storage failure, rendered for an operator. */
|
|
54
|
+
reason: Schema.String
|
|
55
|
+
}
|
|
56
|
+
) {}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Execution identity refusals shared by authoring and engine layers.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as Effect from "effect/Effect"
|
|
6
|
+
import * as Schema from "effect/Schema"
|
|
7
|
+
import * as Fault from "../Fault.ts"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A caller reused an execution id for different persisted run identity.
|
|
11
|
+
*
|
|
12
|
+
* @category errors
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export class ExecutionIdentityConflict extends Schema.TaggedError<ExecutionIdentityConflict>()(
|
|
16
|
+
"@smthrs/engine/ExecutionIdentityConflict",
|
|
17
|
+
{
|
|
18
|
+
code: Schema.Literal("execution_identity_conflict").pipe(
|
|
19
|
+
Schema.withConstructorDefault(Effect.succeed("execution_identity_conflict"))
|
|
20
|
+
),
|
|
21
|
+
executionId: Schema.String,
|
|
22
|
+
field: Schema.Literals(["flow", "payload", "capabilities", "lineage", "round", "parent"]),
|
|
23
|
+
expected: Schema.String,
|
|
24
|
+
actual: Schema.String,
|
|
25
|
+
status: Schema.Literals(["pending", "running", "suspended", "completed", "failed", "cancelled", "unknown"]).pipe(
|
|
26
|
+
Schema.withConstructorDefault(Effect.succeed("unknown"))
|
|
27
|
+
),
|
|
28
|
+
message: Schema.String
|
|
29
|
+
}
|
|
30
|
+
) {}
|
|
31
|
+
|
|
32
|
+
Fault.register("@smthrs/engine/ExecutionIdentityConflict", "bug")
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Failure raised when executing a flow would close a cycle in the persisted
|
|
5
|
+
* parent-execution chain.
|
|
6
|
+
*
|
|
7
|
+
* @since 0.1.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import * as Effect from "effect/Effect"
|
|
11
|
+
import * as Schema from "effect/Schema"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Raised when executing a flow would close a cycle in the persisted
|
|
15
|
+
* parent-execution chain, which is a child asking to execute an execution id
|
|
16
|
+
* that already appears among its own ancestors.
|
|
17
|
+
*
|
|
18
|
+
* This is a **typed failure**, never a defect: the caller is expected to be
|
|
19
|
+
* able to recover from it (see `docs/troubleshooting.md`,
|
|
20
|
+
* "FlowRuntime.FlowCycleDetected"). Detection itself lives in
|
|
21
|
+
* `@smthrs/engine-store`'s `DurableEngineState.recordRunParent`, which
|
|
22
|
+
* inserts the durable parent edge and walks the parent chain in O(depth)
|
|
23
|
+
* inside one storage transaction, rolling back on a hit; the error is
|
|
24
|
+
* declared here because it is part of the `execute` contract this package
|
|
25
|
+
* owns.
|
|
26
|
+
*
|
|
27
|
+
* @category errors
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
export class FlowCycleDetected extends Schema.TaggedError<FlowCycleDetected>()(
|
|
31
|
+
"@smthrs/flow/FlowCycleDetected",
|
|
32
|
+
{
|
|
33
|
+
/** Stable public error code. */
|
|
34
|
+
// This wire shape freezes at 1.0.0-rc.0.
|
|
35
|
+
code: Schema.Literal("flow_cycle_detected").pipe(
|
|
36
|
+
Schema.withConstructorDefault(Effect.succeed("flow_cycle_detected"))
|
|
37
|
+
),
|
|
38
|
+
/** Ordered execution ids from the cycle's target back to itself. */
|
|
39
|
+
path: Schema.Array(Schema.String)
|
|
40
|
+
}
|
|
41
|
+
) {}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure raised when `poll` addresses an execution the runtime has no record
|
|
3
|
+
* of.
|
|
4
|
+
*
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect"
|
|
9
|
+
import * as Schema from "effect/Schema"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Raised when `poll` is asked about an execution id the runtime never
|
|
13
|
+
* recorded.
|
|
14
|
+
*
|
|
15
|
+
* This is a **typed failure**, never a defect, and never folded into the
|
|
16
|
+
* success channel: `poll` answers `Option.none` for a known execution that has
|
|
17
|
+
* not settled yet, so answering it for an unknown id as well would leave the
|
|
18
|
+
* caller unable to distinguish "still running" from "no such execution". A
|
|
19
|
+
* caller holding a stored execution id needs that distinction — a run that is
|
|
20
|
+
* still in flight is waited on, one the runtime has no record of is a wiring
|
|
21
|
+
* or retention problem to surface.
|
|
22
|
+
*
|
|
23
|
+
* The error is declared here because it is part of the `poll` contract this
|
|
24
|
+
* package owns; every runtime — the in-memory engine and the durable
|
|
25
|
+
* `@smthrs/engine-store` driver alike — raises it for an unknown id.
|
|
26
|
+
*
|
|
27
|
+
* @category errors
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
export class FlowExecutionNotFound extends Schema.TaggedError<FlowExecutionNotFound>()(
|
|
31
|
+
"@smthrs/flow/FlowExecutionNotFound",
|
|
32
|
+
{
|
|
33
|
+
/** Stable public error code. */
|
|
34
|
+
// This wire shape freezes at 1.0.0-rc.0.
|
|
35
|
+
code: Schema.Literal("execution_not_found").pipe(
|
|
36
|
+
Schema.withConstructorDefault(Effect.succeed("execution_not_found"))
|
|
37
|
+
),
|
|
38
|
+
/** The execution id the runtime has no record of. */
|
|
39
|
+
executionId: Schema.String
|
|
40
|
+
}
|
|
41
|
+
) {
|
|
42
|
+
/** @since 0.1.0 */
|
|
43
|
+
override get message(): string {
|
|
44
|
+
return `No flow execution is recorded under id "${this.executionId}"`
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The per-execution state contract flow authoring APIs read and update.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type * as Cause from "effect/Cause"
|
|
10
|
+
import * as Context from "effect/Context"
|
|
11
|
+
import type * as Latch from "effect/Latch"
|
|
12
|
+
import type * as Scope from "effect/Scope"
|
|
13
|
+
import type * as Flow from "../Flow/index.ts"
|
|
14
|
+
import type { WaitingAnnotation } from "./WaitingAnnotation.ts"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Service that contains flow runtime state for one execution.
|
|
18
|
+
*
|
|
19
|
+
* **When to use**
|
|
20
|
+
*
|
|
21
|
+
* Use to read or update flow execution, suspension, interruption,
|
|
22
|
+
* lifetime, failure, and action coordination state inside flow authoring
|
|
23
|
+
* combinators and runtime implementations.
|
|
24
|
+
*
|
|
25
|
+
* **Details**
|
|
26
|
+
*
|
|
27
|
+
* The service stores the execution ID, flow definition, long-lived scope,
|
|
28
|
+
* suspension and interruption flags, the stored failure cause, and action
|
|
29
|
+
* coordination state for a single flow run. `@smthrs/flow` declares the
|
|
30
|
+
* contract; a runtime — `@smthrs/engine` — constructs the value.
|
|
31
|
+
*
|
|
32
|
+
* @category services
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
*/
|
|
35
|
+
export class FlowInstance extends Context.Service<
|
|
36
|
+
FlowInstance,
|
|
37
|
+
{
|
|
38
|
+
/**
|
|
39
|
+
* The flow execution ID.
|
|
40
|
+
*/
|
|
41
|
+
readonly executionId: string
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The journal lineage this execution's records address themselves to.
|
|
45
|
+
*
|
|
46
|
+
* `docs/concepts/the-runtime-port.md` makes a frame the journal position
|
|
47
|
+
* `(lineageId, seq)`, and `docs/guides/run-a-child-flow.md` defines the
|
|
48
|
+
* lineage id as the run id followed by the node-id path from the run root.
|
|
49
|
+
* A runtime mints it; every durable record this execution writes carries it
|
|
50
|
+
* as `meta.lineageId`, which is what lets `TimeTravel.inspect` fold an
|
|
51
|
+
* ordinary engine journal at all.
|
|
52
|
+
*/
|
|
53
|
+
readonly lineageId: string
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The flow definition.
|
|
57
|
+
*/
|
|
58
|
+
readonly flow: Flow.Any
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A scope that represents the lifetime of the flow.
|
|
62
|
+
*
|
|
63
|
+
* It is only closed when the flow is completed.
|
|
64
|
+
*/
|
|
65
|
+
readonly scope: Scope.Closeable
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Whether the flow has requested to be suspended.
|
|
69
|
+
*/
|
|
70
|
+
suspended: boolean
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Whether the flow has requested to be interrupted.
|
|
74
|
+
*/
|
|
75
|
+
interrupted: boolean
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The waiting classification the flow declared for its next suspension
|
|
79
|
+
* via `annotateWaiting`. Durable drivers read it when parking the
|
|
80
|
+
* run so approval and quota waits (and their wake token) are
|
|
81
|
+
* representable; when absent the driver derives `timer`/`event` from
|
|
82
|
+
* durable state.
|
|
83
|
+
*/
|
|
84
|
+
waiting: WaitingAnnotation | undefined
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The next-round invocation this round settled with, when its body's root
|
|
88
|
+
* value was a `to` rather than a `done`.
|
|
89
|
+
*
|
|
90
|
+
* A handoff is a settlement, not a failure and not a suspension, so it
|
|
91
|
+
* cannot travel out through the effect's exit; `Flow.intoResult` reads the
|
|
92
|
+
* slot and answers `Flow.Handoff` instead of `Flow.Complete`. The engine
|
|
93
|
+
* then opens the next round under the same lineage
|
|
94
|
+
* (`docs/concepts/trampoline-rounds.md`).
|
|
95
|
+
*/
|
|
96
|
+
handoff: Flow.Handoff | undefined
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The lineage deadline this round inherited from the round that handed
|
|
100
|
+
* off to it, when its lineage is bounded. `Deadline.bound` runs the round
|
|
101
|
+
* under it instead of starting a deadline of its own.
|
|
102
|
+
*/
|
|
103
|
+
readonly lineageDeadline?: Flow.LineageDeadline | undefined
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* When SuspendOnFailure is triggered, the cause of the failure is stored
|
|
107
|
+
* here.
|
|
108
|
+
*/
|
|
109
|
+
cause: Cause.Cause<never> | undefined
|
|
110
|
+
|
|
111
|
+
readonly actionState: {
|
|
112
|
+
count: number
|
|
113
|
+
readonly latch: Latch.Latch
|
|
114
|
+
readonly nextOrdinal: (scope: string) => number
|
|
115
|
+
readonly snapshots: Map<string, unknown>
|
|
116
|
+
/**
|
|
117
|
+
* Allocation scopes with a keyless dispatch currently in flight
|
|
118
|
+
* (issue #111). Indistinguishable invocations of one declaration are
|
|
119
|
+
* allocation-ordered, so two in flight at once would take their
|
|
120
|
+
* ordinals from the fiber schedule and a replay could swap their
|
|
121
|
+
* recorded outcomes undetected; the engine refuses the second dispatch
|
|
122
|
+
* instead. Distinct interpreter graph sites refine the scope and do not
|
|
123
|
+
* contend here.
|
|
124
|
+
*/
|
|
125
|
+
readonly keylessInFlight: Set<string>
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
>()("@smthrs/flow/FlowRuntime/FlowInstance") {}
|