@smthrs/flow 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +160 -0
- package/LICENSE +21 -0
- package/README.md +210 -2
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/cjs/Action/Action.d.ts +250 -0
- package/dist/cjs/Action/Action.d.ts.map +1 -0
- package/dist/cjs/Action/Action.js +42 -0
- package/dist/cjs/Action/Action.js.map +7 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/cjs/Action/AttemptTimedOut.js +51 -0
- package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
- package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
- package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/cjs/Action/BoundaryMode.js +36 -0
- package/dist/cjs/Action/BoundaryMode.js.map +7 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/cjs/Action/CacheEnvironment.js +57 -0
- package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
- package/dist/cjs/Action/Context.d.ts +131 -0
- package/dist/cjs/Action/Context.d.ts.map +1 -0
- package/dist/cjs/Action/Context.js +68 -0
- package/dist/cjs/Action/Context.js.map +7 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/cjs/Action/DuplicateImplementation.js +46 -0
- package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
- package/dist/cjs/Action/FileBoundary.d.ts +59 -0
- package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
- package/dist/cjs/Action/FileBoundary.js +81 -0
- package/dist/cjs/Action/FileBoundary.js.map +7 -0
- package/dist/cjs/Action/FileInput.d.ts +28 -0
- package/dist/cjs/Action/FileInput.d.ts.map +1 -0
- package/dist/cjs/Action/FileInput.js +42 -0
- package/dist/cjs/Action/FileInput.js.map +7 -0
- package/dist/cjs/Action/Filegroup.d.ts +16 -0
- package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
- package/dist/cjs/Action/Filegroup.js +27 -0
- package/dist/cjs/Action/Filegroup.js.map +7 -0
- package/dist/cjs/Action/Glob.d.ts +8 -0
- package/dist/cjs/Action/Glob.d.ts.map +1 -0
- package/dist/cjs/Action/Glob.js +28 -0
- package/dist/cjs/Action/Glob.js.map +7 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
- package/dist/cjs/Action/Implementations.d.ts +114 -0
- package/dist/cjs/Action/Implementations.d.ts.map +1 -0
- package/dist/cjs/Action/Implementations.js +65 -0
- package/dist/cjs/Action/Implementations.js.map +7 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterrupt.js +46 -0
- package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/StepIdentity.d.ts +153 -0
- package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
- package/dist/cjs/Action/StepIdentity.js +75 -0
- package/dist/cjs/Action/StepIdentity.js.map +7 -0
- package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
- package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/cjs/Action/TreeArtifact.js +25 -0
- package/dist/cjs/Action/TreeArtifact.js.map +7 -0
- package/dist/cjs/Action/TypeId.d.ts +8 -0
- package/dist/cjs/Action/TypeId.d.ts.map +1 -0
- package/dist/cjs/Action/TypeId.js +25 -0
- package/dist/cjs/Action/TypeId.js.map +7 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
- package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/idempotencyKey.js +59 -0
- package/dist/cjs/Action/idempotencyKey.js.map +7 -0
- package/dist/cjs/Action/index.d.ts +29 -0
- package/dist/cjs/Action/index.d.ts.map +1 -0
- package/dist/cjs/Action/index.js +60 -0
- package/dist/cjs/Action/index.js.map +7 -0
- package/dist/cjs/Action/make.d.ts +128 -0
- package/dist/cjs/Action/make.d.ts.map +1 -0
- package/dist/cjs/Action/make.js +373 -0
- package/dist/cjs/Action/make.js.map +7 -0
- package/dist/cjs/Action/raceAll.d.ts +21 -0
- package/dist/cjs/Action/raceAll.d.ts.map +1 -0
- package/dist/cjs/Action/raceAll.js +46 -0
- package/dist/cjs/Action/raceAll.js.map +7 -0
- package/dist/cjs/Action/retry.d.ts +19 -0
- package/dist/cjs/Action/retry.d.ts.map +1 -0
- package/dist/cjs/Action/retry.js +75 -0
- package/dist/cjs/Action/retry.js.map +7 -0
- package/dist/cjs/Deadline.d.ts +105 -0
- package/dist/cjs/Deadline.d.ts.map +1 -0
- package/dist/cjs/Deadline.js +104 -0
- package/dist/cjs/Deadline.js.map +7 -0
- package/dist/cjs/DurableClock.d.ts +61 -0
- package/dist/cjs/DurableClock.d.ts.map +1 -0
- package/dist/cjs/DurableClock.js +90 -0
- package/dist/cjs/DurableClock.js.map +7 -0
- package/dist/cjs/DurableDeferred.d.ts +311 -0
- package/dist/cjs/DurableDeferred.d.ts.map +1 -0
- package/dist/cjs/DurableDeferred.js +322 -0
- package/dist/cjs/DurableDeferred.js.map +7 -0
- package/dist/cjs/DurableQueue.d.ts +160 -0
- package/dist/cjs/DurableQueue.d.ts.map +1 -0
- package/dist/cjs/DurableQueue.js +229 -0
- package/dist/cjs/DurableQueue.js.map +7 -0
- package/dist/cjs/ExternalJob.d.ts +179 -0
- package/dist/cjs/ExternalJob.d.ts.map +1 -0
- package/dist/cjs/ExternalJob.js +338 -0
- package/dist/cjs/ExternalJob.js.map +7 -0
- package/dist/cjs/Fault.d.ts +131 -0
- package/dist/cjs/Fault.d.ts.map +1 -0
- package/dist/cjs/Fault.js +157 -0
- package/dist/cjs/Fault.js.map +7 -0
- package/dist/cjs/Flow/Annotations.d.ts +245 -0
- package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
- package/dist/cjs/Flow/Annotations.js +72 -0
- package/dist/cjs/Flow/Annotations.js.map +7 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
- package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
- package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIds.js +66 -0
- package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
- package/dist/cjs/Flow/Flow.d.ts +422 -0
- package/dist/cjs/Flow/Flow.d.ts.map +1 -0
- package/dist/cjs/Flow/Flow.js +17 -0
- package/dist/cjs/Flow/Flow.js.map +7 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
- package/dist/cjs/Flow/Outcome.d.ts +162 -0
- package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
- package/dist/cjs/Flow/Outcome.js +80 -0
- package/dist/cjs/Flow/Outcome.js.map +7 -0
- package/dist/cjs/Flow/Result.d.ts +186 -0
- package/dist/cjs/Flow/Result.d.ts.map +1 -0
- package/dist/cjs/Flow/Result.js +159 -0
- package/dist/cjs/Flow/Result.js.map +7 -0
- package/dist/cjs/Flow/Runtime.d.ts +98 -0
- package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
- package/dist/cjs/Flow/Runtime.js +160 -0
- package/dist/cjs/Flow/Runtime.js.map +7 -0
- package/dist/cjs/Flow/TypeId.d.ts +8 -0
- package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
- package/dist/cjs/Flow/TypeId.js +25 -0
- package/dist/cjs/Flow/TypeId.js.map +7 -0
- package/dist/cjs/Flow/index.d.ts +17 -0
- package/dist/cjs/Flow/index.d.ts.map +1 -0
- package/dist/cjs/Flow/index.js +29 -0
- package/dist/cjs/Flow/index.js.map +7 -0
- package/dist/cjs/Flow/internal.d.ts +34 -0
- package/dist/cjs/Flow/internal.d.ts.map +1 -0
- package/dist/cjs/Flow/internal.js +187 -0
- package/dist/cjs/Flow/internal.js.map +7 -0
- package/dist/cjs/Flow/make.d.ts +134 -0
- package/dist/cjs/Flow/make.d.ts.map +1 -0
- package/dist/cjs/Flow/make.js +104 -0
- package/dist/cjs/Flow/make.js.map +7 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
- package/dist/cjs/FlowRuntime/index.d.ts +14 -0
- package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/index.js +26 -0
- package/dist/cjs/FlowRuntime/index.js.map +7 -0
- package/dist/cjs/Graph.d.ts +325 -0
- package/dist/cjs/Graph.d.ts.map +1 -0
- package/dist/cjs/Graph.js +1021 -0
- package/dist/cjs/Graph.js.map +7 -0
- package/dist/cjs/HumanTask.d.ts +440 -0
- package/dist/cjs/HumanTask.d.ts.map +1 -0
- package/dist/cjs/HumanTask.js +413 -0
- package/dist/cjs/HumanTask.js.map +7 -0
- package/dist/cjs/Interpreter.d.ts +222 -0
- package/dist/cjs/Interpreter.d.ts.map +1 -0
- package/dist/cjs/Interpreter.js +888 -0
- package/dist/cjs/Interpreter.js.map +7 -0
- package/dist/cjs/Poll.d.ts +238 -0
- package/dist/cjs/Poll.d.ts.map +1 -0
- package/dist/cjs/Poll.js +150 -0
- package/dist/cjs/Poll.js.map +7 -0
- package/dist/cjs/RetryPolicy.d.ts +273 -0
- package/dist/cjs/RetryPolicy.d.ts.map +1 -0
- package/dist/cjs/RetryPolicy.js +251 -0
- package/dist/cjs/RetryPolicy.js.map +7 -0
- package/dist/cjs/Sleep.d.ts +98 -0
- package/dist/cjs/Sleep.d.ts.map +1 -0
- package/dist/cjs/Sleep.js +133 -0
- package/dist/cjs/Sleep.js.map +7 -0
- package/dist/cjs/Stall.d.ts +173 -0
- package/dist/cjs/Stall.d.ts.map +1 -0
- package/dist/cjs/Stall.js +92 -0
- package/dist/cjs/Stall.js.map +7 -0
- package/dist/cjs/WaitFor.d.ts +109 -0
- package/dist/cjs/WaitFor.d.ts.map +1 -0
- package/dist/cjs/WaitFor.js +117 -0
- package/dist/cjs/WaitFor.js.map +7 -0
- package/dist/cjs/index.d.ts +107 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +69 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/BoundedJson.d.ts +48 -0
- package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
- package/dist/cjs/internal/BoundedJson.js +96 -0
- package/dist/cjs/internal/BoundedJson.js.map +7 -0
- package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
- package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/cjs/internal/DeclarationSite.js +89 -0
- package/dist/cjs/internal/DeclarationSite.js.map +7 -0
- package/dist/cjs/internal/Declarations.d.ts +35 -0
- package/dist/cjs/internal/Declarations.d.ts.map +1 -0
- package/dist/cjs/internal/Declarations.js +50 -0
- package/dist/cjs/internal/Declarations.js.map +7 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
- package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
- package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/cjs/internal/OutcomeMarker.js +27 -0
- package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/Action/Action.d.ts +250 -0
- package/dist/esm/Action/Action.d.ts.map +1 -0
- package/dist/esm/Action/Action.js +30 -0
- package/dist/esm/Action/Action.js.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.js +32 -0
- package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
- package/dist/esm/Action/BoundaryMode.d.ts +29 -0
- package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/esm/Action/BoundaryMode.js +23 -0
- package/dist/esm/Action/BoundaryMode.js.map +1 -0
- package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
- package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/esm/Action/CacheEnvironment.js +130 -0
- package/dist/esm/Action/CacheEnvironment.js.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
- package/dist/esm/Action/Context.d.ts +131 -0
- package/dist/esm/Action/Context.d.ts.map +1 -0
- package/dist/esm/Action/Context.js +99 -0
- package/dist/esm/Action/Context.js.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.js +20 -0
- package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
- package/dist/esm/Action/FileBoundary.d.ts +59 -0
- package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
- package/dist/esm/Action/FileBoundary.js +60 -0
- package/dist/esm/Action/FileBoundary.js.map +1 -0
- package/dist/esm/Action/FileInput.d.ts +28 -0
- package/dist/esm/Action/FileInput.d.ts.map +1 -0
- package/dist/esm/Action/FileInput.js +32 -0
- package/dist/esm/Action/FileInput.js.map +1 -0
- package/dist/esm/Action/Filegroup.d.ts +16 -0
- package/dist/esm/Action/Filegroup.d.ts.map +1 -0
- package/dist/esm/Action/Filegroup.js +15 -0
- package/dist/esm/Action/Filegroup.js.map +1 -0
- package/dist/esm/Action/Glob.d.ts +8 -0
- package/dist/esm/Action/Glob.d.ts.map +1 -0
- package/dist/esm/Action/Glob.js +7 -0
- package/dist/esm/Action/Glob.js.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
- package/dist/esm/Action/Implementations.d.ts +114 -0
- package/dist/esm/Action/Implementations.d.ts.map +1 -0
- package/dist/esm/Action/Implementations.js +94 -0
- package/dist/esm/Action/Implementations.js.map +1 -0
- package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
- package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterrupt.js +25 -0
- package/dist/esm/Action/InfraInterrupt.js.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/StepIdentity.d.ts +153 -0
- package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
- package/dist/esm/Action/StepIdentity.js +139 -0
- package/dist/esm/Action/StepIdentity.js.map +1 -0
- package/dist/esm/Action/TreeArtifact.d.ts +8 -0
- package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/esm/Action/TreeArtifact.js +7 -0
- package/dist/esm/Action/TreeArtifact.js.map +1 -0
- package/dist/esm/Action/TypeId.d.ts +8 -0
- package/dist/esm/Action/TypeId.d.ts.map +1 -0
- package/dist/esm/Action/TypeId.js +9 -0
- package/dist/esm/Action/TypeId.js.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/idempotencyKey.d.ts +21 -0
- package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/idempotencyKey.js +50 -0
- package/dist/esm/Action/idempotencyKey.js.map +1 -0
- package/dist/esm/Action/index.d.ts +29 -0
- package/dist/esm/Action/index.d.ts.map +1 -0
- package/dist/esm/Action/index.js +30 -0
- package/dist/esm/Action/index.js.map +1 -0
- package/dist/esm/Action/make.d.ts +128 -0
- package/dist/esm/Action/make.d.ts.map +1 -0
- package/dist/esm/Action/make.js +405 -0
- package/dist/esm/Action/make.js.map +1 -0
- package/dist/esm/Action/raceAll.d.ts +21 -0
- package/dist/esm/Action/raceAll.d.ts.map +1 -0
- package/dist/esm/Action/raceAll.js +20 -0
- package/dist/esm/Action/raceAll.js.map +1 -0
- package/dist/esm/Action/retry.d.ts +19 -0
- package/dist/esm/Action/retry.d.ts.map +1 -0
- package/dist/esm/Action/retry.js +72 -0
- package/dist/esm/Action/retry.js.map +1 -0
- package/dist/esm/Deadline.d.ts +105 -0
- package/dist/esm/Deadline.d.ts.map +1 -0
- package/dist/esm/Deadline.js +152 -0
- package/dist/esm/Deadline.js.map +1 -0
- package/dist/esm/DurableClock.d.ts +61 -0
- package/dist/esm/DurableClock.d.ts.map +1 -0
- package/dist/esm/DurableClock.js +75 -0
- package/dist/esm/DurableClock.js.map +1 -0
- package/dist/esm/DurableDeferred.d.ts +311 -0
- package/dist/esm/DurableDeferred.d.ts.map +1 -0
- package/dist/esm/DurableDeferred.js +357 -0
- package/dist/esm/DurableDeferred.js.map +1 -0
- package/dist/esm/DurableQueue.d.ts +160 -0
- package/dist/esm/DurableQueue.d.ts.map +1 -0
- package/dist/esm/DurableQueue.js +303 -0
- package/dist/esm/DurableQueue.js.map +1 -0
- package/dist/esm/ExternalJob.d.ts +179 -0
- package/dist/esm/ExternalJob.d.ts.map +1 -0
- package/dist/esm/ExternalJob.js +296 -0
- package/dist/esm/ExternalJob.js.map +1 -0
- package/dist/esm/Fault.d.ts +131 -0
- package/dist/esm/Fault.d.ts.map +1 -0
- package/dist/esm/Fault.js +198 -0
- package/dist/esm/Fault.js.map +1 -0
- package/dist/esm/Flow/Annotations.d.ts +245 -0
- package/dist/esm/Flow/Annotations.d.ts.map +1 -0
- package/dist/esm/Flow/Annotations.js +110 -0
- package/dist/esm/Flow/Annotations.js.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.js +27 -0
- package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.js +34 -0
- package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
- package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
- package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
- package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIds.js +91 -0
- package/dist/esm/Flow/ExecutionIds.js.map +1 -0
- package/dist/esm/Flow/Flow.d.ts +422 -0
- package/dist/esm/Flow/Flow.d.ts.map +1 -0
- package/dist/esm/Flow/Flow.js +3 -0
- package/dist/esm/Flow/Flow.js.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
- package/dist/esm/Flow/Outcome.d.ts +162 -0
- package/dist/esm/Flow/Outcome.d.ts.map +1 -0
- package/dist/esm/Flow/Outcome.js +115 -0
- package/dist/esm/Flow/Outcome.js.map +1 -0
- package/dist/esm/Flow/Result.d.ts +186 -0
- package/dist/esm/Flow/Result.d.ts.map +1 -0
- package/dist/esm/Flow/Result.js +171 -0
- package/dist/esm/Flow/Result.js.map +1 -0
- package/dist/esm/Flow/Runtime.d.ts +98 -0
- package/dist/esm/Flow/Runtime.d.ts.map +1 -0
- package/dist/esm/Flow/Runtime.js +231 -0
- package/dist/esm/Flow/Runtime.js.map +1 -0
- package/dist/esm/Flow/TypeId.d.ts +8 -0
- package/dist/esm/Flow/TypeId.d.ts.map +1 -0
- package/dist/esm/Flow/TypeId.js +9 -0
- package/dist/esm/Flow/TypeId.js.map +1 -0
- package/dist/esm/Flow/index.d.ts +17 -0
- package/dist/esm/Flow/index.d.ts.map +1 -0
- package/dist/esm/Flow/index.js +18 -0
- package/dist/esm/Flow/index.js.map +1 -0
- package/dist/esm/Flow/internal.d.ts +34 -0
- package/dist/esm/Flow/internal.d.ts.map +1 -0
- package/dist/esm/Flow/internal.js +149 -0
- package/dist/esm/Flow/internal.js.map +1 -0
- package/dist/esm/Flow/make.d.ts +134 -0
- package/dist/esm/Flow/make.d.ts.map +1 -0
- package/dist/esm/Flow/make.js +106 -0
- package/dist/esm/Flow/make.js.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
- package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
- package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
- package/dist/esm/FlowRuntime/index.d.ts +14 -0
- package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/index.js +15 -0
- package/dist/esm/FlowRuntime/index.js.map +1 -0
- package/dist/esm/Graph.d.ts +325 -0
- package/dist/esm/Graph.d.ts.map +1 -0
- package/dist/esm/Graph.js +1483 -0
- package/dist/esm/Graph.js.map +1 -0
- package/dist/esm/HumanTask.d.ts +440 -0
- package/dist/esm/HumanTask.d.ts.map +1 -0
- package/dist/esm/HumanTask.js +794 -0
- package/dist/esm/HumanTask.js.map +1 -0
- package/dist/esm/Interpreter.d.ts +222 -0
- package/dist/esm/Interpreter.d.ts.map +1 -0
- package/dist/esm/Interpreter.js +1269 -0
- package/dist/esm/Interpreter.js.map +1 -0
- package/dist/esm/Poll.d.ts +238 -0
- package/dist/esm/Poll.d.ts.map +1 -0
- package/dist/esm/Poll.js +282 -0
- package/dist/esm/Poll.js.map +1 -0
- package/dist/esm/RetryPolicy.d.ts +273 -0
- package/dist/esm/RetryPolicy.d.ts.map +1 -0
- package/dist/esm/RetryPolicy.js +429 -0
- package/dist/esm/RetryPolicy.js.map +1 -0
- package/dist/esm/Sleep.d.ts +98 -0
- package/dist/esm/Sleep.d.ts.map +1 -0
- package/dist/esm/Sleep.js +230 -0
- package/dist/esm/Sleep.js.map +1 -0
- package/dist/esm/Stall.d.ts +173 -0
- package/dist/esm/Stall.d.ts.map +1 -0
- package/dist/esm/Stall.js +138 -0
- package/dist/esm/Stall.js.map +1 -0
- package/dist/esm/WaitFor.d.ts +109 -0
- package/dist/esm/WaitFor.d.ts.map +1 -0
- package/dist/esm/WaitFor.js +184 -0
- package/dist/esm/WaitFor.js.map +1 -0
- package/dist/esm/index.d.ts +107 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +108 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/BoundedJson.d.ts +48 -0
- package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
- package/dist/esm/internal/BoundedJson.js +107 -0
- package/dist/esm/internal/BoundedJson.js.map +1 -0
- package/dist/esm/internal/DeclarationSite.d.ts +135 -0
- package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/esm/internal/DeclarationSite.js +196 -0
- package/dist/esm/internal/DeclarationSite.js.map +1 -0
- package/dist/esm/internal/Declarations.d.ts +35 -0
- package/dist/esm/internal/Declarations.d.ts.map +1 -0
- package/dist/esm/internal/Declarations.js +43 -0
- package/dist/esm/internal/Declarations.js.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.js +13 -0
- package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.js +363 -0
- package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
- package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
- package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/esm/internal/OutcomeMarker.js +18 -0
- package/dist/esm/internal/OutcomeMarker.js.map +1 -0
- package/docs/README.md +150 -0
- package/docs/api.md +436 -0
- package/docs/concepts/bodies-and-plans.md +157 -0
- package/docs/concepts/execution-identity.md +142 -0
- package/docs/concepts/flows-and-actions.md +129 -0
- package/docs/concepts/suspension-and-replay.md +130 -0
- package/docs/concepts/the-runtime-port.md +110 -0
- package/docs/concepts/trampoline-rounds.md +151 -0
- package/docs/guides/ask-a-person.md +184 -0
- package/docs/guides/build-a-body.md +161 -0
- package/docs/guides/cancel-and-roll-back.md +112 -0
- package/docs/guides/implement-an-action.md +147 -0
- package/docs/guides/inspect-the-plan.md +154 -0
- package/docs/guides/poll-until-ready.md +167 -0
- package/docs/guides/queue-work-to-a-worker.md +122 -0
- package/docs/guides/retry-a-failing-action.md +243 -0
- package/docs/guides/reuse-a-recorded-result.md +122 -0
- package/docs/guides/run-a-child-flow.md +108 -0
- package/docs/guides/run-an-external-job.md +86 -0
- package/docs/guides/use-a-prompt.md +38 -0
- package/docs/guides/wait-for-a-deadline.md +141 -0
- package/docs/guides/wait-for-an-external-signal.md +151 -0
- package/docs/installation.md +82 -0
- package/docs/quickstart.md +155 -0
- package/docs/reference/flow.md +1831 -0
- package/docs/testing.md +157 -0
- package/docs/troubleshooting.md +286 -0
- package/package.json +327 -3
- package/src/Action/Action.ts +333 -0
- package/src/Action/AttemptTimedOut.ts +37 -0
- package/src/Action/BoundaryMode.ts +33 -0
- package/src/Action/CacheEnvironment.ts +170 -0
- package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
- package/src/Action/Context.ts +156 -0
- package/src/Action/DuplicateImplementation.ts +24 -0
- package/src/Action/FileBoundary.ts +77 -0
- package/src/Action/FileInput.ts +42 -0
- package/src/Action/Filegroup.ts +16 -0
- package/src/Action/Glob.ts +8 -0
- package/src/Action/ImplementationVersionMismatch.ts +27 -0
- package/src/Action/Implementations.ts +149 -0
- package/src/Action/InfraInterrupt.ts +30 -0
- package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
- package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
- package/src/Action/StepIdentity.ts +219 -0
- package/src/Action/TreeArtifact.ts +8 -0
- package/src/Action/TypeId.ts +9 -0
- package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
- package/src/Action/idempotencyKey.ts +67 -0
- package/src/Action/index.ts +31 -0
- package/src/Action/make.ts +657 -0
- package/src/Action/raceAll.ts +48 -0
- package/src/Action/retry.ts +92 -0
- package/src/Deadline.ts +185 -0
- package/src/DurableClock.ts +133 -0
- package/src/DurableDeferred.ts +753 -0
- package/src/DurableQueue.ts +519 -0
- package/src/ExternalJob.ts +432 -0
- package/src/Fault.ts +279 -0
- package/src/Flow/Annotations.ts +151 -0
- package/src/Flow/CapabilityCeiling.ts +37 -0
- package/src/Flow/DeadlineExceeded.ts +40 -0
- package/src/Flow/ExecutionIdRequired.ts +36 -0
- package/src/Flow/ExecutionIds.ts +133 -0
- package/src/Flow/Flow.ts +576 -0
- package/src/Flow/MaxRoundsExceeded.ts +39 -0
- package/src/Flow/Outcome.ts +179 -0
- package/src/Flow/Result.ts +284 -0
- package/src/Flow/Runtime.ts +309 -0
- package/src/Flow/TypeId.ts +9 -0
- package/src/Flow/index.ts +19 -0
- package/src/Flow/internal.ts +237 -0
- package/src/Flow/make.ts +279 -0
- package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
- package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
- package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
- package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
- package/src/FlowRuntime/FlowInstance.ts +128 -0
- package/src/FlowRuntime/FlowRuntime.ts +333 -0
- package/src/FlowRuntime/NodeRecord.ts +183 -0
- package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
- package/src/FlowRuntime/index.ts +17 -0
- package/src/Graph.ts +1862 -0
- package/src/HumanTask.ts +1003 -0
- package/src/Interpreter.ts +1593 -0
- package/src/Poll.ts +414 -0
- package/src/RetryPolicy.ts +550 -0
- package/src/Sleep.ts +267 -0
- package/src/Stall.ts +217 -0
- package/src/WaitFor.ts +228 -0
- package/src/index.ts +125 -0
- package/src/internal/BoundedJson.ts +109 -0
- package/src/internal/DeclarationSite.ts +214 -0
- package/src/internal/Declarations.ts +49 -0
- package/src/internal/ExecutionMiddleware.ts +29 -0
- package/src/internal/JsonSchemaSubset.ts +392 -0
- package/src/internal/OutcomeMarker.ts +19 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable external work as ordinary actions, handoffs and parked timers.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Node from "@smthrs/plan/Node";
|
|
7
|
+
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Duration from "effect/Duration";
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
11
|
+
import * as Schema from "effect/Schema";
|
|
12
|
+
import * as Action from "./Action/index.ts";
|
|
13
|
+
import * as Flow from "./Flow/index.ts";
|
|
14
|
+
import { FlowInstance } from "./FlowRuntime/FlowInstance.ts";
|
|
15
|
+
import * as Sleep from "./Sleep.ts";
|
|
16
|
+
/**
|
|
17
|
+
* External process observation.
|
|
18
|
+
* @category schemas
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export declare const Status: Schema.Union<readonly [Schema.Struct<{
|
|
22
|
+
readonly _tag: Schema.Literal<"Running">;
|
|
23
|
+
}>, Schema.Struct<{
|
|
24
|
+
readonly _tag: Schema.Literal<"Exited">;
|
|
25
|
+
readonly exitCode: Schema.Int;
|
|
26
|
+
}>, Schema.Struct<{
|
|
27
|
+
readonly _tag: Schema.Literal<"Lost">;
|
|
28
|
+
}>]>;
|
|
29
|
+
/**
|
|
30
|
+
* Decoded external process observation.
|
|
31
|
+
* @category models
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export type Status = typeof Status.Type;
|
|
35
|
+
/**
|
|
36
|
+
* Decoded external process observation.
|
|
37
|
+
* @category models
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
*/
|
|
40
|
+
export type Exited = Extract<Status, {
|
|
41
|
+
readonly _tag: "Exited";
|
|
42
|
+
}>;
|
|
43
|
+
declare const Again_base: Schema.Class<Again, Schema.TaggedStruct<"@smthrs/flow/ExternalJobAgain", {
|
|
44
|
+
readonly message: Schema.String;
|
|
45
|
+
}>, Cause.YieldableError>;
|
|
46
|
+
/**
|
|
47
|
+
* A collected exit that can be replaced.
|
|
48
|
+
*
|
|
49
|
+
* @category errors
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
*/
|
|
52
|
+
export declare class Again extends Again_base {
|
|
53
|
+
}
|
|
54
|
+
declare const ExternalJobLost_base: Schema.Class<ExternalJobLost, Schema.TaggedStruct<"@smthrs/flow/ExternalJobLost", {
|
|
55
|
+
readonly key: Schema.String;
|
|
56
|
+
readonly message: Schema.String;
|
|
57
|
+
}>, Cause.YieldableError>;
|
|
58
|
+
/**
|
|
59
|
+
* No worker or exit receipt remains.
|
|
60
|
+
*
|
|
61
|
+
* @category errors
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
*/
|
|
64
|
+
export declare class ExternalJobLost extends ExternalJobLost_base {
|
|
65
|
+
}
|
|
66
|
+
declare const ExternalJobTimedOut_base: Schema.Class<ExternalJobTimedOut, Schema.TaggedStruct<"@smthrs/flow/ExternalJobTimedOut", {
|
|
67
|
+
readonly key: Schema.String;
|
|
68
|
+
readonly message: Schema.String;
|
|
69
|
+
}>, Cause.YieldableError>;
|
|
70
|
+
/**
|
|
71
|
+
* The deadline anchored before initial start elapsed.
|
|
72
|
+
*
|
|
73
|
+
* @category errors
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
*/
|
|
76
|
+
export declare class ExternalJobTimedOut extends ExternalJobTimedOut_base {
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The adapter's full typed failure union belongs in make's error schema.
|
|
80
|
+
*
|
|
81
|
+
* @category models
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
*/
|
|
84
|
+
export interface Operations<P, H, A, E, R> {
|
|
85
|
+
readonly start: (payload: P, key: string) => Effect.Effect<H, E, R>;
|
|
86
|
+
readonly status: (handle: H, key: string) => Effect.Effect<Status, E, R>;
|
|
87
|
+
readonly collect: (handle: H, key: string, exited: Exited) => Effect.Effect<A, E | Again, R>;
|
|
88
|
+
readonly cancel: (handle: H, key: string) => Effect.Effect<void, never, R>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create-or-get by execution id and generation. Private ordinary flows carry
|
|
92
|
+
* journaled state; initial callers cannot supply a key or continuation handle.
|
|
93
|
+
* `restarts` counts replacement generations; zero permits only g1.
|
|
94
|
+
* @category constructors
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
*/
|
|
97
|
+
export declare const make: <const Tag extends string, P extends Schema.Struct.Fields | Flow.AnyStructSchema, H extends Schema.Top, A extends Schema.Top, E extends Schema.Top = typeof Schema.Never>(tag: Tag, options: {
|
|
98
|
+
readonly payload: P;
|
|
99
|
+
readonly handle: H;
|
|
100
|
+
readonly success: A;
|
|
101
|
+
readonly error?: E;
|
|
102
|
+
readonly probe: {
|
|
103
|
+
readonly every: Duration.Input;
|
|
104
|
+
readonly max: Duration.Input;
|
|
105
|
+
};
|
|
106
|
+
readonly timeout: Duration.Input;
|
|
107
|
+
readonly restarts?: number;
|
|
108
|
+
}) => {
|
|
109
|
+
readonly call: (payload: Action.PlannedPayload<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["~type.make.in"]>) => Node.Node<A["Type"], Sleep.SleepRequestInvalid | ExternalJobLost | ExternalJobTimedOut | E["Type"], never>;
|
|
110
|
+
readonly toLayer: <R>(operations: Operations<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], H["Type"], A["Type"], E["Type"], R>) => Layer.Layer<Layer.Success<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
|
|
111
|
+
executionId: string;
|
|
112
|
+
current: {
|
|
113
|
+
handle: H["Type"];
|
|
114
|
+
key: string;
|
|
115
|
+
} | undefined;
|
|
116
|
+
} | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
|
|
117
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
118
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
119
|
+
readonly origin: Schema.String;
|
|
120
|
+
readonly startedAt: Schema.Number;
|
|
121
|
+
readonly generation: Schema.Int;
|
|
122
|
+
readonly probe: Schema.Int;
|
|
123
|
+
}> | Schema.Struct.EncodingServices<{
|
|
124
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
125
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
126
|
+
readonly origin: Schema.String;
|
|
127
|
+
readonly startedAt: Schema.Number;
|
|
128
|
+
readonly generation: Schema.Int;
|
|
129
|
+
readonly probe: Schema.Int;
|
|
130
|
+
}> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, Layer.Error<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
|
|
131
|
+
executionId: string;
|
|
132
|
+
current: {
|
|
133
|
+
handle: H["Type"];
|
|
134
|
+
key: string;
|
|
135
|
+
} | undefined;
|
|
136
|
+
} | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
|
|
137
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
138
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
139
|
+
readonly origin: Schema.String;
|
|
140
|
+
readonly startedAt: Schema.Number;
|
|
141
|
+
readonly generation: Schema.Int;
|
|
142
|
+
readonly probe: Schema.Int;
|
|
143
|
+
}> | Schema.Struct.EncodingServices<{
|
|
144
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
145
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
146
|
+
readonly origin: Schema.String;
|
|
147
|
+
readonly startedAt: Schema.Number;
|
|
148
|
+
readonly generation: Schema.Int;
|
|
149
|
+
readonly probe: Schema.Int;
|
|
150
|
+
}> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, Exclude<Layer.Services<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
|
|
151
|
+
executionId: string;
|
|
152
|
+
current: {
|
|
153
|
+
handle: H["Type"];
|
|
154
|
+
key: string;
|
|
155
|
+
} | undefined;
|
|
156
|
+
} | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
|
|
157
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
158
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
159
|
+
readonly origin: Schema.String;
|
|
160
|
+
readonly startedAt: Schema.Number;
|
|
161
|
+
readonly generation: Schema.Int;
|
|
162
|
+
readonly probe: Schema.Int;
|
|
163
|
+
}> | Schema.Struct.EncodingServices<{
|
|
164
|
+
readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
|
|
165
|
+
readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
|
|
166
|
+
readonly origin: Schema.String;
|
|
167
|
+
readonly startedAt: Schema.Number;
|
|
168
|
+
readonly generation: Schema.Int;
|
|
169
|
+
readonly probe: Schema.Int;
|
|
170
|
+
}> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, {
|
|
171
|
+
executionId: string;
|
|
172
|
+
current: {
|
|
173
|
+
handle: H["Type"];
|
|
174
|
+
key: string;
|
|
175
|
+
} | undefined;
|
|
176
|
+
}>>;
|
|
177
|
+
} & Flow.Flow<Tag, P extends Schema.Struct.Fields ? Schema.Struct<P> : P, A, Schema.Union<readonly [E, typeof ExternalJobLost, typeof ExternalJobTimedOut, typeof Sleep.SleepRequestInvalid]>, Action.Requirement<string>>;
|
|
178
|
+
export {};
|
|
179
|
+
//# sourceMappingURL=ExternalJob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalJob.d.ts","sourceRoot":"","sources":["../../src/ExternalJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable external work as ordinary actions, handoffs and parked timers.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Node from "@smthrs/plan/Node";
|
|
7
|
+
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Clock from "effect/Clock";
|
|
9
|
+
import * as Context from "effect/Context";
|
|
10
|
+
import * as Duration from "effect/Duration";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as Layer from "effect/Layer";
|
|
13
|
+
import * as Option from "effect/Option";
|
|
14
|
+
import * as Schema from "effect/Schema";
|
|
15
|
+
import * as Action from "./Action/index.js";
|
|
16
|
+
import * as Fault from "./Fault.js";
|
|
17
|
+
import * as Flow from "./Flow/index.js";
|
|
18
|
+
import { FlowInstance } from "./FlowRuntime/FlowInstance.js";
|
|
19
|
+
import { ExecutionMiddleware } from "./internal/ExecutionMiddleware.js";
|
|
20
|
+
import * as Interpreter from "./Interpreter.js";
|
|
21
|
+
import * as Sleep from "./Sleep.js";
|
|
22
|
+
/**
|
|
23
|
+
* External process observation.
|
|
24
|
+
* @category schemas
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export const Status = Schema.Union([
|
|
28
|
+
Schema.Struct({ _tag: Schema.Literal("Running") }),
|
|
29
|
+
Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }),
|
|
30
|
+
Schema.Struct({ _tag: Schema.Literal("Lost") })
|
|
31
|
+
]);
|
|
32
|
+
/**
|
|
33
|
+
* A collected exit that can be replaced.
|
|
34
|
+
*
|
|
35
|
+
* @category errors
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
*/
|
|
38
|
+
export class Again extends Schema.TaggedError()("@smthrs/flow/ExternalJobAgain", { message: Schema.String }) {
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* No worker or exit receipt remains.
|
|
42
|
+
*
|
|
43
|
+
* @category errors
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
*/
|
|
46
|
+
export class ExternalJobLost extends Schema.TaggedError()("@smthrs/flow/ExternalJobLost", {
|
|
47
|
+
key: Schema.String,
|
|
48
|
+
message: Schema.String
|
|
49
|
+
}) {
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The deadline anchored before initial start elapsed.
|
|
53
|
+
*
|
|
54
|
+
* @category errors
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
export class ExternalJobTimedOut extends Schema.TaggedError()("@smthrs/flow/ExternalJobTimedOut", {
|
|
58
|
+
key: Schema.String,
|
|
59
|
+
message: Schema.String
|
|
60
|
+
}) {
|
|
61
|
+
}
|
|
62
|
+
Fault.register("@smthrs/flow/ExternalJobLost", "infra");
|
|
63
|
+
Fault.register("@smthrs/flow/ExternalJobTimedOut", "dependency");
|
|
64
|
+
Fault.register("@smthrs/flow/ExternalJobAgain", "dependency");
|
|
65
|
+
const millis = (value, field) => {
|
|
66
|
+
const parsed = Duration.fromInput(value);
|
|
67
|
+
const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN;
|
|
68
|
+
if (!Number.isFinite(result) || result <= 0) {
|
|
69
|
+
throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Create-or-get by execution id and generation. Private ordinary flows carry
|
|
75
|
+
* journaled state; initial callers cannot supply a key or continuation handle.
|
|
76
|
+
* `restarts` counts replacement generations; zero permits only g1.
|
|
77
|
+
* @category constructors
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
*/
|
|
80
|
+
export const make = (tag, options) => {
|
|
81
|
+
const every = millis(options.probe.every, "probe.every");
|
|
82
|
+
const maximum = millis(options.probe.max, "probe.max");
|
|
83
|
+
const timeout = millis(options.timeout, "timeout");
|
|
84
|
+
const restarts = options.restarts ?? 0;
|
|
85
|
+
if (maximum < every)
|
|
86
|
+
throw new RangeError("ExternalJob.make: probe.max must be at least probe.every");
|
|
87
|
+
if (!Number.isSafeInteger(restarts) || restarts < 0) {
|
|
88
|
+
throw new RangeError("ExternalJob.make: restarts must be a nonnegative safe integer");
|
|
89
|
+
}
|
|
90
|
+
// Erase field modifiers at nesting boundaries: these are required values,
|
|
91
|
+
// even when the author's schema contains optional fields internally.
|
|
92
|
+
const input = (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload));
|
|
93
|
+
const handle = options.handle;
|
|
94
|
+
const providerError = (options.error ?? Schema.Never);
|
|
95
|
+
const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid]);
|
|
96
|
+
const state = Schema.Struct({
|
|
97
|
+
input,
|
|
98
|
+
origin: Schema.String,
|
|
99
|
+
startedAt: Schema.Number,
|
|
100
|
+
generation: Schema.Int,
|
|
101
|
+
probe: Schema.Int
|
|
102
|
+
});
|
|
103
|
+
const observed = Schema.Struct({ ...state.fields, handle });
|
|
104
|
+
const keyOf = (job) => `${job.origin}#g${job.generation}`;
|
|
105
|
+
const captures = { tag, every, maximum, timeout, restarts, version: "external-job/v1" };
|
|
106
|
+
const active = Context.Service(`${tag}/ExternalJobActive`);
|
|
107
|
+
// Registry tables wrap get() for module isolation but retain add(), the
|
|
108
|
+
// scoped registration owner. Anchor lifecycle bindings to that owner.
|
|
109
|
+
const cancellations = new WeakMap();
|
|
110
|
+
const annotations = Context.make(ExecutionMiddleware, {
|
|
111
|
+
wrap: (payload, body) => Effect.gen(function* () {
|
|
112
|
+
const instance = yield* FlowInstance;
|
|
113
|
+
const table = yield* Action.Implementations;
|
|
114
|
+
const cancel = cancellations.get(table.add);
|
|
115
|
+
if (cancel === undefined) {
|
|
116
|
+
return yield* Effect.die(new Interpreter.InterpreterError({
|
|
117
|
+
code: "unresolved_action",
|
|
118
|
+
flow: tag,
|
|
119
|
+
node: `${tag}/cancel`,
|
|
120
|
+
message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
const current = {
|
|
124
|
+
executionId: instance.executionId,
|
|
125
|
+
current: instance.flow._tag === `${tag}/observe`
|
|
126
|
+
? { handle: payload.handle, key: keyOf(payload) } :
|
|
127
|
+
undefined
|
|
128
|
+
};
|
|
129
|
+
yield* Flow.withRollback(Effect.succeed(current), (value, cause) => Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined
|
|
130
|
+
? Effect.void :
|
|
131
|
+
cancel(value.current.handle, value.current.key));
|
|
132
|
+
return yield* body.pipe(Effect.provideService(active, current));
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state });
|
|
136
|
+
const Start = Action.make(`${tag}/start`, {
|
|
137
|
+
payload: state,
|
|
138
|
+
success: options.handle,
|
|
139
|
+
error: providerError,
|
|
140
|
+
tier: "irreversible",
|
|
141
|
+
idempotencyKey: keyOf
|
|
142
|
+
});
|
|
143
|
+
const Probe = Action.make(`${tag}/status`, {
|
|
144
|
+
payload: observed,
|
|
145
|
+
success: Schema.Struct({
|
|
146
|
+
status: Status,
|
|
147
|
+
timedOut: Schema.Boolean,
|
|
148
|
+
wakeAt: Schema.Number,
|
|
149
|
+
next: observed,
|
|
150
|
+
restart: state
|
|
151
|
+
}),
|
|
152
|
+
error: providerError,
|
|
153
|
+
implementationVersion: "external-job/status/v1",
|
|
154
|
+
effects: { reads: [], writes: [], mode: "expected", onConflict: "fail" },
|
|
155
|
+
tier: "sealed",
|
|
156
|
+
idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`
|
|
157
|
+
});
|
|
158
|
+
const Collect = Action.make(`${tag}/collect`, {
|
|
159
|
+
payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }) },
|
|
160
|
+
success: options.success,
|
|
161
|
+
error: Schema.Union([providerError, Again]),
|
|
162
|
+
tier: "irreversible",
|
|
163
|
+
idempotencyKey: ({ job }) => `${keyOf(job)}/collect`
|
|
164
|
+
});
|
|
165
|
+
const Cancel = Action.make(`${tag}/cancel`, {
|
|
166
|
+
payload: observed,
|
|
167
|
+
success: Schema.Void,
|
|
168
|
+
tier: "irreversible",
|
|
169
|
+
idempotencyKey: (job) => `${keyOf(job)}/cancel`
|
|
170
|
+
});
|
|
171
|
+
const Fail = Action.make(`${tag}/fail`, {
|
|
172
|
+
payload: { job: observed, timedOut: Schema.Boolean },
|
|
173
|
+
success: Schema.Never,
|
|
174
|
+
error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])
|
|
175
|
+
});
|
|
176
|
+
const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean });
|
|
177
|
+
const LaunchFailure = Action.make(`${tag}/launch-timeout`, {
|
|
178
|
+
payload: state,
|
|
179
|
+
success: Schema.Never,
|
|
180
|
+
error: ExternalJobTimedOut
|
|
181
|
+
});
|
|
182
|
+
const launched = (job) => Start.call(job).pipe(Node.bindPlanned((handle) => observe.to({
|
|
183
|
+
input: job.input,
|
|
184
|
+
origin: job.origin,
|
|
185
|
+
startedAt: job.startedAt,
|
|
186
|
+
generation: job.generation,
|
|
187
|
+
probe: job.probe,
|
|
188
|
+
handle
|
|
189
|
+
})));
|
|
190
|
+
// Pin the declared union through recursive bodies: cross-package inference
|
|
191
|
+
// otherwise narrows the error schema to the provider-only generic E.
|
|
192
|
+
const launch = Flow.make(`${tag}/launch`, {
|
|
193
|
+
payload: state,
|
|
194
|
+
success: options.success,
|
|
195
|
+
error: failure,
|
|
196
|
+
annotations,
|
|
197
|
+
body: Node.capture(captures, (job) => Ready.call(job).pipe(Node.branch({
|
|
198
|
+
if: Node.capture(captures, (ready) => ready),
|
|
199
|
+
then: () => launched(job),
|
|
200
|
+
else: () => LaunchFailure.call(job)
|
|
201
|
+
})))
|
|
202
|
+
});
|
|
203
|
+
const recover = (job, result) => Cancel.call(job).pipe(Node.andThen(Node.succeed(job).pipe(Node.branch({
|
|
204
|
+
if: Node.capture(captures, (current) => current.generation <= restarts),
|
|
205
|
+
then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),
|
|
206
|
+
else: () => Fail.call({ job, timedOut: false })
|
|
207
|
+
}))));
|
|
208
|
+
const observe = Flow.make(`${tag}/observe`, {
|
|
209
|
+
payload: observed,
|
|
210
|
+
success: options.success,
|
|
211
|
+
error: failure,
|
|
212
|
+
annotations,
|
|
213
|
+
body: Node.capture(captures, (job) => Probe.call(job).pipe(Node.bindPlanned((result) => Node.succeed(result).pipe(Node.branch({
|
|
214
|
+
if: Node.capture(captures, (value) => value.timedOut),
|
|
215
|
+
then: () => Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),
|
|
216
|
+
else: () => Node.succeed(result.status).pipe(Node.branch({
|
|
217
|
+
if: Node.capture(captures, (status) => status._tag === "Running"),
|
|
218
|
+
then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),
|
|
219
|
+
else: (status) => Node.succeed(status).pipe(Node.branch({
|
|
220
|
+
if: Node.capture(captures, (value) => value._tag === "Lost"),
|
|
221
|
+
then: () => recover(job, result),
|
|
222
|
+
else: (exited) => Collect.call({ job, exited: exited }).pipe(Node.catch({ error: Again, onFailure: () => recover(job, result) }))
|
|
223
|
+
}))
|
|
224
|
+
}))
|
|
225
|
+
})))))
|
|
226
|
+
});
|
|
227
|
+
const flow = Flow.make(tag, {
|
|
228
|
+
payload: options.payload,
|
|
229
|
+
success: options.success,
|
|
230
|
+
error: failure,
|
|
231
|
+
annotations,
|
|
232
|
+
body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))
|
|
233
|
+
});
|
|
234
|
+
const toLayer = (operations) => {
|
|
235
|
+
const bindCancellation = Layer.effectDiscard(Effect.gen(function* () {
|
|
236
|
+
const table = yield* Action.Implementations;
|
|
237
|
+
const context = yield* Effect.context();
|
|
238
|
+
const cancel = (handle, key) => operations.cancel(handle, key).pipe(Effect.provideContext(context));
|
|
239
|
+
cancellations.set(table.add, cancel);
|
|
240
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
241
|
+
if (cancellations.get(table.add) === cancel)
|
|
242
|
+
cancellations.delete(table.add);
|
|
243
|
+
}));
|
|
244
|
+
}));
|
|
245
|
+
const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe));
|
|
246
|
+
const layer = Layer.mergeAll(interpreter, bindCancellation, Sleep.layer, Initialize.toLayer(({ input }) => Effect.gen(function* () {
|
|
247
|
+
const instance = yield* active;
|
|
248
|
+
return {
|
|
249
|
+
input,
|
|
250
|
+
origin: instance.executionId,
|
|
251
|
+
startedAt: Math.floor(yield* Clock.currentTimeMillis),
|
|
252
|
+
generation: 1,
|
|
253
|
+
probe: 1
|
|
254
|
+
};
|
|
255
|
+
})), Start.toLayer((job) => Effect.tap(operations.start(job.input, keyOf(job)), (handle) => Effect.map(active, (value) => {
|
|
256
|
+
value.current = { handle, key: keyOf(job) };
|
|
257
|
+
}))), Probe.toLayer((job) => Effect.gen(function* () {
|
|
258
|
+
let now = Math.floor(yield* Clock.currentTimeMillis);
|
|
259
|
+
const deadline = job.startedAt + timeout;
|
|
260
|
+
let timedOut = now >= deadline;
|
|
261
|
+
const status = timedOut ? { _tag: "Running" } : yield* Effect.raceFirst(operations.status(job.handle, keyOf(job)), Effect.sleep(deadline - now).pipe(Effect.as({ _tag: "Running" })));
|
|
262
|
+
now = Math.floor(yield* Clock.currentTimeMillis);
|
|
263
|
+
timedOut ||= now >= deadline;
|
|
264
|
+
const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023));
|
|
265
|
+
return {
|
|
266
|
+
status,
|
|
267
|
+
timedOut,
|
|
268
|
+
wakeAt: Math.min(deadline, Math.ceil(now + delay)),
|
|
269
|
+
next: { ...job, probe: job.probe + 1 },
|
|
270
|
+
restart: {
|
|
271
|
+
input: job.input,
|
|
272
|
+
origin: job.origin,
|
|
273
|
+
startedAt: job.startedAt,
|
|
274
|
+
generation: job.generation + 1,
|
|
275
|
+
probe: 1
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}), { implementationVersion: "external-job/status/v1" }), Collect.toLayer(({ exited, job }) => Effect.tap(operations.collect(job.handle, keyOf(job), exited), () => Effect.map(active, (value) => {
|
|
279
|
+
value.current = undefined;
|
|
280
|
+
}))), Cancel.toLayer((job) => Effect.tap(operations.cancel(job.handle, keyOf(job)), () => Effect.map(active, (value) => {
|
|
281
|
+
value.current = undefined;
|
|
282
|
+
}))), Fail.toLayer(({ job, timedOut }) => Effect.fail(timedOut
|
|
283
|
+
? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })
|
|
284
|
+
: new ExternalJobLost({
|
|
285
|
+
key: keyOf(job),
|
|
286
|
+
message: `Job ${keyOf(job)} exhausted its replacement generations`
|
|
287
|
+
}))), Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)), LaunchFailure.toLayer((job) => Effect.fail(new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` }))));
|
|
288
|
+
// Active is supplied by the execution middleware, never by the host.
|
|
289
|
+
return layer;
|
|
290
|
+
};
|
|
291
|
+
// A job requires its own execution scope and identity even when composed
|
|
292
|
+
// through call; reuse the existing child boundary rather than inline it.
|
|
293
|
+
const call = (payload) => flow.child(payload);
|
|
294
|
+
return Object.assign(flow, { call, toLayer });
|
|
295
|
+
};
|
|
296
|
+
//# sourceMappingURL=ExternalJob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalJob.js","sourceRoot":"","sources":["../../src/ExternalJob.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Durable external work as ordinary actions, handoffs and parked timers.\n *\n * @since 1.0.0\n */\n\nimport * as Node from \"@smthrs/plan/Node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Clock from \"effect/Clock\"\nimport * as Context from \"effect/Context\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport * as Action from \"./Action/index.ts\"\nimport * as Fault from \"./Fault.ts\"\nimport * as Flow from \"./Flow/index.ts\"\nimport { FlowInstance } from \"./FlowRuntime/FlowInstance.ts\"\nimport { ExecutionMiddleware } from \"./internal/ExecutionMiddleware.ts\"\nimport * as Interpreter from \"./Interpreter.ts\"\nimport * as Sleep from \"./Sleep.ts\"\n\n/**\n * External process observation.\n * @category schemas\n * @since 1.0.0\n */\nexport const Status = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"Running\") }),\n Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }),\n Schema.Struct({ _tag: Schema.Literal(\"Lost\") })\n])\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Status = typeof Status.Type\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Exited = Extract<Status, { readonly _tag: \"Exited\" }>\n/**\n * A collected exit that can be replaced.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class Again extends Schema.TaggedError<Again>()(\"@smthrs/flow/ExternalJobAgain\", { message: Schema.String }) {}\n/**\n * No worker or exit receipt remains.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobLost extends Schema.TaggedError<ExternalJobLost>()(\"@smthrs/flow/ExternalJobLost\", {\n key: Schema.String,\n message: Schema.String\n}) {}\n/**\n * The deadline anchored before initial start elapsed.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobTimedOut extends Schema.TaggedError<ExternalJobTimedOut>()(\"@smthrs/flow/ExternalJobTimedOut\", {\n key: Schema.String,\n message: Schema.String\n}) {}\nFault.register(\"@smthrs/flow/ExternalJobLost\", \"infra\")\nFault.register(\"@smthrs/flow/ExternalJobTimedOut\", \"dependency\")\nFault.register(\"@smthrs/flow/ExternalJobAgain\", \"dependency\")\n\nconst millis = (value: Duration.Input, field: string): number => {\n const parsed = Duration.fromInput(value)\n const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN\n if (!Number.isFinite(result) || result <= 0) {\n throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`)\n }\n return result\n}\n/**\n * The adapter's full typed failure union belongs in make's error schema.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Operations<P, H, A, E, R> {\n readonly start: (payload: P, key: string) => Effect.Effect<H, E, R>\n readonly status: (handle: H, key: string) => Effect.Effect<Status, E, R>\n readonly collect: (handle: H, key: string, exited: Exited) => Effect.Effect<A, E | Again, R>\n readonly cancel: (handle: H, key: string) => Effect.Effect<void, never, R>\n}\n\n/**\n * Create-or-get by execution id and generation. Private ordinary flows carry\n * journaled state; initial callers cannot supply a key or continuation handle.\n * `restarts` counts replacement generations; zero permits only g1.\n * @category constructors\n * @since 1.0.0\n */\nexport const make = <\n const Tag extends string,\n P extends Schema.Struct.Fields | Flow.AnyStructSchema,\n H extends Schema.Top,\n A extends Schema.Top,\n E extends Schema.Top = typeof Schema.Never\n>(tag: Tag, options: {\n readonly payload: P\n readonly handle: H\n readonly success: A\n readonly error?: E\n readonly probe: { readonly every: Duration.Input; readonly max: Duration.Input }\n readonly timeout: Duration.Input\n readonly restarts?: number\n}) => {\n const every = millis(options.probe.every, \"probe.every\")\n const maximum = millis(options.probe.max, \"probe.max\")\n const timeout = millis(options.timeout, \"timeout\")\n const restarts = options.restarts ?? 0\n if (maximum < every) throw new RangeError(\"ExternalJob.make: probe.max must be at least probe.every\")\n if (!Number.isSafeInteger(restarts) || restarts < 0) {\n throw new RangeError(\"ExternalJob.make: restarts must be a nonnegative safe integer\")\n }\n type Input = P extends Schema.Struct.Fields ? Schema.Struct<P> : P\n // Erase field modifiers at nesting boundaries: these are required values,\n // even when the author's schema contains optional fields internally.\n const input =\n (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload)) as unknown as Schema.Codec<\n Input[\"Type\"],\n Input[\"Encoded\"],\n Input[\"DecodingServices\"],\n Input[\"EncodingServices\"]\n >\n const handle = options.handle as Schema.Codec<H[\"Type\"], H[\"Encoded\"], H[\"DecodingServices\"], H[\"EncodingServices\"]>\n const providerError = (options.error ?? Schema.Never) as E\n const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid])\n const state = Schema.Struct({\n input,\n origin: Schema.String,\n startedAt: Schema.Number,\n generation: Schema.Int,\n probe: Schema.Int\n })\n const observed = Schema.Struct({ ...state.fields, handle })\n type State = typeof state.Type\n type Observed = typeof observed.Type\n const keyOf = (job: { readonly origin: string; readonly generation: number }) => `${job.origin}#g${job.generation}`\n const captures = { tag, every, maximum, timeout, restarts, version: \"external-job/v1\" }\n type Active = { executionId: string; current: { handle: H[\"Type\"]; key: string } | undefined }\n const active = Context.Service<Active>(`${tag}/ExternalJobActive`)\n // Registry tables wrap get() for module isolation but retain add(), the\n // scoped registration owner. Anchor lifecycle bindings to that owner.\n const cancellations = new WeakMap<object, (handle: H[\"Type\"], key: string) => Effect.Effect<void>>()\n const annotations = Context.make(ExecutionMiddleware, {\n wrap: (payload, body) =>\n Effect.gen(function*() {\n const instance = yield* FlowInstance\n const table = yield* Action.Implementations\n const cancel = cancellations.get(table.add)\n if (cancel === undefined) {\n return yield* Effect.die(\n new Interpreter.InterpreterError({\n code: \"unresolved_action\",\n flow: tag,\n node: `${tag}/cancel`,\n message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`\n })\n )\n }\n const current: Active = {\n executionId: instance.executionId,\n current: instance.flow._tag === `${tag}/observe`\n ? { handle: (payload as Observed).handle, key: keyOf(payload as Observed) } :\n undefined\n }\n yield* Flow.withRollback(Effect.succeed(current), (value, cause) =>\n Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined\n ? Effect.void :\n cancel(value.current.handle, value.current.key))\n return yield* body.pipe(Effect.provideService(active, current))\n })\n })\n const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state })\n const Start = Action.make(`${tag}/start`, {\n payload: state,\n success: options.handle,\n error: providerError,\n tier: \"irreversible\",\n idempotencyKey: keyOf\n })\n const Probe = Action.make(`${tag}/status`, {\n payload: observed,\n success: Schema.Struct({\n status: Status,\n timedOut: Schema.Boolean,\n wakeAt: Schema.Number,\n next: observed,\n restart: state\n }),\n error: providerError,\n implementationVersion: \"external-job/status/v1\",\n effects: { reads: [], writes: [], mode: \"expected\", onConflict: \"fail\" },\n tier: \"sealed\",\n idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`\n })\n const Collect = Action.make(`${tag}/collect`, {\n payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }) },\n success: options.success,\n error: Schema.Union([providerError, Again]),\n tier: \"irreversible\",\n idempotencyKey: ({ job }) => `${keyOf(job)}/collect`\n })\n const Cancel = Action.make(`${tag}/cancel`, {\n payload: observed,\n success: Schema.Void,\n tier: \"irreversible\",\n idempotencyKey: (job) => `${keyOf(job)}/cancel`\n })\n const Fail = Action.make(`${tag}/fail`, {\n payload: { job: observed, timedOut: Schema.Boolean },\n success: Schema.Never,\n error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])\n })\n const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean })\n const LaunchFailure = Action.make(`${tag}/launch-timeout`, {\n payload: state,\n success: Schema.Never,\n error: ExternalJobTimedOut\n })\n const launched = (job: State | Action.PlannedPayload<State>) =>\n Start.call(job as Action.PlannedPayload<State>).pipe(\n Node.bindPlanned((handle) =>\n observe.to({\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation,\n probe: job.probe,\n handle\n })\n )\n )\n // Pin the declared union through recursive bodies: cross-package inference\n // otherwise narrows the error schema to the provider-only generic E.\n const launch: Flow.Flow<string, typeof state, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/launch`,\n typeof state,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/launch`,\n {\n payload: state,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Ready.call(job).pipe(Node.branch({\n if: Node.capture(captures, (ready) => ready),\n then: () => launched(job),\n else: () => LaunchFailure.call(job)\n }))\n )\n }\n )\n const recover = (job: Observed, result: Action.PlannedPayload<{ restart: State; wakeAt: number }>) =>\n Cancel.call(job).pipe(Node.andThen(\n Node.succeed(job).pipe(Node.branch({\n if: Node.capture(captures, (current) => current.generation <= restarts),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),\n else: () => Fail.call({ job, timedOut: false })\n }))\n ))\n const observe: Flow.Flow<string, typeof observed, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/observe`,\n typeof observed,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/observe`,\n {\n payload: observed,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Probe.call(job).pipe(Node.bindPlanned((result) =>\n Node.succeed(result).pipe(Node.branch({\n if: Node.capture(captures, (value) => value.timedOut),\n then: () => Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),\n else: () =>\n Node.succeed(result.status).pipe(Node.branch({\n if: Node.capture(captures, (status) => status._tag === \"Running\"),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),\n else: (status) =>\n Node.succeed(status).pipe(Node.branch({\n if: Node.capture(captures, (value) => value._tag === \"Lost\"),\n then: () => recover(job, result),\n else: (exited) =>\n Collect.call({ job, exited: exited as unknown as Exited }).pipe(\n Node.catch({ error: Again, onFailure: () => recover(job, result) })\n )\n }))\n }))\n }))\n ))\n )\n }\n )\n const flow = Flow.make<Tag, P, A, typeof failure, Action.Requirement<string>>(tag, {\n payload: options.payload,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))\n })\n const toLayer = <R>(operations: Operations<typeof input.Type, H[\"Type\"], A[\"Type\"], E[\"Type\"], R>) => {\n const bindCancellation = Layer.effectDiscard(Effect.gen(function*() {\n const table = yield* Action.Implementations\n const context = yield* Effect.context<R>()\n const cancel = (handle: H[\"Type\"], key: string) =>\n operations.cancel(handle, key).pipe(Effect.provideContext(context))\n cancellations.set(table.add, cancel)\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n if (cancellations.get(table.add) === cancel) cancellations.delete(table.add)\n })\n )\n }))\n const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe))\n const layer = Layer.mergeAll(\n interpreter,\n bindCancellation,\n Sleep.layer,\n Initialize.toLayer(({ input }) =>\n Effect.gen(function*() {\n const instance = yield* active\n return {\n input,\n origin: instance.executionId,\n startedAt: Math.floor(yield* Clock.currentTimeMillis),\n generation: 1,\n probe: 1\n }\n })\n ),\n Start.toLayer((job) =>\n Effect.tap(operations.start(job.input, keyOf(job)), (handle) =>\n Effect.map(active, (value) => {\n value.current = { handle, key: keyOf(job) }\n }))\n ),\n Probe.toLayer((job) =>\n Effect.gen(function*() {\n let now = Math.floor(yield* Clock.currentTimeMillis)\n const deadline = job.startedAt + timeout\n let timedOut = now >= deadline\n const status = timedOut ? { _tag: \"Running\" as const } : yield* Effect.raceFirst(\n operations.status(job.handle, keyOf(job)),\n Effect.sleep(deadline - now).pipe(Effect.as({ _tag: \"Running\" as const }))\n )\n now = Math.floor(yield* Clock.currentTimeMillis)\n timedOut ||= now >= deadline\n const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023))\n return {\n status,\n timedOut,\n wakeAt: Math.min(deadline, Math.ceil(now + delay)),\n next: { ...job, probe: job.probe + 1 },\n restart: {\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation + 1,\n probe: 1\n }\n }\n }), { implementationVersion: \"external-job/status/v1\" }),\n Collect.toLayer(({ exited, job }) =>\n Effect.tap(operations.collect(job.handle, keyOf(job), exited), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Cancel.toLayer((job) =>\n Effect.tap(operations.cancel(job.handle, keyOf(job)), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Fail.toLayer(({ job, timedOut }) =>\n Effect.fail(\n timedOut\n ? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })\n : new ExternalJobLost({\n key: keyOf(job),\n message: `Job ${keyOf(job)} exhausted its replacement generations`\n })\n )\n ),\n Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)),\n LaunchFailure.toLayer((job) =>\n Effect.fail(\n new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` })\n )\n )\n )\n // Active is supplied by the execution middleware, never by the host.\n return layer as Layer.Layer<\n Layer.Success<typeof layer>,\n Layer.Error<typeof layer>,\n Exclude<Layer.Services<typeof layer>, Active>\n >\n }\n // A job requires its own execution scope and identity even when composed\n // through call; reuse the existing child boundary rather than inline it.\n const call: typeof flow.child = (payload) => flow.child(payload)\n return Object.assign(flow, { call, toLayer }) as {\n readonly call: typeof call\n readonly toLayer: typeof toLayer\n } & typeof flow\n}\n"]}
|