@demlik/tea 0.13.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 (372) hide show
  1. package/README.md +11 -9
  2. package/dist/agent/index.d.ts +637 -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-RH5EFRVJ.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-O4MVQTEJ.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-DMYGQB4O.js → chunk-HYDWG35Q.js} +23 -6
  19. package/dist/chunk-HYDWG35Q.js.map +1 -0
  20. package/dist/{chunk-YUXP55T2.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-Co0LWkIA.d.ts → core-CTzMJ82M.d.ts} +72 -23
  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 +42 -29
  43. package/dist/do/index.js +36 -25
  44. package/dist/do/index.js.map +1 -1
  45. package/dist/{durable-effects-C6uwzjb5.d.ts → durable-effects-B0-qGQDy.d.ts} +2 -2
  46. package/dist/extension/index.d.ts +300 -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 -12
  55. package/dist/{fan-out/index.d.ts → index-6A7dB8f6.d.ts} +7 -9
  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 -78
  61. package/dist/{monitored-run/index.d.ts → index-NjrT3fL2.d.ts} +37 -13
  62. package/dist/{recorder/index.d.ts → index-TvRb1KVf.d.ts} +4 -7
  63. package/dist/{deadline/index.d.ts → index-q0hXFeZ0.d.ts} +155 -9
  64. package/dist/index.d.ts +711 -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 +1 -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 +18 -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 +104 -6
  77. package/dist/node/index.js +132 -9
  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 +4 -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 +247 -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 -5
  88. package/dist/persistence/index.js +6 -0
  89. package/dist/react/index.d.ts +2 -2
  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 +2 -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 +143 -12
  102. package/dist/{throttled-input → timing}/index.js +57 -12
  103. package/dist/timing/index.js.map +1 -0
  104. package/dist/{types-XS_miRnB.d.ts → types-DP3f5NIl.d.ts} +1 -1
  105. package/dist/work-queue/index.d.ts +130 -54
  106. package/dist/work-queue/index.js +3 -2
  107. package/dist/work-queue/index.js.map +1 -1
  108. package/package.json +45 -218
  109. package/dist/authed-call/index.d.ts +0 -120
  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 -101
  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 -152
  117. package/dist/cache/index.js +0 -8
  118. package/dist/chart/index.d.ts +0 -218
  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 -86
  122. package/dist/chart/inspect/index.js +0 -5
  123. package/dist/chart/inspect/react.d.ts +0 -113
  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 -362
  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 -84
  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 -117
  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-3I52QZZ5.js +0 -519
  193. package/dist/chunk-3I52QZZ5.js.map +0 -1
  194. package/dist/chunk-3ZAFFRRB.js +0 -457
  195. package/dist/chunk-3ZAFFRRB.js.map +0 -1
  196. package/dist/chunk-4EQZ76JC.js +0 -33
  197. package/dist/chunk-4EQZ76JC.js.map +0 -1
  198. package/dist/chunk-4KLG43GY.js +0 -223
  199. package/dist/chunk-4KLG43GY.js.map +0 -1
  200. package/dist/chunk-7FRZ2CT2.js +0 -424
  201. package/dist/chunk-7FRZ2CT2.js.map +0 -1
  202. package/dist/chunk-AZZLE7XR.js +0 -62
  203. package/dist/chunk-AZZLE7XR.js.map +0 -1
  204. package/dist/chunk-BYQUGDD3.js +0 -16
  205. package/dist/chunk-BYQUGDD3.js.map +0 -1
  206. package/dist/chunk-CIQG5L42.js +0 -685
  207. package/dist/chunk-CIQG5L42.js.map +0 -1
  208. package/dist/chunk-CLM6ERNO.js +0 -61
  209. package/dist/chunk-CLM6ERNO.js.map +0 -1
  210. package/dist/chunk-COS5MSTO.js +0 -88
  211. package/dist/chunk-COS5MSTO.js.map +0 -1
  212. package/dist/chunk-CRPZJVD2.js +0 -71
  213. package/dist/chunk-CRPZJVD2.js.map +0 -1
  214. package/dist/chunk-D62FDQKE.js +0 -53
  215. package/dist/chunk-D62FDQKE.js.map +0 -1
  216. package/dist/chunk-D736QUGF.js.map +0 -1
  217. package/dist/chunk-DGE4PV4A.js +0 -26
  218. package/dist/chunk-DGE4PV4A.js.map +0 -1
  219. package/dist/chunk-DMYGQB4O.js.map +0 -1
  220. package/dist/chunk-EWJP3YYP.js.map +0 -1
  221. package/dist/chunk-FV3Z5MBE.js.map +0 -1
  222. package/dist/chunk-HCEVHFJ7.js +0 -54
  223. package/dist/chunk-HCEVHFJ7.js.map +0 -1
  224. package/dist/chunk-J6527VRQ.js.map +0 -1
  225. package/dist/chunk-JELSZN25.js +0 -47
  226. package/dist/chunk-JELSZN25.js.map +0 -1
  227. package/dist/chunk-K575PT4S.js.map +0 -1
  228. package/dist/chunk-L57ZOT5K.js +0 -184
  229. package/dist/chunk-L57ZOT5K.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-NR7BU22N.js +0 -758
  234. package/dist/chunk-NR7BU22N.js.map +0 -1
  235. package/dist/chunk-O4MVQTEJ.js.map +0 -1
  236. package/dist/chunk-OOYD44JI.js +0 -317
  237. package/dist/chunk-OOYD44JI.js.map +0 -1
  238. package/dist/chunk-Q2UM7BXU.js.map +0 -1
  239. package/dist/chunk-RH5EFRVJ.js.map +0 -1
  240. package/dist/chunk-S2EGRPCM.js +0 -47
  241. package/dist/chunk-S2EGRPCM.js.map +0 -1
  242. package/dist/chunk-SINXE47Y.js +0 -55
  243. package/dist/chunk-SINXE47Y.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-VYFAZN3F.js +0 -372
  249. package/dist/chunk-VYFAZN3F.js.map +0 -1
  250. package/dist/chunk-WRAA7GVZ.js +0 -209
  251. package/dist/chunk-WRAA7GVZ.js.map +0 -1
  252. package/dist/chunk-XGELA764.js +0 -163
  253. package/dist/chunk-XGELA764.js.map +0 -1
  254. package/dist/chunk-YUXP55T2.js.map +0 -1
  255. package/dist/chunk-YWIKDKHY.js +0 -307
  256. package/dist/chunk-YWIKDKHY.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-ZSUUOEPL.js +0 -731
  260. package/dist/chunk-ZSUUOEPL.js.map +0 -1
  261. package/dist/chunk-ZVJZ72HY.js.map +0 -1
  262. package/dist/circuit-breaker/index.d.ts +0 -197
  263. package/dist/circuit-breaker/index.js +0 -3
  264. package/dist/circuit-breaker/index.js.map +0 -1
  265. package/dist/deadline/index.js +0 -6
  266. package/dist/deadline/index.js.map +0 -1
  267. package/dist/debounce/index.js +0 -3
  268. package/dist/debounce/index.js.map +0 -1
  269. package/dist/extension/react.d.ts +0 -121
  270. package/dist/extension/react.js +0 -75
  271. package/dist/extension/react.js.map +0 -1
  272. package/dist/extension/subs/index.d.ts +0 -45
  273. package/dist/extension/subs/index.js +0 -80
  274. package/dist/extension/subs/index.js.map +0 -1
  275. package/dist/extension/test-utils.d.ts +0 -128
  276. package/dist/extension/test-utils.js +0 -277
  277. package/dist/extension/test-utils.js.map +0 -1
  278. package/dist/fan-out/index.js +0 -5
  279. package/dist/fan-out/index.js.map +0 -1
  280. package/dist/fold-BJPdjc9w.d.ts +0 -435
  281. package/dist/graph-B3L5e0N1.d.ts +0 -923
  282. package/dist/idempotency/adapter.d.ts +0 -62
  283. package/dist/idempotency/adapter.js +0 -4
  284. package/dist/idempotency/adapter.js.map +0 -1
  285. package/dist/idempotent-intake/index.d.ts +0 -188
  286. package/dist/idempotent-intake/index.js +0 -7
  287. package/dist/idempotent-intake/index.js.map +0 -1
  288. package/dist/journal/index.d.ts +0 -373
  289. package/dist/journal/index.js +0 -3
  290. package/dist/journal/index.js.map +0 -1
  291. package/dist/llm-call/index.d.ts +0 -311
  292. package/dist/llm-call/index.js +0 -16
  293. package/dist/llm-call/index.js.map +0 -1
  294. package/dist/machine-BtFWQmmq.d.ts +0 -804
  295. package/dist/monitored-run/index.js +0 -10
  296. package/dist/monitored-run/index.js.map +0 -1
  297. package/dist/paginated-walk/index.d.ts +0 -235
  298. package/dist/paginated-walk/index.js +0 -16
  299. package/dist/paginated-walk/index.js.map +0 -1
  300. package/dist/paginator/index.js +0 -3
  301. package/dist/paginator/index.js.map +0 -1
  302. package/dist/pbt/arbitraries/index.d.ts +0 -136
  303. package/dist/pbt/arbitraries/index.js +0 -3
  304. package/dist/pbt/arbitraries/index.js.map +0 -1
  305. package/dist/pbt/runners/index.d.ts +0 -118
  306. package/dist/pbt/runners/index.js +0 -5
  307. package/dist/pbt/runners/index.js.map +0 -1
  308. package/dist/poller/index.d.ts +0 -352
  309. package/dist/poller/index.js +0 -115
  310. package/dist/poller/index.js.map +0 -1
  311. package/dist/prediction/index.d.ts +0 -131
  312. package/dist/prediction/index.js +0 -4
  313. package/dist/prediction/index.js.map +0 -1
  314. package/dist/protocol-B5YmJr0d.d.ts +0 -45
  315. package/dist/pure/index.d.ts +0 -3
  316. package/dist/pure/index.js +0 -4
  317. package/dist/pure/index.js.map +0 -1
  318. package/dist/rate-limit/index.d.ts +0 -115
  319. package/dist/rate-limit/index.js +0 -3
  320. package/dist/rate-limit/index.js.map +0 -1
  321. package/dist/reconciler/index.d.ts +0 -193
  322. package/dist/reconciler/index.js +0 -164
  323. package/dist/reconciler/index.js.map +0 -1
  324. package/dist/recorder/index.js +0 -3
  325. package/dist/recorder/index.js.map +0 -1
  326. package/dist/reducer-4GNR6b8B.d.ts +0 -447
  327. package/dist/resilient-call/index.d.ts +0 -320
  328. package/dist/resilient-call/index.js +0 -14
  329. package/dist/resilient-call/index.js.map +0 -1
  330. package/dist/retry-to-success/index.d.ts +0 -109
  331. package/dist/retry-to-success/index.js +0 -37
  332. package/dist/retry-to-success/index.js.map +0 -1
  333. package/dist/run-pAcmBpah.d.ts +0 -713
  334. package/dist/runtime-types-CNLmhWif.d.ts +0 -517
  335. package/dist/saga/index.d.ts +0 -241
  336. package/dist/saga/index.js +0 -150
  337. package/dist/saga/index.js.map +0 -1
  338. package/dist/samples-B3My5oh2.d.ts +0 -59
  339. package/dist/snapshot/index.js +0 -5
  340. package/dist/snapshot/index.js.map +0 -1
  341. package/dist/subs/index.d.ts +0 -472
  342. package/dist/subs/index.js +0 -7
  343. package/dist/subs/index.js.map +0 -1
  344. package/dist/throttle/index.d.ts +0 -134
  345. package/dist/throttle/index.js +0 -3
  346. package/dist/throttle/index.js.map +0 -1
  347. package/dist/throttled-input/index.js.map +0 -1
  348. package/dist/token-refresh/index.d.ts +0 -216
  349. package/dist/token-refresh/index.js +0 -6
  350. package/dist/token-refresh/index.js.map +0 -1
  351. package/dist/trace-replay/index.js +0 -6
  352. package/dist/trace-replay/index.js.map +0 -1
  353. package/dist/with-deadline/index.d.ts +0 -197
  354. package/dist/with-deadline/index.js +0 -111
  355. package/dist/with-deadline/index.js.map +0 -1
  356. package/dist/with-resilience/index.d.ts +0 -225
  357. package/dist/with-resilience/index.js +0 -240
  358. package/dist/with-resilience/index.js.map +0 -1
  359. package/dist/with-telemetry/index.d.ts +0 -150
  360. package/dist/with-telemetry/index.js +0 -70
  361. package/dist/with-telemetry/index.js.map +0 -1
  362. package/dist/work-queue/adapter.d.ts +0 -84
  363. package/dist/work-queue/adapter.js +0 -4
  364. package/dist/work-queue/adapter.js.map +0 -1
  365. package/dist/work-queue/ops.d.ts +0 -71
  366. package/dist/work-queue/ops.js +0 -3
  367. package/dist/work-queue/ops.js.map +0 -1
  368. package/dist/workflow/index.d.ts +0 -485
  369. package/dist/workflow/index.js +0 -244
  370. package/dist/workflow/index.js.map +0 -1
  371. /package/dist/{cache → paginate}/index.js.map +0 -0
  372. /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