@graphrefly/graphrefly 0.42.0 → 0.44.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 (284) hide show
  1. package/dist/{cascading-CH-_VwG9.d.cts → cascading-BglDkMdX.d.cts} +2 -2
  2. package/dist/{cascading-OgKQZjsa.d.ts → cascading-MFgxu7Yo.d.ts} +2 -2
  3. package/dist/chunk-2T7U5EU6.js +1 -0
  4. package/dist/chunk-5M4CCMMD.js +45 -0
  5. package/dist/{chunk-YGL7FPVQ.js → chunk-5XJ6B66J.js} +1 -1
  6. package/dist/{chunk-NWXQIOIB.js → chunk-6X7AFUJV.js} +1 -1
  7. package/dist/chunk-7K6PWTDQ.js +1 -0
  8. package/dist/{chunk-D27JNOLZ.js → chunk-7LIAPXJB.js} +1 -1
  9. package/dist/{chunk-CLD3F4R5.js → chunk-7WPU3UHQ.js} +1 -1
  10. package/dist/{chunk-NNKJUORL.js → chunk-A5WCQ5NO.js} +1 -1
  11. package/dist/chunk-APPIWSGD.js +84 -0
  12. package/dist/{chunk-TZQPPQEQ.js → chunk-BEZWM2SY.js} +1 -1
  13. package/dist/{chunk-5QRRKBUT.js → chunk-CB676TKJ.js} +1 -1
  14. package/dist/{chunk-KT5DTRBP.js → chunk-CE6TI2TL.js} +1 -1
  15. package/dist/{chunk-6YFZMUMR.js → chunk-CLVB32RD.js} +1 -1
  16. package/dist/{chunk-2K5RXLAH.js → chunk-CRVT7D2P.js} +1 -1
  17. package/dist/chunk-D7GPHKFH.js +1 -0
  18. package/dist/{chunk-FUZ6S2DY.js → chunk-DHRX7JX4.js} +1 -1
  19. package/dist/chunk-FZMYDOWV.js +1 -0
  20. package/dist/{chunk-35JTVPOX.js → chunk-GHBWHMRZ.js} +1 -1
  21. package/dist/{chunk-KGKJCHEK.js → chunk-GLERH466.js} +1 -1
  22. package/dist/{chunk-CISGGAIF.js → chunk-HIDYF36O.js} +1 -1
  23. package/dist/chunk-HITNVN6B.js +3 -0
  24. package/dist/{chunk-7ARY3Y3T.js → chunk-HY4DJBA7.js} +1 -1
  25. package/dist/chunk-KZIEYVXN.js +1 -0
  26. package/dist/{chunk-IZM3UEH3.js → chunk-N4MQX6JU.js} +1 -1
  27. package/dist/{chunk-FDZAZNRO.js → chunk-N7FHEL4D.js} +1 -1
  28. package/dist/chunk-NTEURFZH.js +1 -0
  29. package/dist/{chunk-4QH6VJF4.js → chunk-OIVP6KFV.js} +1 -1
  30. package/dist/{chunk-KCACBSJH.js → chunk-OPHBU3LG.js} +1 -1
  31. package/dist/{chunk-Q7QQQA3I.js → chunk-OYQOZP2F.js} +1 -1
  32. package/dist/{chunk-7B7ELAT2.js → chunk-PTZK576G.js} +1 -1
  33. package/dist/{chunk-DEJTNNQC.js → chunk-ST7UXLWR.js} +1 -1
  34. package/dist/chunk-SVY7VUYU.js +1 -0
  35. package/dist/{chunk-WHMUB5QB.js → chunk-TK3NWWD4.js} +1 -1
  36. package/dist/chunk-UNGSTR4X.js +61 -0
  37. package/dist/{chunk-VRALOYRD.js → chunk-VV4N5P64.js} +1 -1
  38. package/dist/chunk-W3I423PS.js +1 -0
  39. package/dist/{chunk-HZKW2AAB.js → chunk-WJR24TAG.js} +1 -1
  40. package/dist/{chunk-F3IGTWCQ.js → chunk-XTGKMHSW.js} +1 -1
  41. package/dist/{chunk-LDQ3IUIP.js → chunk-YBB7ZGTY.js} +1 -1
  42. package/dist/{chunk-G5VBJ5K6.js → chunk-Z4NPUARF.js} +1 -1
  43. package/dist/{chunk-KRH66M4O.js → chunk-ZGNQRPDT.js} +1 -1
  44. package/dist/{chunk-AGNM6RS6.js → chunk-ZKPSFFKU.js} +1 -1
  45. package/dist/{chunk-KY2LMAXU.js → chunk-ZLV5SQSX.js} +1 -1
  46. package/dist/compat/index.cjs +5 -5
  47. package/dist/compat/index.d.cts +16 -16
  48. package/dist/compat/index.d.ts +16 -16
  49. package/dist/compat/index.js +1 -1
  50. package/dist/compat/jotai/index.cjs +1 -1
  51. package/dist/compat/jotai/index.d.cts +2 -2
  52. package/dist/compat/jotai/index.d.ts +2 -2
  53. package/dist/compat/jotai/index.js +1 -1
  54. package/dist/compat/nanostores/index.cjs +1 -1
  55. package/dist/compat/nanostores/index.d.cts +2 -2
  56. package/dist/compat/nanostores/index.d.ts +2 -2
  57. package/dist/compat/nanostores/index.js +1 -1
  58. package/dist/compat/nestjs/index.cjs +5 -5
  59. package/dist/compat/nestjs/index.d.cts +8 -8
  60. package/dist/compat/nestjs/index.d.ts +8 -8
  61. package/dist/compat/nestjs/index.js +1 -1
  62. package/dist/compat/react/index.d.cts +2 -2
  63. package/dist/compat/react/index.d.ts +2 -2
  64. package/dist/compat/solid/index.d.cts +2 -2
  65. package/dist/compat/solid/index.d.ts +2 -2
  66. package/dist/compat/svelte/index.d.cts +2 -2
  67. package/dist/compat/svelte/index.d.ts +2 -2
  68. package/dist/compat/vue/index.d.cts +2 -2
  69. package/dist/compat/vue/index.d.ts +2 -2
  70. package/dist/compat/zustand/index.cjs +3 -3
  71. package/dist/compat/zustand/index.d.cts +4 -4
  72. package/dist/compat/zustand/index.d.ts +4 -4
  73. package/dist/compat/zustand/index.js +1 -1
  74. package/dist/core/index.cjs +1 -1
  75. package/dist/core/index.d.cts +3 -4
  76. package/dist/core/index.d.ts +3 -4
  77. package/dist/core/index.js +1 -1
  78. package/dist/{decay-CdEBmDIs.d.ts → decay-BvOWTZ00.d.ts} +2 -2
  79. package/dist/{decay-2ZukgQ4o.d.cts → decay-CFlLvXUT.d.cts} +2 -2
  80. package/dist/extra/browser.cjs +1 -1
  81. package/dist/extra/browser.d.cts +1 -1
  82. package/dist/extra/browser.d.ts +1 -1
  83. package/dist/extra/browser.js +1 -1
  84. package/dist/extra/index.cjs +15 -15
  85. package/dist/extra/index.d.cts +10 -10
  86. package/dist/extra/index.d.ts +10 -10
  87. package/dist/extra/index.js +1 -1
  88. package/dist/extra/node.cjs +2 -2
  89. package/dist/extra/node.d.cts +1 -1
  90. package/dist/extra/node.d.ts +1 -1
  91. package/dist/extra/node.js +1 -1
  92. package/dist/extra/operators.cjs +1 -1
  93. package/dist/extra/operators.d.cts +9 -1
  94. package/dist/extra/operators.d.ts +9 -1
  95. package/dist/extra/operators.js +1 -1
  96. package/dist/extra/reactive.cjs +1 -1
  97. package/dist/extra/reactive.d.cts +3 -3
  98. package/dist/extra/reactive.d.ts +3 -3
  99. package/dist/extra/reactive.js +1 -1
  100. package/dist/extra/render/index.d.cts +3 -3
  101. package/dist/extra/render/index.d.ts +3 -3
  102. package/dist/extra/sources.cjs +3 -3
  103. package/dist/extra/sources.d.cts +1 -1
  104. package/dist/extra/sources.d.ts +1 -1
  105. package/dist/extra/sources.js +1 -1
  106. package/dist/extra/storage-browser.cjs +1 -1
  107. package/dist/extra/storage-browser.d.cts +1 -1
  108. package/dist/extra/storage-browser.d.ts +1 -1
  109. package/dist/extra/storage-browser.js +1 -1
  110. package/dist/{fallback-Ctlj2tMY.d.cts → fallback-74oxi34l.d.cts} +1 -1
  111. package/dist/{fallback-CqYVLL6X.d.ts → fallback-DUyyBTBK.d.ts} +1 -1
  112. package/dist/graph/index.cjs +7 -7
  113. package/dist/graph/index.d.cts +5 -5
  114. package/dist/graph/index.d.ts +5 -5
  115. package/dist/graph/index.js +1 -1
  116. package/dist/{graph-C4SHb3Ly.d.cts → graph-CWvEUQAq.d.cts} +196 -3
  117. package/dist/{graph-7VguS7a4.d.ts → graph-D9LFnda9.d.ts} +196 -3
  118. package/dist/{index-LIpQQE9f.d.cts → index-5k1T6jl0.d.cts} +9 -9
  119. package/dist/{index-CPNSy-U0.d.cts → index-9770hRuQ.d.cts} +23 -4
  120. package/dist/{index-CEMx8n40.d.cts → index-B-_tFaqV.d.cts} +4 -4
  121. package/dist/{index-2B7u2pVn.d.cts → index-B17QddL1.d.cts} +4 -4
  122. package/dist/{index-B-i4_g3k.d.ts → index-B1F8Enjf.d.ts} +61 -8
  123. package/dist/{index-DBevwHj_.d.ts → index-B5S8ULbU.d.ts} +3 -3
  124. package/dist/{index-Dgs8zcj7.d.ts → index-B8YnZpIR.d.ts} +2 -2
  125. package/dist/{index-B3OTH1dV.d.ts → index-BHskSB8v.d.ts} +28 -17
  126. package/dist/{index-sl4NyzQx.d.cts → index-BIYAkbAi.d.cts} +1 -1
  127. package/dist/{index-C9kSENB4.d.cts → index-BQSKmbuG.d.cts} +1 -1
  128. package/dist/{index-tJoTcnHh.d.cts → index-BaQaY_IQ.d.cts} +2 -2
  129. package/dist/{index-CJK1JkYy.d.ts → index-BmZXHqkE.d.ts} +1 -1
  130. package/dist/{index-pT8sCpOJ.d.ts → index-BoJ5JHxI.d.ts} +12 -3
  131. package/dist/{index-BeT2r7sk.d.ts → index-BocU7pqs.d.ts} +23 -4
  132. package/dist/{index-ChOyVLKm.d.cts → index-BrPrLl4e.d.cts} +1 -1
  133. package/dist/{index-D-Xs74HZ.d.cts → index-BxNs2HB9.d.cts} +33 -9
  134. package/dist/{index-Bf7eqeSF.d.ts → index-Byu-OpX_.d.ts} +2 -2
  135. package/dist/{index-BoLv_OfD.d.cts → index-C1T3d7V-.d.cts} +61 -8
  136. package/dist/{index-BTQtTb_H.d.cts → index-C5ri2Axc.d.cts} +3 -3
  137. package/dist/{index-z96luz5O.d.cts → index-C5stwKcw.d.cts} +1 -1
  138. package/dist/{index-CZmcDtFn.d.ts → index-C9l6OEBL.d.ts} +1 -1
  139. package/dist/{index-CCq87F7t.d.ts → index-CBBLl_rc.d.ts} +1 -1
  140. package/dist/{index-D6egPFAL.d.ts → index-CBGUK09R.d.ts} +4 -4
  141. package/dist/{index-C0-Jv1kP.d.cts → index-CC-AvFTy.d.cts} +12 -3
  142. package/dist/{index-DQo8xBgd.d.ts → index-CJF1URuX.d.ts} +9 -9
  143. package/dist/{index-BJX94aud.d.cts → index-CK29LV56.d.cts} +1 -1
  144. package/dist/{index-BP8a88zx.d.ts → index-CMh5Rz1y.d.ts} +4 -4
  145. package/dist/{index-CvrqGfNS.d.ts → index-CPQlGA29.d.ts} +1 -1
  146. package/dist/{index-Bbkgpt5t.d.ts → index-CR8QpwX8.d.ts} +49 -24
  147. package/dist/{index-Du7u1lSf.d.cts → index-CS0LTlB8.d.cts} +4 -4
  148. package/dist/{index-Bc41FuHp.d.cts → index-CSOmP7xT.d.cts} +2 -2
  149. package/dist/{index-BsT7F2et.d.ts → index-CYq8vAyV.d.ts} +2 -2
  150. package/dist/{index-Bn4zHYLj.d.ts → index-CZ3r5Rxp.d.ts} +4 -4
  151. package/dist/{index-HoU88d5U.d.cts → index-CasX6Pfq.d.cts} +68 -9
  152. package/dist/{index-BG0BN3PB.d.ts → index-CdAlHFEt.d.ts} +1 -1
  153. package/dist/{index-CpyNFqkB.d.ts → index-CdTelp1M.d.ts} +8 -4
  154. package/dist/{index-D8l8hNXn.d.ts → index-CeFiHtAg.d.ts} +4 -4
  155. package/dist/{index-DmAgG5CI.d.cts → index-Cj3WohTd.d.cts} +8 -4
  156. package/dist/{index-BtAsBp8K.d.cts → index-Climxqsu.d.cts} +4 -4
  157. package/dist/{index-CJIuLu2f.d.cts → index-Co7uli2l.d.cts} +28 -17
  158. package/dist/{index-DIOoAZUX.d.ts → index-CviRnE4K.d.ts} +1 -1
  159. package/dist/{index-Dhc7a7Xo.d.cts → index-Cwv0KWcU.d.cts} +2 -2
  160. package/dist/{index-Dn-wI9g4.d.ts → index-CzLVrjxn.d.ts} +2 -2
  161. package/dist/{index-DO9XxMzS.d.ts → index-D0aciIex.d.cts} +3 -18
  162. package/dist/{index-4Uz-e_fL.d.ts → index-DHen9Klo.d.ts} +33 -9
  163. package/dist/{index-3NmAfcH0.d.cts → index-DV_1YuVk.d.cts} +40 -8
  164. package/dist/{index-BdGtBX-X.d.cts → index-Dc4AYqrJ.d.cts} +3 -3
  165. package/dist/{index-Dmqp7KjD.d.ts → index-Dgl1HpPn.d.ts} +1 -1
  166. package/dist/{index-CJQm0g38.d.ts → index-DisjX8a-.d.ts} +40 -8
  167. package/dist/{index-B11anra4.d.cts → index-UPSiS-X7.d.cts} +49 -24
  168. package/dist/{index-DBIqYS43.d.cts → index-Yq60JP3s.d.ts} +3 -18
  169. package/dist/{index-f5IivDUX.d.cts → index-ZVQhLa2i.d.cts} +1 -1
  170. package/dist/{index-hHcaFlJX.d.cts → index-_6ODbuOu.d.cts} +1 -1
  171. package/dist/{index-BVpm6noz.d.cts → index-hcDJ8PSI.d.cts} +1 -1
  172. package/dist/{index-DBHK8O6H.d.ts → index-nozs3fFC.d.ts} +3 -3
  173. package/dist/{index-BUYXac2c.d.ts → index-p09KSrTN.d.ts} +68 -9
  174. package/dist/{index-C7O6r5fV.d.ts → index-sqkqlb1p.d.ts} +1 -1
  175. package/dist/{index-CZjOhcBy.d.cts → index-tRCxuAXF.d.cts} +2 -2
  176. package/dist/index.cjs +48 -48
  177. package/dist/index.d.cts +42 -43
  178. package/dist/index.d.ts +42 -43
  179. package/dist/index.js +1 -1
  180. package/dist/{node-ClS5yC-B.d.cts → node-kK3CvTrR.d.cts} +1 -1
  181. package/dist/{node-ClS5yC-B.d.ts → node-kK3CvTrR.d.ts} +1 -1
  182. package/dist/{observable-BsBzUrcI.d.ts → observable-DWjNfLvC.d.ts} +1 -1
  183. package/dist/{observable-DLGPPtb8.d.cts → observable-e3eiPPFy.d.cts} +1 -1
  184. package/dist/patterns/ai/browser.cjs +5 -5
  185. package/dist/patterns/ai/browser.d.cts +4 -4
  186. package/dist/patterns/ai/browser.d.ts +4 -4
  187. package/dist/patterns/ai/browser.js +1 -1
  188. package/dist/patterns/ai/index.cjs +16 -16
  189. package/dist/patterns/ai/index.d.cts +16 -17
  190. package/dist/patterns/ai/index.d.ts +16 -17
  191. package/dist/patterns/ai/index.js +1 -1
  192. package/dist/patterns/ai/node.cjs +1 -1
  193. package/dist/patterns/ai/node.d.cts +4 -4
  194. package/dist/patterns/ai/node.d.ts +4 -4
  195. package/dist/patterns/ai/node.js +1 -1
  196. package/dist/patterns/cqrs/index.cjs +3 -3
  197. package/dist/patterns/cqrs/index.d.cts +6 -6
  198. package/dist/patterns/cqrs/index.d.ts +6 -6
  199. package/dist/patterns/cqrs/index.js +1 -1
  200. package/dist/patterns/demo-shell/index.cjs +5 -5
  201. package/dist/patterns/demo-shell/index.d.cts +5 -5
  202. package/dist/patterns/demo-shell/index.d.ts +5 -5
  203. package/dist/patterns/demo-shell/index.js +1 -1
  204. package/dist/patterns/domain-templates/index.cjs +3 -3
  205. package/dist/patterns/domain-templates/index.d.cts +4 -4
  206. package/dist/patterns/domain-templates/index.d.ts +4 -4
  207. package/dist/patterns/domain-templates/index.js +1 -1
  208. package/dist/patterns/graphspec/index.cjs +16 -16
  209. package/dist/patterns/graphspec/index.d.cts +5 -5
  210. package/dist/patterns/graphspec/index.d.ts +5 -5
  211. package/dist/patterns/graphspec/index.js +1 -1
  212. package/dist/patterns/harness/index.cjs +9 -9
  213. package/dist/patterns/harness/index.d.cts +10 -11
  214. package/dist/patterns/harness/index.d.ts +10 -11
  215. package/dist/patterns/harness/index.js +1 -1
  216. package/dist/patterns/inspect/index.cjs +3 -3
  217. package/dist/patterns/inspect/index.d.cts +7 -7
  218. package/dist/patterns/inspect/index.d.ts +7 -7
  219. package/dist/patterns/inspect/index.js +1 -1
  220. package/dist/patterns/job-queue/index.cjs +3 -3
  221. package/dist/patterns/job-queue/index.d.cts +6 -6
  222. package/dist/patterns/job-queue/index.d.ts +6 -6
  223. package/dist/patterns/job-queue/index.js +1 -1
  224. package/dist/patterns/memory/index.cjs +3 -3
  225. package/dist/patterns/memory/index.d.cts +6 -6
  226. package/dist/patterns/memory/index.d.ts +6 -6
  227. package/dist/patterns/memory/index.js +1 -1
  228. package/dist/patterns/messaging/index.cjs +3 -3
  229. package/dist/patterns/messaging/index.d.cts +5 -5
  230. package/dist/patterns/messaging/index.d.ts +5 -5
  231. package/dist/patterns/messaging/index.js +1 -1
  232. package/dist/patterns/orchestration/index.cjs +3 -3
  233. package/dist/patterns/orchestration/index.d.cts +6 -7
  234. package/dist/patterns/orchestration/index.d.ts +6 -7
  235. package/dist/patterns/orchestration/index.js +1 -1
  236. package/dist/patterns/process/index.cjs +3 -1
  237. package/dist/patterns/process/index.d.cts +7 -7
  238. package/dist/patterns/process/index.d.ts +7 -7
  239. package/dist/patterns/process/index.js +1 -1
  240. package/dist/patterns/reactive-layout/index.cjs +4 -4
  241. package/dist/patterns/reactive-layout/index.d.cts +5 -5
  242. package/dist/patterns/reactive-layout/index.d.ts +5 -5
  243. package/dist/patterns/reactive-layout/index.js +1 -1
  244. package/dist/patterns/reduction/index.cjs +3 -3
  245. package/dist/patterns/reduction/index.d.cts +4 -4
  246. package/dist/patterns/reduction/index.d.ts +4 -4
  247. package/dist/patterns/reduction/index.js +1 -1
  248. package/dist/patterns/surface/index.cjs +10 -10
  249. package/dist/patterns/surface/index.d.cts +6 -6
  250. package/dist/patterns/surface/index.d.ts +6 -6
  251. package/dist/patterns/surface/index.js +1 -1
  252. package/dist/{pipeline-graph-WBlobVhU.d.cts → pipeline-graph-CIKhynsF.d.cts} +11 -6
  253. package/dist/{pipeline-graph-v8fMvqNk.d.ts → pipeline-graph-Sgj0gCwn.d.ts} +11 -6
  254. package/dist/{reactive-layout-v7KPvxoc.d.ts → reactive-layout-DOTs9P3X.d.ts} +2 -2
  255. package/dist/{reactive-layout-Dsvob4zD.d.cts → reactive-layout-DgctbqZo.d.cts} +2 -2
  256. package/dist/{reactive-log-BezYsbA_.d.ts → reactive-log-BKALbfal.d.ts} +1 -1
  257. package/dist/{reactive-log-B00laMSQ.d.cts → reactive-log-DIGdYqQ6.d.cts} +1 -1
  258. package/dist/{reactive-map-48mnZ-nu.d.cts → reactive-map-CEFGp8TK.d.cts} +1 -1
  259. package/dist/{reactive-map-BVVPdvmi.d.ts → reactive-map-DS_SIAxv.d.ts} +1 -1
  260. package/dist/resilience-6LYQJAC5.js +1 -0
  261. package/dist/sugar-DQjFmVqb.d.cts +399 -0
  262. package/dist/sugar-fhLIE7TT.d.ts +399 -0
  263. package/dist/{topology-tree-BSdfSwMi.d.cts → topology-tree-Bcz27hpF.d.cts} +1 -1
  264. package/dist/{topology-tree-BNGvuG82.d.ts → topology-tree-xvaD0fOX.d.ts} +1 -1
  265. package/dist/{types-B1jDWVsM.d.cts → types-C0_yquda.d.cts} +1 -1
  266. package/dist/{types-DkzUUs0H.d.ts → types-CWFysE9E.d.ts} +1 -1
  267. package/package.json +1 -1
  268. package/dist/chunk-3ERTUW2J.js +0 -45
  269. package/dist/chunk-3K7HA4Y6.js +0 -1
  270. package/dist/chunk-3ZZX7M25.js +0 -1
  271. package/dist/chunk-4I45FVQS.js +0 -1
  272. package/dist/chunk-5ST42ESJ.js +0 -1
  273. package/dist/chunk-7VKFXLZQ.js +0 -84
  274. package/dist/chunk-ACMJ2ZPS.js +0 -3
  275. package/dist/chunk-AS3TV2TV.js +0 -1
  276. package/dist/chunk-LPRWATHB.js +0 -61
  277. package/dist/chunk-LYCLF26R.js +0 -1
  278. package/dist/chunk-VE5SIZEM.js +0 -1
  279. package/dist/chunk-XLQPNNIC.js +0 -1
  280. package/dist/meta-BgVAsg9j.d.ts +0 -102
  281. package/dist/meta-vE8bxW1E.d.cts +0 -102
  282. package/dist/resilience-445VFFXQ.js +0 -1
  283. package/dist/sugar-CH-2ZY90.d.ts +0 -203
  284. package/dist/sugar-DStZfUEK.d.cts +0 -203
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.js';
1
+ import { N as Node } from './node-kK3CvTrR.js';
2
2
 
3
3
  /**
4
4
  * Backoff strategies for {@link retry} (roadmap §3.1). Delays are in **nanoseconds**.
@@ -227,8 +227,8 @@ type RetryFactoryOptions<T> = RetryOptions & {
227
227
  *
228
228
  * @category extra
229
229
  */
230
- declare function retry<T>(input: Node<T>, opts?: RetryOptions): Node<T>;
231
- declare function retry<T>(input: () => Node<T>, opts?: RetryFactoryOptions<T>): Node<T>;
230
+ declare function retry<T>(input: Node<T>, opts?: NodeOrValue<RetryOptions>): Node<T>;
231
+ declare function retry<T>(input: () => Node<T>, opts?: NodeOrValue<RetryFactoryOptions<T>>): Node<T>;
232
232
  type CircuitState = "closed" | "open" | "half-open";
233
233
  /**
234
234
  * Thrown when {@link withBreaker} is configured with `onOpen: "error"` and the breaker rejects work.
@@ -275,6 +275,13 @@ interface CircuitBreaker {
275
275
  readonly failureCount: number;
276
276
  /** Manually reset to closed state, clearing all counters. */
277
277
  reset(): void;
278
+ /**
279
+ * Release the reactive-options subscription (Tier 6.5 3.2.4, 2026-04-29).
280
+ * No-op when constructed with static options. Call when retiring a
281
+ * breaker whose options came from a `Node<CircuitBreakerOptions>` to
282
+ * avoid leaking the option-Node subscription.
283
+ */
284
+ dispose(): void;
278
285
  }
279
286
  /**
280
287
  * Factory for a synchronous circuit breaker with `closed`, `open`, and `half-open` states.
@@ -282,12 +289,24 @@ interface CircuitBreaker {
282
289
  * Supports escalating cooldown via an optional {@link BackoffStrategy} — each consecutive
283
290
  * open→half-open→open cycle increments the backoff attempt.
284
291
  *
285
- * @param options - Threshold, cooldown, half-open limit, and optional clock override.
292
+ * @param options - Threshold, cooldown, half-open limit, and optional clock
293
+ * override; OR a `Node<CircuitBreakerOptions>` carrying the same shape
294
+ * reactively (Tier 6.5 3.2.4).
286
295
  * @returns {@link CircuitBreaker} instance.
287
296
  *
288
297
  * @remarks
289
298
  * **Timing:** Uses `monotonicNs()` by default (nanoseconds). Override `now` for tests.
290
299
  *
300
+ * **Reactive options (locked semantics, Tier 6.5 3.2.4, 2026-04-29).**
301
+ * When `options` is a `Node<CircuitBreakerOptions>`, the breaker
302
+ * subscribes at construction and re-reads `failureThreshold` /
303
+ * `cooldownNs` / `cooldown` / `halfOpenMax` / `now` on each DATA. **An
304
+ * option swap RESETS the breaker to `"closed"`** with all counters
305
+ * cleared — operators tuning a runaway breaker get a clean baseline.
306
+ * If retaining failure history across re-tunings matters, derive a new
307
+ * breaker per-tuning instead. Call `breaker.dispose()` when retiring to
308
+ * release the option-Node subscription.
309
+ *
291
310
  * @example
292
311
  * ```ts
293
312
  * import { circuitBreaker, exponential, NS_PER_SEC } from "@graphrefly/graphrefly-ts";
@@ -300,7 +319,7 @@ interface CircuitBreaker {
300
319
  *
301
320
  * @category extra
302
321
  */
303
- declare function circuitBreaker(options?: CircuitBreakerOptions): CircuitBreaker;
322
+ declare function circuitBreaker(options?: NodeOrValue<CircuitBreakerOptions>): CircuitBreaker;
304
323
  type WithBreakerBundle<T> = {
305
324
  node: Node<T>;
306
325
  breakerState: Node<CircuitState>;
@@ -525,7 +544,7 @@ type RateLimiterBundle<T> = {
525
544
  *
526
545
  * @category extra
527
546
  */
528
- declare function rateLimiter<T>(source: Node<T>, opts: RateLimiterOptions): RateLimiterBundle<T>;
547
+ declare function rateLimiter<T>(source: Node<T>, opts: NodeOrValue<RateLimiterOptions>): RateLimiterBundle<T>;
529
548
  type StatusValue = "pending" | "running" | "completed" | "errored";
530
549
  type WithStatusBundle<T> = {
531
550
  node: Node<T>;
@@ -557,6 +576,17 @@ type WithStatusBundle<T> = {
557
576
  * appear as edges in `describe()` if no consumer subscribes to them (per
558
577
  * COMPOSITION-GUIDE §1, push-on-subscribe semantics).
559
578
  *
579
+ * **Per-subscribe lifecycle (DF8, 2026-04-29 doc lock).** When the wrapped
580
+ * source is `resubscribable: true` and multiple consumers attach in
581
+ * sequence, each new subscription cycle re-runs the producer fn AND
582
+ * re-emits the initial `pending` + `null` companion DATAs. Downstream
583
+ * subscribers to the `status` / `error` companions see thrash:
584
+ * `pending → running → completed → pending → running …`. This is the
585
+ * intended fresh-cycle semantic (each subscription cycle reports its own
586
+ * lifecycle); consumers that need a "stable" status across cycles should
587
+ * derive a snapshot via a separate `state()` mirror rather than depending
588
+ * on the per-cycle reset.
589
+ *
560
590
  * @example
561
591
  * ```ts
562
592
  * import { withStatus, state } from "@graphrefly/graphrefly-ts";
@@ -583,6 +613,20 @@ declare class TimeoutError extends Error {
583
613
  name: string;
584
614
  constructor(ns: number);
585
615
  }
616
+ /**
617
+ * Either a literal value or a reactive Node carrying it. Mirrors
618
+ * {@link FallbackInput}'s precedent for "options that may be reactive."
619
+ *
620
+ * Used by {@link timeout} / {@link retry} / {@link rateLimiter} /
621
+ * {@link circuitBreaker} / {@link budgetGate} to accept reactive option
622
+ * configurations (Tier 6.5 3.2, 2026-04-29). Each primitive subscribes
623
+ * to the option Node via {@link resolveReactiveOption} and rebinds
624
+ * internal state per its locked swap-semantic rule (see each primitive's
625
+ * JSDoc for the rule).
626
+ *
627
+ * @category extra
628
+ */
629
+ type NodeOrValue<T> = T | Node<T>;
586
630
  /** Inputs accepted by {@link fallback}. */
587
631
  type FallbackInput<T> = T | Node<T> | PromiseLike<T> | AsyncIterable<T>;
588
632
  /**
@@ -626,7 +670,9 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
626
670
  * the timer. Terminal messages (`COMPLETE`/`ERROR`) cancel the timer.
627
671
  *
628
672
  * @param source - Upstream node.
629
- * @param timeoutNs - Deadline in **nanoseconds** (must be > 0). Internally converted to milliseconds for `setTimeout` scheduling.
673
+ * @param timeoutNs - Deadline in **nanoseconds** (must be > 0), or a
674
+ * `Node<number>` carrying the deadline reactively (Tier 6.5 3.2.1).
675
+ * Internally converted to milliseconds for `setTimeout` scheduling.
630
676
  * @returns Node that errors on timeout.
631
677
  *
632
678
  * @throws {RangeError} when `timeoutNs <= 0`.
@@ -634,6 +680,13 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
634
680
  * @remarks
635
681
  * **Scheduling:** internally uses {@link ResettableTimer} (raw `setTimeout`) per spec §5.10's resilience-operator carve-out. The deadline is `timeoutNs / NS_PER_MS` ms; sub-millisecond `timeoutNs` values get the same minimum-1ms host-scheduler granularity that `setTimeout` provides.
636
682
  *
683
+ * **Reactive `timeoutNs` (locked semantics, Tier 6.5 3.2.1, 2026-04-29).**
684
+ * When `timeoutNs` is a `Node<number>`, each timer-(re)start reads the
685
+ * latest value. An option swap mid-flight applies to the **next** timer
686
+ * window (no in-flight reset) — the active timer keeps its original
687
+ * deadline; the next DATA-driven `startTimer()` call reads the new
688
+ * value. Static-form callers see no behavior change.
689
+ *
637
690
  * @example
638
691
  * ```ts
639
692
  * import { timeout, never, NS_PER_SEC } from "@graphrefly/graphrefly-ts";
@@ -644,7 +697,7 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
644
697
  *
645
698
  * @category extra
646
699
  */
647
- declare function timeout<T>(source: Node<T>, timeoutNs: number, options?: {
700
+ declare function timeout<T>(source: Node<T>, timeoutNs: NodeOrValue<number>, options?: {
648
701
  meta?: Record<string, unknown>;
649
702
  }): Node<T>;
650
703
 
@@ -1,6 +1,6 @@
1
- import { M as MeasurementAdapter, P as PreparedSegment, L as LineBreaksResult, C as CharPosition, a as LayoutCursor, I as Interval, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from './reactive-layout-v7KPvxoc.js';
2
- import { N as Node } from './node-ClS5yC-B.js';
3
- import { G as Graph } from './graph-7VguS7a4.js';
1
+ import { M as MeasurementAdapter, P as PreparedSegment, L as LineBreaksResult, C as CharPosition, a as LayoutCursor, I as Interval, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from './reactive-layout-DOTs9P3X.js';
2
+ import { N as Node } from './node-kK3CvTrR.js';
3
+ import { G as Graph } from './graph-D9LFnda9.js';
4
4
 
5
5
  /**
6
6
  * MeasurementAdapter implementations (roadmap §7.1 — pluggable backends).
@@ -1,5 +1,5 @@
1
- import { G as Graph } from './graph-7VguS7a4.js';
2
- import { M as MeasurementAdapter } from './reactive-layout-v7KPvxoc.js';
1
+ import { G as Graph } from './graph-D9LFnda9.js';
2
+ import { M as MeasurementAdapter } from './reactive-layout-DOTs9P3X.js';
3
3
 
4
4
  /**
5
5
  * Three-pane demo shell (roadmap §7.2).
@@ -1,16 +1,16 @@
1
- import { a as NodeOptions, N as Node, t as Message, M as Messages } from './node-ClS5yC-B.js';
2
- import { i as GraphCheckpointRecord, a as GraphOptions, G as Graph, D as DescribeChangeset, d as DescribeEvent, M as Meta, Q as topologyDiff } from './graph-7VguS7a4.js';
3
- import { a as BackoffStrategy, B as BackoffPreset, t as retry, j as WithStatusBundle, C as CircuitBreaker, b as CircuitBreakerOptions, c as CircuitOpenError, d as CircuitState, E as ExponentialBackoffOptions, F as FallbackInput, J as JitterMode, N as NS_PER_MS, e as NS_PER_SEC, R as RateLimiterOptions, f as RateLimiterOverflowError, g as RateLimiterOverflowPolicy, h as RetryOptions, S as StatusValue, T as TimeoutError, i as TokenBucket, W as WithBreakerBundle, k as circuitBreaker, l as constant, m as decorrelatedJitter, n as exponential, o as fallback, p as fibonacci, q as linear, r as rateLimiter, s as resolveBackoffPreset, u as timeout, v as tokenBucket, w as withBreaker, x as withMaxAttempts, y as withStatus } from './index-B-i4_g3k.js';
1
+ import { a as NodeOptions, N as Node, r as Message, M as Messages } from './node-kK3CvTrR.js';
2
+ import { i as GraphCheckpointRecord, a as GraphOptions, G as Graph, D as DescribeChangeset, d as DescribeEvent, M as Meta, Q as topologyDiff } from './graph-D9LFnda9.js';
3
+ import { a as BackoffStrategy, B as BackoffPreset, t as retry, j as WithStatusBundle, C as CircuitBreaker, b as CircuitBreakerOptions, c as CircuitOpenError, d as CircuitState, E as ExponentialBackoffOptions, F as FallbackInput, J as JitterMode, N as NS_PER_MS, e as NS_PER_SEC, R as RateLimiterOptions, f as RateLimiterOverflowError, g as RateLimiterOverflowPolicy, h as RetryOptions, S as StatusValue, T as TimeoutError, i as TokenBucket, W as WithBreakerBundle, k as circuitBreaker, l as constant, m as decorrelatedJitter, n as exponential, o as fallback, p as fibonacci, q as linear, r as rateLimiter, s as resolveBackoffPreset, u as timeout, v as tokenBucket, w as withBreaker, x as withMaxAttempts, y as withStatus } from './index-B1F8Enjf.js';
4
4
  import { AsyncSourceOpts, NodeInput, EventTargetLike, FromCronOptions, ReactiveCounterBundle, awaitSettled, cached, defer, empty, escapeRegexChar, firstValueFrom, firstWhere, forEach, fromAny, fromAsyncIter, fromCron, fromEvent, fromIter, fromPromise, fromRaf, fromTimer, globToRegExp, keepalive, matchesAnyPattern, never, nodeSignal, of, reactiveCounter, replay, share, shareReplay, throwError, toArray } from './extra/sources.js';
5
5
  import { SnapshotStorageTier, KvStorageTier, AppendCursor, AppendLoadResult, AppendLogStorageOptions, AppendLogStorageTier, BaseStorageTier, Codec, KvStorageOptions, SnapshotStorageOptions, StorageBackend, appendLogStorage, dictKv, dictSnapshot, jsonCodec, jsonCodecFor, kvStorage, memoryAppendLog, memoryBackend, memoryKv, memorySnapshot, snapshotStorage } from './extra/storage-tiers.js';
6
- import { D as DistillBundle, a as DistillOptions, E as Extraction, V as VerifiableBundle, b as VerifiableOptions, c as VerifyValue, d as decay, e as distill, v as verifiable } from './decay-CdEBmDIs.js';
6
+ import { D as DistillBundle, a as DistillOptions, E as Extraction, V as VerifiableBundle, b as VerifiableOptions, c as VerifyValue, d as decay, e as distill, v as verifiable } from './decay-BvOWTZ00.js';
7
7
  import { C as ContentAddressedMissError, a as ContentAddressedMode, b as ContentAddressedStorage, c as ContentAddressedStorageOptions, d as canonicalJson, e as contentAddressedStorage } from './content-addressed-storage-DuYMjV7o.js';
8
- import { A as AuditLogOpts, B as BaseAuditRecord, D as DEFAULT_AUDIT_GUARD, F as FailureMeta, L as LightMutationOpts, M as MutationOpts, S as SuccessMeta, W as WrapMutationOpts, a as appendAudit, b as bumpCursor, c as createAuditLog, l as lightMutation, r as registerCursor, d as registerCursorMap, t as tryIncrementBounded, w as wrapMutation } from './index-DO9XxMzS.js';
9
- import { T as ToObservableOptions, t as toObservable } from './observable-BsBzUrcI.js';
8
+ import { A as AuditLogOpts, B as BaseAuditRecord, D as DEFAULT_AUDIT_GUARD, F as FailureMeta, L as LightMutationOpts, M as MutationOpts, S as SuccessMeta, W as WrapMutationOpts, a as appendAudit, b as bumpCursor, c as createAuditLog, l as lightMutation, r as registerCursor, d as registerCursorMap, t as tryIncrementBounded, w as wrapMutation } from './index-Yq60JP3s.js';
9
+ import { T as ToObservableOptions, t as toObservable } from './observable-DWjNfLvC.js';
10
10
  import { MergeMapOptions, TapObserver, ThrottleOptions, audit, buffer, bufferCount, bufferTime, catchError, combine, combineLatest, concat, concatMap, debounce, debounceTime, delay, distinctUntilChanged, elementAt, exhaustMap, filter, find, first, flatMap, interval, last, map, merge, mergeMap, onFirstData, pairwise, pausable, race, reduce, repeat, rescue, sample, scan, skip, switchMap, take, takeUntil, takeWhile, tap, tapFirst, throttle, throttleTime, valve, window, windowCount, windowTime, withLatestFrom, zip } from './extra/operators.js';
11
11
  import { IndexBackend, IndexRow, ListBackend, NativeIndexBackend, NativeListBackend, ReactiveIndexBundle, ReactiveIndexOptions, ReactiveListBundle, ReactiveListOptions, UpsertOptions, reactiveIndex, reactiveList } from './extra/reactive.js';
12
- import { L as LogBackend, M as MergedReactiveLog, N as NativeLogBackend, a as ReactiveLogBundle, R as ReactiveLogOptions, V as ViewSpec, m as mergeReactiveLogs, r as reactiveLog } from './reactive-log-BezYsbA_.js';
13
- import { M as MapBackend, N as NativeMapBackend, a as NativeMapBackendOptions, R as ReactiveMapBundle, b as ReactiveMapOptions, c as ReactiveMapRetention, r as reactiveMap } from './reactive-map-BVVPdvmi.js';
12
+ import { L as LogBackend, M as MergedReactiveLog, N as NativeLogBackend, a as ReactiveLogBundle, R as ReactiveLogOptions, V as ViewSpec, m as mergeReactiveLogs, r as reactiveLog } from './reactive-log-BKALbfal.js';
13
+ import { M as MapBackend, N as NativeMapBackend, a as NativeMapBackendOptions, R as ReactiveMapBundle, b as ReactiveMapOptions, c as ReactiveMapRetention, r as reactiveMap } from './reactive-map-DS_SIAxv.js';
14
14
  import { StorageHandle, sortJsonValue, stableJsonString } from './extra/storage-core.js';
15
15
 
16
16
  /**
@@ -418,15 +418,26 @@ type BudgetGateOptions = Omit<NodeOptions<unknown>, "describeKind" | "name" | "m
418
418
  * compositor level (e.g. annotate via `meta.ai.upstream`, or wrap the gate
419
419
  * in a parent factory that exposes the deps as constructor args).
420
420
  *
421
- * ## Reference equality
422
- *
423
- * The `constraints` array reference and each `BudgetConstraint.check`
424
- * function are captured at construction. The factory does NOT diff
425
- * subsequent `constraints` arrays (there is no subsequent the array is
426
- * static for the gate's lifetime). To swap constraints reactively, build
427
- * the swap at the compositor level above the gate (Architecture-2:
428
- * compositor-only). Identity changes to `constraints` are observed only by
429
- * constructing a new gate.
421
+ * ## Reference equality + Tier 6.5 3.2.5 locked semantics
422
+ *
423
+ * **Constraint VALUES are reactive.** Each `BudgetConstraint.node` is
424
+ * subscribed at activation; per-value changes flip the gate (re-evaluate
425
+ * in the same wave) and trigger PAUSE/RESUME upstream. Per the locked
426
+ * semantic rule for the reactive-options-widening batch (Tier 6.5 3.2.5,
427
+ * 2026-04-29): "constraints array re-evaluated immediately against
428
+ * current source; adding/removing constraints triggers gate
429
+ * re-evaluation in the same wave" — the per-value half is shipped via
430
+ * the existing constraint-Node subscription model.
431
+ *
432
+ * **The constraints ARRAY shape is static.** The factory captures the
433
+ * `constraints` array reference and each `check` function at
434
+ * construction; it does NOT diff subsequent arrays. To add or remove
435
+ * constraints reactively, build the swap at the compositor level (a
436
+ * `switchMap` rebuild over a constraint-shape Node), or construct a new
437
+ * gate. Dynamic constraint-array reactivity is intentionally deferred —
438
+ * the subscription churn (resub on every constraint add/remove) and
439
+ * `latestValues` shape mutation overshoot the budget-gate's
440
+ * fire-and-forget ergonomics.
430
441
  *
431
442
  * @param source - Input node.
432
443
  * @param constraints - Reactive constraint checks. MUST be non-empty.
@@ -1,4 +1,4 @@
1
- import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-WBlobVhU.cjs';
1
+ import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-CIKhynsF.cjs';
2
2
 
3
3
  /**
4
4
  * Orchestration patterns (roadmap §4.1).
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
2
 
3
3
  /**
4
4
  * A Nanostores-compatible atom.
@@ -1,5 +1,5 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
2
- import { a as GraphOptions, G as Graph } from './graph-C4SHb3Ly.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
+ import { a as GraphOptions, G as Graph } from './graph-CWvEUQAq.cjs';
3
3
 
4
4
  /**
5
5
  * Domain templates (roadmap §8.2).
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.js';
1
+ import { N as Node } from './node-kK3CvTrR.js';
2
2
 
3
3
  /** Solid accessor function — returns current value when called. */
4
4
  type Accessor<T> = () => T;
@@ -1,6 +1,6 @@
1
- import { n as GraphReFlyConfig } from './node-ClS5yC-B.js';
2
- import { r as GraphPersistSnapshot, i as GraphCheckpointRecord, G as Graph, C as CausalChain, c as CausalStep, e as DescribeFilter, E as ExplainPathOptions, f as GRAPH_META_SEGMENT, g as GraphActorOptions, h as GraphAttachStorageOptions, j as GraphDescribeOptions, b as GraphDescribeOutput, k as GraphDiagramDirection, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, s as GraphProfileOptions, t as GraphProfileResult, u as GraphVersionChange, v as GraphWALDiff, N as NodeProfile, O as ObserveChangeset, w as ObserveDetail, x as ObserveEvent, y as ObserveOptions, z as ObserveResult, A as ObserveTheme, B as ObserveThemeName, F as ObserveTier, R as ReachableDirection, H as ReachableOptions, S as SNAPSHOT_VERSION, T as TopologyEvent, I as TraceEntry, J as diffForWAL, K as explainPath, L as graphProfile, P as reachable } from './graph-7VguS7a4.js';
3
- import { w as watchTopologyTree } from './topology-tree-BNGvuG82.js';
1
+ import { l as GraphReFlyConfig } from './node-kK3CvTrR.js';
2
+ import { r as GraphPersistSnapshot, i as GraphCheckpointRecord, G as Graph, C as CausalChain, c as CausalStep, e as DescribeFilter, E as ExplainPathOptions, f as GRAPH_META_SEGMENT, g as GraphActorOptions, h as GraphAttachStorageOptions, j as GraphDescribeOptions, b as GraphDescribeOutput, k as GraphDiagramDirection, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, s as GraphProfileOptions, t as GraphProfileResult, u as GraphVersionChange, v as GraphWALDiff, N as NodeProfile, O as ObserveChangeset, w as ObserveDetail, x as ObserveEvent, y as ObserveOptions, z as ObserveResult, A as ObserveTheme, B as ObserveThemeName, F as ObserveTier, R as ReachableDirection, H as ReachableOptions, S as SNAPSHOT_VERSION, T as TopologyEvent, I as TraceEntry, J as diffForWAL, K as explainPath, L as graphProfile, P as reachable } from './graph-D9LFnda9.js';
3
+ import { w as watchTopologyTree } from './topology-tree-xvaD0fOX.js';
4
4
 
5
5
  /**
6
6
  * Approximate in-memory size estimation for arbitrary JS values.
@@ -287,6 +287,15 @@ declare function replayWAL(entries: readonly WALEntry[]): GraphPersistSnapshot;
287
287
  * consumers are part of the design. If you have known external-consumer
288
288
  * roots, filter them from `result.orphans` before deciding what to act on.
289
289
  *
290
+ * **Synthetic `__internal__/` paths (EH-9).** Compound factories sometimes
291
+ * surface unnamed helper nodes under the `__internal__/` namespace
292
+ * (auto-generated when a producer / derived is added without a `name` and
293
+ * the registrar falls back to a synthetic prefix). These never represent
294
+ * user-authored topology and should not surface as actionable orphans;
295
+ * `validateNoIslands` filters them out before reporting. If a real factory
296
+ * regression accidentally leaks a user-meaningful node under this prefix,
297
+ * the fix is to give the node a real name — not to remove the filter.
298
+ *
290
299
  * **Non-throwing by default.** Returns a structured result so callers
291
300
  * (dry-run blocks, CI smoke tests) can exit non-zero with a diagnostic
292
301
  * instead of crashing.
@@ -1,7 +1,7 @@
1
- import { A as Actor, N as Node, W as PolicyRuleData, o as GuardAction } from './node-ClS5yC-B.js';
2
- import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot, b as GraphDescribeOutput, j as GraphDescribeOptions, C as CausalChain, e as DescribeFilter } from './graph-7VguS7a4.js';
3
- import { T as TopicGraph } from './index-DBHK8O6H.js';
4
- import { w as watchTopologyTree } from './topology-tree-BNGvuG82.js';
1
+ import { A as Actor, N as Node, W as PolicyRuleData, m as GuardAction } from './node-kK3CvTrR.js';
2
+ import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot, b as GraphDescribeOutput, j as GraphDescribeOptions, C as CausalChain, e as DescribeFilter } from './graph-D9LFnda9.js';
3
+ import { T as TopicGraph } from './index-nozs3fFC.js';
4
+ import { w as watchTopologyTree } from './topology-tree-xvaD0fOX.js';
5
5
 
6
6
  /**
7
7
  * Audit, policy enforcement, and compliance export (roadmap §9.2).
@@ -58,6 +58,25 @@ interface AuditTrailOptions {
58
58
  declare class AuditTrailGraph extends Graph {
59
59
  readonly entries: Node<readonly AuditEntry[]>;
60
60
  readonly count: Node<number>;
61
+ /**
62
+ * Effective set of event types this trail records (EH-18). Reflects
63
+ * either the caller-supplied `opts.includeTypes` or the default set
64
+ * (`["data", "error", "complete", "teardown"]`). Captured at construction
65
+ * — each instance owns its own clone, so a default-using trail can never
66
+ * leak mutations into the module-level default set.
67
+ *
68
+ * **Mutation contract.** Type-system read-only via `ReadonlySet`. Runtime
69
+ * mutation through an unsafe cast (`(audit.includeTypes as Set<...>)
70
+ * .add(...)`) is unsupported — it would desync the field from the
71
+ * recording closure, which captured the original `Set` reference at
72
+ * construction. The runtime does NOT enforce immutability beyond the
73
+ * type contract; consumers must respect it.
74
+ *
75
+ * Use this to validate that a `complianceSnapshot.fingerprint` was
76
+ * computed against the same recording surface — fingerprints are stable
77
+ * only when the recording set is identical across snapshots.
78
+ */
79
+ readonly includeTypes: ReadonlySet<AuditEntry["type"]>;
61
80
  private readonly _log;
62
81
  private readonly _target;
63
82
  constructor(target: Graph, opts: AuditTrailOptions);
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
2
 
3
3
  /**
4
4
  * Options for creating an atom.
@@ -1,10 +1,10 @@
1
1
  import { NodeInput } from './extra/sources.cjs';
2
- import { N as Node } from './node-ClS5yC-B.cjs';
3
- import { L as LLMAdapter } from './types-B1jDWVsM.cjs';
4
- import { J as JobEnvelope, a as JobFlowGraph, b as JobQueueGraph } from './index-3NmAfcH0.cjs';
5
- import { T as TopicGraph, M as MessagingHubGraph } from './index-BTQtTb_H.cjs';
6
- import { a as GraphOptions, G as Graph, t as GraphProfileResult, s as GraphProfileOptions } from './graph-C4SHb3Ly.cjs';
7
- import { G as GateController } from './pipeline-graph-WBlobVhU.cjs';
2
+ import { N as Node } from './node-kK3CvTrR.cjs';
3
+ import { L as LLMAdapter } from './types-C0_yquda.cjs';
4
+ import { J as JobEnvelope, a as JobFlowGraph, b as JobQueueGraph } from './index-DV_1YuVk.cjs';
5
+ import { T as TopicGraph, M as MessagingHubGraph } from './index-C5ri2Axc.cjs';
6
+ import { a as GraphOptions, G as Graph, t as GraphProfileResult, s as GraphProfileOptions } from './graph-CWvEUQAq.cjs';
7
+ import { G as GateController } from './pipeline-graph-CIKhynsF.cjs';
8
8
 
9
9
  /**
10
10
  * Strategy model and priority scoring (roadmap §9.0).
@@ -153,6 +153,16 @@ interface IntakeItem {
153
153
  affectsAreas: string[];
154
154
  affectsEvalTasks?: string[];
155
155
  severity?: Severity;
156
+ /**
157
+ * Stable identity carrier for retry / reingestion paths. Per qa D1
158
+ * (2026-04-29), `relatedTo[0]` MUST be the original tracking key for
159
+ * items derived from a prior publish so the harness's `routeJobIds`
160
+ * map preserves identity across decorated retry summaries. First-time
161
+ * publishes leave this `undefined`; the tracking key falls back to
162
+ * `summary`. Two first-time publishes with identical `summary` collide
163
+ * on key — see `trackingKey` JSDoc in `patterns/_internal/index.ts`
164
+ * for the uniqueness caller contract.
165
+ */
156
166
  relatedTo?: string[];
157
167
  /** Item-carried reingestion count. Incremented on each full-loop reingestion. */
158
168
  $reingestions?: number;
@@ -325,7 +335,9 @@ interface HarnessJobPayload<A = unknown> {
325
335
  * wrapper. `refineExecutor` builds a per-claim `refineLoop`.
326
336
  * `actuatorExecutor` runs a side-effecting `apply(item, signal)`.
327
337
  */
328
- type HarnessExecutor<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>) => NodeInput<HarnessJobPayload<A>>;
338
+ type HarnessExecutor<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>, opts?: {
339
+ signal: AbortSignal;
340
+ }) => NodeInput<HarnessJobPayload<A>>;
329
341
  /**
330
342
  * Pluggable VERIFY work fn — receives a {@link JobEnvelope} whose payload
331
343
  * has `item` + `execution` populated, returns a {@link NodeInput} that
@@ -342,7 +354,9 @@ type HarnessExecutor<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>) =>
342
354
  * verified: false, findings: [...], errorClass: "structural" }`) so the
343
355
  * dispatch effect can route the item rather than silently drop it.
344
356
  */
345
- type HarnessVerifier<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>) => NodeInput<HarnessJobPayload<A>>;
357
+ type HarnessVerifier<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>, opts?: {
358
+ signal: AbortSignal;
359
+ }) => NodeInput<HarnessJobPayload<A>>;
346
360
  /** Triage prompt callable shape — pair of `[intake item, strategy snapshot]`. */
347
361
  type TriagePromptFn = (pair: readonly [IntakeItem, StrategySnapshot]) => string;
348
362
  /** Execute prompt callable shape. */
@@ -1478,7 +1492,17 @@ declare class HarnessGraph<A = unknown> extends Graph {
1478
1492
  * in to priority scoring.
1479
1493
  */
1480
1494
  readonly priorityScores?: ReadonlyMap<QueueRoute, Node<number>>;
1481
- constructor(name: string, queues: MessagingHubGraph, executeFlow: JobFlowGraph<HarnessJobPayload<A>>, queueTopics: Map<QueueRoute, TopicGraph<TriagedItem>>, jobs: Map<QueueRoute, JobQueueGraph<TriagedItem>>, gates: Map<QueueRoute, GateController<TriagedItem>>, strategy: StrategyModelBundle, totalRetries: Node<number>, totalReingestions: Node<number>, priorityScores?: Map<QueueRoute, Node<number>>);
1495
+ /**
1496
+ * REFLECT-stage tick marker — emits one DATA per terminal verdict observed
1497
+ * on `executeFlow.completed`. `equals: () => false` so each completion
1498
+ * produces an observable tick (no Object.is collapse on identical
1499
+ * `null` payloads). Inspection tools (`harnessTrace`, dashboards) can
1500
+ * subscribe directly here instead of resolving by string path
1501
+ * (`harness.node("reflect")`) — the field is the lock against rename
1502
+ * drift.
1503
+ */
1504
+ readonly reflect: Node<null>;
1505
+ constructor(name: string, queues: MessagingHubGraph, executeFlow: JobFlowGraph<HarnessJobPayload<A>>, queueTopics: Map<QueueRoute, TopicGraph<TriagedItem>>, jobs: Map<QueueRoute, JobQueueGraph<TriagedItem>>, gates: Map<QueueRoute, GateController<TriagedItem>>, strategy: StrategyModelBundle, totalRetries: Node<number>, totalReingestions: Node<number>, reflect: Node<null>, priorityScores?: Map<QueueRoute, Node<number>>);
1482
1506
  /** Intake topic — publish items here to enter the loop. */
1483
1507
  get intake(): TopicGraph<IntakeItem>;
1484
1508
  /** Verify results topic — subscribe to see verification outcomes. */
@@ -1,5 +1,5 @@
1
- import { N as Node, a as NodeOptions } from './node-ClS5yC-B.js';
2
- import { a as GraphOptions, G as Graph } from './graph-7VguS7a4.js';
1
+ import { N as Node, a as NodeOptions } from './node-kK3CvTrR.js';
2
+ import { a as GraphOptions, G as Graph } from './graph-D9LFnda9.js';
3
3
 
4
4
  /**
5
5
  * Reduction primitives (roadmap §8.1).
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
2
 
3
3
  /**
4
4
  * Backoff strategies for {@link retry} (roadmap §3.1). Delays are in **nanoseconds**.
@@ -227,8 +227,8 @@ type RetryFactoryOptions<T> = RetryOptions & {
227
227
  *
228
228
  * @category extra
229
229
  */
230
- declare function retry<T>(input: Node<T>, opts?: RetryOptions): Node<T>;
231
- declare function retry<T>(input: () => Node<T>, opts?: RetryFactoryOptions<T>): Node<T>;
230
+ declare function retry<T>(input: Node<T>, opts?: NodeOrValue<RetryOptions>): Node<T>;
231
+ declare function retry<T>(input: () => Node<T>, opts?: NodeOrValue<RetryFactoryOptions<T>>): Node<T>;
232
232
  type CircuitState = "closed" | "open" | "half-open";
233
233
  /**
234
234
  * Thrown when {@link withBreaker} is configured with `onOpen: "error"` and the breaker rejects work.
@@ -275,6 +275,13 @@ interface CircuitBreaker {
275
275
  readonly failureCount: number;
276
276
  /** Manually reset to closed state, clearing all counters. */
277
277
  reset(): void;
278
+ /**
279
+ * Release the reactive-options subscription (Tier 6.5 3.2.4, 2026-04-29).
280
+ * No-op when constructed with static options. Call when retiring a
281
+ * breaker whose options came from a `Node<CircuitBreakerOptions>` to
282
+ * avoid leaking the option-Node subscription.
283
+ */
284
+ dispose(): void;
278
285
  }
279
286
  /**
280
287
  * Factory for a synchronous circuit breaker with `closed`, `open`, and `half-open` states.
@@ -282,12 +289,24 @@ interface CircuitBreaker {
282
289
  * Supports escalating cooldown via an optional {@link BackoffStrategy} — each consecutive
283
290
  * open→half-open→open cycle increments the backoff attempt.
284
291
  *
285
- * @param options - Threshold, cooldown, half-open limit, and optional clock override.
292
+ * @param options - Threshold, cooldown, half-open limit, and optional clock
293
+ * override; OR a `Node<CircuitBreakerOptions>` carrying the same shape
294
+ * reactively (Tier 6.5 3.2.4).
286
295
  * @returns {@link CircuitBreaker} instance.
287
296
  *
288
297
  * @remarks
289
298
  * **Timing:** Uses `monotonicNs()` by default (nanoseconds). Override `now` for tests.
290
299
  *
300
+ * **Reactive options (locked semantics, Tier 6.5 3.2.4, 2026-04-29).**
301
+ * When `options` is a `Node<CircuitBreakerOptions>`, the breaker
302
+ * subscribes at construction and re-reads `failureThreshold` /
303
+ * `cooldownNs` / `cooldown` / `halfOpenMax` / `now` on each DATA. **An
304
+ * option swap RESETS the breaker to `"closed"`** with all counters
305
+ * cleared — operators tuning a runaway breaker get a clean baseline.
306
+ * If retaining failure history across re-tunings matters, derive a new
307
+ * breaker per-tuning instead. Call `breaker.dispose()` when retiring to
308
+ * release the option-Node subscription.
309
+ *
291
310
  * @example
292
311
  * ```ts
293
312
  * import { circuitBreaker, exponential, NS_PER_SEC } from "@graphrefly/graphrefly-ts";
@@ -300,7 +319,7 @@ interface CircuitBreaker {
300
319
  *
301
320
  * @category extra
302
321
  */
303
- declare function circuitBreaker(options?: CircuitBreakerOptions): CircuitBreaker;
322
+ declare function circuitBreaker(options?: NodeOrValue<CircuitBreakerOptions>): CircuitBreaker;
304
323
  type WithBreakerBundle<T> = {
305
324
  node: Node<T>;
306
325
  breakerState: Node<CircuitState>;
@@ -525,7 +544,7 @@ type RateLimiterBundle<T> = {
525
544
  *
526
545
  * @category extra
527
546
  */
528
- declare function rateLimiter<T>(source: Node<T>, opts: RateLimiterOptions): RateLimiterBundle<T>;
547
+ declare function rateLimiter<T>(source: Node<T>, opts: NodeOrValue<RateLimiterOptions>): RateLimiterBundle<T>;
529
548
  type StatusValue = "pending" | "running" | "completed" | "errored";
530
549
  type WithStatusBundle<T> = {
531
550
  node: Node<T>;
@@ -557,6 +576,17 @@ type WithStatusBundle<T> = {
557
576
  * appear as edges in `describe()` if no consumer subscribes to them (per
558
577
  * COMPOSITION-GUIDE §1, push-on-subscribe semantics).
559
578
  *
579
+ * **Per-subscribe lifecycle (DF8, 2026-04-29 doc lock).** When the wrapped
580
+ * source is `resubscribable: true` and multiple consumers attach in
581
+ * sequence, each new subscription cycle re-runs the producer fn AND
582
+ * re-emits the initial `pending` + `null` companion DATAs. Downstream
583
+ * subscribers to the `status` / `error` companions see thrash:
584
+ * `pending → running → completed → pending → running …`. This is the
585
+ * intended fresh-cycle semantic (each subscription cycle reports its own
586
+ * lifecycle); consumers that need a "stable" status across cycles should
587
+ * derive a snapshot via a separate `state()` mirror rather than depending
588
+ * on the per-cycle reset.
589
+ *
560
590
  * @example
561
591
  * ```ts
562
592
  * import { withStatus, state } from "@graphrefly/graphrefly-ts";
@@ -583,6 +613,20 @@ declare class TimeoutError extends Error {
583
613
  name: string;
584
614
  constructor(ns: number);
585
615
  }
616
+ /**
617
+ * Either a literal value or a reactive Node carrying it. Mirrors
618
+ * {@link FallbackInput}'s precedent for "options that may be reactive."
619
+ *
620
+ * Used by {@link timeout} / {@link retry} / {@link rateLimiter} /
621
+ * {@link circuitBreaker} / {@link budgetGate} to accept reactive option
622
+ * configurations (Tier 6.5 3.2, 2026-04-29). Each primitive subscribes
623
+ * to the option Node via {@link resolveReactiveOption} and rebinds
624
+ * internal state per its locked swap-semantic rule (see each primitive's
625
+ * JSDoc for the rule).
626
+ *
627
+ * @category extra
628
+ */
629
+ type NodeOrValue<T> = T | Node<T>;
586
630
  /** Inputs accepted by {@link fallback}. */
587
631
  type FallbackInput<T> = T | Node<T> | PromiseLike<T> | AsyncIterable<T>;
588
632
  /**
@@ -626,7 +670,9 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
626
670
  * the timer. Terminal messages (`COMPLETE`/`ERROR`) cancel the timer.
627
671
  *
628
672
  * @param source - Upstream node.
629
- * @param timeoutNs - Deadline in **nanoseconds** (must be > 0). Internally converted to milliseconds for `setTimeout` scheduling.
673
+ * @param timeoutNs - Deadline in **nanoseconds** (must be > 0), or a
674
+ * `Node<number>` carrying the deadline reactively (Tier 6.5 3.2.1).
675
+ * Internally converted to milliseconds for `setTimeout` scheduling.
630
676
  * @returns Node that errors on timeout.
631
677
  *
632
678
  * @throws {RangeError} when `timeoutNs <= 0`.
@@ -634,6 +680,13 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
634
680
  * @remarks
635
681
  * **Scheduling:** internally uses {@link ResettableTimer} (raw `setTimeout`) per spec §5.10's resilience-operator carve-out. The deadline is `timeoutNs / NS_PER_MS` ms; sub-millisecond `timeoutNs` values get the same minimum-1ms host-scheduler granularity that `setTimeout` provides.
636
682
  *
683
+ * **Reactive `timeoutNs` (locked semantics, Tier 6.5 3.2.1, 2026-04-29).**
684
+ * When `timeoutNs` is a `Node<number>`, each timer-(re)start reads the
685
+ * latest value. An option swap mid-flight applies to the **next** timer
686
+ * window (no in-flight reset) — the active timer keeps its original
687
+ * deadline; the next DATA-driven `startTimer()` call reads the new
688
+ * value. Static-form callers see no behavior change.
689
+ *
637
690
  * @example
638
691
  * ```ts
639
692
  * import { timeout, never, NS_PER_SEC } from "@graphrefly/graphrefly-ts";
@@ -644,7 +697,7 @@ declare function fallback<T>(source: Node<T>, fb: FallbackInput<T>, options?: {
644
697
  *
645
698
  * @category extra
646
699
  */
647
- declare function timeout<T>(source: Node<T>, timeoutNs: number, options?: {
700
+ declare function timeout<T>(source: Node<T>, timeoutNs: NodeOrValue<number>, options?: {
648
701
  meta?: Record<string, unknown>;
649
702
  }): Node<T>;
650
703
 
@@ -1,6 +1,6 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
2
- import { G as Graph, a as GraphOptions } from './graph-C4SHb3Ly.cjs';
3
- import { a as ReactiveLogBundle } from './reactive-log-B00laMSQ.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
+ import { G as Graph, a as GraphOptions } from './graph-CWvEUQAq.cjs';
3
+ import { a as ReactiveLogBundle } from './reactive-log-DIGdYqQ6.cjs';
4
4
  import { AppendLogStorageTier } from './extra/storage-tiers.cjs';
5
5
 
6
6
  type TopicOptions = {
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.cjs';
1
+ import { N as Node } from './node-kK3CvTrR.cjs';
2
2
 
3
3
  /**
4
4
  * Subscribe to a read-only `Node<T>` as a React value. Re-renders on node value settlement.
@@ -1,4 +1,4 @@
1
- import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-v8fMvqNk.js';
1
+ import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-Sgj0gCwn.js';
2
2
 
3
3
  /**
4
4
  * Orchestration patterns (roadmap §4.1).
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-ClS5yC-B.js';
1
+ import { N as Node } from './node-kK3CvTrR.js';
2
2
 
3
3
  /**
4
4
  * A Nanostores-compatible atom.
@@ -1,9 +1,9 @@
1
- import { T as ToObservableOptions, t as toObservable } from './observable-BsBzUrcI.js';
1
+ import { T as ToObservableOptions, t as toObservable } from './observable-DWjNfLvC.js';
2
2
  import { OnModuleInit, OnModuleDestroy, ExecutionContext, CanActivate, DynamicModule } from '@nestjs/common';
3
3
  import { ModuleRef } from '@nestjs/core';
4
- import { G as Graph, r as GraphPersistSnapshot } from './graph-7VguS7a4.js';
5
- import { A as Actor } from './node-ClS5yC-B.js';
6
- import { c as CqrsOptions, b as CqrsGraph, a as CqrsEvent } from './index-D8l8hNXn.js';
4
+ import { G as Graph, r as GraphPersistSnapshot } from './graph-D9LFnda9.js';
5
+ import { A as Actor } from './node-kK3CvTrR.js';
6
+ import { c as CqrsOptions, b as CqrsGraph, a as CqrsEvent } from './index-CeFiHtAg.js';
7
7
  import { AppendLogStorageTier } from './extra/storage-tiers.js';
8
8
 
9
9
  /** Class constructor key for decorator registries and Nest `ModuleRef.get()`. */