@graphrefly/graphrefly 0.37.0 → 0.38.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 (248) hide show
  1. package/dist/{chunk-CZIQ6JCE.js → chunk-2YFDSYEF.js} +1 -1
  2. package/dist/{chunk-YVYSO5CW.js → chunk-4BDQXBXE.js} +1 -1
  3. package/dist/chunk-5BGFS2XH.js +1 -0
  4. package/dist/chunk-6773HURD.js +1 -0
  5. package/dist/{chunk-U3COB5WU.js → chunk-6KZZ6XQE.js} +1 -1
  6. package/dist/{chunk-5CPPC75H.js → chunk-6VFC334U.js} +1 -1
  7. package/dist/{chunk-KUVDFOJH.js → chunk-7KZZLWZ6.js} +1 -1
  8. package/dist/{chunk-Q7EUZ6NN.js → chunk-B5S7KTGP.js} +1 -1
  9. package/dist/chunk-CMTN3KPT.js +80 -0
  10. package/dist/chunk-DQJLC6YY.js +1 -0
  11. package/dist/chunk-DSOVKKTI.js +1 -0
  12. package/dist/chunk-FAYEMS5M.js +1 -0
  13. package/dist/chunk-FWGIZP3W.js +1 -0
  14. package/dist/{chunk-FMI4CWFL.js → chunk-G7JN6LCB.js} +1 -1
  15. package/dist/{chunk-PCD2MU7X.js → chunk-IBGE62GZ.js} +1 -1
  16. package/dist/{chunk-MYFR67PY.js → chunk-K5C67OGE.js} +1 -1
  17. package/dist/chunk-KJEAIIIY.js +43 -0
  18. package/dist/chunk-LV3ACS5J.js +1 -0
  19. package/dist/{chunk-LOQRPP4Y.js → chunk-NBGPXQSP.js} +1 -1
  20. package/dist/chunk-NN3QPJ6U.js +1 -0
  21. package/dist/{chunk-QWVQIL3T.js → chunk-NSAZ6PR6.js} +1 -1
  22. package/dist/{chunk-MC5LZG3U.js → chunk-NV63VQHI.js} +1 -1
  23. package/dist/{chunk-2C4NESZE.js → chunk-O245YLM5.js} +1 -1
  24. package/dist/{chunk-TLS7M7H4.js → chunk-O2BLVQU4.js} +1 -1
  25. package/dist/chunk-PHXZRR6C.js +1 -0
  26. package/dist/{chunk-K6ZFJ473.js → chunk-POCWFIJ7.js} +1 -1
  27. package/dist/{chunk-C5CBVOCB.js → chunk-QEVSIVSF.js} +1 -1
  28. package/dist/chunk-QMC2PLNM.js +7 -0
  29. package/dist/chunk-QOJFR6GS.js +1 -0
  30. package/dist/{chunk-MQZWA3DF.js → chunk-RZ5HKPGI.js} +1 -1
  31. package/dist/{chunk-WSLN4JFO.js → chunk-SFK7MN7S.js} +1 -1
  32. package/dist/{chunk-QP5TH523.js → chunk-SP5O2MIX.js} +1 -1
  33. package/dist/chunk-TB7JKSVS.js +61 -0
  34. package/dist/{chunk-T4U24DXX.js → chunk-TMVY7OWG.js} +1 -1
  35. package/dist/{chunk-UODQF4EY.js → chunk-UAXFKMAG.js} +1 -1
  36. package/dist/{chunk-TFK4P4CX.js → chunk-UVLZX2OU.js} +1 -1
  37. package/dist/chunk-XIMFHEKV.js +1 -0
  38. package/dist/{chunk-XIJKEXWR.js → chunk-XLMYQB6F.js} +1 -1
  39. package/dist/{chunk-4EATTNAE.js → chunk-XLYF4LBH.js} +1 -1
  40. package/dist/compat/index.cjs +9 -9
  41. package/dist/compat/index.d.cts +7 -7
  42. package/dist/compat/index.d.ts +7 -7
  43. package/dist/compat/index.js +1 -1
  44. package/dist/compat/nestjs/index.cjs +11 -11
  45. package/dist/compat/nestjs/index.d.cts +5 -5
  46. package/dist/compat/nestjs/index.d.ts +5 -5
  47. package/dist/compat/nestjs/index.js +1 -1
  48. package/dist/compat/zustand/index.cjs +7 -7
  49. package/dist/compat/zustand/index.d.cts +3 -3
  50. package/dist/compat/zustand/index.d.ts +3 -3
  51. package/dist/compat/zustand/index.js +1 -1
  52. package/dist/{composite-_XckYx2e.d.cts → composite-CgG0MqHm.d.cts} +8 -1
  53. package/dist/{composite-CT_mApQD.d.ts → composite-DTOlDuch.d.ts} +8 -1
  54. package/dist/core/index.cjs +1 -1
  55. package/dist/core/index.d.cts +2 -2
  56. package/dist/core/index.d.ts +2 -2
  57. package/dist/core/index.js +1 -1
  58. package/dist/extra/index.cjs +19 -19
  59. package/dist/extra/index.d.cts +5 -5
  60. package/dist/extra/index.d.ts +5 -5
  61. package/dist/extra/index.js +1 -1
  62. package/dist/extra/node.cjs +2 -2
  63. package/dist/extra/node.d.cts +107 -1
  64. package/dist/extra/node.d.ts +107 -1
  65. package/dist/extra/node.js +2 -2
  66. package/dist/extra/operators.cjs +1 -1
  67. package/dist/extra/operators.js +1 -1
  68. package/dist/extra/reactive.d.cts +1 -1
  69. package/dist/extra/reactive.d.ts +1 -1
  70. package/dist/extra/reactive.js +1 -1
  71. package/dist/extra/sources.cjs +1 -1
  72. package/dist/extra/sources.js +1 -1
  73. package/dist/extra/storage-tiers-browser.d.cts +76 -5
  74. package/dist/extra/storage-tiers-browser.d.ts +76 -5
  75. package/dist/extra/storage-tiers-node.d.cts +137 -13
  76. package/dist/extra/storage-tiers-node.d.ts +137 -13
  77. package/dist/extra/storage-tiers.d.cts +151 -23
  78. package/dist/extra/storage-tiers.d.ts +151 -23
  79. package/dist/graph/index.cjs +7 -7
  80. package/dist/graph/index.d.cts +4 -4
  81. package/dist/graph/index.d.ts +4 -4
  82. package/dist/graph/index.js +1 -1
  83. package/dist/{graph-YQXDndFy.d.ts → graph-BjW1taJl.d.ts} +217 -10
  84. package/dist/{graph-CaNXUc3c.d.cts → graph-CHsVwf9S.d.cts} +217 -10
  85. package/dist/{index-CUTHDZ7Q.d.ts → index-5dNRlW7J.d.ts} +3 -3
  86. package/dist/{index-Bpzw8hx3.d.ts → index-AUqWe_fX.d.ts} +7 -4
  87. package/dist/{index-fHKHdAso.d.ts → index-B-ORMr3k.d.ts} +2 -2
  88. package/dist/{index-DcWbx58m.d.cts → index-B2IUcH13.d.cts} +2 -2
  89. package/dist/{index-DuhOdNyg.d.ts → index-BFaALJxR.d.ts} +2 -2
  90. package/dist/{index-DPqR3wdW.d.ts → index-BI1wMfyc.d.ts} +2 -2
  91. package/dist/{index-D0ZxFXYl.d.ts → index-BUFCHvOR.d.ts} +2 -2
  92. package/dist/{index-CLPQyYY5.d.cts → index-BWUMIt7J.d.cts} +3 -3
  93. package/dist/{index-CkN8CZlT.d.cts → index-BaSy4L6w.d.cts} +37 -17
  94. package/dist/{index-B1IcU--K.d.cts → index-BgzPO43H.d.cts} +2 -2
  95. package/dist/{index-D6tRNEKz.d.cts → index-BhzwpIJc.d.cts} +1 -1
  96. package/dist/{index-4IwO4mH2.d.cts → index-BkQqf1EF.d.cts} +80 -7
  97. package/dist/{index-CajEOoAN.d.ts → index-BmWuVdER.d.ts} +2 -2
  98. package/dist/{index-0qOD-421.d.ts → index-Bn0uZEL4.d.ts} +2 -2
  99. package/dist/{index-DAKm44My.d.cts → index-BpMZzX9P.d.cts} +2 -2
  100. package/dist/{index-CrpjECS6.d.cts → index-Bpr0Pwgl.d.cts} +2 -2
  101. package/dist/{index-BECJ8M0T.d.cts → index-BqcgiSQg.d.cts} +2 -2
  102. package/dist/{index-DfAo9WKr.d.ts → index-BsZk9T8y.d.ts} +1 -1
  103. package/dist/{index-CU3z8Cel.d.cts → index-BsgxnHN8.d.cts} +2 -2
  104. package/dist/index-Bub6x_D4.d.cts +427 -0
  105. package/dist/{index-C-pFD_FV.d.ts → index-BwOsJfLJ.d.ts} +2 -2
  106. package/dist/{index-CRycrNfn.d.ts → index-Byp771zP.d.ts} +1 -1
  107. package/dist/{index-e1m3ZHgc.d.cts → index-C-3UXnHT.d.cts} +1 -1
  108. package/dist/{index-DTYIRT_v.d.cts → index-C56XZiDe.d.cts} +2 -2
  109. package/dist/{index-D11pGlaI.d.cts → index-CAV-3RpJ.d.cts} +2 -2
  110. package/dist/{index-D_DThl_J.d.cts → index-CAbHN_rP.d.cts} +1 -1
  111. package/dist/{index-BhLA9feT.d.ts → index-CEVzBWeB.d.ts} +2 -2
  112. package/dist/{index-Ci358GSC.d.cts → index-CM-i58FY.d.cts} +2 -2
  113. package/dist/{index-B9qJmmv3.d.cts → index-CQsqqEVz.d.cts} +1 -1
  114. package/dist/{index-C0tga1_x.d.ts → index-CijfwEWx.d.ts} +2 -2
  115. package/dist/{index-BwtIbzSV.d.cts → index-Ckil6miL.d.cts} +2 -2
  116. package/dist/{index-BokynmA4.d.cts → index-CpdnP-0y.d.cts} +1 -1
  117. package/dist/{index-BmLkcDlj.d.ts → index-CrlHFsiT.d.ts} +37 -17
  118. package/dist/{index-DCAuN9u5.d.cts → index-Czk3r0yA.d.cts} +37 -3
  119. package/dist/{index-C4N-dg5U.d.cts → index-D-B7U42V.d.cts} +2 -2
  120. package/dist/{index-CKcnuQ2c.d.ts → index-D-HZ7sP4.d.ts} +2 -2
  121. package/dist/{index-D6pwWiOc.d.cts → index-D7-RSD93.d.cts} +2 -2
  122. package/dist/{index-9mbs_PIG.d.ts → index-D9vBTuzo.d.ts} +2 -2
  123. package/dist/{index-C_qi0WlF.d.cts → index-DJNAWzcH.d.cts} +2 -2
  124. package/dist/{index-Ae6L8liv.d.ts → index-DJVQ-t07.d.ts} +2 -2
  125. package/dist/{index-D_d1erkR.d.ts → index-DKrIuF-r.d.ts} +2 -2
  126. package/dist/{index-DXz9uwcs.d.ts → index-DOU1Ee_k.d.ts} +1 -1
  127. package/dist/{index-D1E1tqHT.d.ts → index-DTDVDzhA.d.ts} +37 -3
  128. package/dist/{index-B5UR87KG.d.ts → index-DY2f2b9z.d.ts} +4 -2
  129. package/dist/{index-D8IyqHvT.d.cts → index-DeSsvHDD.d.cts} +4 -2
  130. package/dist/index-Di7OdwlO.d.ts +427 -0
  131. package/dist/{index-CzIWlnPp.d.ts → index-DqICM_I7.d.ts} +80 -7
  132. package/dist/{index-BOfHwQc1.d.ts → index-ML6vHKXK.d.ts} +1 -1
  133. package/dist/{index-DqtXA3yX.d.cts → index-UsU9ptzs.d.cts} +7 -4
  134. package/dist/{index-B46GWgk3.d.ts → index-Vz7KPfgz.d.ts} +1 -1
  135. package/dist/index.cjs +50 -50
  136. package/dist/index.d.cts +32 -32
  137. package/dist/index.d.ts +32 -32
  138. package/dist/index.js +1 -1
  139. package/dist/meta-BYqlATmg.d.ts +98 -0
  140. package/dist/meta-DreaEM_a.d.cts +98 -0
  141. package/dist/patterns/ai/browser.cjs +2 -2
  142. package/dist/patterns/ai/browser.js +1 -1
  143. package/dist/patterns/ai/index.cjs +21 -21
  144. package/dist/patterns/ai/index.d.cts +9 -9
  145. package/dist/patterns/ai/index.d.ts +9 -9
  146. package/dist/patterns/ai/index.js +1 -1
  147. package/dist/patterns/ai/node.js +1 -1
  148. package/dist/patterns/audit/index.cjs +7 -7
  149. package/dist/patterns/audit/index.d.cts +5 -5
  150. package/dist/patterns/audit/index.d.ts +5 -5
  151. package/dist/patterns/audit/index.js +1 -1
  152. package/dist/patterns/cqrs/index.cjs +7 -7
  153. package/dist/patterns/cqrs/index.d.cts +4 -4
  154. package/dist/patterns/cqrs/index.d.ts +4 -4
  155. package/dist/patterns/cqrs/index.js +1 -1
  156. package/dist/patterns/demo-shell/index.cjs +8 -8
  157. package/dist/patterns/demo-shell/index.d.cts +4 -4
  158. package/dist/patterns/demo-shell/index.d.ts +4 -4
  159. package/dist/patterns/demo-shell/index.js +1 -1
  160. package/dist/patterns/domain-templates/index.cjs +7 -7
  161. package/dist/patterns/domain-templates/index.d.cts +3 -3
  162. package/dist/patterns/domain-templates/index.d.ts +3 -3
  163. package/dist/patterns/domain-templates/index.js +1 -1
  164. package/dist/patterns/graphspec/index.cjs +21 -21
  165. package/dist/patterns/graphspec/index.d.cts +3 -3
  166. package/dist/patterns/graphspec/index.d.ts +3 -3
  167. package/dist/patterns/graphspec/index.js +1 -1
  168. package/dist/patterns/guarded-execution/index.cjs +7 -7
  169. package/dist/patterns/guarded-execution/index.d.cts +6 -6
  170. package/dist/patterns/guarded-execution/index.d.ts +6 -6
  171. package/dist/patterns/guarded-execution/index.js +1 -1
  172. package/dist/patterns/harness/index.cjs +12 -12
  173. package/dist/patterns/harness/index.d.cts +8 -8
  174. package/dist/patterns/harness/index.d.ts +8 -8
  175. package/dist/patterns/harness/index.js +1 -1
  176. package/dist/patterns/job-queue/index.cjs +7 -7
  177. package/dist/patterns/job-queue/index.d.cts +4 -4
  178. package/dist/patterns/job-queue/index.d.ts +4 -4
  179. package/dist/patterns/job-queue/index.js +1 -1
  180. package/dist/patterns/lens/index.cjs +7 -7
  181. package/dist/patterns/lens/index.d.cts +4 -4
  182. package/dist/patterns/lens/index.d.ts +4 -4
  183. package/dist/patterns/lens/index.js +1 -1
  184. package/dist/patterns/memory/index.cjs +7 -7
  185. package/dist/patterns/memory/index.d.cts +6 -4
  186. package/dist/patterns/memory/index.d.ts +6 -4
  187. package/dist/patterns/memory/index.js +1 -1
  188. package/dist/patterns/messaging/index.cjs +7 -7
  189. package/dist/patterns/messaging/index.d.cts +4 -4
  190. package/dist/patterns/messaging/index.d.ts +4 -4
  191. package/dist/patterns/messaging/index.js +1 -1
  192. package/dist/patterns/orchestration/index.cjs +7 -7
  193. package/dist/patterns/orchestration/index.d.cts +4 -4
  194. package/dist/patterns/orchestration/index.d.ts +4 -4
  195. package/dist/patterns/orchestration/index.js +1 -1
  196. package/dist/patterns/process/index.d.cts +5 -5
  197. package/dist/patterns/process/index.d.ts +5 -5
  198. package/dist/patterns/process/index.js +1 -1
  199. package/dist/patterns/reactive-layout/index.cjs +8 -8
  200. package/dist/patterns/reactive-layout/index.d.cts +4 -4
  201. package/dist/patterns/reactive-layout/index.d.ts +4 -4
  202. package/dist/patterns/reactive-layout/index.js +1 -1
  203. package/dist/patterns/reduction/index.cjs +7 -7
  204. package/dist/patterns/reduction/index.d.cts +3 -3
  205. package/dist/patterns/reduction/index.d.ts +3 -3
  206. package/dist/patterns/reduction/index.js +1 -1
  207. package/dist/patterns/refine-loop/index.cjs +8 -8
  208. package/dist/patterns/refine-loop/index.d.cts +5 -5
  209. package/dist/patterns/refine-loop/index.d.ts +5 -5
  210. package/dist/patterns/refine-loop/index.js +1 -1
  211. package/dist/patterns/resilient-pipeline/index.cjs +1 -1
  212. package/dist/patterns/resilient-pipeline/index.d.cts +4 -4
  213. package/dist/patterns/resilient-pipeline/index.d.ts +4 -4
  214. package/dist/patterns/resilient-pipeline/index.js +1 -1
  215. package/dist/patterns/surface/index.cjs +14 -14
  216. package/dist/patterns/surface/index.d.cts +4 -4
  217. package/dist/patterns/surface/index.d.ts +4 -4
  218. package/dist/patterns/surface/index.js +1 -1
  219. package/dist/{pipeline-graph-DX2Twdj-.d.ts → pipeline-graph-9JBbmRxA.d.ts} +2 -2
  220. package/dist/{pipeline-graph-BrrYGjuZ.d.cts → pipeline-graph-DuHpXSOn.d.cts} +2 -2
  221. package/dist/{reactive-layout-DrGjuwyC.d.cts → reactive-layout-BMLDB4Vd.d.cts} +1 -1
  222. package/dist/{reactive-layout-BDdngW56.d.ts → reactive-layout-D-tRiNhg.d.ts} +1 -1
  223. package/dist/{reactive-log-jirQsxMY.d.ts → reactive-log-BgWSA1fg.d.ts} +28 -1
  224. package/dist/{reactive-log-ScpWyqny.d.cts → reactive-log-C3IMAGpT.d.cts} +28 -1
  225. package/dist/resilience-LGBK236C.js +1 -0
  226. package/dist/{topology-tree-BI665P0L.d.ts → topology-tree-D47-nI6Z.d.ts} +1 -1
  227. package/dist/{topology-tree-BkhmMg2a.d.cts → topology-tree-jrZue3ao.d.cts} +1 -1
  228. package/package.json +1 -1
  229. package/dist/chunk-533RQFF6.js +0 -1
  230. package/dist/chunk-6SVKZ7VI.js +0 -1
  231. package/dist/chunk-A5HZZYRK.js +0 -1
  232. package/dist/chunk-B4L5X2QO.js +0 -7
  233. package/dist/chunk-FJ6IEMOS.js +0 -1
  234. package/dist/chunk-G6Q3DUMJ.js +0 -1
  235. package/dist/chunk-GDDPCDLG.js +0 -1
  236. package/dist/chunk-GFOT6UBB.js +0 -1
  237. package/dist/chunk-JJTF75VS.js +0 -1
  238. package/dist/chunk-K2WYIVHM.js +0 -1
  239. package/dist/chunk-KTWBUJO5.js +0 -61
  240. package/dist/chunk-M27MVZCP.js +0 -1
  241. package/dist/chunk-NKKUUKPD.js +0 -43
  242. package/dist/chunk-QKBCTKH7.js +0 -1
  243. package/dist/chunk-WGST56ZH.js +0 -80
  244. package/dist/index-BCq12BqB.d.ts +0 -139
  245. package/dist/index-DbWwMWiB.d.cts +0 -139
  246. package/dist/meta-BGO6C7K9.d.cts +0 -41
  247. package/dist/meta-CC6EPdpK.d.ts +0 -41
  248. package/dist/resilience-OBU472D2.js +0 -1
@@ -1,61 +0,0 @@
1
- import{a as Tt,b as Mt,d as vt,e as kt}from"./chunk-QKBCTKH7.js";import{c as bt}from"./chunk-GFOT6UBB.js";import{a as Vt,b as Jt,c as Qt,d as Xt,e as Zt,f as je,g as er}from"./chunk-PCD2MU7X.js";import{a as Pe,b as W,c as xe,d as de,e as X,f as K,g as qt,h as _e,i as Ht,j as zt,k as Yt}from"./chunk-5CPPC75H.js";import{f as Ge}from"./chunk-U3COB5WU.js";import{h as xt}from"./chunk-WGST56ZH.js";import{c as pt}from"./chunk-O32GJOUJ.js";import{b as ht}from"./chunk-6SVKZ7VI.js";import{a as it,b as ve,c as lt,e as Oe}from"./chunk-A5HZZYRK.js";import{j as se}from"./chunk-B4L5X2QO.js";import{a as Q}from"./chunk-ESMPEKEV.js";import{R as yt,b as ft,s as gt,x as F}from"./chunk-JJTF75VS.js";import{b as ke}from"./chunk-TZQPPQEQ.js";import{b as me}from"./chunk-KUVDFOJH.js";import{A as ct,C as _,f as dt,k as De,l as ut,m as k,x as ae,z as mt}from"./chunk-MQZWA3DF.js";import{D as le,E as v,F as oe,G as T,H as ee,m as J,o as H,p as he}from"./chunk-LYCLF26R.js";import{b as B,d as ue,i as Z,j as $}from"./chunk-CK2E7BTU.js";import{b as Ut}from"./chunk-QYADASLV.js";var Xr={};Ut(Xr,{AgentLoopGraph:()=>Ie,AllTiersExhaustedError:()=>Zt,BudgetExhaustedError:()=>Le,ChatStreamGraph:()=>Se,CircuitOpenError:()=>ve,DEFAULT_DECAY_RATE:()=>tt,FallbackMissError:()=>zt,LLMTimeoutError:()=>pe,ReplayCacheMissError:()=>qt,ToolRegistryGraph:()=>Ee,admissionFilter3D:()=>Wr,admissionScored:()=>_t,agentLoop:()=>Fr,agentMemory:()=>Ur,anthropicAdapter:()=>Vt,canonicalJson:()=>Ht,cascadingLlmAdapter:()=>je,chatStream:()=>Je,composePricing:()=>sr,computePrice:()=>Fe,contentGate:()=>Pr,costMeterExtractor:()=>Cr,createAdapter:()=>Xt,createCapabilitiesRegistry:()=>tr,createPricingRegistry:()=>or,dryRunAdapter:()=>Pe,fallbackAdapter:()=>Yt,fromLLM:()=>Tr,frozenContext:()=>xr,gatedStream:()=>Lr,gaugesAsContext:()=>Vr,googleAdapter:()=>Jt,graphFromSpec:()=>Ft,graphFromSpecReactive:()=>qr,handoff:()=>Br,keywordFlagExtractor:()=>Er,knobsAsTools:()=>zr,llmConsolidator:()=>et,llmExtractor:()=>Ze,memoryRetrieval:()=>at,memoryWithKG:()=>nt,memoryWithTiers:()=>ot,memoryWithVectors:()=>rt,observableAdapter:()=>rr,openAICompatAdapter:()=>Qt,parseRateLimitFromError:()=>Ke,pricingFor:()=>ir,promptNode:()=>Ye,redactor:()=>_r,registryPricing:()=>ar,resilientAdapter:()=>br,streamExtractor:()=>Ir,streamingPromptNode:()=>wr,suggestStrategy:()=>Bt,suggestStrategyReactive:()=>Jr,systemPromptBuilder:()=>Nr,tier:()=>er,toolCallExtractor:()=>Dr,toolExecution:()=>Qe,toolRegistry:()=>Xe,toolSelector:()=>$r,validateGraphDef:()=>Qr,withBreaker:()=>Be,withBudgetGate:()=>We,withDryRun:()=>dr,withRateLimiter:()=>Ve,withReplayCache:()=>_e,withRetry:()=>qe,withTimeout:()=>He,zeroPrice:()=>we});function be(t,e){return`${t}::${e}`}function tr(t){let e=ke({name:"capabilitiesRegistry"}),r=i=>{e.set(be(i.provider,i.id),i)};if(t)for(let i of t)r(i);let n=(i,d)=>{let m=e.get(be(i,d));if(m)return m;let p=e.entries.cache;if(!p)return;let c;for(let[,g]of p){if(g.provider!==i)continue;let y=g.id;d.startsWith(y)&&(!c||y.length>c.id.length)&&(c=g)}return c},o=128,a=new Map,s=new Map,l=(i,d,m,p)=>{for(i.has(d)&&i.delete(d),i.set(d,m);i.size>p;){let c=i.keys().next().value;if(c===void 0)break;i.delete(c)}},u=T([e.entries],([i])=>Array.from(i.values()),{name:"capabilitiesRegistry/entries",initial:[]});return{register:r,lookup:n,remove(i,d){let m=e.has(be(i,d));return m&&e.delete(be(i,d)),m},entries(){let i=e.entries.cache;return(function*(){if(i)for(let d of i.values())yield d})()},lookupNode(i,d){let m=be(i,d),p=a.get(m);if(p)return a.delete(m),a.set(m,p),p;let c=T([e.entries],()=>n(i,d),{name:`capabilitiesRegistry/lookup/${i}::${d}`,initial:void 0});return l(a,m,c,o),c},entriesNode:u,byProvider(i){let d=s.get(i);if(d)return s.delete(i),s.set(i,d),d;let m=T([u],([p])=>p.filter(c=>c.provider===i),{name:`capabilitiesRegistry/byProvider/${i}`,initial:[]});return l(s,i,m,o),m}}}function z(t){let e=t.input,r=e.regular+(e.cacheRead??0)+(e.cacheWrite5m??0)+(e.cacheWrite1h??0)+(e.cacheWriteOther??0)+(e.audio??0)+(e.image??0)+(e.video??0)+(e.toolUse??0);if(!e.extensions)return r;let n=0;for(let o of Object.values(e.extensions))n+=o;return r+n}function te(t){let e=t.output,r=e.regular+(e.reasoning??0)+(e.audio??0)+(e.predictionAccepted??0)+(e.predictionRejected??0);if(!e.extensions)return r;let n=0;for(let o of Object.values(e.extensions))n+=o;return r+n}function Rt(){return{input:{regular:0},output:{regular:0}}}function rr(t,e){let r=e?.logMax??1e3,n=me(void 0,{name:e?.name?`${e.name}/stats`:"adapterStats",maxSize:r}),o=v(null,{name:"adapterStats/lastCall"}),a=T([n.entries],([y])=>y.length,{name:"adapterStats/totalCalls",initial:0}),s=T([n.entries],([y])=>y.reduce((f,h)=>f+z(h.usage),0),{name:"adapterStats/totalInputTokens",initial:0}),l=T([n.entries],([y])=>y.reduce((f,h)=>f+te(h.usage),0),{name:"adapterStats/totalOutputTokens",initial:0}),u=[_(a),_(s),_(l)],i=y=>{n.append(y),o.emit(y)},d=()=>{n.clear(),o.emit(null)},m=W(t,{invoke(y,f){let h=H(),b=he(),L=t.model??f?.model??"",w=E=>(i(de({provider:t.provider,model:t.model??f?.model??E.model??"",tier:f?.tier??E.tier,usage:E.usage??X(),startNs:h,startWallClockNs:b,method:"invoke"})),E),S=E=>{let P=E;i(de({provider:t.provider,model:L,tier:f?.tier,usage:X(),startNs:h,startWallClockNs:b,method:"invoke",error:{type:P?.name??"Error",message:P?.message??String(E)}}))};return xe(t.invoke(y,f),{onResp:w,onError:S,name:"adapterStats/invokeTap"})},async*stream(y,f){let h=H(),b=he(),L=t.model??f?.model??"",w;try{for await(let S of t.stream(y,f))S.type==="usage"&&(w=S.usage),yield S;i(de({provider:t.provider,model:L,tier:f?.tier,usage:w??X(),startNs:h,startWallClockNs:b,method:"stream"}))}catch(S){let E=S;throw i(de({provider:t.provider,model:L,tier:f?.tier,usage:w??X(),startNs:h,startWallClockNs:b,method:"stream",error:{type:E?.name??"Error",message:E?.message??String(S)}})),S}}});K(m,"observableAdapter",t);let p=!1;return{adapter:m,stats:{lastCall:o,allCalls:n,totalCalls:a,totalInputTokens:s,totalOutputTokens:l,reset:d,dispose:()=>{if(!p){p=!0;for(let y of u)y();u.length=0}}}}}function nr(t,e){return t==null?0:typeof t=="number"?t:t.thresholdTokens!=null&&t.pricePerMillionAbove!=null&&e>t.thresholdTokens?t.pricePerMillionAbove:t.pricePerMillion}function we(t="USD"){return{total:0,currency:t}}function Fe(t,e,r){let n=z(t),o=e.currency??"USD",a=r?.withBreakdown===!0,s=a?{}:null,l=0,u=(f,h,b)=>{if(!h||b==null)return;let L=nr(b,n),w=h*L/1e6;l+=w,a&&(s[f]=(s[f]??0)+w)},i=t.input,d=e.input;if(d&&(u("input.regular",i.regular,d.regular),u("input.cacheRead",i.cacheRead??0,d.cacheRead),u("input.cacheWrite5m",i.cacheWrite5m??0,d.cacheWrite5m),u("input.cacheWrite1h",i.cacheWrite1h??0,d.cacheWrite1h),u("input.cacheWriteOther",i.cacheWriteOther??0,d.cacheWriteOther),u("input.audio",i.audio??0,d.audio),u("input.image",i.image??0,d.image),u("input.video",i.video??0,d.video),u("input.toolUse",i.toolUse??0,d.toolUse),i.extensions&&d.extensions))for(let[f,h]of Object.entries(i.extensions))u(`input.ext.${f}`,h,d.extensions[f]);let m=t.output,p=e.output;if(p&&(u("output.regular",m.regular,p.regular),u("output.reasoning",m.reasoning??0,p.reasoning),u("output.audio",m.audio??0,p.audio),u("output.predictionAccepted",m.predictionAccepted??0,p.predictionAccepted),u("output.predictionRejected",m.predictionRejected??0,p.predictionRejected),m.extensions&&p.extensions))for(let[f,h]of Object.entries(m.extensions))u(`output.ext.${f}`,h,p.extensions[f]);let c=r?.tier;if(c&&e.tierMultipliers){let f=e.tierMultipliers[c];if(f!=null&&(l*=f,a))for(let h of Object.keys(s))s[h]*=f}let g=t.auxiliary,y=e.auxiliary;if(g&&y)for(let[f,h]of Object.entries(g)){let b=y[f];if(b==null||!h)continue;let L=h*b;l+=L,a&&(s[`auxiliary.${f}`]=L)}return a?{total:l,currency:o,breakdown:s}:{total:l,currency:o}}function Re(t,e){return`${t}::${e}`}function or(t){let e=new Map,r=new Map,n=(o,a,s)=>{e.set(Re(o,a),{provider:o,model:a,pricing:s});let l=r.get(o);l||(l=new Set,r.set(o,l)),l.add(a)};if(t)for(let[o,a,s]of t)n(o,a,s);return{register:n,lookup(o,a){let s=e.get(Re(o,a));if(s)return s.pricing;let l=r.get(o);if(!l)return;let u;for(let i of l)if(a.startsWith(i)&&(!u||i.length>u.key.length)){let d=e.get(Re(o,i));d&&(u={key:i,pricing:d.pricing})}return u?.pricing},remove(o,a){let s=e.delete(Re(o,a));if(s){let l=r.get(o);l?.delete(a),l&&l.size===0&&r.delete(o)}return s},entries(){let o=e.values();return(function*(){for(let{provider:a,model:s,pricing:l}of o)yield[a,s,l]})()}}}function ar(t,e="USD"){return(r,n)=>{let o=t.lookup(n.provider,n.model);return o?Fe(r,o,{tier:n.tier,withBreakdown:n.withBreakdown}):we(e)}}function sr(...t){return(e,r)=>{for(let n of t){let o=n(e,r);if(o.total!==0)return o}return t.length>0?t[0](e,r):we()}}function ir(t,e,r){return t?.pricing?Fe(e,t.pricing,r):we()}function Be(t,e={}){let r=e.breaker??lt(e),n=W(t,{async invoke(o,a){if(!r.canExecute())throw new ve;try{let s=await ae(k(t.invoke(o,a)));return r.recordSuccess(),s}catch(s){throw r.recordFailure(s),s}},async*stream(o,a){if(!r.canExecute())throw new ve;try{for await(let s of t.stream(o,a))yield s;r.recordSuccess()}catch(s){throw r.recordFailure(s),s}}});return K(n,"withBreaker",t),{adapter:n,breaker:r}}var Le=class extends Error{constructor(r,n,o){super(`Budget exhausted: ${r} (limit=${n}, observed=${o})`);this.which=r;this.limit=n;this.observed=o}name="BudgetExhaustedError"},$e=Object.freeze({calls:0,inputTokens:0,outputTokens:0,usd:0}),wt=()=>({calls:0,inputTokens:0,outputTokens:0,usd:0});function We(t,e){let r=me(void 0,{name:e.name?`${e.name}/log`:"budgetGate/log",maxSize:e.logMax??1e3}),n=v(wt(),{name:e.name?`${e.name}/totals`:"budgetGate/totals"}),o=T([n],([i])=>{let d=i;return!(e.caps.calls!=null&&d.calls>=e.caps.calls||e.caps.inputTokens!=null&&d.inputTokens>=e.caps.inputTokens||e.caps.outputTokens!=null&&d.outputTokens>=e.caps.outputTokens||e.caps.usd!=null&&d.usd>=e.caps.usd)},{name:e.name?`${e.name}/isOpen`:"budgetGate/isOpen",initial:!0});if(_(o),e.onExhausted!=null){let i=e.onExhausted,d=!1,m=!0;o.subscribe(p=>{for(let c of p)if(c[0]===B){let g=c[1];if(d&&m&&g===!1){let y=Lt(n.cache??$e,e.caps);y&&i(y)}m=g,d=!0}})}let a=()=>{if(o.cache===!1){let i=n.cache??$e,d=Lt(i,e.caps);return new Le(d??"budget",e.caps[d??"calls"]??0,lr(i,d??"calls"))}},s=(i,d)=>{let m=t.provider,p=de({provider:m,model:d.model,tier:d.tier,usage:i,startNs:d.startNs,method:d.method,...d.error?{error:d.error}:{}});r.append(p);let c=n.cache??$e,g=e.pricingFn?c.usd+e.pricingFn(i,{model:d.model,provider:m,tier:d.tier}).total:c.usd;n.emit({calls:c.calls+1,inputTokens:c.inputTokens+z(i),outputTokens:c.outputTokens+te(i),usd:g})},l=()=>{r.clear(),n.emit(wt())},u=W(t,{invoke(i,d){let m=a();if(m)return Promise.reject(m);let p=H(),c=t.model??d?.model??"",g=f=>(s(f.usage??X(),{model:t.model??d?.model??f.model??"",tier:d?.tier??f.tier,startNs:p,method:"invoke"}),f),y=f=>{let h=f;s(X(),{model:c,tier:d?.tier,startNs:p,method:"invoke",error:{type:h?.name??"Error",message:h?.message??String(f)}})};return xe(t.invoke(i,d),{onResp:g,onError:y,name:"budgetGate/invokeTap"})},async*stream(i,d){let m=a();if(m)throw m;let p=H(),c;try{for await(let g of t.stream(i,d))g.type==="usage"&&(c=g.usage),yield g;s(c??X(),{model:t.model??d?.model??"",tier:d?.tier,startNs:p,method:"stream"})}catch(g){let y=g;throw s(c??X(),{model:t.model??d?.model??"",tier:d?.tier,startNs:p,method:"stream",error:{type:y?.name??"Error",message:y?.message??String(g)}}),g}}});return K(u,"withBudgetGate",t),{adapter:u,budget:{totals:n,isOpen:o,log:r,reset:l}}}function Lt(t,e){if(e.calls!=null&&t.calls>=e.calls)return"calls";if(e.inputTokens!=null&&t.inputTokens>=e.inputTokens)return"inputTokens";if(e.outputTokens!=null&&t.outputTokens>=e.outputTokens)return"outputTokens";if(e.usd!=null&&t.usd>=e.usd)return"usd"}function lr(t,e){switch(e){case"calls":return t.calls;case"inputTokens":return t.inputTokens;case"outputTokens":return t.outputTokens;case"usd":return t.usd}}function dr(t,e){let r=e.mock??Pe({provider:t.provider,model:t.model}),n=typeof e.enabled=="boolean"?e.enabled:void 0,o=n===void 0?k(e.enabled):void 0,a;o&&(a=_(o));let s=()=>n!==void 0?n:!!o?.cache,l=W(t,{invoke(i,d){return s()?r.invoke(i,d):t.invoke(i,d)},stream(i,d){return s()?r.stream(i,d):t.stream(i,d)}});return K(l,"withDryRun",t),{adapter:l,dispose:()=>{a&&(a(),a=void 0)}}}function Ke(t){if(t==null||typeof t!="object")return;let e=t,r=e.status,n=ur(e.headers);if(r!==429&&r!==503&&!yr(e.message))return;let o={},a=n("retry-after"),s=cr(a);s!=null&&(o.retryAfterMs=s);let l=n("anthropic-ratelimit-requests-reset");if(l){let c=Nt(l);c!=null&&(o.retryAfterMs=Math.max(o.retryAfterMs??0,c))}let u=n("anthropic-ratelimit-tokens-reset");if(u){let c=Nt(u);c!=null&&(o.retryAfterMs=Math.max(o.retryAfterMs??0,c))}let i=Ne(n,"x-ratelimit-limit-requests");i!=null&&(o.rpmCap=i);let d=Ne(n,"x-ratelimit-limit-tokens");d!=null&&(o.tpmCap=d);let m=Ne(n,"x-ratelimit-remaining-requests"),p=Ne(n,"x-ratelimit-remaining-tokens");if(m!=null&&i!=null&&i>0&&(o.usageHint??={},o.usageHint.rpm=1-m/i),p!=null&&d!=null&&d>0&&(o.usageHint??={},o.usageHint.tpm=1-p/d),o.retryAfterMs==null&&e.message){let c=fr(e.message);c!=null&&(o.retryAfterMs=c)}return e.headers&&(o.metadata={headers:mr(e.headers)}),o.retryAfterMs==null&&o.rpmCap==null&&o.tpmCap==null&&o.usageHint==null?o.metadata?o:void 0:o}function ur(t){if(!t)return()=>{};if(typeof t.get=="function"){let n=t;return o=>n.get(o)??n.get(o.toLowerCase())??void 0}let e=t,r={};for(let[n,o]of Object.entries(e)){let a=Array.isArray(o)?o.join(", "):o;a!=null&&(r[n.toLowerCase()]=a)}return n=>r[n.toLowerCase()]}function mr(t){let e={};if(typeof t.forEach=="function")return t.forEach((r,n)=>{e[n]=r}),e;for(let[r,n]of Object.entries(t))n!=null&&(e[r]=Array.isArray(n)?n.join(", "):n);return e}function Ne(t,e){let r=t(e);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function cr(t){if(!t)return;let e=t.trim(),r=Number(e);if(Number.isFinite(r)&&r>=0)return r*1e3;let n=Date.parse(e);if(Number.isFinite(n)){let o=n-Date.now();if(o>0)return o}}function Nt(t){if(!t)return;let e=Date.parse(t);if(Number.isFinite(e))return Math.max(0,e-Date.now())}var pr=/retry\s+(?:in|after)\s+(\d+(?:\.\d+)?)\s*(ms|s|sec|seconds?|m|min|minutes?)/i;function fr(t){let e=pr.exec(t);if(!e)return;let r=Number(e[1]);if(!Number.isFinite(r))return;let n=(e[2]??"s").toLowerCase();if(n==="ms")return r;if(n.startsWith("s"))return r*1e3;if(n.startsWith("m"))return r*6e4}var gr=/rate\s*limit|too\s*many\s*requests|quota|429/i;function yr(t){return!!t&&gr.test(t)}function Ue(t){let e=new Error(t);return e.name="AbortError",e}function Ct(t={}){let e=Math.max(1,t.burstMultiplier??1),r=t.clampCooldownMs??6e4,n=t.rpm!=null?k(t.rpm):v(Number.POSITIVE_INFINITY),o=t.tpm!=null?k(t.tpm):v(Number.POSITIVE_INFINITY),a=v(Number.POSITIVE_INFINITY,{name:"adaptiveRateLimiter/signalRpmCap"}),s=v(Number.POSITIVE_INFINITY,{name:"adaptiveRateLimiter/signalTpmCap"}),l=v({},{name:"adaptiveRateLimiter/lastSignal"}),u=T([n,a],([x,I])=>Math.min(Number(x??1/0),Number(I??1/0)),{name:"adaptiveRateLimiter/effectiveRpm"}),i=T([o,s],([x,I])=>Math.min(Number(x??1/0),Number(I??1/0)),{name:"adaptiveRateLimiter/effectiveTpm"}),d=ce(Number(n.cache??Number.POSITIVE_INFINITY),e),m=ce(Number(o.cache??Number.POSITIVE_INFINITY),e),p=!1,c=!1,g=u.subscribe(x=>{for(let I of x)if(I[0]===B){let D=Number(I[1]);Number.isFinite(D)&&D>0?(d=ce(D,e),p=!1):D===1/0?(d=ce(1/0,e),p=!1):D<=0&&(p=!0)}}),y=i.subscribe(x=>{for(let I of x)if(I[0]===B){let D=Number(I[1]);Number.isFinite(D)&&D>0?(m=ce(D,e),c=!1):D===1/0?(m=ce(1/0,e),c=!1):D<=0&&(c=!0)}}),f=0,h=new Q,b=new Q,L;t.adaptation!=null&&(L=k(t.adaptation).subscribe(I=>{for(let D of I)D[0]===B&&w(D[1])}));function w(x){if(l.emit(x),x.rpmCap!=null&&Number.isFinite(x.rpmCap)&&x.rpmCap>=0&&(a.emit(x.rpmCap),Number.isFinite(r)&&r>0&&h.start(r,()=>a.emit(Number.POSITIVE_INFINITY))),x.tpmCap!=null&&Number.isFinite(x.tpmCap)&&x.tpmCap>=0&&(s.emit(x.tpmCap),Number.isFinite(r)&&r>0&&b.start(r,()=>s.emit(Number.POSITIVE_INFINITY))),x.retryAfterMs!=null&&x.retryAfterMs>0){let I=H()+x.retryAfterMs*1e6;I>f&&(f=I)}}let S=v(0,{name:"adaptiveRateLimiter/pending"}),E=v(Number.POSITIVE_INFINITY,{name:"adaptiveRateLimiter/rpmAvailable"}),P=v(Number.POSITIVE_INFINITY,{name:"adaptiveRateLimiter/tpmAvailable"}),j=x=>{S.emit((S.cache??0)+x)},A=()=>{E.emit(d.available()),P.emit(m.available())};async function C(x={}){let I=x.requestCost??1,D=x.tokenCost??0,U=x.signal;j(1);try{for(;;){if(U?.aborted)throw Ue("AdaptiveRateLimiter.acquire aborted");let q=H();if(f>q){let M=Math.ceil((f-q)/1e6);await Ae(M,U);continue}if(I>0&&p||D>0&&c){await Ae(250,U);continue}let re=d,ie=m;if(!re.tryConsume(I)){await Ae(At(re,I),U);continue}if(!(D>0?ie.tryConsume(D):!0)){re.putBack(I),await Ae(At(ie,D),U);continue}A();return}}finally{j(-1)}}function N(x){x>0?m.tryConsume(x):x<0&&m.putBack(-x),A()}function G(){g(),y(),L?.(),h.cancel(),b.cancel()}return{effectiveRpm:u,effectiveTpm:i,lastSignal:l,pending:S,rpmAvailable:E,tpmAvailable:P,acquire:C,recordUsage:N,recordSignal:w,dispose:G}}function ce(t,e){if(!Number.isFinite(t)||t===1/0)return Oe(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let r=Math.max(1,t*e),n=t/60;return Oe(r,n)}function At(t,e){let r=t.available(),n=Math.max(0,e-r);return n<=0?25:Math.min(5e3,Math.max(50,n*100))}function Ae(t,e){return t<=0?Promise.resolve():e?.aborted?Promise.reject(Ue("AdaptiveRateLimiter.acquire aborted")):new Promise((r,n)=>{let o=new Q,a,s=()=>{o.cancel(),e&&a&&e.removeEventListener("abort",a)};o.start(t,()=>{s(),r()}),e&&(a=()=>{s(),n(Ue("AdaptiveRateLimiter.acquire aborted"))},e.addEventListener("abort",a,{once:!0}))})}function Ve(t,e={}){let r=e.limiter??Ct({name:e.name??"rateLimiter",rpm:e.rpm,tpm:e.tpm,adaptation:e.adaptation,burstMultiplier:e.burstMultiplier}),n=(s,l)=>e.costFn?e.costFn(s,l):0,o=s=>{let l=Ke(s);l&&r.recordSignal(l)},a=W(t,{async invoke(s,l){let u=n(s,l);await r.acquire({requestCost:1,tokenCost:u,signal:l?.signal});try{let i=await ae(k(t.invoke(s,l))),d=i.usage??Rt(),p=z(d)+te(d)-u;return p>0&&r.recordUsage(p),i}catch(i){throw o(i),i}},async*stream(s,l){let u=n(s,l);await r.acquire({requestCost:1,tokenCost:u,signal:l?.signal});try{let i=0;for await(let m of t.stream(s,l))m.type==="usage"&&(i=z(m.usage)+te(m.usage)),yield m;let d=i-u;d>0&&r.recordUsage(d)}catch(i){throw o(i),i}}});return K(a,"withRateLimiter",t),{adapter:a,limiter:r}}function Ce(t="aborted"){let e=new Error(t);return e.name="AbortError",e}function St(t,e){return t<=0?Promise.resolve():e?.aborted?Promise.reject(Ce()):new Promise((r,n)=>{let o=new Q,a,s=()=>{o.cancel(),e&&a&&e.removeEventListener("abort",a)};o.start(t,()=>{s(),r()}),e&&(a=()=>{s(),n(Ce())},e.addEventListener("abort",a,{once:!0}))})}function qe(t,e={}){let r=e.attempts??3,n=e.baseDelayMs??500,o=e.maxDelayMs??1e4,a=e.strategy??"decorrelated",s=e.jitter??!0,l=e.shouldRetry??hr,u=e.retryStreaming??!0,i=(m,p)=>{if(a==="decorrelated"){let f=Math.min(o,Math.max(n,p*3));return n+Math.random()*(f-n)}let c=a==="exp"?n*2**(m-1):n*m,g=Math.min(o,c);if(!s)return g;let y=g*(.5+Math.random());return Math.min(o,y)},d=W(t,{async invoke(m,p){if(p?.signal?.aborted)throw Ce();let c,g=n;for(let y=1;y<=r;y++)try{return await ae(k(t.invoke(m,p)))}catch(f){if(c=f,y>=r||!l(f,y))throw f;let h=i(y,g);g=h,await St(h,p?.signal)}throw c},async*stream(m,p){if(p?.signal?.aborted)throw Ce();if(!u){for await(let y of t.stream(m,p))yield y;return}let c,g=n;for(let y=1;y<=r;y++){let f=!1;try{for await(let h of t.stream(m,p))f=!0,yield h;return}catch(h){if(c=h,f||y>=r||!l(h,y))throw h;let b=i(y,g);g=b,await St(b,p?.signal)}}throw c}});return K(d,"withRetry",t),d}function hr(t,e){if(t==null)return!1;let r=t;return r.name==="LLMTimeoutError"?!0:r.name==="AbortError"||r.message==="aborted"||r.name==="DOMException"&&r.code!=null&&Number(r.code)===20||r.name==="BudgetExhaustedError"||r.name==="CircuitOpenError"?!1:r.status!=null?r.status===429||r.status>=500&&r.status<600:r.code&&typeof r.code=="string"&&/^E[A-Z]+$/.test(r.code)?!0:r.message?/network|timeout|socket|fetch|econn|eai_/i.test(r.message):!1}var pe=class extends Error{constructor(r){super(`LLM call timed out after ${r}ms`);this.ms=r}name="LLMTimeoutError"};function He(t,e){if(e<=0)throw new RangeError("withTimeout: ms must be > 0");let r=a=>{let s=new AbortController,l=!1,u,i=new Q;return a&&(a.aborted?s.abort(a.reason):(u=()=>{i.cancel(),s.abort(a.reason)},a.addEventListener("abort",u,{once:!0}))),i.start(e,()=>{l=!0,s.abort(new pe(e))}),{signal:s.signal,cancel:()=>{i.cancel(),a&&u&&a.removeEventListener("abort",u)},timedOut:()=>l}},n=(a,s)=>{if(!s||a instanceof pe)throw a;let l=a;if(l?.name==="AbortError"||l?.name==="DOMException"&&Number(l.code)===20||a?.message==="aborted"){let i=new pe(e);throw i.cause=a,i}throw a},o=W(t,{async invoke(a,s){let{signal:l,cancel:u,timedOut:i}=r(s?.signal);try{return await ae(k(t.invoke(a,{...s,signal:l})))}catch(d){return n(d,i())}finally{u()}},async*stream(a,s){let{signal:l,cancel:u,timedOut:i}=r(s?.signal);try{for await(let d of t.stream(a,{...s,signal:l}))yield d}catch(d){n(d,i())}finally{u()}}});return K(o,"withTimeout",t),o}function br(t,e={}){let r={adapter:t},n=t;if(e.rateLimit){let o=Ve(n,e.rateLimit);n=o.adapter,r.rateLimiter=o.limiter}if(e.budget){let o=We(n,e.budget);n=o.adapter,r.budget=o.budget}if(e.breaker){let o=Be(n,e.breaker);n=o.adapter,r.breaker=o.breaker}if(e.timeoutMs!=null&&(n=He(n,e.timeoutMs)),e.retry&&(n=qe(n,e.retry)),e.fallback){if(e.name==="fallback")throw new RangeError('resilientAdapter: `name` cannot be "fallback" \u2014 collides with the secondary tier label.');let o={};e.onFallback&&(o.onFallback=e.onFallback),e.onExhausted&&(o.onExhausted=e.onExhausted),n=je([{name:e.name??"primary",adapter:n},{name:"fallback",adapter:e.fallback}],o)}return e.cache&&(n=_e(n,e.cache)),r.adapter=n,r}function Tr(t,e,r){let n=k(e);return F(n,a=>{if(!a||a.length===0)return v(null);let s=r?.tools;return t.invoke(a,{model:r?.model,temperature:r?.temperature,maxTokens:r?.maxTokens,tools:s,systemPrompt:r?.systemPrompt})})}function R(t,e){return pt("ai",t,e)}function Mr(t){return t!=null&&typeof t.then=="function"}function ze(t){return typeof t=="object"&&t!==null&&"subscribe"in t&&typeof t.subscribe=="function"&&"cache"in t}function vr(t){return t!=null&&typeof t=="object"&&Symbol.asyncIterator in t&&typeof t[Symbol.asyncIterator]=="function"}var kr=3e4;function Et(t,e){if(t.status==="settled"){let n=t.cache;if(n!==void 0)return Promise.resolve(n)}let r=e?.timeoutMs??kr;return new Promise((n,o)=>{let a=new Q,s=t.subscribe(l=>{for(let u of l){if(u[0]===B){a.cancel(),s(),n(u[1]);return}if(u[0]===$){a.cancel(),s(),o(u[1]);return}if(u[0]===Z){a.cancel(),s(),o(new Error("firstDataFromNode: completed without producing a value"));return}}});a.start(r,()=>{s(),o(new Error(`firstDataFromNode: timed out after ${r}ms`))})})}async function Te(t){return Mr(t)?Te(await t):ze(t)?Et(t):vr(t)?Et(k(t)):t}function fe(t){let e=t.match(/^```(?:json)?\s*([\s\S]*?)\s*```[\s\S]*$/);return e?e[1]:t}function xr(t,e){let r=k(t),n=e?.refreshTrigger!=null?k(e.refreshTrigger):null;return n==null?le([r],(o,a,s)=>{if(s.store.emitted===!0)return;let u=o[0],i=u!=null&&u.length>0?u.at(-1):s.prevData[0];if(i!==void 0)return s.store.emitted=!0,a.emit(i),{invalidate:()=>{s.store.emitted=!1}}},{name:e?.name??"frozenContext",describeKind:"derived",initial:null,meta:R("frozen_context")}):le([r,n],(o,a,s)=>{let l=o[1];if(!(l!=null&&l.length>0))return;let i=o[0],d=i!=null&&i.length>0?i.at(-1):s.prevData[0];a.emit(d)},{name:e?.name??"frozenContext",describeKind:"derived",initial:null,meta:R("frozen_context")})}function It(t){return t!=null&&typeof t=="object"&&"content"in t?String(t.content):typeof t=="string"?t:String(t)}function Rr(t,e=200){return t.length<=e?t:`${t.slice(0,e)}\u2026`}function Ye(t,e,r,n){let o=n?.format??"text",a=n?.name??"prompt_node",s=T(e,u=>{if(u.some(d=>d==null))return[];let i=typeof r=="string"?r:r(...u);return i?[{role:"user",content:i}]:[]},{name:`${a}::messages`,meta:R("prompt_node")});return F(s,u=>!u||u.length===0?v(null):oe(i=>{let d=!1,m=!1,p,c={model:n?.model,temperature:n?.temperature,maxTokens:n?.maxTokens,systemPrompt:n?.systemPrompt};if(n?.abort){let h=ct(n.abort);c.signal=h.signal,p=h.dispose}let g;try{g=t.invoke(u,c)}catch(h){return d=!0,i.down([[$,h]]),()=>{p?.()}}let f=k(g).subscribe(h=>{if(!(m||d))for(let b of h){if(d)return;if(b[0]===B){let L=b[1];try{let w=It(L),S=o==="json"?JSON.parse(fe(w)):w;i.emit(S)}catch(w){let S=It(L),E=new Error(`promptNode: failed to parse LLM response as JSON: ${w.message}
2
- Raw content (first 200 chars): ${Rr(S)}`);d=!0,i.down([[$,E]]);return}}else if(b[0]===$){d=!0,i.down([[$,b[1]]]);return}else if(b[0]===Z){d=!0,i.down([[Z]]);return}else i.down([b])}});return()=>{m=!0,f(),p?.()}},{name:`${a}::call`,meta:R("prompt_node::call")}),{name:`${a}::output`,meta:n?.meta?{...R("prompt_node::output"),...n.meta}:R("prompt_node::output")})}async function Ot(t,e,r,n){let o="",a=0;for await(let s of t.stream(e,r))n.publish({...s,seq:a++,ts:he()}),s.type==="token"&&(o+=s.delta);return o}function Dt(t,e){if(e==="json")try{return JSON.parse(fe(t))}catch(r){let n=t.slice(0,160);throw new Error(`streamingPromptNode: format:"json" \u2014 failed to parse accumulated text as JSON: ${r.message}; content preview: ${n}`)}return t}function Pt(t,e){return T([t.latest],([r],n)=>{let o=n.store;if(r==null)return o.acc??"";let a=r;return a.seq===0&&(o.acc=""),a.type==="token"&&(o.acc=(o.acc??"")+a.delta),o.acc??""},{name:e,meta:R("accumulated_text"),initial:""})}function wr(t,e,r,n){let o=n?.name??"llm",a=n?.format??"text",s=Ge(`${o}/stream`,{...n?.retainedLimit!=null?{retainedLimit:n.retainedLimit}:{}}),l=T(e,m=>{if(m.some(c=>c==null))return[];let p=typeof r=="string"?r:r(...m);return p?[{role:"user",content:p}]:[]},{name:`${o}::messages`,meta:R("prompt_node::messages"),initial:[]}),u=F(l,m=>{let p=m;if(!p||p.length===0)return v(null);let c=new AbortController;async function*g(){try{let y=await Ot(t,p,{model:n?.model,temperature:n?.temperature,maxTokens:n?.maxTokens,systemPrompt:n?.systemPrompt,signal:c.signal},s);yield Dt(y,a)}finally{c.abort()}}return k(g())}),i=Pt(s,`${o}::accumulatedText`),d=_(u);return{output:u,deltaTopic:s,accumulatedText:i,dispose:()=>{d(),s.destroy()}}}function Lr(t,e,r,n,o,a){let s=v(0,{name:`${e}/cancel`}),l=0,u=[...n,s],i=a?.name??e,d=a?.format??"text",m=Ge(`${i}/stream`,{...a?.retainedLimit!=null?{retainedLimit:a.retainedLimit}:{}}),p=T(u,P=>{let j=P.slice(0,-1);if(j.some(C=>C==null))return[];let A=typeof o=="string"?o:o(...j);return A?[{role:"user",content:A}]:[]},{name:`${i}::messages`,meta:R("prompt_node::messages"),initial:[]}),c=F(p,P=>{let j=P;if(!j||j.length===0)return v(null);let A=new AbortController;async function*C(){try{let N=await Ot(r,j,{model:a?.model,temperature:a?.temperature,maxTokens:a?.maxTokens,systemPrompt:a?.systemPrompt,signal:A.signal},m);yield Dt(N,d)}finally{A.abort()}}return k(C())}),g=Pt(m,`${i}::accumulatedText`),y=ft(c,P=>P!=null);t.add(y,{name:`${e}/raw`});let f=bt(`${e}/gate-graph`);t.mount(`${e}/gate-graph`,f),f.add(y,{name:`${e}/raw`});let h=f.gate(`${e}/gate`,`${e}/raw`,a?.gate),b=_(c),L=_(h.node),w=_(g);t.addDisposer(b),t.addDisposer(L),t.addDisposer(w);let S=h.reject.bind(h),E={...h,reject(P=1){J(()=>{S(P),s.emit(++l)})}};return{output:h.node,deltaTopic:m,accumulatedText:g,gate:E,dispose:()=>{b(),L(),w(),m.destroy()}}}function Nr(t,e){let r=e?.separator??`
3
-
4
- `,n=t.map(s=>typeof s=="string"?v(s):k(s)),o=T(n,s=>s.filter(l=>l!=null&&l!=="").join(r),{name:e?.name??"systemPrompt",describeKind:"derived",meta:R("system_prompt"),initial:""}),a=_(o);return Object.assign(o,{dispose:a})}var Ar=(t,e)=>t===e?!0:t.chunkCount===e.chunkCount&&t.charCount===e.charCount&&t.estimatedTokens===e.estimatedTokens&&t.estimated===e.estimated;function Cr(t,e){let r=e?.charsPerToken??4,n={chunkCount:0,charCount:0,estimatedTokens:0,estimated:!0};return T([t.latest],([o],a)=>{if(o==null)return n;let s=o;"chunkCount"in a.store||(a.store.chunkCount=0,a.store.charCount=0,a.store.usageTokens=0,a.store.sawUsage=!1);let l=a.store;s.type==="token"?(l.chunkCount+=1,l.charCount+=s.delta.length):s.type==="usage"&&(l.sawUsage=!0,l.usageTokens=z(s.usage)+te(s.usage));let u=l.sawUsage?l.usageTokens:Math.ceil(l.charCount/r);return{chunkCount:l.chunkCount,charCount:l.charCount,estimatedTokens:u,estimated:!l.sawUsage}},{name:e?.name??"cost-meter",describeKind:"derived",initial:n,meta:R("cost_meter_extractor"),equals:Ar})}var Sr=(t,e)=>{if(t===e)return!0;if(t==null||e==null)return t===e;if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++){let n=t[r],o=e[r];if(n.label!==o.label||n.pattern!==o.pattern||n.match!==o.match||n.position!==o.position)return!1}return!0};function Er(t,e){let r=e.maxPatternLength??128;for(let o of e.patterns)if(o.pattern.source.length>r)throw new Error(`keywordFlagExtractor: pattern "${o.label}" literal exceeds maxPatternLength (${o.pattern.source.length} > ${r}); raise the option or shorten the pattern.`);let n=e.patterns.map(o=>({label:o.label,pattern:o.pattern,compiled:new RegExp(o.pattern.source,`${o.pattern.flags.replace("g","")}g`)}));return T([t],([o],a)=>{if(o==null)return[];let s=o;"flags"in a.store||(a.store.flags=[],a.store.scannedTo=0);let l=a.store.flags,u=a.store.scannedTo,i=Math.max(0,u-r),d=s.slice(i),m=!1;for(let{pattern:p,label:c,compiled:g}of n){g.lastIndex=0;for(let y of d.matchAll(g)){let f=i+(y.index??0);f+y[0].length<=u||(l.push({label:c,pattern:p,match:y[0],position:f}),m=!0)}}return a.store.scannedTo=s.length,m?[...l]:l.slice()},{name:e.name??"keyword-flag-extractor",describeKind:"derived",initial:[],meta:R("keyword_flag_extractor"),equals:Sr})}function Ir(t,e,r){return T([t],([n])=>n==null?null:e(n),{name:r?.name??"extractor",describeKind:"derived",initial:null,meta:R("stream_extractor"),...r?.equals?{equals:r.equals}:{}})}var Or=(t,e)=>{if(t===e)return!0;if(t==null||e==null)return t===e;if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++){let n=t[r],o=e[r];if(n.startIndex!==o.startIndex||n.name!==o.name||n.raw!==o.raw)return!1}return!0};function Dr(t,e){return T([t],([r],n)=>{if(r==null)return[];let o=r;"calls"in n.store||(n.store.calls=[],n.store.scanFrom=0);let a=n.store.calls,s=n.store.scanFrom,l=!1;for(;s<o.length;){let u=o.indexOf("{",s);if(u===-1){n.store.scanFrom=o.length;break}let i=0,d=-1,m=!1;for(let c=u;c<o.length;c++){let g=o[c];if(m)g==="\\"&&c+1<o.length?c++:g==='"'&&(m=!1);else if(g==='"')m=!0;else if(g==="{")i++;else if(g==="}"&&(i--,i===0)){d=c;break}}if(d===-1){n.store.scanFrom=u;break}let p=o.slice(u,d+1);try{let c=JSON.parse(p);typeof c.name=="string"&&c.arguments!=null&&typeof c.arguments=="object"&&(a.push({name:c.name,arguments:c.arguments,raw:p,startIndex:u}),l=!0)}catch{}s=d+1,n.store.scanFrom=s}return l?[...a]:a.slice()},{name:e?.name??"tool-call-extractor",describeKind:"derived",initial:[],meta:R("tool_call_extractor"),equals:Or})}function Pr(t,e,r,n){let o=r*(n?.hardMultiplier??1.5),a=typeof e!="function",s=[t];return a&&s.push(e),T(s,l=>{let u=l[0]??"";if(u.length===0)return"allow";let i=a?l[1]??0:e(u);return i>=o?"block":i>=r?"review":"allow"},{name:n?.name??"content-gate",initial:"allow"})}function _r(t,e,r,n){let o=r??(()=>"[REDACTED]");function a(s){let l=s;for(let u of e){let i=u.global?u:new RegExp(u.source,`${u.flags}g`);l=l.replace(i,d=>o(d,u))}return l}return T([t],([s])=>a(s??""),{name:n?.name??"redactor",initial:""})}var Se=class extends se{_log;messages;latest;messageCount;constructor(e,r={}){super(e,r.graph),this._log=me([],{name:"messages",maxSize:r.maxMessages}),this.messages=this._log.entries,this.add(this.messages,{name:"messages"}),this.latest=T([this.messages],([n])=>{let o=n;return o.length===0?null:o[o.length-1]},{name:"latest",describeKind:"derived",meta:R("chat_latest")}),this.add(this.latest,{name:"latest"}),this.addDisposer(_(this.latest)),this.messageCount=T([this.messages],([n])=>n.length,{name:"messageCount",describeKind:"derived",meta:R("chat_message_count"),initial:0}),this.add(this.messageCount,{name:"messageCount"}),this.addDisposer(_(this.messageCount))}append(e,r,n){this._log.append({role:e,content:r,...n})}appendToolResult(e,r){this._log.append({role:"tool",content:r,toolCallId:e})}clear(){this._log.clear()}allMessages(){return this.messages.cache}};function Je(t,e){return new Se(t,e)}function Qe(t){let{toolCalls:e,tools:r}=t,n=t.retryCount??1,o=t.onError??"rescue",a=(s,l)=>{if(s===l)return!0;if(s.length!==l.length)return!1;for(let u=0;u<s.length;u++){let i=s[u],d=l[u];if(i?.id!==d?.id||i?.content!==d?.content)return!1}return!0};return F(e,s=>{if(s==null||s.length===0)throw new Error("toolExecution: received an empty tool-call batch as DATA \u2014 callers must upstream-filter empty batches (emit RESOLVED) so switchMap is only dispatched for non-empty batches.");let l=s.map(u=>jr(u,r,n,o));return T(l,u=>u,{name:"toolExecution::batch",equals:a})})}function jr(t,e,r,n){let o=it(()=>e.executeReactive(t.name,t.arguments),{count:r}),a=T([o],([s])=>({id:t.id,content:typeof s=="string"?s:JSON.stringify(s)}));return n==="propagate"?a:yt(a,s=>({id:t.id,content:JSON.stringify({error:String(s)})}))}var Ee=class extends se{definitions;schemas;_bundle;constructor(e,r={}){super(e,r.graph),this._bundle=ke({name:"definitions"}),this.definitions=this._bundle.entries,this.add(this.definitions,{name:"definitions"}),this.schemas=T([this.definitions],([n])=>[...(n??new Map).values()],{name:"schemas",describeKind:"derived",meta:R("tool_schemas"),initial:[]}),this.add(this.schemas,{name:"schemas"}),this.addDisposer(_(this.schemas))}register(e){this._bundle.set(e.name,e)}unregister(e){this._bundle.delete(e)}executeReactive(e,r){let n=this._bundle.get(e);if(!n)throw new Error(`toolRegistry: unknown tool "${e}"`);return oe(o=>{let a=new AbortController,s;try{let u=n.handler(r,{signal:a.signal});s=Gr(u,a.signal)}catch(u){return o.down([[$,u]]),()=>{a.abort()}}let l=s.subscribe(u=>{o.down(u)});return()=>{a.abort(),l()}},{name:`executeReactive::${e}`,meta:R("tool_execute_reactive")})}getDefinition(e){return this._bundle.entries.cache?.get(e)}};function Xe(t,e){return new Ee(t,e)}function Gr(t,e){return ze(t)?t:t!=null&&typeof t.then=="function"?De(t,{signal:e}):t!=null&&typeof t=="object"&&Symbol.asyncIterator in t?ut(t,{signal:e}):De(Promise.resolve(t),{signal:e})}var Ie=class extends se{chat;tools;status;turn;aborted;lastResponse;toolCalls;toolResults;_terminalResult;_disposeRunWiring;_running=!1;_currentAbortController=null;constructor(e,r){if(super(e,r.graph),this.chat=Je(`${e}-chat`,{maxMessages:r.maxMessages}),this.mount("chat",this.chat),this.tools=Xe(`${e}-tools`),this.mount("tools",this.tools),r.tools)for(let O of r.tools)this.tools.register(O);this.status=v("idle",{name:"status",describeKind:"state",meta:R("agent_status")}),this.add(this.status,{name:"status"}),this.turn=v(0,{name:"turn",describeKind:"state",meta:R("agent_turn_count")}),this.add(this.turn,{name:"turn"}),this.aborted=v(!1,{name:"aborted",describeKind:"state",meta:R("agent_aborted")}),this.add(this.aborted,{name:"aborted"});let n=0,o=this.turn.subscribe(O=>{for(let M of O)M[0]===B&&(n=M[1])}),a=!1,s=this.aborted.subscribe(O=>{for(let M of O)M[0]===B&&(a=M[1])}),l=this.chat.messages.cache??[],u=this.chat.messages.subscribe(O=>{for(let M of O)M[0]===B&&(l=M[1])}),i=this.tools.schemas.cache??[],d=this.tools.schemas.subscribe(O=>{for(let M of O)M[0]===B&&(i=M[1])}),m=r.adapter,p=r.systemPrompt,c=r.model,g=r.temperature,y=r.maxTokens,f=r.maxTurns??10,h=r.stopWhen,b=this.chat,L=this.tools,w=this.status,S=this.turn,E=this.aborted,P=le([w],(O,M,V)=>{if(Me(O,V.prevData,0,"idle")!=="thinking"||a||n>=f){M.down([[ue]]);return}if(l.length===0){M.down([[ue]]);return}M.emit({messages:l,tools:i})},{name:"promptInput",describeKind:"derived",meta:R("agent_prompt_input",{closureReads:["aborted","turn","chat.messages","tools.schemas"]})}),j=F(P,O=>{let M=new AbortController;return this._currentAbortController=M,a&&M.abort(new Error("agentLoop: aborted")),k(m.invoke(O.messages,{tools:O.tools.length>0?O.tools:void 0,systemPrompt:p,model:c,temperature:g,maxTokens:y,signal:M.signal}),{signal:M.signal})},{equals:()=>!1}),A=v(null,{name:"lastResponse",describeKind:"state",meta:R("agent_last_response")});this.lastResponse=A;let C=le([A,w],(O,M,V)=>{let Y=Me(O,V.prevData,0,null);if(Me(O,V.prevData,1,"idle")!=="acting"){M.down([[ue]]);return}let ne=Y?.toolCalls;if(ne==null||ne.length===0){M.down([[ue]]);return}M.emit(ne)},{name:"toolCallsRaw",describeKind:"derived",meta:R("agent_tool_calls_raw")}),N=r.interceptToolCalls?r.interceptToolCalls(C):C;this.toolCalls=N;let G=Qe({toolCalls:N,tools:L,retryCount:1});this.toolResults=G;let x=ee([j],([O])=>{if(a)return;let M=O,V=n+1,Y=M.toolCalls!=null&&M.toolCalls.length>0,ye=M.finishReason==="end_turn"&&(!M.toolCalls||M.toolCalls.length===0),ne=h?.(M)===!0,Wt=V>=f,Kt=ne||ye||!Y||Wt?"done":"acting";J(()=>{A.emit(M),w.emit(Kt),S.emit(V),b.append("assistant",M.content,{toolCalls:M.toolCalls})})}),I=ee([G],([O])=>{if(a)return;let M=O;if(M.length===0)return;let V=n>=f?"done":"thinking";J(()=>{w.emit(V);for(let Y of M)b.appendToolResult(Y.id,Y.content)})}),D=w.cache??"idle",U=w.subscribe(O=>{for(let M of O)M[0]===B&&(D=M[1])}),q=ee([E],([O])=>{O===!0&&(this._currentAbortController?.abort(new Error("agentLoop: aborted")),D!=="done"&&w.emit("done"))}),re=_(x),ie=_(I),st=_(q);this._terminalResult=le([w,A],(O,M,V)=>{let Y=Me(O,V.prevData,0,"idle"),ye=Me(O,V.prevData,1,null);if(Y==="done"){if(ye!=null){M.emit(ye);return}let ne=new Error("agentLoop: aborted");ne.name="AbortError",M.down([[$,ne]]);return}if(Y==="error"){M.down([[$,new Error("agentLoop: errored")]]);return}M.down([[ue]])},{name:"terminalResult",describeKind:"derived",meta:R("agent_terminal_result")}),this.add(P,{name:"promptInput"}),this.add(j,{name:"llmResponse"}),this.add(this.lastResponse,{name:"lastResponse"}),this.toolCalls===C?this.add(this.toolCalls,{name:"toolCalls"}):(this.add(C,{name:"toolCallsRaw"}),this.add(this.toolCalls,{name:"toolCalls"})),this.add(G,{name:"toolResults"}),this.add(this._terminalResult,{name:"terminalResult"}),this.addDisposer(o),this.addDisposer(s),this.addDisposer(U),this.addDisposer(u),this.addDisposer(d),this.addDisposer(re),this.addDisposer(ie),this.addDisposer(st),this._disposeRunWiring=()=>{}}async run(e,r){if(this._running)throw new RangeError(`agentLoop "${this.name}": run() called while a previous run() is still pending \u2014 await the previous run before starting another, or call abort() first`);this._running=!0;let n;try{J(()=>{this.turn.emit(0),this.aborted.emit(!1),this.status.emit("idle"),this.lastResponse.emit(null)}),e!=null&&this.chat.append("user",e);let o=mt(this._terminalResult,{skipCurrent:!0});if(r!=null)if(r.aborted)this.aborted.emit(!0);else{let a=()=>this.aborted.emit(!0);r.addEventListener("abort",a,{once:!0}),n=()=>r.removeEventListener("abort",a)}return r?.aborted!==!0&&this.status.emit("thinking"),await o}finally{n?.(),this._running=!1,this._currentAbortController=null}}abort(){this.aborted.emit(!0)}destroy(){try{this._disposeRunWiring()}catch{}super.destroy()}};function Me(t,e,r,n){let o=t[r];if(o!=null&&o.length>0)return o[o.length-1];let a=e[r];return a!==void 0?a:n}function Fr(t,e){return new Ie(t,e)}function Br(t,e,r){let n=k(t),o=r?.condition!=null?k(r.condition):null,a=v(null,{name:r?.name?`${r.name}::null`:"handoff::null"});if(o==null)return F(n,l=>{if(l==null)return a;let u=v(l);return e(u)});let s=T([n,o],([l,u])=>({v:l,open:u===!0}),{name:r?.name?`${r.name}::router`:"handoff::router",describeKind:"derived"});return F(s,({v:l,open:u})=>{if(l==null)return a;if(!u)return v(l);let i=v(l);return e(i)})}function $r(t,e,r){let n=k(t),o=e.map(s=>k(s)),a=[n,...o];return T(a,s=>{let l=s[0]??[],u=s.slice(1);return l.filter(i=>{for(let d of u)if(d!=null&&!d(i))return!1;return!0})},{name:r?.name??"tool-selector",describeKind:"derived",meta:R("tool_selector"),equals:(s,l)=>{let u=s,i=l;if(u.length!==i.length)return!1;for(let d=0;d<u.length;d++)if(u[d]!==i[d])return!1;return!0}})}function _t(t){let e=t.thresholds??{};return r=>{let n=t.scoreFn(r);for(let o of Object.keys(e)){let a=e[o];if(a===void 0)continue;let s=n[o];if((Number.isFinite(s)?s:Number.NEGATIVE_INFINITY)<a)return!1}return!0}}function Wr(t){let e={persistence:t.persistenceThreshold??.3,personalValue:t.personalValueThreshold??.3},r=_t({scoreFn:t.scoreFn,thresholds:e});return t.requireStructured?n=>{if(!r(n))return!1;let o=t.scoreFn(n).structure;return Number.isFinite(o)&&o>0}:r}function jt(t,e,r,n){let o=r.name??n;return a=>{let s=v(a);return Ye(r.adapter,[s],l=>e(l),{name:o,format:"json",systemPrompt:t,model:r.model,temperature:r.temperature??0,maxTokens:r.maxTokens})}}function Ze(t,e){let r=e.maxExistingKeys??100,n=jt(t,o=>JSON.stringify({input:o.raw,existingKeys:o.existingKeys}),e,"llmExtractor");return(o,a)=>{let s=r===Number.POSITIVE_INFINITY?[...a.keys()]:[...a.keys()].slice(0,r);return n({raw:o,existingKeys:s})}}function et(t,e){let r=jt(t,n=>JSON.stringify({memories:n}),e,"llmConsolidator");return n=>{let o=[...n.entries()].map(([a,s])=>({key:a,value:s}));return r(o)}}var tt=Math.LN2/604800;function ge(t){return t instanceof Map?t:new Map}function rt(t,e,r){let n=vt({dimension:r.dimension});t.add(n.entries,{name:"vectorIndex"});let a=ee([e.store.entries],([s])=>{let l=ge(s);for(let[u,i]of l){let d=r.embedFn(i);d&&n.upsert(u,d,i)}}).subscribe(()=>{});return t.addDisposer(a),{vectors:n,dispose:()=>a()}}function nt(t,e,r,n){let o=n.mountPath??r,a=kt(`${r}-kg`);if(t.mount(o,a),!n.entityFn)return{kg:a,dispose:()=>{}};let s=n.entityFn,u=ee([e.store.entries],([i])=>{let d=ge(i);for(let[m,p]of d){let c=s(m,p);if(c){for(let g of c.entities??[])a.upsertEntity(g.id,g.value);for(let g of c.relations??[])a.link(g.from,g.to,g.relation,g.weight)}}}).subscribe(()=>{});return t.addDisposer(u),{kg:a,dispose:()=>u()}}function ot(t,e,r){let n=r.decayRate??tt,o=r.maxActive??1e3,a=r.archiveThreshold??.1,s=r.permanentFilter??(()=>!1),l=Mt({name:"permanent"});t.add(l.entries,{name:"permanent"});let u=new Set,i=b=>u.has(b)?"permanent":ge(e.store.entries.cache).has(b)?"active":"archived",d=(b,L)=>{u.add(b),l.upsert(b,L)},m=new Map,p=e.store.entries,c=r.context?k(r.context):v(null),y=ee([p,c],([b,L])=>{let w=ge(b),S=H(),E=[],P=[];for(let[A,C]of w){if(m.has(A)||m.set(A,S),s(A,C)){P.push({key:A,value:C});continue}let N=r.score(C,L),G=m.get(A)??S,x=Number(S-G)/1e9;Tt(N,x,n)<a&&E.push(A)}for(let A of m.keys())w.has(A)||m.delete(A);for(let{key:A,value:C}of P)u.has(A)||d(A,C);let j=w.size-u.size;if(j>o){let A=[...w.entries()].filter(([N])=>!u.has(N)).map(([N,G])=>({key:N,score:r.score(G,L)})).sort((N,G)=>N.score-G.score),C=j-o;for(let N=0;N<C&&N<A.length;N++){let G=A[N].key;E.includes(G)||E.push(G)}}E.length>0&&J(()=>{for(let A of E)e.store.delete(A)})}).subscribe(()=>{}),f=null;r.archiveTier&&(f=t.attachSnapshotStorage([r.archiveTier],r.archiveStorageOptions??{}));let h=()=>{y(),f?.dispose()};return t.addDisposer(h),{tiers:{permanent:l,activeEntries:p,archiveHandle:f,tierOf:i,markPermanent:d},dispose:h}}function Kr(t,e){if(!t||!e)return 0;let r=Math.min(t.length,e.length),n=0;for(;n<r&&t[n]===e[n];)n++;return n}function at(t,e,r,n,o){let a=o.topK??20,s=o.graphDepth??1,l=o.budget??2e3,u=o.contextWeight??0,i=o.context?k(o.context):v(null),d=(f,h,b)=>{let L=new Map,w=[];if(r&&b.vector){w=r.search(b.vector,a);for(let C of w){let N=f.get(C.id);N&&L.set(C.id,{value:N,sources:new Set(["vector"])})}}let S=[];if(n){let C=[...b.entityIds??[],...L.keys()],N=new Set,G=C;for(let x=0;x<s;x++){let I=[];for(let D of G)if(!N.has(D)){N.add(D);for(let U of n.related(D)){let q=U.to;if(!N.has(q)){I.push(q);let re=f.get(q);if(re){let ie=L.get(q);ie?ie.sources.add("graph"):L.set(q,{value:re,sources:new Set(["graph"])}),S.push(q)}}}}G=I}}for(let[C,N]of f)L.has(C)||L.set(C,{value:N,sources:new Set(["store"])});let E=b.context?.length??0,P=[];for(let[C,{value:N,sources:G}]of L){let x=o.contextOf?o.contextOf(N):void 0,I=o.score(N,h);if(u>0&&E>0){let U=Kr(b.context,x);U>0&&(I=I*(1+u*U/E))}let D=x?{key:C,value:N,score:I,sources:[...G],context:x}:{key:C,value:N,score:I,sources:[...G]};P.push(D)}P.sort((C,N)=>N.score-C.score);let j=[],A=0;for(let C of P){let N=o.cost(C.value);if(A+N>l&&j.length>0)break;j.push(C),A+=N}return{packed:j,trace:{vectorCandidates:w,graphExpanded:S,ranked:P,packed:j}}},m=(f,h)=>{if(f===h)return!0;if(f.length!==h.length)return!1;for(let b=0;b<f.length;b++)if(f[b]!==h[b])return!1;return!0},p=v([],{name:"retrieval",describeKind:"state",meta:R("retrieval_pipeline"),equals:m});t.add(p,{name:"retrieval"});let c=v(null,{name:"retrievalTrace",describeKind:"state",meta:R("retrieval_trace")});return t.add(c,{name:"retrievalTrace"}),{retrieval:p,retrievalTrace:c,retrieve:f=>{let h=ge(e.store.entries.cache),{packed:b,trace:L}=d(h,i.cache,f);return J(()=>{p.emit(b),c.emit(L)}),b},retrieveReactive:f=>{let h=k(f),b=T([e.store.entries,i,h],([S,E,P])=>{if(P==null)return{packed:[],trace:null};let j=ge(S),{packed:A,trace:C}=d(j,E,P);return{packed:A,trace:C}},{name:"retrievalReactive::result",describeKind:"derived",meta:R("retrieval_reactive_result"),initial:{packed:[],trace:null}}),w=ee([b],([S])=>{let E=S;J(()=>{p.emit(E.packed),E.trace&&c.emit(E.trace)})}).subscribe(()=>{});return t.addDisposer(w),T([b],([S])=>S.packed,{name:"retrievalReactive",describeKind:"derived",meta:R("retrieval_reactive"),initial:[],equals:m})}}}function Ur(t,e,r){let n=new se(t,r.graph),o;if(r.extractFn)o=r.extractFn;else if(r.adapter&&r.extractPrompt)o=Ze(r.extractPrompt,{adapter:r.adapter});else throw new Error("agentMemory: provide either extractFn or adapter + extractPrompt");let a=(b,L)=>b==null?{upsert:[]}:o(b,L),s=e;if(r.admissionFilter){let b=k(e),L=r.admissionFilter;s=T([b],([w])=>{if(L(w))return w},{name:"admissionFilter",describeKind:"derived"})}let l;r.consolidateFn?l=r.consolidateFn:r.adapter&&r.consolidatePrompt&&(l=et(r.consolidatePrompt,{adapter:r.adapter}));let u=r.consolidateTrigger;if(!u&&l&&r.reflection?.enabled!==!1){let b=r.reflection?.interval??3e5;u=dt(b,{period:b})}let i={score:r.score,cost:r.cost,budget:r.budget??2e3,context:r.context,consolidate:l,consolidateTrigger:u},d=ht(s,a,i);n.add(d.store.entries,{name:"store"}),n.add(d.compact,{name:"compact"}),n.add(d.size,{name:"size"});let m=null;r.vectorDimensions&&r.vectorDimensions>0&&r.embedFn&&(m=rt(n,d,{dimension:r.vectorDimensions,embedFn:r.embedFn}).vectors);let p=null;r.enableKnowledgeGraph&&(p=nt(n,d,t,{mountPath:"kg",entityFn:r.entityFn}).kg);let c=null;r.tiers&&(c=ot(n,d,{...r.tiers,score:r.score,context:r.context}).tiers);let g=null,y=null,f=null,h=null;if(m||p){let b=at(n,d,m,p,{score:r.score,cost:r.cost,budget:r.budget,topK:r.retrieval?.topK,graphDepth:r.retrieval?.graphDepth,contextOf:r.contextOf,contextWeight:r.contextWeight,context:r.context});g=b.retrieval,y=b.retrievalTrace,f=b.retrieve,h=b.retrieveReactive}return Object.assign(n,{distillBundle:d,compact:d.compact,size:d.size,vectors:m,kg:p,memoryTiers:c,retrieval:g,retrievalTrace:y,retrieve:f,retrieveReactive:h})}function Vr(t,e,r){let n=t.describe({actor:e,detail:"full"}),o=r?.groupByTags??!0,a=r?.separator??`
5
- `,s=[],l=r?.sinceVersion;for(let[u,i]of Object.entries(n.nodes)){let d=i.meta??{},m=d.description,p=d.format;if(!m&&!p)continue;if(l!=null&&i.v!=null){let h=l.get(u);if(h!=null&&h.id===i.v.id&&i.v.version<=h.version)continue}let c=m??u,g=i.value,y=d.unit,f;p==="currency"&&typeof g=="number"?f=`$${g.toFixed(2)}`:p==="percentage"&&typeof g=="number"?f=`${(g*100).toFixed(1)}%`:g==null?f="(no value)":f=String(g),y&&p!=="currency"&&p!=="percentage"&&(f=`${f} ${y}`),s.push({path:u,description:c,formatted:f})}if(s.length===0)return"";if(o){let u=new Map,i=[];for(let m of s){let c=n.nodes[m.path].meta?.tags;if(c&&c.length>0){let g=c[0],y=u.get(g);y||(y=[],u.set(g,y)),y.push(m)}else i.push(m)}if(u.size===0)return s.map(m=>`- ${m.description}: ${m.formatted}`).join(a);let d=[];for(let[m,p]of[...u.entries()].sort((c,g)=>c[0].localeCompare(g[0])))d.push(`[${m}]${a}${p.map(c=>`- ${c.description}: ${c.formatted}`).join(a)}`);return i.length>0&&d.push(i.map(m=>`- ${m.description}: ${m.formatted}`).join(a)),d.join(a+a)}return s.map(u=>`- ${u.description}: ${u.formatted}`).join(a)}var Gt=`You are a graph architect for GraphReFly, a reactive graph protocol.
6
-
7
- Given a natural-language description, produce a JSON graph specification with this structure:
8
-
9
- {
10
- "name": "<graph_name>",
11
- "nodes": {
12
- "<node_name>": {
13
- "type": "state" | "derived" | "producer" | "effect" | "operator",
14
- "initial": <initial_value_for_state_nodes>,
15
- "deps": ["<dep_node_name>", ...],
16
- "meta": {
17
- "description": "<human-readable purpose>",
18
- "type": "string" | "number" | "boolean" | "integer" | "enum",
19
- "range": [min, max],
20
- "values": ["a", "b"],
21
- "format": "currency" | "percentage" | "status",
22
- "access": "human" | "llm" | "both" | "system",
23
- "unit": "<unit>",
24
- "tags": ["<tag>"]
25
- }
26
- }
27
- }
28
- }
29
-
30
- Rules:
31
- - "state" nodes have no deps and hold user/LLM-writable values (knobs). Use "initial" for the starting value.
32
- - "derived" nodes have deps and compute from them (pure, no side effects).
33
- - "effect" nodes have deps but produce side effects (no return value).
34
- - "producer" nodes have no deps but generate values asynchronously.
35
- - "operator" nodes are parameterized transformations with deps.
36
- - Use "deps" inside each node to declare dependencies \u2014 no separate "edges" array.
37
- - meta.description is required for every node.
38
- - Return ONLY valid JSON, no markdown fences or commentary.`;async function Ft(t,e,r){let o=[{role:"system",content:r?.systemPromptExtra?`${Gt}
39
-
40
- ${r.systemPromptExtra}`:Gt},{role:"user",content:t}],a=e.invoke(o,{model:r?.model,temperature:r?.temperature??0,maxTokens:r?.maxTokens,signal:r?.signal}),l=(await Te(a)).content.trim();l.startsWith("```")&&(l=fe(l));let u;try{u=JSON.parse(l)}catch{throw new Error(`graphFromSpec: LLM response is not valid JSON: ${l.slice(0,200)}`)}return xt(u,{catalog:r?.catalog})}function qr(t,e,r){let n=k(t);return F(n,o=>!o||typeof o!="string"||o.trim().length===0?v(null):oe(a=>{let s=new AbortController,l=!1;return Ft(o,e,{...r,signal:s.signal}).then(u=>{if(l){u.destroy();return}a.emit(u),a.down([[Z]])}).catch(u=>{l||a.down([[$,u]])}),()=>{l=!0,s.abort()}},{name:"graphFromSpec::call"}))}function Hr(t){let e={},r=t.type;return r==="enum"&&Array.isArray(t.values)?(e.type="string",e.enum=t.values):r==="integer"?e.type="integer":r==="number"?e.type="number":r==="boolean"?e.type="boolean":r==="string"?e.type="string":e.type=["string","number","boolean"],Array.isArray(t.range)&&t.range.length===2&&(e.minimum=t.range[0],e.maximum=t.range[1]),typeof t.format=="string"&&(e.description=`Format: ${t.format}`),typeof t.unit=="string"&&(e.description?e.description+=` (${t.unit})`:e.description=`Unit: ${t.unit}`),e}function zr(t,e){let r=t.describe({actor:e,detail:"full"}),n=[],o=[],a=[];for(let[s,l]of Object.entries(r.nodes)){if(l.type!=="state"||s.includes("::__meta__::")||l.status==="completed"||l.status==="errored")continue;let u=l.meta??{},i=u.access;if(i==="human"||i==="system")continue;let d=u.description??`Set the value of ${s}`,m=Hr(u),p={type:"object",required:["value"],properties:{value:m},additionalProperties:!1},c=s.replace(/::/g,"__");n.push({type:"function",function:{name:c,description:d,parameters:p}}),o.push({name:s,description:d,inputSchema:p});let g=t,y=e,f=l.v;a.push({name:s,description:d,parameters:p,handler(h){return g.set(s,h.value,y?{actor:y}:void 0),h.value},...f!=null?{version:{id:f.id,version:f.version}}:{}})}return{openai:n,mcp:o,definitions:a}}var Yr=`You are a reactive graph optimizer for GraphReFly.
41
-
42
- Given a graph's current structure (from describe()) and a problem statement, suggest topology and parameter changes to solve the problem.
43
-
44
- Return ONLY valid JSON with this structure:
45
- {
46
- "summary": "<one-line summary of the strategy>",
47
- "reasoning": "<explanation of why these changes help>",
48
- "operations": [
49
- { "type": "add_node", "name": "<name>", "nodeType": "state|derived|effect|producer|operator", "meta": {...}, "initial": <value> },
50
- { "type": "remove_node", "name": "<name>" },
51
- { "type": "connect", "from": "<source>", "to": "<target>" },
52
- { "type": "disconnect", "from": "<source>", "to": "<target>" },
53
- { "type": "set_value", "name": "<name>", "value": <new_value> },
54
- { "type": "update_meta", "name": "<name>", "key": "<meta_key>", "value": <new_value> }
55
- ]
56
- }
57
-
58
- Rules:
59
- - Only suggest operations that reference existing nodes (for remove/disconnect/set_value/update_meta) or new nodes you define (for add_node).
60
- - Keep changes minimal \u2014 prefer the smallest set of operations that solves the problem.
61
- - Return ONLY valid JSON, no markdown fences or commentary.`;async function Bt(t,e,r,n){let{expand:o,...a}=t.describe({actor:n?.actor,detail:"standard"}),s=[{role:"system",content:Yr},{role:"user",content:JSON.stringify({graph:a,problem:e})}],l=r.invoke(s,{model:n?.model,temperature:n?.temperature??0,maxTokens:n?.maxTokens,signal:n?.signal}),i=(await Te(l)).content.trim();i.startsWith("```")&&(i=i.replace(/^```(?:json)?\s*/,"").replace(/\s*```$/,""));let d;try{d=JSON.parse(i)}catch{throw new Error(`suggestStrategy: LLM response is not valid JSON: ${i.slice(0,200)}`)}let m=d;if(typeof m.summary!="string")throw new Error("suggestStrategy: missing 'summary' in response");if(typeof m.reasoning!="string")throw new Error("suggestStrategy: missing 'reasoning' in response");if(!Array.isArray(m.operations))throw new Error("suggestStrategy: missing 'operations' array in response");return{summary:m.summary,reasoning:m.reasoning,operations:m.operations}}function Jr(t,e,r,n){let o=k(e),a=gt(o,t);return F(a,s=>{if(s==null)return v(null);let[l,u]=s;return!u||!l||typeof l!="string"||l.trim().length===0?v(null):u.destroyed?v(null):oe(i=>{let d=new AbortController,m=!1;return Bt(u,l,r,{...n,signal:d.signal}).then(p=>{m||(i.emit(p),i.down([[Z]]))}).catch(p=>{m||i.down([[$,p]])}),()=>{m=!0,d.abort()}},{name:"suggestStrategy::call"})})}var $t=new Set(["state","derived","producer","operator","effect"]);function Qr(t){let e=[];if(t==null||typeof t!="object")return{valid:!1,errors:["Definition must be a non-null object"]};let r=t;if((typeof r.name!="string"||r.name.length===0)&&e.push("Missing or empty 'name' field"),r.nodes==null||typeof r.nodes!="object"||Array.isArray(r.nodes))return e.push("Missing or invalid 'nodes' field (must be an object)"),{valid:!1,errors:e};let n=new Set(Object.keys(r.nodes));for(let[o,a]of Object.entries(r.nodes)){if(a==null||typeof a!="object"){e.push(`Node "${o}": must be an object`);continue}let s=a;if((typeof s.type!="string"||!$t.has(s.type))&&e.push(`Node "${o}": invalid type "${String(s.type)}" (expected: ${[...$t].join(", ")})`),Array.isArray(s.deps))for(let l of s.deps)typeof l=="string"&&!n.has(l)&&e.push(`Node "${o}": dep "${l}" does not reference an existing node`)}if(!Array.isArray(r.edges))r.edges!==void 0&&e.push("'edges' must be an array");else{let o=new Set;for(let a=0;a<r.edges.length;a++){let s=r.edges[a];if(s==null||typeof s!="object"){e.push(`Edge [${a}]: must be an object`);continue}let l=s;(typeof l.from!="string"||!n.has(l.from))&&e.push(`Edge [${a}]: 'from' "${String(l.from)}" does not reference an existing node`),(typeof l.to!="string"||!n.has(l.to))&&e.push(`Edge [${a}]: 'to' "${String(l.to)}" does not reference an existing node`);let u=`${l.from}->${l.to}`;o.has(u)&&e.push(`Edge [${a}]: duplicate edge ${u}`),o.add(u)}}return{valid:e.length===0,errors:e}}export{tr as a,rr as b,we as c,Fe as d,or as e,ar as f,sr as g,ir as h,Be as i,Le as j,We as k,dr as l,Ke as m,Ve as n,qe as o,pe as p,He as q,br as r,Tr as s,xr as t,Ye as u,wr as v,Lr as w,Nr as x,Cr as y,Er as z,Ir as A,Dr as B,Pr as C,_r as D,Se as E,Je as F,Qe as G,Ee as H,Xe as I,Ie as J,Fr as K,Br as L,$r as M,_t as N,Wr as O,Ze as P,et as Q,tt as R,rt as S,nt as T,ot as U,at as V,Ur as W,Vr as X,Ft as Y,qr as Z,zr as _,Bt as $,Jr as aa,Qr as ba,Xr as ca};
@@ -1 +0,0 @@
1
- import{a as w}from"./chunk-533RQFF6.js";import{A as b,B as F,C as H,D as G,E as k,F as B,G as Y,H as h,I as v,J as P,K as W,i as K,j,k as g,m as S,n as C,o as I,p as M,q as _,r as u,s as q,t as z,u as J,v as Q,w as L,x as m,y as x,z as V}from"./chunk-LYCLF26R.js";import{a as e,b as t,c as o,d as p,e as r,f as n,g as s,h as i,i as y,j as a,k as d,l as c,m as N,n as T,o as E,p as O,q as D,r as A,s as R,t as f,u as l}from"./chunk-CK2E7BTU.js";import{b as U}from"./chunk-QYADASLV.js";var X={};U(X,{COMPLETE:()=>y,COMPLETE_MSG:()=>E,COMPLETE_ONLY_BATCH:()=>f,DATA:()=>t,DEFAULT_ACTOR:()=>K,DIRTY:()=>o,DIRTY_MSG:()=>d,DIRTY_ONLY_BATCH:()=>D,ERROR:()=>a,GraphReFlyConfig:()=>_,GuardDenied:()=>q,INVALIDATE:()=>r,INVALIDATE_MSG:()=>N,INVALIDATE_ONLY_BATCH:()=>R,NodeImpl:()=>H,PAUSE:()=>n,RESOLVED:()=>p,RESOLVED_MSG:()=>c,RESOLVED_ONLY_BATCH:()=>A,RESUME:()=>s,START:()=>e,START_MSG:()=>T,TEARDOWN:()=>i,TEARDOWN_MSG:()=>O,TEARDOWN_ONLY_BATCH:()=>l,accessHintForGuard:()=>Q,advanceVersion:()=>x,autoTrackNode:()=>P,batch:()=>S,configure:()=>F,createVersioning:()=>m,defaultConfig:()=>b,defaultHash:()=>L,derived:()=>Y,downWithBatch:()=>C,dynamicNode:()=>v,effect:()=>h,isBatching:()=>g,isV1:()=>V,monotonicNs:()=>I,node:()=>G,normalizeActor:()=>j,pipe:()=>W,policy:()=>z,policyFromRules:()=>J,producer:()=>B,registerBuiltins:()=>u,resolveDescribeFields:()=>w,state:()=>k,wallClockNs:()=>M});export{X as a};
@@ -1,43 +0,0 @@
1
- import{a as $e}from"./chunk-2C4NESZE.js";import{d as _e}from"./chunk-K2WYIVHM.js";import{u as X}from"./chunk-KTWBUJO5.js";import{a as Me}from"./chunk-QKBCTKH7.js";import{c as Ce}from"./chunk-GFOT6UBB.js";import{g as we,i as ue}from"./chunk-U3COB5WU.js";import{b as ie,d as U}from"./chunk-O32GJOUJ.js";import{f as ke,j as Se}from"./chunk-B4L5X2QO.js";import{b as A,s as q,t as Ae,x as _}from"./chunk-JJTF75VS.js";import{b as Oe}from"./chunk-TZQPPQEQ.js";import{m as z}from"./chunk-MQZWA3DF.js";import{D as Ne,E as S,F as Q,G as N,H as $,o as V}from"./chunk-LYCLF26R.js";import{b as P,i as F,j as W}from"./chunk-CK2E7BTU.js";import{b as Xe}from"./chunk-QYADASLV.js";var kt={};Xe(kt,{DEFAULT_DECAY_RATE:()=>D,DEFAULT_EXECUTE_PROMPT:()=>ce,DEFAULT_QUEUE_CONFIGS:()=>Z,DEFAULT_SEVERITY_WEIGHTS:()=>L,DEFAULT_TRIAGE_PROMPT:()=>le,DEFAULT_VERIFY_PROMPT:()=>de,HarnessGraph:()=>te,QUEUE_NAMES:()=>b,actuatorExecutor:()=>nt,affectedTaskFilter:()=>lt,autoSolidify:()=>ot,beforeAfterCompare:()=>ut,codeChangeBridge:()=>ct,createIntakeBridge:()=>st,defaultErrorClassifier:()=>ee,defaultLlmExecutor:()=>je,defaultLlmVerifier:()=>Ge,evalIntakeBridge:()=>at,evalSource:()=>it,evalVerifier:()=>Pe,harnessEvalPair:()=>Tt,harnessLoop:()=>vt,harnessProfile:()=>ht,harnessTrace:()=>bt,notifyEffect:()=>dt,priorityScore:()=>Et,refineExecutor:()=>pe,resolvePromptFn:()=>B,strategyKey:()=>j,strategyModel:()=>fe});function Ze(e,t){return{outcome:"success",detail:`actuator applied ${t.intervention} for ${rt(t.summary)}`,artifact:e}}function et(e,t){let n=e instanceof Error?e.message:String(e);return{outcome:"failure",detail:`actuator threw on ${t.intervention}: ${n}`}}function tt(e){return`actuator skipped ${e.intervention} (shouldApply returned false)`}function rt(e,t=80){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function nt(e){let t=e.name??"actuator-executor",n=e.toOutput??Ze,r=e.onError??et,o=e.skipDetail??tt;return d=>{let s=A(d,i=>i!=null,{name:`${t}/gate-in`}),a=_(s,i=>e.shouldApply&&!e.shouldApply(i)?Q(c=>(c.down([[P,{outcome:"failure",detail:o(i)}],[F]]),()=>{}),{name:`${t}/skip`}):Q(c=>{let m=new AbortController,f=!1,l=null,g=R=>{f||(f=!0,c.down([[P,R],[F]]),l?.(),l=null)},y;try{let R=e.apply(i,{signal:m.signal});y=z(R,{signal:m.signal})}catch(R){return g(r(R,i)),()=>{m.abort()}}return l=y.subscribe(R=>{for(let E of R){if(f)return;if(E[0]===P){g(n(E[1],i));return}if(E[0]===W){g(r(E[1],i));return}if(E[0]===F){g(r(new Error("actuator inner completed without emitting DATA"),i));return}}}),f&&l&&(l(),l=null),()=>{m.abort(),l?.(),l=null}},{name:`${t}/inner`}),{name:t});return A(a,i=>i!=null,{name:`${t}/gate-out`})}}function ot(e){let t=e.name??"auto-solidify",n=e.extract??(o=>o.execution.artifact??null),r=e.predicate??(()=>!0);return Q(o=>{let d=null,s=!1,a=()=>{s||(s=!0,d?.(),d=null)},i=c=>{s||(o.down([[W,c]]),a())};return d=e.verifyResults.subscribe(c=>{if(!s)for(let m of c){if(s)return;if(m[0]!==P){if(m[0]===F){o.down([[F]]),a();return}continue}let f=m[1];if(f==null||!f.verified)continue;let l;try{l=r(f)}catch(y){i(y);return}if(!l)continue;let g;try{g=n(f)}catch(y){i(y);return}if(g!=null){try{e.write(g,f)}catch(y){i(y);return}o.down([[P,g]])}}}),s&&d&&(d(),d=null),()=>{a()}},{name:t})}function st(e,t,n,r){return $([e],([o])=>{if(o==null)return;let d=n(o);for(let s of d)t.publish(s)},{name:r?.name??"intake-bridge"})}function at(e,t,n){let r=n?.defaultSeverity??"medium";return $([e],([o])=>{if(o==null)return;let d=Array.isArray(o)?o:[o];for(let s of d)for(let a of s.tasks)if(!(a.valid&&a.judge_scores?.every(i=>i.pass))){if(!a.valid&&(!a.judge_scores||a.judge_scores.length===0)){t.publish({source:"eval",summary:`Task ${a.task_id} invalid (model: ${s.model})`,evidence:`Run ${s.run_id}: task produced invalid output`,affectsAreas:["graphspec"],affectsEvalTasks:[a.task_id],severity:r});continue}if(a.judge_scores)for(let i of a.judge_scores)i.pass||t.publish({source:"eval",summary:`${a.task_id}: ${i.claim} (model: ${s.model})`,evidence:i.reasoning,affectsAreas:["graphspec"],affectsEvalTasks:[a.task_id],severity:r})}},{name:n?.name??"eval-intake-bridge"})}function it(e,t){return _(e,()=>z(t()))}function ut(e,t){return N([e,t],([n,r])=>{let o=n,d=r,s=new Map(o.tasks.map(l=>[l.task_id,l])),a=new Map(d.tasks.map(l=>[l.task_id,l])),i=new Set([...s.keys(),...a.keys()]),c=[],m=[],f=[];for(let l of i){let g=s.get(l),y=a.get(l),R=g?.valid??!1,E=y?.valid??!1,I=g?.judge_scores?g.judge_scores.filter(w=>w.pass).length:void 0,k=y?.judge_scores?y.judge_scores.filter(w=>w.pass).length:void 0,O=I!==void 0&&k!==void 0?k-I:void 0;c.push({taskId:l,before:R,after:E,scoreDiff:O}),R&&!E&&m.push(l),!R&&E&&f.push(l)}return{newFailures:m,resolved:f,taskDeltas:c,overallImproved:f.length>m.length}},{name:"eval-delta"})}function lt(e,t){let n=t==null?null:Array.isArray(t)?S(t):t,r=[e];return n&&r.push(n),N(r,o=>{let d=o[0],s=n?new Set(o[1]):null,a=new Set;for(let i of d)for(let c of i.affectsEvalTasks??[])(s==null||s.has(c))&&a.add(c);return[...a].sort()},{name:"affected-task-filter"})}function ct(e,t,n,r){let o=r?.defaultSeverity??"high";function d(a){let i=[];for(let c of a.lintErrors??[])i.push({source:"code-change",summary:`Lint: ${c.rule} in ${c.file}:${c.line}`,evidence:c.message,affectsAreas:[c.file],severity:o});for(let c of a.testFailures??[])i.push({source:"test",summary:`Test failure: ${c.testId}`,evidence:c.message,affectsAreas:[c.file],affectsEvalTasks:[c.testId],severity:o});return i}let s=n??d;return $([e],([a])=>{if(a!=null)for(let i of s(a))t.publish(i)},{name:r?.name??"code-change-bridge"})}function dt(e,t,n){return $([e.latest],([r])=>{r!=null&&t(r)},{name:n?.name??"notify-effect"})}var b=["auto-fix","needs-decision","investigation","backlog"],Z={"auto-fix":{gated:!1},"needs-decision":{gated:!0},investigation:{gated:!0},backlog:{gated:!1}},L={critical:100,high:70,medium:40,low:10},D=Math.LN2/(168*3600);function j(e,t){return`${e}\u2192${t}`}var pt=/\b(parse|json|config|validation|syntax)\b/i,ee=e=>pt.test(e.detail)?"self-correctable":"structural",le=`You are a triage classifier for a reactive collaboration harness.
2
-
3
- Given an intake item, classify it and output JSON:
4
- {
5
- "rootCause": "composition" | "missing-fn" | "bad-docs" | "schema-gap" | "regression" | "unknown",
6
- "intervention": "template" | "catalog-fn" | "docs" | "wrapper" | "schema-change" | "investigate",
7
- "route": "auto-fix" | "needs-decision" | "investigation" | "backlog",
8
- "priority": <number 0-100>,
9
- "triageReasoning": "<one sentence>"
10
- }
11
-
12
- Strategy model (past effectiveness):
13
- {{strategy}}
14
-
15
- Intake item:
16
- {{item}}`,ce=`You are an implementation agent.
17
-
18
- Given a triaged issue with root cause and intervention type, produce a fix.
19
-
20
- Issue:
21
- {{item}}
22
-
23
- Output JSON:
24
- {
25
- "outcome": "success" | "failure" | "partial",
26
- "detail": "<description of what was done or what failed>"
27
- }`,de=`You are a QA reviewer.
28
-
29
- Given an execution result, verify whether the fix is correct.
30
-
31
- Execution:
32
- {{execution}}
33
-
34
- Original issue:
35
- {{item}}
36
-
37
- Output JSON:
38
- {
39
- "verified": true/false,
40
- "findings": ["<finding1>", ...],
41
- "errorClass": "self-correctable" | "structural" // only if verified=false
42
- }`;function B(e,t,n){if(typeof e=="function")return e;let r=e??t;return o=>n(r,o)}function ft(e){let{best:t,score:n,status:r}=e,o=Number.isFinite(n)?n.toFixed(3):String(n),d=t??void 0;return r==="converged"?{outcome:"success",detail:`refineLoop converged at score ${o}`,artifact:d}:r==="budget"?{outcome:"partial",detail:`refineLoop hit budget at score ${o}`,artifact:d}:{outcome:"failure",detail:`refineLoop errored (status=${r})`,artifact:d}}function pe(e){let t=e.name??"refine-executor",n=e.toOutput??ft;return r=>{let o=A(r,s=>s!=null,{name:`${t}/gate-in`}),d=_(o,s=>{let a=$e(e.seedFrom(s),e.evaluator,e.strategy,{...e.refine,dataset:e.datasetFor(s),name:`${t}/inner`});return N([a.status,a.best,a.score],([i,c,m])=>{let f=i;return f!=="converged"&&f!=="budget"&&f!=="errored"?null:n({best:c,score:m,status:f})},{name:`${t}/output`})},{name:t});return A(d,s=>s!=null,{name:`${t}/gate-out`})}}function mt(e){if(e.length===0)return Number.NEGATIVE_INFINITY;let t=0;for(let n of e)t+=n.score;return t/e.length}function gt(e){let{passCount:t,total:n,meanScore:r,threshold:o,missingArtifact:d}=e,s=Number.isFinite(r)?r.toFixed(3):String(r),a=!d&&n>0&&r>=o,i=d?["EXECUTE stage did not emit an artifact; cannot verify reactively"]:a?[`${t}/${n} eval tasks passed; mean score ${s} \u2265 ${o}`]:n===0?["No eval tasks were selected for this item \u2014 cannot verify"]:[`${t}/${n} eval tasks passed; mean score ${s} < threshold ${o}`];return a?{verified:!0,findings:i}:{verified:!1,findings:i,errorClass:"structural"}}function yt(e){return e.artifact??null}function Pe(e){let t=e.name??"eval-verifier",n=e.threshold??.5,r=e.toOutput??gt,o=e.extractArtifact??yt;return d=>{let s=A(d,i=>i!=null&&i[0]!=null&&i[1]!=null,{name:`${t}/gate-in`}),a=_(s,i=>{let[c,m]=i,f=o(c,m);if(f==null)return S(r({scores:[],meanScore:Number.NEGATIVE_INFINITY,passCount:0,total:0,threshold:n,missingArtifact:!0}));let l=S([f],{name:`${t}/candidates`}),g=S(e.datasetFor(m),{name:`${t}/dataset`}),y=e.evaluator(l,g);return N([y],([R])=>{let E=R;if(E==null)return null;let I=mt(E),k=E.filter(O=>O.score>=n).length;return r({scores:E,meanScore:I,passCount:k,total:E.length,threshold:n})},{name:`${t}/output`})},{name:t});return A(a,i=>i!=null,{name:`${t}/gate-out`})}}function Tt(e){let t=e.name??"harness-pair",n=pe({name:`${t}-exec`,seedFrom:e.seedFrom,evaluator:e.evaluator,strategy:e.strategy,datasetFor:e.datasetFor,refine:e.refine}),r=Pe({name:`${t}-verify`,evaluator:e.evaluator,datasetFor:e.datasetFor,threshold:e.threshold});return{executor:n,verifier:r}}function fe(){let e=Oe({name:"strategy-entries"}),t=N([e.entries],([s])=>{let a=s;return new Map(a)},{name:"strategy-model",equals:(s,a)=>{let i=s,c=a;if(i.size!==c.size)return!1;for(let[m,f]of i){let l=c.get(m);if(!l||f.attempts!==l.attempts||f.successes!==l.successes)return!1}return!0}});function n(s,a,i){let c=j(s,a),m=e.get(c),f=(m?.attempts??0)+1,l=(m?.successes??0)+(i?1:0);e.set(c,{rootCause:s,intervention:a,attempts:f,successes:l,successRate:l/f})}function r(s,a){return e.get(j(s,a))}let o=t.subscribe(()=>{});function d(){o()}return{node:t,record:n,lookup:r,dispose:d}}function Et(e,t,n,r,o){let d={...L,...o?.severityWeights},s=o?.decayRate??D,a=o?.effectivenessThreshold??.7,i=o?.effectivenessBoost??15,c=[e,t,n];return r&&c.push(r),N(c,m=>{let f=m[0],l=m[1],g=m[2],y=r?m[3]:0,R=d[f.severity??"medium"],E=(V()-g)/1e9,I=Me(R,E,s,0),k=j(f.rootCause,f.intervention),O=l.get(k);return O&&O.successRate>=a&&(I+=i),I+=y*20,I},{name:"priority-score"})}var Fe="intake",Rt="triage-output",Ve="retry",Le="verify-results",De="__unrouted";function je(e,t){let n=B(t,ce,(r,o)=>r.replace("{{item}}",JSON.stringify(o)));return r=>X(e,[r],n,{name:"execute",format:"json"})}function Ge(e,t){let n=B(t,de,(r,o)=>{let[d,s]=o;return r.replace("{{execution}}",JSON.stringify(d)).replace("{{item}}",JSON.stringify(s))});return r=>X(e,[r],o=>o==null?"":n(o),{name:"verify",format:"json"})}var te=class extends Se{queues;jobs;gates;queueTopics;strategy;totalRetries;totalReingestions;priorityScores;constructor(t,n,r,o,d,s,a,i,c){super(t),this.queues=n,this.queueTopics=r,this.jobs=o,this.gates=d,this.strategy=s,this.totalRetries=a,this.totalReingestions=i,this.priorityScores=c}get intake(){return this.queues.topic(Fe)}get verifyResults(){return this.queues.topic(Le)}get retry(){return this.queues.topic(Ve)}get unrouted(){return this.queues.topic(De)}stageNodes(){let t=this.queues,n=s=>t.has(s)?`queues::${s}::latest`:null,r=s=>s==null?[]:[s],o=b.flatMap(s=>r(n(s))),d=[];for(let[s]of this.gates)d.push(`gates::${s}/gate`);return[{label:"INTAKE",paths:r(n("intake"))},{label:"TRIAGE",paths:["triage"]},{label:"QUEUE",paths:o},{label:"GATE",paths:d},{label:"EXECUTE",paths:["execute"]},{label:"VERIFY",paths:r(n("verify-results"))},{label:"REFLECT",paths:["reflect"]},{label:"STRATEGY",paths:["strategy"]}]}};function vt(e,t){let n=t.adapter,r=t.maxRetries??2,o=t.retainedLimit??1e3,d=t.errorClassifier??ee,s=new Map;for(let u of b)s.set(u,{...Z[u],...t.queues?.[u]});let a=we(`${e}/queues`,{defaultTopicOptions:{retainedLimit:o}}),i=a.topic(Fe),c=a.topic(Rt),m=a.topic(Ve),f=a.topic(Le),l=new Map;for(let u of b)l.set(u,a.topic(u));let g=a.topic(De),y=fe(),R=q(i.latest,y.node),E=B(t.triagePrompt,le,(u,p)=>{let[T,x]=p;return u.replace("{{strategy}}",JSON.stringify(Array.from(x.entries()))).replace("{{item}}",JSON.stringify(T))}),I=X(n,[R],u=>{let p=u;return!p||!p[0]?"":E(p)},{name:"triage",format:"json"}),k=q(I,R),w=$([k],([u])=>{if(u==null)return;let[p,T]=u;if(!p?.route)return;let x=T?.[0],C={...p,...x};c.publish(C)}).subscribe(()=>{}),Qe=new Set(b);for(let u of b)ue(`bridge/${u}`,c,l.get(u),{map:p=>p.route===u?p:void 0});ue("bridge/__unrouted",c,g,{map:u=>Qe.has(u.route)?void 0:u});let G=new Map,re=new Map;for(let u of b)G.set(u,_e(`jobs/${u}`));let me=[];for(let u of b){let p=l.get(u),T=G.get(u),x=new WeakSet,C=$([p.events],([ae])=>{let H=ae??[];for(let h of H){if(x.has(h))continue;x.add(h);let M=T.enqueue(h);re.set(U(h),{route:u,id:M})}},{name:`jobs/${u}-mirror`});me.push(C.subscribe(()=>{}))}function ge(u){let p=U(u),T=re.get(p);T&&(G.get(T.route)?.removeById(T.id),re.delete(p))}let ye=Ce("gates"),Y=new Map;for(let u of b){let p=s.get(u);if(!p.gated)continue;let T=l.get(u),x=ye.gate(`${u}/gate`,T.latest,{maxPending:p.maxPending,startOpen:p.startOpen});Y.set(u,x)}let J=[];for(let u of b)s.get(u).gated&&Y.has(u)?J.push(Y.get(u).node):J.push(l.get(u).latest);J.push(m.latest);let ne=Ae(...J),Te=(t.executor??je(n,t.executePrompt))(ne),oe=q(Te,ne),Ee=(t.verifier??Ge(n,t.verifyPrompt))(oe),Re=q(Ee,oe),ve=t.maxReingestions??1,Ue=Math.min(t.maxTotalRetries??r*10,100),qe=Math.min(t.maxTotalReingestions??ve*10,100),xe=S(0),he=S(0);function Be(u,p,T){let x={item:T,outcome:p?.outcome??"failure",detail:p?.detail??"unknown",artifact:p?.artifact};return{item:T,execution:x,verified:u.verified,findings:u.findings??[],errorClass:u.errorClass}}function Ye(u,p){y.record(p.rootCause,p.intervention,!0),f.publish(u),ge(p)}function Je(u,p){let T=U(p),x=p.$retries??0,C={...p,$retries:x+1,summary:`[RETRY ${x+1}/${r}] ${T} \u2014 Previous attempt failed: ${u.findings.join("; ")}`,relatedTo:[T]};m.publish(C)}function Ie(u,p){y.record(p.rootCause,p.intervention,!1),f.publish(u),ge(p);let T=U(p),x=p.$reingestions??0;x<ve&&ie(he,qe)&&i.publish({source:p.source,summary:`Verification failed for: ${T}`,evidence:u.findings.join(`
43
- `),affectsAreas:p.affectsAreas,affectsEvalTasks:p.affectsEvalTasks,severity:p.severity??"high",relatedTo:[T],$reingestions:x+1})}let se=Ne([Re],(u,p)=>{let T=u[0];if(T==null||T.length===0)return;let x=T[T.length-1];if(x==null)return;let[C,ae]=x,[H,h]=ae??[null,null];if(!C||!h)return;if(H==null){Ie({item:h,execution:{item:h,outcome:"failure",detail:"executor returned null"},verified:!1,findings:["executor returned null"],errorClass:"structural"},h);return}let M=Be(C,H,h);if(M.verified){Ye(M,h);return}let We=M.errorClass??d({item:h,outcome:H.outcome,detail:M.findings.join("; ")}),ze=h.$retries??0;We==="self-correctable"&&ze<r&&ie(xe,Ue)?Je(M,h):Ie(M,h)}),Ke=se.subscribe(()=>{}),be=N([se],()=>null,{name:"reflect",equals:()=>!1}),K;t.priority&&(K=xt(l,y,t));let v=new te(e,a,l,G,Y,y,xe,he,K);v.addDisposer(w),v.addDisposer(Ke),v.addDisposer(y.dispose);for(let u of me)v.addDisposer(u);if(v.add(I,{name:"triage"}),v.add(ne,{name:"execute-input"}),v.add(Te,{name:"execute"}),v.add(oe,{name:"execute-context"}),v.add(Ee,{name:"verify"}),v.add(Re,{name:"verify-context"}),v.add(se,{name:"verify-dispatch"}),v.add(be,{name:"reflect"}),v.add(y.node,{name:"strategy"}),v.addDisposer(be.subscribe(()=>{})),K)for(let[u,p]of K)v.add(p,{name:`priority/${u}`}),v.addDisposer(p.subscribe(()=>{}));v.mount("queues",a),v.mount("gates",ye);for(let[u,p]of G)v.mount(`jobs/${u}`,p);return v}function xt(e,t,n){if(!n.lastInteractionNs)throw new Error("harnessLoop: `opts.priority` requires `opts.lastInteractionNs` \u2014 pass a Node<number> (e.g. `fromTimer(60_000)` or a `state(monotonicNs())` you bump on human interaction). Priority scores only decay when this node settles; an internal default would freeze age at construction time.");let r=n.lastInteractionNs,o=n.priority??{},d={...L,...o.severityWeights},s=o.decayRate??D,a=o.effectivenessThreshold??.7,i=o.effectivenessBoost??15,c=new Map;for(let[m,f]of e){let l=N([f.latest,t.node,r],g=>{let y=g[0];if(y==null)return 0;let R=d[y.severity??"medium"]??40,E=(V()-g[2])/1e9,I=R*Math.exp(-s*Math.max(0,E)),k=`${y.rootCause}\u2192${y.intervention}`,w=g[1]?.get(k);return w&&w.successRate>=a&&(I+=i),I},{name:`priority/${m}`});c.set(m,l)}return c}function ht(e,t){let n=ke(e,t),r={};for(let o of b){let d=e.queues.has(o)?e.queues.topic(o):null;r[o]=d?.retained().length??0}return{...n,queueDepths:r,strategyEntries:e.strategy.node.cache?.size??0,totalRetries:e.totalRetries.cache??0,totalReingestions:e.totalReingestions.cache??0}}function It(e){let t={};for(let{label:n,paths:r}of e.stageNodes())for(let o of r)t[o]=n;return t}function bt(e,t){let n=t?.logger===null?null:t?.logger??console.log,r=t?.detail??"summary",o=V(),d=[],s=[],a=It(e);function i(){return(V()-o)/1e9}function c(m,f,l){let g={elapsed:i(),stage:m,type:f};r!=="summary"&&(g.summary=Nt(l)),r==="full"&&(g.data=l),s.push(g)}for(let[m,f]of Object.entries(a))try{let l=e.observe(m,{format:"stage-log",stageLabels:a,logger:n?g=>n(g):()=>{},includeTypes:["data","error","complete"]});l.onEvent(g=>{g.type==="data"?c(f,"data",g.data):g.type==="error"?c(f,"error",g.data):g.type==="complete"&&c(f,"complete",void 0)}),d.push(l)}catch(l){let g=l instanceof Error?l.message:String(l);c(f,"error",`observe-unavailable: ${m} \u2014 ${g}`),n&&n(`[${i().toFixed(3)}s] ${f.padEnd(9)} \u2717 observe-unavailable: ${g}`)}return{get events(){return s},dispose(){for(let m of d)m.dispose();d.length=0}}}function Nt(e){if(e==null)return"null";if(typeof e=="string")return He(e,80);if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{let t=JSON.stringify(e);return He(t,120)}catch{return String(e)}}function He(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}export{nt as a,ot as b,st as c,at as d,it as e,ut as f,lt as g,ct as h,dt as i,b as j,Z as k,L as l,D as m,j as n,ee as o,le as p,ce as q,de as r,B as s,pe as t,Pe as u,Tt as v,fe as w,Et as x,je as y,Ge as z,te as A,vt as B,ht as C,bt as D,kt as E};
@@ -1 +0,0 @@
1
- import{j as C}from"./chunk-B4L5X2QO.js";import{E as w,G as E,o as x}from"./chunk-LYCLF26R.js";import{b as z}from"./chunk-QYADASLV.js";var F={};z(F,{collection:()=>G,decay:()=>K,knowledgeGraph:()=>O,lightCollection:()=>S,vectorIndex:()=>L});function K(s,a,l,r=0){if(!Number.isFinite(s))return r;if(!Number.isFinite(a)||a<=0||!Number.isFinite(l)||l<=0)return Math.max(r,s);let y=s*Math.exp(-l*a);return Math.max(r,y)}function V(s){if(s!==void 0&&s<1)throw new RangeError("maxSize must be >= 1")}function M(s){return new Map(s)}function T(s){return s.cache??new Map}function N(s){return s.cache??[]}function I(s,a){let l=Math.max(s.length,a.length),r=0,y=0,p=0;for(let o=0;o<l;o+=1){let n=s[o]??0,e=a[o]??0;r+=n*e,y+=n*n,p+=e*e}return y===0||p===0?0:r/Math.sqrt(y*p)}function S(s={}){let a=s.maxSize,l=s.policy??"fifo";V(a);let r=w(new Map,{name:s.name,describeKind:"state"});function y(o){if(a!==void 0)for(;o.size>a;){let n;for(let e of o.values()){if(!n){n=e;continue}let i=l==="lru"?e.lastAccessNs:e.createdAtNs,t=l==="lru"?n.lastAccessNs:n.createdAtNs;i<t&&(n=e)}if(!n)break;o.delete(n.id)}}function p(o){r.emit(o)}return{entries:r,upsert(o,n){let e=x(),i=T(r),t=i.get(o),m=M(i);m.set(o,{id:o,value:n,createdAtNs:t?.createdAtNs??e,lastAccessNs:e}),y(m),p(m)},remove(o){let n=M(T(r));n.delete(o)&&p(n)},clear(){T(r).size!==0&&p(new Map)},get(o){let n=T(r),e=n.get(o);if(e){if(l==="lru"){let i=x(),t=M(n);t.set(o,{...e,lastAccessNs:i}),p(t)}return e.value}},has(o){return T(r).has(o)}}}function G(s,a={}){let l=a.maxSize,r=a.policy??"lru",y=a.decayRate??0,p=a.minScore??0,o=a.score??(()=>1);V(l);let n=new C(s),e=w(new Map,{name:"items",describeKind:"state"}),i=E([e],([c])=>{let d=c??new Map,u=x(),h=[...d.values()].map(f=>{let b=(u-f.lastAccessNs)/1e9;return{...f,score:K(f.baseScore,b,y,p)}});return h.sort((f,b)=>b.score-f.score||b.lastAccessNs-f.lastAccessNs),h},{name:"ranked",describeKind:"derived"}),t=E([e],([c])=>(c??new Map).size,{name:"size",describeKind:"derived",initial:0});i.subscribe(()=>{}),t.subscribe(()=>{}),n.add(e,{name:"items"}),n.add(i,{name:"ranked"}),n.add(t,{name:"size"});function m(c,d){let u=(d-c.lastAccessNs)/1e9;return K(c.baseScore,u,y,p)}function v(c){if(l!==void 0)for(;c.size>l;){let d=x(),u,h=Number.POSITIVE_INFINITY;for(let f of c.values()){let b=m(f,d);if(b<h){u=f,h=b;continue}if(b===h&&u){let A=r==="lru"?f.lastAccessNs:f.createdAtNs,R=r==="lru"?u.lastAccessNs:u.createdAtNs;A<R&&(u=f)}}if(!u)break;c.delete(u.id)}}function g(c){e.emit(c)}return Object.assign(n,{upsert(c,d,u){let h=x(),f=T(e),b=f.get(c),A=u?.score??o(d),R=M(f);R.set(c,{id:c,value:d,baseScore:A,createdAtNs:b?.createdAtNs??h,lastAccessNs:h}),v(R),g(R)},remove(c){let d=M(T(e));d.delete(c)&&g(d)},clear(){T(e).size!==0&&g(new Map)},getItem(c){let d=T(e),u=d.get(c);if(u){if(r==="lru"){let h=M(d);h.set(c,{...u,lastAccessNs:x()}),g(h)}return u}}})}function L(s={}){let a=s.backend??"flat",l=s.dimension,r;if(a==="hnsw"&&(r=s.hnswFactory?.(),!r))throw new Error('vectorIndex backend "hnsw" requires an optional dependency adapter; install your HNSW package and provide `hnswFactory`.');let y=w(new Map,{describeKind:"state",name:"vector-index"});function p(n){if(l!==void 0&&n.length!==l)throw new RangeError(`vector dimension mismatch: expected ${l}, got ${n.length}`)}function o(n){y.emit(n)}return{backend:a,entries:y,upsert(n,e,i){p(e);let t=M(T(y));t.set(n,{id:n,vector:[...e],meta:i}),a==="hnsw"&&r.upsert(n,e,i),o(t)},remove(n){let e=M(T(y));e.delete(n)&&(a==="hnsw"&&r.remove(n),o(e))},clear(){T(y).size!==0&&(a==="hnsw"&&r.clear(),o(new Map))},search(n,e=5){return p(n),e<=0?[]:a==="hnsw"?r.search(n,e):[...T(y).values()].map(t=>({id:t.id,score:I(n,t.vector),meta:t.meta})).sort((t,m)=>m.score-t.score).slice(0,e)}}}function O(s){let a=new C(s),l=w(new Map,{name:"entities",describeKind:"state"}),r=w([],{name:"edges",describeKind:"state"}),y=E([r],([e])=>{let i=e??[],t=new Map;for(let m of i){let v=t.get(m.from)??[];t.set(m.from,Object.freeze([...v,m]))}return t},{name:"adjacency",describeKind:"derived",initial:new Map});y.subscribe(()=>{}),a.add(l,{name:"entities"}),a.add(r,{name:"edges"}),a.add(y,{name:"adjacency"});function p(e){l.emit(e)}function o(e){r.emit(e)}return Object.assign(a,{upsertEntity(e,i){let t=M(T(l));t.set(e,i),p(t)},removeEntity(e){let i=M(T(l)),t=i.delete(e),m=N(r),v=m.filter(g=>g.from!==e&&g.to!==e);!t&&v.length===m.length||(p(i),o(v))},link(e,i,t,m=1){let v=`${e}\0${i}\0${t}`,g=N(r),k=new Set(g.map(d=>`${d.from}\0${d.to}\0${d.relation}`)),c=[...g];if(k.has(v))for(let d=0;d<c.length;d+=1){let u=c[d];if(u.from===e&&u.to===i&&u.relation===t){c[d]={...u,weight:m};break}}else c.push({from:e,to:i,relation:t,weight:m});o(c)},unlink(e,i,t){let m=N(r),v=m.filter(g=>t===void 0?!(g.from===e&&g.to===i):!(g.from===e&&g.to===i&&g.relation===t));v.length!==m.length&&o(v)},related(e,i){return N(r).filter(t=>(t.from===e||t.to===e)&&(i===void 0||t.relation===i))}})}export{K as a,S as b,G as c,L as d,O as e,F as f};
@@ -1,80 +0,0 @@
1
- import{b as z}from"./chunk-XIJKEXWR.js";import{g as Y,j as J}from"./chunk-B4L5X2QO.js";import{E as L,F as T,G as D,H as P}from"./chunk-LYCLF26R.js";import{b as Z}from"./chunk-QYADASLV.js";var pe={};Z(pe,{compileSpec:()=>se,decompileGraph:()=>ae,extractFnFactory:()=>V,extractSourceFactory:()=>B,generateCatalogPrompt:()=>K,isRichFnEntry:()=>M,isRichSourceEntry:()=>W,llmCompose:()=>ce,llmRefine:()=>X,specDiff:()=>ie,validateSpec:()=>A,validateSpecAgainstCatalog:()=>q});function M(i){return typeof i=="object"&&i!==null&&"factory"in i}function W(i){return typeof i=="object"&&i!==null&&"factory"in i}function V(i){return M(i)?i.factory:i}function B(i){return W(i)?i.factory:i}function K(i){let n=[];if(i.fns){let o=new Map;for(let[r,d]of Object.entries(i.fns)){let p=M(d)?d.tags?.[0]??"Other":"Other";o.has(p)||o.set(p,[]),o.get(p).push(ee(r,d))}for(let[r,d]of o)n.push(`${r}:
2
- ${d.join(`
3
- `)}`)}if(i.sources){let o=[];for(let[r,d]of Object.entries(i.sources))o.push(te(r,d));o.length>0&&n.push(`Sources:
4
- ${o.join(`
5
- `)}`)}return n.join(`
6
-
7
- `)}function ee(i,n){if(!M(n))return`- ${i}`;let o=`- ${i}: ${n.description}`;if(n.configSchema){let r=Object.entries(n.configSchema).map(([d,p])=>{let l=`${d}: ${p.type}`;return p.enum&&(l+=` (${p.enum.join("|")})`),p.required===!1&&(l+="?"),l});o+=`. Config: { ${r.join(", ")} }`}return o}function te(i,n){if(!W(n))return`- ${i}`;let o=`- ${i}: ${n.description}`;if(n.configSchema){let r=Object.entries(n.configSchema).map(([d,p])=>{let l=`${d}: ${p.type}`;return p.required===!1&&(l+="?"),l});o+=`. Config: { ${r.join(", ")} }`}return o}function q(i,n){let o=[],r=new Set(Object.keys(n.fns??{})),d=new Set(Object.keys(n.sources??{}));for(let[p,l]of Object.entries(i.nodes)){if(l.type==="template")continue;let s=l;if(s.fn&&r.size>0&&!r.has(s.fn))if(d.has(s.fn))o.push(`Node "${p}": fn "${s.fn}" is a source, not a function. Use it as a producer source instead, or use a function from: ${[...r].join(", ")}`);else{let c=I(s.fn,r);o.push(`Node "${p}": fn "${s.fn}" not found in catalog`+(c?`. Did you mean "${c}"?`:""))}if(s.source&&d.size>0&&!d.has(s.source))if(r.has(s.source))o.push(`Node "${p}": source "${s.source}" is a function, not a source. Use it as fn instead, or use a source from: ${[...d].join(", ")}`);else{let c=I(s.source,d);o.push(`Node "${p}": source "${s.source}" not found in catalog`+(c?`. Did you mean "${c}"?`:""))}if(s.fn&&s.config&&n.fns?.[s.fn]){let c=n.fns[s.fn];if(M(c)&&c.configSchema){for(let[t,$]of Object.entries(c.configSchema))if($.required!==!1&&!(t in s.config)&&o.push(`Node "${p}": config missing required field "${t}"`),t in s.config&&$.enum){let O=s.config[t];$.enum.includes(O)||o.push(`Node "${p}": config.${t} = ${JSON.stringify(O)}, expected one of: ${$.enum.join(", ")}`)}}}}if(i.templates){for(let[p,l]of Object.entries(i.templates))for(let[s,c]of Object.entries(l.nodes))if(c.fn&&r.size>0&&!r.has(c.fn)){let t=I(c.fn,r);o.push(`Template "${p}" node "${s}": fn "${c.fn}" not found in catalog`+(t?`. Did you mean "${t}"?`:""))}}return{valid:o.length===0,errors:o,warnings:[]}}function I(i,n){let o=null,r=1/0,d=i.toLowerCase();for(let p of n){let l=ne(d,p.toLowerCase());l<r&&l<=Math.max(3,Math.floor(i.length/2))&&(r=l,o=p)}return o}function ne(i,n){let o=i.length,r=n.length,d=Array.from({length:o+1},(p,l)=>Array.from({length:r+1},(s,c)=>l===0?c:c===0?l:0));for(let p=1;p<=o;p++)for(let l=1;l<=r;l++)d[p][l]=i[p-1]===n[l-1]?d[p-1][l-1]:1+Math.min(d[p-1][l],d[p][l-1],d[p-1][l-1]);return d[o][r]}var U=new Set(["state","producer","derived","effect","operator","template"]),oe=new Set(["state","producer","derived","effect","operator"]);function A(i){let n=[],o=[];if(i==null||typeof i!="object")return{valid:!1,errors:["GraphSpec must be a non-null object"],warnings:o};let r=i;if((typeof r.name!="string"||r.name.length===0)&&n.push("Missing or empty 'name' field"),r.nodes==null||typeof r.nodes!="object"||Array.isArray(r.nodes))return n.push("Missing or invalid 'nodes' field (must be an object)"),{valid:!1,errors:n,warnings:o};let d=new Set(Object.keys(r.nodes)),p=new Map,l=new Map;if(r.templates!=null&&typeof r.templates=="object"&&!Array.isArray(r.templates)){for(let[s,c]of Object.entries(r.templates))if(c!=null&&typeof c=="object"){let t=c;l.set(s,{params:Array.isArray(t.params)?t.params:[]})}}if(r.templates!=null)if(typeof r.templates!="object"||Array.isArray(r.templates))n.push("'templates' must be an object");else for(let[s,c]of Object.entries(r.templates)){if(c==null||typeof c!="object"){n.push(`Template "${s}": must be an object`);continue}let t=c;if(Array.isArray(t.params)||n.push(`Template "${s}": missing 'params' array`),t.nodes==null||typeof t.nodes!="object"||Array.isArray(t.nodes))n.push(`Template "${s}": missing or invalid 'nodes' object`);else{let $=new Set(Array.isArray(t.params)?t.params:[]),O=new Set(Object.keys(t.nodes));for(let[w,m]of Object.entries(t.nodes)){if(m==null||typeof m!="object"){n.push(`Template "${s}" node "${w}": must be an object`);continue}let g=m;if((typeof g.type!="string"||!oe.has(g.type))&&n.push(`Template "${s}" node "${w}": invalid type`),Array.isArray(g.deps))for(let y of g.deps)!O.has(y)&&!$.has(y)&&n.push(`Template "${s}" node "${w}": dep "${y}" is not an inner node or param`)}typeof t.output!="string"?n.push(`Template "${s}": missing 'output' string`):t.nodes[t.output]||n.push(`Template "${s}": output "${t.output}" is not a declared node`)}}for(let[s,c]of Object.entries(r.nodes)){if(c==null||typeof c!="object"){n.push(`Node "${s}": must be an object`);continue}let t=c;if(typeof t.type!="string"||!U.has(t.type)){n.push(`Node "${s}": invalid type "${String(t.type)}" (expected: ${[...U].join(", ")})`);continue}if(p.set(s,t.type),t.type==="template")if(typeof t.template!="string"||!l.has(t.template))n.push(`Node "${s}": template "${String(t.template)}" not found in templates`);else if(t.bind==null||typeof t.bind!="object"||Array.isArray(t.bind))n.push(`Node "${s}": template ref requires 'bind' object`);else{let $=l.get(t.template),O=t.bind;for(let w of $.params)w in O||n.push(`Node "${s}": template param "${w}" is not bound (template "${t.template}")`);for(let[,w]of Object.entries(O))typeof w=="string"&&!d.has(w)&&n.push(`Node "${s}": bind target "${w}" does not reference an existing node`)}else{if(Array.isArray(t.deps))for(let $ of t.deps)$===s?n.push(`Node "${s}": self-referencing dep`):d.has($)||n.push(`Node "${s}": dep "${$}" does not reference an existing node`);(t.type==="derived"||t.type==="effect"||t.type==="operator")&&!Array.isArray(t.deps)&&n.push(`Node "${s}": ${t.type} node should have a 'deps' array`)}}if(r.feedback!=null)if(!Array.isArray(r.feedback))n.push("'feedback' must be an array");else for(let s=0;s<r.feedback.length;s++){let c=r.feedback[s];if(c==null||typeof c!="object"){n.push(`Feedback [${s}]: must be an object`);continue}let t=c;typeof t.from!="string"||!d.has(t.from)?n.push(`Feedback [${s}]: 'from' "${String(t.from)}" does not reference an existing node`):p.get(t.from)==="effect"&&o.push(`Feedback [${s}]: 'from' "${t.from}" is an effect node \u2014 effects emit no DATA, so the feedback edge will never fire. Did you mean a derived/state node upstream?`),typeof t.from=="string"&&t.from===t.to&&n.push(`Feedback [${s}]: 'from' and 'to' must be different nodes`),typeof t.to!="string"||!d.has(t.to)?n.push(`Feedback [${s}]: 'to' "${String(t.to)}" does not reference an existing node`):typeof t.to=="string"&&p.get(t.to)!=="state"&&n.push(`Feedback [${s}]: 'to' node "${t.to}" must be a state node (got "${p.get(t.to)??"unknown"}")`)}return{valid:n.length===0,errors:n,warnings:o}}function se(i,n){let o=A(i);if(!o.valid)throw new Error(`compileSpec: invalid GraphSpec:
8
- ${o.errors.join(`
9
- `)}`);let r=n?.catalog??{},d=n?.onMissing??"placeholder",p=new J(i.name),l=i.templates??{},s=q(i,r);if(!s.valid)throw new Error(`compileSpec: catalog validation errors:
10
- ${s.errors.join(`
11
- `)}`);let c=[],t=(a,f,e)=>{if(e){c.push({path:a,kind:"source",name:e});return}f&&c.push({path:a,kind:"fn",name:f})},$=a=>{let f=r.fns?.[a];return f?V(f):void 0},O=a=>{let f=r.sources?.[a];return f?B(f):void 0},w=new Map,m=[];for(let[a,f]of Object.entries(i.nodes)){if(f.type==="template")continue;let e=f;if(e.type==="state"){let h=L(e.initial,{name:a,meta:e.meta?{...e.meta}:void 0});p.add(h,{name:a}),w.set(a,h)}else if(e.type==="producer"){let h=e.source?O(e.source):void 0,b=e.fn?$(e.fn):void 0;if(h){let u=h(e.config??{});p.add(u,{name:a}),w.set(a,u)}else if(b){let u=b([],e.config??{});p.add(u,{name:a}),w.set(a,u)}else{t(a,e.fn,e.source);let u=T(()=>{},{name:a,meta:{...e.meta,_specFn:e.fn,_specSource:e.source}});p.add(u,{name:a}),w.set(a,u)}}else m.push([a,e])}let g=!0,y=new Map(m);for(;y.size>0&&g;){g=!1;for(let[a,f]of[...y.entries()]){let e=f.deps??[];if(!e.every(x=>w.has(x)))continue;let h=e.map(x=>w.get(x)),b=f.fn?$(f.fn):void 0,u;b?u=b(h,f.config??{}):f.type==="effect"?(f.fn&&t(a,f.fn,void 0),u=P(h,()=>{})):(f.fn&&t(a,f.fn,void 0),u=D(h,x=>x[0])),p.add(u,{name:a}),w.set(a,u),y.delete(a),g=!0}}if(y.size>0){let a=[...y.keys()].sort().join(", ");throw new Error(`compileSpec: unresolvable deps for nodes: ${a}`)}for(let[a,f]of Object.entries(i.nodes)){if(f.type!=="template")continue;let e=f,h=l[e.template],b=new J(a),u=new Map,x=[];for(let[k,S]of Object.entries(h.nodes)){let v=(S.deps??[]).map(j=>j.startsWith("$")&&e.bind[j]?e.bind[j]:j),G={...S,deps:v};if(S.type==="state"){let j=L(S.initial,{name:k,meta:S.meta?{...S.meta}:void 0});b.add(j,{name:k}),u.set(k,j)}else if(S.type==="producer"){let j=S.source?O(S.source):void 0,E=S.fn?$(S.fn):void 0;if(j){let F=j(S.config??{});b.add(F,{name:k}),u.set(k,F)}else if(E){let F=E([],S.config??{});b.add(F,{name:k}),u.set(k,F)}else{t(`${a}.${k}`,S.fn,S.source);let F=T(()=>{},{name:k,meta:{...S.meta,_specFn:S.fn,_specSource:S.source}});b.add(F,{name:k}),u.set(k,F)}}else x.push([k,G])}let R=!0,N=new Map(x);for(;N.size>0&&R;){R=!1;for(let[k,S]of[...N.entries()]){let v=S.deps??[];if(!v.every(C=>u.has(C)||w.has(C)))continue;let j=v.map(C=>u.get(C)??w.get(C)),E=S.fn?$(S.fn):void 0,F;E?F=E(j,S.config??{}):S.type==="effect"?(S.fn&&t(`${a}.${k}`,S.fn,void 0),F=P(j,()=>{})):(S.fn&&t(`${a}.${k}`,S.fn,void 0),F=D(j,C=>C[0])),b.add(F,{name:k}),u.set(k,F),N.delete(k),R=!0}}if(N.size>0){let k=[...N.keys()].sort().join(", ");throw new Error(`compileSpec: template "${e.template}" has unresolvable deps: ${k}`)}p.mount(a,b);let _=`${a}::${h.output}`;w.set(a,p.resolve(_));try{let k=p.resolve(_);k.meta._templateName?.emit(e.template),k.meta._templateBind?.emit(e.bind)}catch{}}for(let a of i.feedback??[])z(p,a.from,a.to,{maxIterations:a.maxIterations});if(c.length>0){if(d==="error"){let a=c.map(f=>` - ${f.path}: missing ${f.kind} "${f.name}"`);throw new Error(`compileSpec: ${c.length} catalog entr${c.length===1?"y":"ies"} missing \u2014 pass them via opts.catalog or set opts.onMissing to "warn"/"placeholder":
12
- ${a.join(`
13
- `)}`)}if(d==="warn"){let a=n?.onWarn??(f=>console.warn(f));for(let f of c)a(`compileSpec: ${f.path} references missing ${f.kind} "${f.name}" \u2014 substituted placeholder`)}}return p}var re=new Set(["reduction","reduction_type","_specFn","_specSource","_templateName","_templateBind","feedbackFrom","feedbackTo","_internal"]);function ae(i){let n=i.describe({detail:"standard"}),o={},r=[],d=`::${Y}::`,p=/^__feedback_(?!effect_)(.+)$/,l=new Set;for(let m of Object.keys(n.nodes)){if(m.includes(d))continue;let g=p.exec(m);if(g){l.add(g[1]);let y=n.nodes[m]?.meta;y?.feedbackFrom&&y?.feedbackTo&&r.push({from:y.feedbackFrom,to:y.feedbackTo,...y.maxIterations?{maxIterations:y.maxIterations}:{}})}}for(let[m,g]of Object.entries(n.nodes)){if(m.includes(d)||p.test(m)||g.meta?._internal||m.startsWith("__feedback_effect_")||m.startsWith("__bridge_")||m.includes("::"))continue;let y={type:g.type};if(g.deps.length>0&&(y.deps=g.deps.filter(a=>!a.includes("::"))),g.type==="state"&&g.value!==void 0&&(y.initial=g.value),g.meta&&Object.keys(g.meta).length>0){let a={};for(let[f,e]of Object.entries(g.meta))re.has(f)||(a[f]=e);Object.keys(a).length>0&&(y.meta=a)}o[m]=y}let s={},c={},t=new Set;for(let m of n.subgraphs){let g=`${m}::`;for(let[y,a]of Object.entries(n.nodes)){if(!y.startsWith(g)||y.includes(d))continue;let f=a.meta;if(f?._templateName&&f?._templateBind){let e=f._templateName,h=f._templateBind;if(!s[e]){let b={},u=new Set,x=`${m}::`;for(let[v,G]of Object.entries(n.nodes)){if(!v.startsWith(x)||v.includes(d))continue;let j=v.slice(x.length);j.includes("::")||(u.add(j),b[j]={type:G.type,...G.deps.length>0?{deps:G.deps.map(E=>E.startsWith(x)?E.slice(x.length):E)}:{}})}let R=[],N=new Map;for(let v of Object.values(b))for(let G of v.deps??[])if(!u.has(G)&&!N.has(G)){let j=`$${G}`;R.push(j),N.set(G,j)}for(let v of Object.values(b))v.deps&&(v.deps=v.deps.map(G=>N.get(G)??G));let _=new Set;for(let v of Object.values(b))for(let G of v.deps??[])u.has(G)&&_.add(G);let S=[...u].filter(v=>!_.has(v))[0]??[...u].pop();s[e]={params:R,nodes:b,output:S}}delete o[m],c[m]={type:"template",template:e,bind:h},t.add(m);break}}}let $=new Map;for(let m of n.subgraphs){if(t.has(m))continue;let g={},y=`${m}::`;for(let[f,e]of Object.entries(n.nodes)){if(f.includes(d)||!f.startsWith(y))continue;let h=f.slice(y.length);h.includes("::")||(g[h]={type:e.type,...e.deps.length>0?{deps:e.deps.map(b=>b.startsWith(y)?b.slice(y.length):b)}:{}})}let a=JSON.stringify(Object.fromEntries(Object.entries(g).sort(([f],[e])=>f.localeCompare(e)).map(([f,e])=>[f,{type:e.type,deps:e.deps??[]}])));$.has(a)||$.set(a,[]),$.get(a).push({name:m,nodes:g})}for(let[,m]of $){if(m.length<2)continue;let g=`${m[0].name}_template`,y=m[0].nodes,a=new Set(Object.keys(y)),f=[],e=new Map;for(let R of Object.values(y))for(let N of R.deps??[])if(!a.has(N)&&!e.has(N)){let _=`$${N}`;f.push(_),e.set(N,_)}let h=new Set;for(let R of Object.values(y))for(let N of R.deps??[])a.has(N)&&h.add(N);let u=[...a].filter(R=>!h.has(R))[0]??[...a].pop(),x={};for(let[R,N]of Object.entries(y))x[R]={...N,deps:N.deps?.map(_=>e.get(_)??_)};s[g]={params:f,nodes:x,output:u};for(let R of m){delete o[R.name];let N={},_=new Set(Object.keys(R.nodes));for(let k of Object.values(R.nodes))for(let S of k.deps??[])if(!_.has(S)){let v=e.get(S)??`$${S}`;N[v]=S}c[R.name]={type:"template",template:g,bind:N}}}let O={...o,...c},w={name:n.name,nodes:O};return Object.keys(s).length>0&&(w.templates=s),r.length>0&&(w.feedback=r),w}function ie(i,n){let o=[];i.name!==n.name&&o.push({type:"changed",path:"name",detail:`"${i.name}" \u2192 "${n.name}"`});let r=new Set(Object.keys(i.nodes)),d=new Set(Object.keys(n.nodes));for(let e of d)if(!r.has(e)){let h=n.nodes[e];o.push({type:"added",path:`nodes.${e}`,detail:`type: ${h.type}`})}for(let e of r)d.has(e)||o.push({type:"removed",path:`nodes.${e}`});for(let e of r){if(!d.has(e))continue;let h=i.nodes[e],b=n.nodes[e];if(JSON.stringify(h)!==JSON.stringify(b)){let u=[];h.type!==b.type&&u.push(`type: ${h.type} \u2192 ${b.type}`),JSON.stringify(h.deps)!==JSON.stringify(b.deps)&&u.push("deps changed"),h.fn!==b.fn&&u.push(`fn: ${h.fn} \u2192 ${b.fn}`),JSON.stringify(h.config)!==JSON.stringify(b.config)&&u.push("config changed"),o.push({type:"changed",path:`nodes.${e}`,detail:u.join("; ")||"modified"})}}let p=i.templates??{},l=n.templates??{},s=new Set(Object.keys(p)),c=new Set(Object.keys(l));for(let e of c)s.has(e)||o.push({type:"added",path:`templates.${e}`});for(let e of s)c.has(e)||o.push({type:"removed",path:`templates.${e}`});for(let e of s)c.has(e)&&JSON.stringify(p[e])!==JSON.stringify(l[e])&&o.push({type:"changed",path:`templates.${e}`,detail:"template definition changed"});let t=i.feedback??[],$=n.feedback??[],O=new Set(t.map(e=>`${e.from}->${e.to}`)),w=new Set($.map(e=>`${e.from}->${e.to}`));for(let e of $){let h=`${e.from}->${e.to}`;O.has(h)||o.push({type:"added",path:`feedback.${h}`,detail:`maxIterations: ${e.maxIterations??10}`})}for(let e of t){let h=`${e.from}->${e.to}`;w.has(h)||o.push({type:"removed",path:`feedback.${h}`})}for(let e of t){let h=`${e.from}->${e.to}`,b=$.find(u=>u.from===e.from&&u.to===e.to);b&&JSON.stringify(e)!==JSON.stringify(b)&&o.push({type:"changed",path:`feedback.${h}`,detail:`maxIterations: ${e.maxIterations??10} \u2192 ${b.maxIterations??10}`})}let m=o.filter(e=>e.type==="added").length,g=o.filter(e=>e.type==="removed").length,y=o.filter(e=>e.type==="changed").length,a=[];m&&a.push(`${m} added`),g&&a.push(`${g} removed`),y&&a.push(`${y} changed`);let f=a.length>0?a.join(", "):"no changes";return{entries:o,summary:f}}var H=`You are a graph architect for GraphReFly, a reactive graph protocol.
14
-
15
- Given a natural-language description, produce a JSON GraphSpec with this structure:
16
-
17
- {
18
- "name": "<graph_name>",
19
- "nodes": {
20
- "<node_name>": {
21
- "type": "state" | "derived" | "producer" | "effect" | "operator",
22
- "deps": ["<dep_node_name>", ...],
23
- "fn": "<catalog_function_name>",
24
- "source": "<catalog_source_name>",
25
- "config": { ... },
26
- "initial": <value>,
27
- "meta": { "description": "<purpose>" }
28
- },
29
- "<template_instance>": {
30
- "type": "template",
31
- "template": "<template_name>",
32
- "bind": { "$param": "node_name" }
33
- }
34
- },
35
- "templates": {
36
- "<template_name>": {
37
- "params": ["$param1", "$param2"],
38
- "nodes": { ... },
39
- "output": "<output_node>"
40
- }
41
- },
42
- "feedback": [
43
- { "from": "<condition_node>", "to": "<state_node>", "maxIterations": 10 }
44
- ]
45
- }
46
-
47
- Rules:
48
- - "state" nodes hold user/LLM-writable values (knobs). Use "initial" for default values.
49
- - "derived" nodes compute from deps using a named "fn".
50
- - "effect" nodes produce side effects from deps.
51
- - "producer" nodes generate values from a named "source".
52
- - Use "templates" when the same subgraph pattern repeats (e.g., per-source resilience).
53
- - Use "feedback" for bounded cycles where a derived value writes back to a state node.
54
- - meta.description is required for every node.
55
- - Return ONLY valid JSON, no markdown fences or commentary.`;function Q(i){let n=i.match(/^```(?:json)?\s*([\s\S]*?)\s*```[\s\S]*$/);return n?n[1]:i}async function ce(i,n,o){let r=H,d=o?.catalogDescription??(o?.catalog?K(o.catalog):void 0);d&&(r+=`
56
-
57
- Available catalog (use ONLY these names):
58
- ${d}`),o?.systemPromptExtra&&(r+=`
59
-
60
- ${o.systemPromptExtra}`);let p=[{role:"system",content:r},{role:"user",content:i}],c=(await n.invoke(p,{model:o?.model,temperature:o?.temperature??0,maxTokens:o?.maxTokens})).content.trim();c.startsWith("```")&&(c=Q(c));let t;try{t=JSON.parse(c)}catch{throw new Error(`llmCompose: LLM response is not valid JSON: ${c.slice(0,200)}`)}let $=A(t);if(!$.valid)throw new Error(`llmCompose: invalid GraphSpec:
61
- ${$.errors.join(`
62
- `)}`);let O=t;if(o?.catalog){let w=o.maxAutoRefine??0;for(let m=0;m<=w;m++){let g=q(O,o.catalog);if(g.valid)break;if(m===w)throw new Error(`llmCompose: catalog validation failed after ${w} refine attempts:
63
- ${g.errors.join(`
64
- `)}`);O=await X(O,`Fix these catalog errors:
65
- ${g.errors.join(`
66
- `)}
67
-
68
- Use ONLY functions and sources from the catalog.`,n,{...o,catalogDescription:d})}}return O}async function X(i,n,o,r){let d=H;r?.catalogDescription&&(d+=`
69
-
70
- Available catalog:
71
- ${r.catalogDescription}`),r?.systemPromptExtra&&(d+=`
72
-
73
- ${r.systemPromptExtra}`);let p=[{role:"system",content:d},{role:"user",content:`Current GraphSpec:
74
- ${JSON.stringify(i,null,2)}
75
-
76
- Modification request: ${n}
77
-
78
- Return the complete modified GraphSpec as JSON.`}],c=(await o.invoke(p,{model:r?.model,temperature:r?.temperature??0,maxTokens:r?.maxTokens})).content.trim();c.startsWith("```")&&(c=Q(c));let t;try{t=JSON.parse(c)}catch{throw new Error(`llmRefine: LLM response is not valid JSON: ${c.slice(0,200)}`)}let $=A(t);if(!$.valid)throw new Error(`llmRefine: invalid GraphSpec:
79
- ${$.errors.join(`
80
- `)}`);return t}export{M as a,W as b,V as c,B as d,K as e,q as f,A as g,se as h,ae as i,ie as j,ce as k,X as l,pe as m};
@@ -1,139 +0,0 @@
1
- import { a as Node } from './node-fSc-hCv8.js';
2
- import { G as Graph } from './graph-YQXDndFy.js';
3
-
4
- /**
5
- * Memory patterns (roadmap §4.3).
6
- *
7
- * Domain-layer helpers composed from GraphRefly primitives. `vectorIndex` uses
8
- * an exact-search backend by default; an HNSW adapter can be injected as an
9
- * optional dependency.
10
- */
11
-
12
- type CollectionPolicy = "fifo" | "lru";
13
- type VectorBackend = "flat" | "hnsw";
14
- type LightCollectionEntry<T> = {
15
- readonly id: string;
16
- readonly value: T;
17
- readonly createdAtNs: number;
18
- readonly lastAccessNs: number;
19
- };
20
- type LightCollectionOptions = {
21
- name?: string;
22
- maxSize?: number;
23
- policy?: CollectionPolicy;
24
- };
25
- type LightCollectionBundle<T> = {
26
- readonly entries: Node<ReadonlyMap<string, LightCollectionEntry<T>>>;
27
- upsert: (id: string, value: T) => void;
28
- remove: (id: string) => void;
29
- clear: () => void;
30
- get: (id: string) => T | undefined;
31
- has: (id: string) => boolean;
32
- };
33
- type CollectionEntry<T> = LightCollectionEntry<T> & {
34
- readonly baseScore: number;
35
- };
36
- type RankedCollectionEntry<T> = CollectionEntry<T> & {
37
- readonly score: number;
38
- };
39
- type CollectionOptions<T> = {
40
- maxSize?: number;
41
- policy?: CollectionPolicy;
42
- /**
43
- * Produces a base score at insert/update time.
44
- */
45
- score?: (value: T) => number;
46
- /**
47
- * Exponential decay rate per second. 0 disables decay.
48
- */
49
- decayRate?: number;
50
- /**
51
- * Minimum score floor after decay.
52
- */
53
- minScore?: number;
54
- };
55
- type CollectionGraph<T> = Graph & {
56
- upsert: (id: string, value: T, opts?: {
57
- score?: number;
58
- }) => void;
59
- remove: (id: string) => void;
60
- clear: () => void;
61
- getItem: (id: string) => CollectionEntry<T> | undefined;
62
- };
63
- type VectorRecord<TMeta> = {
64
- readonly id: string;
65
- readonly vector: readonly number[];
66
- readonly meta?: TMeta;
67
- };
68
- type VectorSearchResult<TMeta> = {
69
- readonly id: string;
70
- readonly score: number;
71
- readonly meta?: TMeta;
72
- };
73
- type HnswAdapter<TMeta> = {
74
- upsert: (id: string, vector: readonly number[], meta?: TMeta) => void;
75
- remove: (id: string) => void;
76
- clear: () => void;
77
- search: (query: readonly number[], k: number) => ReadonlyArray<VectorSearchResult<TMeta>>;
78
- };
79
- type VectorIndexOptions<TMeta> = {
80
- backend?: VectorBackend;
81
- dimension?: number;
82
- /**
83
- * Optional dependency seam for HNSW.
84
- */
85
- hnswFactory?: () => HnswAdapter<TMeta>;
86
- };
87
- type VectorIndexBundle<TMeta> = {
88
- readonly backend: VectorBackend;
89
- readonly entries: Node<ReadonlyMap<string, VectorRecord<TMeta>>>;
90
- upsert: (id: string, vector: readonly number[], meta?: TMeta) => void;
91
- remove: (id: string) => void;
92
- clear: () => void;
93
- search: (query: readonly number[], k?: number) => ReadonlyArray<VectorSearchResult<TMeta>>;
94
- };
95
- type KnowledgeEdge<TRelation extends string = string> = {
96
- readonly from: string;
97
- readonly to: string;
98
- readonly relation: TRelation;
99
- readonly weight: number;
100
- };
101
- type KnowledgeGraphGraph<TEntity, TRelation extends string = string> = Graph & {
102
- upsertEntity: (id: string, value: TEntity) => void;
103
- removeEntity: (id: string) => void;
104
- link: (from: string, to: string, relation: TRelation, weight?: number) => void;
105
- unlink: (from: string, to: string, relation?: TRelation) => void;
106
- related: (id: string, relation?: TRelation) => ReadonlyArray<KnowledgeEdge<TRelation>>;
107
- };
108
- declare function decay(baseScore: number, ageSeconds: number, ratePerSecond: number, minScore?: number): number;
109
- declare function lightCollection<T>(opts?: LightCollectionOptions): LightCollectionBundle<T>;
110
- declare function collection<T>(name: string, opts?: CollectionOptions<T>): CollectionGraph<T>;
111
- declare function vectorIndex<TMeta>(opts?: VectorIndexOptions<TMeta>): VectorIndexBundle<TMeta>;
112
- declare function knowledgeGraph<TEntity, TRelation extends string = string>(name: string): KnowledgeGraphGraph<TEntity, TRelation>;
113
-
114
- type index_CollectionEntry<T> = CollectionEntry<T>;
115
- type index_CollectionGraph<T> = CollectionGraph<T>;
116
- type index_CollectionOptions<T> = CollectionOptions<T>;
117
- type index_CollectionPolicy = CollectionPolicy;
118
- type index_HnswAdapter<TMeta> = HnswAdapter<TMeta>;
119
- type index_KnowledgeEdge<TRelation extends string = string> = KnowledgeEdge<TRelation>;
120
- type index_KnowledgeGraphGraph<TEntity, TRelation extends string = string> = KnowledgeGraphGraph<TEntity, TRelation>;
121
- type index_LightCollectionBundle<T> = LightCollectionBundle<T>;
122
- type index_LightCollectionEntry<T> = LightCollectionEntry<T>;
123
- type index_LightCollectionOptions = LightCollectionOptions;
124
- type index_RankedCollectionEntry<T> = RankedCollectionEntry<T>;
125
- type index_VectorBackend = VectorBackend;
126
- type index_VectorIndexBundle<TMeta> = VectorIndexBundle<TMeta>;
127
- type index_VectorIndexOptions<TMeta> = VectorIndexOptions<TMeta>;
128
- type index_VectorRecord<TMeta> = VectorRecord<TMeta>;
129
- type index_VectorSearchResult<TMeta> = VectorSearchResult<TMeta>;
130
- declare const index_collection: typeof collection;
131
- declare const index_decay: typeof decay;
132
- declare const index_knowledgeGraph: typeof knowledgeGraph;
133
- declare const index_lightCollection: typeof lightCollection;
134
- declare const index_vectorIndex: typeof vectorIndex;
135
- declare namespace index {
136
- export { type index_CollectionEntry as CollectionEntry, type index_CollectionGraph as CollectionGraph, type index_CollectionOptions as CollectionOptions, type index_CollectionPolicy as CollectionPolicy, type index_HnswAdapter as HnswAdapter, type index_KnowledgeEdge as KnowledgeEdge, type index_KnowledgeGraphGraph as KnowledgeGraphGraph, type index_LightCollectionBundle as LightCollectionBundle, type index_LightCollectionEntry as LightCollectionEntry, type index_LightCollectionOptions as LightCollectionOptions, type index_RankedCollectionEntry as RankedCollectionEntry, type index_VectorBackend as VectorBackend, type index_VectorIndexBundle as VectorIndexBundle, type index_VectorIndexOptions as VectorIndexOptions, type index_VectorRecord as VectorRecord, type index_VectorSearchResult as VectorSearchResult, index_collection as collection, index_decay as decay, index_knowledgeGraph as knowledgeGraph, index_lightCollection as lightCollection, index_vectorIndex as vectorIndex };
137
- }
138
-
139
- export { type CollectionEntry as C, type HnswAdapter as H, type KnowledgeGraphGraph as K, type LightCollectionBundle as L, type RankedCollectionEntry as R, type VectorSearchResult as V, type VectorIndexBundle as a, type CollectionGraph as b, type CollectionOptions as c, type CollectionPolicy as d, type KnowledgeEdge as e, type LightCollectionEntry as f, type LightCollectionOptions as g, type VectorBackend as h, index as i, type VectorIndexOptions as j, type VectorRecord as k, collection as l, decay as m, knowledgeGraph as n, lightCollection as o, vectorIndex as v };