@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
|
@@ -0,0 +1,204 @@
|
|
|
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 { InterpreterError } from "../Interpreter.ts";
|
|
34
|
+
import type * as RetryPolicy from "../RetryPolicy.ts";
|
|
35
|
+
import type { CancelRequestFailed } from "./CancelRequestFailed.ts";
|
|
36
|
+
import type { FlowCycleDetected } from "./FlowCycleDetected.ts";
|
|
37
|
+
import type { FlowExecutionNotFound } from "./FlowExecutionNotFound.ts";
|
|
38
|
+
import type { FlowInstance } from "./FlowInstance.ts";
|
|
39
|
+
import type * as NodeRecord from "./NodeRecord.ts";
|
|
40
|
+
/**
|
|
41
|
+
* Result of atomically completing a deferred only while its run is parked.
|
|
42
|
+
*
|
|
43
|
+
* @category models
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
*/
|
|
46
|
+
export type DeferredDoneIfWaitingOutcome = "Completed" | "Existing" | "NotWaiting";
|
|
47
|
+
/**
|
|
48
|
+
* How a caller asks a suspended execution to resume.
|
|
49
|
+
*
|
|
50
|
+
* `delegated` marks a background resume a host takes up on someone else's
|
|
51
|
+
* behalf: an approval decision, a saved request, a peer's delegation. It is
|
|
52
|
+
* not recovery consent, so a durable engine refuses it for a quarantined
|
|
53
|
+
* execution in the same transaction that reads the park. A host that checks
|
|
54
|
+
* the park first and resumes after has a window in which a peer can
|
|
55
|
+
* quarantine the run; only the engine's own check closes it.
|
|
56
|
+
*
|
|
57
|
+
* @category models
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
*/
|
|
60
|
+
export interface ResumeOptions {
|
|
61
|
+
readonly poll?: boolean | undefined;
|
|
62
|
+
readonly delegated?: boolean | undefined;
|
|
63
|
+
}
|
|
64
|
+
declare const FlowRuntime_base: Context.ServiceClass<FlowRuntime, "@smthrs/flow/FlowRuntime/FlowRuntime", {
|
|
65
|
+
/** Storage capability advertised by the runtime implementation. Absence is volatile. */
|
|
66
|
+
readonly durability?: "durable" | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Register a flow with the runtime. `ifAbsent` preserves a live registration
|
|
69
|
+
* when discovering a reachable child. Explicit registrations otherwise
|
|
70
|
+
* replace the registered handler; the registration scope owns its removal.
|
|
71
|
+
*/
|
|
72
|
+
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?: {
|
|
73
|
+
readonly ifAbsent?: boolean | undefined;
|
|
74
|
+
}) => 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"]>;
|
|
75
|
+
/**
|
|
76
|
+
* Execute a registered flow.
|
|
77
|
+
*/
|
|
78
|
+
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: {
|
|
79
|
+
readonly executionId: string;
|
|
80
|
+
readonly payload: Payload["Type"];
|
|
81
|
+
readonly discard?: Discard | undefined;
|
|
82
|
+
readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined;
|
|
83
|
+
}) => Effect.Effect<Discard extends true ? string : Success["Type"], Error["Type"] | FlowCycleDetected, Payload["EncodingServices"] | Success["DecodingServices"] | Error["DecodingServices"]>;
|
|
84
|
+
/**
|
|
85
|
+
* Poll the current status of a registered flow execution.
|
|
86
|
+
*
|
|
87
|
+
* `Option.none` means the execution is known and has not settled;
|
|
88
|
+
* {@link FlowExecutionNotFound} means the runtime has no record of the
|
|
89
|
+
* execution id at all. Folding the two together would leave a caller
|
|
90
|
+
* unable to tell a run still in flight from an id that names nothing.
|
|
91
|
+
*/
|
|
92
|
+
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"]>;
|
|
93
|
+
/**
|
|
94
|
+
* Requests cancellation of a registered execution while preserving normal
|
|
95
|
+
* cleanup, compensation, and child-flow handling. This is not a pause, and
|
|
96
|
+
* a later `resume` does not undo the cancellation request.
|
|
97
|
+
*
|
|
98
|
+
* Unknown ids and ids belonging to another flow are ignored. The caller's
|
|
99
|
+
* authority, intersected with the host and flow ceilings, must cover the
|
|
100
|
+
* authority recorded at admission; otherwise cancellation is refused with
|
|
101
|
+
* an execution identity conflict defect, before changing the run.
|
|
102
|
+
*
|
|
103
|
+
* A durable runtime records the request before it interrupts anything, and
|
|
104
|
+
* reports {@link CancelRequestFailed} when that record could not be
|
|
105
|
+
* written: the execution is then still running and still cancellable, so
|
|
106
|
+
* the caller must see the failure rather than a false success. An
|
|
107
|
+
* in-memory runtime has nothing to record and never raises it.
|
|
108
|
+
*/
|
|
109
|
+
readonly interrupt: (flow: Flow.Any, executionId: string) => Effect.Effect<void, CancelRequestFailed>;
|
|
110
|
+
/**
|
|
111
|
+
* Immediately cancels a registered execution, potentially ignoring
|
|
112
|
+
* compensation finalizers and orphaning child flows. This unsafe operation
|
|
113
|
+
* is intended for forced shutdown, not ordinary cancellation or pausing.
|
|
114
|
+
*
|
|
115
|
+
* It reports {@link CancelRequestFailed} on the same terms as
|
|
116
|
+
* `interrupt`: forcing cancellation without a durable record would leave a
|
|
117
|
+
* run that nothing later re-cancels.
|
|
118
|
+
*/
|
|
119
|
+
readonly interruptUnsafe: (flow: Flow.Any, executionId: string) => Effect.Effect<void, CancelRequestFailed>;
|
|
120
|
+
/**
|
|
121
|
+
* Re-drives a registered execution that returned `Suspended`, allowing it
|
|
122
|
+
* to replay durable history and continue after an awaited condition becomes
|
|
123
|
+
* ready. It does not undo `interrupt` and is not a general unpause operation.
|
|
124
|
+
*
|
|
125
|
+
* Without options this is the operator's own resume, which is authority
|
|
126
|
+
* to recover a quarantined execution. `poll` is background wake intent and
|
|
127
|
+
* does not authorize recovery of quarantined work. See {@link ResumeOptions}.
|
|
128
|
+
*/
|
|
129
|
+
readonly resume: (flow: Flow.Any, executionId: string, options?: ResumeOptions | undefined) => Effect.Effect<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Execute an action from a flow.
|
|
132
|
+
*/
|
|
133
|
+
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>;
|
|
134
|
+
/**
|
|
135
|
+
* Try to retrieve the result of an DurableDeferred
|
|
136
|
+
*/
|
|
137
|
+
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>;
|
|
138
|
+
/**
|
|
139
|
+
* Records the result of a DurableDeferred and schedules waiting flows to
|
|
140
|
+
* resume. Returning acknowledges delivery; it does not wait for the resumed
|
|
141
|
+
* flow to complete. Use `poll` to observe the flow's eventual result.
|
|
142
|
+
*/
|
|
143
|
+
readonly deferredDone: <Success extends Schema.Constraint, Error extends Schema.Constraint>(deferred: DurableDeferred.DurableDeferred<Success, Error>, options: {
|
|
144
|
+
readonly flowName: string;
|
|
145
|
+
readonly executionId: string;
|
|
146
|
+
readonly deferredName: string;
|
|
147
|
+
readonly exit: Exit.Exit<Success["Type"], Error["Type"]>;
|
|
148
|
+
}) => Effect.Effect<void, never, Success["EncodingServices"] | Error["EncodingServices"]>;
|
|
149
|
+
/**
|
|
150
|
+
* Completes a deferred only when the addressed execution is currently
|
|
151
|
+
* parked on the exact reason and token supplied. The check and the
|
|
152
|
+
* first-writer completion are one runtime mutation, preventing guessed,
|
|
153
|
+
* stale, or already-advanced approval tokens from pre-answering a run.
|
|
154
|
+
*/
|
|
155
|
+
readonly deferredDoneIfWaiting: <Success extends Schema.Constraint, Error extends Schema.Constraint>(deferred: DurableDeferred.DurableDeferred<Success, Error>, options: {
|
|
156
|
+
readonly flowName: string;
|
|
157
|
+
readonly executionId: string;
|
|
158
|
+
readonly deferredName: string;
|
|
159
|
+
readonly reason: string;
|
|
160
|
+
readonly token: string;
|
|
161
|
+
readonly exit: Exit.Exit<Success["Type"], Error["Type"]>;
|
|
162
|
+
}) => Effect.Effect<DeferredDoneIfWaitingOutcome, never, Success["EncodingServices"] | Error["EncodingServices"]>;
|
|
163
|
+
/**
|
|
164
|
+
* Records what a driven graph is and how its nodes settled.
|
|
165
|
+
*
|
|
166
|
+
* OPTIONAL, and optional in the strong sense: a runtime that keeps no
|
|
167
|
+
* history has nothing to record, and the interpreter skips journal preflight when none does. An engine with a journal implements it by
|
|
168
|
+
* writing the record; an in-memory or test runtime leaves it absent and
|
|
169
|
+
* the walk is unchanged. That is also why it is not `void`-returning
|
|
170
|
+
* bookkeeping bolted onto `actionExecute`: a node is not an action, and
|
|
171
|
+
* three of the four records describe nodes no action ever dispatched.
|
|
172
|
+
*
|
|
173
|
+
* The record carries its own replay-stable `sourceId`. An implementation
|
|
174
|
+
* MUST use it as the record's producer identity rather than minting one,
|
|
175
|
+
* because that is what makes a resumed walk collapse onto the rows the
|
|
176
|
+
* first walk wrote instead of doubling every node.
|
|
177
|
+
*/
|
|
178
|
+
readonly recordNode?: ((record: NodeRecord.NodeRecord) => Effect.Effect<void, InterpreterError, FlowInstance>) | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Upper bound on UTF-8 bytes for a node record's persisted journal entry,
|
|
181
|
+
* including the writer's envelope. Used to page a plan before any writes.
|
|
182
|
+
* Must be deterministic for the execution so resume keeps page identities.
|
|
183
|
+
*/
|
|
184
|
+
readonly nodeRecordBytes?: ((record: NodeRecord.NodeRecord) => Effect.Effect<number, never, FlowInstance>) | undefined;
|
|
185
|
+
/**
|
|
186
|
+
* Schedule a wake up for a DurableClock
|
|
187
|
+
*/
|
|
188
|
+
readonly scheduleClock: (flow: Flow.Any, options: {
|
|
189
|
+
readonly executionId: string;
|
|
190
|
+
readonly clock: DurableClock;
|
|
191
|
+
}) => Effect.Effect<void>;
|
|
192
|
+
}>;
|
|
193
|
+
/**
|
|
194
|
+
* Service that represents a flow runtime, responsible for registering and
|
|
195
|
+
* executing flows and coordinating actions, durable deferreds,
|
|
196
|
+
* interrupts, resumes, and clocks.
|
|
197
|
+
*
|
|
198
|
+
* @category services
|
|
199
|
+
* @since 0.1.0
|
|
200
|
+
*/
|
|
201
|
+
export declare class FlowRuntime extends FlowRuntime_base {
|
|
202
|
+
}
|
|
203
|
+
export {};
|
|
204
|
+
//# 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 { InterpreterError } from \"../Interpreter.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 * Unknown ids and ids belonging to another flow are ignored. The caller's\n * authority, intersected with the host and flow ceilings, must cover the\n * authority recorded at admission; otherwise cancellation is refused with\n * an execution identity conflict defect, before changing the run.\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, InterpreterError, 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;AAqDlB,MAAM,oBAAoB,QAAQ,QAqQvC,EAAE,sCAAsC,EAAE;AAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a driven graph tells its runtime about itself.
|
|
3
|
+
*
|
|
4
|
+
* The interpreter knows the whole plan before the first action runs, and it
|
|
5
|
+
* knows when each node is scheduled and how each one settled. Nothing
|
|
6
|
+
* downstream can derive those facts: an attempt record carries a step key and
|
|
7
|
+
* no node id, so a monitor reading a journal can see the work and not the
|
|
8
|
+
* graph it belongs to. These records are the missing half, and this module is
|
|
9
|
+
* the only thing `@smthrs/flow` says about them — the port takes them, and an
|
|
10
|
+
* engine with a journal is what turns them into durable records. A runtime
|
|
11
|
+
* without one keeps its no-op and the interpreter is unchanged.
|
|
12
|
+
*
|
|
13
|
+
* Every record carries its own `sourceId`, and that is the replay-stability
|
|
14
|
+
* contract: a resumed walk rebuilds the same graph and re-derives the same
|
|
15
|
+
* ids, so a journal keyed by `(run, source, sequence)` collapses the second
|
|
16
|
+
* observation onto the first row instead of recording the node twice.
|
|
17
|
+
*
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
import type * as Plan from "@smthrs/plan/Plan";
|
|
21
|
+
import type { DeclaredAt } from "../internal/DeclarationSite.ts";
|
|
22
|
+
/**
|
|
23
|
+
* One node of the graph a run was driven from.
|
|
24
|
+
*
|
|
25
|
+
* `tier` and `effects` are the declaration's own, and `dependsOn` is the
|
|
26
|
+
* material dependency set the plan compiles edges from. `action` is the tag a
|
|
27
|
+
* node dispatches, absent on every node that dispatches nothing. `declaredAt`
|
|
28
|
+
* is provenance and never identity: it is outside key material by
|
|
29
|
+
* construction, so adding it re-keys nothing.
|
|
30
|
+
*
|
|
31
|
+
* A node whose dependency list is wider than one page appears on several,
|
|
32
|
+
* each carrying the next DISJOINT slice of `dependsOn` and everything else
|
|
33
|
+
* unchanged. A reader assembles pages in order and unions `dependsOn` per id;
|
|
34
|
+
* keeping only the last summary would read a thousand-way fan-in as a node
|
|
35
|
+
* with two dependencies.
|
|
36
|
+
*
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category models
|
|
39
|
+
*/
|
|
40
|
+
export interface NodeSummary {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
readonly kind: string;
|
|
43
|
+
readonly dependsOn: ReadonlyArray<string>;
|
|
44
|
+
readonly tier: "sealed" | "compensable" | "irreversible";
|
|
45
|
+
readonly action?: string | undefined;
|
|
46
|
+
readonly effects?: Plan.NodeEffects | undefined;
|
|
47
|
+
readonly declaredAt?: DeclaredAt | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* One edge of the graph, with the reason the builder drew it.
|
|
51
|
+
*
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
* @category models
|
|
54
|
+
*/
|
|
55
|
+
export interface EdgeSummary {
|
|
56
|
+
readonly from: string;
|
|
57
|
+
readonly to: string;
|
|
58
|
+
readonly reason: "value" | "continuation" | "failure";
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* How a node left the walk.
|
|
62
|
+
*
|
|
63
|
+
* `built` ran, `clean` was served entirely from durable records, `failed`
|
|
64
|
+
* raised, and `skipped` is a node the walk never reached — an untaken branch
|
|
65
|
+
* arm, or a dependent of something that failed.
|
|
66
|
+
*
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
* @category models
|
|
69
|
+
*/
|
|
70
|
+
export type NodeOutcome = "built" | "clean" | "failed" | "skipped";
|
|
71
|
+
/**
|
|
72
|
+
* The graph a run is about to be driven from, or one page of it.
|
|
73
|
+
*
|
|
74
|
+
* A large plan is paged rather than truncated: the first page is the plan
|
|
75
|
+
* record and the rest are appended subgraphs, because a journal entry has a
|
|
76
|
+
* byte bound and a projection that clips one loses nodes silently. Nothing
|
|
77
|
+
* about one node has to fit one page — its summary, its dependency list and
|
|
78
|
+
* the edges that end on it may each run onto the next — so a page's `nodes`
|
|
79
|
+
* and `edges` are a SLICE of the graph and only the assembled pages are the
|
|
80
|
+
* whole of it.
|
|
81
|
+
*
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
* @category models
|
|
84
|
+
*/
|
|
85
|
+
export interface PlanRecorded {
|
|
86
|
+
readonly _tag: "PlanRecorded";
|
|
87
|
+
/** Whole-graph identity; absent only on records from older producers. */
|
|
88
|
+
readonly digest?: string | undefined;
|
|
89
|
+
readonly sourceId: string;
|
|
90
|
+
readonly flow: string;
|
|
91
|
+
readonly generation: number;
|
|
92
|
+
readonly page: number;
|
|
93
|
+
readonly pages: number;
|
|
94
|
+
/** Every node of the whole graph, not of this page. */
|
|
95
|
+
readonly nodeCount: number;
|
|
96
|
+
readonly nodes: ReadonlyArray<NodeSummary>;
|
|
97
|
+
readonly edges: ReadonlyArray<EdgeSummary>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A page of a graph too large for one record.
|
|
101
|
+
*
|
|
102
|
+
* @since 1.0.0
|
|
103
|
+
* @category models
|
|
104
|
+
*/
|
|
105
|
+
export interface SubgraphAppended {
|
|
106
|
+
readonly _tag: "SubgraphAppended";
|
|
107
|
+
readonly sourceId: string;
|
|
108
|
+
readonly flow: string;
|
|
109
|
+
readonly generation: number;
|
|
110
|
+
readonly page: number;
|
|
111
|
+
readonly pages: number;
|
|
112
|
+
readonly nodes: ReadonlyArray<NodeSummary>;
|
|
113
|
+
readonly edges: ReadonlyArray<EdgeSummary>;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A node the walk is about to compute.
|
|
117
|
+
*
|
|
118
|
+
* `attempt` is the walk's, and it is always 1: the interpreter settles each
|
|
119
|
+
* node once. No step key digest rides here, because none exists yet — the
|
|
120
|
+
* engine allocates a dispatch's ordinal when the dispatch happens, which is
|
|
121
|
+
* after this record is written. The digests arrive on {@link NodeSettled}.
|
|
122
|
+
*
|
|
123
|
+
* @since 1.0.0
|
|
124
|
+
* @category models
|
|
125
|
+
*/
|
|
126
|
+
export interface NodeScheduled {
|
|
127
|
+
readonly _tag: "NodeScheduled";
|
|
128
|
+
readonly sourceId: string;
|
|
129
|
+
readonly nodeId: string;
|
|
130
|
+
readonly kind: string;
|
|
131
|
+
readonly attempt: number;
|
|
132
|
+
readonly action?: string | undefined;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* A node that reached an outcome.
|
|
136
|
+
*
|
|
137
|
+
* `attempts` is the highest durable attempt any of this node's dispatches ran
|
|
138
|
+
* as, and 1 for a node that dispatched nothing. It is the engine's count, not
|
|
139
|
+
* the walk's: the interpreter settles each node once, and a retry happens
|
|
140
|
+
* underneath it inside one dispatch, so a node whose action failed and was
|
|
141
|
+
* retried says two.
|
|
142
|
+
*
|
|
143
|
+
* `stepKeyDigests` names the dispatches this node drove, in the order they
|
|
144
|
+
* were first reported and without repeats — a retried dispatch keeps one step
|
|
145
|
+
* key, because the attempt is folded into no key. It is the join a monitor
|
|
146
|
+
* could not make before: `flows.engine.attempt-started` carries a step key
|
|
147
|
+
* digest and no node id, so an attempt row belongs to the node that claims
|
|
148
|
+
* its digest. A node that dispatches nothing claims none, and a runtime that
|
|
149
|
+
* derives no digests reports an empty list.
|
|
150
|
+
*
|
|
151
|
+
* `value` is what the node settled with — the success value for `built` and
|
|
152
|
+
* `clean`, the typed failure for `failed` — handed over whole and unbounded.
|
|
153
|
+
* It is NOT a summary: bounding and redacting it belongs to the writer that
|
|
154
|
+
* knows where it is going, because a durable row has a byte budget and a
|
|
155
|
+
* credential redactor and an in-memory monitor has neither.
|
|
156
|
+
*
|
|
157
|
+
* @since 1.0.0
|
|
158
|
+
* @category models
|
|
159
|
+
*/
|
|
160
|
+
export interface NodeSettled {
|
|
161
|
+
readonly _tag: "NodeSettled";
|
|
162
|
+
readonly sourceId: string;
|
|
163
|
+
readonly nodeId: string;
|
|
164
|
+
readonly outcome: NodeOutcome;
|
|
165
|
+
readonly attempts: number;
|
|
166
|
+
readonly action?: string | undefined;
|
|
167
|
+
readonly stepKeyDigests: ReadonlyArray<string>;
|
|
168
|
+
readonly value?: unknown;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Everything a walk can tell its runtime.
|
|
172
|
+
*
|
|
173
|
+
* @since 1.0.0
|
|
174
|
+
* @category models
|
|
175
|
+
*/
|
|
176
|
+
export type NodeRecord = PlanRecorded | SubgraphAppended | NodeScheduled | NodeSettled;
|
|
177
|
+
//# sourceMappingURL=NodeRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeRecord.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/NodeRecord.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var NodeRecord_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(NodeRecord_exports);
|
|
17
|
+
//# sourceMappingURL=NodeRecord.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/FlowRuntime/NodeRecord.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * What a driven graph tells its runtime about itself.\n *\n * The interpreter knows the whole plan before the first action runs, and it\n * knows when each node is scheduled and how each one settled. Nothing\n * downstream can derive those facts: an attempt record carries a step key and\n * no node id, so a monitor reading a journal can see the work and not the\n * graph it belongs to. These records are the missing half, and this module is\n * the only thing `@smthrs/flow` says about them \u2014 the port takes them, and an\n * engine with a journal is what turns them into durable records. A runtime\n * without one keeps its no-op and the interpreter is unchanged.\n *\n * Every record carries its own `sourceId`, and that is the replay-stability\n * contract: a resumed walk rebuilds the same graph and re-derives the same\n * ids, so a journal keyed by `(run, source, sequence)` collapses the second\n * observation onto the first row instead of recording the node twice.\n *\n * @since 1.0.0\n */\n\nimport type * as Plan from \"@smthrs/plan/Plan\"\nimport type { DeclaredAt } from \"../internal/DeclarationSite.ts\"\n\n/**\n * One node of the graph a run was driven from.\n *\n * `tier` and `effects` are the declaration's own, and `dependsOn` is the\n * material dependency set the plan compiles edges from. `action` is the tag a\n * node dispatches, absent on every node that dispatches nothing. `declaredAt`\n * is provenance and never identity: it is outside key material by\n * construction, so adding it re-keys nothing.\n *\n * A node whose dependency list is wider than one page appears on several,\n * each carrying the next DISJOINT slice of `dependsOn` and everything else\n * unchanged. A reader assembles pages in order and unions `dependsOn` per id;\n * keeping only the last summary would read a thousand-way fan-in as a node\n * with two dependencies.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface NodeSummary {\n readonly id: string\n readonly kind: string\n readonly dependsOn: ReadonlyArray<string>\n readonly tier: \"sealed\" | \"compensable\" | \"irreversible\"\n readonly action?: string | undefined\n readonly effects?: Plan.NodeEffects | undefined\n readonly declaredAt?: DeclaredAt | undefined\n}\n\n/**\n * One edge of the graph, with the reason the builder drew it.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface EdgeSummary {\n readonly from: string\n readonly to: string\n readonly reason: \"value\" | \"continuation\" | \"failure\"\n}\n\n/**\n * How a node left the walk.\n *\n * `built` ran, `clean` was served entirely from durable records, `failed`\n * raised, and `skipped` is a node the walk never reached \u2014 an untaken branch\n * arm, or a dependent of something that failed.\n *\n * @since 1.0.0\n * @category models\n */\nexport type NodeOutcome = \"built\" | \"clean\" | \"failed\" | \"skipped\"\n\n/**\n * The graph a run is about to be driven from, or one page of it.\n *\n * A large plan is paged rather than truncated: the first page is the plan\n * record and the rest are appended subgraphs, because a journal entry has a\n * byte bound and a projection that clips one loses nodes silently. Nothing\n * about one node has to fit one page \u2014 its summary, its dependency list and\n * the edges that end on it may each run onto the next \u2014 so a page's `nodes`\n * and `edges` are a SLICE of the graph and only the assembled pages are the\n * whole of it.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface PlanRecorded {\n readonly _tag: \"PlanRecorded\"\n /** Whole-graph identity; absent only on records from older producers. */\n readonly digest?: string | undefined\n readonly sourceId: string\n readonly flow: string\n readonly generation: number\n readonly page: number\n readonly pages: number\n /** Every node of the whole graph, not of this page. */\n readonly nodeCount: number\n readonly nodes: ReadonlyArray<NodeSummary>\n readonly edges: ReadonlyArray<EdgeSummary>\n}\n\n/**\n * A page of a graph too large for one record.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface SubgraphAppended {\n readonly _tag: \"SubgraphAppended\"\n readonly sourceId: string\n readonly flow: string\n readonly generation: number\n readonly page: number\n readonly pages: number\n readonly nodes: ReadonlyArray<NodeSummary>\n readonly edges: ReadonlyArray<EdgeSummary>\n}\n\n/**\n * A node the walk is about to compute.\n *\n * `attempt` is the walk's, and it is always 1: the interpreter settles each\n * node once. No step key digest rides here, because none exists yet \u2014 the\n * engine allocates a dispatch's ordinal when the dispatch happens, which is\n * after this record is written. The digests arrive on {@link NodeSettled}.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface NodeScheduled {\n readonly _tag: \"NodeScheduled\"\n readonly sourceId: string\n readonly nodeId: string\n readonly kind: string\n readonly attempt: number\n readonly action?: string | undefined\n}\n\n/**\n * A node that reached an outcome.\n *\n * `attempts` is the highest durable attempt any of this node's dispatches ran\n * as, and 1 for a node that dispatched nothing. It is the engine's count, not\n * the walk's: the interpreter settles each node once, and a retry happens\n * underneath it inside one dispatch, so a node whose action failed and was\n * retried says two.\n *\n * `stepKeyDigests` names the dispatches this node drove, in the order they\n * were first reported and without repeats \u2014 a retried dispatch keeps one step\n * key, because the attempt is folded into no key. It is the join a monitor\n * could not make before: `flows.engine.attempt-started` carries a step key\n * digest and no node id, so an attempt row belongs to the node that claims\n * its digest. A node that dispatches nothing claims none, and a runtime that\n * derives no digests reports an empty list.\n *\n * `value` is what the node settled with \u2014 the success value for `built` and\n * `clean`, the typed failure for `failed` \u2014 handed over whole and unbounded.\n * It is NOT a summary: bounding and redacting it belongs to the writer that\n * knows where it is going, because a durable row has a byte budget and a\n * credential redactor and an in-memory monitor has neither.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface NodeSettled {\n readonly _tag: \"NodeSettled\"\n readonly sourceId: string\n readonly nodeId: string\n readonly outcome: NodeOutcome\n readonly attempts: number\n readonly action?: string | undefined\n readonly stepKeyDigests: ReadonlyArray<string>\n readonly value?: unknown\n}\n\n/**\n * Everything a walk can tell its runtime.\n *\n * @since 1.0.0\n * @category models\n */\nexport type NodeRecord = PlanRecorded | SubgraphAppended | NodeScheduled | NodeSettled\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declares how a flow is about to wait before it suspends.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
8
|
+
import { FlowInstance } from "./FlowInstance.ts";
|
|
9
|
+
/**
|
|
10
|
+
* The waiting classification a flow can declare before suspending.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the durable store's waiting payload: `reason` is the supervisor
|
|
13
|
+
* vocabulary (`approval`, `event`, `timer`, `quota`, or a plugin-defined
|
|
14
|
+
* reason), `wakeAt` an absolute deadline, and `token` compare-and-swap
|
|
15
|
+
* material a wake handler matches against.
|
|
16
|
+
*
|
|
17
|
+
* `request` is what the wait declares ABOUT itself, as JSON text, for a reader
|
|
18
|
+
* rather than for a matcher: the question a `HumanTask` is parked on, its
|
|
19
|
+
* kind, and its attempt budget. Nothing routes on it. It exists because `reason` and `token`
|
|
20
|
+
* say only that a person owes the run an answer and which wait point holds it,
|
|
21
|
+
* so an approvals inbox reading a parked run could name the gate and never
|
|
22
|
+
* state the question — which is what left run-3's `coding-clarification`
|
|
23
|
+
* unanswerable.
|
|
24
|
+
*
|
|
25
|
+
* @category models
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
*/
|
|
28
|
+
export interface WaitingAnnotation {
|
|
29
|
+
readonly reason: string;
|
|
30
|
+
readonly wakeAt?: number | undefined;
|
|
31
|
+
readonly token?: string | undefined;
|
|
32
|
+
readonly request?: string | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Schema for {@link WaitingAnnotation}, the one encodable spelling of the
|
|
36
|
+
* waiting vocabulary. `Flow.Park` carries it so a parking request and the
|
|
37
|
+
* annotation that precedes a suspension cannot describe different waits.
|
|
38
|
+
*
|
|
39
|
+
* @category schemas
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
*/
|
|
42
|
+
export declare const WaitingAnnotation: Schema.Struct<{
|
|
43
|
+
readonly reason: Schema.String;
|
|
44
|
+
readonly wakeAt: Schema.optional<Schema.Number>;
|
|
45
|
+
readonly token: Schema.optional<Schema.String>;
|
|
46
|
+
readonly request: Schema.optional<Schema.String>;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Declares how the flow is about to wait, so a durable driver parks the run
|
|
50
|
+
* with that reason and token instead of the derived `timer`/`event` default.
|
|
51
|
+
*
|
|
52
|
+
* The annotation is scoped to the wait it precedes: once the awaited
|
|
53
|
+
* deferred passes through with a persisted result — including replays after
|
|
54
|
+
* the wait resolved — the declared classification is consumed, so a later
|
|
55
|
+
* suspension parks under its own reason (and keeps its timer `wakeAt`)
|
|
56
|
+
* instead of the stale one (issue #42).
|
|
57
|
+
*
|
|
58
|
+
* Call it immediately before awaiting the deferred that models the wait:
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* yield* FlowRuntime.annotateWaiting({ reason: "approval", token: requestId })
|
|
62
|
+
* const decision = yield* DurableDeferred.await(approvalGate)
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @category combinators
|
|
66
|
+
* @since 0.1.0
|
|
67
|
+
*/
|
|
68
|
+
export declare const annotateWaiting: (waiting: WaitingAnnotation | undefined) => Effect.Effect<void, never, FlowInstance>;
|
|
69
|
+
//# sourceMappingURL=WaitingAnnotation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaitingAnnotation.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/WaitingAnnotation.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;EAU5B,CAAA;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,iBAAiB,GAAG,SAAS,KACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAItC,CAAA"}
|
|
@@ -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 WaitingAnnotation_exports = {};
|
|
30
|
+
__export(WaitingAnnotation_exports, {
|
|
31
|
+
WaitingAnnotation: () => WaitingAnnotation,
|
|
32
|
+
annotateWaiting: () => annotateWaiting
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(WaitingAnnotation_exports);
|
|
35
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
36
|
+
var Schema = __toESM(require("effect/Schema"), 1);
|
|
37
|
+
var import_FlowInstance = require("./FlowInstance.js");
|
|
38
|
+
const WaitingAnnotation = Schema.Struct({
|
|
39
|
+
reason: Schema.String,
|
|
40
|
+
wakeAt: Schema.optional(Schema.Number),
|
|
41
|
+
token: Schema.optional(Schema.String),
|
|
42
|
+
// JSON TEXT, not a decoded value. `Flow.Park` carries this struct, and a
|
|
43
|
+
// recursive `Json` schema here pushed `Flow.Outcome`'s inference past
|
|
44
|
+
// TypeScript's instantiation depth; a string also keeps one spelling of the
|
|
45
|
+
// question from the declaring flow all the way to the durable column, which
|
|
46
|
+
// stores exactly this text under a `json_valid` check.
|
|
47
|
+
request: Schema.optional(Schema.String)
|
|
48
|
+
});
|
|
49
|
+
const annotateWaiting = (waiting) => Effect.gen(function* () {
|
|
50
|
+
const instance = yield* import_FlowInstance.FlowInstance;
|
|
51
|
+
instance.waiting = waiting;
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=WaitingAnnotation.js.map
|