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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -2
  4. package/THIRD_PARTY_NOTICES.md +52 -0
  5. package/dist/cjs/Action/Action.d.ts +250 -0
  6. package/dist/cjs/Action/Action.d.ts.map +1 -0
  7. package/dist/cjs/Action/Action.js +42 -0
  8. package/dist/cjs/Action/Action.js.map +7 -0
  9. package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
  10. package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
  11. package/dist/cjs/Action/AttemptTimedOut.js +51 -0
  12. package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
  13. package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
  14. package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
  15. package/dist/cjs/Action/BoundaryMode.js +36 -0
  16. package/dist/cjs/Action/BoundaryMode.js.map +7 -0
  17. package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
  18. package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
  19. package/dist/cjs/Action/CacheEnvironment.js +57 -0
  20. package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
  21. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  22. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  23. package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
  24. package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
  25. package/dist/cjs/Action/Context.d.ts +131 -0
  26. package/dist/cjs/Action/Context.d.ts.map +1 -0
  27. package/dist/cjs/Action/Context.js +68 -0
  28. package/dist/cjs/Action/Context.js.map +7 -0
  29. package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
  30. package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
  31. package/dist/cjs/Action/DuplicateImplementation.js +46 -0
  32. package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
  33. package/dist/cjs/Action/FileBoundary.d.ts +59 -0
  34. package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
  35. package/dist/cjs/Action/FileBoundary.js +81 -0
  36. package/dist/cjs/Action/FileBoundary.js.map +7 -0
  37. package/dist/cjs/Action/FileInput.d.ts +28 -0
  38. package/dist/cjs/Action/FileInput.d.ts.map +1 -0
  39. package/dist/cjs/Action/FileInput.js +42 -0
  40. package/dist/cjs/Action/FileInput.js.map +7 -0
  41. package/dist/cjs/Action/Filegroup.d.ts +16 -0
  42. package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
  43. package/dist/cjs/Action/Filegroup.js +27 -0
  44. package/dist/cjs/Action/Filegroup.js.map +7 -0
  45. package/dist/cjs/Action/Glob.d.ts +8 -0
  46. package/dist/cjs/Action/Glob.d.ts.map +1 -0
  47. package/dist/cjs/Action/Glob.js +28 -0
  48. package/dist/cjs/Action/Glob.js.map +7 -0
  49. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
  50. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  51. package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
  52. package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
  53. package/dist/cjs/Action/Implementations.d.ts +114 -0
  54. package/dist/cjs/Action/Implementations.d.ts.map +1 -0
  55. package/dist/cjs/Action/Implementations.js +65 -0
  56. package/dist/cjs/Action/Implementations.js.map +7 -0
  57. package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
  58. package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
  59. package/dist/cjs/Action/InfraInterrupt.js +46 -0
  60. package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
  61. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  62. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  63. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
  64. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
  65. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  66. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  67. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
  68. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
  69. package/dist/cjs/Action/StepIdentity.d.ts +153 -0
  70. package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
  71. package/dist/cjs/Action/StepIdentity.js +75 -0
  72. package/dist/cjs/Action/StepIdentity.js.map +7 -0
  73. package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
  74. package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
  75. package/dist/cjs/Action/TreeArtifact.js +25 -0
  76. package/dist/cjs/Action/TreeArtifact.js.map +7 -0
  77. package/dist/cjs/Action/TypeId.d.ts +8 -0
  78. package/dist/cjs/Action/TypeId.d.ts.map +1 -0
  79. package/dist/cjs/Action/TypeId.js +25 -0
  80. package/dist/cjs/Action/TypeId.js.map +7 -0
  81. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  82. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  83. package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
  84. package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
  85. package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
  86. package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
  87. package/dist/cjs/Action/idempotencyKey.js +59 -0
  88. package/dist/cjs/Action/idempotencyKey.js.map +7 -0
  89. package/dist/cjs/Action/index.d.ts +29 -0
  90. package/dist/cjs/Action/index.d.ts.map +1 -0
  91. package/dist/cjs/Action/index.js +60 -0
  92. package/dist/cjs/Action/index.js.map +7 -0
  93. package/dist/cjs/Action/make.d.ts +128 -0
  94. package/dist/cjs/Action/make.d.ts.map +1 -0
  95. package/dist/cjs/Action/make.js +373 -0
  96. package/dist/cjs/Action/make.js.map +7 -0
  97. package/dist/cjs/Action/raceAll.d.ts +21 -0
  98. package/dist/cjs/Action/raceAll.d.ts.map +1 -0
  99. package/dist/cjs/Action/raceAll.js +46 -0
  100. package/dist/cjs/Action/raceAll.js.map +7 -0
  101. package/dist/cjs/Action/retry.d.ts +19 -0
  102. package/dist/cjs/Action/retry.d.ts.map +1 -0
  103. package/dist/cjs/Action/retry.js +75 -0
  104. package/dist/cjs/Action/retry.js.map +7 -0
  105. package/dist/cjs/Deadline.d.ts +105 -0
  106. package/dist/cjs/Deadline.d.ts.map +1 -0
  107. package/dist/cjs/Deadline.js +104 -0
  108. package/dist/cjs/Deadline.js.map +7 -0
  109. package/dist/cjs/DurableClock.d.ts +61 -0
  110. package/dist/cjs/DurableClock.d.ts.map +1 -0
  111. package/dist/cjs/DurableClock.js +90 -0
  112. package/dist/cjs/DurableClock.js.map +7 -0
  113. package/dist/cjs/DurableDeferred.d.ts +311 -0
  114. package/dist/cjs/DurableDeferred.d.ts.map +1 -0
  115. package/dist/cjs/DurableDeferred.js +322 -0
  116. package/dist/cjs/DurableDeferred.js.map +7 -0
  117. package/dist/cjs/DurableQueue.d.ts +160 -0
  118. package/dist/cjs/DurableQueue.d.ts.map +1 -0
  119. package/dist/cjs/DurableQueue.js +229 -0
  120. package/dist/cjs/DurableQueue.js.map +7 -0
  121. package/dist/cjs/ExternalJob.d.ts +179 -0
  122. package/dist/cjs/ExternalJob.d.ts.map +1 -0
  123. package/dist/cjs/ExternalJob.js +338 -0
  124. package/dist/cjs/ExternalJob.js.map +7 -0
  125. package/dist/cjs/Fault.d.ts +131 -0
  126. package/dist/cjs/Fault.d.ts.map +1 -0
  127. package/dist/cjs/Fault.js +157 -0
  128. package/dist/cjs/Fault.js.map +7 -0
  129. package/dist/cjs/Flow/Annotations.d.ts +245 -0
  130. package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
  131. package/dist/cjs/Flow/Annotations.js +72 -0
  132. package/dist/cjs/Flow/Annotations.js.map +7 -0
  133. package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
  134. package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
  135. package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
  136. package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
  137. package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
  138. package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
  139. package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
  140. package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
  141. package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
  142. package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
  143. package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
  144. package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
  145. package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
  146. package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
  147. package/dist/cjs/Flow/ExecutionIds.js +66 -0
  148. package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
  149. package/dist/cjs/Flow/Flow.d.ts +422 -0
  150. package/dist/cjs/Flow/Flow.d.ts.map +1 -0
  151. package/dist/cjs/Flow/Flow.js +17 -0
  152. package/dist/cjs/Flow/Flow.js.map +7 -0
  153. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
  154. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  155. package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
  156. package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
  157. package/dist/cjs/Flow/Outcome.d.ts +162 -0
  158. package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
  159. package/dist/cjs/Flow/Outcome.js +80 -0
  160. package/dist/cjs/Flow/Outcome.js.map +7 -0
  161. package/dist/cjs/Flow/Result.d.ts +186 -0
  162. package/dist/cjs/Flow/Result.d.ts.map +1 -0
  163. package/dist/cjs/Flow/Result.js +159 -0
  164. package/dist/cjs/Flow/Result.js.map +7 -0
  165. package/dist/cjs/Flow/Runtime.d.ts +98 -0
  166. package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
  167. package/dist/cjs/Flow/Runtime.js +160 -0
  168. package/dist/cjs/Flow/Runtime.js.map +7 -0
  169. package/dist/cjs/Flow/TypeId.d.ts +8 -0
  170. package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
  171. package/dist/cjs/Flow/TypeId.js +25 -0
  172. package/dist/cjs/Flow/TypeId.js.map +7 -0
  173. package/dist/cjs/Flow/index.d.ts +17 -0
  174. package/dist/cjs/Flow/index.d.ts.map +1 -0
  175. package/dist/cjs/Flow/index.js +29 -0
  176. package/dist/cjs/Flow/index.js.map +7 -0
  177. package/dist/cjs/Flow/internal.d.ts +34 -0
  178. package/dist/cjs/Flow/internal.d.ts.map +1 -0
  179. package/dist/cjs/Flow/internal.js +187 -0
  180. package/dist/cjs/Flow/internal.js.map +7 -0
  181. package/dist/cjs/Flow/make.d.ts +134 -0
  182. package/dist/cjs/Flow/make.d.ts.map +1 -0
  183. package/dist/cjs/Flow/make.js +104 -0
  184. package/dist/cjs/Flow/make.js.map +7 -0
  185. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  186. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  187. package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
  188. package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
  189. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  190. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  191. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
  192. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
  193. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  194. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  195. package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
  196. package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
  197. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  198. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  199. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
  200. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
  201. package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
  202. package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
  203. package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
  204. package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
  205. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
  206. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  207. package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
  208. package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
  209. package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
  210. package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
  211. package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
  212. package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
  213. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  214. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  215. package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
  216. package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
  217. package/dist/cjs/FlowRuntime/index.d.ts +14 -0
  218. package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
  219. package/dist/cjs/FlowRuntime/index.js +26 -0
  220. package/dist/cjs/FlowRuntime/index.js.map +7 -0
  221. package/dist/cjs/Graph.d.ts +325 -0
  222. package/dist/cjs/Graph.d.ts.map +1 -0
  223. package/dist/cjs/Graph.js +1022 -0
  224. package/dist/cjs/Graph.js.map +7 -0
  225. package/dist/cjs/HumanTask.d.ts +440 -0
  226. package/dist/cjs/HumanTask.d.ts.map +1 -0
  227. package/dist/cjs/HumanTask.js +413 -0
  228. package/dist/cjs/HumanTask.js.map +7 -0
  229. package/dist/cjs/Interpreter.d.ts +222 -0
  230. package/dist/cjs/Interpreter.d.ts.map +1 -0
  231. package/dist/cjs/Interpreter.js +888 -0
  232. package/dist/cjs/Interpreter.js.map +7 -0
  233. package/dist/cjs/Poll.d.ts +238 -0
  234. package/dist/cjs/Poll.d.ts.map +1 -0
  235. package/dist/cjs/Poll.js +150 -0
  236. package/dist/cjs/Poll.js.map +7 -0
  237. package/dist/cjs/RetryPolicy.d.ts +273 -0
  238. package/dist/cjs/RetryPolicy.d.ts.map +1 -0
  239. package/dist/cjs/RetryPolicy.js +251 -0
  240. package/dist/cjs/RetryPolicy.js.map +7 -0
  241. package/dist/cjs/Sleep.d.ts +98 -0
  242. package/dist/cjs/Sleep.d.ts.map +1 -0
  243. package/dist/cjs/Sleep.js +133 -0
  244. package/dist/cjs/Sleep.js.map +7 -0
  245. package/dist/cjs/Stall.d.ts +173 -0
  246. package/dist/cjs/Stall.d.ts.map +1 -0
  247. package/dist/cjs/Stall.js +92 -0
  248. package/dist/cjs/Stall.js.map +7 -0
  249. package/dist/cjs/WaitFor.d.ts +109 -0
  250. package/dist/cjs/WaitFor.d.ts.map +1 -0
  251. package/dist/cjs/WaitFor.js +117 -0
  252. package/dist/cjs/WaitFor.js.map +7 -0
  253. package/dist/cjs/index.d.ts +107 -0
  254. package/dist/cjs/index.d.ts.map +1 -0
  255. package/dist/cjs/index.js +69 -0
  256. package/dist/cjs/index.js.map +7 -0
  257. package/dist/cjs/internal/BoundedJson.d.ts +48 -0
  258. package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
  259. package/dist/cjs/internal/BoundedJson.js +96 -0
  260. package/dist/cjs/internal/BoundedJson.js.map +7 -0
  261. package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
  262. package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
  263. package/dist/cjs/internal/DeclarationSite.js +89 -0
  264. package/dist/cjs/internal/DeclarationSite.js.map +7 -0
  265. package/dist/cjs/internal/Declarations.d.ts +35 -0
  266. package/dist/cjs/internal/Declarations.d.ts.map +1 -0
  267. package/dist/cjs/internal/Declarations.js +50 -0
  268. package/dist/cjs/internal/Declarations.js.map +7 -0
  269. package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
  270. package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
  271. package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
  272. package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
  273. package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
  274. package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
  275. package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
  276. package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
  277. package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
  278. package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
  279. package/dist/cjs/internal/OutcomeMarker.js +27 -0
  280. package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
  281. package/dist/cjs/package.json +1 -0
  282. package/dist/esm/Action/Action.d.ts +250 -0
  283. package/dist/esm/Action/Action.d.ts.map +1 -0
  284. package/dist/esm/Action/Action.js +30 -0
  285. package/dist/esm/Action/Action.js.map +1 -0
  286. package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
  287. package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
  288. package/dist/esm/Action/AttemptTimedOut.js +32 -0
  289. package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
  290. package/dist/esm/Action/BoundaryMode.d.ts +29 -0
  291. package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
  292. package/dist/esm/Action/BoundaryMode.js +23 -0
  293. package/dist/esm/Action/BoundaryMode.js.map +1 -0
  294. package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
  295. package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
  296. package/dist/esm/Action/CacheEnvironment.js +130 -0
  297. package/dist/esm/Action/CacheEnvironment.js.map +1 -0
  298. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  299. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  300. package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
  301. package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
  302. package/dist/esm/Action/Context.d.ts +131 -0
  303. package/dist/esm/Action/Context.d.ts.map +1 -0
  304. package/dist/esm/Action/Context.js +99 -0
  305. package/dist/esm/Action/Context.js.map +1 -0
  306. package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
  307. package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
  308. package/dist/esm/Action/DuplicateImplementation.js +20 -0
  309. package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
  310. package/dist/esm/Action/FileBoundary.d.ts +59 -0
  311. package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
  312. package/dist/esm/Action/FileBoundary.js +60 -0
  313. package/dist/esm/Action/FileBoundary.js.map +1 -0
  314. package/dist/esm/Action/FileInput.d.ts +28 -0
  315. package/dist/esm/Action/FileInput.d.ts.map +1 -0
  316. package/dist/esm/Action/FileInput.js +32 -0
  317. package/dist/esm/Action/FileInput.js.map +1 -0
  318. package/dist/esm/Action/Filegroup.d.ts +16 -0
  319. package/dist/esm/Action/Filegroup.d.ts.map +1 -0
  320. package/dist/esm/Action/Filegroup.js +15 -0
  321. package/dist/esm/Action/Filegroup.js.map +1 -0
  322. package/dist/esm/Action/Glob.d.ts +8 -0
  323. package/dist/esm/Action/Glob.d.ts.map +1 -0
  324. package/dist/esm/Action/Glob.js +7 -0
  325. package/dist/esm/Action/Glob.js.map +1 -0
  326. package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
  327. package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  328. package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
  329. package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
  330. package/dist/esm/Action/Implementations.d.ts +114 -0
  331. package/dist/esm/Action/Implementations.d.ts.map +1 -0
  332. package/dist/esm/Action/Implementations.js +94 -0
  333. package/dist/esm/Action/Implementations.js.map +1 -0
  334. package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
  335. package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
  336. package/dist/esm/Action/InfraInterrupt.js +25 -0
  337. package/dist/esm/Action/InfraInterrupt.js.map +1 -0
  338. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  339. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  340. package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
  341. package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
  342. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  343. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  344. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
  345. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
  346. package/dist/esm/Action/StepIdentity.d.ts +153 -0
  347. package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
  348. package/dist/esm/Action/StepIdentity.js +139 -0
  349. package/dist/esm/Action/StepIdentity.js.map +1 -0
  350. package/dist/esm/Action/TreeArtifact.d.ts +8 -0
  351. package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
  352. package/dist/esm/Action/TreeArtifact.js +7 -0
  353. package/dist/esm/Action/TreeArtifact.js.map +1 -0
  354. package/dist/esm/Action/TypeId.d.ts +8 -0
  355. package/dist/esm/Action/TypeId.d.ts.map +1 -0
  356. package/dist/esm/Action/TypeId.js +9 -0
  357. package/dist/esm/Action/TypeId.js.map +1 -0
  358. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  359. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  360. package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
  361. package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
  362. package/dist/esm/Action/idempotencyKey.d.ts +21 -0
  363. package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
  364. package/dist/esm/Action/idempotencyKey.js +50 -0
  365. package/dist/esm/Action/idempotencyKey.js.map +1 -0
  366. package/dist/esm/Action/index.d.ts +29 -0
  367. package/dist/esm/Action/index.d.ts.map +1 -0
  368. package/dist/esm/Action/index.js +30 -0
  369. package/dist/esm/Action/index.js.map +1 -0
  370. package/dist/esm/Action/make.d.ts +128 -0
  371. package/dist/esm/Action/make.d.ts.map +1 -0
  372. package/dist/esm/Action/make.js +405 -0
  373. package/dist/esm/Action/make.js.map +1 -0
  374. package/dist/esm/Action/raceAll.d.ts +21 -0
  375. package/dist/esm/Action/raceAll.d.ts.map +1 -0
  376. package/dist/esm/Action/raceAll.js +20 -0
  377. package/dist/esm/Action/raceAll.js.map +1 -0
  378. package/dist/esm/Action/retry.d.ts +19 -0
  379. package/dist/esm/Action/retry.d.ts.map +1 -0
  380. package/dist/esm/Action/retry.js +72 -0
  381. package/dist/esm/Action/retry.js.map +1 -0
  382. package/dist/esm/Deadline.d.ts +105 -0
  383. package/dist/esm/Deadline.d.ts.map +1 -0
  384. package/dist/esm/Deadline.js +152 -0
  385. package/dist/esm/Deadline.js.map +1 -0
  386. package/dist/esm/DurableClock.d.ts +61 -0
  387. package/dist/esm/DurableClock.d.ts.map +1 -0
  388. package/dist/esm/DurableClock.js +75 -0
  389. package/dist/esm/DurableClock.js.map +1 -0
  390. package/dist/esm/DurableDeferred.d.ts +311 -0
  391. package/dist/esm/DurableDeferred.d.ts.map +1 -0
  392. package/dist/esm/DurableDeferred.js +357 -0
  393. package/dist/esm/DurableDeferred.js.map +1 -0
  394. package/dist/esm/DurableQueue.d.ts +160 -0
  395. package/dist/esm/DurableQueue.d.ts.map +1 -0
  396. package/dist/esm/DurableQueue.js +303 -0
  397. package/dist/esm/DurableQueue.js.map +1 -0
  398. package/dist/esm/ExternalJob.d.ts +179 -0
  399. package/dist/esm/ExternalJob.d.ts.map +1 -0
  400. package/dist/esm/ExternalJob.js +296 -0
  401. package/dist/esm/ExternalJob.js.map +1 -0
  402. package/dist/esm/Fault.d.ts +131 -0
  403. package/dist/esm/Fault.d.ts.map +1 -0
  404. package/dist/esm/Fault.js +198 -0
  405. package/dist/esm/Fault.js.map +1 -0
  406. package/dist/esm/Flow/Annotations.d.ts +245 -0
  407. package/dist/esm/Flow/Annotations.d.ts.map +1 -0
  408. package/dist/esm/Flow/Annotations.js +110 -0
  409. package/dist/esm/Flow/Annotations.js.map +1 -0
  410. package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
  411. package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
  412. package/dist/esm/Flow/CapabilityCeiling.js +27 -0
  413. package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
  414. package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
  415. package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
  416. package/dist/esm/Flow/DeadlineExceeded.js +34 -0
  417. package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
  418. package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
  419. package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
  420. package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
  421. package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
  422. package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
  423. package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
  424. package/dist/esm/Flow/ExecutionIds.js +91 -0
  425. package/dist/esm/Flow/ExecutionIds.js.map +1 -0
  426. package/dist/esm/Flow/Flow.d.ts +422 -0
  427. package/dist/esm/Flow/Flow.d.ts.map +1 -0
  428. package/dist/esm/Flow/Flow.js +3 -0
  429. package/dist/esm/Flow/Flow.js.map +1 -0
  430. package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
  431. package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  432. package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
  433. package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
  434. package/dist/esm/Flow/Outcome.d.ts +162 -0
  435. package/dist/esm/Flow/Outcome.d.ts.map +1 -0
  436. package/dist/esm/Flow/Outcome.js +115 -0
  437. package/dist/esm/Flow/Outcome.js.map +1 -0
  438. package/dist/esm/Flow/Result.d.ts +186 -0
  439. package/dist/esm/Flow/Result.d.ts.map +1 -0
  440. package/dist/esm/Flow/Result.js +171 -0
  441. package/dist/esm/Flow/Result.js.map +1 -0
  442. package/dist/esm/Flow/Runtime.d.ts +98 -0
  443. package/dist/esm/Flow/Runtime.d.ts.map +1 -0
  444. package/dist/esm/Flow/Runtime.js +231 -0
  445. package/dist/esm/Flow/Runtime.js.map +1 -0
  446. package/dist/esm/Flow/TypeId.d.ts +8 -0
  447. package/dist/esm/Flow/TypeId.d.ts.map +1 -0
  448. package/dist/esm/Flow/TypeId.js +9 -0
  449. package/dist/esm/Flow/TypeId.js.map +1 -0
  450. package/dist/esm/Flow/index.d.ts +17 -0
  451. package/dist/esm/Flow/index.d.ts.map +1 -0
  452. package/dist/esm/Flow/index.js +18 -0
  453. package/dist/esm/Flow/index.js.map +1 -0
  454. package/dist/esm/Flow/internal.d.ts +34 -0
  455. package/dist/esm/Flow/internal.d.ts.map +1 -0
  456. package/dist/esm/Flow/internal.js +149 -0
  457. package/dist/esm/Flow/internal.js.map +1 -0
  458. package/dist/esm/Flow/make.d.ts +134 -0
  459. package/dist/esm/Flow/make.d.ts.map +1 -0
  460. package/dist/esm/Flow/make.js +106 -0
  461. package/dist/esm/Flow/make.js.map +1 -0
  462. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  463. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  464. package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
  465. package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
  466. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  467. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  468. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
  469. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
  470. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  471. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  472. package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
  473. package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
  474. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  475. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  476. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
  477. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
  478. package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
  479. package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
  480. package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
  481. package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
  482. package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
  483. package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  484. package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
  485. package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
  486. package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
  487. package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
  488. package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
  489. package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
  490. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  491. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  492. package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
  493. package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
  494. package/dist/esm/FlowRuntime/index.d.ts +14 -0
  495. package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
  496. package/dist/esm/FlowRuntime/index.js +15 -0
  497. package/dist/esm/FlowRuntime/index.js.map +1 -0
  498. package/dist/esm/Graph.d.ts +325 -0
  499. package/dist/esm/Graph.d.ts.map +1 -0
  500. package/dist/esm/Graph.js +1482 -0
  501. package/dist/esm/Graph.js.map +1 -0
  502. package/dist/esm/HumanTask.d.ts +440 -0
  503. package/dist/esm/HumanTask.d.ts.map +1 -0
  504. package/dist/esm/HumanTask.js +794 -0
  505. package/dist/esm/HumanTask.js.map +1 -0
  506. package/dist/esm/Interpreter.d.ts +222 -0
  507. package/dist/esm/Interpreter.d.ts.map +1 -0
  508. package/dist/esm/Interpreter.js +1269 -0
  509. package/dist/esm/Interpreter.js.map +1 -0
  510. package/dist/esm/Poll.d.ts +238 -0
  511. package/dist/esm/Poll.d.ts.map +1 -0
  512. package/dist/esm/Poll.js +282 -0
  513. package/dist/esm/Poll.js.map +1 -0
  514. package/dist/esm/RetryPolicy.d.ts +273 -0
  515. package/dist/esm/RetryPolicy.d.ts.map +1 -0
  516. package/dist/esm/RetryPolicy.js +429 -0
  517. package/dist/esm/RetryPolicy.js.map +1 -0
  518. package/dist/esm/Sleep.d.ts +98 -0
  519. package/dist/esm/Sleep.d.ts.map +1 -0
  520. package/dist/esm/Sleep.js +230 -0
  521. package/dist/esm/Sleep.js.map +1 -0
  522. package/dist/esm/Stall.d.ts +173 -0
  523. package/dist/esm/Stall.d.ts.map +1 -0
  524. package/dist/esm/Stall.js +138 -0
  525. package/dist/esm/Stall.js.map +1 -0
  526. package/dist/esm/WaitFor.d.ts +109 -0
  527. package/dist/esm/WaitFor.d.ts.map +1 -0
  528. package/dist/esm/WaitFor.js +184 -0
  529. package/dist/esm/WaitFor.js.map +1 -0
  530. package/dist/esm/index.d.ts +107 -0
  531. package/dist/esm/index.d.ts.map +1 -0
  532. package/dist/esm/index.js +108 -0
  533. package/dist/esm/index.js.map +1 -0
  534. package/dist/esm/internal/BoundedJson.d.ts +48 -0
  535. package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
  536. package/dist/esm/internal/BoundedJson.js +107 -0
  537. package/dist/esm/internal/BoundedJson.js.map +1 -0
  538. package/dist/esm/internal/DeclarationSite.d.ts +135 -0
  539. package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
  540. package/dist/esm/internal/DeclarationSite.js +196 -0
  541. package/dist/esm/internal/DeclarationSite.js.map +1 -0
  542. package/dist/esm/internal/Declarations.d.ts +35 -0
  543. package/dist/esm/internal/Declarations.d.ts.map +1 -0
  544. package/dist/esm/internal/Declarations.js +43 -0
  545. package/dist/esm/internal/Declarations.js.map +1 -0
  546. package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
  547. package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
  548. package/dist/esm/internal/ExecutionMiddleware.js +13 -0
  549. package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
  550. package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
  551. package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
  552. package/dist/esm/internal/JsonSchemaSubset.js +363 -0
  553. package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
  554. package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
  555. package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
  556. package/dist/esm/internal/OutcomeMarker.js +18 -0
  557. package/dist/esm/internal/OutcomeMarker.js.map +1 -0
  558. package/docs/README.md +150 -0
  559. package/docs/api.md +436 -0
  560. package/docs/concepts/bodies-and-plans.md +157 -0
  561. package/docs/concepts/execution-identity.md +142 -0
  562. package/docs/concepts/flows-and-actions.md +129 -0
  563. package/docs/concepts/suspension-and-replay.md +130 -0
  564. package/docs/concepts/the-runtime-port.md +110 -0
  565. package/docs/concepts/trampoline-rounds.md +151 -0
  566. package/docs/guides/ask-a-person.md +184 -0
  567. package/docs/guides/build-a-body.md +161 -0
  568. package/docs/guides/cancel-and-roll-back.md +112 -0
  569. package/docs/guides/implement-an-action.md +147 -0
  570. package/docs/guides/inspect-the-plan.md +154 -0
  571. package/docs/guides/poll-until-ready.md +167 -0
  572. package/docs/guides/queue-work-to-a-worker.md +122 -0
  573. package/docs/guides/retry-a-failing-action.md +243 -0
  574. package/docs/guides/reuse-a-recorded-result.md +122 -0
  575. package/docs/guides/run-a-child-flow.md +108 -0
  576. package/docs/guides/run-an-external-job.md +86 -0
  577. package/docs/guides/use-a-prompt.md +38 -0
  578. package/docs/guides/wait-for-a-deadline.md +141 -0
  579. package/docs/guides/wait-for-an-external-signal.md +151 -0
  580. package/docs/installation.md +82 -0
  581. package/docs/quickstart.md +155 -0
  582. package/docs/reference/flow.md +1831 -0
  583. package/docs/testing.md +157 -0
  584. package/docs/troubleshooting.md +286 -0
  585. package/package.json +327 -3
  586. package/src/Action/Action.ts +333 -0
  587. package/src/Action/AttemptTimedOut.ts +37 -0
  588. package/src/Action/BoundaryMode.ts +33 -0
  589. package/src/Action/CacheEnvironment.ts +170 -0
  590. package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
  591. package/src/Action/Context.ts +156 -0
  592. package/src/Action/DuplicateImplementation.ts +24 -0
  593. package/src/Action/FileBoundary.ts +77 -0
  594. package/src/Action/FileInput.ts +42 -0
  595. package/src/Action/Filegroup.ts +16 -0
  596. package/src/Action/Glob.ts +8 -0
  597. package/src/Action/ImplementationVersionMismatch.ts +27 -0
  598. package/src/Action/Implementations.ts +149 -0
  599. package/src/Action/InfraInterrupt.ts +30 -0
  600. package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
  601. package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
  602. package/src/Action/StepIdentity.ts +219 -0
  603. package/src/Action/TreeArtifact.ts +8 -0
  604. package/src/Action/TypeId.ts +9 -0
  605. package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
  606. package/src/Action/idempotencyKey.ts +67 -0
  607. package/src/Action/index.ts +31 -0
  608. package/src/Action/make.ts +657 -0
  609. package/src/Action/raceAll.ts +48 -0
  610. package/src/Action/retry.ts +92 -0
  611. package/src/Deadline.ts +185 -0
  612. package/src/DurableClock.ts +133 -0
  613. package/src/DurableDeferred.ts +753 -0
  614. package/src/DurableQueue.ts +519 -0
  615. package/src/ExternalJob.ts +432 -0
  616. package/src/Fault.ts +279 -0
  617. package/src/Flow/Annotations.ts +151 -0
  618. package/src/Flow/CapabilityCeiling.ts +37 -0
  619. package/src/Flow/DeadlineExceeded.ts +40 -0
  620. package/src/Flow/ExecutionIdRequired.ts +36 -0
  621. package/src/Flow/ExecutionIds.ts +133 -0
  622. package/src/Flow/Flow.ts +576 -0
  623. package/src/Flow/MaxRoundsExceeded.ts +39 -0
  624. package/src/Flow/Outcome.ts +179 -0
  625. package/src/Flow/Result.ts +284 -0
  626. package/src/Flow/Runtime.ts +309 -0
  627. package/src/Flow/TypeId.ts +9 -0
  628. package/src/Flow/index.ts +19 -0
  629. package/src/Flow/internal.ts +237 -0
  630. package/src/Flow/make.ts +279 -0
  631. package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
  632. package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
  633. package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
  634. package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
  635. package/src/FlowRuntime/FlowInstance.ts +128 -0
  636. package/src/FlowRuntime/FlowRuntime.ts +333 -0
  637. package/src/FlowRuntime/NodeRecord.ts +183 -0
  638. package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
  639. package/src/FlowRuntime/index.ts +17 -0
  640. package/src/Graph.ts +1860 -0
  641. package/src/HumanTask.ts +1003 -0
  642. package/src/Interpreter.ts +1593 -0
  643. package/src/Poll.ts +414 -0
  644. package/src/RetryPolicy.ts +550 -0
  645. package/src/Sleep.ts +267 -0
  646. package/src/Stall.ts +217 -0
  647. package/src/WaitFor.ts +228 -0
  648. package/src/index.ts +125 -0
  649. package/src/internal/BoundedJson.ts +109 -0
  650. package/src/internal/DeclarationSite.ts +214 -0
  651. package/src/internal/Declarations.ts +49 -0
  652. package/src/internal/ExecutionMiddleware.ts +29 -0
  653. package/src/internal/JsonSchemaSubset.ts +392 -0
  654. package/src/internal/OutcomeMarker.ts +19 -0
package/src/WaitFor.ts ADDED
@@ -0,0 +1,228 @@
1
+ /**
2
+ * The system wait point, as an ordinary declared action.
3
+ *
4
+ * `docs/concepts/flows-and-actions.md` names wait-for-event the
5
+ * other half of the timer gap and says how to close it: ship it over the
6
+ * existing `DurableDeferred`, so an external signal is a visible, keyed plan
7
+ * node. That is this module. {@link action} is a plain `Action.make`
8
+ * declaration — catalogable, `.call()`-able, one node in the built plan — and
9
+ * {@link layer} is the implementation.
10
+ *
11
+ * Nothing about resolution is new. The wait is a `DurableDeferred`, so whoever
12
+ * satisfies it completes it the way every other durable deferred is completed:
13
+ * a token, and `DurableDeferred.succeed`, `fail`, `failCause`, or `done`.
14
+ * {@link deferred} is how a resolver names the same wait point the action
15
+ * awaits. The park is declared through the ordinary waiting vocabulary
16
+ * ({@link module:WaitingAnnotation.annotateWaiting}) under `event`, carrying
17
+ * that token as the compare-and-swap material a wake handler matches. Replay is
18
+ * the deferred's: once a result is recorded, a re-driven round reads it and
19
+ * runs through instead of parking again.
20
+ *
21
+ * @since 0.1.0
22
+ */
23
+
24
+ import type * as Crypto from "effect/Crypto"
25
+ import * as Effect from "effect/Effect"
26
+ import type * as Layer from "effect/Layer"
27
+ import * as Schema from "effect/Schema"
28
+ import * as Action from "./Action/index.ts"
29
+ import * as DurableDeferred from "./DurableDeferred.ts"
30
+ import { FlowInstance } from "./FlowRuntime/FlowInstance.ts"
31
+ import type { FlowRuntime } from "./FlowRuntime/FlowRuntime.ts"
32
+ import { annotateWaiting } from "./FlowRuntime/WaitingAnnotation.ts"
33
+
34
+ /**
35
+ * A wait whose payload does not name exactly one reachable wait point.
36
+ *
37
+ * A payload names the wait point by `name`, relative to the running execution,
38
+ * or by an absolute `token`. Naming both, or neither, leaves nothing to await;
39
+ * a token that does not parse names nothing either; and a token addressed to a
40
+ * different flow or a different execution names a wait point this execution
41
+ * cannot observe, because a durable deferred result is recorded against the
42
+ * flow and execution that own it.
43
+ *
44
+ * @category errors
45
+ * @since 0.1.0
46
+ */
47
+ export class WaitForRequestInvalid extends Schema.TaggedError<WaitForRequestInvalid>()(
48
+ "@smthrs/flow/WaitForRequestInvalid",
49
+ {
50
+ code: Schema.Literals([
51
+ "missing_target",
52
+ "ambiguous_target",
53
+ "malformed_token",
54
+ "foreign_execution"
55
+ ]),
56
+ message: Schema.String
57
+ }
58
+ ) {}
59
+
60
+ /**
61
+ * The tag the wait declaration is catalogued and resolved under.
62
+ *
63
+ * @category constructors
64
+ * @since 0.1.0
65
+ */
66
+ export const tag = "system/wait-for"
67
+
68
+ /**
69
+ * The durable deferred a named wait point resolves through.
70
+ *
71
+ * This is the resolver's half of {@link action}: the value to hand
72
+ * `DurableDeferred.tokenFromExecutionId` and `DurableDeferred.succeed`, so a
73
+ * wait that a body declared by name is completed through the existing deferred
74
+ * completion path rather than a second one.
75
+ *
76
+ * ```ts
77
+ * const gate = WaitFor.deferred("approval")
78
+ * const token = DurableDeferred.tokenFromExecutionId(gate, { flow, executionId })
79
+ * yield* DurableDeferred.succeed(gate, { token, value: { approved: true } })
80
+ * ```
81
+ *
82
+ * @category constructors
83
+ * @since 0.1.0
84
+ */
85
+ export const deferred = (name: string): DurableDeferred.DurableDeferred<typeof Schema.Json> =>
86
+ DurableDeferred.make(`WaitFor/${name}`, { success: Schema.Json })
87
+
88
+ /**
89
+ * The declared wait action: a wait point named by `name` or by `token`.
90
+ *
91
+ * **When to use**
92
+ *
93
+ * Use it in a body wherever a round has to wait for something outside the run —
94
+ * an approval, a webhook, a human — `WaitFor.action.call({ name: "approval"
95
+ * })`. The node settles with whatever value resolved the wait, so downstream
96
+ * steps read it the way they read any other step result.
97
+ *
98
+ * @category constructors
99
+ * @since 0.1.0
100
+ */
101
+ export const action: Action.Declared<
102
+ typeof tag,
103
+ Schema.Struct<{
104
+ readonly token: Schema.optional<Schema.String>
105
+ readonly name: Schema.optional<Schema.String>
106
+ }>,
107
+ typeof Schema.Json,
108
+ typeof WaitForRequestInvalid,
109
+ never
110
+ > = Action.makeSystem(tag, {
111
+ payload: {
112
+ token: Schema.optional(Schema.String),
113
+ name: Schema.optional(Schema.String)
114
+ },
115
+ success: Schema.Json,
116
+ error: WaitForRequestInvalid,
117
+ tier: "sealed"
118
+ })
119
+
120
+ /**
121
+ * The deferred name a token addresses, refused when the token does not parse.
122
+ *
123
+ * @private
124
+ */
125
+ const parseToken = (token: string): Effect.Effect<DurableDeferred.TokenParsed, WaitForRequestInvalid> =>
126
+ Effect.mapError(
127
+ DurableDeferred.TokenParsed.parse(token),
128
+ (error) =>
129
+ new WaitForRequestInvalid({
130
+ code: "malformed_token",
131
+ message: `${tag} was called with a token that is not a durable deferred token. ${error.message}`
132
+ })
133
+ )
134
+
135
+ /**
136
+ * The wait point a payload names, resolved against the running execution.
137
+ *
138
+ * DECIDED: a payload names EXACTLY one of `name`
139
+ * and `token`, and a token must address the execution that is waiting. A
140
+ * deferred result is recorded against (flow name, execution id, deferred name)
141
+ * and read back the same way, so awaiting a foreign token would park forever
142
+ * while the value it names was recorded elsewhere; refusing it names the
143
+ * mistake instead. BOTH halves of the owning execution's identity are compared:
144
+ * a token carries its own flow name, so a same-execution token minted for
145
+ * another flow completes under that flow while this one reads under its own,
146
+ * which is the same permanent park by a different route.
147
+ *
148
+ * DECIDED: a wait point is addressed by the
149
+ * PAYLOAD, and the per-dispatch identity {@link module:Sleep} derives its clock
150
+ * from is deliberately NOT applied here. A wait is a rendezvous with something
151
+ * outside the run, and a resolver has to name the same wait point to complete
152
+ * it, so the name is the author's and two calls naming one wait point await one
153
+ * fact — which is the intended reading, not an aliasing bug. A sleep has no
154
+ * counterpart to agree with, which is why it takes its identity from the node.
155
+ *
156
+ * @private
157
+ */
158
+ const target = (
159
+ payload: { readonly token?: string | undefined; readonly name?: string | undefined },
160
+ flowName: string,
161
+ executionId: string
162
+ ): Effect.Effect<DurableDeferred.DurableDeferred<typeof Schema.Json>, WaitForRequestInvalid> => {
163
+ if (payload.token !== undefined && payload.name !== undefined) {
164
+ return Effect.fail(
165
+ new WaitForRequestInvalid({
166
+ code: "ambiguous_target",
167
+ message: `${tag} was called with both "token" and "name". A wait names one wait point: ` +
168
+ "a name relative to this execution, or an absolute token."
169
+ })
170
+ )
171
+ }
172
+ if (payload.name !== undefined) return Effect.succeed(deferred(payload.name))
173
+ if (payload.token !== undefined) {
174
+ return Effect.flatMap(
175
+ parseToken(payload.token),
176
+ (parsed) =>
177
+ parsed.flowName !== flowName || parsed.executionId !== executionId
178
+ ? Effect.fail(
179
+ new WaitForRequestInvalid({
180
+ code: "foreign_execution",
181
+ message: `${tag} was called with a token addressed to flow "${parsed.flowName}" in execution ` +
182
+ `"${parsed.executionId}", but it is running as flow "${flowName}" in execution ` +
183
+ `"${executionId}". A durable deferred result is recorded against the execution that owns it, ` +
184
+ "so only that execution can await it."
185
+ })
186
+ )
187
+ : Effect.succeed(
188
+ DurableDeferred.make(parsed.deferredName, { success: Schema.Json })
189
+ )
190
+ )
191
+ }
192
+ return Effect.fail(
193
+ new WaitForRequestInvalid({
194
+ code: "missing_target",
195
+ message: `${tag} was called with neither "token" nor "name", so there is no wait point to await.`
196
+ })
197
+ )
198
+ }
199
+
200
+ /**
201
+ * The wait implementation: park under `event` with the wake token, and settle
202
+ * with the value that resolved the wait.
203
+ *
204
+ * Provide it beside the other action implementation layers a body calls, over
205
+ * the {@link module:Implementations.layerImplementations} table they file
206
+ * themselves in:
207
+ *
208
+ * ```ts
209
+ * Layer.mergeAll(WaitFor.layer, Interpreter.layer(Pipeline)).pipe(
210
+ * Layer.provideMerge(Action.layerImplementations)
211
+ * )
212
+ * ```
213
+ *
214
+ * @category layers
215
+ * @since 0.1.0
216
+ */
217
+ export const layer: Layer.Layer<never, never, Crypto.Crypto | FlowRuntime> = action.toLayer((payload) =>
218
+ Effect.gen(function*() {
219
+ const instance = yield* FlowInstance
220
+ const waitPoint = yield* target(payload, instance.flow._tag, instance.executionId)
221
+ const token = DurableDeferred.tokenFromExecutionId(waitPoint, {
222
+ flow: instance.flow,
223
+ executionId: instance.executionId
224
+ })
225
+ yield* annotateWaiting({ reason: "event", token })
226
+ return yield* DurableDeferred.await(waitPoint)
227
+ })
228
+ )
package/src/index.ts ADDED
@@ -0,0 +1,125 @@
1
+ // Deep reviewed and polished by a human on 2026-08-10.
2
+
3
+ /**
4
+ * @since 0.1.0
5
+ */
6
+
7
+ /**
8
+ * Durable action definitions and combinators.
9
+ *
10
+ * @since 0.1.0
11
+ */
12
+ export * as Action from "./Action/index.ts"
13
+
14
+ /**
15
+ * Durable clock and timer services.
16
+ *
17
+ * @since 0.1.0
18
+ */
19
+ export * as Deadline from "./Deadline.ts"
20
+ export * as DurableClock from "./DurableClock.ts"
21
+
22
+ /**
23
+ * Durable deferred values.
24
+ *
25
+ * @since 0.1.0
26
+ */
27
+ export * as DurableDeferred from "./DurableDeferred.ts"
28
+
29
+ /**
30
+ * Durable queues.
31
+ *
32
+ * @since 0.1.0
33
+ */
34
+ export * as DurableQueue from "./DurableQueue.ts"
35
+
36
+ /**
37
+ * Durable flow definitions.
38
+ *
39
+ * @since 0.1.0
40
+ */
41
+ export * as Flow from "./Flow/index.ts"
42
+
43
+ /**
44
+ * The execution contract flow authoring APIs are written against.
45
+ *
46
+ * @since 0.1.0
47
+ */
48
+ export * as FlowRuntime from "./FlowRuntime/index.ts"
49
+
50
+ /**
51
+ * One typed fault for every failure, and the response table that reads it.
52
+ *
53
+ * @since 1.0.0
54
+ */
55
+ export * as Fault from "./Fault.ts"
56
+
57
+ /**
58
+ * External workers observed through durable actions and timers.
59
+ *
60
+ * @since 1.0.0
61
+ */
62
+ export * as ExternalJob from "./ExternalJob.ts"
63
+
64
+ /**
65
+ * Plan-time graph building from flow declarations.
66
+ *
67
+ * @since 0.1.0
68
+ */
69
+ export * as Graph from "./Graph.ts"
70
+
71
+ /**
72
+ * Asking a person something: typed answers, re-asking, and a deadline.
73
+ *
74
+ * @since 0.1.0
75
+ */
76
+ export * as HumanTask from "./HumanTask.ts"
77
+
78
+ /**
79
+ * Execution of a flow body, and the layer that registers it.
80
+ *
81
+ * @since 0.1.0
82
+ */
83
+ export * as Interpreter from "./Interpreter.ts"
84
+
85
+ /**
86
+ * The durable poller: attempts as rounds, waits as durable timers.
87
+ *
88
+ * @since 0.1.0
89
+ */
90
+ export * as Poll from "./Poll.ts"
91
+
92
+ /**
93
+ * The stall breaker: rounds whose tree, failing checks, or output held still.
94
+ *
95
+ * @since 1.0.0
96
+ */
97
+ export * as Stall from "./Stall.ts"
98
+
99
+ /**
100
+ * Retry policy models and constructors.
101
+ *
102
+ * @since 0.1.0
103
+ */
104
+ export * as RetryPolicy from "./RetryPolicy.ts"
105
+
106
+ /**
107
+ * The system timer action and its implementation layer.
108
+ *
109
+ * @since 0.1.0
110
+ */
111
+ export * as Sleep from "./Sleep.ts"
112
+
113
+ /**
114
+ * Stable step identity construction.
115
+ *
116
+ * @since 0.1.0
117
+ */
118
+ export * as StepIdentity from "./Action/StepIdentity.ts"
119
+
120
+ /**
121
+ * The system wait-point action and its implementation layer.
122
+ *
123
+ * @since 0.1.0
124
+ */
125
+ export * as WaitFor from "./WaitFor.ts"
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Human-task diagnostics over the shared inert JSON boundary.
3
+ * @since 1.0.0
4
+ */
5
+
6
+ import * as BoundedJson from "@smthrs/canonical/BoundedJson"
7
+
8
+ /** Resource limits for one human-task value.
9
+ * @private
10
+ * @since 1.0.0
11
+ */
12
+ export type Limits = Required<Omit<BoundedJson.Limits, "maxTotalMembers">>
13
+
14
+ /** Encoded JSON bytes, without allocating an encoded copy.
15
+ * @private
16
+ * @since 1.0.0
17
+ */
18
+ export const encodedStringBytes = BoundedJson.encodedStringBytes
19
+
20
+ /** Whether text is well-formed and fits its encoded byte budget.
21
+ * @private
22
+ * @since 1.0.0
23
+ */
24
+ export const textFits = (value: string, maximum: number): boolean => encodedStringBytes(value, maximum) !== undefined
25
+
26
+ /** Admits a detached snapshot and gives failures a bounded field path.
27
+ * @private
28
+ * @since 1.0.0
29
+ */
30
+ export const admit = (input: unknown, limits: Limits) => {
31
+ const result = BoundedJson.admit(input, limits)
32
+ if (result.ok) return { ok: true as const, value: result.value }
33
+ const at = result.path.length === 0
34
+ ? "the value"
35
+ : `"${result.path.map((segment) => scalarPrefix(segment, 64)).join(".")}"`
36
+ const complaint = result.code === "string"
37
+ ? `is not well-formed text within ${limits.maxStringBytes} encoded bytes`
38
+ : result.code === "nodes"
39
+ ? `makes the value too large to check: it contains more than ${limits.maxNodes} JSON values`
40
+ : result.complaint
41
+ return { ok: false as const, complaint: `${at} ${complaint}.` }
42
+ }
43
+
44
+ /**
45
+ * Returns a Unicode-scalar-safe bounded prefix.
46
+ *
47
+ * @private
48
+ * @since 1.0.0
49
+ */
50
+ export function scalarPrefix(value: string, maximumCodeUnits: number): string {
51
+ let output = ""
52
+ for (let index = 0; index < value.length;) {
53
+ const unit = value.charCodeAt(index)
54
+ let next: string
55
+ let width = 1
56
+ if (unit >= 0xd800 && unit <= 0xdbff) {
57
+ const low = value.charCodeAt(index + 1)
58
+ if (low >= 0xdc00 && low <= 0xdfff) {
59
+ next = value.slice(index, index + 2)
60
+ width = 2
61
+ } else {
62
+ next = "\ufffd"
63
+ }
64
+ } else if (unit >= 0xdc00 && unit <= 0xdfff) {
65
+ next = "\ufffd"
66
+ } else {
67
+ next = value[index]!
68
+ }
69
+ if (output.length + next.length > maximumCodeUnits) break
70
+ output += next
71
+ index += width
72
+ }
73
+ return output
74
+ }
75
+
76
+ /**
77
+ * Renders an untrusted value without invoking its code or allocating from its full size.
78
+ *
79
+ * @private
80
+ * @since 1.0.0
81
+ */
82
+ export const render = (value: unknown, maximumCodeUnits: number): string => {
83
+ if (typeof value === "string") {
84
+ const prefix = scalarPrefix(value, Math.max(0, maximumCodeUnits - 2))
85
+ const quoted = JSON.stringify(prefix)
86
+ return prefix.length < value.length
87
+ ? `${quoted} [${value.length - prefix.length} characters dropped]`
88
+ : quoted
89
+ }
90
+ if (typeof value === "bigint") return scalarPrefix(`${value}n`, maximumCodeUnits)
91
+ if (typeof value === "symbol") return "[symbol]"
92
+ if (typeof value === "function") return "[function]"
93
+ if (value === undefined) return "[undefined]"
94
+
95
+ const admitted = admit(value, {
96
+ maxNodes: 64,
97
+ maxDepth: 6,
98
+ maxBytes: Math.max(64, maximumCodeUnits * 4),
99
+ maxStringBytes: Math.max(64, maximumCodeUnits * 4),
100
+ maxKeyBytes: Math.max(32, maximumCodeUnits * 2),
101
+ maxMembers: 32
102
+ })
103
+ if (!admitted.ok) return scalarPrefix(`[${admitted.complaint}]`, maximumCodeUnits)
104
+ const rendered = JSON.stringify(admitted.value)
105
+ const prefix = scalarPrefix(rendered, maximumCodeUnits)
106
+ return prefix.length < rendered.length
107
+ ? `${prefix} [${rendered.length - prefix.length} characters dropped]`
108
+ : prefix
109
+ }
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Where a declaration was written: the author's file and the line it starts
3
+ * on.
4
+ *
5
+ * A digest says what a step IS; it cannot say where to read it. A monitor that
6
+ * offers to show the code behind a node needs the file and line the
7
+ * declaration was authored at, so the declaration carries it from the moment
8
+ * it is made — captured from an `Error` stack, which is the only place a
9
+ * JavaScript runtime keeps it.
10
+ *
11
+ * Two properties make this safe to carry. It is stored as a NON-ENUMERABLE
12
+ * own property, so canonical serialization — which walks enumerable keys —
13
+ * cannot see it, and a declaration's key material is byte-identical with and
14
+ * without it. And every parse is defensive: an engine whose stack format this
15
+ * module does not recognize yields `undefined`, never a throw and never a
16
+ * guessed location.
17
+ *
18
+ * Frames inside the framework are skipped, because the frame that matters is
19
+ * the AUTHOR's: `Action.make` is called from this package, and the interesting
20
+ * line is the one that called it.
21
+ *
22
+ * @since 1.0.0
23
+ */
24
+
25
+ /** The own property a declaration carries its source position on. @private */
26
+ const TypeId = "~@smthrs/flow/DeclaredAt"
27
+
28
+ /**
29
+ * The file and line a declaration was written at.
30
+ *
31
+ * `path` is the path the runtime reported, which is absolute in every engine
32
+ * this repository runs on. A journal writer makes it repo-relative before it
33
+ * records it, and omits it when it cannot: an absolute home directory is not
34
+ * a fact a durable record may carry.
35
+ *
36
+ * @since 1.0.0
37
+ * @category models
38
+ */
39
+ export interface DeclaredAt {
40
+ readonly path: string
41
+ readonly line: number
42
+ }
43
+
44
+ /**
45
+ * Whether a frame belongs to the framework or the runtime rather than to an
46
+ * author.
47
+ *
48
+ * Three shapes are not an author's. Anything under a `node_modules` directory,
49
+ * which is how a published `@smthrs/*` package is loaded. Anything under a
50
+ * `packages/smithers/**\/src` directory, which is how this repository loads the
51
+ * same code from source. And anything that does not name a file at all: a
52
+ * declaration made inside the framework is reached through the module loader,
53
+ * so the first frame under it is a runtime internal such as
54
+ * `node:internal/process/task_queues`, which is a real frame and a false
55
+ * author. A test, an example, and a workspace's own flow file are absolute
56
+ * paths under none of those, so they are what a capture reports.
57
+ *
58
+ * Windows spells those same two directories with backslashes, so separators
59
+ * are read as one before matching: a framework frame taken for an author's
60
+ * would name this package's own `make.js` as the site every node of that run
61
+ * was declared at.
62
+ *
63
+ * @since 1.0.0
64
+ * @category predicates
65
+ */
66
+ export const isFrameworkPath = (path: string): boolean => {
67
+ if (!isFilePath(path)) return true
68
+ const separated = path.replaceAll("\\", "/")
69
+ return separated.includes("/node_modules/") || /\/packages\/smithers\/.*\/src\//.test(separated)
70
+ }
71
+
72
+ /** Whether a frame path names a file on disk rather than a runtime module. @private */
73
+ const isFilePath = (path: string): boolean => path.startsWith("/") || /^[A-Za-z]:[\\/]/.test(path)
74
+
75
+ /** The `path:line:column` text of one stack frame, in either engine's spelling. @private */
76
+ const location = (frame: string): string | undefined => {
77
+ const parenthesized = /\(([^()]*)\)\s*$/.exec(frame)
78
+ if (parenthesized !== null) return parenthesized[1]
79
+ const trimmed = frame.trim()
80
+ const at = trimmed.lastIndexOf("@")
81
+ if (at >= 0) return trimmed.slice(at + 1)
82
+ return trimmed.startsWith("at ") ? trimmed.slice(3) : undefined
83
+ }
84
+
85
+ /** A `file://` url reported as a frame path, as an ordinary path. @private */
86
+ const normalize = (path: string): string =>
87
+ path.startsWith("file://") ? decodeURIComponent(path.slice("file://".length)) : path
88
+
89
+ /**
90
+ * Where bytes a host evaluated from one file were read from. @private
91
+ *
92
+ * Keyed by the file that was evaluated, which a loader makes unique per load.
93
+ */
94
+ const sourcesKey = Symbol.for("@smthrs/flow/DeclaredAt/sources/v1")
95
+ const globals = globalThis as typeof globalThis & { [sourcesKey]?: Map<string, string> }
96
+ const sources = globals[sourcesKey] ??= new Map<string, string>()
97
+
98
+ /**
99
+ * States that a file this runtime is about to evaluate holds bytes read from
100
+ * another, so declarations inside it report the file an author can open.
101
+ *
102
+ * A host that verifies a flow's source has to evaluate THE BYTES IT MEASURED,
103
+ * and the only way to evaluate bytes in this runtime is to write them
104
+ * somewhere and import that path. `@smthrs/registry` `Executable` writes them
105
+ * as a scratch sibling of the entry and removes it as soon as the load is
106
+ * over, so without this every declaration in an agent-authored flow reports a
107
+ * path nothing holds — a Code tab that can never be opened (D-068).
108
+ *
109
+ * The loader states this BEFORE the import, because a declaration's site is
110
+ * captured while the module is evaluated and is never rewritten afterwards.
111
+ * One entry is kept per load: a scratch path is unique and gone, so no later
112
+ * file can take a stale entry's name.
113
+ *
114
+ * @since 1.0.0
115
+ * @category constructors
116
+ */
117
+ export const evaluatedFrom = (evaluated: string, entry: string): void => {
118
+ sources.set(normalize(evaluated), normalize(entry))
119
+ }
120
+
121
+ /**
122
+ * The position one stack frame names, in the V8 and JavaScriptCore spellings.
123
+ *
124
+ * V8 writes ` at name (/path/file.ts:12:5)` and, for a top-level frame,
125
+ * ` at /path/file.ts:12:5`. JavaScriptCore — Bun and Safari — writes
126
+ * `name@/path/file.ts:12:5` and `@/path/file.ts:12:5`. Anything else is
127
+ * unparseable and reports nothing.
128
+ *
129
+ * @since 1.0.0
130
+ * @category parsers
131
+ */
132
+ export const parseFrame = (frame: string): DeclaredAt | undefined => {
133
+ const text = location(frame)
134
+ if (text === undefined) return undefined
135
+ const position = /^(.*):(\d+):(\d+)$/.exec(text)
136
+ if (position === null) return undefined
137
+ const line = Number(position[2])
138
+ // A frame naming a file a host evaluated measured bytes into reports the
139
+ // entry those bytes were read from; every other frame reports itself.
140
+ const path = normalize(position[1]!)
141
+ return { path: sources.get(path) ?? path, line }
142
+ }
143
+
144
+ /**
145
+ * The first author frame of a captured stack.
146
+ *
147
+ * The header line every V8 stack starts with parses as nothing, so it needs no
148
+ * special case. A decoding failure inside a frame path — a malformed percent
149
+ * escape in a `file://` url — is an unparseable stack rather than a throw,
150
+ * which is the whole contract of this module: provenance is a nicety, and a
151
+ * nicety may never take a declaration down with it.
152
+ *
153
+ * @since 1.0.0
154
+ * @category parsers
155
+ */
156
+ export const parseStack = (stack: string | undefined): DeclaredAt | undefined => {
157
+ if (stack === undefined) return undefined
158
+ try {
159
+ for (const frame of stack.split("\n")) {
160
+ const parsed = parseFrame(frame)
161
+ if (parsed !== undefined && !isFrameworkPath(parsed.path)) return parsed
162
+ }
163
+ return undefined
164
+ } catch {
165
+ return undefined
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Where the caller of the function calling this was written.
171
+ *
172
+ * @since 1.0.0
173
+ * @category constructors
174
+ */
175
+ export const capture = (): DeclaredAt | undefined => parseStack(new Error().stack)
176
+
177
+ /**
178
+ * Carries a source position on a declaration without adding a field to it.
179
+ *
180
+ * The property is non-enumerable and non-writable, so it cannot reach a
181
+ * canonical serialization, a digest, or a structural clone, and a later caller
182
+ * cannot rewrite one declaration's provenance to another's.
183
+ *
184
+ * @since 1.0.0
185
+ * @category constructors
186
+ */
187
+ export const annotate = <A extends object>(value: A, site: DeclaredAt | undefined): A => {
188
+ // A declaration annotated twice keeps the FIRST site. The property is
189
+ // non-configurable, so a second `defineProperty` would throw rather than
190
+ // overwrite, and a copy that carries its own site has already recorded it.
191
+ if (site === undefined || Object.getOwnPropertyDescriptor(value, TypeId) !== undefined) return value
192
+ Object.defineProperty(value, TypeId, {
193
+ configurable: false,
194
+ enumerable: false,
195
+ value: site,
196
+ writable: false
197
+ })
198
+ return value
199
+ }
200
+
201
+ /**
202
+ * The source position a value carries, when it carries one.
203
+ *
204
+ * Read through an own data descriptor, so neither a prototype nor an accessor
205
+ * on a foreign value can answer for it.
206
+ *
207
+ * @since 1.0.0
208
+ * @category accessors
209
+ */
210
+ export const declaredAt = (value: unknown): DeclaredAt | undefined => {
211
+ if (Object(value) !== value) return undefined
212
+ const descriptor = Object.getOwnPropertyDescriptor(value, TypeId)
213
+ return descriptor === undefined ? undefined : descriptor.value as DeclaredAt | undefined
214
+ }