@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,98 @@
1
+ /**
2
+ * The system timer, as an ordinary declared action.
3
+ *
4
+ * `docs/concepts/flows-and-actions.md` names the timer primitive a
5
+ * gap and says how to close it: ship it over the existing `DurableClock`, so a
6
+ * wait is a visible, keyed plan node rather than a second execution mechanism.
7
+ * That is this module. {@link action} is a plain `Action.make` declaration —
8
+ * it appears in a catalog, `.call()` records a node, and `Graph.build` puts that
9
+ * node in the plan beside every other step — and {@link layer} is the
10
+ * implementation the hosts that can run a timer provide.
11
+ *
12
+ * The wait itself is `DurableClock`'s, not a new one. The implementation arms
13
+ * the durable clock and awaits its deferred, which is what parks the execution;
14
+ * the park is declared through the ordinary waiting vocabulary
15
+ * ({@link module:WaitingAnnotation.annotateWaiting}) under `timer`, with the
16
+ * deadline as `wakeAt`, so a durable driver records the same waiting row it
17
+ * records for a hand-written `DurableClock.sleep`. Replay is the deferred's:
18
+ * once the clock has fired, its result is persisted, so a re-driven round reads
19
+ * it and runs straight through instead of parking a second time.
20
+ *
21
+ * Which clock a wait arms is the dispatch's own, read from
22
+ * {@link module:Context.CurrentInvocationKey}: a keyed node already owns an
23
+ * identity that survives replay and separates two identical calls, so the timer
24
+ * inherits it rather than being addressed by the payload it was called with.
25
+ *
26
+ * @since 0.1.0
27
+ */
28
+ import type * as Crypto from "effect/Crypto";
29
+ import type * as Layer from "effect/Layer";
30
+ import * as Schema from "effect/Schema";
31
+ import * as Action from "./Action/index.ts";
32
+ import type { FlowRuntime } from "./FlowRuntime/FlowRuntime.ts";
33
+ declare const SleepRequestInvalid_base: Schema.Class<SleepRequestInvalid, Schema.TaggedStruct<"@smthrs/flow/SleepRequestInvalid", {
34
+ readonly code: Schema.Literals<readonly ["missing_deadline", "ambiguous_deadline", "invalid_deadline"]>;
35
+ readonly message: Schema.String;
36
+ }>, import("effect/Cause").YieldableError>;
37
+ /**
38
+ * A sleep whose payload does not name exactly one deadline.
39
+ *
40
+ * A payload carries a relative `millis` or an absolute `until`, and naming
41
+ * both, or neither, leaves no deadline to arm a clock with. It is a typed
42
+ * failure rather than a defect because the payload of a driven node is
43
+ * assembled from plan values, so an author's mistake is recoverable through
44
+ * `Node.catch` like any other declared failure.
45
+ *
46
+ * @category errors
47
+ * @since 0.1.0
48
+ */
49
+ export declare class SleepRequestInvalid extends SleepRequestInvalid_base {
50
+ }
51
+ /**
52
+ * The tag the sleep declaration is catalogued and resolved under.
53
+ *
54
+ * @category constructors
55
+ * @since 0.1.0
56
+ */
57
+ export declare const tag = "system/sleep";
58
+ /**
59
+ * The declared sleep action: `millis` from now, or an absolute `until`.
60
+ *
61
+ * **When to use**
62
+ *
63
+ * Use it in a body wherever a round has to wait for time to pass —
64
+ * `Sleep.action.call({ millis: 60_000 })` — rather than reaching for
65
+ * `DurableClock.sleep`, which is only callable from a handler and leaves
66
+ * nothing in the plan. A sleep node is keyed, inspectable, and skippable by a
67
+ * branch exactly like an action that does work.
68
+ *
69
+ * Two waits of the same length are two waits: `sleep(1h)` followed by
70
+ * `sleep(1h)` sleeps for two hours, because each call is its own node with its
71
+ * own identity, exactly as two calls of any other declaration are.
72
+ *
73
+ * @category constructors
74
+ * @since 0.1.0
75
+ */
76
+ export declare const action: Action.Declared<typeof tag, Schema.Struct<{
77
+ readonly millis: Schema.optional<Schema.Number>;
78
+ readonly until: Schema.optional<Schema.Number>;
79
+ }>, typeof Schema.Void, typeof SleepRequestInvalid, never>;
80
+ /**
81
+ * The sleep implementation: arm the durable clock, park under `timer`, wake.
82
+ *
83
+ * Provide it beside the other action implementation layers a body calls, over
84
+ * the {@link module:Implementations.layerImplementations} table they file
85
+ * themselves in:
86
+ *
87
+ * ```ts
88
+ * Layer.mergeAll(Sleep.layer, Interpreter.layer(Pipeline)).pipe(
89
+ * Layer.provideMerge(Action.layerImplementations)
90
+ * )
91
+ * ```
92
+ *
93
+ * @category layers
94
+ * @since 0.1.0
95
+ */
96
+ export declare const layer: Layer.Layer<never, never, Crypto.Crypto | FlowRuntime>;
97
+ export {};
98
+ //# sourceMappingURL=Sleep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sleep.d.ts","sourceRoot":"","sources":["../../src/Sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAG5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;;;;;AAG/D;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,SAAQ,wBAMxC;CAAG;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,GAAG,iBAAiB,CAAA;AAEjC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,QAAQ,CAClC,OAAO,GAAG,EACV,MAAM,CAAC,MAAM,CAAC;IACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CAC/C,CAAC,EACF,OAAO,MAAM,CAAC,IAAI,EAClB,OAAO,mBAAmB,EAC1B,KAAK,CASL,CAAA;AA6GF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAuCxE,CAAA"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var Sleep_exports = {};
30
+ __export(Sleep_exports, {
31
+ SleepRequestInvalid: () => SleepRequestInvalid,
32
+ action: () => action,
33
+ layer: () => layer,
34
+ tag: () => tag
35
+ });
36
+ module.exports = __toCommonJS(Sleep_exports);
37
+ var Clock = __toESM(require("effect/Clock"), 1);
38
+ var Duration = __toESM(require("effect/Duration"), 1);
39
+ var Effect = __toESM(require("effect/Effect"), 1);
40
+ var Schema = __toESM(require("effect/Schema"), 1);
41
+ var Action = __toESM(require("./Action/index.js"), 1);
42
+ var DurableClock = __toESM(require("./DurableClock.js"), 1);
43
+ var import_WaitingAnnotation = require("./FlowRuntime/WaitingAnnotation.js");
44
+ class SleepRequestInvalid extends Schema.TaggedError()(
45
+ "@smthrs/flow/SleepRequestInvalid",
46
+ {
47
+ code: Schema.Literals(["missing_deadline", "ambiguous_deadline", "invalid_deadline"]),
48
+ message: Schema.String
49
+ }
50
+ ) {
51
+ }
52
+ const tag = "system/sleep";
53
+ const action = Action.makeSystem(tag, {
54
+ payload: {
55
+ millis: Schema.optional(Schema.Number),
56
+ until: Schema.optional(Schema.Number)
57
+ },
58
+ success: Schema.Void,
59
+ error: SleepRequestInvalid,
60
+ tier: "sealed"
61
+ });
62
+ const deadlineOf = (payload, now) => {
63
+ if (payload.millis !== void 0 && payload.until !== void 0) {
64
+ return Effect.fail(
65
+ new SleepRequestInvalid({
66
+ code: "ambiguous_deadline",
67
+ message: `${tag} was called with both "millis" and "until". A sleep names one deadline: a relative duration, or an absolute epoch time.`
68
+ })
69
+ );
70
+ }
71
+ if (payload.millis !== void 0) {
72
+ if (!Number.isFinite(payload.millis) || payload.millis < 0) {
73
+ return Effect.fail(
74
+ new SleepRequestInvalid({
75
+ code: "invalid_deadline",
76
+ message: `${tag} was called with millis ${payload.millis}. A deadline is a finite number of milliseconds that is not negative; the sleep would be over before it started, or never over at all.`
77
+ })
78
+ );
79
+ }
80
+ const deadline = now + payload.millis;
81
+ if (!Number.isFinite(deadline)) {
82
+ return Effect.fail(
83
+ new SleepRequestInvalid({
84
+ code: "invalid_deadline",
85
+ message: `${tag} was called with millis ${payload.millis} at current time ${now}, which produces ${deadline}. A deadline is a finite epoch time in milliseconds.`
86
+ })
87
+ );
88
+ }
89
+ return Effect.succeed(deadline);
90
+ }
91
+ if (payload.until !== void 0) {
92
+ return Number.isFinite(payload.until) ? Effect.succeed(payload.until) : Effect.fail(
93
+ new SleepRequestInvalid({
94
+ code: "invalid_deadline",
95
+ message: `${tag} was called with until ${payload.until}. A deadline is a finite epoch time in milliseconds; the sleep must end at a real point in time.`
96
+ })
97
+ );
98
+ }
99
+ return Effect.fail(
100
+ new SleepRequestInvalid({
101
+ code: "missing_deadline",
102
+ message: `${tag} was called with neither "millis" nor "until", so there is no deadline to wait for.`
103
+ })
104
+ );
105
+ };
106
+ const clockName = Effect.gen(function* () {
107
+ const invocation = yield* Action.CurrentInvocationKey;
108
+ if (invocation === void 0) {
109
+ return yield* Effect.die(
110
+ `${tag} ran under a runtime that supplies no Action.CurrentInvocationKey. A durable timer is named by the dispatch that armed it, so a runtime that does not identify the dispatch cannot arm one.`
111
+ );
112
+ }
113
+ return `Sleep/${invocation}`;
114
+ });
115
+ const layer = action.toLayer(
116
+ (payload) => Effect.gen(function* () {
117
+ const now = Math.floor(yield* Clock.currentTimeMillis);
118
+ const wakeAt = Math.ceil(yield* deadlineOf(payload, now));
119
+ const remaining = wakeAt - now;
120
+ if (remaining <= 0) return;
121
+ const name = yield* clockName;
122
+ yield* (0, import_WaitingAnnotation.annotateWaiting)({ reason: "timer", wakeAt });
123
+ yield* DurableClock.sleep({
124
+ name,
125
+ duration: Duration.millis(remaining),
126
+ // The wait is the point: a sleep called as a plan node parks the
127
+ // execution rather than holding a fiber open, so the in-memory shortcut
128
+ // is disabled instead of being left at its 60-second default.
129
+ inMemoryThreshold: Duration.zero
130
+ });
131
+ })
132
+ );
133
+ //# sourceMappingURL=Sleep.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Sleep.ts"],
4
+ "sourcesContent": ["/**\n * The system timer, as an ordinary declared action.\n *\n * `docs/concepts/flows-and-actions.md` names the timer primitive a\n * gap and says how to close it: ship it over the existing `DurableClock`, so a\n * wait is a visible, keyed plan node rather than a second execution mechanism.\n * That is this module. {@link action} is a plain `Action.make` declaration \u2014\n * it appears in a catalog, `.call()` records a node, and `Graph.build` puts that\n * node in the plan beside every other step \u2014 and {@link layer} is the\n * implementation the hosts that can run a timer provide.\n *\n * The wait itself is `DurableClock`'s, not a new one. The implementation arms\n * the durable clock and awaits its deferred, which is what parks the execution;\n * the park is declared through the ordinary waiting vocabulary\n * ({@link module:WaitingAnnotation.annotateWaiting}) under `timer`, with the\n * deadline as `wakeAt`, so a durable driver records the same waiting row it\n * records for a hand-written `DurableClock.sleep`. Replay is the deferred's:\n * once the clock has fired, its result is persisted, so a re-driven round reads\n * it and runs straight through instead of parking a second time.\n *\n * Which clock a wait arms is the dispatch's own, read from\n * {@link module:Context.CurrentInvocationKey}: a keyed node already owns an\n * identity that survives replay and separates two identical calls, so the timer\n * inherits it rather than being addressed by the payload it was called with.\n *\n * @since 0.1.0\n */\n\nimport * as Clock from \"effect/Clock\"\nimport type * as Crypto from \"effect/Crypto\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport type * as Layer from \"effect/Layer\"\nimport * as Schema from \"effect/Schema\"\nimport * as Action from \"./Action/index.ts\"\nimport * as DurableClock from \"./DurableClock.ts\"\nimport type { FlowRuntime } from \"./FlowRuntime/FlowRuntime.ts\"\nimport { annotateWaiting } from \"./FlowRuntime/WaitingAnnotation.ts\"\n\n/**\n * A sleep whose payload does not name exactly one deadline.\n *\n * A payload carries a relative `millis` or an absolute `until`, and naming\n * both, or neither, leaves no deadline to arm a clock with. It is a typed\n * failure rather than a defect because the payload of a driven node is\n * assembled from plan values, so an author's mistake is recoverable through\n * `Node.catch` like any other declared failure.\n *\n * @category errors\n * @since 0.1.0\n */\nexport class SleepRequestInvalid extends Schema.TaggedError<SleepRequestInvalid>()(\n \"@smthrs/flow/SleepRequestInvalid\",\n {\n code: Schema.Literals([\"missing_deadline\", \"ambiguous_deadline\", \"invalid_deadline\"]),\n message: Schema.String\n }\n) {}\n\n/**\n * The tag the sleep declaration is catalogued and resolved under.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const tag = \"system/sleep\"\n\n/**\n * The declared sleep action: `millis` from now, or an absolute `until`.\n *\n * **When to use**\n *\n * Use it in a body wherever a round has to wait for time to pass \u2014\n * `Sleep.action.call({ millis: 60_000 })` \u2014 rather than reaching for\n * `DurableClock.sleep`, which is only callable from a handler and leaves\n * nothing in the plan. A sleep node is keyed, inspectable, and skippable by a\n * branch exactly like an action that does work.\n *\n * Two waits of the same length are two waits: `sleep(1h)` followed by\n * `sleep(1h)` sleeps for two hours, because each call is its own node with its\n * own identity, exactly as two calls of any other declaration are.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const action: Action.Declared<\n typeof tag,\n Schema.Struct<{\n readonly millis: Schema.optional<Schema.Number>\n readonly until: Schema.optional<Schema.Number>\n }>,\n typeof Schema.Void,\n typeof SleepRequestInvalid,\n never\n> = Action.makeSystem(tag, {\n payload: {\n millis: Schema.optional(Schema.Number),\n until: Schema.optional(Schema.Number)\n },\n success: Schema.Void,\n error: SleepRequestInvalid,\n tier: \"sealed\"\n})\n\n/**\n * The absolute deadline a payload names, in epoch milliseconds.\n *\n * DECIDED: a payload names EXACTLY one of `millis`\n * and `until`, and both other shapes are refused rather than resolved by\n * precedence. A precedence rule would silently ignore half of a payload an\n * author believed in, and the two fields are the same fact stated two ways, so\n * there is no shape where carrying both is meaningful.\n *\n * `Duration.millis` accepts every number, so an unchecked deadline changes the\n * sleep instead of refusing it. `NaN` becomes zero, a negative relative delay\n * has already passed, and `Infinity` never ends. The implementation rejects\n * those values before it annotates the instance or arms a clock. A finite\n * absolute `until` remains legal when it is in the past because that sleep can\n * settle immediately.\n *\n * @private\n */\nconst deadlineOf = (\n payload: { readonly millis?: number | undefined; readonly until?: number | undefined },\n now: number\n): Effect.Effect<number, SleepRequestInvalid> => {\n if (payload.millis !== undefined && payload.until !== undefined) {\n return Effect.fail(\n new SleepRequestInvalid({\n code: \"ambiguous_deadline\",\n message: `${tag} was called with both \"millis\" and \"until\". A sleep names one deadline: ` +\n \"a relative duration, or an absolute epoch time.\"\n })\n )\n }\n if (payload.millis !== undefined) {\n if (!Number.isFinite(payload.millis) || payload.millis < 0) {\n return Effect.fail(\n new SleepRequestInvalid({\n code: \"invalid_deadline\",\n message: `${tag} was called with millis ${payload.millis}. A deadline is a finite number of ` +\n \"milliseconds that is not negative; the sleep would be over before it started, or never over at all.\"\n })\n )\n }\n const deadline = now + payload.millis\n if (!Number.isFinite(deadline)) {\n return Effect.fail(\n new SleepRequestInvalid({\n code: \"invalid_deadline\",\n message: `${tag} was called with millis ${payload.millis} at current time ${now}, which produces ` +\n `${deadline}. A deadline is a finite epoch time in milliseconds.`\n })\n )\n }\n return Effect.succeed(deadline)\n }\n if (payload.until !== undefined) {\n return Number.isFinite(payload.until)\n ? Effect.succeed(payload.until)\n : Effect.fail(\n new SleepRequestInvalid({\n code: \"invalid_deadline\",\n message:\n `${tag} was called with until ${payload.until}. A deadline is a finite epoch time in milliseconds; ` +\n \"the sleep must end at a real point in time.\"\n })\n )\n }\n return Effect.fail(\n new SleepRequestInvalid({\n code: \"missing_deadline\",\n message: `${tag} was called with neither \"millis\" nor \"until\", so there is no deadline to wait for.`\n })\n )\n}\n\n/**\n * The durable clock the dispatch currently executing arms.\n *\n * DECIDED: the name is derived from the ENGINE's\n * per-dispatch identity \u2014 the invocation key it already allocated \u2014 rather than\n * from the payload. A durable clock's deferred is addressed by (execution,\n * name), so the name has to be stable across replays of one node and distinct\n * between two identical nodes, and the invocation key is exactly that: it is\n * allocated on every dispatch including a replayed one, because the driver\n * addresses the recorded outcome by it. A payload-derived name has only the\n * first property \u2014 `sleep(1h); work(); sleep(1h)` would address ONE wake and\n * sleep once \u2014 and closing that with a discriminator in the payload would make\n * an author carry identity that a keyed plan node already has.\n *\n * DECIDED: a runtime that supplies no dispatch\n * identity is refused as a defect rather than falling back to the payload. The\n * fallback is unobservable in the one-wait case and silently collapses two\n * waits in every other, so it would trade a wiring error a host fixes once for\n * a run that quietly sleeps for half as long as it declared.\n *\n * @private\n */\nconst clockName: Effect.Effect<string> = Effect.gen(function*() {\n const invocation = yield* Action.CurrentInvocationKey\n if (invocation === undefined) {\n return yield* Effect.die(\n `${tag} ran under a runtime that supplies no Action.CurrentInvocationKey. ` +\n \"A durable timer is named by the dispatch that armed it, so a runtime that does not \" +\n \"identify the dispatch cannot arm one.\"\n )\n }\n return `Sleep/${invocation}`\n})\n\n/**\n * The sleep implementation: arm the durable clock, park under `timer`, wake.\n *\n * Provide it beside the other action implementation layers a body calls, over\n * the {@link module:Implementations.layerImplementations} table they file\n * themselves in:\n *\n * ```ts\n * Layer.mergeAll(Sleep.layer, Interpreter.layer(Pipeline)).pipe(\n * Layer.provideMerge(Action.layerImplementations)\n * )\n * ```\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer: Layer.Layer<never, never, Crypto.Crypto | FlowRuntime> = action.toLayer((payload) =>\n Effect.gen(function*() {\n // Whole milliseconds, both of them. A durable deadline lands in an INTEGER\n // column whose CHECK constraint refuses anything else\n // (`flows_runs.waiting_wake_at_ms`, `flows_clock_deadlines.due_at_ms`), and\n // `Clock.currentTimeMillis` is not integral under every clock: a test clock\n // advanced by a fractional-millisecond sleep reports a fractional now, and\n // a fractional `millis` or `until` in the payload does the same. The\n // unrounded deadline reached the park write as a raw SQL constraint\n // failure, which killed the drive and left the run `running` with nothing\n // left to wake it. `now` floors, and the deadline ceils so a rounded sleep\n // never ends before the instant it was asked to wait for.\n const now = Math.floor(yield* Clock.currentTimeMillis)\n const wakeAt = Math.ceil(yield* deadlineOf(payload, now))\n const remaining = wakeAt - now\n // DECIDED: a deadline that has already passed\n // settles the node instead of parking it. A durable wait exists to survive\n // the gap until a deadline, and a run that resumes after its own deadline\n // has to make progress rather than park again on a timer that can only fire\n // in the past.\n if (remaining <= 0) return\n const name = yield* clockName\n // DECIDED: the park is declared rather than\n // left to a driver's derivation, so a host with no clock table still parks\n // under `timer`. A `millis` deadline is recomputed from the current clock,\n // so a round re-driven before its timer fires re-declares a `wakeAt` later\n // than the armed one; the wake itself is unaffected, because the durable\n // clock row is keyed by name and keeps the deadline it was first armed\n // with, and `wakeAt` is a sweeper hint rather than the wake.\n yield* annotateWaiting({ reason: \"timer\", wakeAt })\n yield* DurableClock.sleep({\n name,\n duration: Duration.millis(remaining),\n // The wait is the point: a sleep called as a plan node parks the\n // execution rather than holding a fiber open, so the in-memory shortcut\n // is disabled instead of being left at its 60-second default.\n inMemoryThreshold: Duration.zero\n })\n })\n)\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BA,YAAuB;AAEvB,eAA0B;AAC1B,aAAwB;AAExB,aAAwB;AACxB,aAAwB;AACxB,mBAA8B;AAE9B,+BAAgC;AAczB,MAAM,4BAA4B,OAAO,YAAiC;AAAA,EAC/E;AAAA,EACA;AAAA,IACE,MAAM,OAAO,SAAS,CAAC,oBAAoB,sBAAsB,kBAAkB,CAAC;AAAA,IACpF,SAAS,OAAO;AAAA,EAClB;AACF,EAAE;AAAC;AAQI,MAAM,MAAM;AAoBZ,MAAM,SAST,OAAO,WAAW,KAAK;AAAA,EACzB,SAAS;AAAA,IACP,QAAQ,OAAO,SAAS,OAAO,MAAM;AAAA,IACrC,OAAO,OAAO,SAAS,OAAO,MAAM;AAAA,EACtC;AAAA,EACA,SAAS,OAAO;AAAA,EAChB,OAAO;AAAA,EACP,MAAM;AACR,CAAC;AAoBD,MAAM,aAAa,CACjB,SACA,QAC+C;AAC/C,MAAI,QAAQ,WAAW,UAAa,QAAQ,UAAU,QAAW;AAC/D,WAAO,OAAO;AAAA,MACZ,IAAI,oBAAoB;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,GAAG,GAAG;AAAA,MAEjB,CAAC;AAAA,IACH;AAAA,EACF;AACA,MAAI,QAAQ,WAAW,QAAW;AAChC,QAAI,CAAC,OAAO,SAAS,QAAQ,MAAM,KAAK,QAAQ,SAAS,GAAG;AAC1D,aAAO,OAAO;AAAA,QACZ,IAAI,oBAAoB;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,GAAG,GAAG,2BAA2B,QAAQ,MAAM;AAAA,QAE1D,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAQ;AAC/B,QAAI,CAAC,OAAO,SAAS,QAAQ,GAAG;AAC9B,aAAO,OAAO;AAAA,QACZ,IAAI,oBAAoB;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,GAAG,GAAG,2BAA2B,QAAQ,MAAM,oBAAoB,GAAG,oBAC1E,QAAQ;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,OAAO,QAAQ,QAAQ;AAAA,EAChC;AACA,MAAI,QAAQ,UAAU,QAAW;AAC/B,WAAO,OAAO,SAAS,QAAQ,KAAK,IAChC,OAAO,QAAQ,QAAQ,KAAK,IAC5B,OAAO;AAAA,MACP,IAAI,oBAAoB;AAAA,QACtB,MAAM;AAAA,QACN,SACE,GAAG,GAAG,0BAA0B,QAAQ,KAAK;AAAA,MAEjD,CAAC;AAAA,IACH;AAAA,EACJ;AACA,SAAO,OAAO;AAAA,IACZ,IAAI,oBAAoB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS,GAAG,GAAG;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAwBA,MAAM,YAAmC,OAAO,IAAI,aAAY;AAC9D,QAAM,aAAa,OAAO,OAAO;AACjC,MAAI,eAAe,QAAW;AAC5B,WAAO,OAAO,OAAO;AAAA,MACnB,GAAG,GAAG;AAAA,IAGR;AAAA,EACF;AACA,SAAO,SAAS,UAAU;AAC5B,CAAC;AAkBM,MAAM,QAAgE,OAAO;AAAA,EAAQ,CAAC,YAC3F,OAAO,IAAI,aAAY;AAWrB,UAAM,MAAM,KAAK,MAAM,OAAO,MAAM,iBAAiB;AACrD,UAAM,SAAS,KAAK,KAAK,OAAO,WAAW,SAAS,GAAG,CAAC;AACxD,UAAM,YAAY,SAAS;AAM3B,QAAI,aAAa,EAAG;AACpB,UAAM,OAAO,OAAO;AAQpB,eAAO,0CAAgB,EAAE,QAAQ,SAAS,OAAO,CAAC;AAClD,WAAO,aAAa,MAAM;AAAA,MACxB;AAAA,MACA,UAAU,SAAS,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA,MAInC,mBAAmB,SAAS;AAAA,IAC9B,CAAC;AAAA,EACH,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,173 @@
1
+ /**
2
+ * The stall breaker: end a round loop that has stopped making progress.
3
+ *
4
+ * A round bound is only a budget. A loop whose rounds change nothing spends
5
+ * the whole budget anyway: an agent that rewrites the same tree, a check that
6
+ * fails the same way after every repair, a reviser that hands back the same
7
+ * draft. This module counts consecutive rounds whose signal did not move and
8
+ * reports a {@link Stalled} verdict once one signal has held for
9
+ * `rounds` rounds in a row.
10
+ *
11
+ * Three signals are read, each optional per round:
12
+ *
13
+ * - `tree`: a fingerprint of the files the round left behind, such as a JJ
14
+ * tree id or a `TreeFingerprint` checksum.
15
+ * - `checks`: the ids of the checks that failed. Order does not matter, and
16
+ * an empty list is not compared.
17
+ * - `output`: the round's value, compared by the SHA-256 of its RFC 8785
18
+ * canonical JSON. A value with no canonical form is not compared.
19
+ *
20
+ * Everything here is data. The {@link State} a round carries forward is a
21
+ * plain record, so a durable trampoline keeps it in its payload and a replay
22
+ * reads the same verdict. The loop decides what `on` means: `stop` settles
23
+ * with the stalled value, `park` settles the same way tagged for a caller
24
+ * that hands it to a person (the coding correction reports it `blocked`),
25
+ * and `escalate` fails.
26
+ *
27
+ * @since 1.0.0
28
+ */
29
+ import * as Schema from "effect/Schema";
30
+ /**
31
+ * What a loop does once it has stalled.
32
+ *
33
+ * @category models
34
+ * @since 1.0.0
35
+ */
36
+ export declare const On: Schema.Literals<readonly ["stop", "park", "escalate"]>;
37
+ /**
38
+ * The `on` values as a type.
39
+ *
40
+ * @category models
41
+ * @since 1.0.0
42
+ */
43
+ export type On = typeof On.Type;
44
+ /**
45
+ * The signal that held still.
46
+ *
47
+ * @category models
48
+ * @since 1.0.0
49
+ */
50
+ export declare const Signal: Schema.Literals<readonly ["tree", "checks", "output"]>;
51
+ /**
52
+ * The signal names as a type.
53
+ *
54
+ * @category models
55
+ * @since 1.0.0
56
+ */
57
+ export type Signal = typeof Signal.Type;
58
+ /**
59
+ * A resolved stall policy: `rounds` identical rounds in a row, at least two,
60
+ * trigger `on`.
61
+ *
62
+ * @category models
63
+ * @since 1.0.0
64
+ */
65
+ export declare const Policy: Schema.Struct<{
66
+ readonly rounds: Schema.Int;
67
+ readonly on: Schema.Literals<readonly ["stop", "park", "escalate"]>;
68
+ }>;
69
+ /**
70
+ * A resolved policy as a type.
71
+ *
72
+ * @category models
73
+ * @since 1.0.0
74
+ */
75
+ export type Policy = typeof Policy.Type;
76
+ /**
77
+ * The authoring form of a {@link Policy}; `on` defaults to `"stop"`.
78
+ *
79
+ * @category models
80
+ * @since 1.0.0
81
+ */
82
+ export interface Options {
83
+ readonly rounds: number;
84
+ readonly on?: On | undefined;
85
+ }
86
+ /**
87
+ * What one round reports. An absent signal is not compared and resets its
88
+ * streak.
89
+ *
90
+ * @category models
91
+ * @since 1.0.0
92
+ */
93
+ export interface Observation {
94
+ readonly tree?: string | undefined;
95
+ readonly checks?: ReadonlyArray<string> | undefined;
96
+ readonly output?: unknown;
97
+ }
98
+ /**
99
+ * The streak of every signal, carried from one round to the next.
100
+ *
101
+ * @category models
102
+ * @since 1.0.0
103
+ */
104
+ export declare const State: Schema.Struct<{
105
+ readonly tree: Schema.NullOr<Schema.Struct<{
106
+ readonly key: Schema.String;
107
+ readonly rounds: Schema.Int;
108
+ }>>;
109
+ readonly checks: Schema.NullOr<Schema.Struct<{
110
+ readonly key: Schema.String;
111
+ readonly rounds: Schema.Int;
112
+ }>>;
113
+ readonly output: Schema.NullOr<Schema.Struct<{
114
+ readonly key: Schema.String;
115
+ readonly rounds: Schema.Int;
116
+ }>>;
117
+ }>;
118
+ /**
119
+ * The carried streaks as a type.
120
+ *
121
+ * @category models
122
+ * @since 1.0.0
123
+ */
124
+ export type State = typeof State.Type;
125
+ /**
126
+ * The state before the first round.
127
+ *
128
+ * @category constructors
129
+ * @since 1.0.0
130
+ */
131
+ export declare const initial: State;
132
+ /**
133
+ * The typed verdict: which signal held, for how many rounds, and what the
134
+ * policy says to do.
135
+ *
136
+ * @category models
137
+ * @since 1.0.0
138
+ */
139
+ export declare const Stalled: Schema.Struct<{
140
+ readonly _tag: Schema.Literal<"Stalled">;
141
+ readonly signal: Schema.Literals<readonly ["tree", "checks", "output"]>;
142
+ readonly rounds: Schema.Int;
143
+ readonly on: Schema.Literals<readonly ["stop", "park", "escalate"]>;
144
+ }>;
145
+ /**
146
+ * The verdict as a type.
147
+ *
148
+ * @category models
149
+ * @since 1.0.0
150
+ */
151
+ export type Stalled = typeof Stalled.Type;
152
+ /**
153
+ * Validates authoring options into a {@link Policy}. Throws a `RangeError`
154
+ * for fewer than two rounds, since one round cannot repeat anything.
155
+ *
156
+ * @category constructors
157
+ * @since 1.0.0
158
+ */
159
+ export declare const policy: (options: Options) => Policy;
160
+ /**
161
+ * Folds one round into the state and reports whether the loop has stalled.
162
+ *
163
+ * Signals are judged in the order `tree`, `checks`, `output`; the first that
164
+ * reached `policy.rounds` names the verdict.
165
+ *
166
+ * @category combinators
167
+ * @since 1.0.0
168
+ */
169
+ export declare const observe: (policy: Policy, state: State, observation: Observation) => {
170
+ readonly state: State;
171
+ readonly stalled: Stalled | undefined;
172
+ };
173
+ //# sourceMappingURL=Stall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stall.d.ts","sourceRoot":"","sources":["../../src/Stall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,EAAE,wDAAgD,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,IAAI,CAAA;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,MAAM,wDAAgD,CAAA;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAID;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;EAAkE,CAAA;AAEpF;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,KAAkD,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;;;EAKlB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,MAKzC,CAAA;AAsBD;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,MAAM,EACd,OAAO,KAAK,EACZ,aAAa,WAAW,KACvB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;CAYhE,CAAA"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var Stall_exports = {};
30
+ __export(Stall_exports, {
31
+ On: () => On,
32
+ Policy: () => Policy,
33
+ Signal: () => Signal,
34
+ Stalled: () => Stalled,
35
+ State: () => State,
36
+ initial: () => initial,
37
+ observe: () => observe,
38
+ policy: () => policy
39
+ });
40
+ module.exports = __toCommonJS(Stall_exports);
41
+ var import_canonical = require("@smthrs/canonical");
42
+ var import_crypto = require("@smthrs/crypto");
43
+ var Schema = __toESM(require("effect/Schema"), 1);
44
+ const On = Schema.Literals(["stop", "park", "escalate"]);
45
+ const Signal = Schema.Literals(["tree", "checks", "output"]);
46
+ const Policy = Schema.Struct({
47
+ rounds: Schema.Int.check(Schema.isGreaterThanOrEqualTo(2)),
48
+ on: On
49
+ });
50
+ const Streak = Schema.NullOr(Schema.Struct({ key: Schema.String, rounds: Schema.Int }));
51
+ const State = Schema.Struct({ tree: Streak, checks: Streak, output: Streak });
52
+ const initial = { tree: null, checks: null, output: null };
53
+ const Stalled = Schema.Struct({
54
+ _tag: Schema.Literal("Stalled"),
55
+ signal: Signal,
56
+ rounds: Schema.Int,
57
+ on: On
58
+ });
59
+ const policy = (options) => {
60
+ if (!Number.isSafeInteger(options.rounds) || options.rounds < 2) {
61
+ throw new RangeError("Stall rounds must be a safe integer of at least 2");
62
+ }
63
+ return { rounds: options.rounds, on: options.on ?? "stop" };
64
+ };
65
+ const hash = (value) => {
66
+ try {
67
+ return (0, import_crypto.digestSync)((0, import_canonical.canonicalize)(value ?? null));
68
+ } catch {
69
+ return void 0;
70
+ }
71
+ };
72
+ const keys = (observation) => ({
73
+ tree: observation.tree,
74
+ // No failing check is not a repeated failure.
75
+ checks: observation.checks === void 0 || observation.checks.length === 0 ? void 0 : JSON.stringify([...new Set(observation.checks)].sort()),
76
+ output: "output" in observation ? hash(observation.output) : void 0
77
+ });
78
+ const signals = ["tree", "checks", "output"];
79
+ const observe = (policy2, state, observation) => {
80
+ const current = keys(observation);
81
+ const next = Object.fromEntries(signals.map((signal2) => {
82
+ const key = current[signal2];
83
+ const prior = state[signal2];
84
+ return [signal2, key === void 0 ? null : { key, rounds: prior?.key === key ? prior.rounds + 1 : 1 }];
85
+ }));
86
+ const signal = signals.find((signal2) => (next[signal2]?.rounds ?? 0) >= policy2.rounds);
87
+ return {
88
+ state: next,
89
+ stalled: signal === void 0 ? void 0 : { _tag: "Stalled", signal, rounds: next[signal].rounds, on: policy2.on }
90
+ };
91
+ };
92
+ //# sourceMappingURL=Stall.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Stall.ts"],
4
+ "sourcesContent": ["/**\n * The stall breaker: end a round loop that has stopped making progress.\n *\n * A round bound is only a budget. A loop whose rounds change nothing spends\n * the whole budget anyway: an agent that rewrites the same tree, a check that\n * fails the same way after every repair, a reviser that hands back the same\n * draft. This module counts consecutive rounds whose signal did not move and\n * reports a {@link Stalled} verdict once one signal has held for\n * `rounds` rounds in a row.\n *\n * Three signals are read, each optional per round:\n *\n * - `tree`: a fingerprint of the files the round left behind, such as a JJ\n * tree id or a `TreeFingerprint` checksum.\n * - `checks`: the ids of the checks that failed. Order does not matter, and\n * an empty list is not compared.\n * - `output`: the round's value, compared by the SHA-256 of its RFC 8785\n * canonical JSON. A value with no canonical form is not compared.\n *\n * Everything here is data. The {@link State} a round carries forward is a\n * plain record, so a durable trampoline keeps it in its payload and a replay\n * reads the same verdict. The loop decides what `on` means: `stop` settles\n * with the stalled value, `park` settles the same way tagged for a caller\n * that hands it to a person (the coding correction reports it `blocked`),\n * and `escalate` fails.\n *\n * @since 1.0.0\n */\n\nimport { canonicalize } from \"@smthrs/canonical\"\nimport { digestSync } from \"@smthrs/crypto\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * What a loop does once it has stalled.\n *\n * @category models\n * @since 1.0.0\n */\nexport const On = Schema.Literals([\"stop\", \"park\", \"escalate\"])\n\n/**\n * The `on` values as a type.\n *\n * @category models\n * @since 1.0.0\n */\nexport type On = typeof On.Type\n\n/**\n * The signal that held still.\n *\n * @category models\n * @since 1.0.0\n */\nexport const Signal = Schema.Literals([\"tree\", \"checks\", \"output\"])\n\n/**\n * The signal names as a type.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Signal = typeof Signal.Type\n\n/**\n * A resolved stall policy: `rounds` identical rounds in a row, at least two,\n * trigger `on`.\n *\n * @category models\n * @since 1.0.0\n */\nexport const Policy = Schema.Struct({\n rounds: Schema.Int.check(Schema.isGreaterThanOrEqualTo(2)),\n on: On\n})\n\n/**\n * A resolved policy as a type.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Policy = typeof Policy.Type\n\n/**\n * The authoring form of a {@link Policy}; `on` defaults to `\"stop\"`.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Options {\n readonly rounds: number\n readonly on?: On | undefined\n}\n\n/**\n * What one round reports. An absent signal is not compared and resets its\n * streak.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Observation {\n readonly tree?: string | undefined\n readonly checks?: ReadonlyArray<string> | undefined\n readonly output?: unknown\n}\n\nconst Streak = Schema.NullOr(Schema.Struct({ key: Schema.String, rounds: Schema.Int }))\n\n/**\n * The streak of every signal, carried from one round to the next.\n *\n * @category models\n * @since 1.0.0\n */\nexport const State = Schema.Struct({ tree: Streak, checks: Streak, output: Streak })\n\n/**\n * The carried streaks as a type.\n *\n * @category models\n * @since 1.0.0\n */\nexport type State = typeof State.Type\n\n/**\n * The state before the first round.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const initial: State = { tree: null, checks: null, output: null }\n\n/**\n * The typed verdict: which signal held, for how many rounds, and what the\n * policy says to do.\n *\n * @category models\n * @since 1.0.0\n */\nexport const Stalled = Schema.Struct({\n _tag: Schema.Literal(\"Stalled\"),\n signal: Signal,\n rounds: Schema.Int,\n on: On\n})\n\n/**\n * The verdict as a type.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Stalled = typeof Stalled.Type\n\n/**\n * Validates authoring options into a {@link Policy}. Throws a `RangeError`\n * for fewer than two rounds, since one round cannot repeat anything.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const policy = (options: Options): Policy => {\n if (!Number.isSafeInteger(options.rounds) || options.rounds < 2) {\n throw new RangeError(\"Stall rounds must be a safe integer of at least 2\")\n }\n return { rounds: options.rounds, on: options.on ?? \"stop\" }\n}\n\n// A value with no canonical form (an `Error`, a `bigint`) is not compared.\nconst hash = (value: unknown): string | undefined => {\n try {\n return digestSync(canonicalize(value ?? null))\n } catch {\n return undefined\n }\n}\n\nconst keys = (observation: Observation): Record<Signal, string | undefined> => ({\n tree: observation.tree,\n // No failing check is not a repeated failure.\n checks: observation.checks === undefined || observation.checks.length === 0\n ? undefined\n : JSON.stringify([...new Set(observation.checks)].sort()),\n output: \"output\" in observation ? hash(observation.output) : undefined\n})\n\nconst signals: ReadonlyArray<Signal> = [\"tree\", \"checks\", \"output\"]\n\n/**\n * Folds one round into the state and reports whether the loop has stalled.\n *\n * Signals are judged in the order `tree`, `checks`, `output`; the first that\n * reached `policy.rounds` names the verdict.\n *\n * @category combinators\n * @since 1.0.0\n */\nexport const observe = (\n policy: Policy,\n state: State,\n observation: Observation\n): { readonly state: State; readonly stalled: Stalled | undefined } => {\n const current = keys(observation)\n const next = Object.fromEntries(signals.map((signal) => {\n const key = current[signal]\n const prior = state[signal]\n return [signal, key === undefined ? null : { key, rounds: prior?.key === key ? prior.rounds + 1 : 1 }]\n })) as unknown as State\n const signal = signals.find((signal) => (next[signal]?.rounds ?? 0) >= policy.rounds)\n return {\n state: next,\n stalled: signal === undefined ? undefined : { _tag: \"Stalled\", signal, rounds: next[signal]!.rounds, on: policy.on }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BA,uBAA6B;AAC7B,oBAA2B;AAC3B,aAAwB;AAQjB,MAAM,KAAK,OAAO,SAAS,CAAC,QAAQ,QAAQ,UAAU,CAAC;AAgBvD,MAAM,SAAS,OAAO,SAAS,CAAC,QAAQ,UAAU,QAAQ,CAAC;AAiB3D,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,QAAQ,OAAO,IAAI,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAAA,EACzD,IAAI;AACN,CAAC;AAkCD,MAAM,SAAS,OAAO,OAAO,OAAO,OAAO,EAAE,KAAK,OAAO,QAAQ,QAAQ,OAAO,IAAI,CAAC,CAAC;AAQ/E,MAAM,QAAQ,OAAO,OAAO,EAAE,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAgB5E,MAAM,UAAiB,EAAE,MAAM,MAAM,QAAQ,MAAM,QAAQ,KAAK;AAShE,MAAM,UAAU,OAAO,OAAO;AAAA,EACnC,MAAM,OAAO,QAAQ,SAAS;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ,OAAO;AAAA,EACf,IAAI;AACN,CAAC;AAiBM,MAAM,SAAS,CAAC,YAA6B;AAClD,MAAI,CAAC,OAAO,cAAc,QAAQ,MAAM,KAAK,QAAQ,SAAS,GAAG;AAC/D,UAAM,IAAI,WAAW,mDAAmD;AAAA,EAC1E;AACA,SAAO,EAAE,QAAQ,QAAQ,QAAQ,IAAI,QAAQ,MAAM,OAAO;AAC5D;AAGA,MAAM,OAAO,CAAC,UAAuC;AACnD,MAAI;AACF,eAAO,8BAAW,+BAAa,SAAS,IAAI,CAAC;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,MAAM,OAAO,CAAC,iBAAkE;AAAA,EAC9E,MAAM,YAAY;AAAA;AAAA,EAElB,QAAQ,YAAY,WAAW,UAAa,YAAY,OAAO,WAAW,IACtE,SACA,KAAK,UAAU,CAAC,GAAG,IAAI,IAAI,YAAY,MAAM,CAAC,EAAE,KAAK,CAAC;AAAA,EAC1D,QAAQ,YAAY,cAAc,KAAK,YAAY,MAAM,IAAI;AAC/D;AAEA,MAAM,UAAiC,CAAC,QAAQ,UAAU,QAAQ;AAW3D,MAAM,UAAU,CACrBA,SACA,OACA,gBACqE;AACrE,QAAM,UAAU,KAAK,WAAW;AAChC,QAAM,OAAO,OAAO,YAAY,QAAQ,IAAI,CAACC,YAAW;AACtD,UAAM,MAAM,QAAQA,OAAM;AAC1B,UAAM,QAAQ,MAAMA,OAAM;AAC1B,WAAO,CAACA,SAAQ,QAAQ,SAAY,OAAO,EAAE,KAAK,QAAQ,OAAO,QAAQ,MAAM,MAAM,SAAS,IAAI,EAAE,CAAC;AAAA,EACvG,CAAC,CAAC;AACF,QAAM,SAAS,QAAQ,KAAK,CAACA,aAAY,KAAKA,OAAM,GAAG,UAAU,MAAMD,QAAO,MAAM;AACpF,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS,WAAW,SAAY,SAAY,EAAE,MAAM,WAAW,QAAQ,QAAQ,KAAK,MAAM,EAAG,QAAQ,IAAIA,QAAO,GAAG;AAAA,EACrH;AACF;",
6
+ "names": ["policy", "signal"]
7
+ }