@smthrs/flow 0.0.0-stage → 1.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -2
  4. package/THIRD_PARTY_NOTICES.md +52 -0
  5. package/dist/cjs/Action/Action.d.ts +250 -0
  6. package/dist/cjs/Action/Action.d.ts.map +1 -0
  7. package/dist/cjs/Action/Action.js +42 -0
  8. package/dist/cjs/Action/Action.js.map +7 -0
  9. package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
  10. package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
  11. package/dist/cjs/Action/AttemptTimedOut.js +51 -0
  12. package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
  13. package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
  14. package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
  15. package/dist/cjs/Action/BoundaryMode.js +36 -0
  16. package/dist/cjs/Action/BoundaryMode.js.map +7 -0
  17. package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
  18. package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
  19. package/dist/cjs/Action/CacheEnvironment.js +57 -0
  20. package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
  21. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  22. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  23. package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
  24. package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
  25. package/dist/cjs/Action/Context.d.ts +131 -0
  26. package/dist/cjs/Action/Context.d.ts.map +1 -0
  27. package/dist/cjs/Action/Context.js +68 -0
  28. package/dist/cjs/Action/Context.js.map +7 -0
  29. package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
  30. package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
  31. package/dist/cjs/Action/DuplicateImplementation.js +46 -0
  32. package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
  33. package/dist/cjs/Action/FileBoundary.d.ts +59 -0
  34. package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
  35. package/dist/cjs/Action/FileBoundary.js +81 -0
  36. package/dist/cjs/Action/FileBoundary.js.map +7 -0
  37. package/dist/cjs/Action/FileInput.d.ts +28 -0
  38. package/dist/cjs/Action/FileInput.d.ts.map +1 -0
  39. package/dist/cjs/Action/FileInput.js +42 -0
  40. package/dist/cjs/Action/FileInput.js.map +7 -0
  41. package/dist/cjs/Action/Filegroup.d.ts +16 -0
  42. package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
  43. package/dist/cjs/Action/Filegroup.js +27 -0
  44. package/dist/cjs/Action/Filegroup.js.map +7 -0
  45. package/dist/cjs/Action/Glob.d.ts +8 -0
  46. package/dist/cjs/Action/Glob.d.ts.map +1 -0
  47. package/dist/cjs/Action/Glob.js +28 -0
  48. package/dist/cjs/Action/Glob.js.map +7 -0
  49. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
  50. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  51. package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
  52. package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
  53. package/dist/cjs/Action/Implementations.d.ts +114 -0
  54. package/dist/cjs/Action/Implementations.d.ts.map +1 -0
  55. package/dist/cjs/Action/Implementations.js +65 -0
  56. package/dist/cjs/Action/Implementations.js.map +7 -0
  57. package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
  58. package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
  59. package/dist/cjs/Action/InfraInterrupt.js +46 -0
  60. package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
  61. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  62. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  63. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
  64. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
  65. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  66. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  67. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
  68. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
  69. package/dist/cjs/Action/StepIdentity.d.ts +153 -0
  70. package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
  71. package/dist/cjs/Action/StepIdentity.js +75 -0
  72. package/dist/cjs/Action/StepIdentity.js.map +7 -0
  73. package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
  74. package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
  75. package/dist/cjs/Action/TreeArtifact.js +25 -0
  76. package/dist/cjs/Action/TreeArtifact.js.map +7 -0
  77. package/dist/cjs/Action/TypeId.d.ts +8 -0
  78. package/dist/cjs/Action/TypeId.d.ts.map +1 -0
  79. package/dist/cjs/Action/TypeId.js +25 -0
  80. package/dist/cjs/Action/TypeId.js.map +7 -0
  81. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  82. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  83. package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
  84. package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
  85. package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
  86. package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
  87. package/dist/cjs/Action/idempotencyKey.js +59 -0
  88. package/dist/cjs/Action/idempotencyKey.js.map +7 -0
  89. package/dist/cjs/Action/index.d.ts +29 -0
  90. package/dist/cjs/Action/index.d.ts.map +1 -0
  91. package/dist/cjs/Action/index.js +60 -0
  92. package/dist/cjs/Action/index.js.map +7 -0
  93. package/dist/cjs/Action/make.d.ts +128 -0
  94. package/dist/cjs/Action/make.d.ts.map +1 -0
  95. package/dist/cjs/Action/make.js +373 -0
  96. package/dist/cjs/Action/make.js.map +7 -0
  97. package/dist/cjs/Action/raceAll.d.ts +21 -0
  98. package/dist/cjs/Action/raceAll.d.ts.map +1 -0
  99. package/dist/cjs/Action/raceAll.js +46 -0
  100. package/dist/cjs/Action/raceAll.js.map +7 -0
  101. package/dist/cjs/Action/retry.d.ts +19 -0
  102. package/dist/cjs/Action/retry.d.ts.map +1 -0
  103. package/dist/cjs/Action/retry.js +75 -0
  104. package/dist/cjs/Action/retry.js.map +7 -0
  105. package/dist/cjs/Deadline.d.ts +105 -0
  106. package/dist/cjs/Deadline.d.ts.map +1 -0
  107. package/dist/cjs/Deadline.js +104 -0
  108. package/dist/cjs/Deadline.js.map +7 -0
  109. package/dist/cjs/DurableClock.d.ts +61 -0
  110. package/dist/cjs/DurableClock.d.ts.map +1 -0
  111. package/dist/cjs/DurableClock.js +90 -0
  112. package/dist/cjs/DurableClock.js.map +7 -0
  113. package/dist/cjs/DurableDeferred.d.ts +311 -0
  114. package/dist/cjs/DurableDeferred.d.ts.map +1 -0
  115. package/dist/cjs/DurableDeferred.js +322 -0
  116. package/dist/cjs/DurableDeferred.js.map +7 -0
  117. package/dist/cjs/DurableQueue.d.ts +160 -0
  118. package/dist/cjs/DurableQueue.d.ts.map +1 -0
  119. package/dist/cjs/DurableQueue.js +229 -0
  120. package/dist/cjs/DurableQueue.js.map +7 -0
  121. package/dist/cjs/ExternalJob.d.ts +179 -0
  122. package/dist/cjs/ExternalJob.d.ts.map +1 -0
  123. package/dist/cjs/ExternalJob.js +338 -0
  124. package/dist/cjs/ExternalJob.js.map +7 -0
  125. package/dist/cjs/Fault.d.ts +131 -0
  126. package/dist/cjs/Fault.d.ts.map +1 -0
  127. package/dist/cjs/Fault.js +157 -0
  128. package/dist/cjs/Fault.js.map +7 -0
  129. package/dist/cjs/Flow/Annotations.d.ts +245 -0
  130. package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
  131. package/dist/cjs/Flow/Annotations.js +72 -0
  132. package/dist/cjs/Flow/Annotations.js.map +7 -0
  133. package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
  134. package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
  135. package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
  136. package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
  137. package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
  138. package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
  139. package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
  140. package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
  141. package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
  142. package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
  143. package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
  144. package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
  145. package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
  146. package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
  147. package/dist/cjs/Flow/ExecutionIds.js +66 -0
  148. package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
  149. package/dist/cjs/Flow/Flow.d.ts +422 -0
  150. package/dist/cjs/Flow/Flow.d.ts.map +1 -0
  151. package/dist/cjs/Flow/Flow.js +17 -0
  152. package/dist/cjs/Flow/Flow.js.map +7 -0
  153. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
  154. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  155. package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
  156. package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
  157. package/dist/cjs/Flow/Outcome.d.ts +162 -0
  158. package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
  159. package/dist/cjs/Flow/Outcome.js +80 -0
  160. package/dist/cjs/Flow/Outcome.js.map +7 -0
  161. package/dist/cjs/Flow/Result.d.ts +186 -0
  162. package/dist/cjs/Flow/Result.d.ts.map +1 -0
  163. package/dist/cjs/Flow/Result.js +159 -0
  164. package/dist/cjs/Flow/Result.js.map +7 -0
  165. package/dist/cjs/Flow/Runtime.d.ts +98 -0
  166. package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
  167. package/dist/cjs/Flow/Runtime.js +160 -0
  168. package/dist/cjs/Flow/Runtime.js.map +7 -0
  169. package/dist/cjs/Flow/TypeId.d.ts +8 -0
  170. package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
  171. package/dist/cjs/Flow/TypeId.js +25 -0
  172. package/dist/cjs/Flow/TypeId.js.map +7 -0
  173. package/dist/cjs/Flow/index.d.ts +17 -0
  174. package/dist/cjs/Flow/index.d.ts.map +1 -0
  175. package/dist/cjs/Flow/index.js +29 -0
  176. package/dist/cjs/Flow/index.js.map +7 -0
  177. package/dist/cjs/Flow/internal.d.ts +34 -0
  178. package/dist/cjs/Flow/internal.d.ts.map +1 -0
  179. package/dist/cjs/Flow/internal.js +187 -0
  180. package/dist/cjs/Flow/internal.js.map +7 -0
  181. package/dist/cjs/Flow/make.d.ts +134 -0
  182. package/dist/cjs/Flow/make.d.ts.map +1 -0
  183. package/dist/cjs/Flow/make.js +104 -0
  184. package/dist/cjs/Flow/make.js.map +7 -0
  185. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  186. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  187. package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
  188. package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
  189. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  190. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  191. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
  192. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
  193. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  194. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  195. package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
  196. package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
  197. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  198. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  199. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
  200. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
  201. package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
  202. package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
  203. package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
  204. package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
  205. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
  206. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  207. package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
  208. package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
  209. package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
  210. package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
  211. package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
  212. package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
  213. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  214. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  215. package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
  216. package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
  217. package/dist/cjs/FlowRuntime/index.d.ts +14 -0
  218. package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
  219. package/dist/cjs/FlowRuntime/index.js +26 -0
  220. package/dist/cjs/FlowRuntime/index.js.map +7 -0
  221. package/dist/cjs/Graph.d.ts +325 -0
  222. package/dist/cjs/Graph.d.ts.map +1 -0
  223. package/dist/cjs/Graph.js +1022 -0
  224. package/dist/cjs/Graph.js.map +7 -0
  225. package/dist/cjs/HumanTask.d.ts +440 -0
  226. package/dist/cjs/HumanTask.d.ts.map +1 -0
  227. package/dist/cjs/HumanTask.js +413 -0
  228. package/dist/cjs/HumanTask.js.map +7 -0
  229. package/dist/cjs/Interpreter.d.ts +222 -0
  230. package/dist/cjs/Interpreter.d.ts.map +1 -0
  231. package/dist/cjs/Interpreter.js +888 -0
  232. package/dist/cjs/Interpreter.js.map +7 -0
  233. package/dist/cjs/Poll.d.ts +238 -0
  234. package/dist/cjs/Poll.d.ts.map +1 -0
  235. package/dist/cjs/Poll.js +150 -0
  236. package/dist/cjs/Poll.js.map +7 -0
  237. package/dist/cjs/RetryPolicy.d.ts +273 -0
  238. package/dist/cjs/RetryPolicy.d.ts.map +1 -0
  239. package/dist/cjs/RetryPolicy.js +251 -0
  240. package/dist/cjs/RetryPolicy.js.map +7 -0
  241. package/dist/cjs/Sleep.d.ts +98 -0
  242. package/dist/cjs/Sleep.d.ts.map +1 -0
  243. package/dist/cjs/Sleep.js +133 -0
  244. package/dist/cjs/Sleep.js.map +7 -0
  245. package/dist/cjs/Stall.d.ts +173 -0
  246. package/dist/cjs/Stall.d.ts.map +1 -0
  247. package/dist/cjs/Stall.js +92 -0
  248. package/dist/cjs/Stall.js.map +7 -0
  249. package/dist/cjs/WaitFor.d.ts +109 -0
  250. package/dist/cjs/WaitFor.d.ts.map +1 -0
  251. package/dist/cjs/WaitFor.js +117 -0
  252. package/dist/cjs/WaitFor.js.map +7 -0
  253. package/dist/cjs/index.d.ts +107 -0
  254. package/dist/cjs/index.d.ts.map +1 -0
  255. package/dist/cjs/index.js +69 -0
  256. package/dist/cjs/index.js.map +7 -0
  257. package/dist/cjs/internal/BoundedJson.d.ts +48 -0
  258. package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
  259. package/dist/cjs/internal/BoundedJson.js +96 -0
  260. package/dist/cjs/internal/BoundedJson.js.map +7 -0
  261. package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
  262. package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
  263. package/dist/cjs/internal/DeclarationSite.js +89 -0
  264. package/dist/cjs/internal/DeclarationSite.js.map +7 -0
  265. package/dist/cjs/internal/Declarations.d.ts +35 -0
  266. package/dist/cjs/internal/Declarations.d.ts.map +1 -0
  267. package/dist/cjs/internal/Declarations.js +50 -0
  268. package/dist/cjs/internal/Declarations.js.map +7 -0
  269. package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
  270. package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
  271. package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
  272. package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
  273. package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
  274. package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
  275. package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
  276. package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
  277. package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
  278. package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
  279. package/dist/cjs/internal/OutcomeMarker.js +27 -0
  280. package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
  281. package/dist/cjs/package.json +1 -0
  282. package/dist/esm/Action/Action.d.ts +250 -0
  283. package/dist/esm/Action/Action.d.ts.map +1 -0
  284. package/dist/esm/Action/Action.js +30 -0
  285. package/dist/esm/Action/Action.js.map +1 -0
  286. package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
  287. package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
  288. package/dist/esm/Action/AttemptTimedOut.js +32 -0
  289. package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
  290. package/dist/esm/Action/BoundaryMode.d.ts +29 -0
  291. package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
  292. package/dist/esm/Action/BoundaryMode.js +23 -0
  293. package/dist/esm/Action/BoundaryMode.js.map +1 -0
  294. package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
  295. package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
  296. package/dist/esm/Action/CacheEnvironment.js +130 -0
  297. package/dist/esm/Action/CacheEnvironment.js.map +1 -0
  298. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  299. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  300. package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
  301. package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
  302. package/dist/esm/Action/Context.d.ts +131 -0
  303. package/dist/esm/Action/Context.d.ts.map +1 -0
  304. package/dist/esm/Action/Context.js +99 -0
  305. package/dist/esm/Action/Context.js.map +1 -0
  306. package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
  307. package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
  308. package/dist/esm/Action/DuplicateImplementation.js +20 -0
  309. package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
  310. package/dist/esm/Action/FileBoundary.d.ts +59 -0
  311. package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
  312. package/dist/esm/Action/FileBoundary.js +60 -0
  313. package/dist/esm/Action/FileBoundary.js.map +1 -0
  314. package/dist/esm/Action/FileInput.d.ts +28 -0
  315. package/dist/esm/Action/FileInput.d.ts.map +1 -0
  316. package/dist/esm/Action/FileInput.js +32 -0
  317. package/dist/esm/Action/FileInput.js.map +1 -0
  318. package/dist/esm/Action/Filegroup.d.ts +16 -0
  319. package/dist/esm/Action/Filegroup.d.ts.map +1 -0
  320. package/dist/esm/Action/Filegroup.js +15 -0
  321. package/dist/esm/Action/Filegroup.js.map +1 -0
  322. package/dist/esm/Action/Glob.d.ts +8 -0
  323. package/dist/esm/Action/Glob.d.ts.map +1 -0
  324. package/dist/esm/Action/Glob.js +7 -0
  325. package/dist/esm/Action/Glob.js.map +1 -0
  326. package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
  327. package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  328. package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
  329. package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
  330. package/dist/esm/Action/Implementations.d.ts +114 -0
  331. package/dist/esm/Action/Implementations.d.ts.map +1 -0
  332. package/dist/esm/Action/Implementations.js +94 -0
  333. package/dist/esm/Action/Implementations.js.map +1 -0
  334. package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
  335. package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
  336. package/dist/esm/Action/InfraInterrupt.js +25 -0
  337. package/dist/esm/Action/InfraInterrupt.js.map +1 -0
  338. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  339. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  340. package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
  341. package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
  342. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  343. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  344. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
  345. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
  346. package/dist/esm/Action/StepIdentity.d.ts +153 -0
  347. package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
  348. package/dist/esm/Action/StepIdentity.js +139 -0
  349. package/dist/esm/Action/StepIdentity.js.map +1 -0
  350. package/dist/esm/Action/TreeArtifact.d.ts +8 -0
  351. package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
  352. package/dist/esm/Action/TreeArtifact.js +7 -0
  353. package/dist/esm/Action/TreeArtifact.js.map +1 -0
  354. package/dist/esm/Action/TypeId.d.ts +8 -0
  355. package/dist/esm/Action/TypeId.d.ts.map +1 -0
  356. package/dist/esm/Action/TypeId.js +9 -0
  357. package/dist/esm/Action/TypeId.js.map +1 -0
  358. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  359. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  360. package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
  361. package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
  362. package/dist/esm/Action/idempotencyKey.d.ts +21 -0
  363. package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
  364. package/dist/esm/Action/idempotencyKey.js +50 -0
  365. package/dist/esm/Action/idempotencyKey.js.map +1 -0
  366. package/dist/esm/Action/index.d.ts +29 -0
  367. package/dist/esm/Action/index.d.ts.map +1 -0
  368. package/dist/esm/Action/index.js +30 -0
  369. package/dist/esm/Action/index.js.map +1 -0
  370. package/dist/esm/Action/make.d.ts +128 -0
  371. package/dist/esm/Action/make.d.ts.map +1 -0
  372. package/dist/esm/Action/make.js +405 -0
  373. package/dist/esm/Action/make.js.map +1 -0
  374. package/dist/esm/Action/raceAll.d.ts +21 -0
  375. package/dist/esm/Action/raceAll.d.ts.map +1 -0
  376. package/dist/esm/Action/raceAll.js +20 -0
  377. package/dist/esm/Action/raceAll.js.map +1 -0
  378. package/dist/esm/Action/retry.d.ts +19 -0
  379. package/dist/esm/Action/retry.d.ts.map +1 -0
  380. package/dist/esm/Action/retry.js +72 -0
  381. package/dist/esm/Action/retry.js.map +1 -0
  382. package/dist/esm/Deadline.d.ts +105 -0
  383. package/dist/esm/Deadline.d.ts.map +1 -0
  384. package/dist/esm/Deadline.js +152 -0
  385. package/dist/esm/Deadline.js.map +1 -0
  386. package/dist/esm/DurableClock.d.ts +61 -0
  387. package/dist/esm/DurableClock.d.ts.map +1 -0
  388. package/dist/esm/DurableClock.js +75 -0
  389. package/dist/esm/DurableClock.js.map +1 -0
  390. package/dist/esm/DurableDeferred.d.ts +311 -0
  391. package/dist/esm/DurableDeferred.d.ts.map +1 -0
  392. package/dist/esm/DurableDeferred.js +357 -0
  393. package/dist/esm/DurableDeferred.js.map +1 -0
  394. package/dist/esm/DurableQueue.d.ts +160 -0
  395. package/dist/esm/DurableQueue.d.ts.map +1 -0
  396. package/dist/esm/DurableQueue.js +303 -0
  397. package/dist/esm/DurableQueue.js.map +1 -0
  398. package/dist/esm/ExternalJob.d.ts +179 -0
  399. package/dist/esm/ExternalJob.d.ts.map +1 -0
  400. package/dist/esm/ExternalJob.js +296 -0
  401. package/dist/esm/ExternalJob.js.map +1 -0
  402. package/dist/esm/Fault.d.ts +131 -0
  403. package/dist/esm/Fault.d.ts.map +1 -0
  404. package/dist/esm/Fault.js +198 -0
  405. package/dist/esm/Fault.js.map +1 -0
  406. package/dist/esm/Flow/Annotations.d.ts +245 -0
  407. package/dist/esm/Flow/Annotations.d.ts.map +1 -0
  408. package/dist/esm/Flow/Annotations.js +110 -0
  409. package/dist/esm/Flow/Annotations.js.map +1 -0
  410. package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
  411. package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
  412. package/dist/esm/Flow/CapabilityCeiling.js +27 -0
  413. package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
  414. package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
  415. package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
  416. package/dist/esm/Flow/DeadlineExceeded.js +34 -0
  417. package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
  418. package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
  419. package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
  420. package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
  421. package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
  422. package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
  423. package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
  424. package/dist/esm/Flow/ExecutionIds.js +91 -0
  425. package/dist/esm/Flow/ExecutionIds.js.map +1 -0
  426. package/dist/esm/Flow/Flow.d.ts +422 -0
  427. package/dist/esm/Flow/Flow.d.ts.map +1 -0
  428. package/dist/esm/Flow/Flow.js +3 -0
  429. package/dist/esm/Flow/Flow.js.map +1 -0
  430. package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
  431. package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  432. package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
  433. package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
  434. package/dist/esm/Flow/Outcome.d.ts +162 -0
  435. package/dist/esm/Flow/Outcome.d.ts.map +1 -0
  436. package/dist/esm/Flow/Outcome.js +115 -0
  437. package/dist/esm/Flow/Outcome.js.map +1 -0
  438. package/dist/esm/Flow/Result.d.ts +186 -0
  439. package/dist/esm/Flow/Result.d.ts.map +1 -0
  440. package/dist/esm/Flow/Result.js +171 -0
  441. package/dist/esm/Flow/Result.js.map +1 -0
  442. package/dist/esm/Flow/Runtime.d.ts +98 -0
  443. package/dist/esm/Flow/Runtime.d.ts.map +1 -0
  444. package/dist/esm/Flow/Runtime.js +231 -0
  445. package/dist/esm/Flow/Runtime.js.map +1 -0
  446. package/dist/esm/Flow/TypeId.d.ts +8 -0
  447. package/dist/esm/Flow/TypeId.d.ts.map +1 -0
  448. package/dist/esm/Flow/TypeId.js +9 -0
  449. package/dist/esm/Flow/TypeId.js.map +1 -0
  450. package/dist/esm/Flow/index.d.ts +17 -0
  451. package/dist/esm/Flow/index.d.ts.map +1 -0
  452. package/dist/esm/Flow/index.js +18 -0
  453. package/dist/esm/Flow/index.js.map +1 -0
  454. package/dist/esm/Flow/internal.d.ts +34 -0
  455. package/dist/esm/Flow/internal.d.ts.map +1 -0
  456. package/dist/esm/Flow/internal.js +149 -0
  457. package/dist/esm/Flow/internal.js.map +1 -0
  458. package/dist/esm/Flow/make.d.ts +134 -0
  459. package/dist/esm/Flow/make.d.ts.map +1 -0
  460. package/dist/esm/Flow/make.js +106 -0
  461. package/dist/esm/Flow/make.js.map +1 -0
  462. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  463. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  464. package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
  465. package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
  466. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  467. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  468. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
  469. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
  470. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  471. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  472. package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
  473. package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
  474. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  475. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  476. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
  477. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
  478. package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
  479. package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
  480. package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
  481. package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
  482. package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
  483. package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  484. package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
  485. package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
  486. package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
  487. package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
  488. package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
  489. package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
  490. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  491. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  492. package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
  493. package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
  494. package/dist/esm/FlowRuntime/index.d.ts +14 -0
  495. package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
  496. package/dist/esm/FlowRuntime/index.js +15 -0
  497. package/dist/esm/FlowRuntime/index.js.map +1 -0
  498. package/dist/esm/Graph.d.ts +325 -0
  499. package/dist/esm/Graph.d.ts.map +1 -0
  500. package/dist/esm/Graph.js +1482 -0
  501. package/dist/esm/Graph.js.map +1 -0
  502. package/dist/esm/HumanTask.d.ts +440 -0
  503. package/dist/esm/HumanTask.d.ts.map +1 -0
  504. package/dist/esm/HumanTask.js +794 -0
  505. package/dist/esm/HumanTask.js.map +1 -0
  506. package/dist/esm/Interpreter.d.ts +222 -0
  507. package/dist/esm/Interpreter.d.ts.map +1 -0
  508. package/dist/esm/Interpreter.js +1269 -0
  509. package/dist/esm/Interpreter.js.map +1 -0
  510. package/dist/esm/Poll.d.ts +238 -0
  511. package/dist/esm/Poll.d.ts.map +1 -0
  512. package/dist/esm/Poll.js +282 -0
  513. package/dist/esm/Poll.js.map +1 -0
  514. package/dist/esm/RetryPolicy.d.ts +273 -0
  515. package/dist/esm/RetryPolicy.d.ts.map +1 -0
  516. package/dist/esm/RetryPolicy.js +429 -0
  517. package/dist/esm/RetryPolicy.js.map +1 -0
  518. package/dist/esm/Sleep.d.ts +98 -0
  519. package/dist/esm/Sleep.d.ts.map +1 -0
  520. package/dist/esm/Sleep.js +230 -0
  521. package/dist/esm/Sleep.js.map +1 -0
  522. package/dist/esm/Stall.d.ts +173 -0
  523. package/dist/esm/Stall.d.ts.map +1 -0
  524. package/dist/esm/Stall.js +138 -0
  525. package/dist/esm/Stall.js.map +1 -0
  526. package/dist/esm/WaitFor.d.ts +109 -0
  527. package/dist/esm/WaitFor.d.ts.map +1 -0
  528. package/dist/esm/WaitFor.js +184 -0
  529. package/dist/esm/WaitFor.js.map +1 -0
  530. package/dist/esm/index.d.ts +107 -0
  531. package/dist/esm/index.d.ts.map +1 -0
  532. package/dist/esm/index.js +108 -0
  533. package/dist/esm/index.js.map +1 -0
  534. package/dist/esm/internal/BoundedJson.d.ts +48 -0
  535. package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
  536. package/dist/esm/internal/BoundedJson.js +107 -0
  537. package/dist/esm/internal/BoundedJson.js.map +1 -0
  538. package/dist/esm/internal/DeclarationSite.d.ts +135 -0
  539. package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
  540. package/dist/esm/internal/DeclarationSite.js +196 -0
  541. package/dist/esm/internal/DeclarationSite.js.map +1 -0
  542. package/dist/esm/internal/Declarations.d.ts +35 -0
  543. package/dist/esm/internal/Declarations.d.ts.map +1 -0
  544. package/dist/esm/internal/Declarations.js +43 -0
  545. package/dist/esm/internal/Declarations.js.map +1 -0
  546. package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
  547. package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
  548. package/dist/esm/internal/ExecutionMiddleware.js +13 -0
  549. package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
  550. package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
  551. package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
  552. package/dist/esm/internal/JsonSchemaSubset.js +363 -0
  553. package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
  554. package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
  555. package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
  556. package/dist/esm/internal/OutcomeMarker.js +18 -0
  557. package/dist/esm/internal/OutcomeMarker.js.map +1 -0
  558. package/docs/README.md +150 -0
  559. package/docs/api.md +436 -0
  560. package/docs/concepts/bodies-and-plans.md +157 -0
  561. package/docs/concepts/execution-identity.md +142 -0
  562. package/docs/concepts/flows-and-actions.md +129 -0
  563. package/docs/concepts/suspension-and-replay.md +130 -0
  564. package/docs/concepts/the-runtime-port.md +110 -0
  565. package/docs/concepts/trampoline-rounds.md +151 -0
  566. package/docs/guides/ask-a-person.md +184 -0
  567. package/docs/guides/build-a-body.md +161 -0
  568. package/docs/guides/cancel-and-roll-back.md +112 -0
  569. package/docs/guides/implement-an-action.md +147 -0
  570. package/docs/guides/inspect-the-plan.md +154 -0
  571. package/docs/guides/poll-until-ready.md +167 -0
  572. package/docs/guides/queue-work-to-a-worker.md +122 -0
  573. package/docs/guides/retry-a-failing-action.md +243 -0
  574. package/docs/guides/reuse-a-recorded-result.md +122 -0
  575. package/docs/guides/run-a-child-flow.md +108 -0
  576. package/docs/guides/run-an-external-job.md +86 -0
  577. package/docs/guides/use-a-prompt.md +38 -0
  578. package/docs/guides/wait-for-a-deadline.md +141 -0
  579. package/docs/guides/wait-for-an-external-signal.md +151 -0
  580. package/docs/installation.md +82 -0
  581. package/docs/quickstart.md +155 -0
  582. package/docs/reference/flow.md +1831 -0
  583. package/docs/testing.md +157 -0
  584. package/docs/troubleshooting.md +286 -0
  585. package/package.json +327 -3
  586. package/src/Action/Action.ts +333 -0
  587. package/src/Action/AttemptTimedOut.ts +37 -0
  588. package/src/Action/BoundaryMode.ts +33 -0
  589. package/src/Action/CacheEnvironment.ts +170 -0
  590. package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
  591. package/src/Action/Context.ts +156 -0
  592. package/src/Action/DuplicateImplementation.ts +24 -0
  593. package/src/Action/FileBoundary.ts +77 -0
  594. package/src/Action/FileInput.ts +42 -0
  595. package/src/Action/Filegroup.ts +16 -0
  596. package/src/Action/Glob.ts +8 -0
  597. package/src/Action/ImplementationVersionMismatch.ts +27 -0
  598. package/src/Action/Implementations.ts +149 -0
  599. package/src/Action/InfraInterrupt.ts +30 -0
  600. package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
  601. package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
  602. package/src/Action/StepIdentity.ts +219 -0
  603. package/src/Action/TreeArtifact.ts +8 -0
  604. package/src/Action/TypeId.ts +9 -0
  605. package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
  606. package/src/Action/idempotencyKey.ts +67 -0
  607. package/src/Action/index.ts +31 -0
  608. package/src/Action/make.ts +657 -0
  609. package/src/Action/raceAll.ts +48 -0
  610. package/src/Action/retry.ts +92 -0
  611. package/src/Deadline.ts +185 -0
  612. package/src/DurableClock.ts +133 -0
  613. package/src/DurableDeferred.ts +753 -0
  614. package/src/DurableQueue.ts +519 -0
  615. package/src/ExternalJob.ts +432 -0
  616. package/src/Fault.ts +279 -0
  617. package/src/Flow/Annotations.ts +151 -0
  618. package/src/Flow/CapabilityCeiling.ts +37 -0
  619. package/src/Flow/DeadlineExceeded.ts +40 -0
  620. package/src/Flow/ExecutionIdRequired.ts +36 -0
  621. package/src/Flow/ExecutionIds.ts +133 -0
  622. package/src/Flow/Flow.ts +576 -0
  623. package/src/Flow/MaxRoundsExceeded.ts +39 -0
  624. package/src/Flow/Outcome.ts +179 -0
  625. package/src/Flow/Result.ts +284 -0
  626. package/src/Flow/Runtime.ts +309 -0
  627. package/src/Flow/TypeId.ts +9 -0
  628. package/src/Flow/index.ts +19 -0
  629. package/src/Flow/internal.ts +237 -0
  630. package/src/Flow/make.ts +279 -0
  631. package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
  632. package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
  633. package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
  634. package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
  635. package/src/FlowRuntime/FlowInstance.ts +128 -0
  636. package/src/FlowRuntime/FlowRuntime.ts +333 -0
  637. package/src/FlowRuntime/NodeRecord.ts +183 -0
  638. package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
  639. package/src/FlowRuntime/index.ts +17 -0
  640. package/src/Graph.ts +1860 -0
  641. package/src/HumanTask.ts +1003 -0
  642. package/src/Interpreter.ts +1593 -0
  643. package/src/Poll.ts +414 -0
  644. package/src/RetryPolicy.ts +550 -0
  645. package/src/Sleep.ts +267 -0
  646. package/src/Stall.ts +217 -0
  647. package/src/WaitFor.ts +228 -0
  648. package/src/index.ts +125 -0
  649. package/src/internal/BoundedJson.ts +109 -0
  650. package/src/internal/DeclarationSite.ts +214 -0
  651. package/src/internal/Declarations.ts +49 -0
  652. package/src/internal/ExecutionMiddleware.ts +29 -0
  653. package/src/internal/JsonSchemaSubset.ts +392 -0
  654. 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,134 @@
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; see {@link Flow.deadline}.
82
+ */
83
+ readonly deadline?: Duration.Input | undefined;
84
+ readonly annotations?: Context.Context<never>;
85
+ }
86
+ /**
87
+ * The pure plan-time body, typed with the decoded payload.
88
+ *
89
+ * @private
90
+ */
91
+ 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>;
92
+ /**
93
+ * The payload schema a declaration's `payload` field stands for.
94
+ *
95
+ * @private
96
+ */
97
+ type PayloadSchemaOf<Payload extends Schema.Struct.Fields | AnyStructSchema> = Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload;
98
+ /**
99
+ * Whether a value is a flow this package made.
100
+ *
101
+ * The check is the runtime type id, not the shape: a host that loads a module
102
+ * and finds a default export has to decide whether it holds a flow before it
103
+ * reads anything off it, and a structural guess would accept a look-alike from
104
+ * another flow model.
105
+ *
106
+ * @category predicates
107
+ * @since 0.1.0
108
+ */
109
+ export declare const isFlow: (value: unknown) => value is Any;
110
+ /**
111
+ * Creates a durable flow with one plan-time body or a typed prompt renderer.
112
+ * A prompt lowers to one ordinary action implemented by the host; neither
113
+ * construction nor planning renders it. Model metadata is interpreted by the
114
+ * host and adds no execution model to this package.
115
+ *
116
+ * Invocation IDs are caller-selected or opt-in deterministic IDs derived
117
+ * from the flow tag and idempotency key.
118
+ *
119
+ * @category constructors
120
+ * @since 0.1.0
121
+ */
122
+ export declare const make: {
123
+ <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> & {
124
+ readonly body: Body<Payload, Success, Error, Requires>;
125
+ readonly prompt?: never;
126
+ }): Flow<Tag, PayloadSchemaOf<Payload>, Success, Error, Requires>;
127
+ <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> & {
128
+ readonly prompt: (payload: PayloadSchemaOf<Payload>["Type"]) => string;
129
+ readonly body?: never;
130
+ readonly implementationVersion?: string | undefined;
131
+ }): PromptFlow<Tag, PayloadSchemaOf<Payload>, Success, Error>;
132
+ };
133
+ export {};
134
+ //# 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,106 @@
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
+ // Captured here, where the stack still names the author's file, and carried
60
+ // as a non-enumerable property so no digest can see it
61
+ // (`internal/DeclarationSite.ts`).
62
+ const site = options.declaredFrom === undefined
63
+ ? DeclarationSite.capture()
64
+ : DeclarationSite.declaredAt(options.declaredFrom);
65
+ const payloadSchema = (Schema.isSchema(options.payload)
66
+ ? options.payload
67
+ : Schema.Struct(options.payload));
68
+ const successSchema = options.success ?? Schema.Void;
69
+ const errorSchema = options.error ?? Schema.Never;
70
+ const annotations = lowerDeclarations(options);
71
+ const action = options.prompt === undefined ? undefined : Action.make(`${tag}/prompt`, {
72
+ payload: payloadSchema,
73
+ success: successSchema,
74
+ error: errorSchema,
75
+ capabilities: options.capabilities,
76
+ effects: options.effects,
77
+ annotations,
78
+ tier: options.effects?.tier ?? "irreversible",
79
+ implementationVersion: options.implementationVersion,
80
+ declaredFrom: options.declaredFrom
81
+ });
82
+ // The adapter only describes one dispatch. Prompt rendering belongs to the
83
+ // host implementation and its reviewed source/implementation identity.
84
+ const body = action === undefined ? options.body : Node.capture({ action: action.name, implementationVersion: action.implementationVersion ?? null }, (payload) => action.call(payload));
85
+ return DeclarationSite.annotate(makeProto({
86
+ _tag: tag,
87
+ description: options.description,
88
+ payloadSchema,
89
+ successSchema,
90
+ errorSchema,
91
+ annotations,
92
+ model: options.model,
93
+ effort: options.effort,
94
+ system: options.system,
95
+ chat: options.chat,
96
+ flows: options.flows,
97
+ prompt: options.prompt,
98
+ action,
99
+ body: body,
100
+ idempotencyKey: options.idempotencyKey,
101
+ suspendedRetryPolicy: options.suspendedRetryPolicy,
102
+ maxRounds: options.maxRounds,
103
+ deadline
104
+ }), site);
105
+ };
106
+ //# 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; 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 // 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"}