@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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private flow construction shared by declarations and action registration.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
7
|
+
import { Sha256 } from "@smthrs/crypto";
|
|
8
|
+
import * as Node from "@smthrs/plan/Node";
|
|
9
|
+
import * as Cause from "effect/Cause";
|
|
10
|
+
import * as Context from "effect/Context";
|
|
11
|
+
import * as Crypto from "effect/Crypto";
|
|
12
|
+
import * as Effect from "effect/Effect";
|
|
13
|
+
import * as Schema from "effect/Schema";
|
|
14
|
+
import { ExecutionIdentityConflict } from "../FlowRuntime/ExecutionIdentityConflict.js";
|
|
15
|
+
import { FlowRuntime } from "../FlowRuntime/FlowRuntime.js";
|
|
16
|
+
import * as DeclarationSite from "../internal/DeclarationSite.js";
|
|
17
|
+
import { CurrentExecutionIds } from "./ExecutionIds.js";
|
|
18
|
+
import { withRollback } from "./Runtime.js";
|
|
19
|
+
import { TypeId } from "./TypeId.js";
|
|
20
|
+
/**
|
|
21
|
+
* The identity of an invocation that named no `executionId`: the flow's own
|
|
22
|
+
* declared key when it has one, and the ambient source otherwise.
|
|
23
|
+
*
|
|
24
|
+
* A declared key wins over the ambient source because it is the narrower
|
|
25
|
+
* statement — this author said what makes two invocations of THIS flow the
|
|
26
|
+
* same — where the source is the host's blanket answer for every flow it
|
|
27
|
+
* drives.
|
|
28
|
+
*
|
|
29
|
+
* The tag and declared key are JSON-tuple framed before hashing. Their strings
|
|
30
|
+
* are used exactly as given and encoded as UTF-8, with no Unicode
|
|
31
|
+
* normalization. This preimage encoding freezes at rc.0.
|
|
32
|
+
*/
|
|
33
|
+
const makeExecutionIdFromPayload = (self, payload) => {
|
|
34
|
+
const idempotencyKey = self.idempotencyKey;
|
|
35
|
+
return idempotencyKey === undefined
|
|
36
|
+
? Effect.flatMap(CurrentExecutionIds, (source) => source.mint(self, payload))
|
|
37
|
+
// The JSON tuple prevents delimiter splicing. This exact framing freezes at rc.0.
|
|
38
|
+
: Schema.decodeUnknownEffect(Sha256)(JSON.stringify([self._tag, idempotencyKey(payload)])).pipe(Effect.orDie);
|
|
39
|
+
};
|
|
40
|
+
const resolveExecutionId = (self, payload, executionId) => executionId === undefined
|
|
41
|
+
? makeExecutionIdFromPayload(self, payload)
|
|
42
|
+
: Effect.succeed(executionId);
|
|
43
|
+
const Proto = {
|
|
44
|
+
[TypeId]: TypeId,
|
|
45
|
+
annotate(tag, value) {
|
|
46
|
+
return DeclarationSite.annotate(makeProto({
|
|
47
|
+
_tag: this._tag,
|
|
48
|
+
description: this.description,
|
|
49
|
+
model: this.model,
|
|
50
|
+
effort: this.effort,
|
|
51
|
+
system: this.system,
|
|
52
|
+
chat: this.chat,
|
|
53
|
+
flows: this.flows,
|
|
54
|
+
prompt: this.prompt,
|
|
55
|
+
action: this.action,
|
|
56
|
+
payloadSchema: this.payloadSchema,
|
|
57
|
+
successSchema: this.successSchema,
|
|
58
|
+
errorSchema: this.errorSchema,
|
|
59
|
+
annotations: Context.add(this.annotations, tag, value),
|
|
60
|
+
body: this.body,
|
|
61
|
+
idempotencyKey: this.idempotencyKey,
|
|
62
|
+
suspendedRetryPolicy: this.suspendedRetryPolicy,
|
|
63
|
+
maxRounds: this.maxRounds,
|
|
64
|
+
deadline: this.deadline
|
|
65
|
+
}), DeclarationSite.declaredAt(this));
|
|
66
|
+
},
|
|
67
|
+
annotateMerge(context) {
|
|
68
|
+
return DeclarationSite.annotate(makeProto({
|
|
69
|
+
_tag: this._tag,
|
|
70
|
+
description: this.description,
|
|
71
|
+
model: this.model,
|
|
72
|
+
effort: this.effort,
|
|
73
|
+
system: this.system,
|
|
74
|
+
chat: this.chat,
|
|
75
|
+
flows: this.flows,
|
|
76
|
+
prompt: this.prompt,
|
|
77
|
+
action: this.action,
|
|
78
|
+
payloadSchema: this.payloadSchema,
|
|
79
|
+
successSchema: this.successSchema,
|
|
80
|
+
errorSchema: this.errorSchema,
|
|
81
|
+
annotations: Context.merge(this.annotations, context),
|
|
82
|
+
body: this.body,
|
|
83
|
+
idempotencyKey: this.idempotencyKey,
|
|
84
|
+
suspendedRetryPolicy: this.suspendedRetryPolicy,
|
|
85
|
+
maxRounds: this.maxRounds,
|
|
86
|
+
deadline: this.deadline
|
|
87
|
+
}), DeclarationSite.declaredAt(this));
|
|
88
|
+
},
|
|
89
|
+
call(payload) {
|
|
90
|
+
return Node.flowCall(this, this._tag, "inline", payload);
|
|
91
|
+
},
|
|
92
|
+
child(payload) {
|
|
93
|
+
return Node.flowCall(this, this._tag, "boundary", payload);
|
|
94
|
+
},
|
|
95
|
+
to(payload) {
|
|
96
|
+
return Node.flowCall(this, this._tag, "handoff", payload);
|
|
97
|
+
},
|
|
98
|
+
execute(fields, opts) {
|
|
99
|
+
// Caller input that fails the payload schema is data, not programmer
|
|
100
|
+
// wiring, so it FAILS with the schema's typed `SchemaError` — carrying
|
|
101
|
+
// the offending field path — instead of dying with the raw constructor
|
|
102
|
+
// throw `payloadSchema.make` would produce.
|
|
103
|
+
return this.payloadSchema.makeEffect(fields).pipe(Effect.mapError((issue) => new Schema.SchemaError(issue)), Effect.flatMap((payload) => Effect.flatMap(resolveExecutionId(this, payload, opts?.executionId), (executionId) => Effect.flatMap(FlowRuntime, (engine) => Effect.andThen(Effect.annotateCurrentSpan({ executionId }), engine.execute(this, {
|
|
104
|
+
executionId,
|
|
105
|
+
payload,
|
|
106
|
+
discard: opts?.discard,
|
|
107
|
+
suspendedRetryPolicy: this.suspendedRetryPolicy
|
|
108
|
+
}).pipe(Effect.catchCause((cause) => {
|
|
109
|
+
const reason = cause.reasons.length === 1 ? cause.reasons.find(Cause.isDieReason) : undefined;
|
|
110
|
+
return reason?.defect instanceof ExecutionIdentityConflict
|
|
111
|
+
? Effect.fail(reason.defect)
|
|
112
|
+
: Effect.failCause(cause);
|
|
113
|
+
}))))))).pipe(Effect.withSpan(`${this._tag}.execute`, {}, { captureStackTrace: false }));
|
|
114
|
+
},
|
|
115
|
+
start(payload) {
|
|
116
|
+
return Effect.flatMap(Crypto.Crypto, (crypto) => Effect.flatMap(Effect.orDie(crypto.randomUUIDv4()), (executionId) => this.execute(payload, { executionId, discard: true })));
|
|
117
|
+
},
|
|
118
|
+
ensure(payload, options) {
|
|
119
|
+
return Schema.decodeUnknownEffect(Schema.String)(options.key).pipe(Effect.flatMap((key) => Effect.orDie(Schema.decodeUnknownEffect(Sha256)(JSON.stringify([this._tag, key])))), Effect.flatMap((executionId) => this.execute(payload, { executionId, discard: true })));
|
|
120
|
+
},
|
|
121
|
+
poll(executionId) {
|
|
122
|
+
return Effect.flatMap(FlowRuntime, (engine) => engine.poll(this, executionId)).pipe(Effect.withSpan(`${this._tag}.poll`, { attributes: { executionId } }, { captureStackTrace: false }));
|
|
123
|
+
},
|
|
124
|
+
interrupt(executionId) {
|
|
125
|
+
return Effect.flatMap(FlowRuntime, (engine) => engine.interrupt(this, executionId)).pipe(Effect.withSpan(`${this._tag}.interrupt`, { attributes: { executionId } }, { captureStackTrace: false }));
|
|
126
|
+
},
|
|
127
|
+
resume(executionId) {
|
|
128
|
+
return Effect.flatMap(FlowRuntime, (engine) => engine.resume(this, executionId)).pipe(Effect.withSpan(`${this._tag}.resume`, { attributes: { executionId } }, { captureStackTrace: false }));
|
|
129
|
+
},
|
|
130
|
+
executionId(payload) {
|
|
131
|
+
return Effect.flatMap(
|
|
132
|
+
// The channel stays never: precomputing callers must validate first, and an invalid payload dies here.
|
|
133
|
+
Effect.orDie(this.payloadSchema.makeEffect(payload)), (payload) => makeExecutionIdFromPayload(this, payload));
|
|
134
|
+
},
|
|
135
|
+
withRollback: ((...args) => withRollback(...args))
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Builds the private prototype from normalized declaration data.
|
|
139
|
+
*
|
|
140
|
+
* @since 1.0.0
|
|
141
|
+
* @private
|
|
142
|
+
*/
|
|
143
|
+
export const makeProto = (options) => {
|
|
144
|
+
function Flow() { }
|
|
145
|
+
Object.setPrototypeOf(Flow, Proto);
|
|
146
|
+
Object.assign(Flow, options);
|
|
147
|
+
return Flow;
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/Flow/internal.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Private flow construction shared by declarations and action registration.\n *\n * @since 1.0.0\n * @private\n */\n\nimport { Sha256 } from \"@smthrs/crypto\"\nimport * as Node from \"@smthrs/plan/Node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Context from \"effect/Context\"\nimport * as Crypto from \"effect/Crypto\"\nimport type * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport { ExecutionIdentityConflict } from \"../FlowRuntime/ExecutionIdentityConflict.ts\"\nimport { FlowRuntime } from \"../FlowRuntime/FlowRuntime.ts\"\nimport * as DeclarationSite from \"../internal/DeclarationSite.ts\"\nimport type * as RetryPolicy from \"../RetryPolicy.ts\"\nimport { CurrentExecutionIds } from \"./ExecutionIds.ts\"\nimport type { Any, AnyStructSchema, AnyWithProps, BodySuccess, DeclarationMetadata, Flow } from \"./Flow.ts\"\nimport type { To } from \"./Outcome.ts\"\nimport { withRollback } from \"./Runtime.ts\"\nimport { TypeId } from \"./TypeId.ts\"\n\n/**\n * The identity of an invocation that named no `executionId`: the flow's own\n * declared key when it has one, and the ambient source otherwise.\n *\n * A declared key wins over the ambient source because it is the narrower\n * statement — this author said what makes two invocations of THIS flow the\n * same — where the source is the host's blanket answer for every flow it\n * drives.\n *\n * The tag and declared key are JSON-tuple framed before hashing. Their strings\n * are used exactly as given and encoded as UTF-8, with no Unicode\n * normalization. This preimage encoding freezes at rc.0.\n */\nconst makeExecutionIdFromPayload = (\n self: AnyWithProps,\n payload: unknown\n): Effect.Effect<string, never, any> => {\n const idempotencyKey = self.idempotencyKey\n return idempotencyKey === undefined\n ? Effect.flatMap(CurrentExecutionIds, (source) => source.mint(self, payload))\n // The JSON tuple prevents delimiter splicing. This exact framing freezes at rc.0.\n : Schema.decodeUnknownEffect(Sha256)(JSON.stringify([self._tag, idempotencyKey(payload)])).pipe(Effect.orDie)\n}\n\nconst resolveExecutionId = (\n self: AnyWithProps,\n payload: unknown,\n executionId: string | undefined\n): Effect.Effect<string, never, any> =>\n executionId === undefined\n ? makeExecutionIdFromPayload(self, payload)\n : Effect.succeed(executionId)\n\nconst Proto = {\n [TypeId]: TypeId,\n annotate(this: AnyWithProps, tag: Context.Key<any, any>, value: any) {\n return DeclarationSite.annotate(\n makeProto({\n _tag: this._tag,\n description: this.description,\n model: this.model,\n effort: this.effort,\n system: this.system,\n chat: this.chat,\n flows: this.flows,\n prompt: this.prompt,\n action: this.action,\n payloadSchema: this.payloadSchema,\n successSchema: this.successSchema,\n errorSchema: this.errorSchema,\n annotations: Context.add(this.annotations, tag, value),\n body: this.body,\n idempotencyKey: this.idempotencyKey,\n suspendedRetryPolicy: this.suspendedRetryPolicy,\n maxRounds: this.maxRounds,\n deadline: this.deadline\n }),\n DeclarationSite.declaredAt(this)\n )\n },\n annotateMerge(this: AnyWithProps, context: Context.Context<any>) {\n return DeclarationSite.annotate(\n makeProto({\n _tag: this._tag,\n description: this.description,\n model: this.model,\n effort: this.effort,\n system: this.system,\n chat: this.chat,\n flows: this.flows,\n prompt: this.prompt,\n action: this.action,\n payloadSchema: this.payloadSchema,\n successSchema: this.successSchema,\n errorSchema: this.errorSchema,\n annotations: Context.merge(this.annotations, context),\n body: this.body,\n idempotencyKey: this.idempotencyKey,\n suspendedRetryPolicy: this.suspendedRetryPolicy,\n maxRounds: this.maxRounds,\n deadline: this.deadline\n }),\n DeclarationSite.declaredAt(this)\n )\n },\n call(this: AnyWithProps, payload: unknown) {\n return Node.flowCall(this, this._tag, \"inline\", payload)\n },\n child(this: AnyWithProps, payload: unknown) {\n return Node.flowCall(this, this._tag, \"boundary\", payload)\n },\n to(this: AnyWithProps, payload: unknown): Node.Node<To<unknown>> {\n return Node.flowCall(this, this._tag, \"handoff\", payload)\n },\n execute<const Discard extends boolean = false>(\n this: AnyWithProps,\n fields: any,\n opts?: {\n readonly discard?: Discard\n readonly executionId?: string | undefined\n } | undefined\n ) {\n // Caller input that fails the payload schema is data, not programmer\n // wiring, so it FAILS with the schema's typed `SchemaError` — carrying\n // the offending field path — instead of dying with the raw constructor\n // throw `payloadSchema.make` would produce.\n return this.payloadSchema.makeEffect(fields).pipe(\n Effect.mapError((issue) => new Schema.SchemaError(issue)),\n Effect.flatMap((payload) =>\n Effect.flatMap(\n resolveExecutionId(this, payload, opts?.executionId),\n (executionId) =>\n Effect.flatMap(FlowRuntime, (engine) =>\n Effect.andThen(\n Effect.annotateCurrentSpan({ executionId }),\n engine.execute(this as any, {\n executionId,\n payload,\n discard: opts?.discard,\n suspendedRetryPolicy: this.suspendedRetryPolicy\n }).pipe(Effect.catchCause((cause) => {\n const reason = cause.reasons.length === 1 ? cause.reasons.find(Cause.isDieReason) : undefined\n return reason?.defect instanceof ExecutionIdentityConflict\n ? Effect.fail(reason.defect)\n : Effect.failCause(cause)\n }))\n ))\n )\n )\n ).pipe(\n Effect.withSpan(\n `${this._tag}.execute`,\n {},\n { captureStackTrace: false }\n )\n ) as any\n },\n start(this: AnyWithProps, payload: unknown) {\n return Effect.flatMap(\n Crypto.Crypto,\n (crypto) =>\n Effect.flatMap(\n Effect.orDie(crypto.randomUUIDv4()),\n (executionId) => this.execute(payload, { executionId, discard: true })\n )\n )\n },\n ensure(this: AnyWithProps, payload: unknown, options: { readonly key: string }) {\n return Schema.decodeUnknownEffect(Schema.String)(options.key).pipe(\n Effect.flatMap((key) => Effect.orDie(Schema.decodeUnknownEffect(Sha256)(JSON.stringify([this._tag, key])))),\n Effect.flatMap((executionId) => this.execute(payload, { executionId, discard: true }))\n )\n },\n poll(this: Flow<string, AnyStructSchema, Schema.Top, Schema.Top, any>, executionId: string) {\n return Effect.flatMap(FlowRuntime, (engine) => engine.poll(this, executionId)).pipe(\n Effect.withSpan(`${this._tag}.poll`, { attributes: { executionId } }, { captureStackTrace: false })\n )\n },\n interrupt(this: AnyWithProps, executionId: string) {\n return Effect.flatMap(FlowRuntime, (engine) => engine.interrupt(this, executionId)).pipe(\n Effect.withSpan(`${this._tag}.interrupt`, { attributes: { executionId } }, { captureStackTrace: false })\n )\n },\n resume(this: Flow<string, AnyStructSchema, Schema.Top, Schema.Top, any>, executionId: string) {\n return Effect.flatMap(FlowRuntime, (engine) => engine.resume(this, executionId)).pipe(\n Effect.withSpan(`${this._tag}.resume`, { attributes: { executionId } }, { captureStackTrace: false })\n )\n },\n executionId(this: AnyWithProps, payload: any) {\n return Effect.flatMap(\n // The channel stays never: precomputing callers must validate first, and an invalid payload dies here.\n Effect.orDie(this.payloadSchema.makeEffect(payload)),\n (payload) => makeExecutionIdFromPayload(this, payload)\n )\n },\n withRollback: ((...args: ReadonlyArray<any>) => (withRollback as any)(...args))\n}\n\n/**\n * Builds the private prototype from normalized declaration data.\n *\n * @since 1.0.0\n * @private\n */\nexport const makeProto = <\n const Tag extends string,\n Payload extends AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top,\n Requires\n>(\n options: DeclarationMetadata & {\n readonly _tag: Tag\n readonly description?: string | undefined\n readonly payloadSchema: Payload\n readonly successSchema: Success\n readonly errorSchema: Error\n readonly annotations: Context.Context<never>\n readonly body: (payload: Payload[\"Type\"]) => Node.Node<BodySuccess<Success[\"Type\"]>, Error[\"Type\"], Requires>\n readonly prompt?: ((payload: Payload[\"Type\"]) => string) | undefined\n readonly action?: Any[\"action\"] | undefined\n readonly idempotencyKey?: ((payload: Payload[\"Type\"]) => string) | undefined\n readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined\n readonly maxRounds?: number | undefined\n readonly deadline?: Duration.Duration | undefined\n }\n): Flow<Tag, Payload, Success, Error, Requires> => {\n function Flow() {}\n Object.setPrototypeOf(Flow, Proto)\n Object.assign(Flow, options)\n return Flow as any\n}\n"]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constructs executable flow declarations from schema and policy data.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import type * as Effects from "@smthrs/plan/Effects";
|
|
7
|
+
import * as Node from "@smthrs/plan/Node";
|
|
8
|
+
import type * as Context from "effect/Context";
|
|
9
|
+
import * as Duration from "effect/Duration";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
import type * as RetryPolicy from "../RetryPolicy.ts";
|
|
12
|
+
import type { Any, AnyStructSchema, BodySuccess, DeclarationMetadata, Flow, PromptFlow } from "./Flow.ts";
|
|
13
|
+
/**
|
|
14
|
+
* The declaration data every flow takes beside its body.
|
|
15
|
+
*
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
interface MakeOptions<Payload extends Schema.Struct.Fields | AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top> extends DeclarationMetadata {
|
|
19
|
+
readonly payload: Payload;
|
|
20
|
+
/**
|
|
21
|
+
* Native declaration whose source location this reconstructed flow retains.
|
|
22
|
+
* A source with no recorded location preserves that absence. This affects
|
|
23
|
+
* diagnostics only, never identity; the new flow keeps its own body and calls.
|
|
24
|
+
*/
|
|
25
|
+
readonly declaredFrom?: object | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* One sentence saying what this flow does, read by a catalog that lists it.
|
|
28
|
+
*/
|
|
29
|
+
readonly description?: string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* The capability ceiling this flow's body runs under, as string literals.
|
|
32
|
+
*
|
|
33
|
+
* It is the same ceiling {@link Annotations.Capabilities} carries, and
|
|
34
|
+
* declaring it here is what makes it READABLE without importing the module:
|
|
35
|
+
* a catalog projects a discovered flow's authority from the declaration, and
|
|
36
|
+
* an annotation built at run time is invisible to that projection.
|
|
37
|
+
*/
|
|
38
|
+
readonly capabilities?: ReadonlyArray<string> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* The effect envelope this flow's body runs under, as a literal.
|
|
41
|
+
*
|
|
42
|
+
* It is the same declaration {@link Annotations.EffectEnvelope} carries, and
|
|
43
|
+
* declaring it here is what makes it READABLE without importing the module,
|
|
44
|
+
* exactly as `capabilities` is: a catalog projects a discovered flow's
|
|
45
|
+
* authority from the source text of this literal, and an annotation built at
|
|
46
|
+
* run time is invisible to that projection.
|
|
47
|
+
*
|
|
48
|
+
* {@link module:Graph.build} refuses a composition beneath this flow that
|
|
49
|
+
* reads or writes outside the envelope, loosens `hermetic` to `expected`, or
|
|
50
|
+
* raises the tier. `reads` and `writes` are normalized to sorted,
|
|
51
|
+
* duplicate-free arrays, so two spellings of one envelope are one envelope.
|
|
52
|
+
*/
|
|
53
|
+
readonly effects?: Effects.MakeOptions | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Whether a catalog may offer this flow to a model, as a literal. Defaults
|
|
56
|
+
* to `true`.
|
|
57
|
+
*
|
|
58
|
+
* It is the same statement {@link Annotations.ModelInvocable} carries, and
|
|
59
|
+
* declaring it here is what makes it READABLE without importing the module,
|
|
60
|
+
* exactly as `capabilities` and `effects` are: a registry projects a
|
|
61
|
+
* discovered flow's visibility from the source text of this literal onto the
|
|
62
|
+
* descriptor it lists, and an annotation built at run time is invisible to
|
|
63
|
+
* that projection.
|
|
64
|
+
*
|
|
65
|
+
* Declare `false` when the actions this flow's body calls are implemented by
|
|
66
|
+
* one host only. The file is discoverable wherever it sits, so a catalog
|
|
67
|
+
* elsewhere would otherwise teach an agent a call with no implementation to
|
|
68
|
+
* reach.
|
|
69
|
+
*/
|
|
70
|
+
readonly modelInvocable?: boolean | undefined;
|
|
71
|
+
readonly idempotencyKey?: ((payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload> : Payload["Type"]) => string) | undefined;
|
|
72
|
+
readonly success?: Success;
|
|
73
|
+
readonly error?: Error;
|
|
74
|
+
readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* The round budget a trampoline lineage started from this flow runs under.
|
|
77
|
+
*/
|
|
78
|
+
readonly maxRounds?: number | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* How long one execution may take, counted from its journaled first start.
|
|
81
|
+
* A positive finite duration of at most `Number.MAX_SAFE_INTEGER`
|
|
82
|
+
* milliseconds; see {@link Flow.deadline}.
|
|
83
|
+
*/
|
|
84
|
+
readonly deadline?: Duration.Input | undefined;
|
|
85
|
+
readonly annotations?: Context.Context<never>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The pure plan-time body, typed with the decoded payload.
|
|
89
|
+
*
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
type Body<Payload extends Schema.Struct.Fields | AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top, Requires> = (payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload> : Payload["Type"]) => Node.Node<BodySuccess<Success["Type"]>, Error["Type"], Requires>;
|
|
93
|
+
/**
|
|
94
|
+
* The payload schema a declaration's `payload` field stands for.
|
|
95
|
+
*
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
type PayloadSchemaOf<Payload extends Schema.Struct.Fields | AnyStructSchema> = Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload;
|
|
99
|
+
/**
|
|
100
|
+
* Whether a value is a flow this package made.
|
|
101
|
+
*
|
|
102
|
+
* The check is the runtime type id, not the shape: a host that loads a module
|
|
103
|
+
* and finds a default export has to decide whether it holds a flow before it
|
|
104
|
+
* reads anything off it, and a structural guess would accept a look-alike from
|
|
105
|
+
* another flow model.
|
|
106
|
+
*
|
|
107
|
+
* @category predicates
|
|
108
|
+
* @since 0.1.0
|
|
109
|
+
*/
|
|
110
|
+
export declare const isFlow: (value: unknown) => value is Any;
|
|
111
|
+
/**
|
|
112
|
+
* Creates a durable flow with one plan-time body or a typed prompt renderer.
|
|
113
|
+
* A prompt lowers to one ordinary action implemented by the host; neither
|
|
114
|
+
* construction nor planning renders it. Model metadata is interpreted by the
|
|
115
|
+
* host and adds no execution model to this package.
|
|
116
|
+
*
|
|
117
|
+
* Invocation IDs are caller-selected or opt-in deterministic IDs derived
|
|
118
|
+
* from the flow tag and idempotency key.
|
|
119
|
+
*
|
|
120
|
+
* @category constructors
|
|
121
|
+
* @since 0.1.0
|
|
122
|
+
*/
|
|
123
|
+
export declare const make: {
|
|
124
|
+
<const Tag extends string, Payload extends Schema.Struct.Fields | AnyStructSchema, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never, Requires = never>(tag: Tag, options: MakeOptions<Payload, Success, Error> & {
|
|
125
|
+
readonly body: Body<Payload, Success, Error, Requires>;
|
|
126
|
+
readonly prompt?: never;
|
|
127
|
+
}): Flow<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>;
|
|
128
|
+
<const Tag extends string, Payload extends Schema.Struct.Fields | AnyStructSchema, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never>(tag: Tag, options: MakeOptions<Payload, Success, Error> & {
|
|
129
|
+
readonly prompt: (payload: PayloadSchemaOf<Payload>["Type"]) => string;
|
|
130
|
+
readonly body?: never;
|
|
131
|
+
readonly implementationVersion?: string | undefined;
|
|
132
|
+
}): PromptFlow<Tag, PayloadSchemaOf<Payload>, Success, Error>;
|
|
133
|
+
};
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=make.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/Flow/make.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Deep reviewed and polished by a human on 2026-08-10.
|
|
2
|
+
import * as Node from "@smthrs/plan/Node";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import * as Predicate from "effect/Predicate";
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
import * as Action from "../Action/make.js";
|
|
8
|
+
import { lowerDeclarations } from "../internal/Declarations.js";
|
|
9
|
+
import * as DeclarationSite from "../internal/DeclarationSite.js";
|
|
10
|
+
import { makeProto } from "./internal.js";
|
|
11
|
+
import { TypeId } from "./TypeId.js";
|
|
12
|
+
/**
|
|
13
|
+
* Whether a value is a flow this package made.
|
|
14
|
+
*
|
|
15
|
+
* The check is the runtime type id, not the shape: a host that loads a module
|
|
16
|
+
* and finds a default export has to decide whether it holds a flow before it
|
|
17
|
+
* reads anything off it, and a structural guess would accept a look-alike from
|
|
18
|
+
* another flow model.
|
|
19
|
+
*
|
|
20
|
+
* @category predicates
|
|
21
|
+
* @since 0.1.0
|
|
22
|
+
*/
|
|
23
|
+
export const isFlow = (value) => Predicate.hasProperty(value, TypeId);
|
|
24
|
+
/**
|
|
25
|
+
* Creates a durable flow with one plan-time body or a typed prompt renderer.
|
|
26
|
+
* A prompt lowers to one ordinary action implemented by the host; neither
|
|
27
|
+
* construction nor planning renders it. Model metadata is interpreted by the
|
|
28
|
+
* host and adds no execution model to this package.
|
|
29
|
+
*
|
|
30
|
+
* Invocation IDs are caller-selected or opt-in deterministic IDs derived
|
|
31
|
+
* from the flow tag and idempotency key.
|
|
32
|
+
*
|
|
33
|
+
* @category constructors
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
*/
|
|
36
|
+
export const make = (tag, options) => {
|
|
37
|
+
if (typeof tag !== "string" || tag.trim().length === 0) {
|
|
38
|
+
throw new TypeError("Flow.make: tag must be a non-empty string");
|
|
39
|
+
}
|
|
40
|
+
if ((options.body === undefined && typeof options.prompt !== "function") ||
|
|
41
|
+
(options.prompt === undefined && typeof options.body !== "function") ||
|
|
42
|
+
(options.body !== undefined && options.prompt !== undefined)) {
|
|
43
|
+
throw new TypeError(`Flow.make: "${tag}" must declare exactly one function: body or prompt`);
|
|
44
|
+
}
|
|
45
|
+
// Invalid static configuration is a programmer error thrown at construction,
|
|
46
|
+
// the same contract as effect's own `ExecutionPlan.make` (which throws on
|
|
47
|
+
// `attempts <= 0`); `RangeError` matches effect's range-violation throws.
|
|
48
|
+
if (options.maxRounds !== undefined &&
|
|
49
|
+
(!Number.isSafeInteger(options.maxRounds) || options.maxRounds < 1)) {
|
|
50
|
+
throw new RangeError(`Flow.make: "${tag}" maxRounds must be a positive safe integer`);
|
|
51
|
+
}
|
|
52
|
+
const deadline = options.deadline === undefined
|
|
53
|
+
? undefined
|
|
54
|
+
: Option.getOrUndefined(Duration.fromInput(options.deadline));
|
|
55
|
+
if (options.deadline !== undefined &&
|
|
56
|
+
(deadline === undefined || !Duration.isFinite(deadline) || Duration.toMillis(deadline) <= 0)) {
|
|
57
|
+
throw new RangeError(`Flow.make: "${tag}" deadline must be a positive finite duration`);
|
|
58
|
+
}
|
|
59
|
+
// The durable clock that enforces a deadline is due at its start plus the
|
|
60
|
+
// deadline, and a store records that due time as a safe integer.
|
|
61
|
+
if (deadline !== undefined && Duration.toMillis(deadline) > Number.MAX_SAFE_INTEGER) {
|
|
62
|
+
throw new RangeError(`Flow.make: "${tag}" deadline must be at most ${Number.MAX_SAFE_INTEGER} ms`);
|
|
63
|
+
}
|
|
64
|
+
// Captured here, where the stack still names the author's file, and carried
|
|
65
|
+
// as a non-enumerable property so no digest can see it
|
|
66
|
+
// (`internal/DeclarationSite.ts`).
|
|
67
|
+
const site = options.declaredFrom === undefined
|
|
68
|
+
? DeclarationSite.capture()
|
|
69
|
+
: DeclarationSite.declaredAt(options.declaredFrom);
|
|
70
|
+
const payloadSchema = (Schema.isSchema(options.payload)
|
|
71
|
+
? options.payload
|
|
72
|
+
: Schema.Struct(options.payload));
|
|
73
|
+
const successSchema = options.success ?? Schema.Void;
|
|
74
|
+
const errorSchema = options.error ?? Schema.Never;
|
|
75
|
+
const annotations = lowerDeclarations(options);
|
|
76
|
+
const action = options.prompt === undefined ? undefined : Action.make(`${tag}/prompt`, {
|
|
77
|
+
payload: payloadSchema,
|
|
78
|
+
success: successSchema,
|
|
79
|
+
error: errorSchema,
|
|
80
|
+
capabilities: options.capabilities,
|
|
81
|
+
effects: options.effects,
|
|
82
|
+
annotations,
|
|
83
|
+
tier: options.effects?.tier ?? "irreversible",
|
|
84
|
+
implementationVersion: options.implementationVersion,
|
|
85
|
+
declaredFrom: options.declaredFrom
|
|
86
|
+
});
|
|
87
|
+
// The adapter only describes one dispatch. Prompt rendering belongs to the
|
|
88
|
+
// host implementation and its reviewed source/implementation identity.
|
|
89
|
+
const body = action === undefined ? options.body : Node.capture({ action: action.name, implementationVersion: action.implementationVersion ?? null }, (payload) => action.call(payload));
|
|
90
|
+
return DeclarationSite.annotate(makeProto({
|
|
91
|
+
_tag: tag,
|
|
92
|
+
description: options.description,
|
|
93
|
+
payloadSchema,
|
|
94
|
+
successSchema,
|
|
95
|
+
errorSchema,
|
|
96
|
+
annotations,
|
|
97
|
+
model: options.model,
|
|
98
|
+
effort: options.effort,
|
|
99
|
+
system: options.system,
|
|
100
|
+
chat: options.chat,
|
|
101
|
+
flows: options.flows,
|
|
102
|
+
prompt: options.prompt,
|
|
103
|
+
action,
|
|
104
|
+
body: body,
|
|
105
|
+
idempotencyKey: options.idempotencyKey,
|
|
106
|
+
suspendedRetryPolicy: options.suspendedRetryPolicy,
|
|
107
|
+
maxRounds: options.maxRounds,
|
|
108
|
+
deadline
|
|
109
|
+
}), site);
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=make.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../../src/Flow/make.ts"],"names":[],"mappings":"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","sourcesContent":["// Deep reviewed and polished by a human on 2026-08-10.\n\n/**\n * Constructs executable flow declarations from schema and policy data.\n *\n * @since 0.1.0\n */\n\nimport type * as Effects from \"@smthrs/plan/Effects\"\nimport * as Node from \"@smthrs/plan/Node\"\nimport type * as Context from \"effect/Context\"\nimport * as Duration from \"effect/Duration\"\nimport * as Option from \"effect/Option\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Schema from \"effect/Schema\"\nimport type { Declared } from \"../Action/Action.ts\"\nimport * as Action from \"../Action/make.ts\"\nimport { lowerDeclarations } from \"../internal/Declarations.ts\"\nimport * as DeclarationSite from \"../internal/DeclarationSite.ts\"\nimport type * as RetryPolicy from \"../RetryPolicy.ts\"\nimport type { Any, AnyStructSchema, BodySuccess, DeclarationMetadata, Flow, PromptFlow } from \"./Flow.ts\"\nimport { makeProto } from \"./internal.ts\"\nimport { TypeId } from \"./TypeId.ts\"\n\n/**\n * The declaration data every flow takes beside its body.\n *\n * @private\n */\ninterface MakeOptions<\n Payload extends Schema.Struct.Fields | AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top\n> extends DeclarationMetadata {\n readonly payload: Payload\n /**\n * Native declaration whose source location this reconstructed flow retains.\n * A source with no recorded location preserves that absence. This affects\n * diagnostics only, never identity; the new flow keeps its own body and calls.\n */\n readonly declaredFrom?: object | undefined\n /**\n * One sentence saying what this flow does, read by a catalog that lists it.\n */\n readonly description?: string | undefined\n /**\n * The capability ceiling this flow's body runs under, as string literals.\n *\n * It is the same ceiling {@link Annotations.Capabilities} carries, and\n * declaring it here is what makes it READABLE without importing the module:\n * a catalog projects a discovered flow's authority from the declaration, and\n * an annotation built at run time is invisible to that projection.\n */\n readonly capabilities?: ReadonlyArray<string> | undefined\n /**\n * The effect envelope this flow's body runs under, as a literal.\n *\n * It is the same declaration {@link Annotations.EffectEnvelope} carries, and\n * declaring it here is what makes it READABLE without importing the module,\n * exactly as `capabilities` is: a catalog projects a discovered flow's\n * authority from the source text of this literal, and an annotation built at\n * run time is invisible to that projection.\n *\n * {@link module:Graph.build} refuses a composition beneath this flow that\n * reads or writes outside the envelope, loosens `hermetic` to `expected`, or\n * raises the tier. `reads` and `writes` are normalized to sorted,\n * duplicate-free arrays, so two spellings of one envelope are one envelope.\n */\n readonly effects?: Effects.MakeOptions | undefined\n /**\n * Whether a catalog may offer this flow to a model, as a literal. Defaults\n * to `true`.\n *\n * It is the same statement {@link Annotations.ModelInvocable} carries, and\n * declaring it here is what makes it READABLE without importing the module,\n * exactly as `capabilities` and `effects` are: a registry projects a\n * discovered flow's visibility from the source text of this literal onto the\n * descriptor it lists, and an annotation built at run time is invisible to\n * that projection.\n *\n * Declare `false` when the actions this flow's body calls are implemented by\n * one host only. The file is discoverable wherever it sits, so a catalog\n * elsewhere would otherwise teach an agent a call with no implementation to\n * reach.\n */\n readonly modelInvocable?: boolean | undefined\n readonly idempotencyKey?:\n | ((\n payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload>\n : Payload[\"Type\"]\n ) => string)\n | undefined\n readonly success?: Success\n readonly error?: Error\n readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined\n /**\n * The round budget a trampoline lineage started from this flow runs under.\n */\n readonly maxRounds?: number | undefined\n /**\n * How long one execution may take, counted from its journaled first start.\n * A positive finite duration of at most `Number.MAX_SAFE_INTEGER`\n * milliseconds; see {@link Flow.deadline}.\n */\n readonly deadline?: Duration.Input | undefined\n readonly annotations?: Context.Context<never>\n}\n\n/**\n * The pure plan-time body, typed with the decoded payload.\n *\n * @private\n */\ntype Body<\n Payload extends Schema.Struct.Fields | AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top,\n Requires\n> = (\n payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload> : Payload[\"Type\"]\n) => Node.Node<BodySuccess<Success[\"Type\"]>, Error[\"Type\"], Requires>\n\n/**\n * The payload schema a declaration's `payload` field stands for.\n *\n * @private\n */\ntype PayloadSchemaOf<Payload extends Schema.Struct.Fields | AnyStructSchema> = Payload extends Schema.Struct.Fields\n ? Schema.Struct<Payload>\n : Payload\n\n/**\n * Whether a value is a flow this package made.\n *\n * The check is the runtime type id, not the shape: a host that loads a module\n * and finds a default export has to decide whether it holds a flow before it\n * reads anything off it, and a structural guess would accept a look-alike from\n * another flow model.\n *\n * @category predicates\n * @since 0.1.0\n */\nexport const isFlow = (value: unknown): value is Any => Predicate.hasProperty(value, TypeId)\n\n/**\n * Creates a durable flow with one plan-time body or a typed prompt renderer.\n * A prompt lowers to one ordinary action implemented by the host; neither\n * construction nor planning renders it. Model metadata is interpreted by the\n * host and adds no execution model to this package.\n *\n * Invocation IDs are caller-selected or opt-in deterministic IDs derived\n * from the flow tag and idempotency key.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make: {\n <\n const Tag extends string,\n Payload extends Schema.Struct.Fields | AnyStructSchema,\n Success extends Schema.Top = Schema.Void,\n Error extends Schema.Top = Schema.Never,\n Requires = never\n >(\n tag: Tag,\n options: MakeOptions<Payload, Success, Error> & {\n readonly body: Body<Payload, Success, Error, Requires>\n readonly prompt?: never\n }\n ): Flow<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>\n <\n const Tag extends string,\n Payload extends Schema.Struct.Fields | AnyStructSchema,\n Success extends Schema.Top = Schema.Void,\n Error extends Schema.Top = Schema.Never\n >(\n tag: Tag,\n options: MakeOptions<Payload, Success, Error> & {\n readonly prompt: (payload: PayloadSchemaOf<Payload>[\"Type\"]) => string\n readonly body?: never\n readonly implementationVersion?: string | undefined\n }\n ): PromptFlow<Tag, PayloadSchemaOf<Payload>, Success, Error>\n} = <\n const Tag extends string,\n Payload extends Schema.Struct.Fields | AnyStructSchema,\n Success extends Schema.Top = Schema.Void,\n Error extends Schema.Top = Schema.Never,\n Requires = never\n>(\n tag: Tag,\n options: MakeOptions<Payload, Success, Error> & {\n readonly body?: Body<Payload, Success, Error, Requires> | undefined\n readonly prompt?: ((payload: PayloadSchemaOf<Payload>[\"Type\"]) => string) | undefined\n readonly implementationVersion?: string | undefined\n }\n): any => {\n if (typeof tag !== \"string\" || tag.trim().length === 0) {\n throw new TypeError(\"Flow.make: tag must be a non-empty string\")\n }\n if (\n (options.body === undefined && typeof options.prompt !== \"function\") ||\n (options.prompt === undefined && typeof options.body !== \"function\") ||\n (options.body !== undefined && options.prompt !== undefined)\n ) {\n throw new TypeError(`Flow.make: \"${tag}\" must declare exactly one function: body or prompt`)\n }\n // Invalid static configuration is a programmer error thrown at construction,\n // the same contract as effect's own `ExecutionPlan.make` (which throws on\n // `attempts <= 0`); `RangeError` matches effect's range-violation throws.\n if (\n options.maxRounds !== undefined &&\n (!Number.isSafeInteger(options.maxRounds) || options.maxRounds < 1)\n ) {\n throw new RangeError(`Flow.make: \"${tag}\" maxRounds must be a positive safe integer`)\n }\n const deadline = options.deadline === undefined\n ? undefined\n : Option.getOrUndefined(Duration.fromInput(options.deadline))\n if (\n options.deadline !== undefined &&\n (deadline === undefined || !Duration.isFinite(deadline) || Duration.toMillis(deadline) <= 0)\n ) {\n throw new RangeError(`Flow.make: \"${tag}\" deadline must be a positive finite duration`)\n }\n // The durable clock that enforces a deadline is due at its start plus the\n // deadline, and a store records that due time as a safe integer.\n if (deadline !== undefined && Duration.toMillis(deadline) > Number.MAX_SAFE_INTEGER) {\n throw new RangeError(`Flow.make: \"${tag}\" deadline must be at most ${Number.MAX_SAFE_INTEGER} ms`)\n }\n // Captured here, where the stack still names the author's file, and carried\n // as a non-enumerable property so no digest can see it\n // (`internal/DeclarationSite.ts`).\n const site = options.declaredFrom === undefined\n ? DeclarationSite.capture()\n : DeclarationSite.declaredAt(options.declaredFrom)\n const payloadSchema = (Schema.isSchema(options.payload)\n ? options.payload\n : Schema.Struct(options.payload as any)) as PayloadSchemaOf<Payload>\n const successSchema = options.success ?? (Schema.Void as unknown as Success)\n const errorSchema = options.error ?? (Schema.Never as unknown as Error)\n const annotations = lowerDeclarations(options)\n const action = options.prompt === undefined ? undefined : Action.make(`${tag}/prompt`, {\n payload: payloadSchema,\n success: successSchema,\n error: errorSchema,\n capabilities: options.capabilities,\n effects: options.effects,\n annotations,\n tier: options.effects?.tier ?? \"irreversible\",\n implementationVersion: options.implementationVersion,\n declaredFrom: options.declaredFrom\n }) as unknown as Declared<`${Tag}/prompt`, PayloadSchemaOf<Payload>, Success, Error>\n // The adapter only describes one dispatch. Prompt rendering belongs to the\n // host implementation and its reviewed source/implementation identity.\n const body = action === undefined ? options.body : Node.capture(\n { action: action.name, implementationVersion: action.implementationVersion ?? null },\n (payload: PayloadSchemaOf<Payload>[\"Type\"]) => action.call(payload as never)\n )\n return DeclarationSite.annotate(\n makeProto<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>({\n _tag: tag,\n description: options.description,\n payloadSchema,\n successSchema,\n errorSchema,\n annotations,\n model: options.model,\n effort: options.effort,\n system: options.system,\n chat: options.chat,\n flows: options.flows,\n prompt: options.prompt,\n action,\n body: body as (\n payload: PayloadSchemaOf<Payload>[\"Type\"]\n ) => Node.Node<BodySuccess<Success[\"Type\"]>, Error[\"Type\"], Requires>,\n idempotencyKey: options.idempotencyKey as any,\n suspendedRetryPolicy: options.suspendedRetryPolicy,\n maxRounds: options.maxRounds,\n deadline\n }),\n site\n )\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure raised when a cancellation request could not be made durable.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
declare const CancelRequestFailed_base: Schema.Class<CancelRequestFailed, Schema.TaggedStruct<"@smthrs/flow/CancelRequestFailed", {
|
|
8
|
+
/**
|
|
9
|
+
* Stable public error code. `cancel_request_failed` is a storage failure
|
|
10
|
+
* on a supported request; `unsafe_interrupt_unsupported` is the durable
|
|
11
|
+
* engine refusing `interruptUnsafe`, which it does not implement.
|
|
12
|
+
*/
|
|
13
|
+
readonly code: Schema.Literals<readonly ["cancel_request_failed", "unsafe_interrupt_unsupported"]>;
|
|
14
|
+
/** The execution whose cancellation could not be recorded. */
|
|
15
|
+
readonly executionId: Schema.String;
|
|
16
|
+
/** The storage failure, rendered for an operator. */
|
|
17
|
+
readonly reason: Schema.String;
|
|
18
|
+
}>, import("effect/Cause").YieldableError>;
|
|
19
|
+
/**
|
|
20
|
+
* Raised when `interrupt` could not durably record its cancellation request.
|
|
21
|
+
*
|
|
22
|
+
* This is a **typed failure**, never a defect, and never swallowed. A durable
|
|
23
|
+
* runtime records operator intent before it interrupts anything: the record is
|
|
24
|
+
* what tells the interruption handler that a cancellation happened rather than
|
|
25
|
+
* a shutdown (issue #26), what survives the requesting process dying, and what
|
|
26
|
+
* a parked or cross-process run is eventually cancelled by. A durable runtime
|
|
27
|
+
* records the run and all linked descendants in one transaction. A storage
|
|
28
|
+
* failure on any write leaves every request unchanged: the run is still
|
|
29
|
+
* running and still cancellable, so the caller sees this typed failure and can
|
|
30
|
+
* retry instead of receiving false success.
|
|
31
|
+
*
|
|
32
|
+
* A runtime that keeps no durable cancellation record — the in-memory engine —
|
|
33
|
+
* never raises it, so its `Effect<void>` remains assignable to the widened
|
|
34
|
+
* contract and no in-memory caller has to handle anything.
|
|
35
|
+
*
|
|
36
|
+
* The same error carries the durable engine's refusal of `interruptUnsafe`.
|
|
37
|
+
* That port promises forced cancellation without cleanup, and the durable
|
|
38
|
+
* engine has no such path — it has one cancellation path, `interrupt`, which
|
|
39
|
+
* is durable and cascades to linked children. Answering the unsafe request
|
|
40
|
+
* with the safe one silently reinterpreted it, so 1.0.0-rc.0 refuses it with
|
|
41
|
+
* code `unsafe_interrupt_unsupported`. It is the same failure type because it
|
|
42
|
+
* is the same question — "your cancellation request was not carried out" —
|
|
43
|
+
* and the code says which of the two reasons applies.
|
|
44
|
+
*
|
|
45
|
+
* The error is declared here because it is part of the `interrupt` contract
|
|
46
|
+
* this package owns; the durable implementation lives in
|
|
47
|
+
* `@smthrs/engine-store`'s `RunDriver`.
|
|
48
|
+
*
|
|
49
|
+
* @category errors
|
|
50
|
+
* @since 0.1.0
|
|
51
|
+
*/
|
|
52
|
+
export declare class CancelRequestFailed extends CancelRequestFailed_base {
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=CancelRequestFailed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CancelRequestFailed.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/CancelRequestFailed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;IAsCnC;;;;OAIG;;IAEH,8DAA8D;;IAE9D,qDAAqD;;;AA5CzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,mBAAoB,SAAQ,wBAcxC;CAAG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure raised when a cancellation request could not be made durable.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
/**
|
|
8
|
+
* Raised when `interrupt` could not durably record its cancellation request.
|
|
9
|
+
*
|
|
10
|
+
* This is a **typed failure**, never a defect, and never swallowed. A durable
|
|
11
|
+
* runtime records operator intent before it interrupts anything: the record is
|
|
12
|
+
* what tells the interruption handler that a cancellation happened rather than
|
|
13
|
+
* a shutdown (issue #26), what survives the requesting process dying, and what
|
|
14
|
+
* a parked or cross-process run is eventually cancelled by. A durable runtime
|
|
15
|
+
* records the run and all linked descendants in one transaction. A storage
|
|
16
|
+
* failure on any write leaves every request unchanged: the run is still
|
|
17
|
+
* running and still cancellable, so the caller sees this typed failure and can
|
|
18
|
+
* retry instead of receiving false success.
|
|
19
|
+
*
|
|
20
|
+
* A runtime that keeps no durable cancellation record — the in-memory engine —
|
|
21
|
+
* never raises it, so its `Effect<void>` remains assignable to the widened
|
|
22
|
+
* contract and no in-memory caller has to handle anything.
|
|
23
|
+
*
|
|
24
|
+
* The same error carries the durable engine's refusal of `interruptUnsafe`.
|
|
25
|
+
* That port promises forced cancellation without cleanup, and the durable
|
|
26
|
+
* engine has no such path — it has one cancellation path, `interrupt`, which
|
|
27
|
+
* is durable and cascades to linked children. Answering the unsafe request
|
|
28
|
+
* with the safe one silently reinterpreted it, so 1.0.0-rc.0 refuses it with
|
|
29
|
+
* code `unsafe_interrupt_unsupported`. It is the same failure type because it
|
|
30
|
+
* is the same question — "your cancellation request was not carried out" —
|
|
31
|
+
* and the code says which of the two reasons applies.
|
|
32
|
+
*
|
|
33
|
+
* The error is declared here because it is part of the `interrupt` contract
|
|
34
|
+
* this package owns; the durable implementation lives in
|
|
35
|
+
* `@smthrs/engine-store`'s `RunDriver`.
|
|
36
|
+
*
|
|
37
|
+
* @category errors
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
export class CancelRequestFailed extends Schema.TaggedError()("@smthrs/flow/CancelRequestFailed", {
|
|
41
|
+
/**
|
|
42
|
+
* Stable public error code. `cancel_request_failed` is a storage failure
|
|
43
|
+
* on a supported request; `unsafe_interrupt_unsupported` is the durable
|
|
44
|
+
* engine refusing `interruptUnsafe`, which it does not implement.
|
|
45
|
+
*/
|
|
46
|
+
code: Schema.Literals(["cancel_request_failed", "unsafe_interrupt_unsupported"]),
|
|
47
|
+
/** The execution whose cancellation could not be recorded. */
|
|
48
|
+
executionId: Schema.String,
|
|
49
|
+
/** The storage failure, rendered for an operator. */
|
|
50
|
+
reason: Schema.String
|
|
51
|
+
}) {
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=CancelRequestFailed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CancelRequestFailed.js","sourceRoot":"","sources":["../../../src/FlowRuntime/CancelRequestFailed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAChF,kCAAkC,EAClC;IACE;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,CAAC;IAChF,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG","sourcesContent":["/**\n * Failure raised when a cancellation request could not be made durable.\n *\n * @since 0.1.0\n */\n\nimport * as Schema from \"effect/Schema\"\n\n/**\n * Raised when `interrupt` could not durably record its cancellation request.\n *\n * This is a **typed failure**, never a defect, and never swallowed. A durable\n * runtime records operator intent before it interrupts anything: the record is\n * what tells the interruption handler that a cancellation happened rather than\n * a shutdown (issue #26), what survives the requesting process dying, and what\n * a parked or cross-process run is eventually cancelled by. A durable runtime\n * records the run and all linked descendants in one transaction. A storage\n * failure on any write leaves every request unchanged: the run is still\n * running and still cancellable, so the caller sees this typed failure and can\n * retry instead of receiving false success.\n *\n * A runtime that keeps no durable cancellation record — the in-memory engine —\n * never raises it, so its `Effect<void>` remains assignable to the widened\n * contract and no in-memory caller has to handle anything.\n *\n * The same error carries the durable engine's refusal of `interruptUnsafe`.\n * That port promises forced cancellation without cleanup, and the durable\n * engine has no such path — it has one cancellation path, `interrupt`, which\n * is durable and cascades to linked children. Answering the unsafe request\n * with the safe one silently reinterpreted it, so 1.0.0-rc.0 refuses it with\n * code `unsafe_interrupt_unsupported`. It is the same failure type because it\n * is the same question — \"your cancellation request was not carried out\" —\n * and the code says which of the two reasons applies.\n *\n * The error is declared here because it is part of the `interrupt` contract\n * this package owns; the durable implementation lives in\n * `@smthrs/engine-store`'s `RunDriver`.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class CancelRequestFailed extends Schema.TaggedError<CancelRequestFailed>()(\n \"@smthrs/flow/CancelRequestFailed\",\n {\n /**\n * Stable public error code. `cancel_request_failed` is a storage failure\n * on a supported request; `unsafe_interrupt_unsupported` is the durable\n * engine refusing `interruptUnsafe`, which it does not implement.\n */\n code: Schema.Literals([\"cancel_request_failed\", \"unsafe_interrupt_unsupported\"]),\n /** The execution whose cancellation could not be recorded. */\n executionId: Schema.String,\n /** The storage failure, rendered for an operator. */\n reason: Schema.String\n }\n) {}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Execution identity refusals shared by authoring and engine layers.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Schema from "effect/Schema";
|
|
5
|
+
declare const ExecutionIdentityConflict_base: Schema.Class<ExecutionIdentityConflict, Schema.TaggedStruct<"@smthrs/engine/ExecutionIdentityConflict", {
|
|
6
|
+
readonly code: Schema.withConstructorDefault<Schema.Literal<"execution_identity_conflict">>;
|
|
7
|
+
readonly executionId: Schema.String;
|
|
8
|
+
readonly field: Schema.Literals<readonly ["flow", "payload", "capabilities", "lineage", "round", "parent"]>;
|
|
9
|
+
readonly expected: Schema.String;
|
|
10
|
+
readonly actual: Schema.String;
|
|
11
|
+
readonly status: Schema.withConstructorDefault<Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled", "unknown"]>>;
|
|
12
|
+
readonly message: Schema.String;
|
|
13
|
+
}>, import("effect/Cause").YieldableError>;
|
|
14
|
+
/**
|
|
15
|
+
* A caller reused an execution id for different persisted run identity.
|
|
16
|
+
*
|
|
17
|
+
* @category errors
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export declare class ExecutionIdentityConflict extends ExecutionIdentityConflict_base {
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=ExecutionIdentityConflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionIdentityConflict.d.ts","sourceRoot":"","sources":["../../../src/FlowRuntime/ExecutionIdentityConflict.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;;;;;;AAGvC;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,8BAe9C;CAAG"}
|