@graphrefly/graphrefly 0.32.0 → 0.34.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 (289) hide show
  1. package/dist/{cascading-D3sapjue.d.ts → cascading-Bg0a4VSf.d.ts} +2 -2
  2. package/dist/{cascading-BfQmSmjU.d.cts → cascading-DKIb6Pk8.d.cts} +2 -2
  3. package/dist/{chunk-4JBKKUCJ.js → chunk-2JO6LXFT.js} +1 -1
  4. package/dist/{chunk-FTA5TB2A.js → chunk-2LZ6DL45.js} +1 -1
  5. package/dist/chunk-3Y4BXFFR.js +1 -0
  6. package/dist/{chunk-WQ7I7JVU.js → chunk-4F564IPP.js} +1 -1
  7. package/dist/{chunk-M2VFLRPJ.js → chunk-4NYSEUKV.js} +1 -1
  8. package/dist/{chunk-N2KKISCE.js → chunk-533RQFF6.js} +1 -1
  9. package/dist/{chunk-BU4SUZSA.js → chunk-55T3K37W.js} +1 -1
  10. package/dist/chunk-65WWQ5CB.js +43 -0
  11. package/dist/chunk-6HQ6HVTF.js +1 -0
  12. package/dist/{chunk-4VXL3UZK.js → chunk-7Q2WPFQ7.js} +1 -1
  13. package/dist/chunk-A3GDELMY.js +61 -0
  14. package/dist/{chunk-5PBXUVHI.js → chunk-BY4WKPKM.js} +1 -1
  15. package/dist/{chunk-JYMNVEH6.js → chunk-C5DINHNP.js} +1 -1
  16. package/dist/{chunk-7QS77X6G.js → chunk-CJMFZXIZ.js} +1 -1
  17. package/dist/{chunk-W6FQIFVE.js → chunk-CLD3F4R5.js} +1 -1
  18. package/dist/{chunk-RWGJQQLT.js → chunk-FKRPIRE6.js} +1 -1
  19. package/dist/{chunk-UXEB35L4.js → chunk-GAOX6OPT.js} +1 -1
  20. package/dist/{chunk-TOCCHQI6.js → chunk-GCUYSIM4.js} +1 -1
  21. package/dist/{chunk-XRSHMHEG.js → chunk-HTBOCKVD.js} +1 -1
  22. package/dist/{chunk-LJGPOJHS.js → chunk-IB64M7VP.js} +1 -1
  23. package/dist/{chunk-Q2SY7M7K.js → chunk-IJFSR4NU.js} +1 -1
  24. package/dist/{chunk-X4OOM6QU.js → chunk-INXDSJRC.js} +1 -1
  25. package/dist/{chunk-4YGJ7KZ6.js → chunk-IPNJDNE7.js} +1 -1
  26. package/dist/{chunk-4UUDNFYG.js → chunk-KGKJCHEK.js} +1 -1
  27. package/dist/chunk-KN2UMFT6.js +5 -0
  28. package/dist/{chunk-A4JT4SAD.js → chunk-KRH66M4O.js} +1 -1
  29. package/dist/{chunk-K54OKWNY.js → chunk-L3KUKDZC.js} +1 -1
  30. package/dist/{chunk-Y26UN6J5.js → chunk-LOF5HSD3.js} +1 -1
  31. package/dist/chunk-LYCLF26R.js +1 -0
  32. package/dist/{chunk-CZVYLXFK.js → chunk-M27MVZCP.js} +1 -1
  33. package/dist/{chunk-DWIAG62L.js → chunk-NNKJUORL.js} +1 -1
  34. package/dist/{chunk-WF3V5X2L.js → chunk-PBN426RU.js} +1 -1
  35. package/dist/{chunk-MFNOZ5E6.js → chunk-Q46YJCQH.js} +1 -1
  36. package/dist/{chunk-KD3IYBTD.js → chunk-SFIM774L.js} +1 -1
  37. package/dist/{chunk-VXJX3ZZP.js → chunk-T2TB37TW.js} +1 -1
  38. package/dist/{chunk-UMH3HSP7.js → chunk-T7EQPKOP.js} +1 -1
  39. package/dist/{chunk-JAHAJU4G.js → chunk-TONEKQM3.js} +1 -1
  40. package/dist/{chunk-CNXUW2CU.js → chunk-TZLEMGAK.js} +1 -1
  41. package/dist/{chunk-LWGLBCMU.js → chunk-TZQPPQEQ.js} +1 -1
  42. package/dist/{chunk-7JZ3YORY.js → chunk-U2T2XWDA.js} +1 -1
  43. package/dist/{chunk-WE32AFFA.js → chunk-UF746BQ4.js} +1 -1
  44. package/dist/{chunk-7QMVU3IX.js → chunk-WBWBY6LI.js} +1 -1
  45. package/dist/{chunk-7EMUF2RY.js → chunk-Y63GWRHO.js} +1 -1
  46. package/dist/{chunk-PWKLZ2XU.js → chunk-YDWTVO4E.js} +1 -1
  47. package/dist/{chunk-EIFHFDFD.js → chunk-YUBV7EEE.js} +1 -1
  48. package/dist/compat/index.cjs +5 -5
  49. package/dist/compat/index.d.cts +14 -14
  50. package/dist/compat/index.d.ts +14 -14
  51. package/dist/compat/index.js +1 -1
  52. package/dist/compat/jotai/index.cjs +1 -1
  53. package/dist/compat/jotai/index.d.cts +2 -2
  54. package/dist/compat/jotai/index.d.ts +2 -2
  55. package/dist/compat/jotai/index.js +1 -1
  56. package/dist/compat/nanostores/index.cjs +1 -1
  57. package/dist/compat/nanostores/index.d.cts +2 -2
  58. package/dist/compat/nanostores/index.d.ts +2 -2
  59. package/dist/compat/nanostores/index.js +1 -1
  60. package/dist/compat/nestjs/index.cjs +5 -5
  61. package/dist/compat/nestjs/index.d.cts +6 -6
  62. package/dist/compat/nestjs/index.d.ts +6 -6
  63. package/dist/compat/nestjs/index.js +1 -1
  64. package/dist/compat/react/index.d.cts +2 -2
  65. package/dist/compat/react/index.d.ts +2 -2
  66. package/dist/compat/solid/index.d.cts +2 -2
  67. package/dist/compat/solid/index.d.ts +2 -2
  68. package/dist/compat/svelte/index.d.cts +2 -2
  69. package/dist/compat/svelte/index.d.ts +2 -2
  70. package/dist/compat/vue/index.d.cts +2 -2
  71. package/dist/compat/vue/index.d.ts +2 -2
  72. package/dist/compat/zustand/index.cjs +3 -3
  73. package/dist/compat/zustand/index.d.cts +4 -4
  74. package/dist/compat/zustand/index.d.ts +4 -4
  75. package/dist/compat/zustand/index.js +1 -1
  76. package/dist/{composite-BY9hMxN7.d.ts → composite-BPDU_XV1.d.ts} +2 -2
  77. package/dist/{composite-CH0S8DFn.d.cts → composite-CmvdhTJe.d.cts} +2 -2
  78. package/dist/core/index.cjs +1 -1
  79. package/dist/core/index.d.cts +4 -4
  80. package/dist/core/index.d.ts +4 -4
  81. package/dist/core/index.js +1 -1
  82. package/dist/extra/browser.cjs +1 -1
  83. package/dist/extra/browser.d.cts +1 -1
  84. package/dist/extra/browser.d.ts +1 -1
  85. package/dist/extra/browser.js +1 -1
  86. package/dist/extra/index.cjs +16 -16
  87. package/dist/extra/index.d.cts +9 -9
  88. package/dist/extra/index.d.ts +9 -9
  89. package/dist/extra/index.js +1 -1
  90. package/dist/extra/node.cjs +1 -1
  91. package/dist/extra/node.d.cts +1 -1
  92. package/dist/extra/node.d.ts +1 -1
  93. package/dist/extra/node.js +1 -1
  94. package/dist/extra/operators.cjs +1 -1
  95. package/dist/extra/operators.d.cts +1 -1
  96. package/dist/extra/operators.d.ts +1 -1
  97. package/dist/extra/operators.js +1 -1
  98. package/dist/extra/reactive.cjs +1 -1
  99. package/dist/extra/reactive.d.cts +3 -3
  100. package/dist/extra/reactive.d.ts +3 -3
  101. package/dist/extra/reactive.js +1 -1
  102. package/dist/extra/sources.cjs +1 -1
  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-Cb3GH1O7.d.cts → fallback-9YznPvPP.d.cts} +1 -1
  111. package/dist/{fallback-DRjJ_ZM8.d.ts → fallback-mYSd8vQo.d.ts} +1 -1
  112. package/dist/graph/index.cjs +4 -4
  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-BOhEGJ6E.d.ts → graph-BROUZPG9.d.ts} +2 -2
  117. package/dist/{graph-CdJeX7O7.d.cts → graph-DaoydJ_u.d.cts} +2 -2
  118. package/dist/{index-C22aTC1X.d.cts → index-3L3RC3VJ.d.ts} +578 -108
  119. package/dist/{index-BmZb8fNF.d.cts → index-B-KCkW4M.d.cts} +4 -4
  120. package/dist/{index-CDK5RsV5.d.cts → index-B1hFhK1K.d.cts} +1 -1
  121. package/dist/{index-C7RqYbOZ.d.ts → index-B5eS17Bz.d.ts} +7 -7
  122. package/dist/{index-DSawGt8n.d.cts → index-BDEhWLF4.d.cts} +3 -3
  123. package/dist/{index-CZUzi6Dy.d.ts → index-BFHpNSsV.d.ts} +4 -4
  124. package/dist/{index-DDo-eqQ4.d.cts → index-BO6t0HjV.d.cts} +1 -1
  125. package/dist/{index-CrC7urhX.d.ts → index-BRisOxlx.d.ts} +1 -1
  126. package/dist/{index-CHfBm51k.d.ts → index-BUtCR0k6.d.ts} +4 -4
  127. package/dist/{index-BydMDMf7.d.cts → index-BVTjuKeP.d.cts} +1 -1
  128. package/dist/{index-BX22kvjh.d.ts → index-BWiX5foT.d.ts} +1 -1
  129. package/dist/{index-Dxk-pUQI.d.ts → index-Bd2AjMQY.d.ts} +2 -2
  130. package/dist/{index-Dbmj0iYR.d.ts → index-Bi4ZP6Hc.d.ts} +2 -2
  131. package/dist/{index-j33Lfb1G.d.cts → index-BkfL5MXh.d.cts} +3 -3
  132. package/dist/{index-CnjUhRbs.d.cts → index-BpjQanLs.d.cts} +2 -2
  133. package/dist/{index-LGzAYqdR.d.ts → index-BsxqmV6u.d.ts} +2 -2
  134. package/dist/{index-CCdg0JLX.d.cts → index-C2Dey3L-.d.cts} +12 -3
  135. package/dist/{index-gXTVbSax.d.ts → index-C5uMGVJw.d.ts} +4 -4
  136. package/dist/{index-C-Gsh-0a.d.cts → index-C8_bnDBZ.d.cts} +3 -3
  137. package/dist/{index-C9qCLIN4.d.ts → index-CD7qmvSf.d.ts} +3 -3
  138. package/dist/{index-wIx1Jisk.d.ts → index-CI5fULSz.d.ts} +1 -1
  139. package/dist/{index-BUZPTPSQ.d.ts → index-CNxdDb2e.d.ts} +3 -3
  140. package/dist/{index-FBqTfL_S.d.cts → index-CQ1gt4rn.d.cts} +1 -1
  141. package/dist/{index-CNyiYQWF.d.ts → index-CQtnGFrZ.d.cts} +578 -108
  142. package/dist/{index-DhlAMlm9.d.ts → index-CbCNoogR.d.ts} +218 -66
  143. package/dist/{index-BDLy6CQ9.d.cts → index-Ccv_61jG.d.cts} +2 -2
  144. package/dist/{index-MV2yGIAq.d.ts → index-Ced0dphF.d.ts} +9 -9
  145. package/dist/{index-BzxU4yhV.d.cts → index-ChZvMC4M.d.cts} +4 -4
  146. package/dist/{index-zMQIQuDu.d.ts → index-Chi9IiHJ.d.ts} +3 -3
  147. package/dist/{index-DUkuH3jP.d.cts → index-ClJUZAOr.d.cts} +18 -3
  148. package/dist/{index-D7XxY1Ff.d.cts → index-ClKm7CFB.d.cts} +1 -1
  149. package/dist/{index-D3HcdZ4d.d.cts → index-Cn3taOmp.d.cts} +2 -2
  150. package/dist/{index-C4QTaDli.d.cts → index-CoR-tOZA.d.cts} +4 -4
  151. package/dist/{index-BpFWP7Bq.d.cts → index-Cp91Sxbo.d.cts} +5 -4
  152. package/dist/{index-DD1czHj3.d.ts → index-Cq7Uqgu4.d.ts} +2 -2
  153. package/dist/{index-EGjF6iSY.d.cts → index-D23g00HE.d.cts} +4 -4
  154. package/dist/{index-Bnmttu35.d.ts → index-D80nGRb9.d.ts} +3 -3
  155. package/dist/{index-DY2QbdoP.d.cts → index-DR3XqZlV.d.cts} +1 -1
  156. package/dist/{index-BANwzwBV.d.ts → index-Db21wuaD.d.ts} +5 -4
  157. package/dist/{index-CIXaiYDE.d.cts → index-DhWrMTI6.d.cts} +1 -1
  158. package/dist/{index-Dp_pS7Bw.d.ts → index-DheNs40A.d.ts} +2 -2
  159. package/dist/{index-CVevMZ0n.d.ts → index-Dia4yc2y.d.ts} +3 -3
  160. package/dist/{index-_BXz9K7b.d.cts → index-Ds3Rz9m9.d.cts} +3 -3
  161. package/dist/{index-Ckl03Q0s.d.ts → index-Dtpr2FIB.d.ts} +18 -3
  162. package/dist/{index-ByPnK85n.d.ts → index-DupIl9wI.d.ts} +1 -1
  163. package/dist/{index-CEoU-r-g.d.ts → index-DuvQAU02.d.ts} +2 -2
  164. package/dist/{index-D0C_USMR.d.ts → index-DxEcY7Om.d.ts} +1 -1
  165. package/dist/{index-eYHRkoK-.d.ts → index-HvJ90_tX.d.ts} +12 -3
  166. package/dist/{index-BuN2wGJs.d.cts → index-IxinNgAH.d.cts} +218 -66
  167. package/dist/{index-LzCJ0kMT.d.cts → index-Jgl7ev9I.d.cts} +9 -9
  168. package/dist/{index-DlGaEBW5.d.cts → index-RJX4snyi.d.cts} +2 -2
  169. package/dist/{index-DNhTQReY.d.cts → index-ZIQaKIdY.d.cts} +7 -7
  170. package/dist/{index-lpGUhTBn.d.ts → index-b4a6Sg0R.d.ts} +4 -4
  171. package/dist/{index-BiGeETJs.d.cts → index-iKsmdnq6.d.cts} +2 -2
  172. package/dist/{index-CmSjld-4.d.ts → index-nP13Qe6T.d.ts} +1 -1
  173. package/dist/{index-BJDXj9Wf.d.cts → index-p0bkNfby.d.cts} +3 -3
  174. package/dist/{index-aBqZUx3B.d.cts → index-wcfc7W-f.d.cts} +2 -2
  175. package/dist/{index-BwdPDWI4.d.cts → index-yJY9thRY.d.cts} +2 -2
  176. package/dist/{index-BbcSZCAG.d.ts → index-ygRFoyrN.d.ts} +2 -2
  177. package/dist/{index-Ip3q9T9x.d.ts → index-zA1uVtk0.d.ts} +1 -1
  178. package/dist/index.cjs +57 -57
  179. package/dist/index.d.cts +44 -44
  180. package/dist/index.d.ts +44 -44
  181. package/dist/index.js +1 -1
  182. package/dist/{meta-COtmHLwT.d.cts → meta-BdjSt8ky.d.cts} +1 -1
  183. package/dist/{meta-BMwx3ExI.d.ts → meta-CtDjj7cU.d.ts} +1 -1
  184. package/dist/{node-BVV7G1bq.d.cts → node-8qx0kgYt.d.cts} +49 -1
  185. package/dist/{node-BVV7G1bq.d.ts → node-8qx0kgYt.d.ts} +49 -1
  186. package/dist/{observable-BrUAPeH_.d.cts → observable-B6Ba-TTI.d.cts} +1 -1
  187. package/dist/{observable-ITikPXz3.d.ts → observable-DOniYM2B.d.ts} +1 -1
  188. package/dist/patterns/ai/browser.cjs +5 -5
  189. package/dist/patterns/ai/browser.d.cts +4 -4
  190. package/dist/patterns/ai/browser.d.ts +4 -4
  191. package/dist/patterns/ai/browser.js +1 -1
  192. package/dist/patterns/ai/index.cjs +19 -19
  193. package/dist/patterns/ai/index.d.cts +16 -16
  194. package/dist/patterns/ai/index.d.ts +16 -16
  195. package/dist/patterns/ai/index.js +1 -1
  196. package/dist/patterns/ai/node.cjs +2 -2
  197. package/dist/patterns/ai/node.d.cts +4 -4
  198. package/dist/patterns/ai/node.d.ts +4 -4
  199. package/dist/patterns/ai/node.js +1 -1
  200. package/dist/patterns/audit/index.cjs +7 -7
  201. package/dist/patterns/audit/index.d.cts +5 -5
  202. package/dist/patterns/audit/index.d.ts +5 -5
  203. package/dist/patterns/audit/index.js +1 -1
  204. package/dist/patterns/cqrs/index.cjs +3 -3
  205. package/dist/patterns/cqrs/index.d.cts +4 -4
  206. package/dist/patterns/cqrs/index.d.ts +4 -4
  207. package/dist/patterns/cqrs/index.js +1 -1
  208. package/dist/patterns/demo-shell/index.cjs +6 -6
  209. package/dist/patterns/demo-shell/index.d.cts +5 -5
  210. package/dist/patterns/demo-shell/index.d.ts +5 -5
  211. package/dist/patterns/demo-shell/index.js +1 -1
  212. package/dist/patterns/domain-templates/index.cjs +6 -6
  213. package/dist/patterns/domain-templates/index.d.cts +4 -4
  214. package/dist/patterns/domain-templates/index.d.ts +4 -4
  215. package/dist/patterns/domain-templates/index.js +1 -1
  216. package/dist/patterns/graphspec/index.cjs +8 -8
  217. package/dist/patterns/graphspec/index.d.cts +5 -5
  218. package/dist/patterns/graphspec/index.d.ts +5 -5
  219. package/dist/patterns/graphspec/index.js +1 -1
  220. package/dist/patterns/guarded-execution/index.cjs +7 -7
  221. package/dist/patterns/guarded-execution/index.d.cts +6 -6
  222. package/dist/patterns/guarded-execution/index.d.ts +6 -6
  223. package/dist/patterns/guarded-execution/index.js +1 -1
  224. package/dist/patterns/harness/index.cjs +12 -12
  225. package/dist/patterns/harness/index.d.cts +11 -10
  226. package/dist/patterns/harness/index.d.ts +11 -10
  227. package/dist/patterns/harness/index.js +1 -1
  228. package/dist/patterns/job-queue/index.cjs +7 -7
  229. package/dist/patterns/job-queue/index.d.cts +4 -4
  230. package/dist/patterns/job-queue/index.d.ts +4 -4
  231. package/dist/patterns/job-queue/index.js +1 -1
  232. package/dist/patterns/lens/index.cjs +5 -5
  233. package/dist/patterns/lens/index.d.cts +6 -6
  234. package/dist/patterns/lens/index.d.ts +6 -6
  235. package/dist/patterns/lens/index.js +1 -1
  236. package/dist/patterns/memory/index.cjs +4 -4
  237. package/dist/patterns/memory/index.d.cts +4 -4
  238. package/dist/patterns/memory/index.d.ts +4 -4
  239. package/dist/patterns/memory/index.js +1 -1
  240. package/dist/patterns/messaging/index.cjs +4 -4
  241. package/dist/patterns/messaging/index.d.cts +4 -4
  242. package/dist/patterns/messaging/index.d.ts +4 -4
  243. package/dist/patterns/messaging/index.js +1 -1
  244. package/dist/patterns/orchestration/index.cjs +7 -7
  245. package/dist/patterns/orchestration/index.d.cts +5 -5
  246. package/dist/patterns/orchestration/index.d.ts +5 -5
  247. package/dist/patterns/orchestration/index.js +1 -1
  248. package/dist/patterns/reactive-layout/index.cjs +1 -1
  249. package/dist/patterns/reactive-layout/index.d.cts +5 -5
  250. package/dist/patterns/reactive-layout/index.d.ts +5 -5
  251. package/dist/patterns/reactive-layout/index.js +1 -1
  252. package/dist/patterns/reduction/index.cjs +1 -1
  253. package/dist/patterns/reduction/index.d.cts +4 -4
  254. package/dist/patterns/reduction/index.d.ts +4 -4
  255. package/dist/patterns/reduction/index.js +1 -1
  256. package/dist/patterns/refine-loop/index.cjs +7 -7
  257. package/dist/patterns/refine-loop/index.d.cts +5 -5
  258. package/dist/patterns/refine-loop/index.d.ts +5 -5
  259. package/dist/patterns/refine-loop/index.js +1 -1
  260. package/dist/patterns/resilient-pipeline/index.cjs +1 -1
  261. package/dist/patterns/resilient-pipeline/index.d.cts +6 -6
  262. package/dist/patterns/resilient-pipeline/index.d.ts +6 -6
  263. package/dist/patterns/resilient-pipeline/index.js +1 -1
  264. package/dist/patterns/surface/index.cjs +7 -7
  265. package/dist/patterns/surface/index.d.cts +6 -6
  266. package/dist/patterns/surface/index.d.ts +6 -6
  267. package/dist/patterns/surface/index.js +1 -1
  268. package/dist/{reactive-layout-Bq0rA2Wb.d.ts → reactive-layout-DBJ3Vz-m.d.ts} +2 -2
  269. package/dist/{reactive-layout-Dhhe54Oj.d.cts → reactive-layout-Dk9AOQb_.d.cts} +2 -2
  270. package/dist/{reactive-log-5jFeNRmd.d.cts → reactive-log-CWC7jO4J.d.cts} +1 -1
  271. package/dist/{reactive-log-BOJDCI5x.d.ts → reactive-log-CqaBg8nf.d.ts} +1 -1
  272. package/dist/{reactive-map-IJIfZxoh.d.cts → reactive-map-Cm89Hk0c.d.cts} +1 -1
  273. package/dist/{reactive-map-CtRaCddO.d.ts → reactive-map-LjwjcFaW.d.ts} +1 -1
  274. package/dist/{resilience-IVNDYORD.js → resilience-7UZHSSGC.js} +1 -1
  275. package/dist/{resilience-Q6Bt_7y0.d.cts → resilience-N_VtLf7W.d.cts} +1 -1
  276. package/dist/{resilience-CludlzcP.d.ts → resilience-RjDIHZNZ.d.ts} +1 -1
  277. package/dist/{sugar-BHbAACDG.d.ts → sugar-CQkn_rxB.d.ts} +1 -1
  278. package/dist/{sugar-CqR6DJ7v.d.cts → sugar-DVEYhR7a.d.cts} +1 -1
  279. package/dist/{topology-tree-CpSjvIXp.d.cts → topology-tree-BB6oJxMz.d.cts} +1 -1
  280. package/dist/{topology-tree-DAbCV2Yw.d.ts → topology-tree-CAFOG5S5.d.ts} +1 -1
  281. package/dist/{types-CdfO2QTt.d.ts → types-B2LfBvNc.d.ts} +16 -2
  282. package/dist/{types-BgMqbc7N.d.cts → types-Cp_4coR_.d.cts} +16 -2
  283. package/package.json +1 -1
  284. package/dist/chunk-2JNT5NDF.js +0 -61
  285. package/dist/chunk-2RH4QNDQ.js +0 -1
  286. package/dist/chunk-7AJKUA36.js +0 -1
  287. package/dist/chunk-LG73TUF4.js +0 -43
  288. package/dist/chunk-PNTBXOQ6.js +0 -5
  289. package/dist/chunk-ZWETYYQG.js +0 -1
@@ -1,9 +1,110 @@
1
- import { a as Node } from './node-BVV7G1bq.js';
2
- import { T as TopicGraph } from './index-Dbmj0iYR.js';
3
- import { E as Evaluator, D as DatasetItem, a as EvalResult$1, R as RefineStrategy, b as RefineStatus, c as RefineLoopOptions } from './index-CHfBm51k.js';
4
- import { G as Graph, s as GraphProfileResult, r as GraphProfileOptions } from './graph-BOhEGJ6E.js';
5
- import { L as LLMAdapter } from './types-CdfO2QTt.js';
6
- import { G as GateController } from './index-eYHRkoK-.js';
1
+ import { NodeInput } from './extra/sources.cjs';
2
+ import { a as Node } from './node-8qx0kgYt.cjs';
3
+ import { L as LLMAdapter } from './types-Cp_4coR_.cjs';
4
+ import { T as TopicGraph, M as MessagingHubGraph } from './index-Ccv_61jG.cjs';
5
+ import { E as Evaluator, D as DatasetItem, a as EvalResult$1, R as RefineStrategy, b as RefineLoopOptions, c as RefineStatus } from './index-ChZvMC4M.cjs';
6
+ import { G as Graph, s as GraphProfileResult, r as GraphProfileOptions } from './graph-DaoydJ_u.cjs';
7
+ import { G as GateController } from './index-C2Dey3L-.cjs';
8
+ import { J as JobQueueGraph } from './index-ClJUZAOr.cjs';
9
+
10
+ /**
11
+ * Strategy model and priority scoring (roadmap §9.0).
12
+ *
13
+ * Pure-computation derived nodes — no LLM, no async.
14
+ *
15
+ * @module
16
+ */
17
+
18
+ /** Snapshot shape for the strategy model node. */
19
+ type StrategySnapshot = ReadonlyMap<StrategyKey, StrategyEntry>;
20
+ /** Bundle returned by {@link strategyModel}. */
21
+ interface StrategyModelBundle {
22
+ /** Reactive node — current strategy map. */
23
+ readonly node: Node<StrategySnapshot>;
24
+ /** Record a completed issue (success or failure). */
25
+ record(rootCause: RootCause, intervention: Intervention, success: boolean): void;
26
+ /** Look up effectiveness for a specific pair. */
27
+ lookup(rootCause: RootCause, intervention: Intervention): StrategyEntry | undefined;
28
+ /** Tear down internal keepalive subscriptions. */
29
+ dispose(): void;
30
+ }
31
+ /**
32
+ * Create a strategy model that tracks `rootCause × intervention → successRate`
33
+ * over completed issues. Pure derived computation — no LLM.
34
+ *
35
+ * The model feeds back into TRIAGE for routing hints.
36
+ */
37
+ declare function strategyModel(): StrategyModelBundle;
38
+ /**
39
+ * Create a priority scoring derived node for a single triaged item.
40
+ *
41
+ * Combines severity weight, attention decay, strategy model effectiveness,
42
+ * and an optional external urgency signal.
43
+ *
44
+ * **Age sampling caveat.** The `ageSeconds` term is computed as
45
+ * `monotonicNs() - lastInteractionNs.cache` at *each reactive update*. If
46
+ * nothing upstream settles, the score node does not recompute — so a
47
+ * long-idle queue may show a stale score. Pass a `fromTimer(...)`-driven
48
+ * node as a dep (or re-emit on `lastInteractionNs`) when live age decay
49
+ * matters.
50
+ *
51
+ * **Not the same as `TriagedItem.priority`.** The LLM-emitted
52
+ * `priority: 0..100` field on each triaged item is decorative today — the
53
+ * queue consumption order ignores it (tracked in `docs/optimizations.md`
54
+ * as a priority-ordered queue enhancement). This function computes an
55
+ * orthogonal reactive score; it does NOT override the LLM's per-item
56
+ * priority, nor does it drive queue ordering. Wire it to
57
+ * `HarnessGraph.priorityScores` to surface per-route pressure.
58
+ *
59
+ * @param item - Node holding the triaged item.
60
+ * @param strategy - Strategy model node.
61
+ * @param lastInteractionNs - Node holding the monotonic timestamp (ns) of last human interaction.
62
+ * @param urgency - Optional external urgency signal node (0–1 scale).
63
+ * @param signals - Configurable scoring parameters.
64
+ */
65
+ declare function priorityScore(item: Node<TriagedItem>, strategy: Node<StrategySnapshot>, lastInteractionNs: Node<number>, urgency?: Node<number>, signals?: PrioritySignals): Node<number>;
66
+
67
+ /**
68
+ * Harness runtime defaults (roadmap §9.0).
69
+ *
70
+ * Split out from `types.ts` in Wave B Unit 15 G so the type file holds
71
+ * only type declarations and plug-in contracts. Runtime constants and
72
+ * helpers live here; the harness barrel (`index.ts`) re-exports both so
73
+ * external consumers see a single surface.
74
+ *
75
+ * @module
76
+ */
77
+
78
+ /** Ordered queue route names for iteration. */
79
+ declare const QUEUE_NAMES: readonly QueueRoute[];
80
+ /** Default queue configurations. */
81
+ declare const DEFAULT_QUEUE_CONFIGS: Record<QueueRoute, QueueConfig>;
82
+ /** Default severity weights. */
83
+ declare const DEFAULT_SEVERITY_WEIGHTS: Record<Severity, number>;
84
+ /** Default decay rate: ~7-day half-life. */
85
+ declare const DEFAULT_DECAY_RATE: number;
86
+ /** Canonical `${RootCause}→${Intervention}` join char; used by the `StrategyKey` template literal. */
87
+ declare function strategyKey(rootCause: RootCause, intervention: Intervention): StrategyKey;
88
+ /** Default error classifier: parse/config errors are self-correctable. */
89
+ declare const defaultErrorClassifier: ErrorClassifier;
90
+ /** Default TRIAGE prompt — LLM classifies intake items into root-cause + intervention + route + priority. */
91
+ declare const DEFAULT_TRIAGE_PROMPT = "You are a triage classifier for a reactive collaboration harness.\n\nGiven an intake item, classify it and output JSON:\n{\n \"rootCause\": \"composition\" | \"missing-fn\" | \"bad-docs\" | \"schema-gap\" | \"regression\" | \"unknown\",\n \"intervention\": \"template\" | \"catalog-fn\" | \"docs\" | \"wrapper\" | \"schema-change\" | \"investigate\",\n \"route\": \"auto-fix\" | \"needs-decision\" | \"investigation\" | \"backlog\",\n \"priority\": <number 0-100>,\n \"triageReasoning\": \"<one sentence>\"\n}\n\nStrategy model (past effectiveness):\n{{strategy}}\n\nIntake item:\n{{item}}";
92
+ /** Default EXECUTE prompt — LLM produces a fix given a triaged issue. */
93
+ declare const DEFAULT_EXECUTE_PROMPT = "You are an implementation agent.\n\nGiven a triaged issue with root cause and intervention type, produce a fix.\n\nIssue:\n{{item}}\n\nOutput JSON:\n{\n \"outcome\": \"success\" | \"failure\" | \"partial\",\n \"detail\": \"<description of what was done or what failed>\"\n}";
94
+ /** Default VERIFY prompt — LLM reviews an execution result against the original issue. */
95
+ declare const DEFAULT_VERIFY_PROMPT = "You are a QA reviewer.\n\nGiven an execution result, verify whether the fix is correct.\n\nExecution:\n{{execution}}\n\nOriginal issue:\n{{item}}\n\nOutput JSON:\n{\n \"verified\": true/false,\n \"findings\": [\"<finding1>\", ...],\n \"errorClass\": \"self-correctable\" | \"structural\" // only if verified=false\n}";
96
+ /**
97
+ * Collapse the `string | ((input: In) => string) | undefined` prompt-template
98
+ * pattern into a single `(input: In) => string`. A function `raw` is used as-is
99
+ * (the caller opted into full control). Otherwise `raw ?? fallbackTemplate`
100
+ * is fed through `substitute`, which does the placeholder replacement.
101
+ *
102
+ * Used by the three harness stages (TRIAGE / EXECUTE / VERIFY), which each
103
+ * accept a `string | function` config but use different placeholder schemes
104
+ * (`{{item}}`, `{{execution}}`, `{{strategy}}`). The helper absorbs only the
105
+ * branch logic; the per-stage placeholder substitution lives at the call site.
106
+ */
107
+ declare function resolvePromptFn<In>(raw: string | ((input: In) => string) | undefined, fallbackTemplate: string, substitute: (template: string, input: In) => string): (input: In) => string;
7
108
 
8
109
  /**
9
110
  * Harness wiring types (roadmap §9.0).
@@ -12,26 +113,39 @@ import { G as GateController } from './index-eYHRkoK-.js';
12
113
  * gate, execute, verify, reflect. These types are intentionally domain-agnostic
13
114
  * — the harness loop is not specific to eval workflows.
14
115
  *
116
+ * Runtime constants and helpers live in `./defaults.ts`. The harness barrel
117
+ * (`./index.ts`) re-exports both so external consumers see a single surface.
118
+ *
15
119
  * @module
16
120
  */
17
121
 
18
- /** Sources that can produce intake items. */
19
- type IntakeSource = "eval" | "test" | "human" | "code-change" | "hypothesis" | "parity";
122
+ /** Known intake source tags. */
123
+ type KnownIntakeSource = "eval" | "test" | "human" | "code-change" | "hypothesis" | "parity";
124
+ /**
125
+ * Sources that can produce intake items. Open union — the known tags
126
+ * retain IDE autocomplete while user-supplied strings (e.g. `"schema"`,
127
+ * `"slack"`) pass through without a type change.
128
+ */
129
+ type IntakeSource = KnownIntakeSource | (string & {});
20
130
  /** Severity levels for intake items. */
21
131
  type Severity = "critical" | "high" | "medium" | "low";
22
132
  /** Root cause categories for triage classification. */
23
133
  type RootCause = "composition" | "missing-fn" | "bad-docs" | "schema-gap" | "regression" | "unknown";
24
134
  /** Intervention types that address root causes. */
25
135
  type Intervention = "template" | "catalog-fn" | "docs" | "wrapper" | "schema-change" | "investigate";
26
- /** Routing destinations after triage. */
136
+ /** Routing destinations after triage. Closed union — iterated via `QUEUE_NAMES`. */
27
137
  type QueueRoute = "auto-fix" | "needs-decision" | "investigation" | "backlog";
28
- /** Ordered queue route names for iteration. */
29
- declare const QUEUE_NAMES: readonly QueueRoute[];
30
138
  /**
31
139
  * An item entering the harness loop via the INTAKE stage.
32
140
  *
33
141
  * All intake sources produce this uniform shape — the intake topic
34
142
  * doesn't care where items came from.
143
+ *
144
+ * `$`-prefix keys (`$reingestions`, `$retries` on {@link TriagedItem}) are
145
+ * framework-only — an LLM round-tripping the serialized item is far less
146
+ * likely to echo back a `$`-prefixed key than an `_`-prefixed one, which
147
+ * neutralizes the field-collision class that surfaced earlier in the
148
+ * router's spread order.
35
149
  */
36
150
  interface IntakeItem {
37
151
  source: IntakeSource;
@@ -42,7 +156,7 @@ interface IntakeItem {
42
156
  severity?: Severity;
43
157
  relatedTo?: string[];
44
158
  /** Item-carried reingestion count. Incremented on each full-loop reingestion. */
45
- _reingestions?: number;
159
+ $reingestions?: number;
46
160
  }
47
161
  /** Output of the TRIAGE stage — enriched intake item with classification. */
48
162
  interface TriagedItem extends IntakeItem {
@@ -52,7 +166,7 @@ interface TriagedItem extends IntakeItem {
52
166
  priority: number;
53
167
  triageReasoning?: string;
54
168
  /** Item-carried retry count. Incremented on each fast-retry pass. */
55
- _retries?: number;
169
+ $retries?: number;
56
170
  }
57
171
  /** Effectiveness record for a rootCause→intervention pair. */
58
172
  interface StrategyEntry {
@@ -64,9 +178,15 @@ interface StrategyEntry {
64
178
  }
65
179
  /** Key format: `${rootCause}→${intervention}`. */
66
180
  type StrategyKey = `${RootCause}→${Intervention}`;
67
- declare function strategyKey(rootCause: RootCause, intervention: Intervention): StrategyKey;
68
- /** LLM output shape from the EXECUTE stage (partial — lacks `item`). */
69
- type ExecuteOutput = {
181
+ /**
182
+ * LLM output shape from the EXECUTE stage (partial — lacks `item`).
183
+ *
184
+ * Generic over the artifact type `A` so typed executors like
185
+ * `refineExecutor<T>` can flow `T` through to an `evalVerifier<T>` without
186
+ * the caller casting `artifact` at the boundary. Defaults to `unknown`
187
+ * for escape-hatch executors that carry opaque state.
188
+ */
189
+ type ExecuteOutput<A = unknown> = {
70
190
  outcome: "success" | "failure" | "partial";
71
191
  detail: string;
72
192
  /**
@@ -76,10 +196,10 @@ type ExecuteOutput = {
76
196
  * this — it's an escape hatch for reactive executors carrying structured
77
197
  * output (a refined prompt, a patched spec, a generated template, ...).
78
198
  */
79
- artifact?: unknown;
199
+ artifact?: A;
80
200
  };
81
201
  /** Full execution result assembled downstream (LLM output + context). */
82
- interface ExecutionResult {
202
+ interface ExecutionResult<A = unknown> {
83
203
  item: TriagedItem;
84
204
  outcome: "success" | "failure" | "partial";
85
205
  detail: string;
@@ -88,18 +208,16 @@ interface ExecutionResult {
88
208
  * one. Reactive executors like `refineExecutor` populate this; LLM-backed
89
209
  * default executors leave it undefined.
90
210
  */
91
- artifact?: unknown;
211
+ artifact?: A;
92
212
  }
93
213
  /** Whether an error is self-correctable (fast-retry) or structural (full loop). */
94
214
  type ErrorClass = "self-correctable" | "structural";
95
215
  /** Classifier for fast-retry path. */
96
216
  type ErrorClassifier = (result: ExecutionResult) => ErrorClass;
97
- /** Default error classifier: parse/config errors are self-correctable. */
98
- declare function defaultErrorClassifier(result: ExecutionResult): ErrorClass;
99
217
  /** Result of the VERIFY stage. */
100
- interface VerifyResult {
218
+ interface VerifyResult<A = unknown> {
101
219
  item: TriagedItem;
102
- execution: ExecutionResult;
220
+ execution: ExecutionResult<A>;
103
221
  verified: boolean;
104
222
  findings: string[];
105
223
  errorClass?: ErrorClass;
@@ -125,24 +243,19 @@ interface PrioritySignals {
125
243
  /** Strategy model effectiveness boost amount (default 15). */
126
244
  effectivenessBoost?: number;
127
245
  }
128
- /** Default severity weights. */
129
- declare const DEFAULT_SEVERITY_WEIGHTS: Record<Severity, number>;
130
- /** Default decay rate: ~7-day half-life. */
131
- declare const DEFAULT_DECAY_RATE: number;
246
+
132
247
  /** Per-queue configuration in the harness loop. */
133
248
  interface QueueConfig {
134
249
  /** Whether this queue is gated (requires human approval). */
135
250
  gated: boolean;
136
251
  /** Maximum pending items in the gate (default Infinity). */
137
252
  maxPending?: number;
138
- /** Start the gate in open (auto-approve) mode? */
253
+ /** Start the gate in open (auto-approve) mode? Only meaningful when `gated: true`. */
139
254
  startOpen?: boolean;
140
255
  }
141
- /** Default queue configurations. */
142
- declare const DEFAULT_QUEUE_CONFIGS: Record<QueueRoute, QueueConfig>;
143
256
  /**
144
257
  * Pluggable EXECUTE slot. Given the reactive `executeInput` stream of
145
- * triaged items, produce a stream of `ExecuteOutput` decisions.
258
+ * triaged items, produce a stream of `ExecuteOutput<A>` decisions.
146
259
  *
147
260
  * **Contract** (see design note in `docs/optimizations.md` / session log):
148
261
  * 1. Emit DATA exactly once per completed execution — not on input arrival.
@@ -157,50 +270,72 @@ declare const DEFAULT_QUEUE_CONFIGS: Record<QueueRoute, QueueConfig>;
157
270
  *
158
271
  * `refineExecutor` makes all four rules structurally unreachable.
159
272
  */
160
- type HarnessExecutor = (input: Node<TriagedItem | null>) => Node<ExecuteOutput | null>;
273
+ type HarnessExecutor<A = unknown> = (input: Node<TriagedItem | null>) => Node<ExecuteOutput<A> | null>;
161
274
  /**
162
- * Pluggable VERIFY slot. Receives `[executeOutput, triagedItem]` pairs
163
- * sampled via `withLatestFrom(executeNode, executeInput)` and produces
164
- * `VerifyOutput` decisions.
275
+ * Pluggable VERIFY slot. Receives a pre-paired `[executeOutput, triagedItem]`
276
+ * context node — the harness creates this via `withLatestFrom(executeNode,
277
+ * executeInput)` once and shares it with both the verifier and the internal
278
+ * fast-retry dispatcher, so verifier implementations do NOT need to build
279
+ * their own pairing node (and doubling the `withLatestFrom` would pay the
280
+ * subscription cost twice).
165
281
  *
166
282
  * Same contract rules 1–3 as {@link HarnessExecutor}. Rule 4 does not
167
283
  * apply (verify output isn't a primary to a further withLatestFrom).
168
284
  *
169
285
  * `evalVerifier` handles the re-evaluation case against affected eval tasks.
170
286
  */
171
- type HarnessVerifier = (context: Node<[ExecuteOutput | null, TriagedItem | null]>) => Node<VerifyOutput | null>;
287
+ type HarnessVerifier<A = unknown> = (context: Node<readonly [ExecuteOutput<A> | null, TriagedItem | null] | null>) => Node<VerifyOutput | null>;
288
+ /** Triage prompt callable shape — pair of `[intake item, strategy snapshot]`. */
289
+ type TriagePromptFn = (pair: readonly [IntakeItem, StrategySnapshot]) => string;
290
+ /** Execute prompt callable shape. */
291
+ type ExecutePromptFn = (item: TriagedItem) => string;
292
+ /** Verify prompt callable shape — pair of `[execute output, triaged item]`. */
293
+ type VerifyPromptFn<A = unknown> = (pair: readonly [ExecuteOutput<A> | null, TriagedItem | null]) => string;
172
294
  /** Options for {@link harnessLoop}. */
173
- interface HarnessLoopOptions {
295
+ interface HarnessLoopOptions<A = unknown> {
174
296
  /** LLM adapter for promptNode-based stages (triage + any default executor/verifier). */
175
- adapter: unknown;
176
- /** Custom triage prompt (receives IntakeItem + strategy model as context). */
177
- triagePrompt?: string | ((...args: unknown[]) => string);
297
+ adapter: LLMAdapter;
298
+ /** Custom triage prompt (receives IntakeItem + strategy snapshot as a tuple). */
299
+ triagePrompt?: string | TriagePromptFn;
178
300
  /**
179
301
  * Execute prompt — sugar over the default LLM executor. Ignored when
180
302
  * `executor` is set.
181
303
  */
182
- executePrompt?: string | ((...args: unknown[]) => string);
304
+ executePrompt?: string | ExecutePromptFn;
183
305
  /**
184
306
  * Verify prompt — sugar over the default LLM verifier. Ignored when
185
307
  * `verifier` is set.
186
308
  */
187
- verifyPrompt?: string | ((...args: unknown[]) => string);
309
+ verifyPrompt?: string | VerifyPromptFn<A>;
188
310
  /**
189
311
  * Pluggable EXECUTE slot. When omitted, the harness uses a `promptNode`
190
312
  * driven by `adapter` + `executePrompt`. Replace to plug in a
191
313
  * `refineExecutor`, tool-using agent, or any reactive execution pipeline.
192
314
  */
193
- executor?: HarnessExecutor;
315
+ executor?: HarnessExecutor<A>;
194
316
  /**
195
317
  * Pluggable VERIFY slot. When omitted, the harness uses a `promptNode`
196
318
  * driven by `adapter` + `verifyPrompt`. Replace to plug in an
197
319
  * `evalVerifier` that re-runs affected eval tasks.
198
320
  */
199
- verifier?: HarnessVerifier;
321
+ verifier?: HarnessVerifier<A>;
200
322
  /** Per-queue configuration overrides. */
201
323
  queues?: Partial<Record<QueueRoute, QueueConfig>>;
202
324
  /** Priority scoring signals. */
203
325
  priority?: PrioritySignals;
326
+ /**
327
+ * Reactive last-human-interaction timestamp (monotonic ns). Drives the
328
+ * priority score age-decay term for `HarnessGraph.priorityScores`.
329
+ *
330
+ * **Required when `opts.priority` is set.** Priority score nodes only
331
+ * re-derive when `topic.latest`, `strategy.node`, or this tick settles —
332
+ * an idle queue would freeze its age at construction time if we
333
+ * auto-defaulted. Typical sources:
334
+ * - `fromTimer(60_000)` — steady tick, uniform decay.
335
+ * - `state(monotonicNs())` — bumped from a human-interaction handler.
336
+ * - A reactive view over a DB column / external metrics source.
337
+ */
338
+ lastInteractionNs?: Node<number>;
204
339
  /** Error classifier for fast-retry path. */
205
340
  errorClassifier?: ErrorClassifier;
206
341
  /** Max fast-retries per item before routing to full intake (default 2). */
@@ -215,6 +350,226 @@ interface HarnessLoopOptions {
215
350
  retainedLimit?: number;
216
351
  }
217
352
 
353
+ /**
354
+ * actuatorExecutor — bridge a side-effecting actuator into the harness EXECUTE slot.
355
+ *
356
+ * `refineExecutor` covers the artifact-typed case (refine a candidate
357
+ * `T` against an evaluator); `actuatorExecutor` covers the side-effecting
358
+ * case (write a catalog entry, mutate a template registry, edit a doc on
359
+ * disk). The user's `apply` callback owns the side effect; the executor
360
+ * wraps it in the per-item lifecycle that makes the four
361
+ * {@link HarnessExecutor} contract rules structurally unreachable:
362
+ *
363
+ * 1. **One DATA per actuation.** The inner producer captures the first
364
+ * DATA from the bridged `apply` result, emits a single
365
+ * `ExecuteOutput<R>` carrying the actuation record as `artifact`, and
366
+ * completes. Subsequent inner DATAs are ignored.
367
+ * 2. **Cancel-on-supersede.** A new triaged item supersedes via
368
+ * `switchMap`; the prior producer's cleanup fires `ac.abort()`, which
369
+ * propagates into `apply`'s `signal` (and through `fromAny`'s
370
+ * internal cancellation hooks) so signal-aware actuators stop
371
+ * in-flight work instead of double-writing.
372
+ * 3. **Item via deps, not closure mirror.** The triaged item is captured
373
+ * in the `switchMap` callback's lexical scope, not mirrored to a
374
+ * side-state node — same shape as `refineExecutor`.
375
+ * 4. **Fires on result, not input.** The producer emits exactly when
376
+ * `apply`'s bridged node settles (or fails). Input-arrival waves
377
+ * never produce an `ExecuteOutput`.
378
+ *
379
+ * **What `apply` may return.** Anything `fromAny` accepts: a
380
+ * `Promise<R>`, a `Node<R>`, an `AsyncIterable<R>`, an `Iterable<R>`,
381
+ * or a synchronous `R`. `Promise<R>` is the typical shape (`writeFile`,
382
+ * `fetch`, `db.execute`); reactive composition through `Node<R>` is the
383
+ * escape hatch when the actuator itself wants to surface intermediate
384
+ * progress before settling.
385
+ *
386
+ * **Pairing with `evalVerifier`.** `ExecuteOutput.artifact` is set to
387
+ * the actuation record; an `evalVerifier<R>` whose `extractArtifact`
388
+ * returns the record (or a transform of it — typically the post-apply
389
+ * world state needed by the evaluator) closes the EXECUTE → VERIFY loop
390
+ * with consistent typing end-to-end.
391
+ *
392
+ * @module
393
+ */
394
+
395
+ /**
396
+ * What an actuator's `apply` may return. Mirrors `NodeInput<R>` plus a
397
+ * raw `R` for synchronous side effects, so callers can write the most
398
+ * direct shape for their case (Promise for async I/O, raw record for
399
+ * pure in-memory mutation).
400
+ */
401
+ type ActuatorResult<R> = NodeInput<R>;
402
+ /** Configuration for {@link actuatorExecutor}. */
403
+ interface ActuatorExecutorConfig<R> {
404
+ /**
405
+ * Apply the side effect for this triaged item. Receives the abort
406
+ * signal — actuators that own real I/O should thread `signal` into
407
+ * `fetch`, `fs.writeFile`, child-process kills, etc. so that
408
+ * `switchMap` supersede actually cancels in-flight work.
409
+ *
410
+ * The first DATA emitted by the bridged result wins; later DATAs are
411
+ * discarded. ERROR (or a synchronous throw) is mapped via `onError`.
412
+ */
413
+ apply: (item: TriagedItem, opts: {
414
+ signal: AbortSignal;
415
+ }) => ActuatorResult<R>;
416
+ /**
417
+ * Optional gate — when provided and returning `false`, the actuator
418
+ * is skipped and the executor emits an `ExecuteOutput` with
419
+ * `outcome: "failure"` and detail from `skipDetail` (default
420
+ * `"actuator skipped (shouldApply returned false)"`). Use this to
421
+ * route interventions the actuator can't handle (e.g. `intervention:
422
+ * "investigate"` items) into the failure path so the verifier sees
423
+ * them.
424
+ */
425
+ shouldApply?: (item: TriagedItem) => boolean;
426
+ /** Detail string for the skip path. Default: includes intervention name. */
427
+ skipDetail?: (item: TriagedItem) => string;
428
+ /**
429
+ * Map a successfully-applied actuation record into an `ExecuteOutput<R>`.
430
+ * Default: `outcome: "success"`, `detail` references the intervention
431
+ * + summary, `artifact: record`.
432
+ */
433
+ toOutput?: (record: R, item: TriagedItem) => ExecuteOutput<R>;
434
+ /**
435
+ * Map a thrown / ERROR result into an `ExecuteOutput<R>`. Default:
436
+ * `outcome: "failure"`, `detail` carries the error message,
437
+ * `artifact: undefined`.
438
+ */
439
+ onError?: (err: unknown, item: TriagedItem) => ExecuteOutput<R>;
440
+ /** Node name prefix for `describe()` introspection. Default `"actuator-executor"`. */
441
+ name?: string;
442
+ }
443
+ /**
444
+ * Build a {@link HarnessExecutor} backed by a side-effecting actuator.
445
+ *
446
+ * @example File-system actuator that writes a catalog entry and emits the diff.
447
+ * ```ts
448
+ * const harness = harnessLoop("repair", {
449
+ * adapter,
450
+ * executor: actuatorExecutor<CatalogPatch>({
451
+ * async apply(item, { signal }) {
452
+ * const patch = patchFromItem(item);
453
+ * await fs.writeFile(patch.path, patch.contents, { signal });
454
+ * return patch;
455
+ * },
456
+ * shouldApply: (item) => item.intervention === "catalog-fn",
457
+ * }),
458
+ * verifier: evalVerifier<CatalogPatch>({
459
+ * evaluator,
460
+ * datasetFor,
461
+ * extractArtifact: (exec) => exec.artifact ?? null,
462
+ * }),
463
+ * });
464
+ * ```
465
+ */
466
+ declare function actuatorExecutor<R>(config: ActuatorExecutorConfig<R>): HarnessExecutor<R>;
467
+
468
+ /**
469
+ * autoSolidify — promote successful VERIFY runs into a durable artifact
470
+ * (catalog entry, skill, template, doc edit, …).
471
+ *
472
+ * Closes the dogfood retrospective loop: when the harness's VERIFY
473
+ * stage reports `verified: true`, the validated intervention should
474
+ * become an authoring artifact the next loop run can rely on. This
475
+ * primitive is the generic substrate — pass a `write` callback that
476
+ * does the actual promotion (e.g. `overlay.upsertTemplate` for the
477
+ * dogfood catalog overlay; `fs.writeFile` for a doc edit; `ctx.skill`
478
+ * for a Hermes-style skill registry).
479
+ *
480
+ * @example Wire the catalog overlay as the solidify target.
481
+ * ```ts
482
+ * const solidified = autoSolidify({
483
+ * verifyResults: harness.verifyResults.latest,
484
+ * extract: (vr) => vr.execution.artifact ?? null,
485
+ * write: (entry, vr) => overlay.upsertFn(`learned-${vr.item.summary}`, entry),
486
+ * });
487
+ * solidified.subscribe(() => {}); // keep alive for log
488
+ * ```
489
+ *
490
+ * **Why a node and not just an effect.** The returned `Node<R>` emits
491
+ * each promoted artifact, so callers can pipe solidifications through
492
+ * the standard reactive surface (`describe()`, `observe()`, replay
493
+ * buffers) instead of side-channel logging. An audit / dashboard that
494
+ * wants "what was learned this run?" subscribes to the returned node;
495
+ * the `write` callback owns the durable side effect.
496
+ *
497
+ * **Idempotency is the caller's responsibility.** The primitive
498
+ * promotes every `verified: true` wave that passes the predicate. If
499
+ * the harness re-verifies the same item (e.g. via reingestion), the
500
+ * `write` callback is invoked again. Wrap your write fn with a
501
+ * dedup-by-key guard if your target store would otherwise bloat. The
502
+ * inner `seen` set inside this factory is intentionally absent — the
503
+ * harness already retains via topic logs and the user may want
504
+ * re-promotion semantics that are domain-specific.
505
+ *
506
+ * @module
507
+ */
508
+
509
+ /**
510
+ * Configuration for {@link autoSolidify}.
511
+ *
512
+ * `R` is the artifact type the upstream EXECUTE stage produced (and
513
+ * `evalVerifier` carries through `execution.artifact`). `T` is the
514
+ * promotion shape — what `write` consumes and what the returned node
515
+ * emits. Often `T = R`, but they diverge when the actuator's raw
516
+ * artifact needs a transform before storing (e.g. wrap a `CatalogPatch`
517
+ * into a `CatalogEntry` with effectiveness metadata).
518
+ */
519
+ interface AutoSolidifyConfig<R, T = R> {
520
+ /** Reactive verify-result stream. Typically `harness.verifyResults.latest`. */
521
+ verifyResults: Node<VerifyResult<R> | null>;
522
+ /**
523
+ * Pull the value-to-promote out of a verified VerifyResult.
524
+ * Default: `(vr) => vr.execution.artifact as T | null`. Return `null`
525
+ * to skip a particular VerifyResult even when `verified: true` (e.g.
526
+ * an LLM-default executor produces no artifact and there's nothing to
527
+ * solidify).
528
+ */
529
+ extract?: (vr: VerifyResult<R>) => T | null;
530
+ /**
531
+ * Optional gate beyond `verified === true`. When provided, the
532
+ * primitive only promotes when this returns `true`. Default: pass
533
+ * everything verified.
534
+ *
535
+ * Useful predicates:
536
+ * - `(vr) => vr.item.intervention === "catalog-fn"` — only catalog work.
537
+ * - `(vr) => (vr.findings ?? []).every(f => !/regression/i.test(f))` —
538
+ * skip even-passes that mention regressions.
539
+ */
540
+ predicate?: (vr: VerifyResult<R>) => boolean;
541
+ /**
542
+ * Promote — usually a side effect (write to overlay, fs, KG, etc.).
543
+ * Receives the extracted artifact AND the originating VerifyResult so
544
+ * the writer can use any context it needs (item summary, eval task
545
+ * IDs, finding text, …) when shaping the durable record.
546
+ */
547
+ write: (artifact: T, vr: VerifyResult<R>) => void;
548
+ /** Node name for `describe()` introspection. Default `"auto-solidify"`. */
549
+ name?: string;
550
+ }
551
+ /**
552
+ * Build a `Node<T>` that subscribes to `verifyResults`, filters to
553
+ * verified passes that produced an extractable artifact, runs `write`,
554
+ * and emits the artifact. Use the returned node as a subscription
555
+ * point for audit / dashboard / log pipelines.
556
+ *
557
+ * **Terminal-on-error semantics.** A throw from `predicate`, `extract`,
558
+ * or `write` surfaces as `[[ERROR]]` on the returned node and
559
+ * **terminates** it — the upstream subscription tears down and no
560
+ * further DATA is emitted. This matches the spec's terminal-frame
561
+ * contract for ERROR. If you want the solidify node to stay live
562
+ * across user-callback throws, wrap your callbacks with try/catch
563
+ * internally and emit a sentinel value or no-op on failure. A future
564
+ * non-terminal `errors: Node<unknown>` companion may surface failures
565
+ * without terminating the success stream — flagged as a follow-up.
566
+ *
567
+ * @returns A `Node<T>` that emits one DATA per promoted artifact.
568
+ * Stays live as long as `verifyResults` is live AND no user callback
569
+ * has thrown.
570
+ */
571
+ declare function autoSolidify<R, T = R>(config: AutoSolidifyConfig<R, T>): Node<T>;
572
+
218
573
  /**
219
574
  * Harness bridge factories (roadmap §9.0).
220
575
  *
@@ -423,7 +778,7 @@ declare function notifyEffect<T>(topic: TopicGraph<T>, transport: NotifyTranspor
423
778
  * artifact instead of asking an LLM to opine on the fix.
424
779
  *
425
780
  * Pairs naturally with {@link refineExecutor}: refineExecutor emits an
426
- * `ExecuteOutput.artifact` holding the converged candidate; evalVerifier
781
+ * `ExecuteOutput<T>.artifact` holding the converged candidate; evalVerifier
427
782
  * pulls it out via `extractArtifact` and feeds a single-candidate batch
428
783
  * into the same `Evaluator<T>` shape that `refineLoop` used. Consistent
429
784
  * scoring between EXECUTE and VERIFY — no "LLM said it looks fine" gap.
@@ -463,7 +818,7 @@ interface EvalVerifierConfig<T> {
463
818
  * surfaces as a runtime error inside `evaluator`, not here — supply a
464
819
  * narrowing `extractArtifact` if you need stricter validation.
465
820
  */
466
- extractArtifact?: (exec: ExecuteOutput, item: TriagedItem) => T | null | undefined;
821
+ extractArtifact?: (exec: ExecuteOutput<T>, item: TriagedItem) => T | null | undefined;
467
822
  /**
468
823
  * Reactive evaluator — same contract as `refineLoop`'s `Evaluator<T>`.
469
824
  * Typically this is the SAME evaluator configured inside `refineExecutor`
@@ -487,6 +842,12 @@ interface EvalVerifierConfig<T> {
487
842
  * Build a {@link HarnessVerifier} that re-runs the eval suite against the
488
843
  * artifact produced by EXECUTE.
489
844
  *
845
+ * Consumes the shared `[executeOutput, item]` context node that the
846
+ * harness pre-pairs via `withLatestFrom` — no internal re-wrap here (QA
847
+ * round: "defaultLlmVerifier double-wraps withLatestFrom"). The harness's
848
+ * single `executeContextNode` is reused by both the verifier and the
849
+ * fast-retry dispatcher, so exec + item are subscribed once per wave.
850
+ *
490
851
  * @example Pair with refineExecutor for end-to-end eval consistency.
491
852
  * ```ts
492
853
  * const evaluator: Evaluator<CatalogEntry> = (cands, ds) => runEval(cands, ds);
@@ -497,49 +858,57 @@ interface EvalVerifierConfig<T> {
497
858
  * });
498
859
  * ```
499
860
  */
500
- declare function evalVerifier<T>(config: EvalVerifierConfig<T>): HarnessVerifier;
501
-
861
+ declare function evalVerifier<T>(config: EvalVerifierConfig<T>): HarnessVerifier<T>;
502
862
  /**
503
- * Strategy model and priority scoring (roadmap §9.0).
504
- *
505
- * Pure-computation derived nodes no LLM, no async.
506
- *
507
- * @module
863
+ * Config for {@link harnessEvalPair} the typed bundle that produces a
864
+ * matched `refineExecutor<T>` + `evalVerifier<T>` pair sharing one
865
+ * {@link Evaluator} and one `datasetFor` resolver.
508
866
  */
509
-
510
- /** Snapshot shape for the strategy model node. */
511
- type StrategySnapshot = ReadonlyMap<StrategyKey, StrategyEntry>;
512
- /** Bundle returned by {@link strategyModel}. */
513
- interface StrategyModelBundle {
514
- /** Reactive node — current strategy map. */
515
- readonly node: Node<StrategySnapshot>;
516
- /** Record a completed issue (success or failure). */
517
- record(rootCause: RootCause, intervention: Intervention, success: boolean): void;
518
- /** Look up effectiveness for a specific pair. */
519
- lookup(rootCause: RootCause, intervention: Intervention): StrategyEntry | undefined;
520
- /** Tear down internal keepalive subscriptions. */
521
- dispose(): void;
867
+ interface HarnessEvalPairConfig<T> {
868
+ /** Map a triaged item to the seed candidate. */
869
+ seedFrom: (item: TriagedItem) => T;
870
+ /** The reactive evaluator used by BOTH executor and verifier. */
871
+ evaluator: Evaluator<T>;
872
+ /** The refinement strategy (e.g. `errorCritique(teacher)`). */
873
+ strategy: RefineStrategy<T>;
874
+ /** Resolve dataset rows per triaged item. */
875
+ datasetFor: (item: TriagedItem) => readonly DatasetItem[];
876
+ /** Pass-threshold for the verifier. Default `0.5`. */
877
+ threshold?: number;
878
+ /** Convergence / budget options forwarded to each inner `refineLoop`. */
879
+ refine?: Omit<RefineLoopOptions, "dataset" | "name">;
880
+ /**
881
+ * Shared node-name prefix — the executor becomes `${name}-exec` and the
882
+ * verifier `${name}-verify` for distinct but related describe() paths.
883
+ * Default `"harness-pair"`.
884
+ */
885
+ name?: string;
522
886
  }
523
887
  /**
524
- * Create a strategy model that tracks `rootCause × intervention successRate`
525
- * over completed issues. Pure derived computation — no LLM.
888
+ * Typed factory that returns a matched `{ executor, verifier }` pair.
526
889
  *
527
- * The model feeds back into TRIAGE for routing hints.
528
- */
529
- declare function strategyModel(): StrategyModelBundle;
530
- /**
531
- * Create a priority scoring derived node for a single triaged item.
890
+ * Prevents the "executor wrote `A`, verifier expected `B`" class of runtime
891
+ * cast errors — `T` is threaded through both sides, so mixing up the
892
+ * configuration is a compile error instead of a silent `as T` in
893
+ * `extractArtifact`. Shares the evaluator so EXECUTE and VERIFY score with
894
+ * identical semantics (the whole point of `evalVerifier`).
532
895
  *
533
- * Combines severity weight, attention decay, strategy model effectiveness,
534
- * and an optional external urgency signal.
535
- *
536
- * @param item - Node holding the triaged item.
537
- * @param strategy - Strategy model node.
538
- * @param lastInteractionNs - Node holding the monotonic timestamp (ns) of last human interaction.
539
- * @param urgency - Optional external urgency signal node (0–1 scale).
540
- * @param signals - Configurable scoring parameters.
896
+ * @example
897
+ * ```ts
898
+ * const { executor, verifier } = harnessEvalPair<CatalogEntry>({
899
+ * seedFrom: (item) => initialCatalogEntry(item),
900
+ * evaluator: (cands, ds) => runEvalBatch(cands, ds),
901
+ * strategy: errorCritique({ teacher, width: 3 }),
902
+ * datasetFor: affectedTasksFor,
903
+ * threshold: 0.8,
904
+ * });
905
+ * const harness = harnessLoop<CatalogEntry>("repair", { adapter, executor, verifier });
906
+ * ```
541
907
  */
542
- declare function priorityScore(item: Node<TriagedItem>, strategy: Node<StrategySnapshot>, lastInteractionNs: Node<number>, urgency?: Node<number>, signals?: PrioritySignals): Node<number>;
908
+ declare function harnessEvalPair<T>(config: HarnessEvalPairConfig<T>): {
909
+ executor: HarnessExecutor<T>;
910
+ verifier: HarnessVerifier<T>;
911
+ };
543
912
 
544
913
  /**
545
914
  * harnessLoop() factory (roadmap §9.0).
@@ -548,6 +917,15 @@ declare function priorityScore(item: Node<TriagedItem>, strategy: Node<StrategyS
548
917
  * EXECUTE → VERIFY → REFLECT. Static topology, flowing data — the Kafka
549
918
  * insight applied to human+LLM collaboration.
550
919
  *
920
+ * **Hub model (Wave B Unit 20 C + Q1).** All reactive-wire-crossing topics
921
+ * live in one `MessagingHubGraph` exposed as `HarnessGraph.queues`: the
922
+ * four per-route queues, an `__unrouted` dead-letter, plus `intake`,
923
+ * `retry`, `verify-results`, and the `triage-output` fan-in topic. The
924
+ * router is a single derived/effect pair that publishes to `triage-output`;
925
+ * per-route `topicBridge`s fan out by `map:` predicate. Routing is data
926
+ * (topic name), not code — every routing decision is a visible edge in
927
+ * `describe()` / `explain()`.
928
+ *
551
929
  * @module
552
930
  */
553
931
 
@@ -565,33 +943,103 @@ declare function priorityScore(item: Node<TriagedItem>, strategy: Node<StrategyS
565
943
  * @param prompt - Prompt template (string or `(item) => string`). Defaults
566
944
  * to the harness's built-in execute prompt.
567
945
  */
568
- declare function defaultLlmExecutor(adapter: LLMAdapter, prompt?: HarnessLoopOptions["executePrompt"]): HarnessExecutor;
946
+ declare function defaultLlmExecutor<A = unknown>(adapter: LLMAdapter, prompt?: string | ExecutePromptFn): HarnessExecutor<A>;
569
947
  /**
570
- * Build the default VERIFY slot — a `promptNode` that reviews the
571
- * `[executeOutput, item]` pair from the execute-context.
948
+ * Build the default VERIFY slot — a `promptNode` that reviews a
949
+ * pre-paired `[executeOutput, item]` context node. The harness creates
950
+ * the pairing (via `withLatestFrom(executeNode, executeInput)`) once and
951
+ * shares it with both the verifier and the internal fast-retry
952
+ * dispatcher, so the default verifier can consume the context directly
953
+ * without building its own withLatestFrom.
572
954
  *
573
955
  * @param adapter - LLMAdapter for the verify call.
574
956
  * @param prompt - Prompt template. Defaults to the harness's built-in
575
957
  * verify prompt (receives the full pair, extracts both).
576
958
  */
577
- declare function defaultLlmVerifier(adapter: LLMAdapter, prompt?: HarnessLoopOptions["verifyPrompt"]): HarnessVerifier;
578
- /** The graph returned by {@link harnessLoop}. */
579
- declare class HarnessGraph extends Graph {
580
- /** Intake topic publish items here to enter the loop. */
581
- readonly intake: TopicGraph<IntakeItem>;
582
- /** Per-route queue topics. */
583
- readonly queues: ReadonlyMap<QueueRoute, TopicGraph<TriagedItem>>;
959
+ declare function defaultLlmVerifier<A = unknown>(adapter: LLMAdapter, prompt?: string | VerifyPromptFn<A>): HarnessVerifier<A>;
960
+ /**
961
+ * The graph returned by {@link harnessLoop}. Wraps a single
962
+ * {@link MessagingHubGraph} that owns all reactive-wire-crossing topics
963
+ * (intake, per-route queues, `__unrouted`, retry, verify-results,
964
+ * triage-output). Sugar getters expose the canonical topics so the
965
+ * surface stays ergonomic.
966
+ */
967
+ declare class HarnessGraph<A = unknown> extends Graph {
968
+ /** Messaging hub — the routing-data plane. Queue topics live here. */
969
+ readonly queues: MessagingHubGraph;
970
+ /**
971
+ * Per-route JobQueueGraph mirrors (Unit 20 D). Each triaged item that
972
+ * reaches a queue is also enqueued here, giving reactive `depth` +
973
+ * `pending` + `jobs` observables. `fastRetry` terminal decisions
974
+ * {@link JobQueueGraph.ack ack} / {@link JobQueueGraph.nack nack} the
975
+ * matching job. The executor dataflow is unchanged — claim/ack/nack
976
+ * runs as an audit-side layer (per Unit 21's "interface unchanged"
977
+ * decision). Inspect via `harness.jobs.get(route).depth.cache` for
978
+ * backpressure metrics.
979
+ */
980
+ readonly jobs: ReadonlyMap<QueueRoute, JobQueueGraph<TriagedItem>>;
584
981
  /** Per-route gate controllers (only for gated queues). */
585
982
  readonly gates: ReadonlyMap<QueueRoute, GateController<TriagedItem>>;
983
+ /**
984
+ * Per-route queue topics — typed accessor for the four
985
+ * {@link QUEUE_NAMES} entries (`auto-fix`, `needs-decision`,
986
+ * `investigation`, `backlog`). Mirrors the `gates` / `jobs` map
987
+ * shape so callers can iterate `[route, topic]` pairs without
988
+ * hand-rolling `harness.queues.topicNames()` + meta-topic exclusion.
989
+ *
990
+ * Excludes the meta topics that share the hub:
991
+ * `intake` (use {@link intake}), `verify-results` (use
992
+ * {@link verifyResults}), `retry` (use {@link retry}), `__unrouted`
993
+ * (use {@link unrouted}), and the internal `triage-output` fan-in.
994
+ *
995
+ * **Why this exists.** `for (const [, topic] of harness.queues)`
996
+ * appears to iterate via `Graph[Symbol.iterator]`, but that yields
997
+ * locally-registered nodes only — and `MessagingHubGraph` mounts
998
+ * topics as child graphs rather than registering them locally, so
999
+ * the loop yields nothing. This map gives a typed, working
1000
+ * iteration path.
1001
+ */
1002
+ readonly queueTopics: ReadonlyMap<QueueRoute, TopicGraph<TriagedItem>>;
586
1003
  /** Strategy model bundle — record outcomes, lookup effectiveness. */
587
1004
  readonly strategy: StrategyModelBundle;
588
- /** Verify results topic — subscribe to see verification outcomes. */
589
- readonly verifyResults: TopicGraph<VerifyResult>;
590
1005
  /** Global retry count across all items (circuit breaker). Reactive — subscribable. */
591
1006
  readonly totalRetries: Node<number>;
592
1007
  /** Global reingestion count across all items (circuit breaker). Reactive — subscribable. */
593
1008
  readonly totalReingestions: Node<number>;
594
- constructor(name: string, intake: TopicGraph<IntakeItem>, queues: Map<QueueRoute, TopicGraph<TriagedItem>>, gates: Map<QueueRoute, GateController<TriagedItem>>, strategy: StrategyModelBundle, verifyResults: TopicGraph<VerifyResult>, totalRetries: Node<number>, totalReingestions: Node<number>);
1009
+ /**
1010
+ * Per-route priority score nodes, populated only when `opts.priority` is
1011
+ * set on {@link harnessLoop}. Each node emits a score combining severity,
1012
+ * attention decay, and strategy-model effectiveness for the route's
1013
+ * current head-of-queue item. `undefined` means the caller did not opt
1014
+ * in to priority scoring.
1015
+ */
1016
+ readonly priorityScores?: ReadonlyMap<QueueRoute, Node<number>>;
1017
+ constructor(name: string, queues: MessagingHubGraph, 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>>);
1018
+ /** Intake topic — publish items here to enter the loop. */
1019
+ get intake(): TopicGraph<IntakeItem>;
1020
+ /** Verify results topic — subscribe to see verification outcomes. */
1021
+ get verifyResults(): TopicGraph<VerifyResult<A>>;
1022
+ /** Retry feedback topic — fast-retry re-entry point. */
1023
+ get retry(): TopicGraph<TriagedItem>;
1024
+ /** Dead-letter topic for items whose LLM-chosen route is unknown. */
1025
+ get unrouted(): TopicGraph<TriagedItem>;
1026
+ /**
1027
+ * Stage-label → observe-path map for the 7 pipeline stages (Unit 22 C).
1028
+ *
1029
+ * Decouples inspection tools (`harnessTrace`, `harnessProfile`, custom
1030
+ * dashboards) from mount-structure churn: hub migration, future stage
1031
+ * splits, or gate remounting won't require edits to `trace.ts` as long
1032
+ * as this method stays accurate. Returned paths are resolvable via
1033
+ * `harness.observe(path)` / `harness.resolve(path)`.
1034
+ *
1035
+ * Each stage yields `{ label, paths }` because QUEUE and GATE legitimately
1036
+ * have multiple paths (one per route). Consumers iterate paths per stage
1037
+ * and attach observers as needed.
1038
+ */
1039
+ stageNodes(): ReadonlyArray<{
1040
+ label: string;
1041
+ paths: readonly string[];
1042
+ }>;
595
1043
  }
596
1044
  /**
597
1045
  * Wire the reactive collaboration loop as a static-topology graph.
@@ -609,7 +1057,7 @@ declare class HarnessGraph extends Graph {
609
1057
  * @param opts - Configuration.
610
1058
  * @returns HarnessGraph with controller accessors.
611
1059
  */
612
- declare function harnessLoop(name: string, opts: HarnessLoopOptions): HarnessGraph;
1060
+ declare function harnessLoop<A = unknown>(name: string, opts: HarnessLoopOptions<A>): HarnessGraph<A>;
613
1061
 
614
1062
  /**
615
1063
  * Harness-specific graph profiling (roadmap §9.0).
@@ -634,6 +1082,13 @@ interface HarnessProfileResult extends GraphProfileResult {
634
1082
  /**
635
1083
  * Profile a harness graph with domain-specific counters.
636
1084
  *
1085
+ * **Snapshot caveat (Unit 22 B).** Reads `.cache` values from the
1086
+ * strategy / retry / reingestion nodes + each queue topic's `.retained()`
1087
+ * view. These are point-in-time reads and are not transactional — if you
1088
+ * invoke this during an in-flight reactive wave the values may reflect
1089
+ * a partially-settled frame. For end-of-wave accuracy, call from outside
1090
+ * any batch boundary.
1091
+ *
637
1092
  * @param harness - The HarnessGraph to profile.
638
1093
  * @param opts - Optional base profile options.
639
1094
  * @returns Harness profile with queue depths, strategy stats, and tracker sizes.
@@ -688,10 +1143,10 @@ interface RefineExecutorConfig<T> {
688
1143
  datasetFor: (item: TriagedItem) => readonly DatasetItem[];
689
1144
  /**
690
1145
  * Optional mapper from the inner loop's terminal snapshot to an
691
- * `ExecuteOutput`. Default: converged→success, budget→partial,
1146
+ * `ExecuteOutput<T>`. Default: converged→success, budget→partial,
692
1147
  * errored→failure.
693
1148
  */
694
- toOutput?: (result: RefineExecutorResult<T>) => ExecuteOutput;
1149
+ toOutput?: (result: RefineExecutorResult<T>) => ExecuteOutput<T>;
695
1150
  /** Convergence / budget options forwarded to each inner `refineLoop`. */
696
1151
  refine?: Omit<RefineLoopOptions, "dataset" | "name">;
697
1152
  /** Node name prefix for introspection. Default `"refine-executor"`. */
@@ -714,7 +1169,7 @@ interface RefineExecutorConfig<T> {
714
1169
  * });
715
1170
  * ```
716
1171
  */
717
- declare function refineExecutor<T>(config: RefineExecutorConfig<T>): HarnessExecutor;
1172
+ declare function refineExecutor<T>(config: RefineExecutorConfig<T>): HarnessExecutor<T>;
718
1173
 
719
1174
  /**
720
1175
  * Harness pipeline trace — thin sugar over `graph.observe({ format: "stage-log" })`.
@@ -797,11 +1252,17 @@ declare function harnessTrace(harness: HarnessGraph, opts?: HarnessTraceOptions)
797
1252
  * @module
798
1253
  */
799
1254
 
1255
+ type index_ActuatorExecutorConfig<R> = ActuatorExecutorConfig<R>;
1256
+ type index_ActuatorResult<R> = ActuatorResult<R>;
1257
+ type index_AutoSolidifyConfig<R, T = R> = AutoSolidifyConfig<R, T>;
800
1258
  type index_CodeChange = CodeChange;
801
1259
  type index_CodeChangeBridgeOptions = CodeChangeBridgeOptions;
802
1260
  declare const index_DEFAULT_DECAY_RATE: typeof DEFAULT_DECAY_RATE;
1261
+ declare const index_DEFAULT_EXECUTE_PROMPT: typeof DEFAULT_EXECUTE_PROMPT;
803
1262
  declare const index_DEFAULT_QUEUE_CONFIGS: typeof DEFAULT_QUEUE_CONFIGS;
804
1263
  declare const index_DEFAULT_SEVERITY_WEIGHTS: typeof DEFAULT_SEVERITY_WEIGHTS;
1264
+ declare const index_DEFAULT_TRIAGE_PROMPT: typeof DEFAULT_TRIAGE_PROMPT;
1265
+ declare const index_DEFAULT_VERIFY_PROMPT: typeof DEFAULT_VERIFY_PROMPT;
805
1266
  type index_ErrorClass = ErrorClass;
806
1267
  type index_ErrorClassifier = ErrorClassifier;
807
1268
  type index_EvalDelta = EvalDelta;
@@ -812,20 +1273,23 @@ type index_EvalTaskDelta = EvalTaskDelta;
812
1273
  type index_EvalTaskResult = EvalTaskResult;
813
1274
  type index_EvalVerifierConfig<T> = EvalVerifierConfig<T>;
814
1275
  type index_EvalVerifierSummary = EvalVerifierSummary;
815
- type index_ExecuteOutput = ExecuteOutput;
816
- type index_ExecutionResult = ExecutionResult;
817
- type index_HarnessExecutor = HarnessExecutor;
818
- type index_HarnessGraph = HarnessGraph;
1276
+ type index_ExecuteOutput<A = unknown> = ExecuteOutput<A>;
1277
+ type index_ExecutePromptFn = ExecutePromptFn;
1278
+ type index_ExecutionResult<A = unknown> = ExecutionResult<A>;
1279
+ type index_HarnessEvalPairConfig<T> = HarnessEvalPairConfig<T>;
1280
+ type index_HarnessExecutor<A = unknown> = HarnessExecutor<A>;
1281
+ type index_HarnessGraph<A = unknown> = HarnessGraph<A>;
819
1282
  declare const index_HarnessGraph: typeof HarnessGraph;
820
- type index_HarnessLoopOptions = HarnessLoopOptions;
1283
+ type index_HarnessLoopOptions<A = unknown> = HarnessLoopOptions<A>;
821
1284
  type index_HarnessProfileResult = HarnessProfileResult;
822
1285
  type index_HarnessTraceHandle = HarnessTraceHandle;
823
1286
  type index_HarnessTraceOptions = HarnessTraceOptions;
824
- type index_HarnessVerifier = HarnessVerifier;
1287
+ type index_HarnessVerifier<A = unknown> = HarnessVerifier<A>;
825
1288
  type index_IntakeBridgeOptions = IntakeBridgeOptions;
826
1289
  type index_IntakeItem = IntakeItem;
827
1290
  type index_IntakeSource = IntakeSource;
828
1291
  type index_Intervention = Intervention;
1292
+ type index_KnownIntakeSource = KnownIntakeSource;
829
1293
  type index_LintError = LintError;
830
1294
  type index_NotifyEffectOptions = NotifyEffectOptions;
831
1295
  type index_NotifyTransport<T> = NotifyTransport<T>;
@@ -845,10 +1309,14 @@ type index_TestFailure = TestFailure;
845
1309
  type index_TraceDetail = TraceDetail;
846
1310
  type index_TraceEvent = TraceEvent;
847
1311
  type index_TraceEventType = TraceEventType;
1312
+ type index_TriagePromptFn = TriagePromptFn;
848
1313
  type index_TriagedItem = TriagedItem;
849
1314
  type index_VerifyOutput = VerifyOutput;
850
- type index_VerifyResult = VerifyResult;
1315
+ type index_VerifyPromptFn<A = unknown> = VerifyPromptFn<A>;
1316
+ type index_VerifyResult<A = unknown> = VerifyResult<A>;
1317
+ declare const index_actuatorExecutor: typeof actuatorExecutor;
851
1318
  declare const index_affectedTaskFilter: typeof affectedTaskFilter;
1319
+ declare const index_autoSolidify: typeof autoSolidify;
852
1320
  declare const index_beforeAfterCompare: typeof beforeAfterCompare;
853
1321
  declare const index_codeChangeBridge: typeof codeChangeBridge;
854
1322
  declare const index_createIntakeBridge: typeof createIntakeBridge;
@@ -858,16 +1326,18 @@ declare const index_defaultLlmVerifier: typeof defaultLlmVerifier;
858
1326
  declare const index_evalIntakeBridge: typeof evalIntakeBridge;
859
1327
  declare const index_evalSource: typeof evalSource;
860
1328
  declare const index_evalVerifier: typeof evalVerifier;
1329
+ declare const index_harnessEvalPair: typeof harnessEvalPair;
861
1330
  declare const index_harnessLoop: typeof harnessLoop;
862
1331
  declare const index_harnessProfile: typeof harnessProfile;
863
1332
  declare const index_harnessTrace: typeof harnessTrace;
864
1333
  declare const index_notifyEffect: typeof notifyEffect;
865
1334
  declare const index_priorityScore: typeof priorityScore;
866
1335
  declare const index_refineExecutor: typeof refineExecutor;
1336
+ declare const index_resolvePromptFn: typeof resolvePromptFn;
867
1337
  declare const index_strategyKey: typeof strategyKey;
868
1338
  declare const index_strategyModel: typeof strategyModel;
869
1339
  declare namespace index {
870
- export { type index_CodeChange as CodeChange, type index_CodeChangeBridgeOptions as CodeChangeBridgeOptions, index_DEFAULT_DECAY_RATE as DEFAULT_DECAY_RATE, index_DEFAULT_QUEUE_CONFIGS as DEFAULT_QUEUE_CONFIGS, index_DEFAULT_SEVERITY_WEIGHTS as DEFAULT_SEVERITY_WEIGHTS, type index_ErrorClass as ErrorClass, type index_ErrorClassifier as ErrorClassifier, type index_EvalDelta as EvalDelta, type index_EvalIntakeBridgeOptions as EvalIntakeBridgeOptions, type index_EvalJudgeScore as EvalJudgeScore, type index_EvalResult as EvalResult, type index_EvalTaskDelta as EvalTaskDelta, type index_EvalTaskResult as EvalTaskResult, type index_EvalVerifierConfig as EvalVerifierConfig, type index_EvalVerifierSummary as EvalVerifierSummary, type index_ExecuteOutput as ExecuteOutput, type index_ExecutionResult as ExecutionResult, type index_HarnessExecutor as HarnessExecutor, index_HarnessGraph as HarnessGraph, type index_HarnessLoopOptions as HarnessLoopOptions, type index_HarnessProfileResult as HarnessProfileResult, type index_HarnessTraceHandle as HarnessTraceHandle, type index_HarnessTraceOptions as HarnessTraceOptions, type index_HarnessVerifier as HarnessVerifier, type index_IntakeBridgeOptions as IntakeBridgeOptions, type index_IntakeItem as IntakeItem, type index_IntakeSource as IntakeSource, type index_Intervention as Intervention, type index_LintError as LintError, type index_NotifyEffectOptions as NotifyEffectOptions, type index_NotifyTransport as NotifyTransport, type index_PrioritySignals as PrioritySignals, index_QUEUE_NAMES as QUEUE_NAMES, type index_QueueConfig as QueueConfig, type index_QueueRoute as QueueRoute, type index_RefineExecutorConfig as RefineExecutorConfig, type index_RefineExecutorResult as RefineExecutorResult, type index_RootCause as RootCause, type index_Severity as Severity, type index_StrategyEntry as StrategyEntry, type index_StrategyKey as StrategyKey, type index_StrategyModelBundle as StrategyModelBundle, type index_StrategySnapshot as StrategySnapshot, type index_TestFailure as TestFailure, type index_TraceDetail as TraceDetail, type index_TraceEvent as TraceEvent, type index_TraceEventType as TraceEventType, type index_TriagedItem as TriagedItem, type index_VerifyOutput as VerifyOutput, type index_VerifyResult as VerifyResult, index_affectedTaskFilter as affectedTaskFilter, index_beforeAfterCompare as beforeAfterCompare, index_codeChangeBridge as codeChangeBridge, index_createIntakeBridge as createIntakeBridge, index_defaultErrorClassifier as defaultErrorClassifier, index_defaultLlmExecutor as defaultLlmExecutor, index_defaultLlmVerifier as defaultLlmVerifier, index_evalIntakeBridge as evalIntakeBridge, index_evalSource as evalSource, index_evalVerifier as evalVerifier, index_harnessLoop as harnessLoop, index_harnessProfile as harnessProfile, index_harnessTrace as harnessTrace, index_notifyEffect as notifyEffect, index_priorityScore as priorityScore, index_refineExecutor as refineExecutor, index_strategyKey as strategyKey, index_strategyModel as strategyModel };
1340
+ export { type index_ActuatorExecutorConfig as ActuatorExecutorConfig, type index_ActuatorResult as ActuatorResult, type index_AutoSolidifyConfig as AutoSolidifyConfig, type index_CodeChange as CodeChange, type index_CodeChangeBridgeOptions as CodeChangeBridgeOptions, index_DEFAULT_DECAY_RATE as DEFAULT_DECAY_RATE, index_DEFAULT_EXECUTE_PROMPT as DEFAULT_EXECUTE_PROMPT, index_DEFAULT_QUEUE_CONFIGS as DEFAULT_QUEUE_CONFIGS, index_DEFAULT_SEVERITY_WEIGHTS as DEFAULT_SEVERITY_WEIGHTS, index_DEFAULT_TRIAGE_PROMPT as DEFAULT_TRIAGE_PROMPT, index_DEFAULT_VERIFY_PROMPT as DEFAULT_VERIFY_PROMPT, type index_ErrorClass as ErrorClass, type index_ErrorClassifier as ErrorClassifier, type index_EvalDelta as EvalDelta, type index_EvalIntakeBridgeOptions as EvalIntakeBridgeOptions, type index_EvalJudgeScore as EvalJudgeScore, type index_EvalResult as EvalResult, type index_EvalTaskDelta as EvalTaskDelta, type index_EvalTaskResult as EvalTaskResult, type index_EvalVerifierConfig as EvalVerifierConfig, type index_EvalVerifierSummary as EvalVerifierSummary, type index_ExecuteOutput as ExecuteOutput, type index_ExecutePromptFn as ExecutePromptFn, type index_ExecutionResult as ExecutionResult, type index_HarnessEvalPairConfig as HarnessEvalPairConfig, type index_HarnessExecutor as HarnessExecutor, index_HarnessGraph as HarnessGraph, type index_HarnessLoopOptions as HarnessLoopOptions, type index_HarnessProfileResult as HarnessProfileResult, type index_HarnessTraceHandle as HarnessTraceHandle, type index_HarnessTraceOptions as HarnessTraceOptions, type index_HarnessVerifier as HarnessVerifier, type index_IntakeBridgeOptions as IntakeBridgeOptions, type index_IntakeItem as IntakeItem, type index_IntakeSource as IntakeSource, type index_Intervention as Intervention, type index_KnownIntakeSource as KnownIntakeSource, type index_LintError as LintError, type index_NotifyEffectOptions as NotifyEffectOptions, type index_NotifyTransport as NotifyTransport, type index_PrioritySignals as PrioritySignals, index_QUEUE_NAMES as QUEUE_NAMES, type index_QueueConfig as QueueConfig, type index_QueueRoute as QueueRoute, type index_RefineExecutorConfig as RefineExecutorConfig, type index_RefineExecutorResult as RefineExecutorResult, type index_RootCause as RootCause, type index_Severity as Severity, type index_StrategyEntry as StrategyEntry, type index_StrategyKey as StrategyKey, type index_StrategyModelBundle as StrategyModelBundle, type index_StrategySnapshot as StrategySnapshot, type index_TestFailure as TestFailure, type index_TraceDetail as TraceDetail, type index_TraceEvent as TraceEvent, type index_TraceEventType as TraceEventType, type index_TriagePromptFn as TriagePromptFn, type index_TriagedItem as TriagedItem, type index_VerifyOutput as VerifyOutput, type index_VerifyPromptFn as VerifyPromptFn, type index_VerifyResult as VerifyResult, index_actuatorExecutor as actuatorExecutor, index_affectedTaskFilter as affectedTaskFilter, index_autoSolidify as autoSolidify, index_beforeAfterCompare as beforeAfterCompare, index_codeChangeBridge as codeChangeBridge, index_createIntakeBridge as createIntakeBridge, index_defaultErrorClassifier as defaultErrorClassifier, index_defaultLlmExecutor as defaultLlmExecutor, index_defaultLlmVerifier as defaultLlmVerifier, index_evalIntakeBridge as evalIntakeBridge, index_evalSource as evalSource, index_evalVerifier as evalVerifier, index_harnessEvalPair as harnessEvalPair, index_harnessLoop as harnessLoop, index_harnessProfile as harnessProfile, index_harnessTrace as harnessTrace, index_notifyEffect as notifyEffect, index_priorityScore as priorityScore, index_refineExecutor as refineExecutor, index_resolvePromptFn as resolvePromptFn, index_strategyKey as strategyKey, index_strategyModel as strategyModel };
871
1341
  }
872
1342
 
873
- export { codeChangeBridge as $, type QueueRoute as A, type RefineExecutorResult as B, type CodeChange as C, DEFAULT_DECAY_RATE as D, type ErrorClass as E, type RootCause as F, type StrategyEntry as G, type HarnessExecutor as H, type IntakeBridgeOptions as I, type StrategyKey as J, type StrategyModelBundle as K, type LintError as L, type StrategySnapshot as M, type NotifyEffectOptions as N, type TraceDetail as O, type PrioritySignals as P, QUEUE_NAMES as Q, type RefineExecutorConfig as R, type Severity as S, type TestFailure as T, type TraceEvent as U, type TraceEventType as V, type TriagedItem as W, type VerifyOutput as X, type VerifyResult as Y, affectedTaskFilter as Z, beforeAfterCompare as _, type CodeChangeBridgeOptions as a, createIntakeBridge as a0, defaultErrorClassifier as a1, defaultLlmExecutor as a2, defaultLlmVerifier as a3, evalIntakeBridge as a4, evalSource as a5, evalVerifier as a6, harnessLoop as a7, harnessProfile as a8, harnessTrace as a9, notifyEffect as aa, priorityScore as ab, refineExecutor as ac, strategyKey as ad, strategyModel as ae, DEFAULT_QUEUE_CONFIGS as b, DEFAULT_SEVERITY_WEIGHTS as c, type ErrorClassifier as d, type EvalDelta as e, type EvalIntakeBridgeOptions as f, type EvalJudgeScore as g, type EvalResult as h, index as i, type EvalTaskDelta as j, type EvalTaskResult as k, type EvalVerifierConfig as l, type EvalVerifierSummary as m, type ExecuteOutput as n, type ExecutionResult as o, HarnessGraph as p, type HarnessLoopOptions as q, type HarnessProfileResult as r, type HarnessTraceHandle as s, type HarnessTraceOptions as t, type HarnessVerifier as u, type IntakeItem as v, type IntakeSource as w, type Intervention as x, type NotifyTransport as y, type QueueConfig as z };
1343
+ export { type TestFailure as $, type ActuatorExecutorConfig as A, type HarnessTraceOptions as B, type CodeChange as C, DEFAULT_DECAY_RATE as D, type ErrorClass as E, type HarnessVerifier as F, type IntakeItem as G, type HarnessEvalPairConfig as H, type IntakeBridgeOptions as I, type IntakeSource as J, type Intervention as K, type KnownIntakeSource as L, type LintError as M, type NotifyEffectOptions as N, type NotifyTransport as O, type PrioritySignals as P, QUEUE_NAMES as Q, type QueueConfig as R, type QueueRoute as S, type RefineExecutorConfig as T, type RefineExecutorResult as U, type RootCause as V, type Severity as W, type StrategyEntry as X, type StrategyKey as Y, type StrategyModelBundle as Z, type StrategySnapshot as _, type ActuatorResult as a, type TraceDetail as a0, type TraceEvent as a1, type TraceEventType as a2, type TriagePromptFn as a3, type TriagedItem as a4, type VerifyOutput as a5, type VerifyPromptFn as a6, type VerifyResult as a7, actuatorExecutor as a8, affectedTaskFilter as a9, autoSolidify as aa, beforeAfterCompare as ab, codeChangeBridge as ac, createIntakeBridge as ad, defaultErrorClassifier as ae, defaultLlmExecutor as af, defaultLlmVerifier as ag, evalIntakeBridge as ah, evalSource as ai, evalVerifier as aj, harnessEvalPair as ak, harnessLoop as al, harnessProfile as am, harnessTrace as an, notifyEffect as ao, priorityScore as ap, refineExecutor as aq, resolvePromptFn as ar, strategyKey as as, strategyModel as at, type AutoSolidifyConfig as b, type CodeChangeBridgeOptions as c, DEFAULT_EXECUTE_PROMPT as d, DEFAULT_QUEUE_CONFIGS as e, DEFAULT_SEVERITY_WEIGHTS as f, DEFAULT_TRIAGE_PROMPT as g, DEFAULT_VERIFY_PROMPT as h, index as i, type ErrorClassifier as j, type EvalDelta as k, type EvalIntakeBridgeOptions as l, type EvalJudgeScore as m, type EvalResult as n, type EvalTaskDelta as o, type EvalTaskResult as p, type EvalVerifierConfig as q, type EvalVerifierSummary as r, type ExecuteOutput as s, type ExecutePromptFn as t, type ExecutionResult as u, type HarnessExecutor as v, HarnessGraph as w, type HarnessLoopOptions as x, type HarnessProfileResult as y, type HarnessTraceHandle as z };