@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,422 @@
1
+ /**
2
+ * Defines typed durable flow declarations.
3
+ *
4
+ * A `Flow` has a stable tag, schemas for payload, success, and failure, a
5
+ * REQUIRED pure `body`, and an optional idempotency key used to derive
6
+ * execution ids when the caller does not provide one. Flow definitions can be
7
+ * executed, discarded, polled, interrupted, and resumed.
8
+ *
9
+ * The two nouns of `docs/concepts/flows-and-actions.md` divide the
10
+ * surface here: an Action carries an implementation, attached separately as a
11
+ * Layer; a Flow carries a body, and never opaque executable code. There is
12
+ * therefore no handler to attach to a flow, and no `toLayer` on one to attach
13
+ * it with.
14
+ *
15
+ * @since 0.1.0
16
+ */
17
+ import type * as Node from "@smthrs/plan/Node";
18
+ import type * as Planned from "@smthrs/plan/Planned";
19
+ import type * as Cause from "effect/Cause";
20
+ import type * as Context from "effect/Context";
21
+ import type * as Crypto from "effect/Crypto";
22
+ import type * as Duration from "effect/Duration";
23
+ import type * as Effect from "effect/Effect";
24
+ import type * as Option from "effect/Option";
25
+ import type * as Schema from "effect/Schema";
26
+ import type * as Scope from "effect/Scope";
27
+ import type { Declared, PlannedPayload, Requirement } from "../Action/Action.ts";
28
+ import type { CancelRequestFailed } from "../FlowRuntime/CancelRequestFailed.ts";
29
+ import type { ExecutionIdentityConflict } from "../FlowRuntime/ExecutionIdentityConflict.ts";
30
+ import type { FlowCycleDetected } from "../FlowRuntime/FlowCycleDetected.ts";
31
+ import type { FlowExecutionNotFound } from "../FlowRuntime/FlowExecutionNotFound.ts";
32
+ import type { FlowInstance, FlowRuntime } from "../FlowRuntime/index.ts";
33
+ import type * as RetryPolicy from "../RetryPolicy.ts";
34
+ import type { Outcome, To } from "./Outcome.ts";
35
+ import type { Result } from "./Result.ts";
36
+ import type { TypeId } from "./TypeId.ts";
37
+ /**
38
+ * Values with which a flow body may settle one round.
39
+ *
40
+ * A plain decoded success completes the flow. A planned success is a symbolic
41
+ * reference the graph resolves before settlement. An outcome either completes
42
+ * explicitly, hands off to another round, or parks durably.
43
+ *
44
+ * @category models
45
+ * @since 0.1.0
46
+ */
47
+ export type BodySuccess<A> = A | Planned.Planned<A> | Outcome<A | Planned.Planned<A>, unknown>;
48
+ /**
49
+ * A primary model seat with optional ordered fallback seats.
50
+ *
51
+ * @category models
52
+ * @since 1.0.0
53
+ */
54
+ export type ModelSelection = string | readonly [string, ...Array<string>];
55
+ /**
56
+ * Literal metadata a catalog can read without executing the declaration.
57
+ * Model selection and system teaching are interpreted by the host.
58
+ *
59
+ * @category models
60
+ * @since 1.0.0
61
+ */
62
+ export interface DeclarationMetadata {
63
+ readonly model?: ModelSelection | undefined;
64
+ readonly effort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | undefined;
65
+ readonly system?: ReadonlyArray<string> | undefined;
66
+ readonly chat?: boolean | undefined;
67
+ readonly flows?: ReadonlyArray<string> | undefined;
68
+ }
69
+ /**
70
+ * A typed prompt declaration lowered to an ordinary declared action.
71
+ * The host supplies that action's implementation; planning never renders it.
72
+ *
73
+ * @category models
74
+ * @since 1.0.0
75
+ */
76
+ export interface PromptFlow<Tag extends string, Payload extends AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top> extends Flow<Tag, Payload, Success, Error, Requirement<`${Tag}/prompt`>> {
77
+ readonly prompt: (payload: Payload["Type"]) => string;
78
+ readonly action: Declared<`${Tag}/prompt`, Payload, Success, Error>;
79
+ annotate<I, S>(tag: Context.Key<I, S>, value: S): PromptFlow<Tag, Payload, Success, Error>;
80
+ annotateMerge<I>(context: Context.Context<I>): PromptFlow<Tag, Payload, Success, Error>;
81
+ }
82
+ /**
83
+ * Durable flow definition with typed payload, success, and error schemas
84
+ * plus operations for execution, polling, interruption, resumption, and
85
+ * registration.
86
+ *
87
+ * @category models
88
+ * @since 0.1.0
89
+ */
90
+ export interface Flow<Tag extends string, Payload extends AnyStructSchema, Success extends Schema.Top, Error extends Schema.Top, Requires = never> extends DeclarationMetadata {
91
+ new (_: never): {};
92
+ readonly [TypeId]: typeof TypeId;
93
+ readonly _tag: Tag;
94
+ /**
95
+ * One sentence saying what this flow does, for a catalog that lists it.
96
+ *
97
+ * It is a plain literal rather than an annotation because a discovered
98
+ * `flows/<name>/flow.ts` is read WITHOUT being imported: `@smthrs/registry`
99
+ * tokenizes the declaration and takes the description from it, so a flow that
100
+ * states one only in an annotation is listed with nothing to read.
101
+ */
102
+ readonly description?: string | undefined;
103
+ readonly payloadSchema: Payload;
104
+ readonly successSchema: Success;
105
+ readonly errorSchema: Error;
106
+ readonly annotations: Context.Context<never>;
107
+ /** The renderer a prompt declaration supplies to its host. */
108
+ readonly prompt?: ((payload: Payload["Type"]) => string) | undefined;
109
+ /** The ordinary action a prompt declaration asks its host to implement. */
110
+ readonly action?: Declared<any, Payload, Success, Error, any> | undefined;
111
+ /**
112
+ * The pure plan-time body that IS this flow's behavior.
113
+ *
114
+ * The payload is decoded real data and the returned node only describes
115
+ * topology. It is a FIELD rather than an injectable layer because there is
116
+ * exactly one of it, it is pure, and its digest enters the flow's content
117
+ * identity, so a flow cannot plan one way under one wiring and another way
118
+ * under another. Purity includes closure capture: the body must not read
119
+ * mutable module state, clocks, random values, services, or environment
120
+ * values captured outside `payload`; source-digest identity cannot observe
121
+ * those aliases changing. Work that genuinely wants opaque code is an
122
+ * Action.
123
+ *
124
+ * `Requires` is read off this node. A body that names an action names an
125
+ * implementation it does not carry, and that obligation travels with the flow
126
+ * until something executes it.
127
+ */
128
+ readonly body: (payload: Payload["Type"]) => Node.Node<BodySuccess<Success["Type"]>, Error["Type"], Requires>;
129
+ /**
130
+ * Declares the stable key used when a caller supplies no execution id.
131
+ *
132
+ * The flow tag and returned key are JSON-tuple framed, then hashed as their
133
+ * exact UTF-8 strings. No Unicode normalization is applied, and this preimage
134
+ * encoding freezes at rc.0.
135
+ */
136
+ readonly idempotencyKey?: ((payload: Payload["Type"]) => string) | undefined;
137
+ /**
138
+ * How long ONE CALLER keeps polling a suspended execution of this flow.
139
+ *
140
+ * It is a per-caller wall-clock budget, not a bound on the run. `execute`
141
+ * re-drives a parked execution on this schedule and gives up when the
142
+ * schedule is spent; the execution stays parked, and the next caller — a
143
+ * second process, a sweep, a resume — starts a budget of its own. Nothing
144
+ * about it is durable, and a spent budget cancels nothing.
145
+ *
146
+ * What bounds work durably is an action's own `RetryPolicy`: the engine
147
+ * restores `maxAttempts` from the persisted attempt sequence and the
148
+ * `expirationMs` origin from the first attempt's start time, so those
149
+ * survive park, resume, and process death.
150
+ */
151
+ readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined;
152
+ /**
153
+ * How many rounds one trampoline lineage started from this flow may open.
154
+ *
155
+ * The bound is a BUDGET, not loop detection: identical consecutive rounds
156
+ * are legal, so `docs/concepts/trampoline-rounds.md` stops a runaway
157
+ * lineage by counting rounds instead of comparing them. Absent means
158
+ * unbounded, which is the right default for a lineage whose exit condition
159
+ * is its own branch. Exceeding it terminates the lineage with a
160
+ * {@link module:MaxRoundsExceeded.MaxRoundsExceeded} defect recorded in the
161
+ * execution result; it is not a typed `execute` failure.
162
+ */
163
+ readonly maxRounds?: number | undefined;
164
+ /**
165
+ * How long one execution of this flow may take, counted from its first
166
+ * start.
167
+ *
168
+ * The start is journaled, so the bound survives park, resume and process
169
+ * death: a restarted engine honors the original deadline. On expiry the
170
+ * execution settles with a {@link module:DeadlineExceeded.DeadlineExceeded}
171
+ * defect whether it was running or parked, and its attached children are
172
+ * cancelled with it. Absent means unbounded.
173
+ */
174
+ readonly deadline?: Duration.Duration | undefined;
175
+ /**
176
+ * Describes an inline call to this flow without executing it.
177
+ *
178
+ * The callee's steps join the caller's plan, so the callee's requirements are
179
+ * the caller's: `Requires` propagates.
180
+ */
181
+ readonly call: (payload: PlannedPayload<Payload["~type.make.in"]>) => Node.Node<Success["Type"], Error["Type"], Requires>;
182
+ /**
183
+ * Describes an explicit child boundary: ONE node in the caller's plan, and a
184
+ * real child execution when that node is driven.
185
+ *
186
+ * `.call()` splices this flow's body into the caller's plan, so every inner
187
+ * step is visible and individually keyed. `.child()` is the other choice
188
+ * `docs/concepts/flows-and-actions.md` gives: the callee keeps its
189
+ * own execution, journal lineage, retry policy, and placement, and the caller
190
+ * sees one leaf. It is also the way out of the two build refusals inline
191
+ * expansion raises — a recursive `.call()` and a placement the caller cannot
192
+ * satisfy.
193
+ *
194
+ * It is an execution boundary for requirements too, so `Requires` is DROPPED
195
+ * rather than propagated: the child runs under its own driver, which provides
196
+ * its own context, and the caller's plan holds one leaf naming it.
197
+ */
198
+ readonly child: (payload: PlannedPayload<Payload["~type.make.in"]>) => Node.Node<Success["Type"], Error["Type"]>;
199
+ /**
200
+ * Describes a serializable invocation for the next trampoline round.
201
+ *
202
+ * A handoff ends this execution and names the next one, so `Requires` is
203
+ * DROPPED here as well. That is also what keeps a self-loop's type finite: a
204
+ * body that hands off to its own flow would otherwise have to name its own
205
+ * requirements inside them.
206
+ */
207
+ readonly to: (payload: PlannedPayload<Payload["~type.make.in"]>) => Node.Node<To<Payload["Type"]>>;
208
+ /**
209
+ * Add an annotation to the flow.
210
+ */
211
+ annotate<I, S>(key: Context.Key<I, S>, value: S): Flow<Tag, Payload, Success, Error, Requires>;
212
+ /**
213
+ * Merge multiple annotations into the flow.
214
+ */
215
+ annotateMerge<I>(annotations: Context.Context<I>): Flow<Tag, Payload, Success, Error, Requires>;
216
+ /**
217
+ * Execute the flow with the given payload.
218
+ *
219
+ * This is where `Requires` is collected. Planning is requirement-free by
220
+ * design, so a body that names an action nobody implemented is a legal plan
221
+ * right up to here; asking to RUN it is what makes the missing layer a
222
+ * compile error rather than a run that dies partway through.
223
+ *
224
+ * Identity comes from the first source that has one: the `executionId`
225
+ * option, the flow's declared `idempotencyKey`, then the ambient
226
+ * `CurrentExecutionIds` source, whose default mints a fresh UUID. Equal
227
+ * unkeyed payloads start independent executions. Retain the execution id or
228
+ * opt into a derived source to reattach after a crash.
229
+ *
230
+ * A payload that fails the flow's own schema is a typed
231
+ * `Schema.SchemaError` failure carrying the offending field path — caller
232
+ * input is data, not programmer wiring, so it fails rather than dies.
233
+ */
234
+ readonly execute: <const Discard extends boolean = false>(payload: Payload["~type.make.in"], options?: {
235
+ readonly discard?: Discard;
236
+ readonly executionId?: string | undefined;
237
+ }) => Effect.Effect<Discard extends true ? string : Success["Type"], Schema.SchemaError | FlowCycleDetected | ExecutionIdentityConflict | (Discard extends true ? never : Error["Type"]), FlowRuntime | Crypto.Crypto | Requires | Payload["EncodingServices"] | Success["DecodingServices"] | Error["DecodingServices"]>;
238
+ /**
239
+ * Starts a fresh execution and returns its id. Equal payloads start independent
240
+ * executions; declared and ambient idempotency policies are intentionally bypassed.
241
+ * Observe the execution with `poll`, or await it using `execute` with this id.
242
+ */
243
+ readonly start: (payload: Payload["~type.make.in"]) => Effect.Effect<string, Schema.SchemaError | FlowCycleDetected, FlowRuntime | Crypto.Crypto | Requires | Payload["EncodingServices"] | Success["DecodingServices"] | Error["DecodingServices"]>;
244
+ /**
245
+ * Starts or joins the execution identified by this flow tag and an explicit
246
+ * caller key, returning its id. Reusing a key is an explicit retry/reattachment
247
+ * decision. Existing persisted key encodings remain unchanged.
248
+ */
249
+ readonly ensure: (payload: Payload["~type.make.in"], options: {
250
+ readonly key: string;
251
+ }) => ReturnType<Flow<Tag, Payload, Success, Error, Requires>["start"]>;
252
+ /**
253
+ * Poll the current status of a flow execution.
254
+ *
255
+ * `Option.none` means the execution is known and has not settled;
256
+ * {@link FlowExecutionNotFound} means the runtime has no record of the
257
+ * execution id at all.
258
+ */
259
+ readonly poll: (executionId: string) => Effect.Effect<Option.Option<Result<Success["Type"], Error["Type"]>>, FlowExecutionNotFound, FlowRuntime | Success["DecodingServices"] | Error["DecodingServices"]>;
260
+ /**
261
+ * Requests cancellation of the execution.
262
+ *
263
+ * This is not a pause operation. The engine interrupts active work while
264
+ * preserving its normal cleanup, compensation, and child-flow semantics.
265
+ * Calling `resume` does not undo the cancellation request.
266
+ *
267
+ * A durable engine records the cancellation request before it interrupts
268
+ * anything, and reports {@link CancelRequestFailed} when that record could
269
+ * not be written — the execution is then still running, so the caller sees
270
+ * the storage failure instead of a false success. An in-memory engine has
271
+ * nothing to record and never raises it.
272
+ */
273
+ readonly interrupt: (executionId: string) => Effect.Effect<void, CancelRequestFailed, FlowRuntime>;
274
+ /**
275
+ * Re-drives an execution that returned `Suspended` so it can replay its
276
+ * durable history and continue after its awaited condition becomes ready.
277
+ *
278
+ * This does not resume an execution cancelled by `interrupt`, and it is not
279
+ * needed for an execution that is already running or complete.
280
+ *
281
+ * It does NOT collect `Requires`, even though it re-drives the body. The
282
+ * runtime captures the context a flow was REGISTERED under and merges it
283
+ * beneath whatever a run supplies, so the implementations that made the first
284
+ * round possible are the ones a re-driven round reaches; a resumer holding an
285
+ * execution id is not the party that has them. `execute` remains the one
286
+ * place a plan's requirements are asked for.
287
+ */
288
+ readonly resume: (executionId: string) => Effect.Effect<void, never, FlowRuntime>;
289
+ /**
290
+ * For the given payload, compute the execution ID `execute` would run under
291
+ * when the caller names none.
292
+ *
293
+ * That is the flow's `idempotencyKey` when it declares one, and the ambient
294
+ * `CurrentExecutionIds` source otherwise. It dies with `ExecutionIdRequired`
295
+ * when the opt-in `derived` source cannot canonicalize the payload. The default
296
+ * source mints a fresh UUID on each call; pass the returned id explicitly to
297
+ * `execute` to select that invocation.
298
+ *
299
+ * A payload this flow's own schema refuses also dies as a defect here. This
300
+ * differs from `execute`, which fails with a typed `Schema.SchemaError` for
301
+ * the same caller input. A caller precomputing an id should validate the
302
+ * payload first.
303
+ */
304
+ readonly executionId: (payload: Payload["~type.make.in"]) => Effect.Effect<string, never, Crypto.Crypto | Payload["EncodingServices"]>;
305
+ /**
306
+ * Runs an effect and registers how to undo its successful result if the
307
+ * current round later exits unsuccessfully.
308
+ *
309
+ * If the effect itself fails, no rollback is registered. If both the effect
310
+ * and the round succeed, the rollback is discarded. Otherwise the rollback
311
+ * receives the effect's successful value and the round's failure cause when
312
+ * the round's scope closes. Suspension keeps that scope open.
313
+ *
314
+ * A handoff completes the round successfully and discards its `withRollback` registrations.
315
+ * A later round's failure cannot invoke those rollbacks. The engine does not
316
+ * provide lineage-scoped compensation.
317
+ *
318
+ * This applies only to effects run directly inside the flow execution. It
319
+ * does not attach rollback behavior to nested actions.
320
+ */
321
+ readonly withRollback: {
322
+ <A, R2>(rollback: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): <E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | R2 | FlowInstance | Scope.Scope>;
323
+ <A, E, R, R2>(effect: Effect.Effect<A, E, R>, rollback: (value: A, cause: Cause.Cause<Error["Type"]>) => Effect.Effect<void, never, R2>): Effect.Effect<A, E, R | R2 | FlowInstance | Scope.Scope>;
324
+ };
325
+ }
326
+ /**
327
+ * Schema constraint for flow payload schemas that expose struct fields.
328
+ *
329
+ * @category schemas
330
+ * @since 0.1.0
331
+ */
332
+ export interface AnyStructSchema extends Schema.Top {
333
+ readonly fields: Schema.Struct.Fields;
334
+ }
335
+ /**
336
+ * Type-level marker for services associated with a specific flow
337
+ * execution tag.
338
+ *
339
+ * @category models
340
+ * @since 0.1.0
341
+ */
342
+ export interface Execution<Tag extends string> {
343
+ readonly _: unique symbol;
344
+ readonly _tag: Tag;
345
+ }
346
+ /**
347
+ * Type-erased flow shape for APIs that operate on flows without
348
+ * preserving their specific payload, success, or error types.
349
+ *
350
+ * @category models
351
+ * @since 0.1.0
352
+ */
353
+ export interface Any extends DeclarationMetadata {
354
+ new (_: never): {};
355
+ readonly [TypeId]: typeof TypeId;
356
+ readonly _tag: string;
357
+ readonly description?: string | undefined;
358
+ readonly executionId: (payload: any) => Effect.Effect<string, never, any>;
359
+ readonly payloadSchema: AnyStructSchema;
360
+ readonly successSchema: Schema.Top;
361
+ readonly errorSchema: Schema.Top;
362
+ readonly annotations: Context.Context<never>;
363
+ readonly prompt?: ((payload: any) => string) | undefined;
364
+ readonly action?: Pick<Declared<string, AnyStructSchema, Schema.Top, Schema.Top, any>, "name" | "payloadSchema" | "successSchema" | "errorSchema" | "implementationVersion" | "annotations"> | undefined;
365
+ readonly body: (payload: any) => Node.Node<unknown, unknown, any>;
366
+ readonly idempotencyKey?: ((payload: any) => string) | undefined;
367
+ readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined;
368
+ readonly maxRounds?: number | undefined;
369
+ readonly deadline?: Duration.Duration | undefined;
370
+ }
371
+ /**
372
+ * Type-erased flow shape that also exposes executable operations needed by
373
+ * flow proxy and engine helpers.
374
+ *
375
+ * @category models
376
+ * @since 0.1.0
377
+ */
378
+ export interface AnyWithProps extends Any {
379
+ readonly payloadSchema: AnyStructSchema;
380
+ readonly successSchema: Schema.Top;
381
+ readonly errorSchema: Schema.Top;
382
+ readonly execute: (payload: any, options?: {
383
+ readonly discard?: boolean;
384
+ readonly executionId?: string | undefined;
385
+ }) => Effect.Effect<any, any, any>;
386
+ /**
387
+ * Re-drives a durably suspended execution; it does not undo cancellation.
388
+ */
389
+ readonly resume: (executionId: string) => Effect.Effect<void, never, FlowRuntime>;
390
+ }
391
+ /**
392
+ * Extracts the payload schema from a `Flow`.
393
+ *
394
+ * @category models
395
+ * @since 0.1.0
396
+ */
397
+ export type PayloadSchema<W> = W extends Flow<infer _Name, infer _Payload, infer _Success, infer _Error, infer _Requires> ? _Payload : never;
398
+ /**
399
+ * Extracts the requirement channel of a `Flow`: the action implementations
400
+ * its body names and does not carry.
401
+ *
402
+ * @category models
403
+ * @since 0.1.0
404
+ */
405
+ export type Requirements<W> = W extends Flow<infer _Name, infer _Payload, infer _Success, infer _Error, infer _Requires> ? _Requires : never;
406
+ /**
407
+ * Computes the schema services required by clients that execute or poll
408
+ * flows.
409
+ *
410
+ * @category models
411
+ * @since 0.1.0
412
+ */
413
+ export type RequirementsClient<Flows extends Any> = Flows extends Flow<infer _Name, infer _Payload, infer _Success, infer _Error, infer _Requires> ? _Payload["EncodingServices"] | _Success["DecodingServices"] | _Error["DecodingServices"] : never;
414
+ /**
415
+ * Computes the schema services required by handlers that decode flow
416
+ * payloads and encode flow results.
417
+ *
418
+ * @category models
419
+ * @since 0.1.0
420
+ */
421
+ export type RequirementsHandler<Flows extends Any> = Flows extends Flow<infer _Name, infer _Payload, infer _Success, infer _Error, infer _Requires> ? _Payload["DecodingServices"] | _Payload["EncodingServices"] | _Success["DecodingServices"] | _Success["EncodingServices"] | _Error["DecodingServices"] | _Error["EncodingServices"] : never;
422
+ //# sourceMappingURL=Flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flow.d.ts","sourceRoot":"","sources":["../../../src/Flow/Flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Deep reviewed and polished by a human on 2026-08-10.
2
+ export {};
3
+ //# sourceMappingURL=Flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../src/Flow/Flow.ts"],"names":[],"mappings":"AAAA,uDAAuD","sourcesContent":["// Deep reviewed and polished by a human on 2026-08-10.\n\n/**\n * Defines typed durable flow declarations.\n *\n * A `Flow` has a stable tag, schemas for payload, success, and failure, a\n * REQUIRED pure `body`, and an optional idempotency key used to derive\n * execution ids when the caller does not provide one. Flow definitions can be\n * executed, discarded, polled, interrupted, and resumed.\n *\n * The two nouns of `docs/concepts/flows-and-actions.md` divide the\n * surface here: an Action carries an implementation, attached separately as a\n * Layer; a Flow carries a body, and never opaque executable code. There is\n * therefore no handler to attach to a flow, and no `toLayer` on one to attach\n * it with.\n *\n * @since 0.1.0\n */\n\nimport type * as Node from \"@smthrs/plan/Node\"\nimport type * as Planned from \"@smthrs/plan/Planned\"\nimport type * as Cause from \"effect/Cause\"\nimport type * as Context from \"effect/Context\"\nimport type * as Crypto from \"effect/Crypto\"\nimport type * as Duration from \"effect/Duration\"\nimport type * as Effect from \"effect/Effect\"\nimport type * as Option from \"effect/Option\"\nimport type * as Schema from \"effect/Schema\"\nimport type * as Scope from \"effect/Scope\"\nimport type { Declared, PlannedPayload, Requirement } from \"../Action/Action.ts\"\nimport type { CancelRequestFailed } from \"../FlowRuntime/CancelRequestFailed.ts\"\nimport type { ExecutionIdentityConflict } from \"../FlowRuntime/ExecutionIdentityConflict.ts\"\nimport type { FlowCycleDetected } from \"../FlowRuntime/FlowCycleDetected.ts\"\nimport type { FlowExecutionNotFound } from \"../FlowRuntime/FlowExecutionNotFound.ts\"\nimport type { FlowInstance, FlowRuntime } from \"../FlowRuntime/index.ts\"\nimport type * as RetryPolicy from \"../RetryPolicy.ts\"\nimport type { Outcome, To } from \"./Outcome.ts\"\nimport type { Result } from \"./Result.ts\"\nimport type { TypeId } from \"./TypeId.ts\"\n\n/**\n * Values with which a flow body may settle one round.\n *\n * A plain decoded success completes the flow. A planned success is a symbolic\n * reference the graph resolves before settlement. An outcome either completes\n * explicitly, hands off to another round, or parks durably.\n *\n * @category models\n * @since 0.1.0\n */\nexport type BodySuccess<A> = A | Planned.Planned<A> | Outcome<A | Planned.Planned<A>, unknown>\n\n/**\n * A primary model seat with optional ordered fallback seats.\n *\n * @category models\n * @since 1.0.0\n */\nexport type ModelSelection = string | readonly [string, ...Array<string>]\n\n/**\n * Literal metadata a catalog can read without executing the declaration.\n * Model selection and system teaching are interpreted by the host.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface DeclarationMetadata {\n readonly model?: ModelSelection | undefined\n readonly effort?: \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" | undefined\n readonly system?: ReadonlyArray<string> | undefined\n readonly chat?: boolean | undefined\n readonly flows?: ReadonlyArray<string> | undefined\n}\n\n/**\n * A typed prompt declaration lowered to an ordinary declared action.\n * The host supplies that action's implementation; planning never renders it.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface PromptFlow<\n Tag extends string,\n Payload extends AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top\n> extends Flow<Tag, Payload, Success, Error, Requirement<`${Tag}/prompt`>> {\n readonly prompt: (payload: Payload[\"Type\"]) => string\n readonly action: Declared<`${Tag}/prompt`, Payload, Success, Error>\n annotate<I, S>(tag: Context.Key<I, S>, value: S): PromptFlow<Tag, Payload, Success, Error>\n annotateMerge<I>(context: Context.Context<I>): PromptFlow<Tag, Payload, Success, Error>\n}\n\n/**\n * Durable flow definition with typed payload, success, and error schemas\n * plus operations for execution, polling, interruption, resumption, and\n * registration.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Flow<\n Tag extends string,\n Payload extends AnyStructSchema,\n Success extends Schema.Top,\n Error extends Schema.Top,\n Requires = never\n> extends DeclarationMetadata {\n new(_: never): {}\n\n readonly [TypeId]: typeof TypeId\n readonly _tag: Tag\n /**\n * One sentence saying what this flow does, for a catalog that lists it.\n *\n * It is a plain literal rather than an annotation because a discovered\n * `flows/<name>/flow.ts` is read WITHOUT being imported: `@smthrs/registry`\n * tokenizes the declaration and takes the description from it, so a flow that\n * states one only in an annotation is listed with nothing to read.\n */\n readonly description?: string | undefined\n readonly payloadSchema: Payload\n readonly successSchema: Success\n readonly errorSchema: Error\n readonly annotations: Context.Context<never>\n /** The renderer a prompt declaration supplies to its host. */\n readonly prompt?: ((payload: Payload[\"Type\"]) => string) | undefined\n /** The ordinary action a prompt declaration asks its host to implement. */\n readonly action?: Declared<any, Payload, Success, Error, any> | undefined\n /**\n * The pure plan-time body that IS this flow's behavior.\n *\n * The payload is decoded real data and the returned node only describes\n * topology. It is a FIELD rather than an injectable layer because there is\n * exactly one of it, it is pure, and its digest enters the flow's content\n * identity, so a flow cannot plan one way under one wiring and another way\n * under another. Purity includes closure capture: the body must not read\n * mutable module state, clocks, random values, services, or environment\n * values captured outside `payload`; source-digest identity cannot observe\n * those aliases changing. Work that genuinely wants opaque code is an\n * Action.\n *\n * `Requires` is read off this node. A body that names an action names an\n * implementation it does not carry, and that obligation travels with the flow\n * until something executes it.\n */\n readonly body: (payload: Payload[\"Type\"]) => Node.Node<BodySuccess<Success[\"Type\"]>, Error[\"Type\"], Requires>\n /**\n * Declares the stable key used when a caller supplies no execution id.\n *\n * The flow tag and returned key are JSON-tuple framed, then hashed as their\n * exact UTF-8 strings. No Unicode normalization is applied, and this preimage\n * encoding freezes at rc.0.\n */\n readonly idempotencyKey?: ((payload: Payload[\"Type\"]) => string) | undefined\n /**\n * How long ONE CALLER keeps polling a suspended execution of this flow.\n *\n * It is a per-caller wall-clock budget, not a bound on the run. `execute`\n * re-drives a parked execution on this schedule and gives up when the\n * schedule is spent; the execution stays parked, and the next caller — a\n * second process, a sweep, a resume — starts a budget of its own. Nothing\n * about it is durable, and a spent budget cancels nothing.\n *\n * What bounds work durably is an action's own `RetryPolicy`: the engine\n * restores `maxAttempts` from the persisted attempt sequence and the\n * `expirationMs` origin from the first attempt's start time, so those\n * survive park, resume, and process death.\n */\n readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined\n /**\n * How many rounds one trampoline lineage started from this flow may open.\n *\n * The bound is a BUDGET, not loop detection: identical consecutive rounds\n * are legal, so `docs/concepts/trampoline-rounds.md` stops a runaway\n * lineage by counting rounds instead of comparing them. Absent means\n * unbounded, which is the right default for a lineage whose exit condition\n * is its own branch. Exceeding it terminates the lineage with a\n * {@link module:MaxRoundsExceeded.MaxRoundsExceeded} defect recorded in the\n * execution result; it is not a typed `execute` failure.\n */\n readonly maxRounds?: number | undefined\n /**\n * How long one execution of this flow may take, counted from its first\n * start.\n *\n * The start is journaled, so the bound survives park, resume and process\n * death: a restarted engine honors the original deadline. On expiry the\n * execution settles with a {@link module:DeadlineExceeded.DeadlineExceeded}\n * defect whether it was running or parked, and its attached children are\n * cancelled with it. Absent means unbounded.\n */\n readonly deadline?: Duration.Duration | undefined\n\n /**\n * Describes an inline call to this flow without executing it.\n *\n * The callee's steps join the caller's plan, so the callee's requirements are\n * the caller's: `Requires` propagates.\n */\n readonly call: (\n payload: PlannedPayload<Payload[\"~type.make.in\"]>\n ) => Node.Node<Success[\"Type\"], Error[\"Type\"], Requires>\n\n /**\n * Describes an explicit child boundary: ONE node in the caller's plan, and a\n * real child execution when that node is driven.\n *\n * `.call()` splices this flow's body into the caller's plan, so every inner\n * step is visible and individually keyed. `.child()` is the other choice\n * `docs/concepts/flows-and-actions.md` gives: the callee keeps its\n * own execution, journal lineage, retry policy, and placement, and the caller\n * sees one leaf. It is also the way out of the two build refusals inline\n * expansion raises — a recursive `.call()` and a placement the caller cannot\n * satisfy.\n *\n * It is an execution boundary for requirements too, so `Requires` is DROPPED\n * rather than propagated: the child runs under its own driver, which provides\n * its own context, and the caller's plan holds one leaf naming it.\n */\n readonly child: (\n payload: PlannedPayload<Payload[\"~type.make.in\"]>\n ) => Node.Node<Success[\"Type\"], Error[\"Type\"]>\n\n /**\n * Describes a serializable invocation for the next trampoline round.\n *\n * A handoff ends this execution and names the next one, so `Requires` is\n * DROPPED here as well. That is also what keeps a self-loop's type finite: a\n * body that hands off to its own flow would otherwise have to name its own\n * requirements inside them.\n */\n readonly to: (\n payload: PlannedPayload<Payload[\"~type.make.in\"]>\n ) => Node.Node<To<Payload[\"Type\"]>>\n\n /**\n * Add an annotation to the flow.\n */\n annotate<I, S>(\n key: Context.Key<I, S>,\n value: S\n ): Flow<Tag, Payload, Success, Error, Requires>\n\n /**\n * Merge multiple annotations into the flow.\n */\n annotateMerge<I>(\n annotations: Context.Context<I>\n ): Flow<Tag, Payload, Success, Error, Requires>\n\n /**\n * Execute the flow with the given payload.\n *\n * This is where `Requires` is collected. Planning is requirement-free by\n * design, so a body that names an action nobody implemented is a legal plan\n * right up to here; asking to RUN it is what makes the missing layer a\n * compile error rather than a run that dies partway through.\n *\n * Identity comes from the first source that has one: the `executionId`\n * option, the flow's declared `idempotencyKey`, then the ambient\n * `CurrentExecutionIds` source, whose default mints a fresh UUID. Equal\n * unkeyed payloads start independent executions. Retain the execution id or\n * opt into a derived source to reattach after a crash.\n *\n * A payload that fails the flow's own schema is a typed\n * `Schema.SchemaError` failure carrying the offending field path — caller\n * input is data, not programmer wiring, so it fails rather than dies.\n */\n readonly execute: <const Discard extends boolean = false>(\n payload: Payload[\"~type.make.in\"],\n options?: {\n readonly discard?: Discard\n readonly executionId?: string | undefined\n }\n ) => Effect.Effect<\n Discard extends true ? string : Success[\"Type\"],\n Schema.SchemaError | FlowCycleDetected | ExecutionIdentityConflict | (Discard extends true ? never : Error[\"Type\"]),\n | FlowRuntime\n | Crypto.Crypto\n | Requires\n | Payload[\"EncodingServices\"]\n | Success[\"DecodingServices\"]\n | Error[\"DecodingServices\"]\n >\n\n /**\n * Starts a fresh execution and returns its id. Equal payloads start independent\n * executions; declared and ambient idempotency policies are intentionally bypassed.\n * Observe the execution with `poll`, or await it using `execute` with this id.\n */\n readonly start: (payload: Payload[\"~type.make.in\"]) => Effect.Effect<\n string,\n Schema.SchemaError | FlowCycleDetected,\n | FlowRuntime\n | Crypto.Crypto\n | Requires\n | Payload[\"EncodingServices\"]\n | Success[\"DecodingServices\"]\n | Error[\"DecodingServices\"]\n >\n\n /**\n * Starts or joins the execution identified by this flow tag and an explicit\n * caller key, returning its id. Reusing a key is an explicit retry/reattachment\n * decision. Existing persisted key encodings remain unchanged.\n */\n readonly ensure: (\n payload: Payload[\"~type.make.in\"],\n options: { readonly key: string }\n ) => ReturnType<Flow<Tag, Payload, Success, Error, Requires>[\"start\"]>\n\n /**\n * Poll the current status of a flow execution.\n *\n * `Option.none` means the execution is known and has not settled;\n * {@link FlowExecutionNotFound} means the runtime has no record of the\n * execution id at all.\n */\n readonly poll: (\n executionId: string\n ) => Effect.Effect<\n Option.Option<Result<Success[\"Type\"], Error[\"Type\"]>>,\n FlowExecutionNotFound,\n FlowRuntime | Success[\"DecodingServices\"] | Error[\"DecodingServices\"]\n >\n\n /**\n * Requests cancellation of the execution.\n *\n * This is not a pause operation. The engine interrupts active work while\n * preserving its normal cleanup, compensation, and child-flow semantics.\n * Calling `resume` does not undo the cancellation request.\n *\n * A durable engine records the cancellation request before it interrupts\n * anything, and reports {@link CancelRequestFailed} when that record could\n * not be written — the execution is then still running, so the caller sees\n * the storage failure instead of a false success. An in-memory engine has\n * nothing to record and never raises it.\n */\n readonly interrupt: (\n executionId: string\n ) => Effect.Effect<void, CancelRequestFailed, FlowRuntime>\n\n /**\n * Re-drives an execution that returned `Suspended` so it can replay its\n * durable history and continue after its awaited condition becomes ready.\n *\n * This does not resume an execution cancelled by `interrupt`, and it is not\n * needed for an execution that is already running or complete.\n *\n * It does NOT collect `Requires`, even though it re-drives the body. The\n * runtime captures the context a flow was REGISTERED under and merges it\n * beneath whatever a run supplies, so the implementations that made the first\n * round possible are the ones a re-driven round reaches; a resumer holding an\n * execution id is not the party that has them. `execute` remains the one\n * place a plan's requirements are asked for.\n */\n readonly resume: (\n executionId: string\n ) => Effect.Effect<void, never, FlowRuntime>\n\n /**\n * For the given payload, compute the execution ID `execute` would run under\n * when the caller names none.\n *\n * That is the flow's `idempotencyKey` when it declares one, and the ambient\n * `CurrentExecutionIds` source otherwise. It dies with `ExecutionIdRequired`\n * when the opt-in `derived` source cannot canonicalize the payload. The default\n * source mints a fresh UUID on each call; pass the returned id explicitly to\n * `execute` to select that invocation.\n *\n * A payload this flow's own schema refuses also dies as a defect here. This\n * differs from `execute`, which fails with a typed `Schema.SchemaError` for\n * the same caller input. A caller precomputing an id should validate the\n * payload first.\n */\n readonly executionId: (\n payload: Payload[\"~type.make.in\"]\n ) => Effect.Effect<string, never, Crypto.Crypto | Payload[\"EncodingServices\"]>\n\n /**\n * Runs an effect and registers how to undo its successful result if the\n * current round later exits unsuccessfully.\n *\n * If the effect itself fails, no rollback is registered. If both the effect\n * and the round succeed, the rollback is discarded. Otherwise the rollback\n * receives the effect's successful value and the round's failure cause when\n * the round's scope closes. Suspension keeps that scope open.\n *\n * A handoff completes the round successfully and discards its `withRollback` registrations.\n * A later round's failure cannot invoke those rollbacks. The engine does not\n * provide lineage-scoped compensation.\n *\n * This applies only to effects run directly inside the flow execution. It\n * does not attach rollback behavior to nested actions.\n */\n readonly withRollback: {\n <A, R2>(\n rollback: (\n value: A,\n cause: Cause.Cause<Error[\"Type\"]>\n ) => Effect.Effect<void, never, R2>\n ): <E, R>(\n effect: Effect.Effect<A, E, R>\n ) => Effect.Effect<\n A,\n E,\n R | R2 | FlowInstance | Scope.Scope\n >\n <A, E, R, R2>(\n effect: Effect.Effect<A, E, R>,\n rollback: (\n value: A,\n cause: Cause.Cause<Error[\"Type\"]>\n ) => Effect.Effect<void, never, R2>\n ): Effect.Effect<\n A,\n E,\n R | R2 | FlowInstance | Scope.Scope\n >\n }\n}\n\n/**\n * Schema constraint for flow payload schemas that expose struct fields.\n *\n * @category schemas\n * @since 0.1.0\n */\nexport interface AnyStructSchema extends Schema.Top {\n readonly fields: Schema.Struct.Fields\n}\n\n/**\n * Type-level marker for services associated with a specific flow\n * execution tag.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Execution<Tag extends string> {\n readonly _: unique symbol\n readonly _tag: Tag\n}\n\n/**\n * Type-erased flow shape for APIs that operate on flows without\n * preserving their specific payload, success, or error types.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Any extends DeclarationMetadata {\n new(_: never): {}\n\n readonly [TypeId]: typeof TypeId\n readonly _tag: string\n readonly description?: string | undefined\n readonly executionId: (payload: any) => Effect.Effect<string, never, any>\n readonly payloadSchema: AnyStructSchema\n readonly successSchema: Schema.Top\n readonly errorSchema: Schema.Top\n readonly annotations: Context.Context<never>\n readonly prompt?: ((payload: any) => string) | undefined\n readonly action?:\n | Pick<\n Declared<string, AnyStructSchema, Schema.Top, Schema.Top, any>,\n \"name\" | \"payloadSchema\" | \"successSchema\" | \"errorSchema\" | \"implementationVersion\" | \"annotations\"\n >\n | undefined\n readonly body: (payload: any) => Node.Node<unknown, unknown, any>\n readonly idempotencyKey?: ((payload: any) => string) | undefined\n readonly suspendedRetryPolicy?: RetryPolicy.RetryPolicy | undefined\n readonly maxRounds?: number | undefined\n readonly deadline?: Duration.Duration | undefined\n}\n\n/**\n * Type-erased flow shape that also exposes executable operations needed by\n * flow proxy and engine helpers.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface AnyWithProps extends Any {\n readonly payloadSchema: AnyStructSchema\n readonly successSchema: Schema.Top\n readonly errorSchema: Schema.Top\n readonly execute: (\n payload: any,\n options?: {\n readonly discard?: boolean\n readonly executionId?: string | undefined\n }\n ) => Effect.Effect<any, any, any>\n /**\n * Re-drives a durably suspended execution; it does not undo cancellation.\n */\n readonly resume: (\n executionId: string\n ) => Effect.Effect<void, never, FlowRuntime>\n}\n\n/**\n * Extracts the payload schema from a `Flow`.\n *\n * @category models\n * @since 0.1.0\n */\nexport type PayloadSchema<W> = W extends Flow<\n infer _Name,\n infer _Payload,\n infer _Success,\n infer _Error,\n infer _Requires\n> ? _Payload\n : never\n\n/**\n * Extracts the requirement channel of a `Flow`: the action implementations\n * its body names and does not carry.\n *\n * @category models\n * @since 0.1.0\n */\nexport type Requirements<W> = W extends Flow<\n infer _Name,\n infer _Payload,\n infer _Success,\n infer _Error,\n infer _Requires\n> ? _Requires\n : never\n\n/**\n * Computes the schema services required by clients that execute or poll\n * flows.\n *\n * @category models\n * @since 0.1.0\n */\nexport type RequirementsClient<Flows extends Any> = Flows extends Flow<\n infer _Name,\n infer _Payload,\n infer _Success,\n infer _Error,\n infer _Requires\n> ?\n | _Payload[\"EncodingServices\"]\n | _Success[\"DecodingServices\"]\n | _Error[\"DecodingServices\"]\n : never\n\n/**\n * Computes the schema services required by handlers that decode flow\n * payloads and encode flow results.\n *\n * @category models\n * @since 0.1.0\n */\nexport type RequirementsHandler<Flows extends Any> = Flows extends Flow<\n infer _Name,\n infer _Payload,\n infer _Success,\n infer _Error,\n infer _Requires\n> ?\n | _Payload[\"DecodingServices\"]\n | _Payload[\"EncodingServices\"]\n | _Success[\"DecodingServices\"]\n | _Success[\"EncodingServices\"]\n | _Error[\"DecodingServices\"]\n | _Error[\"EncodingServices\"]\n : never\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Defect recorded when a trampoline lineage runs past its declared round budget.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Schema from "effect/Schema";
7
+ declare const MaxRoundsExceeded_base: Schema.Class<MaxRoundsExceeded, Schema.TaggedStruct<"@smthrs/flow/MaxRoundsExceeded", {
8
+ readonly code: Schema.withConstructorDefault<Schema.Literal<"max_rounds_exceeded">>;
9
+ readonly flowName: Schema.String;
10
+ readonly lineageId: Schema.String;
11
+ readonly maxRounds: Schema.Number;
12
+ readonly roundOrdinal: Schema.Number;
13
+ readonly message: Schema.String;
14
+ }>, import("effect/Cause").YieldableError>;
15
+ /**
16
+ * A lineage asked for one more round than its flow's `maxRounds` allows.
17
+ *
18
+ * `docs/concepts/trampoline-rounds.md` chooses a budget over loop
19
+ * detection: identical consecutive rounds are legal (a poller is exactly
20
+ * that), so the only honest stop condition is a declared bound on how many
21
+ * rounds one lineage may open. Exceeding it is terminal for the lineage — the
22
+ * round that asked for the handoff is settled with this defect rather than
23
+ * handed off — because a lineage that has run out of budget has nowhere left
24
+ * to continue, and letting it keep going would make the bound advisory.
25
+ *
26
+ * `roundOrdinal` is the zero-based ordinal of the round that was refused, so
27
+ * it always equals `maxRounds` when the refusal is raised.
28
+ *
29
+ * @category errors
30
+ * @since 0.1.0
31
+ */
32
+ export declare class MaxRoundsExceeded extends MaxRoundsExceeded_base {
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=MaxRoundsExceeded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxRoundsExceeded.d.ts","sourceRoot":"","sources":["../../../src/Flow/MaxRoundsExceeded.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;;;;;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAkB,SAAQ,sBAYtC;CAAG"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Defect recorded when a trampoline lineage runs past its declared round budget.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import * as Schema from "effect/Schema";
8
+ /**
9
+ * A lineage asked for one more round than its flow's `maxRounds` allows.
10
+ *
11
+ * `docs/concepts/trampoline-rounds.md` chooses a budget over loop
12
+ * detection: identical consecutive rounds are legal (a poller is exactly
13
+ * that), so the only honest stop condition is a declared bound on how many
14
+ * rounds one lineage may open. Exceeding it is terminal for the lineage — the
15
+ * round that asked for the handoff is settled with this defect rather than
16
+ * handed off — because a lineage that has run out of budget has nowhere left
17
+ * to continue, and letting it keep going would make the bound advisory.
18
+ *
19
+ * `roundOrdinal` is the zero-based ordinal of the round that was refused, so
20
+ * it always equals `maxRounds` when the refusal is raised.
21
+ *
22
+ * @category errors
23
+ * @since 0.1.0
24
+ */
25
+ export class MaxRoundsExceeded extends Schema.TaggedError()("@smthrs/flow/MaxRoundsExceeded", {
26
+ code: Schema.Literal("max_rounds_exceeded").pipe(Schema.withConstructorDefault(Effect.succeed("max_rounds_exceeded"))),
27
+ flowName: Schema.String,
28
+ lineageId: Schema.String,
29
+ maxRounds: Schema.Number,
30
+ roundOrdinal: Schema.Number,
31
+ message: Schema.String
32
+ }) {
33
+ }
34
+ //# sourceMappingURL=MaxRoundsExceeded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxRoundsExceeded.js","sourceRoot":"","sources":["../../../src/Flow/MaxRoundsExceeded.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,gCAAgC,EAChC;IACE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CACrE;IACD,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["/**\n * Defect recorded when a trampoline lineage runs past its declared round budget.\n *\n * @since 0.1.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * A lineage asked for one more round than its flow's `maxRounds` allows.\n *\n * `docs/concepts/trampoline-rounds.md` chooses a budget over loop\n * detection: identical consecutive rounds are legal (a poller is exactly\n * that), so the only honest stop condition is a declared bound on how many\n * rounds one lineage may open. Exceeding it is terminal for the lineage — the\n * round that asked for the handoff is settled with this defect rather than\n * handed off — because a lineage that has run out of budget has nowhere left\n * to continue, and letting it keep going would make the bound advisory.\n *\n * `roundOrdinal` is the zero-based ordinal of the round that was refused, so\n * it always equals `maxRounds` when the refusal is raised.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class MaxRoundsExceeded extends Schema.TaggedError<MaxRoundsExceeded>()(\n \"@smthrs/flow/MaxRoundsExceeded\",\n {\n code: Schema.Literal(\"max_rounds_exceeded\").pipe(\n Schema.withConstructorDefault(Effect.succeed(\"max_rounds_exceeded\"))\n ),\n flowName: Schema.String,\n lineageId: Schema.String,\n maxRounds: Schema.Number,\n roundOrdinal: Schema.Number,\n message: Schema.String\n }\n) {}\n"]}