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

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 +161 -0
  2. package/LICENSE +21 -0
  3. package/README.md +212 -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 +387 -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 +110 -0
  106. package/dist/cjs/Deadline.d.ts.map +1 -0
  107. package/dist/cjs/Deadline.js +112 -0
  108. package/dist/cjs/Deadline.js.map +7 -0
  109. package/dist/cjs/DurableClock.d.ts +60 -0
  110. package/dist/cjs/DurableClock.d.ts.map +1 -0
  111. package/dist/cjs/DurableClock.js +107 -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 +339 -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 +186 -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 +149 -0
  182. package/dist/cjs/Flow/make.d.ts.map +1 -0
  183. package/dist/cjs/Flow/make.js +107 -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 +204 -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 +177 -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 +1020 -0
  224. package/dist/cjs/Graph.js.map +7 -0
  225. package/dist/cjs/HumanTask.d.ts +442 -0
  226. package/dist/cjs/HumanTask.d.ts.map +1 -0
  227. package/dist/cjs/HumanTask.js +422 -0
  228. package/dist/cjs/HumanTask.js.map +7 -0
  229. package/dist/cjs/Interpreter.d.ts +223 -0
  230. package/dist/cjs/Interpreter.d.ts.map +1 -0
  231. package/dist/cjs/Interpreter.js +919 -0
  232. package/dist/cjs/Interpreter.js.map +7 -0
  233. package/dist/cjs/Poll.d.ts +240 -0
  234. package/dist/cjs/Poll.d.ts.map +1 -0
  235. package/dist/cjs/Poll.js +154 -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 +141 -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 +413 -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 +110 -0
  383. package/dist/esm/Deadline.d.ts.map +1 -0
  384. package/dist/esm/Deadline.js +164 -0
  385. package/dist/esm/Deadline.js.map +1 -0
  386. package/dist/esm/DurableClock.d.ts +60 -0
  387. package/dist/esm/DurableClock.d.ts.map +1 -0
  388. package/dist/esm/DurableClock.js +122 -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 +252 -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 +149 -0
  459. package/dist/esm/Flow/make.d.ts.map +1 -0
  460. package/dist/esm/Flow/make.js +111 -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 +204 -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 +177 -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 +1485 -0
  501. package/dist/esm/Graph.js.map +1 -0
  502. package/dist/esm/HumanTask.d.ts +442 -0
  503. package/dist/esm/HumanTask.d.ts.map +1 -0
  504. package/dist/esm/HumanTask.js +810 -0
  505. package/dist/esm/HumanTask.js.map +1 -0
  506. package/dist/esm/Interpreter.d.ts +223 -0
  507. package/dist/esm/Interpreter.d.ts.map +1 -0
  508. package/dist/esm/Interpreter.js +1301 -0
  509. package/dist/esm/Interpreter.js.map +1 -0
  510. package/dist/esm/Poll.d.ts +240 -0
  511. package/dist/esm/Poll.d.ts.map +1 -0
  512. package/dist/esm/Poll.js +289 -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 +256 -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 +152 -0
  559. package/docs/api.md +440 -0
  560. package/docs/concepts/bodies-and-plans.md +167 -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 +164 -0
  568. package/docs/guides/cancel-and-roll-back.md +112 -0
  569. package/docs/guides/implement-an-action.md +155 -0
  570. package/docs/guides/inspect-the-plan.md +235 -0
  571. package/docs/guides/poll-until-ready.md +169 -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 +129 -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 +87 -0
  581. package/docs/quickstart.md +164 -0
  582. package/docs/reference/flow.md +1835 -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 +671 -0
  609. package/src/Action/raceAll.ts +48 -0
  610. package/src/Action/retry.ts +92 -0
  611. package/src/Deadline.ts +201 -0
  612. package/src/DurableClock.ts +176 -0
  613. package/src/DurableDeferred.ts +753 -0
  614. package/src/DurableQueue.ts +519 -0
  615. package/src/ExternalJob.ts +437 -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 +339 -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 +299 -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 +339 -0
  637. package/src/FlowRuntime/NodeRecord.ts +185 -0
  638. package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
  639. package/src/FlowRuntime/index.ts +17 -0
  640. package/src/Graph.ts +1865 -0
  641. package/src/HumanTask.ts +1021 -0
  642. package/src/Interpreter.ts +1635 -0
  643. package/src/Poll.ts +420 -0
  644. package/src/RetryPolicy.ts +550 -0
  645. package/src/Sleep.ts +296 -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,296 @@
1
+ /**
2
+ * Durable external work as ordinary actions, handoffs and parked timers.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import * as Node from "@smthrs/plan/Node";
7
+ import * as Cause from "effect/Cause";
8
+ import * as Clock from "effect/Clock";
9
+ import * as Context from "effect/Context";
10
+ import * as Duration from "effect/Duration";
11
+ import * as Effect from "effect/Effect";
12
+ import * as Layer from "effect/Layer";
13
+ import * as Option from "effect/Option";
14
+ import * as Schema from "effect/Schema";
15
+ import * as Action from "./Action/index.js";
16
+ import * as Fault from "./Fault.js";
17
+ import * as Flow from "./Flow/index.js";
18
+ import { FlowInstance } from "./FlowRuntime/FlowInstance.js";
19
+ import { ExecutionMiddleware } from "./internal/ExecutionMiddleware.js";
20
+ import * as Interpreter from "./Interpreter.js";
21
+ import * as Sleep from "./Sleep.js";
22
+ /**
23
+ * External process observation.
24
+ * @category schemas
25
+ * @since 1.0.0
26
+ */
27
+ export const Status = Schema.Union([
28
+ Schema.Struct({ _tag: Schema.Literal("Running") }),
29
+ Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }),
30
+ Schema.Struct({ _tag: Schema.Literal("Lost") })
31
+ ]);
32
+ /**
33
+ * A collected exit that can be replaced.
34
+ *
35
+ * @category errors
36
+ * @since 1.0.0
37
+ */
38
+ export class Again extends Schema.TaggedError()("@smthrs/flow/ExternalJobAgain", { message: Schema.String }) {
39
+ }
40
+ /**
41
+ * No worker or exit receipt remains.
42
+ *
43
+ * @category errors
44
+ * @since 1.0.0
45
+ */
46
+ export class ExternalJobLost extends Schema.TaggedError()("@smthrs/flow/ExternalJobLost", {
47
+ key: Schema.String,
48
+ message: Schema.String
49
+ }) {
50
+ }
51
+ /**
52
+ * The deadline anchored before initial start elapsed.
53
+ *
54
+ * @category errors
55
+ * @since 1.0.0
56
+ */
57
+ export class ExternalJobTimedOut extends Schema.TaggedError()("@smthrs/flow/ExternalJobTimedOut", {
58
+ key: Schema.String,
59
+ message: Schema.String
60
+ }) {
61
+ }
62
+ Fault.register("@smthrs/flow/ExternalJobLost", "infra");
63
+ Fault.register("@smthrs/flow/ExternalJobTimedOut", "dependency");
64
+ Fault.register("@smthrs/flow/ExternalJobAgain", "dependency");
65
+ const millis = (value, field) => {
66
+ const parsed = Duration.fromInput(value);
67
+ const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN;
68
+ if (!Number.isFinite(result) || result <= 0) {
69
+ throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`);
70
+ }
71
+ return result;
72
+ };
73
+ /**
74
+ * Create-or-get by execution id and generation. Private ordinary flows carry
75
+ * journaled state; initial callers cannot supply a key or continuation handle.
76
+ * `restarts` counts replacement generations; zero permits only g1.
77
+ * @category constructors
78
+ * @since 1.0.0
79
+ */
80
+ export const make = (tag, options) => {
81
+ const every = millis(options.probe.every, "probe.every");
82
+ const maximum = millis(options.probe.max, "probe.max");
83
+ const timeout = millis(options.timeout, "timeout");
84
+ const restarts = options.restarts ?? 0;
85
+ if (maximum < every)
86
+ throw new RangeError("ExternalJob.make: probe.max must be at least probe.every");
87
+ if (!Number.isSafeInteger(restarts) || restarts < 0) {
88
+ throw new RangeError("ExternalJob.make: restarts must be a nonnegative safe integer");
89
+ }
90
+ // Erase field modifiers at nesting boundaries: these are required values,
91
+ // even when the author's schema contains optional fields internally.
92
+ const input = (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload));
93
+ const handle = options.handle;
94
+ const providerError = (options.error ?? Schema.Never);
95
+ const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid]);
96
+ const state = Schema.Struct({
97
+ input,
98
+ origin: Schema.String,
99
+ startedAt: Schema.Number,
100
+ generation: Schema.Int,
101
+ probe: Schema.Int
102
+ });
103
+ const observed = Schema.Struct({ ...state.fields, handle });
104
+ const keyOf = (job) => `${job.origin}#g${job.generation}`;
105
+ const captures = { tag, every, maximum, timeout, restarts, version: "external-job/v1" };
106
+ const active = Context.Service(`${tag}/ExternalJobActive`);
107
+ // Registry tables wrap get() for module isolation but retain add(), the
108
+ // scoped registration owner. Anchor lifecycle bindings to that owner.
109
+ const cancellations = new WeakMap();
110
+ const annotations = Context.make(ExecutionMiddleware, {
111
+ wrap: (payload, body) => Effect.gen(function* () {
112
+ const instance = yield* FlowInstance;
113
+ const table = yield* Action.Implementations;
114
+ const cancel = cancellations.get(table.add);
115
+ if (cancel === undefined) {
116
+ return yield* Effect.die(new Interpreter.InterpreterError({
117
+ code: "unresolved_action",
118
+ flow: tag,
119
+ node: `${tag}/cancel`,
120
+ message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`
121
+ }));
122
+ }
123
+ const current = {
124
+ executionId: instance.executionId,
125
+ current: instance.flow._tag === `${tag}/observe`
126
+ ? { handle: payload.handle, key: keyOf(payload) } :
127
+ undefined
128
+ };
129
+ yield* Flow.withRollback(Effect.succeed(current), (value, cause) => Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined
130
+ ? Effect.void :
131
+ cancel(value.current.handle, value.current.key));
132
+ return yield* body.pipe(Effect.provideService(active, current));
133
+ })
134
+ });
135
+ const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state });
136
+ const Start = Action.make(`${tag}/start`, {
137
+ payload: state,
138
+ success: options.handle,
139
+ error: providerError,
140
+ tier: "irreversible",
141
+ idempotencyKey: keyOf
142
+ });
143
+ const Probe = Action.make(`${tag}/status`, {
144
+ payload: observed,
145
+ success: Schema.Struct({
146
+ status: Status,
147
+ timedOut: Schema.Boolean,
148
+ wakeAt: Schema.Number,
149
+ next: observed,
150
+ restart: state
151
+ }),
152
+ error: providerError,
153
+ implementationVersion: "external-job/status/v1",
154
+ effects: { reads: [], writes: [], mode: "expected", onConflict: "fail" },
155
+ tier: "sealed",
156
+ idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`
157
+ });
158
+ const Collect = Action.make(`${tag}/collect`, {
159
+ payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }) },
160
+ success: options.success,
161
+ error: Schema.Union([providerError, Again]),
162
+ tier: "irreversible",
163
+ idempotencyKey: ({ job }) => `${keyOf(job)}/collect`
164
+ });
165
+ const Cancel = Action.make(`${tag}/cancel`, {
166
+ payload: observed,
167
+ success: Schema.Void,
168
+ tier: "irreversible",
169
+ idempotencyKey: (job) => `${keyOf(job)}/cancel`
170
+ });
171
+ const Fail = Action.make(`${tag}/fail`, {
172
+ payload: { job: observed, timedOut: Schema.Boolean },
173
+ success: Schema.Never,
174
+ error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])
175
+ });
176
+ const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean });
177
+ const LaunchFailure = Action.make(`${tag}/launch-timeout`, {
178
+ payload: state,
179
+ success: Schema.Never,
180
+ error: ExternalJobTimedOut
181
+ });
182
+ const launched = Node.capture(captures, (job) => Start.call(job).pipe(Node.bindPlanned(Node.capture(captures, (handle) => observe.to({
183
+ input: job.input,
184
+ origin: job.origin,
185
+ startedAt: job.startedAt,
186
+ generation: job.generation,
187
+ probe: job.probe,
188
+ handle
189
+ })))));
190
+ // Pin the declared union through recursive bodies: cross-package inference
191
+ // otherwise narrows the error schema to the provider-only generic E.
192
+ const launch = Flow.make(`${tag}/launch`, {
193
+ payload: state,
194
+ success: options.success,
195
+ error: failure,
196
+ annotations,
197
+ body: Node.capture(captures, (job) => Ready.call(job).pipe(Node.branch({
198
+ if: Node.capture(captures, (ready) => ready),
199
+ then: () => launched(job),
200
+ else: () => LaunchFailure.call(job)
201
+ })))
202
+ });
203
+ const recover = (job, result) => Cancel.call(job).pipe(Node.andThen(Node.succeed(job).pipe(Node.branch({
204
+ if: Node.capture(captures, (current) => current.generation <= restarts),
205
+ then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),
206
+ else: () => Fail.call({ job, timedOut: false })
207
+ }))));
208
+ const observe = Flow.make(`${tag}/observe`, {
209
+ payload: observed,
210
+ success: options.success,
211
+ error: failure,
212
+ annotations,
213
+ body: Node.capture(captures, (job) => Probe.call(job).pipe(Node.bindPlanned(Node.capture(captures, (result) => Node.succeed(result).pipe(Node.branch({
214
+ if: Node.capture(captures, (value) => value.timedOut),
215
+ then: () => Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),
216
+ else: () => Node.succeed(result.status).pipe(Node.branch({
217
+ if: Node.capture(captures, (status) => status._tag === "Running"),
218
+ then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),
219
+ else: (status) => Node.succeed(status).pipe(Node.branch({
220
+ if: Node.capture(captures, (value) => value._tag === "Lost"),
221
+ then: () => recover(job, result),
222
+ else: (exited) => Collect.call({ job, exited: exited }).pipe(Node.catch({ error: Schema.Struct(Again.fields), onFailure: () => recover(job, result) }))
223
+ }))
224
+ }))
225
+ }))))))
226
+ });
227
+ const flow = Flow.make(tag, {
228
+ payload: options.payload,
229
+ success: options.success,
230
+ error: failure,
231
+ annotations,
232
+ body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))
233
+ });
234
+ const toLayer = (operations) => {
235
+ const bindCancellation = Layer.effectDiscard(Effect.gen(function* () {
236
+ const table = yield* Action.Implementations;
237
+ const context = yield* Effect.context();
238
+ const cancel = (handle, key) => operations.cancel(handle, key).pipe(Effect.provideContext(context));
239
+ cancellations.set(table.add, cancel);
240
+ yield* Effect.addFinalizer(() => Effect.sync(() => {
241
+ if (cancellations.get(table.add) === cancel)
242
+ cancellations.delete(table.add);
243
+ }));
244
+ }));
245
+ const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe));
246
+ const layer = Layer.mergeAll(interpreter, bindCancellation, Sleep.layer, Initialize.toLayer(({ input }) => Effect.gen(function* () {
247
+ const instance = yield* active;
248
+ return {
249
+ input,
250
+ origin: instance.executionId,
251
+ startedAt: Math.floor(yield* Clock.currentTimeMillis),
252
+ generation: 1,
253
+ probe: 1
254
+ };
255
+ })), Start.toLayer((job) => Effect.tap(operations.start(job.input, keyOf(job)), (handle) => Effect.map(active, (value) => {
256
+ value.current = { handle, key: keyOf(job) };
257
+ }))), Probe.toLayer((job) => Effect.gen(function* () {
258
+ let now = Math.floor(yield* Clock.currentTimeMillis);
259
+ const deadline = job.startedAt + timeout;
260
+ let timedOut = now >= deadline;
261
+ const status = timedOut ? { _tag: "Running" } : yield* Effect.raceFirst(operations.status(job.handle, keyOf(job)), Effect.sleep(deadline - now).pipe(Effect.as({ _tag: "Running" })));
262
+ now = Math.floor(yield* Clock.currentTimeMillis);
263
+ timedOut ||= now >= deadline;
264
+ const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023));
265
+ return {
266
+ status,
267
+ timedOut,
268
+ wakeAt: Math.min(deadline, Math.ceil(now + delay)),
269
+ next: { ...job, probe: job.probe + 1 },
270
+ restart: {
271
+ input: job.input,
272
+ origin: job.origin,
273
+ startedAt: job.startedAt,
274
+ generation: job.generation + 1,
275
+ probe: 1
276
+ }
277
+ };
278
+ }), { implementationVersion: "external-job/status/v1" }), Collect.toLayer(({ exited, job }) => Effect.tap(operations.collect(job.handle, keyOf(job), exited), () => Effect.map(active, (value) => {
279
+ value.current = undefined;
280
+ }))), Cancel.toLayer((job) => Effect.tap(operations.cancel(job.handle, keyOf(job)), () => Effect.map(active, (value) => {
281
+ value.current = undefined;
282
+ }))), Fail.toLayer(({ job, timedOut }) => Effect.fail(timedOut
283
+ ? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })
284
+ : new ExternalJobLost({
285
+ key: keyOf(job),
286
+ message: `Job ${keyOf(job)} exhausted its replacement generations`
287
+ }))), Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)), LaunchFailure.toLayer((job) => Effect.fail(new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` }))));
288
+ // Active is supplied by the execution middleware, never by the host.
289
+ return layer;
290
+ };
291
+ // A job requires its own execution scope and identity even when composed
292
+ // through call; reuse the existing child boundary rather than inline it.
293
+ const call = (payload) => flow.child(payload);
294
+ return Object.assign(flow, { call, toLayer });
295
+ };
296
+ //# sourceMappingURL=ExternalJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalJob.js","sourceRoot":"","sources":["../../src/ExternalJob.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Durable external work as ordinary actions, handoffs and parked timers.\n *\n * @since 1.0.0\n */\n\nimport * as Node from \"@smthrs/plan/Node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Clock from \"effect/Clock\"\nimport * as Context from \"effect/Context\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport * as Action from \"./Action/index.ts\"\nimport * as Fault from \"./Fault.ts\"\nimport * as Flow from \"./Flow/index.ts\"\nimport { FlowInstance } from \"./FlowRuntime/FlowInstance.ts\"\nimport { ExecutionMiddleware } from \"./internal/ExecutionMiddleware.ts\"\nimport * as Interpreter from \"./Interpreter.ts\"\nimport * as Sleep from \"./Sleep.ts\"\n\n/**\n * External process observation.\n * @category schemas\n * @since 1.0.0\n */\nexport const Status = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"Running\") }),\n Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }),\n Schema.Struct({ _tag: Schema.Literal(\"Lost\") })\n])\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Status = typeof Status.Type\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Exited = Extract<Status, { readonly _tag: \"Exited\" }>\n/**\n * A collected exit that can be replaced.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class Again extends Schema.TaggedError<Again>()(\"@smthrs/flow/ExternalJobAgain\", { message: Schema.String }) {}\n/**\n * No worker or exit receipt remains.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobLost extends Schema.TaggedError<ExternalJobLost>()(\"@smthrs/flow/ExternalJobLost\", {\n key: Schema.String,\n message: Schema.String\n}) {}\n/**\n * The deadline anchored before initial start elapsed.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobTimedOut extends Schema.TaggedError<ExternalJobTimedOut>()(\"@smthrs/flow/ExternalJobTimedOut\", {\n key: Schema.String,\n message: Schema.String\n}) {}\nFault.register(\"@smthrs/flow/ExternalJobLost\", \"infra\")\nFault.register(\"@smthrs/flow/ExternalJobTimedOut\", \"dependency\")\nFault.register(\"@smthrs/flow/ExternalJobAgain\", \"dependency\")\n\nconst millis = (value: Duration.Input, field: string): number => {\n const parsed = Duration.fromInput(value)\n const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN\n if (!Number.isFinite(result) || result <= 0) {\n throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`)\n }\n return result\n}\n/**\n * The adapter's full typed failure union belongs in make's error schema.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Operations<P, H, A, E, R> {\n readonly start: (payload: P, key: string) => Effect.Effect<H, E, R>\n readonly status: (handle: H, key: string) => Effect.Effect<Status, E, R>\n readonly collect: (handle: H, key: string, exited: Exited) => Effect.Effect<A, E | Again, R>\n readonly cancel: (handle: H, key: string) => Effect.Effect<void, never, R>\n}\n\n/**\n * Create-or-get by execution id and generation. Private ordinary flows carry\n * journaled state; initial callers cannot supply a key or continuation handle.\n * `restarts` counts replacement generations; zero permits only g1.\n * @category constructors\n * @since 1.0.0\n */\nexport const make = <\n const Tag extends string,\n P extends Schema.Struct.Fields | Flow.AnyStructSchema,\n H extends Schema.Top,\n A extends Schema.Top,\n E extends Schema.Top = typeof Schema.Never\n>(tag: Tag, options: {\n readonly payload: P\n readonly handle: H\n readonly success: A\n readonly error?: E\n readonly probe: { readonly every: Duration.Input; readonly max: Duration.Input }\n readonly timeout: Duration.Input\n readonly restarts?: number\n}) => {\n const every = millis(options.probe.every, \"probe.every\")\n const maximum = millis(options.probe.max, \"probe.max\")\n const timeout = millis(options.timeout, \"timeout\")\n const restarts = options.restarts ?? 0\n if (maximum < every) throw new RangeError(\"ExternalJob.make: probe.max must be at least probe.every\")\n if (!Number.isSafeInteger(restarts) || restarts < 0) {\n throw new RangeError(\"ExternalJob.make: restarts must be a nonnegative safe integer\")\n }\n type Input = P extends Schema.Struct.Fields ? Schema.Struct<P> : P\n // Erase field modifiers at nesting boundaries: these are required values,\n // even when the author's schema contains optional fields internally.\n const input =\n (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload)) as unknown as Schema.Codec<\n Input[\"Type\"],\n Input[\"Encoded\"],\n Input[\"DecodingServices\"],\n Input[\"EncodingServices\"]\n >\n const handle = options.handle as Schema.Codec<H[\"Type\"], H[\"Encoded\"], H[\"DecodingServices\"], H[\"EncodingServices\"]>\n const providerError = (options.error ?? Schema.Never) as E\n const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid])\n const state = Schema.Struct({\n input,\n origin: Schema.String,\n startedAt: Schema.Number,\n generation: Schema.Int,\n probe: Schema.Int\n })\n const observed = Schema.Struct({ ...state.fields, handle })\n type State = typeof state.Type\n type Observed = typeof observed.Type\n const keyOf = (job: { readonly origin: string; readonly generation: number }) => `${job.origin}#g${job.generation}`\n const captures = { tag, every, maximum, timeout, restarts, version: \"external-job/v1\" }\n type Active = { executionId: string; current: { handle: H[\"Type\"]; key: string } | undefined }\n const active = Context.Service<Active>(`${tag}/ExternalJobActive`)\n // Registry tables wrap get() for module isolation but retain add(), the\n // scoped registration owner. Anchor lifecycle bindings to that owner.\n const cancellations = new WeakMap<object, (handle: H[\"Type\"], key: string) => Effect.Effect<void>>()\n const annotations = Context.make(ExecutionMiddleware, {\n wrap: (payload, body) =>\n Effect.gen(function*() {\n const instance = yield* FlowInstance\n const table = yield* Action.Implementations\n const cancel = cancellations.get(table.add)\n if (cancel === undefined) {\n return yield* Effect.die(\n new Interpreter.InterpreterError({\n code: \"unresolved_action\",\n flow: tag,\n node: `${tag}/cancel`,\n message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`\n })\n )\n }\n const current: Active = {\n executionId: instance.executionId,\n current: instance.flow._tag === `${tag}/observe`\n ? { handle: (payload as Observed).handle, key: keyOf(payload as Observed) } :\n undefined\n }\n yield* Flow.withRollback(Effect.succeed(current), (value, cause) =>\n Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined\n ? Effect.void :\n cancel(value.current.handle, value.current.key))\n return yield* body.pipe(Effect.provideService(active, current))\n })\n })\n const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state })\n const Start = Action.make(`${tag}/start`, {\n payload: state,\n success: options.handle,\n error: providerError,\n tier: \"irreversible\",\n idempotencyKey: keyOf\n })\n const Probe = Action.make(`${tag}/status`, {\n payload: observed,\n success: Schema.Struct({\n status: Status,\n timedOut: Schema.Boolean,\n wakeAt: Schema.Number,\n next: observed,\n restart: state\n }),\n error: providerError,\n implementationVersion: \"external-job/status/v1\",\n effects: { reads: [], writes: [], mode: \"expected\", onConflict: \"fail\" },\n tier: \"sealed\",\n idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`\n })\n const Collect = Action.make(`${tag}/collect`, {\n payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }) },\n success: options.success,\n error: Schema.Union([providerError, Again]),\n tier: \"irreversible\",\n idempotencyKey: ({ job }) => `${keyOf(job)}/collect`\n })\n const Cancel = Action.make(`${tag}/cancel`, {\n payload: observed,\n success: Schema.Void,\n tier: \"irreversible\",\n idempotencyKey: (job) => `${keyOf(job)}/cancel`\n })\n const Fail = Action.make(`${tag}/fail`, {\n payload: { job: observed, timedOut: Schema.Boolean },\n success: Schema.Never,\n error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])\n })\n const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean })\n const LaunchFailure = Action.make(`${tag}/launch-timeout`, {\n payload: state,\n success: Schema.Never,\n error: ExternalJobTimedOut\n })\n const launched = Node.capture(\n captures,\n (job: State | Action.PlannedPayload<State>) =>\n Start.call(job as Action.PlannedPayload<State>).pipe(\n Node.bindPlanned(Node.capture(captures, (handle: Action.PlannedPayload<H[\"Type\"]>) =>\n observe.to({\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation,\n probe: job.probe,\n handle\n })))\n )\n )\n // Pin the declared union through recursive bodies: cross-package inference\n // otherwise narrows the error schema to the provider-only generic E.\n const launch: Flow.Flow<string, typeof state, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/launch`,\n typeof state,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/launch`,\n {\n payload: state,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Ready.call(job).pipe(Node.branch({\n if: Node.capture(captures, (ready) => ready),\n then: () => launched(job),\n else: () => LaunchFailure.call(job)\n }))\n )\n }\n )\n const recover = (job: Observed, result: Action.PlannedPayload<{ restart: State; wakeAt: number }>) =>\n Cancel.call(job).pipe(Node.andThen(\n Node.succeed(job).pipe(Node.branch({\n if: Node.capture(captures, (current) => current.generation <= restarts),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),\n else: () => Fail.call({ job, timedOut: false })\n }))\n ))\n const observe: Flow.Flow<string, typeof observed, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/observe`,\n typeof observed,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/observe`,\n {\n payload: observed,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Probe.call(job).pipe(\n Node.bindPlanned(Node.capture(captures, (result: Action.PlannedPayload<typeof Probe.successSchema.Type>) =>\n Node.succeed(result).pipe(Node.branch({\n if: Node.capture(captures, (value) =>\n value.timedOut),\n then: () =>\n Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),\n else: () =>\n Node.succeed(result.status).pipe(Node.branch({\n if: Node.capture(captures, (status) => status._tag === \"Running\"),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),\n else: (status) =>\n Node.succeed(status).pipe(Node.branch({\n if: Node.capture(captures, (value) => value._tag === \"Lost\"),\n then: () => recover(job, result),\n else: (exited) =>\n Collect.call({ job, exited: exited as unknown as Exited }).pipe(\n Node.catch({ error: Schema.Struct(Again.fields), onFailure: () => recover(job, result) })\n )\n }))\n }))\n }))))\n )\n )\n }\n )\n const flow = Flow.make<Tag, P, A, typeof failure, Action.Requirement<string>>(tag, {\n payload: options.payload,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))\n })\n const toLayer = <R>(operations: Operations<typeof input.Type, H[\"Type\"], A[\"Type\"], E[\"Type\"], R>) => {\n const bindCancellation = Layer.effectDiscard(Effect.gen(function*() {\n const table = yield* Action.Implementations\n const context = yield* Effect.context<R>()\n const cancel = (handle: H[\"Type\"], key: string) =>\n operations.cancel(handle, key).pipe(Effect.provideContext(context))\n cancellations.set(table.add, cancel)\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n if (cancellations.get(table.add) === cancel) cancellations.delete(table.add)\n })\n )\n }))\n const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe))\n const layer = Layer.mergeAll(\n interpreter,\n bindCancellation,\n Sleep.layer,\n Initialize.toLayer(({ input }) =>\n Effect.gen(function*() {\n const instance = yield* active\n return {\n input,\n origin: instance.executionId,\n startedAt: Math.floor(yield* Clock.currentTimeMillis),\n generation: 1,\n probe: 1\n }\n })\n ),\n Start.toLayer((job) =>\n Effect.tap(operations.start(job.input, keyOf(job)), (handle) =>\n Effect.map(active, (value) => {\n value.current = { handle, key: keyOf(job) }\n }))\n ),\n Probe.toLayer((job) =>\n Effect.gen(function*() {\n let now = Math.floor(yield* Clock.currentTimeMillis)\n const deadline = job.startedAt + timeout\n let timedOut = now >= deadline\n const status = timedOut ? { _tag: \"Running\" as const } : yield* Effect.raceFirst(\n operations.status(job.handle, keyOf(job)),\n Effect.sleep(deadline - now).pipe(Effect.as({ _tag: \"Running\" as const }))\n )\n now = Math.floor(yield* Clock.currentTimeMillis)\n timedOut ||= now >= deadline\n const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023))\n return {\n status,\n timedOut,\n wakeAt: Math.min(deadline, Math.ceil(now + delay)),\n next: { ...job, probe: job.probe + 1 },\n restart: {\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation + 1,\n probe: 1\n }\n }\n }), { implementationVersion: \"external-job/status/v1\" }),\n Collect.toLayer(({ exited, job }) =>\n Effect.tap(operations.collect(job.handle, keyOf(job), exited), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Cancel.toLayer((job) =>\n Effect.tap(operations.cancel(job.handle, keyOf(job)), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Fail.toLayer(({ job, timedOut }) =>\n Effect.fail(\n timedOut\n ? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })\n : new ExternalJobLost({\n key: keyOf(job),\n message: `Job ${keyOf(job)} exhausted its replacement generations`\n })\n )\n ),\n Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)),\n LaunchFailure.toLayer((job) =>\n Effect.fail(\n new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` })\n )\n )\n )\n // Active is supplied by the execution middleware, never by the host.\n return layer as Layer.Layer<\n Layer.Success<typeof layer>,\n Layer.Error<typeof layer>,\n Exclude<Layer.Services<typeof layer>, Active>\n >\n }\n // A job requires its own execution scope and identity even when composed\n // through call; reuse the existing child boundary rather than inline it.\n const call: typeof flow.child = (payload) => flow.child(payload)\n return Object.assign(flow, { call, toLayer }) as {\n readonly call: typeof call\n readonly toLayer: typeof toLayer\n } & typeof flow\n}\n"]}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * One typed fault for every failure, and the one response table that reads it.
3
+ *
4
+ * Each owner of an error union registers its codes here with a class, so a
5
+ * failure crosses every seam as `{ class, tag }` rather than as prose. The
6
+ * control plane stamps it on a failed run, the gateway carries it to the
7
+ * worker, and every surface reads the same record.
8
+ *
9
+ * @since 1.0.0
10
+ */
11
+ import * as Effect from "effect/Effect";
12
+ import * as Schema from "effect/Schema";
13
+ /**
14
+ * Whose problem a failure is. The first five are the wire registry; `factory`
15
+ * (the factory's own work failed and a replan may fix it) and `policy` (a cap
16
+ * stopped it) are the factory's.
17
+ *
18
+ * @category models
19
+ * @since 1.0.0
20
+ */
21
+ export declare const Class: Schema.Literals<readonly ["user", "wait", "infra", "dependency", "bug", "factory", "policy"]>;
22
+ /**
23
+ * The decoded form of {@link Class}.
24
+ *
25
+ * @category models
26
+ * @since 1.0.0
27
+ */
28
+ export type Class = typeof Class.Type;
29
+ /**
30
+ * What happens next. `very_hard` is a ladder state the worker reaches, not a class.
31
+ *
32
+ * @category models
33
+ * @since 1.0.0
34
+ */
35
+ export declare const Response: Schema.Literals<readonly ["retry", "backup", "park", "replan", "very_hard", "help", "close", "stop"]>;
36
+ /**
37
+ * The decoded form of {@link Response}.
38
+ *
39
+ * @category models
40
+ * @since 1.0.0
41
+ */
42
+ export type Response = typeof Response.Type;
43
+ /**
44
+ * The record stamped on a failed run. `tag` is `<_tag>/<code>`, or `<_tag>`
45
+ * for an error without a code.
46
+ *
47
+ * @category models
48
+ * @since 1.0.0
49
+ */
50
+ export declare const Fault: Schema.Struct<{
51
+ readonly class: Schema.Literals<readonly ["user", "wait", "infra", "dependency", "bug", "factory", "policy"]>;
52
+ readonly tag: Schema.String;
53
+ }>;
54
+ /**
55
+ * The decoded form of {@link Fault}.
56
+ *
57
+ * @category models
58
+ * @since 1.0.0
59
+ */
60
+ export type Fault = typeof Fault.Type;
61
+ /**
62
+ * One class per code of an owner's union. `satisfies Rows<Code>` at the owner
63
+ * makes a new code without a class a compile error.
64
+ *
65
+ * @category models
66
+ * @since 1.0.0
67
+ */
68
+ export type Rows<Code extends string> = Readonly<Record<Code, Class>>;
69
+ /**
70
+ * Registers an owner's error tag: one class for the whole tag, or one per
71
+ * value of its `field` (`code` unless the union names it otherwise). A value
72
+ * the table does not name is `bug`. Registering a tag again with the same
73
+ * rows is a no-op (a module loaded twice); with different rows it throws,
74
+ * because two owners disagreeing about one tag is a defect.
75
+ *
76
+ * @category constructors
77
+ * @since 1.0.0
78
+ */
79
+ export declare const register: <Code extends string>(tag: string, table: Class | Rows<Code>, field?: string) => void;
80
+ /**
81
+ * Every tag registered so far. The sweep test reads it.
82
+ *
83
+ * @category getters
84
+ * @since 1.0.0
85
+ */
86
+ export declare const registered: () => ReadonlySet<string>;
87
+ /**
88
+ * The fault of a failure. Walks `cause` and answers the innermost registered
89
+ * tag, because a wrapper names where a failure surfaced and its cause names
90
+ * why: a harness `model_failed` over a model `quota_exceeded` is a wait. A
91
+ * failure no owner registered is a `bug`.
92
+ *
93
+ * @category constructors
94
+ * @since 1.0.0
95
+ */
96
+ export declare const of: (error: unknown) => Fault;
97
+ /**
98
+ * Retries typed infrastructure failures of an effect the caller can safely repeat.
99
+ * Preserves its error channel when the bounded transient policy expires.
100
+ * Defects and interruption propagate without retry.
101
+ *
102
+ * @category combinators
103
+ * @since 1.0.0
104
+ */
105
+ export declare const retryTransient: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
106
+ /**
107
+ * What the responder knows when it picks a response.
108
+ *
109
+ * @category models
110
+ * @since 1.0.0
111
+ */
112
+ export interface State {
113
+ /** The action attempt that just failed. */
114
+ readonly attempt: number;
115
+ /** Seats not tried in this frame and not cooling. */
116
+ readonly seatsLeft: number;
117
+ /** Quota parks left before the run stops (`QuotaPolicy.defaultMaxParks` less those spent). */
118
+ readonly parksLeft: number;
119
+ /** Replans spent: the worker's attempt minus one. */
120
+ readonly replans: number;
121
+ /** Whether the item already had its very-hard continuation. */
122
+ readonly veryHard: boolean;
123
+ }
124
+ /**
125
+ * The one ladder. A new class does not compile until it has a row.
126
+ *
127
+ * @category constructors
128
+ * @since 1.0.0
129
+ */
130
+ export declare const respond: (fault: Fault, state: State) => Response;
131
+ //# sourceMappingURL=Fault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fault.d.ts","sourceRoot":"","sources":["../../src/Fault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,+FAAuF,CAAA;AAEzG;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,uGAA+F,CAAA;AAEpH;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;EAAsD,CAAA;AAExE;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,CAAC,IAAI,SAAS,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AA2BrE;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,IAAI,SAAS,MAAM,EAAE,KAAK,MAAM,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,KAAG,IAOtG,CAAA;AAOD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,QAAO,WAAW,CAAC,MAAM,CAAyB,CAAA;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,EAAE,GAAI,OAAO,OAAO,KAAG,KAgBnC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAiB1F,CAAA;AAEJ;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,EAAE,OAAO,KAAK,KAAG,QASO,CAAA"}