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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +1021 -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 +1483 -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 +1862 -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,179 @@
1
+ /**
2
+ * Durable external work as ordinary actions, handoffs and parked timers.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import * as Node from "@smthrs/plan/Node";
7
+ import * as Cause from "effect/Cause";
8
+ import * as Duration from "effect/Duration";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Layer from "effect/Layer";
11
+ import * as Schema from "effect/Schema";
12
+ import * as Action from "./Action/index.ts";
13
+ import * as Flow from "./Flow/index.ts";
14
+ import { FlowInstance } from "./FlowRuntime/FlowInstance.ts";
15
+ import * as Sleep from "./Sleep.ts";
16
+ /**
17
+ * External process observation.
18
+ * @category schemas
19
+ * @since 1.0.0
20
+ */
21
+ export declare const Status: Schema.Union<readonly [Schema.Struct<{
22
+ readonly _tag: Schema.Literal<"Running">;
23
+ }>, Schema.Struct<{
24
+ readonly _tag: Schema.Literal<"Exited">;
25
+ readonly exitCode: Schema.Int;
26
+ }>, Schema.Struct<{
27
+ readonly _tag: Schema.Literal<"Lost">;
28
+ }>]>;
29
+ /**
30
+ * Decoded external process observation.
31
+ * @category models
32
+ * @since 1.0.0
33
+ */
34
+ export type Status = typeof Status.Type;
35
+ /**
36
+ * Decoded external process observation.
37
+ * @category models
38
+ * @since 1.0.0
39
+ */
40
+ export type Exited = Extract<Status, {
41
+ readonly _tag: "Exited";
42
+ }>;
43
+ declare const Again_base: Schema.Class<Again, Schema.TaggedStruct<"@smthrs/flow/ExternalJobAgain", {
44
+ readonly message: Schema.String;
45
+ }>, Cause.YieldableError>;
46
+ /**
47
+ * A collected exit that can be replaced.
48
+ *
49
+ * @category errors
50
+ * @since 1.0.0
51
+ */
52
+ export declare class Again extends Again_base {
53
+ }
54
+ declare const ExternalJobLost_base: Schema.Class<ExternalJobLost, Schema.TaggedStruct<"@smthrs/flow/ExternalJobLost", {
55
+ readonly key: Schema.String;
56
+ readonly message: Schema.String;
57
+ }>, Cause.YieldableError>;
58
+ /**
59
+ * No worker or exit receipt remains.
60
+ *
61
+ * @category errors
62
+ * @since 1.0.0
63
+ */
64
+ export declare class ExternalJobLost extends ExternalJobLost_base {
65
+ }
66
+ declare const ExternalJobTimedOut_base: Schema.Class<ExternalJobTimedOut, Schema.TaggedStruct<"@smthrs/flow/ExternalJobTimedOut", {
67
+ readonly key: Schema.String;
68
+ readonly message: Schema.String;
69
+ }>, Cause.YieldableError>;
70
+ /**
71
+ * The deadline anchored before initial start elapsed.
72
+ *
73
+ * @category errors
74
+ * @since 1.0.0
75
+ */
76
+ export declare class ExternalJobTimedOut extends ExternalJobTimedOut_base {
77
+ }
78
+ /**
79
+ * The adapter's full typed failure union belongs in make's error schema.
80
+ *
81
+ * @category models
82
+ * @since 1.0.0
83
+ */
84
+ export interface Operations<P, H, A, E, R> {
85
+ readonly start: (payload: P, key: string) => Effect.Effect<H, E, R>;
86
+ readonly status: (handle: H, key: string) => Effect.Effect<Status, E, R>;
87
+ readonly collect: (handle: H, key: string, exited: Exited) => Effect.Effect<A, E | Again, R>;
88
+ readonly cancel: (handle: H, key: string) => Effect.Effect<void, never, R>;
89
+ }
90
+ /**
91
+ * Create-or-get by execution id and generation. Private ordinary flows carry
92
+ * journaled state; initial callers cannot supply a key or continuation handle.
93
+ * `restarts` counts replacement generations; zero permits only g1.
94
+ * @category constructors
95
+ * @since 1.0.0
96
+ */
97
+ export declare const make: <const Tag extends string, P extends Schema.Struct.Fields | Flow.AnyStructSchema, H extends Schema.Top, A extends Schema.Top, E extends Schema.Top = typeof Schema.Never>(tag: Tag, options: {
98
+ readonly payload: P;
99
+ readonly handle: H;
100
+ readonly success: A;
101
+ readonly error?: E;
102
+ readonly probe: {
103
+ readonly every: Duration.Input;
104
+ readonly max: Duration.Input;
105
+ };
106
+ readonly timeout: Duration.Input;
107
+ readonly restarts?: number;
108
+ }) => {
109
+ readonly call: (payload: Action.PlannedPayload<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["~type.make.in"]>) => Node.Node<A["Type"], Sleep.SleepRequestInvalid | ExternalJobLost | ExternalJobTimedOut | E["Type"], never>;
110
+ readonly toLayer: <R>(operations: Operations<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], H["Type"], A["Type"], E["Type"], R>) => Layer.Layer<Layer.Success<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
111
+ executionId: string;
112
+ current: {
113
+ handle: H["Type"];
114
+ key: string;
115
+ } | undefined;
116
+ } | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
117
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
118
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
119
+ readonly origin: Schema.String;
120
+ readonly startedAt: Schema.Number;
121
+ readonly generation: Schema.Int;
122
+ readonly probe: Schema.Int;
123
+ }> | Schema.Struct.EncodingServices<{
124
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
125
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
126
+ readonly origin: Schema.String;
127
+ readonly startedAt: Schema.Number;
128
+ readonly generation: Schema.Int;
129
+ readonly probe: Schema.Int;
130
+ }> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, Layer.Error<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
131
+ executionId: string;
132
+ current: {
133
+ handle: H["Type"];
134
+ key: string;
135
+ } | undefined;
136
+ } | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
137
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
138
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
139
+ readonly origin: Schema.String;
140
+ readonly startedAt: Schema.Number;
141
+ readonly generation: Schema.Int;
142
+ readonly probe: Schema.Int;
143
+ }> | Schema.Struct.EncodingServices<{
144
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
145
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
146
+ readonly origin: Schema.String;
147
+ readonly startedAt: Schema.Number;
148
+ readonly generation: Schema.Int;
149
+ readonly probe: Schema.Int;
150
+ }> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, Exclude<Layer.Services<Layer.Layer<Action.Requirement<`${Tag}/initialize`> | Action.Requirement<`${Tag}/start`> | Action.Requirement<`${Tag}/status`> | Action.Requirement<`${Tag}/collect`> | Action.Requirement<`${Tag}/cancel`> | Action.Requirement<`${Tag}/fail`> | Action.Requirement<`${Tag}/ready`> | Action.Requirement<`${Tag}/launch-timeout`>, never, import("effect/Crypto").Crypto | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime | Action.Implementations | {
151
+ executionId: string;
152
+ current: {
153
+ handle: H["Type"];
154
+ key: string;
155
+ } | undefined;
156
+ } | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"] | (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"] | A["DecodingServices"] | A["EncodingServices"] | E["DecodingServices"] | E["EncodingServices"] | Schema.Struct.DecodingServices<{
157
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
158
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
159
+ readonly origin: Schema.String;
160
+ readonly startedAt: Schema.Number;
161
+ readonly generation: Schema.Int;
162
+ readonly probe: Schema.Int;
163
+ }> | Schema.Struct.EncodingServices<{
164
+ readonly handle: Schema.Codec<H["Type"], H["Encoded"], H["DecodingServices"], H["EncodingServices"]>;
165
+ readonly input: Schema.Codec<(P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Type"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["Encoded"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["DecodingServices"], (P extends Schema.Struct.Fields ? Schema.Struct<P> : P)["EncodingServices"]>;
166
+ readonly origin: Schema.String;
167
+ readonly startedAt: Schema.Number;
168
+ readonly generation: Schema.Int;
169
+ readonly probe: Schema.Int;
170
+ }> | Exclude<R, FlowInstance | import("effect/Scope").Scope | import("./FlowRuntime/FlowRuntime.ts").FlowRuntime> | Exclude<R, import("effect/Scope").Scope>>>, {
171
+ executionId: string;
172
+ current: {
173
+ handle: H["Type"];
174
+ key: string;
175
+ } | undefined;
176
+ }>>;
177
+ } & Flow.Flow<Tag, P extends Schema.Struct.Fields ? Schema.Struct<P> : P, A, Schema.Union<readonly [E, typeof ExternalJobLost, typeof ExternalJobTimedOut, typeof Sleep.SleepRequestInvalid]>, Action.Requirement<string>>;
178
+ export {};
179
+ //# sourceMappingURL=ExternalJob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalJob.d.ts","sourceRoot":"","sources":["../../src/ExternalJob.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAG5D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,MAAM;;;;;;;IAIjB,CAAA;AACF;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;;;;AACjE;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,UAAwF;CAAG;;;;;AACtH;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,oBAGnC;CAAG;;;;;AACL;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;AAaL;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACnE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5F,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;CAC3E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,GAAG,SAAS,MAAM,EACxB,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EACrD,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,OAAO,MAAM,CAAC,KAAK,EAC1C,KAAK,GAAG,EAAE,SAAS;IACnB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAA;KAAE,CAAA;IAChF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,KAqTkD;IAC/C,QAAQ,CAAC,IAAI,2NAAa;IAC1B,QAAQ,CAAC,OAAO,GAvGD,CAAC,cAAc,UAAU,kEAAoB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KA4F/E,KAAK,CAAC,KAAK,CACzB,KAAK,CAAC,OAAO;qBA3QY,MAAM;iBAAW;YAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;;;;;;;;;;;;;;;kKA2Q7D,EAC3B,KAAK,CAAC,KAAK;qBA5Qc,MAAM;iBAAW;YAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;;;;;;;;;;;;;;;kKA4Q/D,EACzB,OAAO,CAAC,KAAK,CAAC,QAAQ;qBA7QG,MAAM;iBAAW;YAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;;;;;;;;;;;;;;;kKA6QpD;qBA7QX,MAAM;iBAAW;YAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;MA6Q3C,CAC9C,CAO+B;CACjC,yNACF,CAAA"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Durable external work as ordinary actions, handoffs and parked timers.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import * as Node from "@smthrs/plan/Node";
7
+ import * as Cause from "effect/Cause";
8
+ import * as Clock from "effect/Clock";
9
+ import * as Context from "effect/Context";
10
+ import * as Duration from "effect/Duration";
11
+ import * as Effect from "effect/Effect";
12
+ import * as Layer from "effect/Layer";
13
+ import * as Option from "effect/Option";
14
+ import * as Schema from "effect/Schema";
15
+ import * as Action from "./Action/index.js";
16
+ import * as Fault from "./Fault.js";
17
+ import * as Flow from "./Flow/index.js";
18
+ import { FlowInstance } from "./FlowRuntime/FlowInstance.js";
19
+ import { ExecutionMiddleware } from "./internal/ExecutionMiddleware.js";
20
+ import * as Interpreter from "./Interpreter.js";
21
+ import * as Sleep from "./Sleep.js";
22
+ /**
23
+ * External process observation.
24
+ * @category schemas
25
+ * @since 1.0.0
26
+ */
27
+ export const Status = Schema.Union([
28
+ Schema.Struct({ _tag: Schema.Literal("Running") }),
29
+ Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }),
30
+ Schema.Struct({ _tag: Schema.Literal("Lost") })
31
+ ]);
32
+ /**
33
+ * A collected exit that can be replaced.
34
+ *
35
+ * @category errors
36
+ * @since 1.0.0
37
+ */
38
+ export class Again extends Schema.TaggedError()("@smthrs/flow/ExternalJobAgain", { message: Schema.String }) {
39
+ }
40
+ /**
41
+ * No worker or exit receipt remains.
42
+ *
43
+ * @category errors
44
+ * @since 1.0.0
45
+ */
46
+ export class ExternalJobLost extends Schema.TaggedError()("@smthrs/flow/ExternalJobLost", {
47
+ key: Schema.String,
48
+ message: Schema.String
49
+ }) {
50
+ }
51
+ /**
52
+ * The deadline anchored before initial start elapsed.
53
+ *
54
+ * @category errors
55
+ * @since 1.0.0
56
+ */
57
+ export class ExternalJobTimedOut extends Schema.TaggedError()("@smthrs/flow/ExternalJobTimedOut", {
58
+ key: Schema.String,
59
+ message: Schema.String
60
+ }) {
61
+ }
62
+ Fault.register("@smthrs/flow/ExternalJobLost", "infra");
63
+ Fault.register("@smthrs/flow/ExternalJobTimedOut", "dependency");
64
+ Fault.register("@smthrs/flow/ExternalJobAgain", "dependency");
65
+ const millis = (value, field) => {
66
+ const parsed = Duration.fromInput(value);
67
+ const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN;
68
+ if (!Number.isFinite(result) || result <= 0) {
69
+ throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`);
70
+ }
71
+ return result;
72
+ };
73
+ /**
74
+ * Create-or-get by execution id and generation. Private ordinary flows carry
75
+ * journaled state; initial callers cannot supply a key or continuation handle.
76
+ * `restarts` counts replacement generations; zero permits only g1.
77
+ * @category constructors
78
+ * @since 1.0.0
79
+ */
80
+ export const make = (tag, options) => {
81
+ const every = millis(options.probe.every, "probe.every");
82
+ const maximum = millis(options.probe.max, "probe.max");
83
+ const timeout = millis(options.timeout, "timeout");
84
+ const restarts = options.restarts ?? 0;
85
+ if (maximum < every)
86
+ throw new RangeError("ExternalJob.make: probe.max must be at least probe.every");
87
+ if (!Number.isSafeInteger(restarts) || restarts < 0) {
88
+ throw new RangeError("ExternalJob.make: restarts must be a nonnegative safe integer");
89
+ }
90
+ // Erase field modifiers at nesting boundaries: these are required values,
91
+ // even when the author's schema contains optional fields internally.
92
+ const input = (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload));
93
+ const handle = options.handle;
94
+ const providerError = (options.error ?? Schema.Never);
95
+ const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid]);
96
+ const state = Schema.Struct({
97
+ input,
98
+ origin: Schema.String,
99
+ startedAt: Schema.Number,
100
+ generation: Schema.Int,
101
+ probe: Schema.Int
102
+ });
103
+ const observed = Schema.Struct({ ...state.fields, handle });
104
+ const keyOf = (job) => `${job.origin}#g${job.generation}`;
105
+ const captures = { tag, every, maximum, timeout, restarts, version: "external-job/v1" };
106
+ const active = Context.Service(`${tag}/ExternalJobActive`);
107
+ // Registry tables wrap get() for module isolation but retain add(), the
108
+ // scoped registration owner. Anchor lifecycle bindings to that owner.
109
+ const cancellations = new WeakMap();
110
+ const annotations = Context.make(ExecutionMiddleware, {
111
+ wrap: (payload, body) => Effect.gen(function* () {
112
+ const instance = yield* FlowInstance;
113
+ const table = yield* Action.Implementations;
114
+ const cancel = cancellations.get(table.add);
115
+ if (cancel === undefined) {
116
+ return yield* Effect.die(new Interpreter.InterpreterError({
117
+ code: "unresolved_action",
118
+ flow: tag,
119
+ node: `${tag}/cancel`,
120
+ message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`
121
+ }));
122
+ }
123
+ const current = {
124
+ executionId: instance.executionId,
125
+ current: instance.flow._tag === `${tag}/observe`
126
+ ? { handle: payload.handle, key: keyOf(payload) } :
127
+ undefined
128
+ };
129
+ yield* Flow.withRollback(Effect.succeed(current), (value, cause) => Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined
130
+ ? Effect.void :
131
+ cancel(value.current.handle, value.current.key));
132
+ return yield* body.pipe(Effect.provideService(active, current));
133
+ })
134
+ });
135
+ const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state });
136
+ const Start = Action.make(`${tag}/start`, {
137
+ payload: state,
138
+ success: options.handle,
139
+ error: providerError,
140
+ tier: "irreversible",
141
+ idempotencyKey: keyOf
142
+ });
143
+ const Probe = Action.make(`${tag}/status`, {
144
+ payload: observed,
145
+ success: Schema.Struct({
146
+ status: Status,
147
+ timedOut: Schema.Boolean,
148
+ wakeAt: Schema.Number,
149
+ next: observed,
150
+ restart: state
151
+ }),
152
+ error: providerError,
153
+ implementationVersion: "external-job/status/v1",
154
+ effects: { reads: [], writes: [], mode: "expected", onConflict: "fail" },
155
+ tier: "sealed",
156
+ idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`
157
+ });
158
+ const Collect = Action.make(`${tag}/collect`, {
159
+ payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal("Exited"), exitCode: Schema.Int }) },
160
+ success: options.success,
161
+ error: Schema.Union([providerError, Again]),
162
+ tier: "irreversible",
163
+ idempotencyKey: ({ job }) => `${keyOf(job)}/collect`
164
+ });
165
+ const Cancel = Action.make(`${tag}/cancel`, {
166
+ payload: observed,
167
+ success: Schema.Void,
168
+ tier: "irreversible",
169
+ idempotencyKey: (job) => `${keyOf(job)}/cancel`
170
+ });
171
+ const Fail = Action.make(`${tag}/fail`, {
172
+ payload: { job: observed, timedOut: Schema.Boolean },
173
+ success: Schema.Never,
174
+ error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])
175
+ });
176
+ const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean });
177
+ const LaunchFailure = Action.make(`${tag}/launch-timeout`, {
178
+ payload: state,
179
+ success: Schema.Never,
180
+ error: ExternalJobTimedOut
181
+ });
182
+ const launched = (job) => Start.call(job).pipe(Node.bindPlanned((handle) => observe.to({
183
+ input: job.input,
184
+ origin: job.origin,
185
+ startedAt: job.startedAt,
186
+ generation: job.generation,
187
+ probe: job.probe,
188
+ handle
189
+ })));
190
+ // Pin the declared union through recursive bodies: cross-package inference
191
+ // otherwise narrows the error schema to the provider-only generic E.
192
+ const launch = Flow.make(`${tag}/launch`, {
193
+ payload: state,
194
+ success: options.success,
195
+ error: failure,
196
+ annotations,
197
+ body: Node.capture(captures, (job) => Ready.call(job).pipe(Node.branch({
198
+ if: Node.capture(captures, (ready) => ready),
199
+ then: () => launched(job),
200
+ else: () => LaunchFailure.call(job)
201
+ })))
202
+ });
203
+ const recover = (job, result) => Cancel.call(job).pipe(Node.andThen(Node.succeed(job).pipe(Node.branch({
204
+ if: Node.capture(captures, (current) => current.generation <= restarts),
205
+ then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),
206
+ else: () => Fail.call({ job, timedOut: false })
207
+ }))));
208
+ const observe = Flow.make(`${tag}/observe`, {
209
+ payload: observed,
210
+ success: options.success,
211
+ error: failure,
212
+ annotations,
213
+ body: Node.capture(captures, (job) => Probe.call(job).pipe(Node.bindPlanned((result) => Node.succeed(result).pipe(Node.branch({
214
+ if: Node.capture(captures, (value) => value.timedOut),
215
+ then: () => Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),
216
+ else: () => Node.succeed(result.status).pipe(Node.branch({
217
+ if: Node.capture(captures, (status) => status._tag === "Running"),
218
+ then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),
219
+ else: (status) => Node.succeed(status).pipe(Node.branch({
220
+ if: Node.capture(captures, (value) => value._tag === "Lost"),
221
+ then: () => recover(job, result),
222
+ else: (exited) => Collect.call({ job, exited: exited }).pipe(Node.catch({ error: Again, onFailure: () => recover(job, result) }))
223
+ }))
224
+ }))
225
+ })))))
226
+ });
227
+ const flow = Flow.make(tag, {
228
+ payload: options.payload,
229
+ success: options.success,
230
+ error: failure,
231
+ annotations,
232
+ body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))
233
+ });
234
+ const toLayer = (operations) => {
235
+ const bindCancellation = Layer.effectDiscard(Effect.gen(function* () {
236
+ const table = yield* Action.Implementations;
237
+ const context = yield* Effect.context();
238
+ const cancel = (handle, key) => operations.cancel(handle, key).pipe(Effect.provideContext(context));
239
+ cancellations.set(table.add, cancel);
240
+ yield* Effect.addFinalizer(() => Effect.sync(() => {
241
+ if (cancellations.get(table.add) === cancel)
242
+ cancellations.delete(table.add);
243
+ }));
244
+ }));
245
+ const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe));
246
+ const layer = Layer.mergeAll(interpreter, bindCancellation, Sleep.layer, Initialize.toLayer(({ input }) => Effect.gen(function* () {
247
+ const instance = yield* active;
248
+ return {
249
+ input,
250
+ origin: instance.executionId,
251
+ startedAt: Math.floor(yield* Clock.currentTimeMillis),
252
+ generation: 1,
253
+ probe: 1
254
+ };
255
+ })), Start.toLayer((job) => Effect.tap(operations.start(job.input, keyOf(job)), (handle) => Effect.map(active, (value) => {
256
+ value.current = { handle, key: keyOf(job) };
257
+ }))), Probe.toLayer((job) => Effect.gen(function* () {
258
+ let now = Math.floor(yield* Clock.currentTimeMillis);
259
+ const deadline = job.startedAt + timeout;
260
+ let timedOut = now >= deadline;
261
+ const status = timedOut ? { _tag: "Running" } : yield* Effect.raceFirst(operations.status(job.handle, keyOf(job)), Effect.sleep(deadline - now).pipe(Effect.as({ _tag: "Running" })));
262
+ now = Math.floor(yield* Clock.currentTimeMillis);
263
+ timedOut ||= now >= deadline;
264
+ const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023));
265
+ return {
266
+ status,
267
+ timedOut,
268
+ wakeAt: Math.min(deadline, Math.ceil(now + delay)),
269
+ next: { ...job, probe: job.probe + 1 },
270
+ restart: {
271
+ input: job.input,
272
+ origin: job.origin,
273
+ startedAt: job.startedAt,
274
+ generation: job.generation + 1,
275
+ probe: 1
276
+ }
277
+ };
278
+ }), { implementationVersion: "external-job/status/v1" }), Collect.toLayer(({ exited, job }) => Effect.tap(operations.collect(job.handle, keyOf(job), exited), () => Effect.map(active, (value) => {
279
+ value.current = undefined;
280
+ }))), Cancel.toLayer((job) => Effect.tap(operations.cancel(job.handle, keyOf(job)), () => Effect.map(active, (value) => {
281
+ value.current = undefined;
282
+ }))), Fail.toLayer(({ job, timedOut }) => Effect.fail(timedOut
283
+ ? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })
284
+ : new ExternalJobLost({
285
+ key: keyOf(job),
286
+ message: `Job ${keyOf(job)} exhausted its replacement generations`
287
+ }))), Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)), LaunchFailure.toLayer((job) => Effect.fail(new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` }))));
288
+ // Active is supplied by the execution middleware, never by the host.
289
+ return layer;
290
+ };
291
+ // A job requires its own execution scope and identity even when composed
292
+ // through call; reuse the existing child boundary rather than inline it.
293
+ const call = (payload) => flow.child(payload);
294
+ return Object.assign(flow, { call, toLayer });
295
+ };
296
+ //# sourceMappingURL=ExternalJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalJob.js","sourceRoot":"","sources":["../../src/ExternalJob.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Durable external work as ordinary actions, handoffs and parked timers.\n *\n * @since 1.0.0\n */\n\nimport * as Node from \"@smthrs/plan/Node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Clock from \"effect/Clock\"\nimport * as Context from \"effect/Context\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport * as Action from \"./Action/index.ts\"\nimport * as Fault from \"./Fault.ts\"\nimport * as Flow from \"./Flow/index.ts\"\nimport { FlowInstance } from \"./FlowRuntime/FlowInstance.ts\"\nimport { ExecutionMiddleware } from \"./internal/ExecutionMiddleware.ts\"\nimport * as Interpreter from \"./Interpreter.ts\"\nimport * as Sleep from \"./Sleep.ts\"\n\n/**\n * External process observation.\n * @category schemas\n * @since 1.0.0\n */\nexport const Status = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"Running\") }),\n Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }),\n Schema.Struct({ _tag: Schema.Literal(\"Lost\") })\n])\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Status = typeof Status.Type\n/**\n * Decoded external process observation.\n * @category models\n * @since 1.0.0\n */\nexport type Exited = Extract<Status, { readonly _tag: \"Exited\" }>\n/**\n * A collected exit that can be replaced.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class Again extends Schema.TaggedError<Again>()(\"@smthrs/flow/ExternalJobAgain\", { message: Schema.String }) {}\n/**\n * No worker or exit receipt remains.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobLost extends Schema.TaggedError<ExternalJobLost>()(\"@smthrs/flow/ExternalJobLost\", {\n key: Schema.String,\n message: Schema.String\n}) {}\n/**\n * The deadline anchored before initial start elapsed.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ExternalJobTimedOut extends Schema.TaggedError<ExternalJobTimedOut>()(\"@smthrs/flow/ExternalJobTimedOut\", {\n key: Schema.String,\n message: Schema.String\n}) {}\nFault.register(\"@smthrs/flow/ExternalJobLost\", \"infra\")\nFault.register(\"@smthrs/flow/ExternalJobTimedOut\", \"dependency\")\nFault.register(\"@smthrs/flow/ExternalJobAgain\", \"dependency\")\n\nconst millis = (value: Duration.Input, field: string): number => {\n const parsed = Duration.fromInput(value)\n const result = Option.isSome(parsed) ? Duration.toMillis(parsed.value) : NaN\n if (!Number.isFinite(result) || result <= 0) {\n throw new RangeError(`ExternalJob.make: ${field} must be a finite positive duration`)\n }\n return result\n}\n/**\n * The adapter's full typed failure union belongs in make's error schema.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Operations<P, H, A, E, R> {\n readonly start: (payload: P, key: string) => Effect.Effect<H, E, R>\n readonly status: (handle: H, key: string) => Effect.Effect<Status, E, R>\n readonly collect: (handle: H, key: string, exited: Exited) => Effect.Effect<A, E | Again, R>\n readonly cancel: (handle: H, key: string) => Effect.Effect<void, never, R>\n}\n\n/**\n * Create-or-get by execution id and generation. Private ordinary flows carry\n * journaled state; initial callers cannot supply a key or continuation handle.\n * `restarts` counts replacement generations; zero permits only g1.\n * @category constructors\n * @since 1.0.0\n */\nexport const make = <\n const Tag extends string,\n P extends Schema.Struct.Fields | Flow.AnyStructSchema,\n H extends Schema.Top,\n A extends Schema.Top,\n E extends Schema.Top = typeof Schema.Never\n>(tag: Tag, options: {\n readonly payload: P\n readonly handle: H\n readonly success: A\n readonly error?: E\n readonly probe: { readonly every: Duration.Input; readonly max: Duration.Input }\n readonly timeout: Duration.Input\n readonly restarts?: number\n}) => {\n const every = millis(options.probe.every, \"probe.every\")\n const maximum = millis(options.probe.max, \"probe.max\")\n const timeout = millis(options.timeout, \"timeout\")\n const restarts = options.restarts ?? 0\n if (maximum < every) throw new RangeError(\"ExternalJob.make: probe.max must be at least probe.every\")\n if (!Number.isSafeInteger(restarts) || restarts < 0) {\n throw new RangeError(\"ExternalJob.make: restarts must be a nonnegative safe integer\")\n }\n type Input = P extends Schema.Struct.Fields ? Schema.Struct<P> : P\n // Erase field modifiers at nesting boundaries: these are required values,\n // even when the author's schema contains optional fields internally.\n const input =\n (Schema.isSchema(options.payload) ? options.payload : Schema.Struct(options.payload)) as unknown as Schema.Codec<\n Input[\"Type\"],\n Input[\"Encoded\"],\n Input[\"DecodingServices\"],\n Input[\"EncodingServices\"]\n >\n const handle = options.handle as Schema.Codec<H[\"Type\"], H[\"Encoded\"], H[\"DecodingServices\"], H[\"EncodingServices\"]>\n const providerError = (options.error ?? Schema.Never) as E\n const failure = Schema.Union([providerError, ExternalJobLost, ExternalJobTimedOut, Sleep.SleepRequestInvalid])\n const state = Schema.Struct({\n input,\n origin: Schema.String,\n startedAt: Schema.Number,\n generation: Schema.Int,\n probe: Schema.Int\n })\n const observed = Schema.Struct({ ...state.fields, handle })\n type State = typeof state.Type\n type Observed = typeof observed.Type\n const keyOf = (job: { readonly origin: string; readonly generation: number }) => `${job.origin}#g${job.generation}`\n const captures = { tag, every, maximum, timeout, restarts, version: \"external-job/v1\" }\n type Active = { executionId: string; current: { handle: H[\"Type\"]; key: string } | undefined }\n const active = Context.Service<Active>(`${tag}/ExternalJobActive`)\n // Registry tables wrap get() for module isolation but retain add(), the\n // scoped registration owner. Anchor lifecycle bindings to that owner.\n const cancellations = new WeakMap<object, (handle: H[\"Type\"], key: string) => Effect.Effect<void>>()\n const annotations = Context.make(ExecutionMiddleware, {\n wrap: (payload, body) =>\n Effect.gen(function*() {\n const instance = yield* FlowInstance\n const table = yield* Action.Implementations\n const cancel = cancellations.get(table.add)\n if (cancel === undefined) {\n return yield* Effect.die(\n new Interpreter.InterpreterError({\n code: \"unresolved_action\",\n flow: tag,\n node: `${tag}/cancel`,\n message: `ExternalJob ${tag} has no cancellation implementation; provide its toLayer`\n })\n )\n }\n const current: Active = {\n executionId: instance.executionId,\n current: instance.flow._tag === `${tag}/observe`\n ? { handle: (payload as Observed).handle, key: keyOf(payload as Observed) } :\n undefined\n }\n yield* Flow.withRollback(Effect.succeed(current), (value, cause) =>\n Cause.hasInterruptsOnly(cause) && !instance.interrupted && !instance.suspended || value.current === undefined\n ? Effect.void :\n cancel(value.current.handle, value.current.key))\n return yield* body.pipe(Effect.provideService(active, current))\n })\n })\n const Initialize = Action.make(`${tag}/initialize`, { payload: { input }, success: state })\n const Start = Action.make(`${tag}/start`, {\n payload: state,\n success: options.handle,\n error: providerError,\n tier: \"irreversible\",\n idempotencyKey: keyOf\n })\n const Probe = Action.make(`${tag}/status`, {\n payload: observed,\n success: Schema.Struct({\n status: Status,\n timedOut: Schema.Boolean,\n wakeAt: Schema.Number,\n next: observed,\n restart: state\n }),\n error: providerError,\n implementationVersion: \"external-job/status/v1\",\n effects: { reads: [], writes: [], mode: \"expected\", onConflict: \"fail\" },\n tier: \"sealed\",\n idempotencyKey: (job) => `${keyOf(job)}/probe/${job.probe}`\n })\n const Collect = Action.make(`${tag}/collect`, {\n payload: { job: observed, exited: Schema.Struct({ _tag: Schema.Literal(\"Exited\"), exitCode: Schema.Int }) },\n success: options.success,\n error: Schema.Union([providerError, Again]),\n tier: \"irreversible\",\n idempotencyKey: ({ job }) => `${keyOf(job)}/collect`\n })\n const Cancel = Action.make(`${tag}/cancel`, {\n payload: observed,\n success: Schema.Void,\n tier: \"irreversible\",\n idempotencyKey: (job) => `${keyOf(job)}/cancel`\n })\n const Fail = Action.make(`${tag}/fail`, {\n payload: { job: observed, timedOut: Schema.Boolean },\n success: Schema.Never,\n error: Schema.Union([ExternalJobLost, ExternalJobTimedOut])\n })\n const Ready = Action.make(`${tag}/ready`, { payload: state, success: Schema.Boolean })\n const LaunchFailure = Action.make(`${tag}/launch-timeout`, {\n payload: state,\n success: Schema.Never,\n error: ExternalJobTimedOut\n })\n const launched = (job: State | Action.PlannedPayload<State>) =>\n Start.call(job as Action.PlannedPayload<State>).pipe(\n Node.bindPlanned((handle) =>\n observe.to({\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation,\n probe: job.probe,\n handle\n })\n )\n )\n // Pin the declared union through recursive bodies: cross-package inference\n // otherwise narrows the error schema to the provider-only generic E.\n const launch: Flow.Flow<string, typeof state, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/launch`,\n typeof state,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/launch`,\n {\n payload: state,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Ready.call(job).pipe(Node.branch({\n if: Node.capture(captures, (ready) => ready),\n then: () => launched(job),\n else: () => LaunchFailure.call(job)\n }))\n )\n }\n )\n const recover = (job: Observed, result: Action.PlannedPayload<{ restart: State; wakeAt: number }>) =>\n Cancel.call(job).pipe(Node.andThen(\n Node.succeed(job).pipe(Node.branch({\n if: Node.capture(captures, (current) => current.generation <= restarts),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(launch.to(result.restart))),\n else: () => Fail.call({ job, timedOut: false })\n }))\n ))\n const observe: Flow.Flow<string, typeof observed, A, typeof failure, Action.Requirement<string>> = Flow.make<\n `${Tag}/observe`,\n typeof observed,\n A,\n typeof failure,\n Action.Requirement<string>\n >(\n `${tag}/observe`,\n {\n payload: observed,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(\n captures,\n (job) =>\n Probe.call(job).pipe(Node.bindPlanned((result) =>\n Node.succeed(result).pipe(Node.branch({\n if: Node.capture(captures, (value) => value.timedOut),\n then: () => Cancel.call(job).pipe(Node.andThen(Fail.call({ job, timedOut: true }))),\n else: () =>\n Node.succeed(result.status).pipe(Node.branch({\n if: Node.capture(captures, (status) => status._tag === \"Running\"),\n then: () => Sleep.action.call({ until: result.wakeAt }).pipe(Node.andThen(observe.to(result.next))),\n else: (status) =>\n Node.succeed(status).pipe(Node.branch({\n if: Node.capture(captures, (value) => value._tag === \"Lost\"),\n then: () => recover(job, result),\n else: (exited) =>\n Collect.call({ job, exited: exited as unknown as Exited }).pipe(\n Node.catch({ error: Again, onFailure: () => recover(job, result) })\n )\n }))\n }))\n }))\n ))\n )\n }\n )\n const flow = Flow.make<Tag, P, A, typeof failure, Action.Requirement<string>>(tag, {\n payload: options.payload,\n success: options.success,\n error: failure,\n annotations,\n body: Node.capture(captures, (payload) => Initialize.call({ input: payload }).pipe(Node.bindPlanned(launched)))\n })\n const toLayer = <R>(operations: Operations<typeof input.Type, H[\"Type\"], A[\"Type\"], E[\"Type\"], R>) => {\n const bindCancellation = Layer.effectDiscard(Effect.gen(function*() {\n const table = yield* Action.Implementations\n const context = yield* Effect.context<R>()\n const cancel = (handle: H[\"Type\"], key: string) =>\n operations.cancel(handle, key).pipe(Effect.provideContext(context))\n cancellations.set(table.add, cancel)\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n if (cancellations.get(table.add) === cancel) cancellations.delete(table.add)\n })\n )\n }))\n const interpreter = Layer.mergeAll(Interpreter.layer(flow), Interpreter.layer(launch), Interpreter.layer(observe))\n const layer = Layer.mergeAll(\n interpreter,\n bindCancellation,\n Sleep.layer,\n Initialize.toLayer(({ input }) =>\n Effect.gen(function*() {\n const instance = yield* active\n return {\n input,\n origin: instance.executionId,\n startedAt: Math.floor(yield* Clock.currentTimeMillis),\n generation: 1,\n probe: 1\n }\n })\n ),\n Start.toLayer((job) =>\n Effect.tap(operations.start(job.input, keyOf(job)), (handle) =>\n Effect.map(active, (value) => {\n value.current = { handle, key: keyOf(job) }\n }))\n ),\n Probe.toLayer((job) =>\n Effect.gen(function*() {\n let now = Math.floor(yield* Clock.currentTimeMillis)\n const deadline = job.startedAt + timeout\n let timedOut = now >= deadline\n const status = timedOut ? { _tag: \"Running\" as const } : yield* Effect.raceFirst(\n operations.status(job.handle, keyOf(job)),\n Effect.sleep(deadline - now).pipe(Effect.as({ _tag: \"Running\" as const }))\n )\n now = Math.floor(yield* Clock.currentTimeMillis)\n timedOut ||= now >= deadline\n const delay = Math.min(maximum, every * 2 ** Math.min(job.probe - 1, 1023))\n return {\n status,\n timedOut,\n wakeAt: Math.min(deadline, Math.ceil(now + delay)),\n next: { ...job, probe: job.probe + 1 },\n restart: {\n input: job.input,\n origin: job.origin,\n startedAt: job.startedAt,\n generation: job.generation + 1,\n probe: 1\n }\n }\n }), { implementationVersion: \"external-job/status/v1\" }),\n Collect.toLayer(({ exited, job }) =>\n Effect.tap(operations.collect(job.handle, keyOf(job), exited), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Cancel.toLayer((job) =>\n Effect.tap(operations.cancel(job.handle, keyOf(job)), () =>\n Effect.map(active, (value) => {\n value.current = undefined\n }))\n ),\n Fail.toLayer(({ job, timedOut }) =>\n Effect.fail(\n timedOut\n ? new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out` })\n : new ExternalJobLost({\n key: keyOf(job),\n message: `Job ${keyOf(job)} exhausted its replacement generations`\n })\n )\n ),\n Ready.toLayer((job) => Effect.map(Clock.currentTimeMillis, (now) => now < job.startedAt + timeout)),\n LaunchFailure.toLayer((job) =>\n Effect.fail(\n new ExternalJobTimedOut({ key: keyOf(job), message: `Job ${keyOf(job)} timed out before replacement start` })\n )\n )\n )\n // Active is supplied by the execution middleware, never by the host.\n return layer as Layer.Layer<\n Layer.Success<typeof layer>,\n Layer.Error<typeof layer>,\n Exclude<Layer.Services<typeof layer>, Active>\n >\n }\n // A job requires its own execution scope and identity even when composed\n // through call; reuse the existing child boundary rather than inline it.\n const call: typeof flow.child = (payload) => flow.child(payload)\n return Object.assign(flow, { call, toLayer }) as {\n readonly call: typeof call\n readonly toLayer: typeof toLayer\n } & typeof flow\n}\n"]}