@demlik/tea 0.12.0 → 0.14.0

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 (368) hide show
  1. package/README.md +11 -9
  2. package/dist/agent/index.d.ts +638 -45
  3. package/dist/agent/index.js +9 -19
  4. package/dist/{chunk-25LBDCBC.js → chunk-6IQPODUF.js} +2 -2
  5. package/dist/{chunk-25LBDCBC.js.map → chunk-6IQPODUF.js.map} +1 -1
  6. package/dist/chunk-AQ6ZIMEA.js +421 -0
  7. package/dist/chunk-AQ6ZIMEA.js.map +1 -0
  8. package/dist/{chunk-MUUROGIH.js → chunk-BLJ2JQSH.js} +62 -12
  9. package/dist/chunk-BLJ2JQSH.js.map +1 -0
  10. package/dist/{chunk-7SVIRMC6.js → chunk-F2US5BW6.js} +25 -5
  11. package/dist/chunk-F2US5BW6.js.map +1 -0
  12. package/dist/{batch-window/index.js → chunk-F7FMAWLA.js} +4 -8
  13. package/dist/chunk-F7FMAWLA.js.map +1 -0
  14. package/dist/{chunk-7V4EVLZA.js → chunk-HUKZQX6U.js} +20 -16
  15. package/dist/chunk-HUKZQX6U.js.map +1 -0
  16. package/dist/{chunk-EWJP3YYP.js → chunk-HWVW4AXC.js} +3 -3
  17. package/dist/chunk-HWVW4AXC.js.map +1 -0
  18. package/dist/{chunk-WLGO64WC.js → chunk-HYDWG35Q.js} +23 -6
  19. package/dist/chunk-HYDWG35Q.js.map +1 -0
  20. package/dist/{chunk-I5OV65MS.js → chunk-I5MQMJDW.js} +57 -7
  21. package/dist/chunk-I5MQMJDW.js.map +1 -0
  22. package/dist/{chunk-J6527VRQ.js → chunk-LFZUK6J2.js} +3 -3
  23. package/dist/chunk-LFZUK6J2.js.map +1 -0
  24. package/dist/{chunk-ZVJZ72HY.js → chunk-LYLTKJWM.js} +25 -11
  25. package/dist/chunk-LYLTKJWM.js.map +1 -0
  26. package/dist/{chunk-D736QUGF.js → chunk-MYXFNWAJ.js} +4 -5
  27. package/dist/chunk-MYXFNWAJ.js.map +1 -0
  28. package/dist/{chunk-K575PT4S.js → chunk-PR6TB3BL.js} +15 -4
  29. package/dist/chunk-PR6TB3BL.js.map +1 -0
  30. package/dist/chunk-RQULHGYH.js +1804 -0
  31. package/dist/chunk-RQULHGYH.js.map +1 -0
  32. package/dist/{chunk-FV3Z5MBE.js → chunk-TXN2KFHF.js} +14 -4
  33. package/dist/chunk-TXN2KFHF.js.map +1 -0
  34. package/dist/{chunk-Q2UM7BXU.js → chunk-VBDU4JL6.js} +2 -2
  35. package/dist/chunk-VBDU4JL6.js.map +1 -0
  36. package/dist/chunk-Z2L3LSNV.js +1470 -0
  37. package/dist/chunk-Z2L3LSNV.js.map +1 -0
  38. package/dist/core-CTzMJ82M.d.ts +562 -0
  39. package/dist/devtools/index.d.ts +2 -2
  40. package/dist/devtools/index.js +207 -2
  41. package/dist/devtools/index.js.map +1 -1
  42. package/dist/do/index.d.ts +48 -31
  43. package/dist/do/index.js +36 -25
  44. package/dist/do/index.js.map +1 -1
  45. package/dist/{durable-effects-D8SqU_if.d.ts → durable-effects-B0-qGQDy.d.ts} +2 -2
  46. package/dist/extension/index.d.ts +301 -3
  47. package/dist/extension/index.js +596 -5
  48. package/dist/extension/index.js.map +1 -1
  49. package/dist/flow/index.d.ts +1295 -0
  50. package/dist/flow/index.js +732 -0
  51. package/dist/flow/index.js.map +1 -0
  52. package/dist/idempotency/index.d.ts +90 -116
  53. package/dist/idempotency/index.js +4 -1
  54. package/dist/{batch-window/index.d.ts → index-4vZzljCD.d.ts} +7 -11
  55. package/dist/{fan-out/index.d.ts → index-6A7dB8f6.d.ts} +7 -8
  56. package/dist/index-B5BZ-_cT.d.ts +616 -0
  57. package/dist/index-Bc40JWVl.d.ts +131 -0
  58. package/dist/{debounce/index.d.ts → index-DHSUmQTR.d.ts} +7 -7
  59. package/dist/index-DJWIER_3.d.ts +69 -0
  60. package/dist/{snapshot/index.d.ts → index-DMCeMPMJ.d.ts} +15 -77
  61. package/dist/{monitored-run/index.d.ts → index-NjrT3fL2.d.ts} +37 -12
  62. package/dist/{recorder/index.d.ts → index-TvRb1KVf.d.ts} +4 -6
  63. package/dist/{deadline/index.d.ts → index-q0hXFeZ0.d.ts} +155 -8
  64. package/dist/index.d.ts +719 -6
  65. package/dist/index.js +1 -2
  66. package/dist/jev/index.d.ts +634 -0
  67. package/dist/jev/index.js +433 -0
  68. package/dist/jev/index.js.map +1 -0
  69. package/dist/machine-CdIcN2Xm.d.ts +1773 -0
  70. package/dist/machine-viz/index.d.ts +2 -1
  71. package/dist/machine-viz/index.js +12 -5
  72. package/dist/machine-viz/index.js.map +1 -1
  73. package/dist/mem/index.d.ts +19 -3
  74. package/dist/mem/index.js +22 -2
  75. package/dist/mem/index.js.map +1 -1
  76. package/dist/node/index.d.ts +130 -4
  77. package/dist/node/index.js +222 -10
  78. package/dist/node/index.js.map +1 -1
  79. package/dist/{paginator → paginate}/index.d.ts +151 -6
  80. package/dist/paginate/index.js +7 -0
  81. package/dist/parity/index.d.ts +5 -10
  82. package/dist/parity/index.js +4 -7
  83. package/dist/parity/index.js.map +1 -1
  84. package/dist/pbt/index.d.ts +248 -5
  85. package/dist/pbt/index.js +124 -5
  86. package/dist/pbt/index.js.map +1 -1
  87. package/dist/{trace-replay → persistence}/index.d.ts +7 -4
  88. package/dist/persistence/index.js +6 -0
  89. package/dist/react/index.d.ts +4 -3
  90. package/dist/react/index.js +1 -2
  91. package/dist/react/index.js.map +1 -1
  92. package/dist/resilience/index.d.ts +743 -0
  93. package/dist/resilience/index.js +657 -0
  94. package/dist/resilience/index.js.map +1 -0
  95. package/dist/retry-backoff/index.d.ts +3 -2
  96. package/dist/retry-backoff/index.js +1 -1
  97. package/dist/runtime-types-LWDoi943.d.ts +998 -0
  98. package/dist/testing/index.d.ts +3 -2
  99. package/dist/testing/index.js +1 -2
  100. package/dist/testing/index.js.map +1 -1
  101. package/dist/{throttled-input → timing}/index.d.ts +144 -12
  102. package/dist/{throttled-input → timing}/index.js +57 -12
  103. package/dist/timing/index.js.map +1 -0
  104. package/dist/{types-D7u9DkH7.d.ts → types-DP3f5NIl.d.ts} +1 -1
  105. package/dist/work-queue/index.d.ts +131 -54
  106. package/dist/work-queue/index.js +3 -2
  107. package/dist/work-queue/index.js.map +1 -1
  108. package/package.json +50 -216
  109. package/dist/authed-call/index.d.ts +0 -119
  110. package/dist/authed-call/index.js +0 -134
  111. package/dist/authed-call/index.js.map +0 -1
  112. package/dist/await-terminal/index.d.ts +0 -100
  113. package/dist/await-terminal/index.js +0 -76
  114. package/dist/await-terminal/index.js.map +0 -1
  115. package/dist/batch-window/index.js.map +0 -1
  116. package/dist/cache/index.d.ts +0 -151
  117. package/dist/cache/index.js +0 -8
  118. package/dist/chart/index.d.ts +0 -217
  119. package/dist/chart/index.js +0 -16
  120. package/dist/chart/index.js.map +0 -1
  121. package/dist/chart/inspect/index.d.ts +0 -85
  122. package/dist/chart/inspect/index.js +0 -5
  123. package/dist/chart/inspect/react.d.ts +0 -112
  124. package/dist/chart/inspect/react.js +0 -11
  125. package/dist/chart/inspect/react.js.map +0 -1
  126. package/dist/chart/inspect/styles.css +0 -286
  127. package/dist/chart/lane/index.d.ts +0 -361
  128. package/dist/chart/lane/index.js +0 -9
  129. package/dist/chart/lane/index.js.map +0 -1
  130. package/dist/chart/lane/react.d.ts +0 -83
  131. package/dist/chart/lane/react.js +0 -559
  132. package/dist/chart/lane/react.js.map +0 -1
  133. package/dist/chart/lane/server.d.ts +0 -148
  134. package/dist/chart/lane/server.js +0 -209
  135. package/dist/chart/lane/server.js.map +0 -1
  136. package/dist/chart/lane/styles.css +0 -498
  137. package/dist/chart/lane/viewer/assets/abnfDiagram-N423BO3Z-C729LI31.js +0 -1
  138. package/dist/chart/lane/viewer/assets/architectureDiagram-T3A2C74G-C729LI31.js +0 -1
  139. package/dist/chart/lane/viewer/assets/blockDiagram-VBNYF7ZC-C729LI31.js +0 -1
  140. package/dist/chart/lane/viewer/assets/c4Diagram-5PPSVZJV-C729LI31.js +0 -1
  141. package/dist/chart/lane/viewer/assets/chunk-2GRJ4B5K-HdDf8SI3.js +0 -1
  142. package/dist/chart/lane/viewer/assets/chunk-5RXB4S5H-CcNtpUd7.js +0 -231
  143. package/dist/chart/lane/viewer/assets/chunk-5VM5RSS4-BP4fRS_5.js +0 -15
  144. package/dist/chart/lane/viewer/assets/chunk-KBJHAD2P-DZOw7xU6.js +0 -1
  145. package/dist/chart/lane/viewer/assets/chunk-NSK5VX7P-CBCyTZMs.js +0 -128
  146. package/dist/chart/lane/viewer/assets/classDiagram-JCYQIIEL-C729LI31.js +0 -1
  147. package/dist/chart/lane/viewer/assets/classDiagram-v2-OCEON4UE-D4uAiFr8.js +0 -206
  148. package/dist/chart/lane/viewer/assets/cose-bilkent-JH36ORCC-DOwCrGXH.js +0 -1
  149. package/dist/chart/lane/viewer/assets/cynefinDiagram-MW4NZA55-C729LI31.js +0 -1
  150. package/dist/chart/lane/viewer/assets/dagre-K_PewWfS.js +0 -1
  151. package/dist/chart/lane/viewer/assets/dagre-VZM6K2ZE-831qZcA8.js +0 -4
  152. package/dist/chart/lane/viewer/assets/diagram-7IWD3JNH-C729LI31.js +0 -1
  153. package/dist/chart/lane/viewer/assets/diagram-B4RE2ZJO-C729LI31.js +0 -1
  154. package/dist/chart/lane/viewer/assets/diagram-LBJQPF4R-C729LI31.js +0 -1
  155. package/dist/chart/lane/viewer/assets/diagram-Q27KOJAE-C729LI31.js +0 -1
  156. package/dist/chart/lane/viewer/assets/diagram-UB23O5K3-C729LI31.js +0 -1
  157. package/dist/chart/lane/viewer/assets/ebnfDiagram-BXEA7PRR-C729LI31.js +0 -1
  158. package/dist/chart/lane/viewer/assets/erDiagram-JOGREHBK-C729LI31.js +0 -1
  159. package/dist/chart/lane/viewer/assets/flowDiagram-UKHOOZJN-C729LI31.js +0 -1
  160. package/dist/chart/lane/viewer/assets/ganttDiagram-PKOTCBZU-C729LI31.js +0 -1
  161. package/dist/chart/lane/viewer/assets/gitGraphDiagram-DS77QQ5N-C729LI31.js +0 -1
  162. package/dist/chart/lane/viewer/assets/index-9SkH5NA3.css +0 -1
  163. package/dist/chart/lane/viewer/assets/index-Bgt4sXpW.js +0 -195
  164. package/dist/chart/lane/viewer/assets/infoDiagram-6WML65LV-C729LI31.js +0 -1
  165. package/dist/chart/lane/viewer/assets/ishikawaDiagram-WSZJBQD7-C729LI31.js +0 -1
  166. package/dist/chart/lane/viewer/assets/journeyDiagram-NVQOT4AX-C729LI31.js +0 -1
  167. package/dist/chart/lane/viewer/assets/kanban-definition-27J2QSJJ-G7PaPzy-.js +0 -89
  168. package/dist/chart/lane/viewer/assets/katex-DOwCrGXH.js +0 -1
  169. package/dist/chart/lane/viewer/assets/mindmap-definition-FAOFIHXS-CGj9nrVk.js +0 -96
  170. package/dist/chart/lane/viewer/assets/path-fybaL0A-.js +0 -1
  171. package/dist/chart/lane/viewer/assets/pegDiagram-VL7TDLO6-C729LI31.js +0 -1
  172. package/dist/chart/lane/viewer/assets/pieDiagram-7S7Q4E2Y-C729LI31.js +0 -1
  173. package/dist/chart/lane/viewer/assets/quadrantDiagram-CIZ2JOQS-C729LI31.js +0 -1
  174. package/dist/chart/lane/viewer/assets/railroadDiagram-AXF67PYL-C729LI31.js +0 -1
  175. package/dist/chart/lane/viewer/assets/requirementDiagram-LRYGKXZP-C729LI31.js +0 -1
  176. package/dist/chart/lane/viewer/assets/sankeyDiagram-W5VNT64P-C729LI31.js +0 -1
  177. package/dist/chart/lane/viewer/assets/sequenceDiagram-SI44F4Z6-C729LI31.js +0 -1
  178. package/dist/chart/lane/viewer/assets/stateDiagram-OKZ733FA-B_88AzBS.js +0 -1
  179. package/dist/chart/lane/viewer/assets/stateDiagram-v2-UEYNNEHI-CR5gcgq6.js +0 -1
  180. package/dist/chart/lane/viewer/assets/swimlanes-SLNWSIFB-B4xK-rwg.js +0 -1
  181. package/dist/chart/lane/viewer/assets/swimlanesDiagram-ULZ7WXOC-C729LI31.js +0 -1
  182. package/dist/chart/lane/viewer/assets/timeline-definition-Z64GVDOM-CCv52MfY.js +0 -120
  183. package/dist/chart/lane/viewer/assets/vennDiagram-T6HMQDX7-C729LI31.js +0 -1
  184. package/dist/chart/lane/viewer/assets/wardleyDiagram-T6FBY63Y-C729LI31.js +0 -1
  185. package/dist/chart/lane/viewer/assets/xychartDiagram-ELKLHX3M-C729LI31.js +0 -1
  186. package/dist/chart/lane/viewer/index.html +0 -15
  187. package/dist/chart/report/index.d.ts +0 -116
  188. package/dist/chart/report/index.js +0 -32
  189. package/dist/chart/report/index.js.map +0 -1
  190. package/dist/chunk-2YFLOCWX.js +0 -15
  191. package/dist/chunk-2YFLOCWX.js.map +0 -1
  192. package/dist/chunk-3JU6657S.js +0 -372
  193. package/dist/chunk-3JU6657S.js.map +0 -1
  194. package/dist/chunk-4KTWLPL5.js +0 -33
  195. package/dist/chunk-4KTWLPL5.js.map +0 -1
  196. package/dist/chunk-5EHLEUTL.js +0 -686
  197. package/dist/chunk-5EHLEUTL.js.map +0 -1
  198. package/dist/chunk-5KJKJOFC.js +0 -758
  199. package/dist/chunk-5KJKJOFC.js.map +0 -1
  200. package/dist/chunk-7SVIRMC6.js.map +0 -1
  201. package/dist/chunk-7V4EVLZA.js.map +0 -1
  202. package/dist/chunk-A56OR5RF.js +0 -184
  203. package/dist/chunk-A56OR5RF.js.map +0 -1
  204. package/dist/chunk-AZZLE7XR.js +0 -62
  205. package/dist/chunk-AZZLE7XR.js.map +0 -1
  206. package/dist/chunk-B5VXOFMZ.js +0 -266
  207. package/dist/chunk-B5VXOFMZ.js.map +0 -1
  208. package/dist/chunk-BYQUGDD3.js +0 -16
  209. package/dist/chunk-BYQUGDD3.js.map +0 -1
  210. package/dist/chunk-D736QUGF.js.map +0 -1
  211. package/dist/chunk-E6GEDSF4.js +0 -307
  212. package/dist/chunk-E6GEDSF4.js.map +0 -1
  213. package/dist/chunk-EUF7XOEE.js +0 -223
  214. package/dist/chunk-EUF7XOEE.js.map +0 -1
  215. package/dist/chunk-EWJP3YYP.js.map +0 -1
  216. package/dist/chunk-FV3Z5MBE.js.map +0 -1
  217. package/dist/chunk-HCEVHFJ7.js +0 -54
  218. package/dist/chunk-HCEVHFJ7.js.map +0 -1
  219. package/dist/chunk-I5OV65MS.js.map +0 -1
  220. package/dist/chunk-J6527VRQ.js.map +0 -1
  221. package/dist/chunk-JELSZN25.js +0 -47
  222. package/dist/chunk-JELSZN25.js.map +0 -1
  223. package/dist/chunk-JER5O7PQ.js +0 -416
  224. package/dist/chunk-JER5O7PQ.js.map +0 -1
  225. package/dist/chunk-JGVL3WPL.js +0 -26
  226. package/dist/chunk-JGVL3WPL.js.map +0 -1
  227. package/dist/chunk-JP5D6GSL.js +0 -71
  228. package/dist/chunk-JP5D6GSL.js.map +0 -1
  229. package/dist/chunk-K575PT4S.js.map +0 -1
  230. package/dist/chunk-MU6MCIAC.js +0 -15
  231. package/dist/chunk-MU6MCIAC.js.map +0 -1
  232. package/dist/chunk-MUUROGIH.js.map +0 -1
  233. package/dist/chunk-ND3DH6KM.js +0 -88
  234. package/dist/chunk-ND3DH6KM.js.map +0 -1
  235. package/dist/chunk-Q2UM7BXU.js.map +0 -1
  236. package/dist/chunk-S2EGRPCM.js +0 -47
  237. package/dist/chunk-S2EGRPCM.js.map +0 -1
  238. package/dist/chunk-SINXE47Y.js +0 -55
  239. package/dist/chunk-SINXE47Y.js.map +0 -1
  240. package/dist/chunk-SUST46KO.js +0 -53
  241. package/dist/chunk-SUST46KO.js.map +0 -1
  242. package/dist/chunk-TP5UPGLY.js +0 -61
  243. package/dist/chunk-TP5UPGLY.js.map +0 -1
  244. package/dist/chunk-UF4MZSLT.js +0 -53
  245. package/dist/chunk-UF4MZSLT.js.map +0 -1
  246. package/dist/chunk-UOC2PL46.js +0 -13
  247. package/dist/chunk-UOC2PL46.js.map +0 -1
  248. package/dist/chunk-WLGO64WC.js.map +0 -1
  249. package/dist/chunk-WRAA7GVZ.js +0 -209
  250. package/dist/chunk-WRAA7GVZ.js.map +0 -1
  251. package/dist/chunk-ZCL7SCBK.js +0 -685
  252. package/dist/chunk-ZCL7SCBK.js.map +0 -1
  253. package/dist/chunk-ZD6PNZBK.js +0 -457
  254. package/dist/chunk-ZD6PNZBK.js.map +0 -1
  255. package/dist/chunk-ZF6WDK2D.js +0 -519
  256. package/dist/chunk-ZF6WDK2D.js.map +0 -1
  257. package/dist/chunk-ZJ5AOYBH.js +0 -8
  258. package/dist/chunk-ZJ5AOYBH.js.map +0 -1
  259. package/dist/chunk-ZVJZ72HY.js.map +0 -1
  260. package/dist/circuit-breaker/index.d.ts +0 -197
  261. package/dist/circuit-breaker/index.js +0 -3
  262. package/dist/circuit-breaker/index.js.map +0 -1
  263. package/dist/core-Bjc0bS8j.d.ts +0 -326
  264. package/dist/deadline/index.js +0 -6
  265. package/dist/deadline/index.js.map +0 -1
  266. package/dist/debounce/index.js +0 -3
  267. package/dist/debounce/index.js.map +0 -1
  268. package/dist/extension/react.d.ts +0 -121
  269. package/dist/extension/react.js +0 -75
  270. package/dist/extension/react.js.map +0 -1
  271. package/dist/extension/subs/index.d.ts +0 -44
  272. package/dist/extension/subs/index.js +0 -80
  273. package/dist/extension/subs/index.js.map +0 -1
  274. package/dist/extension/test-utils.d.ts +0 -128
  275. package/dist/extension/test-utils.js +0 -277
  276. package/dist/extension/test-utils.js.map +0 -1
  277. package/dist/fan-out/index.js +0 -5
  278. package/dist/fan-out/index.js.map +0 -1
  279. package/dist/fold-Blbhru48.d.ts +0 -435
  280. package/dist/graph-CcjWZVrd.d.ts +0 -923
  281. package/dist/idempotency/adapter.d.ts +0 -62
  282. package/dist/idempotency/adapter.js +0 -4
  283. package/dist/idempotency/adapter.js.map +0 -1
  284. package/dist/idempotent-intake/index.d.ts +0 -187
  285. package/dist/idempotent-intake/index.js +0 -7
  286. package/dist/idempotent-intake/index.js.map +0 -1
  287. package/dist/llm-call/index.d.ts +0 -310
  288. package/dist/llm-call/index.js +0 -16
  289. package/dist/llm-call/index.js.map +0 -1
  290. package/dist/machine-0OmPvsy_.d.ts +0 -804
  291. package/dist/monitored-run/index.js +0 -10
  292. package/dist/monitored-run/index.js.map +0 -1
  293. package/dist/paginated-walk/index.d.ts +0 -234
  294. package/dist/paginated-walk/index.js +0 -16
  295. package/dist/paginated-walk/index.js.map +0 -1
  296. package/dist/paginator/index.js +0 -3
  297. package/dist/paginator/index.js.map +0 -1
  298. package/dist/pbt/arbitraries/index.d.ts +0 -135
  299. package/dist/pbt/arbitraries/index.js +0 -3
  300. package/dist/pbt/arbitraries/index.js.map +0 -1
  301. package/dist/pbt/runners/index.d.ts +0 -117
  302. package/dist/pbt/runners/index.js +0 -5
  303. package/dist/pbt/runners/index.js.map +0 -1
  304. package/dist/poller/index.d.ts +0 -351
  305. package/dist/poller/index.js +0 -115
  306. package/dist/poller/index.js.map +0 -1
  307. package/dist/prediction/index.d.ts +0 -130
  308. package/dist/prediction/index.js +0 -4
  309. package/dist/prediction/index.js.map +0 -1
  310. package/dist/protocol-B5YmJr0d.d.ts +0 -45
  311. package/dist/pure/index.d.ts +0 -2
  312. package/dist/pure/index.js +0 -4
  313. package/dist/pure/index.js.map +0 -1
  314. package/dist/rate-limit/index.d.ts +0 -115
  315. package/dist/rate-limit/index.js +0 -3
  316. package/dist/rate-limit/index.js.map +0 -1
  317. package/dist/reconciler/index.d.ts +0 -192
  318. package/dist/reconciler/index.js +0 -164
  319. package/dist/reconciler/index.js.map +0 -1
  320. package/dist/recorder/index.js +0 -3
  321. package/dist/recorder/index.js.map +0 -1
  322. package/dist/reducer-BqyoVyBG.d.ts +0 -447
  323. package/dist/resilient-call/index.d.ts +0 -319
  324. package/dist/resilient-call/index.js +0 -14
  325. package/dist/resilient-call/index.js.map +0 -1
  326. package/dist/retry-to-success/index.d.ts +0 -109
  327. package/dist/retry-to-success/index.js +0 -37
  328. package/dist/retry-to-success/index.js.map +0 -1
  329. package/dist/run-BVeqJDBF.d.ts +0 -713
  330. package/dist/runtime-types-Bxc637bp.d.ts +0 -502
  331. package/dist/saga/index.d.ts +0 -240
  332. package/dist/saga/index.js +0 -150
  333. package/dist/saga/index.js.map +0 -1
  334. package/dist/samples-DCt6nF8H.d.ts +0 -59
  335. package/dist/snapshot/index.js +0 -5
  336. package/dist/snapshot/index.js.map +0 -1
  337. package/dist/subs/index.d.ts +0 -471
  338. package/dist/subs/index.js +0 -7
  339. package/dist/subs/index.js.map +0 -1
  340. package/dist/throttle/index.d.ts +0 -134
  341. package/dist/throttle/index.js +0 -3
  342. package/dist/throttle/index.js.map +0 -1
  343. package/dist/throttled-input/index.js.map +0 -1
  344. package/dist/token-refresh/index.d.ts +0 -215
  345. package/dist/token-refresh/index.js +0 -6
  346. package/dist/token-refresh/index.js.map +0 -1
  347. package/dist/trace-replay/index.js +0 -6
  348. package/dist/trace-replay/index.js.map +0 -1
  349. package/dist/with-deadline/index.d.ts +0 -196
  350. package/dist/with-deadline/index.js +0 -111
  351. package/dist/with-deadline/index.js.map +0 -1
  352. package/dist/with-resilience/index.d.ts +0 -224
  353. package/dist/with-resilience/index.js +0 -240
  354. package/dist/with-resilience/index.js.map +0 -1
  355. package/dist/with-telemetry/index.d.ts +0 -149
  356. package/dist/with-telemetry/index.js +0 -70
  357. package/dist/with-telemetry/index.js.map +0 -1
  358. package/dist/work-queue/adapter.d.ts +0 -83
  359. package/dist/work-queue/adapter.js +0 -4
  360. package/dist/work-queue/adapter.js.map +0 -1
  361. package/dist/work-queue/ops.d.ts +0 -70
  362. package/dist/work-queue/ops.js +0 -3
  363. package/dist/work-queue/ops.js.map +0 -1
  364. package/dist/workflow/index.d.ts +0 -484
  365. package/dist/workflow/index.js +0 -244
  366. package/dist/workflow/index.js.map +0 -1
  367. /package/dist/{cache → paginate}/index.js.map +0 -0
  368. /package/dist/{chart/inspect → persistence}/index.js.map +0 -0
@@ -0,0 +1,657 @@
1
+ import { MsgType, createResilientCall } from '../chunk-AQ6ZIMEA.js';
2
+ export { canPass, createResilientCall, defaultCircuitPolicy, initBucket, initCircuit, initWindow, liftResilience, onFailure, onSuccess, record, refill, remaining, runCmdDef, tryConsume } from '../chunk-AQ6ZIMEA.js';
3
+ import { defaultRng, initRetry, recordFailure, shouldRetry, nextDelayMs } from '../chunk-VBDU4JL6.js';
4
+ import { subscribeDeadline } from '../chunk-F2US5BW6.js';
5
+ export { cacheEvictMsg, cacheEvictionSub, cacheEvictionSubscribe, deadlineExceeded, deadlineSub, evictExpired, get, has, initCache, remove, set, setTimeoutArmTimer, subscribeDeadline, subscribeWith } from '../chunk-F2US5BW6.js';
6
+ import { Cmd, msgKeysOf, applyCell, fromTimeout, tryInterpret, cmdEdgeOf, subId, without, formOf } from '../chunk-RQULHGYH.js';
7
+ import { z } from 'zod';
8
+
9
+ function initTokenRefresh() {
10
+ return { token: null, stale: false };
11
+ }
12
+ var refreshToken = Cmd.define("refresh_token", {
13
+ input: z.object({}),
14
+ ok: z.custom(),
15
+ err: ["token_refresh_failed"]
16
+ });
17
+ function refreshTokenCmd() {
18
+ return refreshToken({});
19
+ }
20
+ function tokenRefreshedMsg(token) {
21
+ return { type: MsgType.TokenRefreshed, token };
22
+ }
23
+ function tokenRefreshFailedMsg(error) {
24
+ return { type: MsgType.TokenRefreshFailed, error };
25
+ }
26
+ function createTokenRefresh(config = {}) {
27
+ const skewMs = config.skewMs !== void 0 && config.skewMs > 0 ? config.skewMs : 0;
28
+ function needsRefresh(state, at) {
29
+ if (state.token === null) return true;
30
+ if (state.stale) return true;
31
+ if (!Number.isFinite(state.token.expiresAt)) return true;
32
+ return at >= state.token.expiresAt - skewMs;
33
+ }
34
+ function on401(state) {
35
+ if (state.stale) return state;
36
+ return { ...state, stale: true };
37
+ }
38
+ function refreshed(state, token) {
39
+ const normalized = Object.is(token.expiresAt, -0) ? { ...token, expiresAt: 0 } : token;
40
+ return { ...state, token: normalized, stale: false };
41
+ }
42
+ function ensureFresh(state, at) {
43
+ if (needsRefresh(state, at)) {
44
+ return [state, [refreshTokenCmd()]];
45
+ }
46
+ return [state, []];
47
+ }
48
+ function handlers(ports) {
49
+ return {
50
+ refresh_token: tryInterpret(
51
+ () => ports.refresh(),
52
+ (token) => tokenRefreshedMsg(token),
53
+ (error) => tokenRefreshFailedMsg(error)
54
+ )
55
+ };
56
+ }
57
+ return {
58
+ /** The slice initializer — spread into the consumer's `init`. */
59
+ init: initTokenRefresh,
60
+ needsRefresh,
61
+ on401,
62
+ refreshed,
63
+ ensureFresh,
64
+ handlers
65
+ };
66
+ }
67
+
68
+ // src/internal/resilience/authed-call/index.ts
69
+ function createAuthedCall(config, rng = Math.random) {
70
+ const rc = createResilientCall(config, rng);
71
+ const tr = createTokenRefresh({ skewMs: config.skewMs });
72
+ function init() {
73
+ return {
74
+ resilience: rc.init(),
75
+ auth: tr.init(),
76
+ authRetry: {},
77
+ pendingAuthRetry: {}
78
+ };
79
+ }
80
+ function liftResilient(s, [resilience, cmds]) {
81
+ return [{ ...s, resilience }, cmds];
82
+ }
83
+ function clearAuthKey(s, key) {
84
+ return {
85
+ ...s,
86
+ authRetry: without(s.authRetry, key),
87
+ pendingAuthRetry: without(s.pendingAuthRetry, key)
88
+ };
89
+ }
90
+ function attempt(s, key, input, at) {
91
+ const cleared = clearAuthKey(s, key);
92
+ return liftResilient(
93
+ cleared,
94
+ rc.attempt(cleared.resilience, key, input, at)
95
+ );
96
+ }
97
+ function succeed(s, key, msg) {
98
+ const settled = clearAuthKey(s, key);
99
+ return liftResilient(settled, rc.succeed(settled.resilience, key, msg));
100
+ }
101
+ function fail(s, key, msg) {
102
+ const [resilience, cmds] = rc.fail(s.resilience, key, msg);
103
+ const next = settleAuthIfDone({ ...s, resilience }, key, resilience);
104
+ return [next, cmds];
105
+ }
106
+ function on401(s, key, at) {
107
+ const spent = s.authRetry[key] ?? 0;
108
+ const call = s.resilience.calls[key];
109
+ const input = call?.phase === "running" || call?.phase === "waiting_retry" ? call.input : void 0;
110
+ if (spent >= 1 || input === void 0) {
111
+ const error = { _tag: "unauthorized", key };
112
+ const [settled] = rc.settleFailed(s.resilience, key, error);
113
+ return [{ ...clearAuthKey(s, key), resilience: settled }, []];
114
+ }
115
+ return [
116
+ {
117
+ ...s,
118
+ auth: tr.on401(s.auth),
119
+ authRetry: { ...s.authRetry, [key]: spent + 1 },
120
+ pendingAuthRetry: { ...s.pendingAuthRetry, [key]: input }
121
+ },
122
+ [refreshTokenCmd()]
123
+ ];
124
+ }
125
+ function installToken(s, token) {
126
+ return { ...s, auth: tr.refreshed(s.auth, token) };
127
+ }
128
+ function onRefreshed(s, at) {
129
+ const parked = Object.entries(s.pendingAuthRetry);
130
+ if (parked.length === 0) return [s, []];
131
+ let resilience = s.resilience;
132
+ const cmds = [];
133
+ for (const [key, input] of parked) {
134
+ const [next, runCmds] = rc.attempt(resilience, key, input, at);
135
+ resilience = next;
136
+ cmds.push(...runCmds);
137
+ }
138
+ return [{ ...s, resilience, pendingAuthRetry: {} }, cmds];
139
+ }
140
+ function onTimer(s, msg) {
141
+ const [resilience, cmds] = rc.onTimer(s.resilience, msg);
142
+ const next = settleAuthIfDone({ ...s, resilience }, void 0, resilience);
143
+ return [next, cmds];
144
+ }
145
+ function settleAuthIfDone(s, onlyKey, resilience) {
146
+ const keys = onlyKey !== void 0 ? [onlyKey] : Object.keys(s.authRetry);
147
+ let next = s;
148
+ for (const key of keys) {
149
+ const phase = resilience.calls[key]?.phase;
150
+ if (phase === "succeeded" || phase === "failed") {
151
+ next = clearAuthKey(next, key);
152
+ }
153
+ }
154
+ return next;
155
+ }
156
+ function subs(s) {
157
+ return rc.subs(s.resilience);
158
+ }
159
+ function handlers(ports) {
160
+ const trPorts = { refresh: ports.refresh };
161
+ return {
162
+ ...rc.handlers({ run: ports.run }),
163
+ ...tr.handlers(trPorts)
164
+ };
165
+ }
166
+ return {
167
+ init,
168
+ attempt,
169
+ succeed,
170
+ fail,
171
+ on401,
172
+ installToken,
173
+ onRefreshed,
174
+ onTimer,
175
+ /** token-refresh's call-boundary verb, re-exposed for proactive expiry refresh. */
176
+ needsRefresh: (s, at) => tr.needsRefresh(s.auth, at),
177
+ subs,
178
+ handlers
179
+ };
180
+ }
181
+ function liftAuthed(state, [slice, cmds]) {
182
+ return [{ ...state, authed: slice }, cmds];
183
+ }
184
+
185
+ // src/internal/resilience/retry-to-success/index.ts
186
+ var RetryExhaustedError = class extends Error {
187
+ constructor(attempts, lastError) {
188
+ super(
189
+ `@demlik/tea: retryToSuccess gave up after ${attempts} attempt(s) \u2014 the bounded retry reached maxAttempts without a success. See .lastError for the final failure.`
190
+ );
191
+ this.attempts = attempts;
192
+ this.lastError = lastError;
193
+ }
194
+ attempts;
195
+ lastError;
196
+ name = "RetryExhaustedError";
197
+ _tag = "RetryExhaustedError";
198
+ };
199
+ var defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
200
+ async function retryToSuccess(port, policy, opts = {}) {
201
+ const rng = opts.rng ?? defaultRng;
202
+ const sleep = opts.sleep ?? defaultSleep;
203
+ let retry = initRetry();
204
+ for (; ; ) {
205
+ try {
206
+ return await port();
207
+ } catch (error) {
208
+ retry = recordFailure(retry, error);
209
+ if (!shouldRetry(retry, policy)) {
210
+ throw new RetryExhaustedError(retry.attempt, error);
211
+ }
212
+ await sleep(nextDelayMs(retry, policy, rng));
213
+ }
214
+ }
215
+ }
216
+ function deadlineExceededMsg(seq) {
217
+ return { type: "$deadline:exceeded", seq };
218
+ }
219
+ var deadlineDecision = Cmd.define("$deadline:decision", {
220
+ input: z.object({
221
+ decision: z.enum(["rearm", "expire", "idle"]),
222
+ /** The slice `seq` AFTER this transition (the re-arm generation now armed). */
223
+ seq: z.number()
224
+ }),
225
+ ok: z.void(),
226
+ err: []
227
+ });
228
+ function withDeadline(base, config) {
229
+ const windowMs = config.ms;
230
+ const isProgress = config.progress;
231
+ const update = {};
232
+ const baseMsgKeys = msgKeysOf(base);
233
+ for (const key of baseMsgKeys) {
234
+ if (key.startsWith("$deadline:")) {
235
+ throw new Error(
236
+ `withDeadline: the base machine declares a reserved "${key}" update cell \u2014 the wrapper owns the "$deadline:" Msg namespace. Rename the base Msg.`
237
+ );
238
+ }
239
+ }
240
+ for (const key of baseMsgKeys) {
241
+ update[key] = (state, msg) => {
242
+ const [nextBase, baseCmds] = applyCell(
243
+ base,
244
+ state.base,
245
+ msg
246
+ );
247
+ const armed = state.$deadline.phase === "armed";
248
+ const counts = armed && (isProgress === void 0 || isProgress(msg));
249
+ const $deadline = counts ? { phase: "armed", seq: state.$deadline.seq + 1 } : state.$deadline;
250
+ const next = { base: nextBase, $deadline };
251
+ const decision = deadlineDecision({
252
+ decision: counts ? "rearm" : "idle",
253
+ seq: $deadline.seq
254
+ });
255
+ return [next, [...baseCmds, decision]];
256
+ };
257
+ }
258
+ update["$deadline:exceeded"] = (state, msg) => {
259
+ const m = msg;
260
+ const fires = state.$deadline.phase === "armed" && m.seq === state.$deadline.seq;
261
+ const $deadline = fires ? { phase: "exceeded", seq: state.$deadline.seq } : state.$deadline;
262
+ const next = { base: state.base, $deadline };
263
+ const decision = deadlineDecision({
264
+ decision: fires ? "expire" : "idle",
265
+ seq: $deadline.seq
266
+ });
267
+ return [next, [decision]];
268
+ };
269
+ const baseInterpret = base.interpret ?? {};
270
+ if (Object.hasOwn(baseInterpret, "$deadline:decision")) {
271
+ throw new Error(
272
+ 'withDeadline: the base machine declares a reserved "$deadline:decision" interpret handler \u2014 the wrapper owns the "$deadline:" Cmd namespace. Rename the base handler.'
273
+ );
274
+ }
275
+ const interpret = {
276
+ ...baseInterpret,
277
+ "$deadline:decision": async () => {
278
+ }
279
+ };
280
+ const baseSubscriptions = base.subscriptions;
281
+ const subscriptions = (state) => {
282
+ const baseSubs = baseSubscriptions ? baseSubscriptions(state.base) : [];
283
+ if (state.$deadline.phase !== "armed") return baseSubs;
284
+ const timeout = {
285
+ id: subId(`$deadline:timeout:${state.$deadline.seq}`),
286
+ type: "$deadline:timeout",
287
+ delayMs: windowMs
288
+ };
289
+ return [...baseSubs, timeout];
290
+ };
291
+ const baseSubscribe = base.subscribe ?? {};
292
+ if (Object.hasOwn(baseSubscribe, "$deadline:timeout")) {
293
+ throw new Error(
294
+ 'withDeadline: the base machine declares a reserved "$deadline:timeout" subscribe handler \u2014 the wrapper owns the "$deadline:" Sub namespace. Rename the base handler.'
295
+ );
296
+ }
297
+ const timeoutCell = fromTimeout(
298
+ (sub) => {
299
+ const seq = Number(sub.id.slice(sub.id.lastIndexOf(":") + 1));
300
+ return deadlineExceededMsg(seq);
301
+ }
302
+ );
303
+ const subscribe = {
304
+ ...baseSubscribe,
305
+ "$deadline:timeout": timeoutCell
306
+ };
307
+ return {
308
+ init: (loaded, ctx) => {
309
+ if (loaded !== null) {
310
+ return [loaded, []];
311
+ }
312
+ const [base0, cmds] = base.init(null, ctx);
313
+ const model = {
314
+ base: base0,
315
+ $deadline: { phase: "armed", seq: 0 }
316
+ };
317
+ return [model, cmds];
318
+ },
319
+ update,
320
+ subscriptions,
321
+ subscribe,
322
+ interpret,
323
+ // The base's `Cmd.define` list rides through so `run`'s interpret edge
324
+ // still parses / stamps the base's settled Msgs behind the wrap (#66).
325
+ ...base.cmds ? { cmds: base.cmds } : {}
326
+ };
327
+ }
328
+ function resilienceRunCmdDef() {
329
+ return Cmd.define("$resilience:run", {
330
+ input: z.custom(),
331
+ // The carried result is the base interpret handler's resolution (`M | void`).
332
+ // biome-ignore lint/suspicious/noConfusingVoidType: mirrors `Interpret`'s own `Promise<M | void>`
333
+ ok: z.custom(),
334
+ err: ["base_rejected", "deadline_exceeded"]
335
+ });
336
+ }
337
+ var RC_RETRY_PREFIX = "resilient:retry:";
338
+ var RC_DEADLINE_PREFIX = "resilient:deadline:";
339
+ var WX_RETRY_PREFIX = "$resilience:retry:";
340
+ var WX_DEADLINE_PREFIX = "$resilience:deadline:";
341
+ function toWrapperTimerId(rcId) {
342
+ if (rcId.startsWith(RC_RETRY_PREFIX))
343
+ return WX_RETRY_PREFIX + rcId.slice(RC_RETRY_PREFIX.length);
344
+ if (rcId.startsWith(RC_DEADLINE_PREFIX))
345
+ return WX_DEADLINE_PREFIX + rcId.slice(RC_DEADLINE_PREFIX.length);
346
+ return rcId;
347
+ }
348
+ function toRcTimerId(wxId) {
349
+ if (wxId.startsWith(WX_RETRY_PREFIX))
350
+ return RC_RETRY_PREFIX + wxId.slice(WX_RETRY_PREFIX.length);
351
+ if (wxId.startsWith(WX_DEADLINE_PREFIX))
352
+ return RC_DEADLINE_PREFIX + wxId.slice(WX_DEADLINE_PREFIX.length);
353
+ return wxId;
354
+ }
355
+ function updateDeclaresMsgKey(machine, key) {
356
+ if (formOf(machine) === "reducer") {
357
+ return Object.hasOwn(machine.update, key);
358
+ }
359
+ for (const innerTable of Object.values(machine.update)) {
360
+ if (innerTable !== null && (typeof innerTable === "object" || typeof innerTable === "function") && Object.hasOwn(innerTable, key)) {
361
+ return true;
362
+ }
363
+ }
364
+ return false;
365
+ }
366
+ function withResilience(base, config, rng = Math.random) {
367
+ const { target } = config;
368
+ const keyOf = config.keyOf ?? (() => target);
369
+ const runCmd = resilienceRunCmdDef();
370
+ const timeSensitiveBrick = config.circuit !== void 0 || config.rateLimit !== void 0 || config.cache !== void 0 || config.deadline !== void 0;
371
+ if (timeSensitiveBrick && config.at === void 0) {
372
+ throw new Error(
373
+ "withResilience: a time-sensitive brick (circuit / rateLimit / cache / deadline) is configured but `config.at` is missing. The cold-attempt gate needs the REAL wall time the triggering base Msg carries as data (time-as-data) \u2014 without it the gate would fabricate `at = 0`, so a cold attempt after a real-time breaker trip computes a negative cooldown and the breaker NEVER recovers (and a deadline brick fires immediately). Provide `at: (msg) => msg.<wallTimeField>`."
374
+ );
375
+ }
376
+ const atOf = config.at ?? (() => 0);
377
+ const rc = createResilientCall(config, rng);
378
+ const update = {};
379
+ function isBaseMsg(result) {
380
+ return typeof result === "object" && result !== null && "type" in result;
381
+ }
382
+ function foldBase(state, msg, delivering = /* @__PURE__ */ new Set()) {
383
+ const [nextBase, baseCmds] = applyCell(base, state.base, msg);
384
+ let next = { base: nextBase, $resilience: state.$resilience };
385
+ const outCmds = [];
386
+ const at = atOf(msg);
387
+ for (const cmd of baseCmds) {
388
+ if (cmd.type !== target) {
389
+ outCmds.push(cmd);
390
+ continue;
391
+ }
392
+ const callKey = keyOf(cmd);
393
+ const [nextSlice, runCmds] = rc.attempt(
394
+ next.$resilience,
395
+ callKey,
396
+ cmd,
397
+ at
398
+ );
399
+ next = { ...next, $resilience: nextSlice };
400
+ outCmds.push(...renameRunCmds(runCmds));
401
+ if (runCmds.length === 0 && !delivering.has(callKey)) {
402
+ const call = nextSlice.calls[callKey];
403
+ if (call?.phase === "succeeded" && isBaseMsg(call.result)) {
404
+ const [delivered, moreCmds] = foldBase(
405
+ next,
406
+ call.result,
407
+ /* @__PURE__ */ new Set([...delivering, callKey])
408
+ );
409
+ next = delivered;
410
+ outCmds.push(...moreCmds);
411
+ }
412
+ }
413
+ }
414
+ return [next, outCmds];
415
+ }
416
+ for (const key of msgKeysOf(base)) {
417
+ update[key] = (state, msg) => foldBase(state, msg);
418
+ }
419
+ update["$resilience:ok"] = (state, msg) => {
420
+ const m = msg;
421
+ const [slice, runCmds] = rc.succeed(state.$resilience, m.key, {
422
+ type: MsgType.ResilientOk,
423
+ key: m.key,
424
+ result: m.result,
425
+ at: m.at
426
+ });
427
+ const settled = { ...state, $resilience: slice };
428
+ const settleCmds = renameRunCmds(runCmds);
429
+ if (!isBaseMsg(m.result)) return [settled, settleCmds];
430
+ const [next, followCmds] = foldBase(settled, m.result, /* @__PURE__ */ new Set([m.key]));
431
+ return [next, [...settleCmds, ...followCmds]];
432
+ };
433
+ update["$resilience:err"] = (state, msg) => {
434
+ const m = msg;
435
+ const [slice, runCmds] = rc.fail(state.$resilience, m.key, {
436
+ type: MsgType.ResilientErr,
437
+ key: m.key,
438
+ error: m.error,
439
+ at: m.at
440
+ });
441
+ return [{ ...state, $resilience: slice }, renameRunCmds(runCmds)];
442
+ };
443
+ update["$resilience:timer"] = (state, msg) => {
444
+ const m = msg;
445
+ const [slice, runCmds] = rc.onTimer(state.$resilience, {
446
+ type: "deadline_exceeded",
447
+ id: toRcTimerId(m.id),
448
+ atMs: m.atMs
449
+ });
450
+ return [{ ...state, $resilience: slice }, renameRunCmds(runCmds)];
451
+ };
452
+ function renameRunCmds(runCmds) {
453
+ return runCmds.map((r) => runCmd({ key: r.key, input: r.input }));
454
+ }
455
+ const baseSubscriptions = base.subscriptions;
456
+ const baseSubscribe = base.subscribe;
457
+ function subscriptions(state) {
458
+ const baseSubs = baseSubscriptions ? baseSubscriptions(state.base) : [];
459
+ const rcSubs = rc.subs(state.$resilience);
460
+ const timerSubs = rcSubs.map((s) => ({
461
+ id: subId(toWrapperTimerId(s.id)),
462
+ type: "$resilience:timer",
463
+ atMs: s.atMs
464
+ }));
465
+ return [...baseSubs, ...timerSubs];
466
+ }
467
+ const baseInterpret = base.interpret ?? {};
468
+ const RESERVED = [
469
+ "$resilience:run",
470
+ "$resilience:ok",
471
+ "$resilience:err",
472
+ "$resilience:timer"
473
+ ];
474
+ const surfaces = [
475
+ {
476
+ name: "update",
477
+ declares: (reserved) => updateDeclaresMsgKey(base, reserved)
478
+ },
479
+ {
480
+ name: "interpret",
481
+ declares: (reserved) => Object.hasOwn(baseInterpret, reserved)
482
+ },
483
+ {
484
+ name: "subscribe",
485
+ declares: (reserved) => Object.hasOwn(baseSubscribe ?? {}, reserved)
486
+ }
487
+ ];
488
+ for (const reserved of RESERVED) {
489
+ for (const surface of surfaces) {
490
+ if (surface.declares(reserved)) {
491
+ throw new Error(
492
+ `withResilience: the base machine declares a reserved "${reserved}" ${surface.name} key \u2014 the wrapper owns the "$resilience:" namespace ($resilience:run / :ok / :err / :timer across update, interpret, and subscribe). Rename the base key.`
493
+ );
494
+ }
495
+ }
496
+ }
497
+ if (!Object.hasOwn(baseInterpret, target)) {
498
+ throw new Error(
499
+ `withResilience: no base interpret handler for target Cmd "${target}" \u2014 the resilient effect has nothing to perform. The base machine must declare an interpret handler for its target Cmd type.`
500
+ );
501
+ }
502
+ const runHandler = tryInterpret(
503
+ async (cmd, ctx) => {
504
+ const inner = cmd.input;
505
+ const handler = baseInterpret[inner.type];
506
+ if (handler === void 0) {
507
+ throw new Error(
508
+ `withResilience: no base interpret handler for target Cmd "${inner.type}" \u2014 the resilient effect has nothing to perform.`
509
+ );
510
+ }
511
+ return cmdEdgeOf(ctx)(
512
+ inner,
513
+ await handler(inner, ctx)
514
+ );
515
+ },
516
+ (result, cmd) => ({
517
+ type: "$resilience:ok",
518
+ key: cmd.key,
519
+ result,
520
+ at: Date.now()
521
+ }),
522
+ (error, cmd) => ({
523
+ type: "$resilience:err",
524
+ key: cmd.key,
525
+ error,
526
+ at: Date.now()
527
+ })
528
+ );
529
+ const interpret = {
530
+ ...baseInterpret,
531
+ "$resilience:run": runHandler
532
+ };
533
+ const subscribeMap = {
534
+ ...baseSubscribe ?? {},
535
+ "$resilience:timer": (sub, ctx, dispatch) => (
536
+ // Reuse the deadline subscribe cell wholesale: it arms a one-shot timer
537
+ // for `max(0, atMs - Date.now())` and fires when the wall clock crosses
538
+ // `atMs`. We hand it a `DeadlineSub` shape and translate its
539
+ // `deadline_exceeded` Msg into the wrapper's `$resilience:timer` Msg.
540
+ subscribeDeadline(
541
+ { id: sub.id, type: "deadline", atMs: sub.atMs },
542
+ ctx,
543
+ (dl) => dispatch({ type: "$resilience:timer", id: dl.id, atMs: dl.atMs })
544
+ )
545
+ )
546
+ };
547
+ return {
548
+ init: (loaded, ctx) => {
549
+ if (loaded !== null) {
550
+ return [loaded, []];
551
+ }
552
+ const [base0, baseCmds] = base.init(null, ctx);
553
+ let resilience = rc.init();
554
+ const initCmds = [];
555
+ for (const cmd of baseCmds) {
556
+ if (cmd.type !== target) {
557
+ initCmds.push(cmd);
558
+ continue;
559
+ }
560
+ if (config.deadline !== void 0) {
561
+ throw new Error(
562
+ `withResilience: base.init emits the target Cmd "${target}" while a deadline brick is configured. The boot cold attempt has no real wall time (boot is gated at at=0), so the deadline would anchor at 0 + ${config.deadline.ms}ms and its $resilience:deadline Sub would fire IMMEDIATELY (max(0, atMs - now) === 0), failing the boot call instantly. Move the boot effect out of base.init and into a boot Msg dispatched after run() (where the triggering Msg carries a real at via config.at), so the deadline anchors at a real instant. (Boot effects belong in a boot Msg, not init Cmds.)`
563
+ );
564
+ }
565
+ const callKey = keyOf(cmd);
566
+ const [nextSlice, runCmds] = rc.attempt(resilience, callKey, cmd, 0);
567
+ resilience = nextSlice;
568
+ initCmds.push(...renameRunCmds(runCmds));
569
+ }
570
+ const model = { base: base0, $resilience: resilience };
571
+ return [model, initCmds];
572
+ },
573
+ update,
574
+ subscriptions,
575
+ subscribe: subscribeMap,
576
+ interpret,
577
+ // The base's `Cmd.define` list rides through so `run`'s interpret edge
578
+ // still parses / stamps the base's NON-target settled Msgs behind the
579
+ // wrap; the target's settle through the carrier above (#66).
580
+ ...base.cmds ? { cmds: base.cmds } : {}
581
+ };
582
+ }
583
+ var telemetryEmit = Cmd.define("$telemetry:emit", {
584
+ input: z.object({ event: z.custom() }),
585
+ ok: z.void(),
586
+ err: [],
587
+ requirements: Cmd.requirements()
588
+ });
589
+ function withTelemetry(base, config = {}) {
590
+ const project = config.event;
591
+ const msgKeys = msgKeysOf(base);
592
+ const update = {};
593
+ for (const key of msgKeys) {
594
+ update[key] = (state, msg) => {
595
+ const [nextBase, baseCmds] = applyCell(base, state.base, msg);
596
+ const $telemetry = { seq: state.$telemetry.seq + 1 };
597
+ const next = { base: nextBase, $telemetry };
598
+ const event = project ? project(msg, state, next) : { seq: $telemetry.seq, msgType: msg.type };
599
+ const emit = telemetryEmit({ event });
600
+ return [next, [...baseCmds, emit]];
601
+ };
602
+ }
603
+ const baseInterpret = base.interpret ?? {};
604
+ if (Object.hasOwn(baseInterpret, "$telemetry:emit")) {
605
+ throw new Error(
606
+ 'withTelemetry: the base machine declares a reserved "$telemetry:emit" interpret handler \u2014 the wrapper owns the "$telemetry:" Cmd namespace. Rename the base handler.'
607
+ );
608
+ }
609
+ const interpret = {
610
+ ...baseInterpret,
611
+ // OBSERVE-ONLY at the boundary: the sink is fire-and-forget. The runtime
612
+ // `await`s every interpret handler in its dispatch loop, so awaiting the
613
+ // sink here would let a SLOW sink backpressure the wrapped machine (its
614
+ // next dispatch waits) and a FAILING sink crash dispatch (the throw would
615
+ // propagate out of the transition). Both violate the contract: telemetry
616
+ // must never affect base behavior OR latency. So we DO NOT await — we hand
617
+ // the event to the sink, normalize its result to a Promise, swallow any
618
+ // rejection/throw, and return immediately. The handler resolves in the same
619
+ // microtask the dispatch loop reaches it; the machine never waits on the
620
+ // sink, and a rejected sink can never become an unhandled rejection.
621
+ "$telemetry:emit": (cmd, ctx) => {
622
+ const event = cmd.event.at === void 0 && ctx.clock !== void 0 ? { ...cmd.event, at: ctx.clock() } : cmd.event;
623
+ try {
624
+ Promise.resolve(ctx.telemetrySink(event)).catch(() => {
625
+ });
626
+ } catch {
627
+ }
628
+ }
629
+ };
630
+ const baseSubscriptions = base.subscriptions;
631
+ const baseSubscribe = base.subscribe;
632
+ return {
633
+ init: (loaded, ctx) => {
634
+ if (loaded !== null) {
635
+ return [loaded, []];
636
+ }
637
+ const [base0, cmds] = base.init(null, ctx);
638
+ const model = { base: base0, $telemetry: { seq: 0 } };
639
+ return [model, cmds];
640
+ },
641
+ update,
642
+ // Subs merge to the base's, verbatim — telemetry owns no timers. The base
643
+ // subscribes against its own nested slice.
644
+ ...baseSubscriptions ? {
645
+ subscriptions: (state) => baseSubscriptions(state.base)
646
+ } : {},
647
+ ...baseSubscribe ? { subscribe: baseSubscribe } : {},
648
+ interpret,
649
+ // The base's `Cmd.define` list rides through so `run`'s interpret edge
650
+ // still parses / stamps the base's settled Msgs behind the wrap (#66).
651
+ ...base.cmds ? { cmds: base.cmds } : {}
652
+ };
653
+ }
654
+
655
+ export { RetryExhaustedError, createAuthedCall, createTokenRefresh, deadlineDecision, deadlineExceededMsg, initTokenRefresh, liftAuthed, refreshToken, refreshTokenCmd, resilienceRunCmdDef, retryToSuccess, telemetryEmit, tokenRefreshFailedMsg, tokenRefreshedMsg, withDeadline, withResilience, withTelemetry };
656
+ //# sourceMappingURL=index.js.map
657
+ //# sourceMappingURL=index.js.map