@bkm016/basalt 0.1.12 → 0.1.13

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 (271) hide show
  1. package/{chunk-7jezts2n.js → chunk-06s9pr82.js} +2 -2
  2. package/{chunk-jpnf71q7.js → chunk-095adzn5.js} +2 -2
  3. package/chunk-0a7ft50x.js +18 -0
  4. package/{chunk-vjne04dp.js → chunk-0nedq669.js} +4 -4
  5. package/chunk-0x9netvr.js +5 -0
  6. package/{chunk-9as0p561.js → chunk-15ve3nmv.js} +11 -11
  7. package/chunk-1dbfmejf.js +2 -0
  8. package/{chunk-hbnmymaq.js → chunk-1q6e3mj7.js} +2 -2
  9. package/{chunk-85v69h91.js → chunk-22az84sh.js} +2 -2
  10. package/{chunk-w0rr66z7.js → chunk-2q56egb8.js} +1 -1
  11. package/{chunk-fhxy6y34.js → chunk-2tf7qfbx.js} +2 -2
  12. package/{chunk-nw1xpt3s.js → chunk-2zbj8ny6.js} +2 -2
  13. package/chunk-302n9g7p.js +2 -0
  14. package/{chunk-bk4rpnm8.js → chunk-37ndxehw.js} +2 -2
  15. package/chunk-41das1ty.js +2 -0
  16. package/{chunk-6mges89p.js → chunk-44a7f5ta.js} +5 -5
  17. package/{chunk-jn5pqy5v.js → chunk-46vy2m29.js} +1 -1
  18. package/{chunk-1zj3zvw5.js → chunk-4k9t9jvx.js} +4 -4
  19. package/{chunk-eq4wqxzt.js → chunk-4rnmxtpx.js} +2 -2
  20. package/{chunk-1xfv4bd7.js → chunk-4w9zqv0k.js} +1 -1
  21. package/chunk-6d9r9p91.js +20 -0
  22. package/chunk-6f4ht2hw.js +2 -0
  23. package/{chunk-jj4hqbrx.js → chunk-6sea12mw.js} +3 -3
  24. package/chunk-74wwdx3y.js +3 -0
  25. package/{chunk-w6f2r052.js → chunk-77c2cqp2.js} +1 -1
  26. package/chunk-7chv3knf.js +2 -0
  27. package/chunk-86yr2c0r.js +3 -0
  28. package/{chunk-6sz5q3df.js → chunk-8cgz8xv7.js} +2 -2
  29. package/{chunk-tvm4zmgj.js → chunk-959z9efn.js} +2 -2
  30. package/{chunk-eyrtbbdd.js → chunk-9e8vhzy7.js} +1 -1
  31. package/chunk-b516bp7n.js +3 -0
  32. package/chunk-bja7p3em.js +25 -0
  33. package/chunk-bng72094.js +2 -0
  34. package/{chunk-ksk49hv0.js → chunk-bp61xdsc.js} +1 -1
  35. package/chunk-bq54argx.js +2 -0
  36. package/chunk-ct77cdg7.js +2 -0
  37. package/{chunk-02d3x4mj.js → chunk-dk6fgprw.js} +3 -3
  38. package/chunk-drett6hb.js +2 -0
  39. package/{chunk-4gtgqcct.js → chunk-edbq461k.js} +3 -3
  40. package/{chunk-p2pmdbt2.js → chunk-f0h2bv11.js} +12 -12
  41. package/{chunk-8mezk0cb.js → chunk-g2etemv5.js} +2 -2
  42. package/{chunk-n0ybj4h9.js → chunk-g5p9mj1r.js} +2 -2
  43. package/{chunk-fy82qxa1.js → chunk-gpnqmtbk.js} +1 -1
  44. package/{chunk-kpe7pnhy.js → chunk-h9zxqeqr.js} +4 -4
  45. package/{chunk-qfcr5g35.js → chunk-jjtt9aq8.js} +3 -3
  46. package/{chunk-5wnmbc1b.js → chunk-kbpbrr11.js} +2 -2
  47. package/chunk-m71pj3g1.js +2 -0
  48. package/chunk-mdkfm1ak.js +7 -0
  49. package/chunk-mf04h0yy.js +7 -0
  50. package/chunk-n22vd4at.js +2 -0
  51. package/{chunk-v7wcchy2.js → chunk-nbjnwd54.js} +1 -1
  52. package/{chunk-1h34mzh7.js → chunk-pryvvs96.js} +22 -22
  53. package/{chunk-2kxnw7vs.js → chunk-r1jn77q6.js} +2 -2
  54. package/{chunk-ypqjfv3a.js → chunk-rn3jwyh1.js} +2 -2
  55. package/chunk-sgrrxsnz.js +482 -0
  56. package/chunk-sgz87ht5.js +2 -0
  57. package/{chunk-stj493dn.js → chunk-snz19yc2.js} +2 -2
  58. package/{chunk-qs8zzg50.js → chunk-szj85dqe.js} +2 -2
  59. package/{chunk-nrsd810j.js → chunk-tfhp09nj.js} +2 -2
  60. package/{chunk-hc300148.js → chunk-tfhze1vq.js} +2 -2
  61. package/{chunk-01nve4qy.js → chunk-tjg0gcks.js} +1 -1
  62. package/{chunk-cbgpymt4.js → chunk-tnj2kqb8.js} +1 -1
  63. package/{chunk-3pf1d62g.js → chunk-vqm94hz2.js} +2 -2
  64. package/{chunk-82v8jh1h.js → chunk-xvm0y99b.js} +2 -2
  65. package/{chunk-rwks9zaw.js → chunk-y23dpz5e.js} +2 -2
  66. package/{chunk-ejjem0tc.js → chunk-y4pvhes1.js} +6 -6
  67. package/{chunk-bwawt15q.js → chunk-ydzag81d.js} +2 -2
  68. package/chunk-ymg7mtcx.js +3 -0
  69. package/chunk-yy1f9jxc.js +4044 -0
  70. package/{chunk-ntks40jd.js → chunk-z0c8ek0j.js} +5 -5
  71. package/chunk-zk91579b.js +3 -0
  72. package/{chunk-0fc9apfn.js → chunk-zx75vnw8.js} +18 -18
  73. package/compiled.js +85 -12
  74. package/package.json +1 -1
  75. package/ui-test-worker.js +53 -53
  76. package/web/{chunk-aeymdtm1.js → chunk-0jbf73pr.js} +3 -3
  77. package/web/{chunk-7vgh17es.js → chunk-0rhx7qb8.js} +1 -1
  78. package/web/{chunk-7adsmqv6.js → chunk-0rvwj2wh.js} +2 -2
  79. package/web/chunk-12qf1r6m.js +1 -0
  80. package/web/{chunk-dndd757x.js → chunk-14vmr99v.js} +3 -3
  81. package/web/{chunk-4f6a8dsk.js → chunk-16jc5m0f.js} +1 -1
  82. package/web/{chunk-bra33pt0.js → chunk-1m6fx2h7.js} +2 -2
  83. package/web/{chunk-hva7xyne.js → chunk-1xm9x7d6.js} +1 -1
  84. package/web/{chunk-8539865x.js → chunk-20jxvmbw.js} +1 -1
  85. package/web/chunk-2n5xbnrt.js +1 -0
  86. package/web/{chunk-bygwbpvq.js → chunk-2sef2wft.js} +2 -2
  87. package/web/{chunk-w9gnqkez.js → chunk-2x7vmhm0.js} +2 -2
  88. package/web/{chunk-19zd0tye.js → chunk-2y1avvqj.js} +8 -8
  89. package/web/chunk-36s08nye.js +1 -0
  90. package/web/chunk-3ctmehg4.js +1 -0
  91. package/web/{chunk-ncfzmf2g.js → chunk-3jjksgze.js} +1 -1
  92. package/web/{chunk-aebrw6cv.js → chunk-3p9w8sg5.js} +2 -2
  93. package/web/{chunk-sdr5wa4z.js → chunk-3wpxymxa.js} +3 -3
  94. package/web/{chunk-v34mr9ky.js → chunk-4py9sndw.js} +3 -3
  95. package/web/chunk-4swea9sn.js +1 -0
  96. package/web/chunk-4zz5a483.js +1 -0
  97. package/web/{chunk-3rkkp6ed.js → chunk-5cwxhhae.js} +5 -5
  98. package/web/{chunk-d57fm7k0.js → chunk-5ym5ffd5.js} +2 -2
  99. package/web/{chunk-gten0rpx.js → chunk-6e87m0nm.js} +2 -2
  100. package/web/{chunk-b99k8q22.js → chunk-6rsr2cyw.js} +8 -8
  101. package/web/chunk-6y55gk1n.js +1 -0
  102. package/web/chunk-7aep7k4v.js +1 -0
  103. package/web/{chunk-yf8ykk4v.js → chunk-8j4tzff5.js} +3 -3
  104. package/web/{chunk-ny436sqg.js → chunk-8tgavnwx.js} +1 -1
  105. package/web/{chunk-xvfeq8v2.js → chunk-97t3ngqf.js} +12 -12
  106. package/web/{chunk-gkmaryr4.js → chunk-980zhtht.js} +1 -1
  107. package/web/chunk-9k7fkx80.js +1 -0
  108. package/web/{chunk-hxbfkdjd.js → chunk-9wz8jne3.js} +1 -1
  109. package/web/chunk-a00vg115.js +1 -0
  110. package/web/chunk-a4gbxnm3.js +1 -0
  111. package/web/{chunk-6f2sz84q.js → chunk-a6g3nqp0.js} +1 -1
  112. package/web/{chunk-n9v14vyd.js → chunk-a9er7a7c.js} +22 -22
  113. package/web/chunk-atppv8fk.js +1 -0
  114. package/web/{chunk-xbyrgyy0.js → chunk-awkdw9rw.js} +2 -2
  115. package/web/{chunk-hqxc9m07.js → chunk-b4gcpsbg.js} +10 -10
  116. package/web/{chunk-qdd3bx8q.js → chunk-b9jry5a3.js} +1 -1
  117. package/web/{chunk-jyf7a7yp.js → chunk-ba9qy65y.js} +1 -1
  118. package/web/chunk-bq6mep6p.js +2 -0
  119. package/web/chunk-bwy3e58v.js +1 -0
  120. package/web/{chunk-aa46mrgh.js → chunk-c57f714b.js} +2 -2
  121. package/web/{chunk-b5zf1hs3.js → chunk-c6m4vfn5.js} +101 -101
  122. package/web/{chunk-5np514v5.js → chunk-cr04125j.js} +4 -4
  123. package/web/{chunk-ym7kv2hs.js → chunk-cr05dttm.js} +1 -1
  124. package/web/{chunk-2cyzaqjy.js → chunk-ct7z7bea.js} +3 -3
  125. package/web/{chunk-y2rzeb4v.js → chunk-ct90yf8z.js} +2 -2
  126. package/web/{chunk-yjs6jmdb.js → chunk-ddg8rz82.js} +3 -3
  127. package/web/{chunk-8cnjd0f2.js → chunk-dmha2y9c.js} +18 -18
  128. package/web/{chunk-jeafmjsm.js → chunk-e57h40qa.js} +6 -6
  129. package/web/chunk-eeesa5q1.js +1 -0
  130. package/web/{chunk-4wwd3pfz.js → chunk-eqndhs21.js} +2 -2
  131. package/web/{chunk-td83xf12.js → chunk-eqxy6535.js} +2 -2
  132. package/web/{chunk-wvrs986a.js → chunk-et1rsgmp.js} +3 -3
  133. package/web/chunk-f7jpakwh.js +1 -0
  134. package/web/{chunk-v1hfbjz9.js → chunk-fnvgdvrg.js} +4 -4
  135. package/web/chunk-fp62avjh.js +1 -0
  136. package/web/{chunk-6jb2zyp6.js → chunk-frnh4zqf.js} +2 -2
  137. package/web/chunk-g0be12na.js +1 -0
  138. package/web/{chunk-60mym60n.js → chunk-g7hqafb8.js} +1 -1
  139. package/web/{chunk-wqzbxzk3.js → chunk-ga07tv37.js} +1 -1
  140. package/web/chunk-gr163fex.js +1 -0
  141. package/web/chunk-gxtz10wf.js +1 -0
  142. package/web/{chunk-pjpre6de.js → chunk-h1k2kqbs.js} +6 -6
  143. package/web/{chunk-7tkgbbf9.js → chunk-h6k1x096.js} +2 -2
  144. package/web/{chunk-885kpj14.js → chunk-jccz14ye.js} +2 -2
  145. package/web/{chunk-d73zkc4q.js → chunk-jh33m2mq.js} +2 -2
  146. package/web/{chunk-g488hxx0.js → chunk-jh3k7xex.js} +3 -3
  147. package/web/{chunk-3qxxrwsp.js → chunk-jpem3qvs.js} +10 -10
  148. package/web/chunk-k9qnvx86.js +2 -0
  149. package/web/chunk-kcnj0gan.js +1 -0
  150. package/web/{chunk-2jfesv7m.js → chunk-ke8dffnk.js} +2 -2
  151. package/web/chunk-kpp5xqsb.js +1 -0
  152. package/web/chunk-m33yted6.js +1 -0
  153. package/web/chunk-me5jqqn6.js +1 -0
  154. package/web/{chunk-7v85yvb2.js → chunk-mkxeenph.js} +1 -1
  155. package/web/{chunk-mxkbmgcv.js → chunk-mnf4ngj9.js} +1 -1
  156. package/web/{chunk-30aeb767.js → chunk-mykrm8ba.js} +2 -2
  157. package/web/chunk-mzqqwbmr.js +1 -0
  158. package/web/chunk-npyrdsf8.css +1 -0
  159. package/web/chunk-p6e2vr51.js +34 -0
  160. package/web/{chunk-3n9ypydh.js → chunk-p7pa02k9.js} +2 -2
  161. package/web/chunk-q34as3v6.js +1 -0
  162. package/web/{chunk-7ksg3ccg.js → chunk-q4vy3dkk.js} +2 -2
  163. package/web/chunk-q6c8p73w.js +1 -0
  164. package/web/{chunk-h754ntg7.js → chunk-qb8mbptk.js} +1 -1
  165. package/web/{chunk-g4zm0crw.js → chunk-qbmtah1x.js} +1 -1
  166. package/web/chunk-qn93we3a.js +1 -0
  167. package/web/{chunk-c3fty2c2.js → chunk-qq06x2ce.js} +7 -7
  168. package/web/{chunk-fj753yzt.js → chunk-qq6m2my8.js} +2 -2
  169. package/web/chunk-r1f1egve.js +1 -0
  170. package/web/{chunk-80z8s8zb.js → chunk-s935z8er.js} +1 -1
  171. package/web/{chunk-3psgr0q8.js → chunk-sq75q603.js} +20 -20
  172. package/web/{chunk-qp3tjhaq.js → chunk-ss96cz1f.js} +1 -1
  173. package/web/{chunk-hn8m1vsg.js → chunk-t82sngk9.js} +7 -7
  174. package/web/chunk-tt9410zw.js +8 -0
  175. package/web/{chunk-act3rr85.js → chunk-v4cqc9f9.js} +1 -1
  176. package/web/chunk-ve8gy05p.js +1142 -0
  177. package/web/chunk-vg1ebkce.js +1 -0
  178. package/web/{chunk-k4dnjf8n.js → chunk-vk7ch6fh.js} +3 -3
  179. package/web/chunk-vnt34mkb.js +1 -0
  180. package/web/{chunk-kerfb21g.js → chunk-w28dn4dw.js} +1 -1
  181. package/web/{chunk-rdr6wt22.js → chunk-w4tfad6c.js} +4 -4
  182. package/web/{chunk-81s15c2e.js → chunk-wpxtkxjt.js} +2 -2
  183. package/web/{chunk-h24ybwp6.js → chunk-xcyqd7cn.js} +1 -1
  184. package/web/chunk-xe121vg7.js +1 -0
  185. package/web/chunk-xh4xn1az.js +1 -0
  186. package/web/{chunk-e94pd9rr.js → chunk-xk1vkcj4.js} +9 -9
  187. package/web/chunk-xrk5ewsn.js +1 -0
  188. package/web/{chunk-5g8md2wg.js → chunk-xvm66b7v.js} +4 -4
  189. package/web/{chunk-q1zxvjhs.js → chunk-xxmaqj1m.js} +2 -2
  190. package/web/chunk-xzwxcxb4.js +1 -0
  191. package/web/{chunk-xpecre7w.js → chunk-y9waq403.js} +4 -4
  192. package/web/chunk-ydhnkws0.js +1 -0
  193. package/web/{chunk-ar6jnhm5.js → chunk-yn4t5s9r.js} +1 -1
  194. package/web/chunk-ys2tns0p.js +1 -0
  195. package/web/chunk-zb61mf0a.js +1 -0
  196. package/web/{chunk-r6kk4vp1.js → chunk-ze6azq7z.js} +4 -4
  197. package/web/chunk-zh7193nq.js +2 -0
  198. package/web/chunk-zqcg6frm.js +1 -0
  199. package/web/{chunk-enwfd8d5.js → chunk-zxrbbbtp.js} +2 -2
  200. package/web/index.html +1 -1
  201. package/worker.js +1 -1
  202. package/chunk-2fyjph3f.js +0 -2
  203. package/chunk-37zystxb.js +0 -25
  204. package/chunk-3k627vf2.js +0 -3
  205. package/chunk-7er5pz7s.js +0 -479
  206. package/chunk-7g5smgjj.js +0 -2
  207. package/chunk-7m3jagqn.js +0 -2
  208. package/chunk-9c4gdg1q.js +0 -3
  209. package/chunk-b2bxqeb4.js +0 -2
  210. package/chunk-bpw6q7g0.js +0 -3
  211. package/chunk-cdw03j4t.js +0 -20
  212. package/chunk-ch1r3ted.js +0 -2
  213. package/chunk-cmwdjes8.js +0 -18
  214. package/chunk-db7ws33a.js +0 -7
  215. package/chunk-e1x629v0.js +0 -5
  216. package/chunk-j64dc767.js +0 -3
  217. package/chunk-m4bg1apa.js +0 -7
  218. package/chunk-nhm9z3d8.js +0 -2
  219. package/chunk-pnspvnyd.js +0 -2
  220. package/chunk-qnkrrwmg.js +0 -2
  221. package/chunk-r4gm8ngh.js +0 -2
  222. package/chunk-rks90mh1.js +0 -2
  223. package/chunk-t7te60m7.js +0 -2
  224. package/chunk-tv52xajf.js +0 -2
  225. package/chunk-wqqjzsjt.js +0 -3983
  226. package/chunk-xef4642x.js +0 -3
  227. package/web/chunk-04drx71p.js +0 -1
  228. package/web/chunk-0mdf1qja.js +0 -1
  229. package/web/chunk-0rdgt4jb.css +0 -1
  230. package/web/chunk-1m0kp0g3.js +0 -8
  231. package/web/chunk-3j2tcphs.js +0 -1
  232. package/web/chunk-3k9h7a73.js +0 -1142
  233. package/web/chunk-3m1bb2fw.js +0 -1
  234. package/web/chunk-55nvm2mj.js +0 -1
  235. package/web/chunk-5dkqfnh7.js +0 -2
  236. package/web/chunk-7ky5nrrr.js +0 -1
  237. package/web/chunk-8sdjgv3k.js +0 -1
  238. package/web/chunk-9bxtzwtc.js +0 -1
  239. package/web/chunk-9jy8nc4r.js +0 -1
  240. package/web/chunk-bcjgzwef.js +0 -1
  241. package/web/chunk-cxpnj495.js +0 -2
  242. package/web/chunk-d1btrqmw.js +0 -1
  243. package/web/chunk-d94t9z70.js +0 -1
  244. package/web/chunk-e68jw0bg.js +0 -1
  245. package/web/chunk-fr4fft89.js +0 -1
  246. package/web/chunk-gckmcef6.js +0 -1
  247. package/web/chunk-gnb09wmx.js +0 -1
  248. package/web/chunk-hrgqc1vr.js +0 -1
  249. package/web/chunk-j9c8fa82.js +0 -1
  250. package/web/chunk-jz5mmp64.js +0 -1
  251. package/web/chunk-kxeaj44h.js +0 -1
  252. package/web/chunk-m0136xav.js +0 -1
  253. package/web/chunk-m1rdyvb5.js +0 -1
  254. package/web/chunk-m6vyvgm5.js +0 -1
  255. package/web/chunk-my0ec787.js +0 -1
  256. package/web/chunk-nkpdd9hw.js +0 -1
  257. package/web/chunk-pbp1p5ex.js +0 -1
  258. package/web/chunk-ph75hddv.js +0 -1
  259. package/web/chunk-phdfyqaa.js +0 -1
  260. package/web/chunk-phxa5krt.js +0 -1
  261. package/web/chunk-r4zbw4zj.js +0 -2
  262. package/web/chunk-ry4ycah9.js +0 -1
  263. package/web/chunk-sqm16fat.js +0 -1
  264. package/web/chunk-tj1fn8v2.js +0 -1
  265. package/web/chunk-v0wtk059.js +0 -34
  266. package/web/chunk-v1qt3gq4.js +0 -1
  267. package/web/chunk-v854w9yn.js +0 -1
  268. package/web/chunk-ve56gxq0.js +0 -1
  269. package/web/chunk-w573ym17.js +0 -1
  270. package/web/chunk-x0mjydtp.js +0 -1
  271. package/web/chunk-zhybh04p.js +0 -1
@@ -1 +0,0 @@
1
- import{nr}from"./chunk-n9v14vyd.js";export{nr as createRailroadServices};
@@ -1 +0,0 @@
1
- import{ir}from"./chunk-n9v14vyd.js";export{ir as createRailroadPegServices};
@@ -1,2 +0,0 @@
1
- import{o,r,f,e,n,y,Lt,ot,ie,Ue}from"./chunk-3k9h7a73.js";var Z={running:"运行中",waiting:"等待回答",context_exhausted:"上下文耗尽",done:"完成",error:"失败",failed:"失败",aborted:"已取消",cancelled:"已取消",interrupted:"已中断"},j={running:"warning",waiting:"warning",context_exhausted:"warning",done:"success",error:"danger",failed:"danger",aborted:"neutral",cancelled:"neutral",interrupted:"warning"},I=(i)=>i>=1000?`${(i/1000).toFixed(i>=1e4?0:1)}k`:String(i),ee=(i)=>i>=60000?`${Math.floor(i/60000)} 分 ${Math.round(i%60000/1000)} 秒`:`${Math.round(i/1000)} 秒`;function ae(i){let{Button:S,Panel:B,StatusChip:U,Markdown:A,ModelIcon:Q,cn:l,style:q,useTheme:F}=y();F();let{connection:k,sessionID:w,payload:O,onOpen:_}=i,s=O,[t,L]=r(),[W,D]=r(!1),[v,g]=r(),[P,R]=r(!1),[p,G]=r(!1),[H,J]=r(!1),x=H||s.state==="aborted"||s.state==="cancelled",h=x?"aborted":s.state,c=(s.state==="running"||s.state==="waiting")&&!x;o(()=>{let a,C=!1,M=()=>{k.request(`/api/sessions/${encodeURIComponent(w)}/tasks/${encodeURIComponent(s.childSessionID)}`).then((u)=>{if(!C)L(u),D(!1),g(void 0)}).catch((u)=>{if(!C){if(u instanceof Error&&u.message==="Task is not a direct child"){D(!0),g(void 0);return}g(u instanceof Error?u.message:"任务详情加载失败")}})};if(M(),c)a=setInterval(M,1500);return()=>{if(C=!0,a)clearInterval(a)}},[k,w,s.childSessionID,c]);let K=async()=>{if(P)return;R(!0);try{await k.request(`/api/sessions/${encodeURIComponent(w)}/tasks/${encodeURIComponent(s.childSessionID)}/kill`,{method:"POST"}),J(!0)}catch(a){g(a instanceof Error?a.message:"取消任务失败")}finally{R(!1)}},d=s.summary?.trim()||s.handoff?.conclusion.trim()||"",N=d.length>360||d.split(`
2
- `).length>8,b=t?.retried??0,m=c&&b>0,V=m?`重试中 (${b})`:Z[h]??h,X=m?"danger":j[h]??"neutral",T=[m&&`已失败重试 ${b} 次`,t&&c&&t.lastTool&&`最近 ${t.lastTool}`,t&&ee(t.elapsedMs),t&&`输入 ${I(t.usage.input)}`,t&&`输出 ${I(t.usage.output)}`,t&&t.usage.cacheRead>0&&`缓存 ${I(t.usage.cacheRead)}`,t&&t.usage.cost>0&&`$${t.usage.cost.toFixed(4)}`].filter((a)=>Boolean(a)),E=m&&t?.lastError?`模型请求异常:${t.lastError}`:void 0,Y=Boolean(d||s.state==="waiting"&&!x||E||v),z=s.model||t?.session.model;return e(B,{className:"my-2 animate-fade",header:n(f,{children:[z?e(Q,{modelID:z,className:"size-3.5 shrink-0",size:14}):e(Ue,{className:l("size-3.5 shrink-0",c?"text-warning":"text-faint")}),e("h4",{className:"truncate font-medium text-ink",title:s.description,children:s.description}),T.length>0&&e("div",{className:l("flex min-w-0 flex-wrap items-center gap-x-2 tabular-nums text-xs",m?"text-danger font-medium":"text-faint"),children:T.map((a)=>e("span",{children:a},a))})]}),actions:n(f,{children:[e(U,{tone:X,pulse:h==="running",children:V}),c&&e(S,{size:"sm",variant:"danger-ghost",className:"h-6 rounded-md px-2 text-xs",disabled:P,onClick:()=>{K()},children:"取消"}),!W&&n(S,{size:"sm",variant:"ghost",className:"h-6 gap-1 rounded-md px-2 text-xs text-faint hover:text-ink",onClick:()=>_(s.childSessionID),children:["进入子会话",e(ot,{className:"size-3.5"})]})]}),children:Y&&n(f,{children:[E&&n("div",{className:"flex items-center gap-2 border-b border-line bg-danger/10 px-4 py-2 text-xs text-danger",children:[n("span",{className:"font-medium",children:["已自动重试 ",b," 次:"]}),e("span",{className:"truncate",title:t?.lastError,children:t?.lastError})]}),s.state==="waiting"&&!x&&n("div",{className:l("px-4 py-3",d&&"border-b border-line"),children:[n("p",{className:"flex items-center gap-1.5 text-xs font-medium text-warning",children:[e(Lt,{className:"size-3.5"}),"子任务向主代理提问,等待回答"]}),s.pendingQuestions&&s.pendingQuestions.length>0&&e("ul",{className:"mt-1.5 flex flex-col gap-1 text-[13px] leading-relaxed text-ink",children:s.pendingQuestions.map((a)=>e("li",{className:"break-words",children:a.text},a.askedAt))})]}),d&&n("div",{className:"px-4 py-3",children:[n("div",{className:l("relative text-[13.5px] leading-[1.65] break-words text-ink/90 overflow-hidden transition-[max-height] duration-300 ease-out-quint [&_p]:my-1.5 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",N&&!p?"max-h-40":"max-h-[1800px]"),children:[e(A,{text:d}),N&&e("div",{className:l("pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-panel via-panel/70 to-transparent transition-opacity duration-300",p?"opacity-0":"opacity-100")})]}),N&&n("button",{type:"button",className:q("chat.timelineRow","cursor-pointer select-none"),onClick:()=>G(!p),children:[e("span",{children:p?"收起":"展开全部"}),e(ie,{className:l("size-3.5 transition-transform duration-300 ease-out-quint",p&&"rotate-180")})]})]}),v&&e("p",{role:"status",className:"px-4 py-2.5 text-xs text-danger",children:v})]})})}export{ae as TaskCard};
@@ -1 +0,0 @@
1
- import"./chunk-b5zf1hs3.js";import"./chunk-3n9ypydh.js";import"./chunk-81s15c2e.js";import{ao}from"./chunk-d57fm7k0.js";export{ao as render};
@@ -1 +0,0 @@
1
- import{t,a}from"./chunk-b5zf1hs3.js";import{J,Dt,Mt}from"./chunk-rdr6wt22.js";import{H}from"./chunk-jyf7a7yp.js";import{nr,_t}from"./chunk-n9v14vyd.js";var o=nr().Railroad.parser.LangiumParser,n=t((e)=>{switch(e.$type){case"RailroadTerminalExpr":return{type:"terminal",value:e.value};case"RailroadNonTerminalExpr":return{type:"nonterminal",name:e.name};case"RailroadSpecialExpr":return{type:"special",text:e.text};case"RailroadSequenceExpr":{let r=e.elements.map(n);return r.length===1?r[0]:{type:"sequence",elements:r}}case"RailroadChoiceExpr":{let r=e.alternatives.map(n);return r.length===1?r[0]:{type:"choice",alternatives:r}}case"RailroadOptionalExpr":return{type:"optional",element:n(e.element)};case"RailroadOneOrMoreExpr":return{type:"repetition",element:n(e.element),min:1,max:1/0};case"RailroadZeroOrMoreExpr":return{type:"repetition",element:n(e.element),min:0,max:1/0};default:throw Error(`Unsupported railroad expression: ${e.$type}`)}},"transformExpression"),l=t((e)=>({name:e.name,definition:n(e.definition)}),"transformRule"),s=t((e)=>{if(H(e,J),e.title)J.setTitle(e.title);e.rules.map((r)=>J.addRule(l(r)))},"populateDb"),m={parse:t((e)=>{J.clear(),a.debug("[Railroad Parser] Starting Langium parse");let r=o.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new _t(r);let i=r.value;a.debug("[Railroad Parser] Parsed rules:",i.rules.length),s(i),a.debug("[Railroad Parser] Parse complete")},"parse"),parser:{yy:J}},R={parser:m,db:J,renderer:Mt,styles:Dt};export{R as diagram};
@@ -1 +0,0 @@
1
- import{wi}from"./chunk-n9v14vyd.js";export{wi as createRadarServices};
@@ -1 +0,0 @@
1
- import{sa}from"./chunk-4wwd3pfz.js";export{sa as default};
@@ -1 +0,0 @@
1
- import{ar}from"./chunk-n9v14vyd.js";export{ar as createRailroadAbnfServices};
@@ -1,2 +0,0 @@
1
- import{s}from"./chunk-3k9h7a73.js";var c=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],ea=s("circle-check",c);
2
- export{ea};
@@ -1 +0,0 @@
1
- import{g,o,G,i,r,f,e,n,y,rn,Jn,ze,Nn,Ie,pn,ce,ee,ra,So,aa}from"./chunk-3k9h7a73.js";function de(d){let{Button:b,confirm:L,PageLayout:x,Switch:_,cn:F,style:z}=y(),{connection:u,onOpen:O}=d,[D,p]=r([]),[w,H]=r([]),[q,J]=r([]),[I,T]=r(),[B,U]=r([]),[A,V]=r(!0),[k,N]=r(),[C,R]=r(),[W,P]=r(!1),[K,c]=r({}),s=i(0),E=g(async()=>{let t=++s.current;try{let[a,l,m,v]=await Promise.all([u.request("/api/automations"),u.request("/api/projects").catch(()=>[]),u.request("/api/info").catch(()=>{return}),u.request("/api/models").catch(()=>({models:[]}))]),te=[...new Set(a.flatMap((h)=>h.lastSessionID?[h.lastSessionID]:[]))],ne=(await Promise.all(te.map(async(h)=>u.request(`/api/sessions/${encodeURIComponent(h)}`).catch((j)=>{if(j instanceof Error&&"status"in j&&j.status===404)return;throw j})))).filter((h)=>h!==void 0);if(t!==s.current)return;if(p(a.sort((h,j)=>h.created-j.created)),H(l),J(ne),T(m),v?.models)U(v.models.map((h)=>h.id));N(void 0)}catch(a){if(t===s.current)N(a instanceof Error?a.message:"加载失败")}finally{if(t===s.current)V(!1)}},[u]);o(()=>(E(),()=>{s.current++}),[E]);let S=(t)=>{R(t),P(!0)},X=async(t)=>{c((a)=>({...a,[t.id]:!0}));try{let a=await u.request(`/api/automations/${t.id}/run`,{method:"POST"});O(a.id)}catch(a){N(a instanceof Error?a.message:"运行失败")}finally{c((a)=>({...a,[t.id]:!1}))}},Y=async(t)=>{if(!await L({title:`删除自动化「${t.name}」?`,description:"已经跑出来的会话会保留。",action:"删除",danger:!0}))return;try{await u.request(`/api/automations/${t.id}`,{method:"DELETE"}),p((l)=>l.filter((m)=>m.id!==t.id))}catch(l){N(l instanceof Error?l.message:"删除失败")}},Z=async(t,a)=>{try{let l=await u.request(`/api/automations/${t.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({enabled:a})});p((m)=>m.map((v)=>v.id===t.id?l:v))}catch(l){N(l instanceof Error?l.message:"状态切换失败")}};return n(x,{title:"自动化",description:n(f,{children:["到点自动开一个新会话执行提示词,跑完的结果在会话里查看。",I?.timezone&&n("span",{className:"text-faint",children:["按服务器时区 ",I.timezone,"。"]})]}),actions:n(b,{variant:"primary",onClick:()=>S(null),children:[e(ce,{className:"size-4"}),"新建"]}),children:[k&&e("div",{className:"mb-4 rounded-lg bg-danger/10 px-3 py-2 text-xs text-danger",children:k}),A?e("div",{className:"flex justify-center py-12 text-xs text-faint",children:"正在加载自动化…"}):D.length===0?n("div",{className:z("surface.emptyDashed","animate-fade"),children:[e("div",{className:"grid size-11 place-items-center rounded-xl bg-raised text-dim",children:e(rn,{className:"size-5"})}),n("div",{children:[e("p",{className:"text-[15px] font-medium",children:"还没有自动化"}),e("p",{className:"mt-1 text-sm text-dim",children:"比如「每个工作日 9 点总结昨天的提交」。"})]}),n(b,{size:"sm",onClick:()=>S(null),className:"mt-1",children:[e(ce,{className:"size-3.5"}),"新建自动化"]})]}):e("ul",{className:"flex animate-fade flex-col gap-3",children:D.map((t)=>{let a=t.projectID?w.find((v)=>v.id===t.projectID):void 0,l=t.lastSessionID?q.find((v)=>v.id===t.lastSessionID):void 0,m=Boolean(K[t.id]);return e("li",{children:n("article",{className:z("surface.card","group p-4 transition-[border-color,box-shadow] duration-200 hover:border-line-strong hover:shadow-composer"),children:[n("div",{className:"flex items-start gap-3",children:[n("div",{className:F("min-w-0 flex-1 transition-opacity duration-200",!t.enabled&&"opacity-55"),children:[e("h2",{className:"truncate text-[15px] font-medium",children:t.name}),n("div",{className:"mt-1 flex flex-wrap items-center gap-x-3.5 gap-y-1 text-[13px] text-dim",children:[n("span",{className:"flex items-center gap-1.5 [&_svg]:size-3.5 [&_svg]:text-faint",children:[e(rn,{}),So(t.schedule)]}),n("span",{className:"flex items-center gap-1.5 [&_svg]:size-3.5 [&_svg]:text-faint",children:[a?e(ze,{}):e(Nn,{}),a?a.name:"聊天"]}),t.enabled&&t.nextRun!==null&&n("span",{className:"flex items-center gap-1.5 [&_svg]:size-3.5 [&_svg]:text-faint",children:[e(Jn,{}),"下次 ",aa(t.nextRun)]})]})]}),e(_,{checked:t.enabled,label:t.enabled?"停用":"启用",onCheckedChange:(v)=>Z(t,v),className:"mt-0.5"})]}),e("p",{className:F("mt-3 line-clamp-2 text-sm leading-6 whitespace-pre-wrap text-faint transition-opacity duration-200",!t.enabled&&"opacity-55"),children:t.prompt}),n("div",{className:"mt-3 -mb-1 flex items-center gap-1",children:[n(b,{size:"sm",onClick:()=>X(t),disabled:m,children:[e(pn,{className:"size-3.5"}),m?"正在启动…":"立即运行"]}),n(b,{size:"sm",variant:"ghost",onClick:()=>S(t),children:[e(Ie,{className:"size-3.5"}),"编辑"]}),n(b,{size:"sm",variant:"danger-ghost",onClick:()=>Y(t),children:[e(ee,{className:"size-3.5"}),"删除"]}),e("div",{className:"flex-1"}),t.lastRun!==null&&n("button",{type:"button",disabled:!l,onClick:()=>l&&O(l.id),className:"rounded-md px-1.5 py-1 text-[13px] text-faint transition-colors enabled:hover:bg-raised enabled:hover:text-ink",children:["上次运行 ",aa(t.lastRun),l?.archivedAt!=null?" · 已归档":"",!l?" · 会话已删除":""]})]})]})},t.id)})}),C!==void 0&&e(oe,{open:W,onOpenChange:P,automation:C??void 0,projects:w,models:B,timezone:I?.timezone,onSaved:(t)=>{p((a)=>{let l=a.findIndex((m)=>m.id===t.id);if(l>=0){let m=[...a];return m[l]=t,m}return[...a,t].sort((m,v)=>m.created-v.created)}),P(!1)},connection:u},C?.id??"new")]})}var M="custom",Q="chat";function oe(d){let{Button:b,Dialog:L,Field:x,Form:_,FormError:F,Input:z,Select:u,Textarea:O}=y(),D=G(),p=d.automation,[w,H]=r(p?.name??""),[q,J]=r(p?.prompt??""),[I,T]=r(p?.schedule??ra[0]?.cron??"0 9 * * *"),[B,U]=r(()=>!ra.some((c)=>c.cron===I)),[A,V]=r(p?.projectID??Q),[k,N]=r(p?.model??""),[C,R]=r(!1),[W,P]=r();async function K(c){c.preventDefault(),R(!0),P(void 0);try{let s=A===Q?void 0:A,E={name:w,prompt:q,schedule:I,model:k||void 0},S;if(p)S=await d.connection.request(`/api/automations/${p.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({...E,projectID:s??null})});else S=await d.connection.request("/api/automations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({...E,projectID:s})});d.onSaved(S)}catch(s){P(s instanceof Error?s.message:"保存失败")}finally{R(!1)}}return e(L,{open:d.open,onOpenChange:d.onOpenChange,title:d.automation?"编辑自动化":"新建自动化",size:"lg",footer:n(f,{children:[e("div",{className:"flex-1 max-sm:hidden"}),e(b,{onClick:()=>d.onOpenChange(!1),children:"取消"}),e(b,{type:"submit",form:D,variant:"primary",disabled:C,children:C?"正在保存…":d.automation?"保存":"创建"})]}),children:n(_,{id:D,onSubmit:K,children:[e(x,{label:"名称",children:(c)=>e(z,{id:c,autoFocus:!p,required:!0,value:w,onChange:(s)=>H(s.target.value),placeholder:"例如:每日提交总结"})}),e(x,{label:"提示词",hint:"没人盯着运行,写清楚要做什么、结果怎么汇报。",children:(c)=>e(O,{id:c,required:!0,value:q,onChange:(s)=>J(s.target.value),rows:5,placeholder:"总结昨天到现在的 git 提交,按模块分组,列出需要我关注的改动。"})}),n("div",{className:"grid gap-x-3 gap-y-4 sm:grid-cols-2",children:[e(x,{label:"时间",children:(c)=>e(u,{id:c,value:B?M:I,onValueChange:(s)=>{if(U(s===M),s!==M)T(s)},groups:[{options:ra.map((s)=>({value:s.cron,label:s.label}))},{options:[{value:M,label:"自定义(cron)"}]}]})}),e(x,{label:"在哪里运行",children:(c)=>e(u,{id:c,value:A,onValueChange:V,groups:[{options:[{value:Q,label:"聊天",description:"不绑定目录",icon:e(Nn,{})}]},...d.projects.length?[{label:"项目",options:d.projects.map((s)=>({value:s.id,label:s.name,icon:e(ze,{})}))}]:[]]})})]}),B&&e(x,{label:"cron 表达式",hint:`分 时 日 月 周,例如 30 8 * * 1-5 是工作日 8:30。${d.timezone?`按 ${d.timezone} 时间。`:""}`,children:(c)=>e(z,{id:c,required:!0,value:I,onChange:(s)=>T(s.target.value),spellCheck:!1,className:"font-mono"})}),d.models.length>0&&e(x,{label:"模型",children:(c)=>e(u,{id:c,value:k||"default",onValueChange:(s)=>N(s==="default"?"":s),groups:[{options:[{value:"default",label:"默认模型"},...d.models.map((s)=>({value:s,label:s}))]}]})}),e(F,{children:W})]})})}export{de as AutomationsPage};
@@ -1 +0,0 @@
1
- import{no,Lo,ro,Io,Do,ao}from"./chunk-d57fm7k0.js";import"./chunk-81s15c2e.js";import"./chunk-3n9ypydh.js";import"./chunk-b5zf1hs3.js";export{Lo as applyDagreLayoutResult,no as getEdgesToRender,Io as measureDagreLayout,ro as prepareLayoutForDagre,ao as render,Do as runDagreLayoutCore};
@@ -1 +0,0 @@
1
- import{_i}from"./chunk-gten0rpx.js";export{_i as default};
@@ -1 +0,0 @@
1
- import{Qn}from"./chunk-bygwbpvq.js";export{Qn as default};
@@ -1 +0,0 @@
1
- import{t,a}from"./chunk-b5zf1hs3.js";import{J,Dt,Mt}from"./chunk-rdr6wt22.js";import{H}from"./chunk-jyf7a7yp.js";import{rr,_t}from"./chunk-n9v14vyd.js";var i=rr().RailroadEbnf.parser.LangiumParser,o=t((e)=>{let r=e.alternatives.map(m);if(r.length===1)return r[0];return{type:"choice",alternatives:r}},"transformChoice"),m=t((e)=>{let r=e.elements.map(p);if(r.length===1)return r[0];return{type:"sequence",elements:r}},"transformSequence"),s=t((e)=>{switch(e.$type){case"EbnfTerminal":return{type:"terminal",value:e.value};case"EbnfNonTerminal":return{type:"nonterminal",name:e.name};case"EbnfSpecial":return{type:"special",text:e.text};case"EbnfGroup":return o(e.element);case"EbnfOptional":return{type:"optional",element:o(e.element)};case"EbnfRepetition":return{type:"repetition",element:o(e.element),min:0,max:1/0};default:throw Error(`Unsupported EBNF primary node: ${e.$type}`)}},"transformPrimary"),l=t((e,r)=>{switch(r.$type){case"EbnfOptionalPostfix":return{type:"optional",element:e};case"EbnfZeroOrMorePostfix":return{type:"repetition",element:e,min:0,max:1/0};case"EbnfOneOrMorePostfix":return{type:"repetition",element:e,min:1,max:1/0};case"EbnfExceptionPostfix":return{type:"sequence",elements:[e,{type:"terminal",value:"-"},s(r.except)]};default:throw Error(`Unsupported EBNF postfix node: ${r.$type}`)}},"transformPostfix"),p=t((e)=>e.postfixes.reduce((r,n)=>l(r,n),s(e.base)),"transformTerm"),f=t((e)=>({name:e.name,definition:o(e.definition)}),"transformRule"),u=t((e)=>{if(H(e,J),e.title)J.setTitle(e.title);e.rules.map((r)=>J.addRule(f(r)))},"populateDb"),c={parse:t((e)=>{J.clear(),a.debug("[EBNF Parser] Starting Langium parse");let r=i.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new _t(r);let n=r.value;a.debug("[EBNF Parser] Parsed rules:",n.rules.length),u(n),a.debug("[EBNF Parser] Parse complete")},"parse"),parser:{yy:J}},x={parser:c,db:J,renderer:Mt,styles:Dt};export{x as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-b5zf1hs3.js";import"./chunk-2jfesv7m.js";import{Mo}from"./chunk-hqxc9m07.js";import"./chunk-h754ntg7.js";import"./chunk-r4zbw4zj.js";import"./chunk-7v85yvb2.js";import"./chunk-qdd3bx8q.js";export{Mo as diagram};
@@ -1 +0,0 @@
1
- import{li}from"./chunk-aa46mrgh.js";export{li as default};
@@ -1 +0,0 @@
1
- import{Kn}from"./chunk-td83xf12.js";export{Kn as default};
@@ -1 +0,0 @@
1
- import{g,o,i,r,f,e,n,y,s,te,st,Te,ce,ne,je,Ke,ee,Z}from"./chunk-3k9h7a73.js";import{Pr,Or,$r}from"./chunk-bra33pt0.js";var ke=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],ye=s("rotate-cw",ke);function Ce(t){let m=[],h="",S,v=!1;for(let p=0;p<t.length;p++){let c=t.charAt(p);if(S)if(c===S)S=void 0;else if(c==="\\"&&S==='"'&&p+1<t.length)h+=t[++p];else h+=c;else if(c==='"'||c==="'")S=c,v=!0;else if(c==="\\"&&p+1<t.length)h+=t[++p],v=!0;else if(/\s/.test(c)){if(v||h)m.push(h);h="",v=!1}else h+=c,v=!0}if(v||h)m.push(h);return m}function fe(t){return t.map((m)=>m===""||/[\s"'\\]/.test(m)?`"${m.replace(/(["\\])/g,"\\$1")}"`:m).join(" ")}var $e={connected:{label:"已连接",dot:"bg-success"},idle:{label:"待连接",dot:"bg-faint"},disabled:{label:"已停用",dot:"bg-faint"},failed:{label:"连接失败",dot:"bg-danger"},needs_auth:{label:"需要认证",dot:"bg-warning"}};function ge(t){if(t==="project")return"项目";if(t==="file")return".mcp.json";return"全局"}function pe(t){return t.type==="local"?fe(t.command):t.url}function he({info:t,tools:m=!1}){let h=$e[t.status.status];return n("span",{className:"inline-flex shrink-0 items-center gap-1.5 text-xs text-dim",children:[e("span",{"aria-hidden":!0,className:`size-1.5 shrink-0 rounded-full ${h.dot}`}),e("span",{className:m?void 0:"hidden @md/panel:inline",children:h.label}),m&&t.status.status==="connected"&&n("span",{className:"text-faint",children:[t.toolCount," 个工具"]})]})}function xe(t){let{Button:m,CopyButton:h,DetailChip:S,DetailList:v,DetailRow:p,DetailTitle:c,Dialog:D,Switch:M,Tooltip:V,cn:d,confirm:X,useTheme:I}=y();I();let{info:u,connection:E}=t,k=t.projectID?`?projectID=${encodeURIComponent(t.projectID)}`:"",[B,Y]=r(),[re,F]=r(),[T,P]=r(!1),J=u.status.status==="connected",j=u.status.status==="needs_auth",U=u.status.status==="failed",L=u.config.type==="remote"&&Boolean(u.config.oauth),R=u.scope==="file";o(()=>{function l(N){if(N&&N!==u.name)return;E.request(`/api/mcp/${encodeURIComponent(u.name)}/connect${k}`,{method:"POST"}).then((ie)=>t.onChanged(ie)).catch(()=>{})}function se(N){if(N.data?.type==="mcp-oauth-success")l(N.data.name)}function de(N){if(N.key==="basalt-mcp-oauth-event"&&N.newValue)try{let ie=JSON.parse(N.newValue);l(ie.name)}catch(ie){}}window.addEventListener("message",se),window.addEventListener("storage",de);let q;if("BroadcastChannel"in window)q=new BroadcastChannel("basalt-mcp-oauth"),q.onmessage=(N)=>{if(N.data?.type==="mcp-oauth-success")l(N.data.name)};return()=>{window.removeEventListener("message",se),window.removeEventListener("storage",de),q?.close()}},[E,u.name,k,t]),o(()=>{if(u.status.status!=="connected")return;E.request(`/api/mcp/${encodeURIComponent(u.name)}/tools${k}`).then((l)=>{if(Array.isArray(l))Y(l),F(void 0)}).catch((l)=>{F(l instanceof Error?l.message:"获取工具失败")})},[E,u.name,k,u.status.status]);async function ae(l){P(!0);try{let se=await E.request(`/api/mcp/${encodeURIComponent(u.name)}/${l}${k}`,{method:"POST"});t.onChanged(se)}catch{}finally{P(!1)}}async function oe(){P(!0);try{let l=u.status.status==="needs_auth"?u.status.authorizationUrl:void 0;if(!l)l=(await E.request(`/api/mcp/${encodeURIComponent(u.name)}/oauth/authorize${k}`,{method:"POST"})).authorizationUrl;if(l)window.open(l,"_blank","width=600,height=700")}catch(l){F(l instanceof Error?l.message:"获取授权链接失败")}finally{P(!1)}}async function _(){P(!0);try{let l=await E.request(`/api/mcp/${encodeURIComponent(u.name)}/oauth/clear${k}`,{method:"POST"});t.onChanged(l)}finally{P(!1)}}async function a(){if(!await X({title:`删除 ${u.name}?`,description:"删除后将断开连接并不再向会话提供其工具。",action:"删除",danger:!0}))return;P(!0);try{await E.request(`/api/mcp/${encodeURIComponent(u.name)}${k}`,{method:"DELETE"}),t.onChanged(),t.onClose()}finally{P(!1)}}let C=u.config,x=pe(C),W="error"in u.status?u.status.error:void 0,z=C.enabled===!1,le=!z&&!j;return e(D,{open:!0,onOpenChange:(l)=>{if(!l&&!T)t.onClose()},title:e(c,{icon:C.type==="local"?e(Ke,{}):e(Te,{}),name:u.name,meta:[C.type==="local"?"本地命令":"远程服务",ge(u.scope),L&&"OAuth 2.0"]}),size:"lg",footer:n("div",{className:"flex w-full items-center justify-between gap-2 max-sm:[&>*]:flex-none",children:[n("div",{className:"inline-flex items-center gap-2.5 text-[13px] text-dim",children:[!R&&e(M,{label:`启用 ${u.name}`,checked:!z,disabled:T||t.toggling,onCheckedChange:t.onToggle}),e(he,{info:u,tools:!0})]}),n("div",{className:"flex items-center gap-1.5",children:[L&&e(m,{type:"button",variant:"ghost",size:"sm",onClick:_,disabled:T,children:"清除凭据"}),!R&&e(V,{label:"删除服务器",children:e(m,{type:"button",variant:"danger-ghost",size:"icon","aria-label":"删除服务器",onClick:a,disabled:T,children:e(ee,{className:"size-4"})})}),le&&e(V,{label:"终止服务进程并重新启动,让更新后的代码生效",children:e(m,{type:"button",variant:"ghost",size:"icon","aria-label":"重启",onClick:()=>ae("restart"),disabled:T,children:e(ye,{className:d("size-4",T&&"animate-spin")})})}),le&&e(m,{type:"button",size:"sm",onClick:()=>ae(J?"disconnect":"connect"),disabled:T,children:J?"断开连接":"连接"}),!R&&n(m,{type:"button",size:"sm",onClick:t.onEdit,disabled:T,children:[e(je,{className:"size-3.5"}),e("span",{children:"编辑配置"})]})]})]}),children:n(v,{children:[n(p,{label:C.type==="local"?"命令":"地址",children:[e("span",{className:"min-w-0 font-mono text-[12px] text-dim leading-5.5 [overflow-wrap:anywhere]",children:x}),e(h,{text:x,label:"复制",size:"icon-xs",className:"shrink-0 text-faint hover:text-ink"})]}),j&&n(p,{label:"授权",children:[e("span",{className:"text-dim leading-7",children:"需要完成 OAuth 授权后才能使用,令牌会自动保存。"}),e(m,{type:"button",variant:"primary",size:"sm",onClick:oe,disabled:T,children:"前往授权"})]}),U&&e(p,{label:"错误",children:e("p",{className:"min-w-0 font-mono text-[11.5px] text-danger leading-5 [overflow-wrap:anywhere]",children:W})}),e(p,{label:"工具",children:re?e("span",{className:"text-danger",children:re}):!J?e("span",{className:"text-faint",children:"连接后列出工具"}):!B?e("span",{role:"status",className:"text-faint",children:"正在获取"}):B.length===0?e("span",{className:"text-faint",children:"服务器没有声明任何工具"}):B.map((l)=>e(S,{mono:!0,title:l.description,children:l.name},l.name))})]})})}var Pe=/^[A-Za-z0-9_-]{1,64}$/;function K(t){return e("span",{className:"truncate text-xs text-faint",children:t.children})}function Ne(t){let{pairs:m,onChange:h,InputComponent:S}=t,v=(p,c)=>h(m.map((D,M)=>M===p?{...D,...c}:D));return n("div",{className:"space-y-2",children:[n("div",{className:"flex min-h-7 items-center gap-2",children:[e("span",{className:"shrink-0 text-[13px] font-medium text-dim",children:t.label}),e(K,{children:t.tip}),n("button",{type:"button",className:"ml-auto inline-flex h-7 shrink-0 cursor-pointer items-center gap-1 rounded-lg px-2 text-xs font-medium text-dim transition-colors hover:bg-raised hover:text-ink",onClick:()=>h([...m,{key:"",value:"",saved:!1}]),children:[e(ce,{className:"size-3.5"}),"添加"]})]}),m.map((p,c)=>n("div",{className:"flex min-w-0 items-center gap-1.5",children:[e(S,{"aria-label":`${t.keyLabel} ${c+1}`,placeholder:t.keyLabel,value:p.key,readOnly:p.saved,onChange:(D)=>v(c,{key:D.target.value}),className:"min-w-0 flex-[2] font-mono text-xs"}),e(S,{"aria-label":`${t.keyLabel} ${p.key||c+1} 的值`,type:"password",autoComplete:"off",placeholder:p.saved?"已保存,留空保持不变":"值",value:p.value,onChange:(D)=>v(c,{value:D.target.value}),className:"min-w-0 flex-[3] font-mono text-xs"}),e("button",{type:"button","aria-label":`删除 ${p.key||"该项"}`,className:"flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-lg text-faint transition-colors hover:bg-danger/10 hover:text-danger",onClick:()=>h(m.filter((D,M)=>M!==c)),children:e(Z,{className:"size-4"})})]},c))]})}function we(t){return Object.keys(t??{}).map((m)=>({key:m,value:"",saved:!0}))}function Ie(t){let{Button:m,Segmented:h,Dialog:S,Form:v,Field:p,Input:c,Switch:D,style:M,useTheme:V}=y();V();let{existing:d}=t,[X,I]=r(d?.config.type??"local"),[u,E]=r(d?.name??""),[k,B]=r(d?.config.type==="local"?fe(d.config.command):""),[Y,re]=r(d?.config.type==="remote"?d.config.url:""),[F,T]=r(we(d?.config.type==="local"?d.config.environment:void 0)),[P,J]=r(we(d?.config.type==="remote"?d.config.headers:void 0)),j=d?.config.type==="remote"?d.config.oauth:void 0,[U,L]=r(Boolean(j)),[R,ae]=r(typeof j==="object"&&j.clientId?j.clientId:""),[oe,_]=r(""),[a,C]=r(typeof j==="object"&&j.scope?j.scope:""),[x,W]=r(d?.config.defer??"default"),[z,le]=r(d?.config.timeout!==void 0?String(d.config.timeout):""),[l,se]=r(d?.config.defer!==void 0||d?.config.timeout!==void 0),[de,q]=r(),[N,ie]=r(!1);async function Se(b){b.preventDefault(),q(void 0);let w=u.trim();if(!d&&!Pe.test(w)){q("名称只能包含英文字母、数字、下划线与中划线,长度 1-64");return}if(!d&&t.taken.includes(w)){q("同名服务器已存在");return}let ue=z.trim()?Number.parseInt(z.trim(),10):void 0;if(ue!==void 0&&(!Number.isFinite(ue)||ue<=0)){q("超时时间须为大于 0 的毫秒数");return}let be;if(X==="local"){let H=Ce(k.trim());if(!H.length){q("请输入启动命令");return}let G={};for(let A of F){let O=A.key.trim();if(!O)continue;if(!A.saved||A.value)G[O]=A.value}be={type:"local",command:H,environment:Object.keys(G).length?G:void 0,enabled:d?d.config.enabled:!0,defer:x==="default"?void 0:x,timeout:ue}}else{let H=Y.trim();try{let O=new URL(H);if(O.protocol!=="http:"&&O.protocol!=="https:")throw Error("bad protocol")}catch{q("请输入合法的 HTTP 或 HTTPS 地址");return}let G={};for(let O of P){let me=O.key.trim();if(!me)continue;if(!O.saved||O.value)G[me]=O.value}let A;if(U){let O=R.trim(),me=oe.trim(),ve=a.trim();if(O||me||ve)A={clientId:O||void 0,clientSecret:me||void 0,scope:ve||void 0};else A=!0}else A=!1;be={type:"remote",url:H,headers:Object.keys(G).length?G:void 0,oauth:A,enabled:d?d.config.enabled:!0,defer:x==="default"?void 0:x,timeout:ue}}ie(!0);try{let H=d?.name??w,G=d?d.projectID:t.projectID,A=G?`?projectID=${encodeURIComponent(G)}`:"";await t.connection.request(`/api/mcp/${encodeURIComponent(H)}${A}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(be)}),t.onSaved()}catch(H){q(H instanceof Error?H.message:"保存失败")}finally{ie(!1)}}return e(S,{open:!0,onOpenChange:(b)=>{if(!b&&!N)t.onClose()},title:d?`编辑 ${d.name}`:"添加 MCP 服务器",size:"lg",footer:n("div",{className:"flex w-full justify-end gap-2.5",children:[e(m,{type:"button",variant:"ghost",onClick:t.onClose,disabled:N,className:"min-w-20",children:"取消"}),e(m,{type:"submit",form:"mcp-server-form",variant:"primary",disabled:N,className:"min-w-24",children:N?"保存中...":"保存"})]}),children:n(v,{id:"mcp-server-form",onSubmit:Se,children:[e(h,{value:X,onChange:(b)=>I(b),className:"w-full [&>button]:flex-1",options:[{value:"local",label:"本地(标准输入输出)"},{value:"remote",label:"远程(HTTP / SSE)"}]}),!d&&e(p,{label:"名称",aside:e(K,{children:"唯一标识,如 postgres"}),children:(b)=>e(c,{id:b,value:u,onChange:(w)=>E(w.target.value),placeholder:"postgres",className:"font-mono text-xs"})}),X==="local"?n(f,{children:[e(p,{label:"启动命令",aside:e(K,{children:"完整命令及参数"}),children:(b)=>e(c,{id:b,value:k,onChange:(w)=>B(w.target.value),placeholder:"npx -y @modelcontextprotocol/server-postgres ...",className:"font-mono text-xs"})}),e(Ne,{label:"环境变量",tip:"启动进程时注入",keyLabel:"变量名",pairs:F,onChange:T,InputComponent:c})]}):n(f,{children:[e(p,{label:"服务地址",aside:e(K,{children:"HTTP / HTTPS 端点"}),children:(b)=>e(c,{id:b,value:Y,onChange:(w)=>re(w.target.value),placeholder:"https://example.com/mcp",className:"font-mono text-xs"})}),e(Ne,{label:"请求头",tip:"随每次请求发送",keyLabel:"头字段",pairs:P,onChange:J,InputComponent:c}),n("div",{className:"flex items-center justify-between gap-4",children:[n("div",{className:"min-w-0",children:[e("span",{className:"block text-[13px] font-medium text-dim",children:"OAuth 2.0 认证"}),e("span",{className:"block truncate text-xs text-faint",children:"自动发现授权端点,使用 PKCE 并刷新令牌"})]}),e(D,{checked:U,onCheckedChange:L,label:"启用 OAuth 2.0"})]}),U&&n(f,{children:[e(p,{label:"Client ID",aside:e(K,{children:"留空自动动态注册(DCR)"}),children:(b)=>e(c,{id:b,value:R,onChange:(w)=>ae(w.target.value),placeholder:"留空自动动态注册",className:"font-mono text-xs"})}),e(p,{label:"Client Secret",aside:e(K,{children:"留空保持不变"}),children:(b)=>e(c,{id:b,type:"password",autoComplete:"off",value:oe,onChange:(w)=>_(w.target.value),placeholder:"••••••••",className:"font-mono text-xs"})}),e(p,{label:"Scope",aside:e(K,{children:"选填授权范围"}),children:(b)=>e(c,{id:b,value:a,onChange:(w)=>C(w.target.value),placeholder:"repo read:org",className:"font-mono text-xs"})})]})]}),n("div",{className:"space-y-3 border-t border-line/60 pt-3",children:[n("button",{type:"button","aria-expanded":l,className:"flex w-full cursor-pointer items-center gap-1.5 text-[13px] font-medium text-dim transition-colors hover:text-ink",onClick:()=>se(!l),children:[e(st,{className:`size-3.5 transition-transform ${l?"rotate-90":""}`}),"高级设置",e("span",{className:"truncate text-xs font-normal text-faint",children:"加载时机、超时"})]}),l&&n("div",{className:"grid grid-cols-2 gap-3 max-sm:grid-cols-1",children:[e(p,{label:"加载时机",aside:e(K,{children:"延迟 = 按需加载"}),children:()=>e(h,{value:x,onChange:(b)=>W(b),className:"w-full [&>button]:flex-1",options:[{value:"default",label:"默认"},{value:"defer",label:"延迟"},{value:"always",label:"常驻"}]})}),e(p,{label:"超时(毫秒)",aside:e(K,{children:"留空用默认"}),children:(b)=>e(c,{id:b,value:z,onChange:(w)=>le(w.target.value),placeholder:"默认",className:"font-mono text-xs"})})]})]}),de&&n("div",{role:"alert",className:M("callout.base",M("callout.danger"),"px-3 py-2.5 text-xs"),children:[e(te,{className:"mt-0.5 size-3.5 shrink-0"}),e("span",{className:"min-w-0 break-words",children:de})]})]})})}var Q="global";function at({connection:t}){let{Button:m,Select:h,CatalogRow:S,style:v,useTheme:p}=y();p();let[c,D]=r(""),[M,V]=r(),[d,X]=r([]),[I,u]=r(Q),[E,k]=r(),[B,Y]=r(!1),[re,F]=r(),[T,P]=r(!1),J=i(!1),[j,U]=r(),L=i(0),R=g(async()=>{let a=++L.current;Y(!0);try{let C=I===Q?"":`?projectID=${encodeURIComponent(I)}`,[x,W]=await Promise.all([t.request(`/api/mcp${C}`),t.request("/api/mcp/projects")]);if(a!==L.current)return;if(V(x),X(W),I!==Q&&!W.some((z)=>z.id===I))u(Q);k(void 0)}catch(C){if(a===L.current)k(C instanceof Error?C.message:"读取失败")}finally{if(a===L.current)Y(!1)}},[t,I]);o(()=>(R(),()=>{L.current++}),[R]);async function ae(a,C){if(J.current)return;J.current=!0,P(!0);let x=L.current;try{let W=a.projectID?`?projectID=${encodeURIComponent(a.projectID)}`:"",z=await t.request(`/api/mcp/${encodeURIComponent(a.name)}${W}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({...a.config,enabled:C})});if(x===L.current)V((le)=>le?.map((l)=>l.name===z.name&&l.projectID===z.projectID?z:l))}finally{J.current=!1,P(!1)}}let oe=M?.filter((a)=>`${a.name} ${pe(a.config)}`.toLowerCase().includes(c.trim().toLowerCase())),_=M?.find((a)=>a.name===re);return n("div",{className:"min-w-0 space-y-6",children:[n("section",{className:"min-w-0",children:[n("div",{className:"mb-2.5 flex flex-wrap items-end justify-between gap-3 px-0.5",children:[n("div",{className:"min-w-0 flex-1 basis-48",children:[e("h2",{className:v("settings.groupTitle"),children:"MCP 服务器"}),e("p",{className:v("settings.groupDesc"),children:"外部工具与数据源管理"})]}),n("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[e(h,{value:I,disabled:B,onValueChange:(a)=>{F(void 0),U(void 0),V(void 0),u(a)},groups:[{options:[{value:Q,label:"全局"}]},...Pr(d)],className:"w-44"}),e(m,{variant:"ghost",disabled:B,onClick:R,className:"h-9 px-2.5 text-xs",children:e(ne,{className:`size-3.5 ${B?"animate-spin":""}`})}),n(m,{variant:"secondary",onClick:()=>U({}),className:"h-9 px-2.5 text-xs",children:[e(ce,{className:"size-3.5 mr-1"}),"添加服务器"]})]})]}),E&&n("div",{role:"alert",className:v("callout.base",v("callout.danger"),"mb-3 flex-wrap items-center justify-between"),children:[n("p",{className:"min-w-0 flex-1 break-words text-sm text-danger",children:["无法读取 MCP 服务器:",E]}),e(m,{disabled:B,onClick:R,children:"重试"})]}),e(Or,{label:"搜索 MCP 服务器",placeholder:"搜索服务器",value:c,onChange:D}),e("div",{className:v("settings.groupBox"),children:!M?e($r,{}):oe?.length===0?e("p",{className:"p-4 text-sm text-dim",children:"没有匹配的 MCP 服务器"}):e("ul",{className:"divide-y divide-line",children:oe?.map((a)=>{let C=a.config.enabled===!1,x=a.scope==="file";return e("li",{children:e(S,{name:a.name,selectLabel:`查看 ${a.name}`,onSelect:()=>F(a.name),title:x?"来自项目的 .mcp.json,配置只读,可查看工具与重启":void 0,description:e("span",{className:"font-mono text-[11px]",children:pe(a.config)}),icon:a.config.type==="local"?e(Ke,{}):e(Te,{}),inactive:C,aside:n(f,{children:[e("span",{className:v("control.badge"),children:ge(a.scope)}),e(he,{info:a})]}),toggle:x?void 0:{checked:!C,label:`启用服务器 ${a.name}`,disabled:T||B,onCheckedChange:(W)=>ae(a,W)}})},a.name)})})})]}),_&&!j&&e(xe,{connection:t,info:_,toggling:T,onToggle:(a)=>ae(_,a),projectID:I===Q?void 0:I,onClose:()=>F(void 0),onEdit:()=>U({info:_}),onChanged:(a)=>a?V((C)=>C?.map((x)=>x.name===a.name?a:x)):R()},`${_.projectID}:${_.name}`),j&&e(Ie,{connection:t,projectID:I===Q?void 0:I,existing:j.info,taken:(M??[]).filter((a)=>a.scope===(I===Q?"global":"project")).map((a)=>a.name),onClose:()=>U(void 0),onSaved:()=>{U(void 0),R()}})]})}export{at as McpSection};
@@ -1 +0,0 @@
1
- import{ci}from"./chunk-xbyrgyy0.js";export{ci as default};
@@ -1 +0,0 @@
1
- import{Ii}from"./chunk-n9v14vyd.js";export{Ii as createArchitectureServices};
@@ -1 +0,0 @@
1
- import{yi}from"./chunk-fj753yzt.js";export{yi as default};
@@ -1 +0,0 @@
1
- import{Ai}from"./chunk-n9v14vyd.js";export{Ai as createPacketServices};
@@ -1 +0,0 @@
1
- import{t,a}from"./chunk-b5zf1hs3.js";import{J,Dt,Mt}from"./chunk-rdr6wt22.js";import{H}from"./chunk-jyf7a7yp.js";import{ar,_t}from"./chunk-n9v14vyd.js";var l=ar().RailroadAbnf.parser.LangiumParser,s=t((e)=>{let r=e.alternatives.map(p);if(r.length===1)return r[0];return{type:"choice",alternatives:r}},"transformAlternation"),p=t((e)=>{let r=e.elements.map(f);if(r.length===1)return r[0];return{type:"sequence",elements:r}},"transformConcatenation"),u=t((e)=>{if(e.includes("*")){let[n,o]=e.split("*"),i=n?parseInt(n,10):0,m=o?parseInt(o,10):1/0;return{min:i,max:m}}let r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),f=t((e)=>{let r=c(e.primary);if(!e.repeat)return r;let{min:n,max:o}=u(e.repeat);if(n===0&&o===1)return{type:"optional",element:r};return{type:"repetition",element:r,min:n,max:o}},"transformElement"),c=t((e)=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return s(e.element);case"AbnfOptionalGroup":return{type:"optional",element:s(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),d=t((e)=>({name:e.name,definition:s(e.definition)}),"transformRule"),v=t((e)=>{if(H(e,J),e.title)J.setTitle(e.title);e.rules.map((r)=>J.addRule(d(r)))},"populateDb"),g={parse:t((e)=>{J.clear(),a.debug("[ABNF Parser] Starting Langium parse");let r=l.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new _t(r);let n=r.value;a.debug("[ABNF Parser] Parsed rules:",n.rules.length),v(n),a.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:J}},E={parser:g,db:J,renderer:Mt,styles:Dt};export{E as diagram};
@@ -1 +0,0 @@
1
- import{bi}from"./chunk-6jb2zyp6.js";export{bi as default};
@@ -1 +0,0 @@
1
- import{xi}from"./chunk-885kpj14.js";export{xi as default};
@@ -1 +0,0 @@
1
- import{Ti}from"./chunk-n9v14vyd.js";export{Ti as createGitGraphServices};
@@ -1 +0,0 @@
1
- import{Di}from"./chunk-n9v14vyd.js";export{Di as createEventModelingServices};
@@ -1 +0,0 @@
1
- import{Ri}from"./chunk-n9v14vyd.js";export{Ri as createPieServices};
@@ -1,2 +0,0 @@
1
- import{z,De}from"./chunk-b5zf1hs3.js";var n=(r,o)=>z.lang.round(De.parse(r)[o]),Bt=n;
2
- export{Bt};
@@ -1 +0,0 @@
1
- import{Ci}from"./chunk-n9v14vyd.js";export{Ci as createWardleyServices};
@@ -1 +0,0 @@
1
- import{Ei}from"./chunk-n9v14vyd.js";export{Ei as createInfoServices};
@@ -1 +0,0 @@
1
- import{Xn}from"./chunk-7tkgbbf9.js";export{Xn as default};
@@ -1,34 +0,0 @@
1
- import{t,X,vr,u,d,M,x,F,C,S,E,T,A,L,R,p,V,U,m}from"./chunk-b5zf1hs3.js";var fe=(e,s)=>vr(e,"a",-s),wt=fe;function It(e,s){let i=de(e),n=i.filter((c)=>he(c,e)),r=0,o=0,a=[];if(n.length>1){let c=Kt(n);for(let h=0;h<n.length;++h){let l=n[h];l.angle=Math.atan2(l.x-c.x,l.y-c.y)}n.sort((h,l)=>l.angle-h.angle);let g=n[n.length-1];for(let h=0;h<n.length;++h){let l=n[h];o+=(g.x+l.x)*(l.y-g.y);let I={x:(l.x+g.x)/2,y:(l.y+g.y)/2},b=null;for(let z=0;z<l.parentIndex.length;++z)if(g.parentIndex.includes(l.parentIndex[z])){let w=e[l.parentIndex[z]],j=Math.atan2(l.x-w.x,l.y-w.y),G=Math.atan2(g.x-w.x,g.y-w.y),B=G-j;if(B<0)B+=2*Math.PI;let P=G-B/2,v=at(I,{x:w.x+w.radius*Math.sin(P),y:w.y+w.radius*Math.cos(P)});if(v>w.radius*2)v=w.radius*2;if(b==null||b.width>v)b={circle:w,width:v,p1:l,p2:g,large:v>w.radius,sweep:!0}}if(b!=null)a.push(b),r+=Tt(b.circle.radius,b.width),g=l}}else{let c=e[0];for(let h=1;h<e.length;++h)if(e[h].radius<c.radius)c=e[h];let g=!1;for(let h=0;h<e.length;++h)if(at(e[h],c)>Math.abs(c.radius-e[h].radius)){g=!0;break}if(g)r=o=0;else r=c.radius*c.radius*Math.PI,a.push({circle:c,p1:{x:c.x,y:c.y+c.radius},p2:{x:c.x-0.0000000001,y:c.y+c.radius},width:c.radius*2,large:!0,sweep:!0})}if(o/=2,s)s.area=r+o,s.arcArea=r,s.polygonArea=o,s.arcs=a,s.innerPoints=n,s.intersectionPoints=i;return r+o}function he(e,s){return s.every((i)=>at(e,i)<i.radius+0.0000000001)}function de(e){let s=[];for(let i=0;i<e.length;++i)for(let n=i+1;n<e.length;++n){let r=Wt(e[i],e[n]);for(let o of r)o.parentIndex=[i,n],s.push(o)}return s}function Tt(e,s){return e*e*Math.acos(1-s/e)-(e-s)*Math.sqrt(s*(2*e-s))}function at(e,s){return Math.sqrt((e.x-s.x)*(e.x-s.x)+(e.y-s.y)*(e.y-s.y))}function Nt(e,s,i){if(i>=e+s)return 0;if(i<=Math.abs(e-s))return Math.PI*Math.min(e,s)*Math.min(e,s);let n=e-(i*i-s*s+e*e)/(2*i),r=s-(i*i-e*e+s*s)/(2*i);return Tt(e,n)+Tt(s,r)}function Wt(e,s){let i=at(e,s),n=e.radius,r=s.radius;if(i>=n+r||i<=Math.abs(n-r))return[];let o=(n*n-r*r+i*i)/(2*i),a=Math.sqrt(n*n-o*o),c=e.x+o*(s.x-e.x)/i,g=e.y+o*(s.y-e.y)/i,h=-(s.y-e.y)*(a/i),l=-(s.x-e.x)*(a/i);return[{x:c+h,y:g-l},{x:c-h,y:g+l}]}function Kt(e){let s={x:0,y:0};for(let i of e)s.x+=i.x,s.y+=i.y;return s.x/=e.length,s.y/=e.length,s}function ge(e,s,i,n){n=n||{};let r=n.maxIterations||100,o=n.tolerance||0.0000000001,a=e(s),c=e(i),g=i-s;if(a*c>0)throw"Initial bisect points must have opposite signs";if(a===0)return s;if(c===0)return i;for(let h=0;h<r;++h){g/=2;let l=s+g,I=e(l);if(I*a>=0)s=l;if(Math.abs(g)<o||I===0)return l}return s+g}function zt(e){let s=Array(e);for(let i=0;i<e;++i)s[i]=0;return s}function Ut(e,s){return zt(e).map(()=>zt(s))}function mt(e,s){let i=0;for(let n=0;n<e.length;++n)i+=e[n]*s[n];return i}function At(e){return Math.sqrt(mt(e,e))}function Ct(e,s,i){for(let n=0;n<s.length;++n)e[n]=s[n]*i}function xt(e,s,i,n,r){for(let o=0;o<e.length;++o)e[o]=s*i[o]+n*r[o]}function Ht(e,s,i){i=i||{};let n=i.maxIterations||s.length*200,r=i.nonZeroDelta||1.05,o=i.zeroDelta||0.001,a=i.minErrorDelta||0.000001,c=i.minErrorDelta||0.00001,g=i.rho!==void 0?i.rho:1,h=i.chi!==void 0?i.chi:2,l=i.psi!==void 0?i.psi:-0.5,I=i.sigma!==void 0?i.sigma:0.5,b,z=s.length,w=Array(z+1);w[0]=s,w[0].fx=e(s),w[0].id=0;for(let D=0;D<z;++D){let f=s.slice();f[D]=f[D]?f[D]*r:o,w[D+1]=f,w[D+1].fx=e(f),w[D+1].id=D+1}function j(D){for(let f=0;f<D.length;f++)w[z][f]=D[f];w[z].fx=D.fx}let G=(D,f)=>D.fx-f.fx,B=s.slice(),P=s.slice(),v=s.slice(),_=s.slice();for(let D=0;D<n;++D){if(w.sort(G),i.history){let k=w.map((y)=>{let H=y.slice();return H.fx=y.fx,H.id=y.id,H});k.sort((y,H)=>y.id-H.id),i.history.push({x:w[0].slice(),fx:w[0].fx,simplex:k})}b=0;for(let k=0;k<z;++k)b=Math.max(b,Math.abs(w[0][k]-w[1][k]));if(Math.abs(w[0].fx-w[z].fx)<a&&b<c)break;for(let k=0;k<z;++k){B[k]=0;for(let y=0;y<z;++y)B[k]+=w[y][k];B[k]/=z}let f=w[z];if(xt(P,1+g,B,-g,f),P.fx=e(P),P.fx<w[0].fx)if(xt(_,1+h,B,-h,f),_.fx=e(_),_.fx<P.fx)j(_);else j(P);else if(P.fx>=w[z-1].fx){let k=!1;if(P.fx>f.fx)if(xt(v,1+l,B,-l,f),v.fx=e(v),v.fx<f.fx)j(v);else k=!0;else if(xt(v,1-l*g,B,l*g,f),v.fx=e(v),v.fx<P.fx)j(v);else k=!0;if(k){if(I>=1)break;for(let y=1;y<w.length;++y)xt(w[y],1-I,w[0],I,w[y]),w[y].fx=e(w[y])}}else j(P)}return w.sort(G),{fx:w[0].fx,x:w[0]}}function xe(e,s,i,n,r,o,a){let c=i.fx,g=mt(i.fxprime,s),h=c,l=c,I=g,b=0;r=r||1,o=o||0.000001,a=a||0.1;function z(w,j,G){for(let B=0;B<16;++B)if(r=(w+j)/2,xt(n.x,1,i.x,r,s),h=n.fx=e(n.x,n.fxprime),I=mt(n.fxprime,s),h>c+o*r*g||h>=G)j=r;else{if(Math.abs(I)<=-a*g)return r;if(I*(j-w)>=0)j=w;w=r,G=h}return 0}for(let w=0;w<10;++w){if(xt(n.x,1,i.x,r,s),h=n.fx=e(n.x,n.fxprime),I=mt(n.fxprime,s),h>c+o*r*g||w&&h>=l)return z(b,r,l);if(Math.abs(I)<=-a*g)return r;if(I>=0)return z(r,b,h);l=h,b=r,r*=2}return r}function ye(e,s,i){let n={x:s.slice(),fx:0,fxprime:s.slice()},r={x:s.slice(),fx:0,fxprime:s.slice()},o=s.slice(),a,c,g=1,h;i=i||{},h=i.maxIterations||s.length*20,n.fx=e(n.x,n.fxprime),a=n.fxprime.slice(),Ct(a,n.fxprime,-1);for(let l=0;l<h;++l){if(g=xe(e,a,n,r,g),i.history)i.history.push({x:n.x.slice(),fx:n.fx,fxprime:n.fxprime.slice(),alpha:g});if(!g)Ct(a,n.fxprime,-1);else{xt(o,1,r.fxprime,-1,n.fxprime);let I=mt(n.fxprime,n.fxprime),b=Math.max(0,mt(o,r.fxprime)/I);xt(a,b,a,-1,r.fxprime),c=n,n=r,r=c}if(At(n.fxprime)<=0.00001)break}if(i.history)i.history.push({x:n.x.slice(),fx:n.fx,fxprime:n.fxprime.slice(),alpha:g});return n}function Yt(e,s={}){s.maxIterations=s.maxIterations||500;let i=s.initialLayout||ve,n=s.lossFunction||bt,r=pe(e,s),o=i(r,s),a=Object.keys(o),c=[];for(let l of a)c.push(o[l].x),c.push(o[l].y);let h=Ht((l)=>{let I={};for(let b=0;b<a.length;++b){let z=a[b];I[z]={x:l[2*b],y:l[2*b+1],radius:o[z].radius}}return n(I,r)},c,s).x;for(let l=0;l<a.length;++l){let I=a[l];o[I].x=h[2*l],o[I].y=h[2*l+1]}return o}var Xt=0.0000000001;function Dt(e,s,i){if(Math.min(e,s)*Math.min(e,s)*Math.PI<=i+Xt)return Math.abs(e-s);return ge((n)=>Nt(e,s,n)-i,0,e+s)}function pe(e,s={}){let i=s.distinct,n=e.map((c)=>Object.assign({},c));function r(c){return c.join(";")}if(i){let c=new Map;for(let g of n)for(let h=0;h<g.sets.length;h++){let l=String(g.sets[h]);c.set(l,g.size+(c.get(l)||0));for(let I=h+1;I<g.sets.length;I++){let b=String(g.sets[I]),z=`${l};${b}`,w=`${b};${l}`;c.set(z,g.size+(c.get(z)||0)),c.set(w,g.size+(c.get(w)||0))}}for(let g of n)if(g.sets.length<3)g.size=c.get(r(g.sets))}let o=[],a=new Set;for(let c of n)if(c.sets.length===1)o.push(c.sets[0]);else if(c.sets.length===2){let g=c.sets[0],h=c.sets[1];a.add(r(c.sets)),a.add(r([h,g]))}o.sort((c,g)=>c===g?0:c<g?-1:1);for(let c=0;c<o.length;++c){let g=o[c];for(let h=c+1;h<o.length;++h){let l=o[h];if(!a.has(r([g,l])))n.push({sets:[g,l],size:0})}}return n}function me(e,s,i){let n=Ut(s.length,s.length),r=Ut(s.length,s.length);return e.filter((o)=>o.sets.length===2).forEach((o)=>{let a=i[o.sets[0]],c=i[o.sets[1]],g=Math.sqrt(s[a].size/Math.PI),h=Math.sqrt(s[c].size/Math.PI),l=Dt(g,h,o.size);n[a][c]=n[c][a]=l;let I=0;if(o.size+0.0000000001>=Math.min(s[a].size,s[c].size))I=1;else if(o.size<=0.0000000001)I=-1;r[a][c]=r[c][a]=I}),{distances:n,constraints:r}}function be(e,s,i,n){for(let o=0;o<s.length;++o)s[o]=0;let r=0;for(let o=0;o<i.length;++o){let a=e[2*o],c=e[2*o+1];for(let g=o+1;g<i.length;++g){let h=e[2*g],l=e[2*g+1],I=i[o][g],b=n[o][g],z=(h-a)*(h-a)+(l-c)*(l-c),w=Math.sqrt(z),j=z-I*I;if(b>0&&w<=I||b<0&&w>=I)continue;r+=2*j*j,s[2*o]+=4*j*(a-h),s[2*o+1]+=4*j*(c-l),s[2*g]+=4*j*(h-a),s[2*g+1]+=4*j*(l-c)}}return r}function ve(e,s={}){let i=Ie(e,s),n=s.lossFunction||bt;if(e.length>=8){let r=ke(e,s),o=n(r,e),a=n(i,e);if(o+0.00000001<a)i=r}return i}function ke(e,s={}){let i=s.restarts||10,n=[],r={};for(let b of e)if(b.sets.length===1)r[b.sets[0]]=n.length,n.push(b);let{distances:o,constraints:a}=me(e,n,r),c=At(o.map(At))/o.length;o=o.map((b)=>b.map((z)=>z/c));let g=(b,z)=>be(b,z,o,a),h=null;for(let b=0;b<i;++b){let z=zt(o.length*2).map(Math.random),w=ye(g,z,s);if(!h||w.fx<h.fx)h=w}let l=h.x,I={};for(let b=0;b<n.length;++b){let z=n[b];I[z.sets[0]]={x:l[2*b]*c,y:l[2*b+1]*c,radius:Math.sqrt(z.size/Math.PI)}}if(s.history)for(let b of s.history)Ct(b.x,c);return I}function Ie(e,s){let i=s&&s.lossFunction?s.lossFunction:bt,n={},r={};for(let I of e)if(I.sets.length===1){let b=I.sets[0];n[b]={x:10000000000,y:10000000000,rowid:n.length,size:I.size,radius:Math.sqrt(I.size/Math.PI)},r[b]=[]}e=e.filter((I)=>I.sets.length===2);for(let I of e){let b=I.weight!=null?I.weight:1,z=I.sets[0],w=I.sets[1];if(I.size+Xt>=Math.min(n[z].size,n[w].size))b=0;r[z].push({set:w,size:I.size,weight:b}),r[w].push({set:z,size:I.size,weight:b})}let o=[];Object.keys(r).forEach((I)=>{let b=0;for(let z=0;z<r[I].length;++z)b+=r[I][z].size*r[I][z].weight;o.push({set:I,size:b})});function a(I,b){return b.size-I.size}o.sort(a);let c={};function g(I){return I.set in c}function h(I,b){n[b].x=I.x,n[b].y=I.y,c[b]=!0}h({x:0,y:0},o[0].set);for(let I=1;I<o.length;++I){let b=o[I].set,z=r[b].filter(g),w=n[b];if(z.sort(a),z.length===0)throw"ERROR: missing pairwise overlap information";let j=[];for(var l=0;l<z.length;++l){let P=n[z[l].set],v=Dt(w.radius,P.radius,z[l].size);j.push({x:P.x+v,y:P.y}),j.push({x:P.x-v,y:P.y}),j.push({y:P.y+v,x:P.x}),j.push({y:P.y-v,x:P.x});for(let _=l+1;_<z.length;++_){let D=n[z[_].set],f=Dt(w.radius,D.radius,z[_].size),k=Wt({x:P.x,y:P.y,radius:v},{x:D.x,y:D.y,radius:f});j.push(...k)}}let G=100000000000000000000000000000000000000000000000000,B=j[0];for(let P of j){n[b].x=P.x,n[b].y=P.y;let v=i(n,e);if(v<G)G=v,B=P}h(B,b)}return n}function bt(e,s){let i=0;for(let n of s){if(n.sets.length===1)continue;let r;if(n.sets.length===2){let a=e[n.sets[0]],c=e[n.sets[1]];r=Nt(a.radius,c.radius,at(a,c))}else r=It(n.sets.map((a)=>e[a]));let o=n.weight!=null?n.weight:1;i+=o*(r-n.size)*(r-n.size)}return i}function Zt(e,s){let i=0;for(let n of s){if(n.sets.length===1)continue;let r;if(n.sets.length===2){let c=e[n.sets[0]],g=e[n.sets[1]];r=Nt(c.radius,g.radius,at(c,g))}else r=It(n.sets.map((c)=>e[c]));let o=n.weight!=null?n.weight:1,a=Math.log((r+1)/(n.size+1));i+=o*a*a}return i}function Me(e,s,i){if(i==null)e.sort((r,o)=>o.radius-r.radius);else e.sort(i);if(e.length>0){let r=e[0].x,o=e[0].y;for(let a of e)a.x-=r,a.y-=o}if(e.length===2){if(at(e[0],e[1])<Math.abs(e[1].radius-e[0].radius))e[1].x=e[0].x+e[0].radius-e[1].radius-0.0000000001,e[1].y=e[0].y}if(e.length>1){let r=Math.atan2(e[1].x,e[1].y)-s,o=Math.cos(r),a=Math.sin(r);for(let c of e){let{x:g,y:h}=c;c.x=o*g-a*h,c.y=a*g+o*h}}if(e.length>2){let r=Math.atan2(e[2].x,e[2].y)-s;while(r<0)r+=2*Math.PI;while(r>2*Math.PI)r-=2*Math.PI;if(r>Math.PI){let o=e[1].y/(0.0000000001+e[1].x);for(let a of e){var n=(a.x+o*a.y)/(1+o*o);a.x=2*n-a.x,a.y=2*n*o-a.y}}}}function Se(e){e.forEach((r)=>{r.parent=r});function s(r){if(r.parent!==r)r.parent=s(r.parent);return r.parent}function i(r,o){let a=s(r),c=s(o);a.parent=c}for(let r=0;r<e.length;++r)for(let o=r+1;o<e.length;++o){let a=e[r].radius+e[o].radius;if(at(e[r],e[o])+0.0000000001<a)i(e[o],e[r])}let n=new Map;for(let r=0;r<e.length;++r){let o=s(e[r]).parent.setid;if(!n.has(o))n.set(o,[]);n.get(o).push(e[r])}return e.forEach((r)=>{delete r.parent}),Array.from(n.values())}function Rt(e){let s=(i)=>{let n=e.reduce((o,a)=>Math.max(o,a[i]+a.radius),Number.NEGATIVE_INFINITY),r=e.reduce((o,a)=>Math.min(o,a[i]-a.radius),Number.POSITIVE_INFINITY);return{max:n,min:r}};return{xRange:s("x"),yRange:s("y")}}function Jt(e,s,i){if(s==null)s=Math.PI/2;let n=te(e).map((h)=>Object.assign({},h)),r=Se(n);for(let h of r){Me(h,s,i);let l=Rt(h);h.size=(l.xRange.max-l.xRange.min)*(l.yRange.max-l.yRange.min),h.bounds=l}r.sort((h,l)=>l.size-h.size),n=r[0];let o=n.bounds,a=(o.xRange.max-o.xRange.min)/50;function c(h,l,I){if(!h)return;let b=h.bounds,z,w;if(l)z=o.xRange.max-b.xRange.min+a;else{z=o.xRange.max-b.xRange.max;let j=(b.xRange.max-b.xRange.min)/2-(o.xRange.max-o.xRange.min)/2;if(j<0)z+=j}if(I)w=o.yRange.max-b.yRange.min+a;else{w=o.yRange.max-b.yRange.max;let j=(b.yRange.max-b.yRange.min)/2-(o.yRange.max-o.yRange.min)/2;if(j<0)w+=j}for(let j of h)j.x+=z,j.y+=w,n.push(j)}let g=1;while(g<r.length)c(r[g],!0,!1),c(r[g+1],!1,!0),c(r[g+2],!0,!0),g+=3,o=Rt(n);return $t(n)}function Qt(e,s,i,n,r){let o=te(e);s-=2*n,i-=2*n;let{xRange:a,yRange:c}=Rt(o);if(a.max===a.min||c.max===c.min)return console.log("not scaling solution: zero size detected"),e;let g,h;if(r){let z=Math.sqrt(r/Math.PI)*2;g=s/z,h=i/z}else g=s/(a.max-a.min),h=i/(c.max-c.min);let l=Math.min(h,g),I=(s-(a.max-a.min)*l)/2,b=(i-(c.max-c.min)*l)/2;return $t(o.map((z)=>({radius:l*z.radius,x:n+I+(z.x-a.min)*l,y:n+b+(z.y-c.min)*l,setid:z.setid})))}function $t(e){let s={};for(let i of e)s[i.setid]=i;return s}function te(e){return Object.keys(e).map((i)=>Object.assign(e[i],{setid:i}))}function ee(e={}){let s=!1,i=600,n=350,r=15,o=1000,a=Math.PI/2,c=!0,g=null,h=!0,l=!0,I=null,b=null,z=!1,w=null,j=e&&e.symmetricalTextCentre?e.symmetricalTextCentre:!1,G={},B=e&&e.colourScheme?e.colourScheme:e&&e.colorScheme?e.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],P=0,v=function(k){if(k in G)return G[k];var y=G[k]=B[P];if(P+=1,P>=B.length)P=0;return y},_=Yt,D=bt;function f(k){let y=k.datum(),H=new Set;y.forEach((N)=>{if(N.size==0&&N.sets.length==1)H.add(N.sets[0])}),y=y.filter((N)=>!N.sets.some((Q)=>H.has(Q)));let O={},Y={};if(y.length>0){let N=_(y,{lossFunction:D,distinct:z});if(c)N=Jt(N,a,b);O=Qt(N,i,n,r,g),Y=se(O,y,j)}let lt={};y.forEach((N)=>{if(N.label)lt[N.sets]=N.label});function st(N){if(N.sets in lt)return lt[N.sets];if(N.sets.length==1)return""+N.sets[0]}k.selectAll("svg").data([O]).enter().append("svg");let J=k.select("svg");if(s)J.attr("viewBox",`0 0 ${i} ${n}`);else J.attr("width",i).attr("height",n);let K={},Z=!1;J.selectAll(".venn-area path").each(function(N){let Q=this.getAttribute("d");if(N.sets.length==1&&Q&&!z)Z=!0,K[N.sets[0]]=Ee(Q)});function q(N){return(Q)=>{let pt=N.sets.map((gt)=>{let dt=K[gt],ot=O[gt];if(!dt)dt={x:i/2,y:n/2,radius:1};if(!ot)ot={x:i/2,y:n/2,radius:1};return{x:dt.x*(1-Q)+ot.x*Q,y:dt.y*(1-Q)+ot.y*Q,radius:dt.radius*(1-Q)+ot.radius*Q}});return Gt(pt,w)}}let tt=J.selectAll(".venn-area").data(y,(N)=>N.sets),it=tt.enter().append("g").attr("class",(N)=>`venn-area venn-${N.sets.length==1?"circle":"intersection"}${N.colour||N.color?" venn-coloured":""}`).attr("data-venn-sets",(N)=>N.sets.join("_")),et=it.append("path"),ct=it.append("text").attr("class","label").text((N)=>st(N)).attr("text-anchor","middle").attr("dy",".35em").attr("x",i/2).attr("y",n/2);if(l)et.style("fill-opacity","0").filter((N)=>N.sets.length==1).style("fill",(N)=>N.colour?N.colour:N.color?N.color:v(N.sets)).style("fill-opacity",".25"),ct.style("fill",(N)=>{if(N.colour||N.color)return"#FFF";if(e.textFill)return e.textFill;return N.sets.length==1?v(N.sets):"#444"});function rt(N){if(typeof N.transition==="function")return N.transition("venn").duration(o);return N}let nt=k;if(Z&&typeof nt.transition==="function")nt=rt(k),nt.selectAll("path").attrTween("d",q);else nt.selectAll("path").attr("d",(N)=>Gt(N.sets.map((Q)=>O[Q])),w);let W=nt.selectAll("text").filter((N)=>(N.sets in Y)).text((N)=>st(N)).attr("x",(N)=>Math.floor(Y[N.sets].x)).attr("y",(N)=>Math.floor(Y[N.sets].y));if(h)if(Z)if("on"in W)W.on("end",_t(O,st));else W.each("end",_t(O,st));else W.each(_t(O,st));let ht=rt(tt.exit()).remove();if(typeof tt.transition==="function")ht.selectAll("path").attrTween("d",q);let ft=ht.selectAll("text").attr("x",i/2).attr("y",n/2);if(I!==null)ct.style("font-size","0px"),W.style("font-size",I),ft.style("font-size","0px");return{circles:O,textCentres:Y,nodes:tt,enter:it,update:nt,exit:ht}}return f.wrap=function(k){if(!arguments.length)return h;return h=k,f},f.useViewBox=function(){return s=!0,f},f.width=function(k){if(!arguments.length)return i;return i=k,f},f.height=function(k){if(!arguments.length)return n;return n=k,f},f.padding=function(k){if(!arguments.length)return r;return r=k,f},f.distinct=function(k){if(!arguments.length)return z;return z=k,f},f.colours=function(k){if(!arguments.length)return v;return v=k,f},f.colors=function(k){if(!arguments.length)return v;return v=k,f},f.fontSize=function(k){if(!arguments.length)return I;return I=k,f},f.round=function(k){if(!arguments.length)return w;return w=k,f},f.duration=function(k){if(!arguments.length)return o;return o=k,f},f.layoutFunction=function(k){if(!arguments.length)return _;return _=k,f},f.normalize=function(k){if(!arguments.length)return c;return c=k,f},f.scaleToFit=function(k){if(!arguments.length)return g;return g=k,f},f.styled=function(k){if(!arguments.length)return l;return l=k,f},f.orientation=function(k){if(!arguments.length)return a;return a=k,f},f.orientationOrder=function(k){if(!arguments.length)return b;return b=k,f},f.lossFunction=function(k){if(!arguments.length)return D;return D=k==="default"?bt:k==="logRatio"?Zt:k,f},f}function _t(e,s){return function(i){let n=this,r=e[i.sets[0]].radius||50,o=s(i)||"",a=o.split(/\s+/).reverse(),c=3,g=(o.length+a.length)/3,h=a.pop(),l=[h],I=0,b=1.1;n.textContent=null;let z=[];function w(v){let _=n.ownerDocument.createElementNS(n.namespaceURI,"tspan");return _.textContent=v,z.push(_),n.append(_),_}let j=w(h);while(!0){if(h=a.pop(),!h)break;l.push(h);let v=l.join(" ");if(j.textContent=v,v.length>g&&j.getComputedTextLength()>r)l.pop(),j.textContent=l.join(" "),l=[h],j=w(h),I++}let G=0.35-I*b/2,B=n.getAttribute("x"),P=n.getAttribute("y");z.forEach((v,_)=>{v.setAttribute("x",B),v.setAttribute("y",P),v.setAttribute("dy",`${G+_*b}em`)})}}function Et(e,s,i){let n=s[0].radius-at(s[0],e);for(let r=1;r<s.length;++r){let o=s[r].radius-at(s[r],e);if(o<=n)n=o}for(let r=0;r<i.length;++r){let o=at(i[r],e)-i[r].radius;if(o<=n)n=o}return n}function ne(e,s,i){let n=[];for(let l of e)n.push({x:l.x,y:l.y}),n.push({x:l.x+l.radius/2,y:l.y}),n.push({x:l.x-l.radius/2,y:l.y}),n.push({x:l.x,y:l.y+l.radius/2}),n.push({x:l.x,y:l.y-l.radius/2});let r=n[0],o=Et(n[0],e,s);for(let l=1;l<n.length;++l){let I=Et(n[l],e,s);if(I>=o)r=n[l],o=I}let a=Ht((l)=>-1*Et({x:l[0],y:l[1]},e,s),[r.x,r.y],{maxIterations:500,minErrorDelta:0.0000000001}).x,c={x:i?0:a[0],y:a[1]},g=!0;for(let l of e)if(at(c,l)>l.radius){g=!1;break}for(let l of s)if(at(c,l)<l.radius){g=!1;break}if(g)return c;if(e.length==1)return{x:e[0].x,y:e[0].y};let h={};if(It(e,h),h.arcs.length===0)return{x:0,y:-1000,disjoint:!0};if(h.arcs.length==1)return{x:h.arcs[0].circle.x,y:h.arcs[0].circle.y};if(s.length)return ne(e,[]);return Kt(h.arcs.map((l)=>l.p1))}function we(e){let s={},i=Object.keys(e);for(let n of i)s[n]=[];for(let n=0;n<i.length;n++){let r=i[n],o=e[r];for(let a=n+1;a<i.length;++a){let c=i[a],g=e[c],h=at(o,g);if(h+g.radius<=o.radius+0.0000000001)s[c].push(r);else if(h+o.radius<=g.radius+0.0000000001)s[r].push(c)}}return s}function se(e,s,i){let n={},r=we(e);for(let o=0;o<s.length;++o){let a=s[o].sets,c={},g={};for(let b=0;b<a.length;++b){c[a[b]]=!0;let z=r[a[b]];for(let w=0;w<z.length;++w)g[z[w]]=!0}let h=[],l=[];for(let b in e)if(b in c)h.push(e[b]);else if(!(b in g))l.push(e[b]);let I=ne(h,l,i);if(n[a]=I,I.disjoint&&s[o].size>0)console.log("WARNING: area "+a+" not represented on screen")}return n}function _e(e,s,i){let n=[];return n.push(`
2
- M`,e,s),n.push(`
3
- m`,-i,0),n.push(`
4
- a`,i,i,0,1,0,i*2,0),n.push(`
5
- a`,i,i,0,1,0,-i*2,0),n.join(" ")}function Ee(e){let s=e.split(" ");return{x:Number.parseFloat(s[1]),y:Number.parseFloat(s[2]),radius:-Number.parseFloat(s[4])}}function ie(e){if(e.length===0)return[];let s={};return It(e,s),s.arcs}function re(e,s){if(e.length===0)return"M 0 0";let i=Math.pow(10,s||0),n=s!=null?(o)=>Math.round(o*i)/i:(o)=>o;if(e.length==1){let o=e[0].circle;return _e(n(o.x),n(o.y),n(o.radius))}let r=[`
6
- M`,n(e[0].p2.x),n(e[0].p2.y)];for(let o of e){let a=n(o.circle.radius);r.push(`
7
- A`,a,a,0,o.large?1:0,o.sweep?1:0,n(o.p1.x),n(o.p1.y))}return r.join(" ")}function Gt(e,s){return re(ie(e),s)}function oe(e,s={}){let{lossFunction:i,layoutFunction:n=Yt,normalize:r=!0,orientation:o=Math.PI/2,orientationOrder:a,width:c=600,height:g=350,padding:h=15,scaleToFit:l=!1,symmetricalTextCentre:I=!1,distinct:b,round:z=2}=s,w=n(e,{lossFunction:i==="default"||!i?bt:i==="logRatio"?Zt:i,distinct:b});if(r)w=Jt(w,o,a);let j=Qt(w,c,g,h,l),G=se(j,e,I),B=new Map(Object.keys(j).map((_)=>[_,{set:_,x:j[_].x,y:j[_].y,radius:j[_].radius}])),P=e.map((_)=>{let D=_.sets.map((y)=>B.get(y)),f=ie(D),k=re(f,z);return{circles:D,arcs:f,path:k,area:_,has:new Set(_.sets)}});function v(_){let D="";for(let f of P)if(f.has.size>_.length&&_.every((k)=>f.has.has(k)))D+=" "+f.path;return D}return P.map(({circles:_,arcs:D,path:f,area:k})=>({data:k,text:G[k.sets],circles:_,arcs:D,path:f,distinctPath:f+v(k.sets)}))}var Ot=function(){var e=t(function(P,v,_,D){for(_=_||{},D=P.length;D--;_[P[D]]=v);return _},"o"),s=[5,8],i=[7,8,11,12,17,19,22,24],n=[1,17],r=[1,18],o=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],a=[1,31],c=[1,39],g=[7,8,11,12,17,19,22,24,27],h=[1,57],l=[1,56],I=[1,58],b=[1,59],z=[1,60],w=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],j={trace:t(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:t(function(v,_,D,f,k,y,H){var O=y.length-1;switch(k){case 1:return y[O-1];case 2:case 3:case 4:this.$=[];break;case 5:y[O-1].push(y[O]),this.$=y[O-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=y[O];break;case 8:f.setDiagramTitle(y[O].substr(6)),this.$=y[O].substr(6);break;case 9:if(f.addSubsetData([y[O]],void 0,void 0),f.setIndentMode)f.setIndentMode(!0);break;case 10:if(f.addSubsetData([y[O-1]],y[O],void 0),f.setIndentMode)f.setIndentMode(!0);break;case 11:if(f.addSubsetData([y[O-2]],void 0,parseFloat(y[O])),f.setIndentMode)f.setIndentMode(!0);break;case 12:if(f.addSubsetData([y[O-3]],y[O-2],parseFloat(y[O])),f.setIndentMode)f.setIndentMode(!0);break;case 13:if(y[O].length<2)throw Error("union requires multiple identifiers");if(f.validateUnionIdentifiers)f.validateUnionIdentifiers(y[O]);if(f.addSubsetData(y[O],void 0,void 0),f.setIndentMode)f.setIndentMode(!0);break;case 14:if(y[O-1].length<2)throw Error("union requires multiple identifiers");if(f.validateUnionIdentifiers)f.validateUnionIdentifiers(y[O-1]);if(f.addSubsetData(y[O-1],y[O],void 0),f.setIndentMode)f.setIndentMode(!0);break;case 15:if(y[O-2].length<2)throw Error("union requires multiple identifiers");if(f.validateUnionIdentifiers)f.validateUnionIdentifiers(y[O-2]);if(f.addSubsetData(y[O-2],void 0,parseFloat(y[O])),f.setIndentMode)f.setIndentMode(!0);break;case 16:if(y[O-3].length<2)throw Error("union requires multiple identifiers");if(f.validateUnionIdentifiers)f.validateUnionIdentifiers(y[O-3]);if(f.addSubsetData(y[O-3],y[O-2],parseFloat(y[O])),f.setIndentMode)f.setIndentMode(!0);break;case 17:case 18:case 19:f.addTextData(y[O-1],y[O],void 0);break;case 20:case 21:f.addTextData(y[O-2],y[O-1],y[O]);break;case 23:f.addStyleData(y[O-1],y[O]);break;case 24:case 25:case 26:var Y=f.getCurrentSets();if(!Y)throw Error("text requires set");f.addTextData(Y,y[O],void 0);break;case 27:case 28:var Y=f.getCurrentSets();if(!Y)throw Error("text requires set");f.addTextData(Y,y[O-1],y[O]);break;case 29:case 41:this.$=[y[O]];break;case 30:case 42:this.$=[...y[O-2],y[O]];break;case 31:this.$=[y[O-2],y[O]];break;case 33:this.$=y[O].join(" ");break;case 34:this.$=[y[O]];break;case 35:y[O-1].push(y[O]),this.$=y[O-1];break;case 43:case 44:this.$=y[O];break}},"anonymous"),table:[e(s,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},e(i,[2,4],{6:5}),e(s,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},e(i,[2,5]),e(i,[2,6]),e(i,[2,7]),e(i,[2,8]),{13:16,20:n,21:r},{13:20,18:19,20:n,21:r},{13:20,18:21,20:n,21:r},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:n,21:r},e(i,[2,9],{14:[1,27],15:[1,28]}),e(o,[2,43]),e(o,[2,44]),e(i,[2,13],{14:[1,29],15:[1,30],27:a}),e(o,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:a},e(i,[2,22]),e(i,[2,24],{14:[1,35]}),e(i,[2,25],{14:[1,36]}),e(i,[2,26]),{20:c,25:37,26:38,27:a},e(i,[2,10],{15:[1,40]}),{16:[1,41]},e(i,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:n,21:r},e(i,[2,17],{14:[1,45]}),e(i,[2,18],{14:[1,46]}),e(i,[2,19]),e(i,[2,27]),e(i,[2,28]),e(i,[2,23],{27:[1,47]}),e(g,[2,29]),{15:[1,48]},{16:[1,49]},e(i,[2,11]),{16:[1,50]},e(i,[2,15]),e(o,[2,42]),e(i,[2,20]),e(i,[2,21]),{20:c,26:51},{16:h,20:l,21:[1,53],28:52,29:54,30:55,31:I,32:b,33:z},e(i,[2,12]),e(i,[2,16]),e(g,[2,30]),e(g,[2,31]),e(g,[2,32]),e(g,[2,33],{30:61,16:h,20:l,31:I,32:b,33:z}),e(w,[2,34]),e(w,[2,36]),e(w,[2,37]),e(w,[2,38]),e(w,[2,39]),e(w,[2,40]),e(w,[2,35])],defaultActions:{6:[2,1]},parseError:t(function(v,_){if(_.recoverable)this.trace(v);else{var D=Error(v);throw D.hash=_,D}},"parseError"),parse:t(function(v){var _=this,D=[0],f=[],k=[null],y=[],H=this.table,O="",Y=0,lt=0,st=0,J=2,K=1,Z=y.slice.call(arguments,1),q=Object.create(this.lexer),tt={yy:{}};for(var it in this.yy)if(Object.prototype.hasOwnProperty.call(this.yy,it))tt.yy[it]=this.yy[it];if(q.setInput(v,tt.yy),tt.yy.lexer=q,tt.yy.parser=this,typeof q.yylloc>"u")q.yylloc={};var et=q.yylloc;y.push(et);var ct=q.options&&q.options.ranges;if(typeof tt.yy.parseError==="function")this.parseError=tt.yy.parseError;else this.parseError=Object.getPrototypeOf(this).parseError;function rt(ut){D.length=D.length-2*ut,k.length=k.length-ut,y.length=y.length-ut}t(rt,"popStack");function nt(){var ut=f.pop()||q.lex()||K;if(typeof ut!=="number"){if(ut instanceof Array)f=ut,ut=f.pop();ut=_.symbols_[ut]||ut}return ut}t(nt,"lex");var W,ht,ft,N,Q,pt,gt={},dt,ot,qt,kt;while(!0){if(ft=D[D.length-1],this.defaultActions[ft])N=this.defaultActions[ft];else{if(W===null||typeof W>"u")W=nt();N=H[ft]&&H[ft][W]}if(typeof N>"u"||!N.length||!N[0]){var St="";kt=[];for(dt in H[ft])if(this.terminals_[dt]&&dt>J)kt.push("'"+this.terminals_[dt]+"'");if(q.showPosition)St="Parse error on line "+(Y+1)+`:
8
- `+q.showPosition()+`
9
- Expecting `+kt.join(", ")+", got '"+(this.terminals_[W]||W)+"'";else St="Parse error on line "+(Y+1)+": Unexpected "+(W==K?"end of input":"'"+(this.terminals_[W]||W)+"'");this.parseError(St,{text:q.match,token:this.terminals_[W]||W,line:q.yylineno,loc:et,expected:kt})}if(N[0]instanceof Array&&N.length>1)throw Error("Parse Error: multiple actions possible at state: "+ft+", token: "+W);switch(N[0]){case 1:if(D.push(W),k.push(q.yytext),y.push(q.yylloc),D.push(N[1]),W=null,!ht){if(lt=q.yyleng,O=q.yytext,Y=q.yylineno,et=q.yylloc,st>0)st--}else W=ht,ht=null;break;case 2:if(ot=this.productions_[N[1]][1],gt.$=k[k.length-ot],gt._$={first_line:y[y.length-(ot||1)].first_line,last_line:y[y.length-1].last_line,first_column:y[y.length-(ot||1)].first_column,last_column:y[y.length-1].last_column},ct)gt._$.range=[y[y.length-(ot||1)].range[0],y[y.length-1].range[1]];if(pt=this.performAction.apply(gt,[O,lt,Y,tt.yy,N[1],k,y].concat(Z)),typeof pt<"u")return pt;if(ot)D=D.slice(0,-1*ot*2),k=k.slice(0,-1*ot),y=y.slice(0,-1*ot);D.push(this.productions_[N[1]][0]),k.push(gt.$),y.push(gt._$),qt=H[D[D.length-2]][D[D.length-1]],D.push(qt);break;case 3:return!0}}return!0},"parse")},G=function(){var P={EOF:1,parseError:t(function(_,D){if(this.yy.parser)this.yy.parser.parseError(_,D);else throw Error(_)},"parseError"),setInput:t(function(v,_){if(this.yy=_||this.yy||{},this._input=v,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges)this.yylloc.range=[0,0];return this.offset=0,this},"setInput"),input:t(function(){var v=this._input[0];this.yytext+=v,this.yyleng++,this.offset++,this.match+=v,this.matched+=v;var _=v.match(/(?:\r\n?|\n).*/g);if(_)this.yylineno++,this.yylloc.last_line++;else this.yylloc.last_column++;if(this.options.ranges)this.yylloc.range[1]++;return this._input=this._input.slice(1),v},"input"),unput:t(function(v){var _=v.length,D=v.split(/(?:\r\n?|\n)/g);this._input=v+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var f=this.match.split(/(?:\r\n?|\n)/g);if(this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),D.length-1)this.yylineno-=D.length-1;var k=this.yylloc.range;if(this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:D?(D.length===f.length?this.yylloc.first_column:0)+f[f.length-D.length].length-D[0].length:this.yylloc.first_column-_},this.options.ranges)this.yylloc.range=[k[0],k[0]+this.yyleng-_];return this.yyleng=this.yytext.length,this},"unput"),more:t(function(){return this._more=!0,this},"more"),reject:t(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
10
- `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:t(function(v){this.unput(this.match.slice(v))},"less"),pastInput:t(function(){var v=this.matched.substr(0,this.matched.length-this.match.length);return(v.length>20?"...":"")+v.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:t(function(){var v=this.match;if(v.length<20)v+=this._input.substr(0,20-v.length);return(v.substr(0,20)+(v.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:t(function(){var v=this.pastInput(),_=Array(v.length+1).join("-");return v+this.upcomingInput()+`
11
- `+_+"^"},"showPosition"),test_match:t(function(v,_){var D,f,k;if(this.options.backtrack_lexer){if(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges)k.yylloc.range=this.yylloc.range.slice(0)}if(f=v[0].match(/(?:\r\n?|\n).*/g),f)this.yylineno+=f.length;if(this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+v[0].length},this.yytext+=v[0],this.match+=v[0],this.matches=v,this.yyleng=this.yytext.length,this.options.ranges)this.yylloc.range=[this.offset,this.offset+=this.yyleng];if(this._more=!1,this._backtrack=!1,this._input=this._input.slice(v[0].length),this.matched+=v[0],D=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input)this.done=!1;if(D)return D;else if(this._backtrack){for(var y in k)this[y]=k[y];return!1}return!1},"test_match"),next:t(function(){if(this.done)return this.EOF;if(!this._input)this.done=!0;var v,_,D,f;if(!this._more)this.yytext="",this.match="";var k=this._currentRules();for(var y=0;y<k.length;y++)if(D=this._input.match(this.rules[k[y]]),D&&(!_||D[0].length>_[0].length)){if(_=D,f=y,this.options.backtrack_lexer)if(v=this.test_match(D,k[y]),v!==!1)return v;else if(this._backtrack){_=!1;continue}else return!1;else if(!this.options.flex)break}if(_){if(v=this.test_match(_,k[f]),v!==!1)return v;return!1}if(this._input==="")return this.EOF;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
12
- `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:t(function(){var _=this.next();if(_)return _;else return this.lex()},"lex"),begin:t(function(_){this.conditionStack.push(_)},"begin"),popState:t(function(){var _=this.conditionStack.length-1;if(_>0)return this.conditionStack.pop();else return this.conditionStack[0]},"popState"),_currentRules:t(function(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1])return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;else return this.conditions.INITIAL.rules},"_currentRules"),topState:t(function(_){if(_=this.conditionStack.length-1-Math.abs(_||0),_>=0)return this.conditionStack[_];else return"INITIAL"},"topState"),pushState:t(function(_){this.begin(_)},"pushState"),stateStackSize:t(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:t(function(_,D,f,k){var y=k;switch(f){case 0:break;case 1:break;case 2:break;case 3:if(_.getIndentMode&&_.getIndentMode())return _.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 4:break;case 5:if(_.setIndentMode)_.setIndentMode(!1);this.begin("INITIAL"),this.unput(D.yytext);break;case 6:return this.begin("bol"),8;break;case 7:break;case 8:break;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(_.consumeIndentText)_.consumeIndentText=!1;else return 19;break;case 15:return 24;case 16:return D.yytext=D.yytext.slice(2,-2),14;break;case 17:return D.yytext=D.yytext.slice(1,-1).trim(),14;break;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};return P}();j.lexer=G;function B(){this.yy={}}return t(B,"Parser"),B.prototype=j,j.Parser=B,new B}();Ot.parser=Ot;var ze=Ot,Lt=[],jt=[],Ft=[],Pt=new Set,Vt,Bt=!1,Ae=t((e,s,i)=>{let n=Mt(e).sort(),r=i??10/Math.pow(e.length,2);if(Vt=n,n.length===1)Pt.add(n[0]);Lt.push({sets:n,size:r,label:s?vt(s):void 0})},"addSubsetData"),Ce=t(()=>Lt,"getSubsetData"),vt=t((e)=>{let s=e.trim();if(s.length>=2&&s.startsWith('"')&&s.endsWith('"'))return s.slice(1,-1);return s},"normalizeText"),De=t((e)=>e?vt(e):e,"normalizeStyleValue"),Re=t((e,s,i)=>{let n=vt(s);jt.push({sets:Mt(e).sort(),id:n,label:i?vt(i):void 0})},"addTextData"),Ne=t((e,s)=>{let i=Mt(e).sort(),n={};for(let[r,o]of s)n[r]=De(o)??o;Ft.push({targets:i,styles:n})},"addStyleData"),Oe=t(()=>Ft,"getStyleData"),Mt=t((e)=>e.map((s)=>vt(s)),"normalizeIdentifierList"),Le=t((e)=>{let i=Mt(e).filter((n)=>!Pt.has(n));if(i.length>0)throw Error(`unknown set identifier: ${i.join(", ")}`)},"validateUnionIdentifiers"),je=t(()=>jt,"getTextData"),Fe=t(()=>Vt,"getCurrentSets"),Pe=t(()=>Bt,"getIndentMode"),Ve=t((e)=>{Bt=e},"setIndentMode"),Be=M.venn;function ae(){return U(Be,x().venn)}t(ae,"getConfig");var qe=t(()=>{C(),Lt.length=0,jt.length=0,Ft.length=0,Pt.clear(),Vt=void 0,Bt=!1},"customClear"),Ue={getConfig:ae,clear:qe,setAccTitle:S,getAccTitle:E,setDiagramTitle:L,getDiagramTitle:R,getAccDescription:A,setAccDescription:T,addSubsetData:Ae,getSubsetData:Ce,addTextData:Re,addStyleData:Ne,validateUnionIdentifiers:Le,getTextData:je,getStyleData:Oe,getCurrentSets:Fe,getIndentMode:Pe,setIndentMode:Ve},Ge=t((e)=>`
13
- .venn-title {
14
- font-size: 32px;
15
- fill: ${e.vennTitleTextColor};
16
- font-family: ${e.fontFamily};
17
- }
18
-
19
- .venn-circle text {
20
- font-size: 48px;
21
- font-family: ${e.fontFamily};
22
- }
23
-
24
- .venn-intersection text {
25
- font-size: 48px;
26
- fill: ${e.vennSetTextColor};
27
- font-family: ${e.fontFamily};
28
- }
29
-
30
- .venn-text-node {
31
- font-family: ${e.fontFamily};
32
- color: ${e.vennSetTextColor};
33
- }
34
- `,"getStyles"),We=Ge;function le(e){let s=new Map;for(let i of e){let n=i.targets.join("|"),r=s.get(n);if(r)Object.assign(r,i.styles);else s.set(n,{...i.styles})}return s}t(le,"buildStyleByKey");var Ke=t((e,s,i,n)=>{let r=n.db,o=r.getConfig?.(),{themeVariables:a,look:c,handDrawnSeed:g}=x(),h=c==="handDrawn",l=[a.venn1,a.venn2,a.venn3,a.venn4,a.venn5,a.venn6,a.venn7,a.venn8].filter(Boolean),I=r.getDiagramTitle?.(),b=r.getSubsetData(),z=r.getTextData(),w=le(r.getStyleData()),j=ue(b),G=o?.width??800,B=o?.height??450,P=1600,v=G/1600,_=I?48*v:0,D=a.primaryTextColor??a.textColor,f=V(s);if(f.attr("viewBox",`0 0 ${G} ${B}`),I)f.append("text").text(I).attr("class","venn-title").attr("font-size",`${32*v}px`).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*v).style("fill",a.vennTitleTextColor||a.titleColor);let k=p(document.createElement("div")),y=ee().width(G).height(B-_);k.datum(j).call(y);let H=h?m.svg(k.select("svg").node()):void 0,O=oe(j,{width:G,height:B-_,padding:o?.padding??15}),Y=new Map;for(let K of O){let Z=yt([...K.data.sets].sort());Y.set(Z,K)}if(z.length>0)ce(o,Y,k,z,v,w);let lt=X(a.background||"#f4f4f4");if(k.selectAll(".venn-circle").each(function(K,Z){let q=p(this),it=yt([...K.sets].sort()),et=w.get(it),ct=l.length>0?l[Z%l.length]:void 0,rt=et?.fill||ct||a.primaryColor;q.classed(`venn-set-${Z%8}`,!0);let nt=et?.["fill-opacity"]??0.1,W=et?.stroke||rt,ht=et?.["stroke-width"]||`${5*v}`;if(h&&H){let N=Y.get(it);if(N&&N.circles.length>0){let Q=N.circles[0],pt=H.circle(Q.x,Q.y,Q.radius*2,{roughness:0.7,seed:g,fill:wt(rt,0.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:-41+Z*60,stroke:W,strokeWidth:parseFloat(String(ht))});q.select("path").remove(),q.node()?.insertBefore(pt,q.select("text").node())}}else q.select("path").style("fill",rt).style("fill-opacity",nt).style("stroke",W).style("stroke-width",ht).style("stroke-opacity",0.95);let ft=et?.color||(lt?u(rt,30):d(rt,30));q.select("text").style("font-size",`${48*v}px`).style("fill",ft)}),h&&H)k.selectAll(".venn-intersection").each(function(K){let Z=p(this),tt=yt([...K.sets].sort()),it=w.get(tt),et=it?.fill;if(et){let ct=Z.select("path"),rt=ct.attr("d");if(rt){let nt=H.path(rt,{roughness:0.7,seed:g,fill:wt(et,0.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),W=ct.node();W?.parentNode?.insertBefore(nt,W),ct.remove()}}else Z.select("path").style("fill-opacity",0);Z.select("text").style("font-size",`${48*v}px`).style("fill",it?.color??a.vennSetTextColor??D)});else k.selectAll(".venn-intersection text").style("font-size",`${48*v}px`).style("fill",(K)=>{let q=yt([...K.sets].sort());return w.get(q)?.color??a.vennSetTextColor??D}),k.selectAll(".venn-intersection path").style("fill-opacity",(K)=>{let q=yt([...K.sets].sort());return w.get(q)?.fill?1:0}).style("fill",(K)=>{let q=yt([...K.sets].sort());return w.get(q)?.fill??"transparent"});let st=f.append("g").attr("transform",`translate(0, ${_})`),J=k.select("svg").node();if(J&&"childNodes"in J)for(let K of[...J.childNodes])st.node()?.appendChild(K);F(f,B,G,o?.useMaxWidth??!0)},"draw");function yt(e){return e.join("|")}t(yt,"stableSetsKey");function ce(e,s,i,n,r,o){let a=e?.useDebugLayout??!1,g=i.select("svg").append("g").attr("class","venn-text-nodes"),h=new Map;for(let l of n){let I=yt(l.sets),b=h.get(I);if(b)b.push(l);else h.set(I,[l])}for(let[l,I]of h.entries()){let b=s.get(l);if(!b?.text)continue;let z=b.text.x,w=b.text.y,j=Math.min(...b.circles.map((J)=>J.radius)),G=Math.min(...b.circles.map((J)=>J.radius-Math.hypot(z-J.x,w-J.y))),B=Number.isFinite(G)?Math.max(0,G):0;if(B===0&&Number.isFinite(j))B=j*0.6;let P=g.append("g").attr("class","venn-text-area").attr("font-size",`${40*r}px`);if(a)P.append("circle").attr("class","venn-text-debug-circle").attr("cx",z).attr("cy",w).attr("r",B).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*r).attr("stroke-dasharray",`${6*r} ${4*r}`);let v=Math.max(80*r,B*2*0.95),_=Math.max(60*r,B*2*0.95),k=(b.data.label&&b.data.label.length>0?Math.min(32*r,B*0.25):0)+(I.length<=2?30*r:0),y=z-v/2,H=w-_/2+k,O=Math.max(1,Math.ceil(Math.sqrt(I.length))),Y=Math.max(1,Math.ceil(I.length/O)),lt=v/O,st=_/Y;for(let[J,K]of I.entries()){let Z=J%O,q=Math.floor(J/O),tt=y+lt*(Z+0.5),it=H+st*(q+0.5);if(a)P.append("rect").attr("class","venn-text-debug-cell").attr("x",y+lt*Z).attr("y",H+st*q).attr("width",lt).attr("height",st).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*r).attr("stroke-dasharray",`${4*r} ${3*r}`);let et=lt*0.9,ct=st*0.9,rt=P.append("foreignObject").attr("class","venn-text-node-fo").attr("width",et).attr("height",ct).attr("x",tt-et/2).attr("y",it-ct/2).attr("overflow","visible"),nt=o.get(K.id)?.color,W=rt.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(K.label??K.id);if(nt)W.style("color",nt)}}}t(ce,"renderTextNodes");function ue(e){let s=new Set(e.map((r)=>[...r.sets].sort().join("|"))),i=new Map(e.filter((r)=>r.sets.length===1&&r.size!==void 0).map((r)=>[r.sets[0],r.size])),n=[];for(let r of e){if(r.sets.length<3)continue;let o=[...r.sets].sort();for(let a=0;a<o.length-1;a++)for(let c=a+1;c<o.length;c++){let g=[o[a],o[c]],h=g.join("|");if(!s.has(h)){s.add(h);let l=i.get(g[0]),I=i.get(g[1]),b=l!==void 0&&I!==void 0?Math.min(l,I)/4:2.5;n.push({sets:g,size:b,label:""})}}}return n.length>0?[...e,...n]:e}t(ue,"ensurePairwiseSubsets");var He={draw:Ke},rn={parser:ze,db:Ue,renderer:He,styles:We};export{rn as diagram};
@@ -1 +0,0 @@
1
- import{Si}from"./chunk-n9v14vyd.js";export{Si as createCynefinServices};
@@ -1 +0,0 @@
1
- import{g,o,G,i,r,e,n,y,ne}from"./chunk-3k9h7a73.js";import{qt}from"./chunk-mxkbmgcv.js";import"./chunk-cxpnj495.js";var L={config:"自定义路径",env:"环境变量",system:"系统预装"};function F({connection:b}){let{Button:h,Input:P,Switch:v,SettingGroup:C,SettingRow:f,cn:x}=y(),B=G(),[m,N]=r({}),[a,d]=r({}),[l,w]=r(null),[u,A]=r(!0),[k,R]=r(!1),[p,E]=r(!1),[I,c]=r(null),q=i(null),z=(a.executable??"")!==(m.executable??"")||Boolean(a.noSandbox)!==Boolean(m.noSandbox)||Boolean(a.ignoreCertErrors)!==Boolean(m.ignoreCertErrors),O=g(async(t)=>{R(!0);try{let s=await b.request("/api/plugins/browser/status",{signal:t});w(s)}catch(s){if(!t?.aborted)w({available:!1,error:s instanceof Error?s.message:"无法获取浏览器状态"})}finally{if(!t?.aborted)R(!1)}},[b]);o(()=>{let t=new AbortController;return q.current=t,Promise.all([b.request("/api/plugins/browser/settings",{signal:t.signal}),b.request("/api/plugins/browser/status",{signal:t.signal})]).then(([s,S])=>{if(!t.signal.aborted)N(s),d(s),w(S)}).catch((s)=>{if(!t.signal.aborted)c({type:"error",text:s instanceof Error?s.message:"读取浏览器设置失败"})}).finally(()=>{if(!t.signal.aborted)A(!1)}),()=>t.abort()},[b]);let D=async(t)=>{if(t?.preventDefault(),p||u)return;let s=new AbortController;E(!0),c(null);try{if(await b.request("/api/plugins/browser/settings",{method:"PATCH",signal:s.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),!s.signal.aborted)N(a),c({type:"success",text:"设置已保存,将在浏览器进程下次启动时生效。"}),await O(s.signal)}catch(S){if(!s.signal.aborted)c({type:"error",text:S instanceof Error?S.message:"保存设置失败"})}finally{if(!s.signal.aborted)E(!1)}},T=()=>{d(m),c(null)};return n("form",{id:B,onSubmit:D,className:"min-w-0 space-y-5",children:[e(C,{title:"运行环境",children:e(f,{title:n("span",{className:"flex items-center gap-2",children:[e("span",{className:x("size-2 shrink-0 rounded-full",l?.available?"bg-success":"bg-danger")}),l?l.available?"浏览器可用":"未检测到可用浏览器":"正在检测…"]}),description:l&&!l.available&&l.error?e("span",{className:"text-danger",children:l.error}):l?.available&&l.source?`来源:${L[l.source]??l.source}`:void 0,children:n(h,{type:"button",size:"sm",variant:"ghost",disabled:u||k,onClick:()=>void O(),className:"text-dim",children:[e(ne,{className:x("size-3.5",k&&"animate-spin")}),"重新检测"]})})}),n(C,{title:"启动参数",children:[e(f,{vertical:!0,title:"可执行文件路径",description:"留空时自动探测系统浏览器",children:n("div",{className:"flex gap-2",children:[e(P,{id:"browser-executable",disabled:u||p,value:a.executable??"",placeholder:"自动探测",onChange:(t)=>{d({...a,executable:t.target.value}),c(null)}}),a.executable&&e(h,{type:"button",variant:"ghost",size:"sm",disabled:u||p,onClick:()=>{d({...a,executable:""}),c(null)},className:"shrink-0",children:"清空"})]})}),e(f,{title:"禁用沙箱 (--no-sandbox)",description:"容器或 root 环境使用",children:e(v,{label:"禁用沙箱",disabled:u||p,checked:a.noSandbox??!1,onCheckedChange:(t)=>{d({...a,noSandbox:t}),c(null)}})}),e(f,{title:"忽略证书错误 (--ignore-certificate-errors)",description:"跳过自签名与证书有效性检查",children:e(v,{label:"忽略证书错误",disabled:u||p,checked:a.ignoreCertErrors??!1,onCheckedChange:(t)=>{d({...a,ignoreCertErrors:t}),c(null)}})})]}),e(qt,{formID:B,notice:I,dirty:z,busy:u||p,saving:p,onReset:T})]})}export{F as default};
@@ -1 +0,0 @@
1
- import{o,i,r,it,f,e,n,y,s,K,ot,ie,er,Z}from"./chunk-3k9h7a73.js";var pe=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",key:"7n84p3"}]],A=s("at-sign",pe);var ue=[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]],te=s("file-code-2",ue);var xe=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],ne=s("maximize-2",xe);var fe=[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"pqwjuv"}]],X=s("notebook-pen",fe);var be=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],se=s("user",be);var C={approve:{label:"通过",text:"text-success",ring:"ring-success/80",soft:"bg-success/12 text-success"},reject:{label:"反对",text:"text-danger",ring:"ring-danger/80",soft:"bg-danger/12 text-danger"},abstain:{label:"弃权",text:"text-dim",ring:"ring-line-strong",soft:"bg-raised text-dim"},pending:{label:"未表态",text:"text-faint",ring:"ring-line",soft:"bg-raised text-faint"}},ge={thinking:"思考中",reading:"查阅中",speaking:"发言中",idle:"等待中",error:"出错",aborted:"已中止"},U={success:"text-success",warning:"text-warning",danger:"text-danger",neutral:"text-faint"},G={success:"bg-success",warning:"bg-warning",danger:"bg-danger",neutral:"bg-faint"};function q(t){return t==="thinking"||t==="reading"||t==="speaking"}function F(t){let d=q(t.status);return{busy:d,text:d&&t.activeTool?t.activeTool:ge[t.status]}}function Q(t){let d=t.members.filter((v)=>v.verdict==="approve").length,u=t.members.filter((v)=>v.verdict==="reject").length;if(t.state==="running"){if(t.phase==="research")return{tone:"warning",label:"调研中"};if(t.phase==="opening")return{tone:"warning",label:"开场表态"};return{tone:"warning",label:"群聊交流"}}if(t.state==="consensus"){if(d===t.members.length)return{tone:"success",label:"全票通过"};if(u===t.members.length)return{tone:"danger",label:"全票反对"};if(u>d)return{tone:"danger",label:"共识:反对"};return{tone:"success",label:"共识:通过"}}if(t.state==="diverged")return{tone:"warning",label:"存在分歧"};if(t.state==="error")return{tone:"danger",label:"失败"};return{tone:"neutral",label:"已中止"}}function V(t){let d=Math.max(1,Math.round(t/1000));if(d<60)return`${d}s`;return`${Math.floor(d/60)}m ${String(d%60).padStart(2,"0")}s`}var ve={research:"调研",opening:"开场表态",discussion:"群聊交流"};function W(t){let{cn:d}=y(),{room:u}=t,v=Q(u),x=u.state==="running",b=u.research?["research","opening","discussion"]:["opening","discussion"],a=x?b.indexOf(u.phase==="closed"?"discussion":u.phase??"discussion"):-1,c=[...b.map((p,m)=>({key:p,label:ve[p],done:!x||m<a,active:m===a})),{key:"closed",label:x?"结论":v.label,done:!x,active:!1}];return e("ol",{className:d("flex min-w-0 gap-1",t.className),children:c.map((p,m)=>{let N=m===c.length-1&&!x;return n("li",{className:"min-w-0 flex-1",children:[e("span",{className:d("block h-[3px] rounded-full transition-colors duration-300",N?G[v.tone]:p.active?"bg-accent animate-pulse":p.done?"bg-line-strong":"bg-line/60")}),e("span",{className:d("mt-1.5 block truncate text-[11px]",N?d("font-medium",U[v.tone]):p.active?"font-medium text-ink":p.done?"text-dim":"text-faint"),children:p.label})]},p.key)})})}function oe(t){let{Collapsible:d,CollapsibleContent:u,Composer:v,Markdown:x,cn:b,confirm:a}=y(),{room:c,onClose:p}=t,[m,N]=r(!1),[w,M]=r(""),[g,L]=r(!1),[I,O]=r(),[S,H]=r(!1),[E,D]=r(!0),[B,h]=r(),z=i(!1);z.current=B!==void 0;let R=i(null),T=i(null),P=c.state==="running",j=Q(c),re=new Map(c.members.map((l)=>[l.id,l]));o(()=>{let l=(ee)=>{if(ee.key==="Escape"&&!ee.defaultPrevented&&!z.current)N(!0)},k=document.body.style.overflow;return document.body.style.overflow="hidden",window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l),document.body.style.overflow=k}},[]);let Y=c.messages.length;o(()=>{let l=T.current;if(!l||!E||Y===0)return;l.scrollTo({top:l.scrollHeight,behavior:"smooth"})},[Y,E]);let le=async(l)=>{await t.onPost(l),D(!0)},ce=async()=>{if(g)return;if(!await a({title:"中止理事会?",description:"所有成员会立即停止,已有发言保留。",action:"中止",danger:!0}))return;L(!0),O(void 0);try{await t.onAbort()}catch(k){O(k instanceof Error?k.message:"中止理事会失败")}finally{L(!1)}},J=(l)=>{M((k)=>k.includes(`@${l}`)?k:`${k?`${k.trimEnd()} `:""}@${l} `),R.current?.focus()},me=c.members.filter((l)=>l.verdict==="approve").length,de=c.members.filter((l)=>l.verdict==="reject").length,_=c.members.find((l)=>l.id===B);return it(n("div",{role:"dialog","aria-modal":"true","aria-label":`理事会:${c.topic}`,onAnimationEnd:(l)=>{if(m&&l.target===l.currentTarget)p()},className:b("fixed inset-0 z-50 flex flex-col bg-bg pt-[env(safe-area-inset-top)] text-ink",m?"pointer-events-none animate-dialog-out":"animate-dialog-in"),children:[n(d,{open:S,onOpenChange:H,className:"shrink-0 border-b border-line px-4 pt-3 pb-3 sm:px-6",children:[n("div",{className:"flex items-start gap-3",children:[n("div",{className:"min-w-0 flex-1",children:[n("div",{className:"flex items-center gap-3 text-[11px] text-faint",children:[e("span",{className:"font-medium tracking-[0.2em] text-dim",children:"COUNCIL"}),e("span",{className:"tabular-nums",children:V(t.elapsedMs)}),n("span",{className:"tabular-nums",children:[c.messages.length," 条发言"]})]}),n("button",{type:"button","aria-expanded":S,onClick:()=>H((l)=>!l),className:"mt-0.5 flex max-w-full cursor-pointer items-start gap-1.5 text-left md:items-center",children:[e("h2",{className:"line-clamp-2 text-[15px] leading-snug font-semibold md:truncate md:text-lg",children:c.topic}),e(ie,{className:b("mt-0.5 size-4 shrink-0 text-faint transition-transform duration-300 ease-out-quint md:mt-0",!S&&"-rotate-90")})]})]}),n("div",{className:"flex shrink-0 items-center gap-1",children:[n("span",{className:b("inline-flex items-center gap-1.5 rounded-full border border-line px-2.5 py-1 text-xs font-medium",U[j.tone]),children:[e("span",{className:b("size-1.5 rounded-full",G[j.tone],P&&"animate-pulse")}),j.label]}),e("button",{type:"button","aria-label":"关闭理事会页面",title:"关闭(Esc)",onClick:()=>N(!0),className:"ml-1 inline-flex size-10 -mr-2 cursor-pointer items-center justify-center rounded-full text-faint transition-colors hover:bg-raised hover:text-ink md:size-8 md:mr-0",children:e(Z,{className:"size-4"})})]})]}),e(u,{children:e("div",{className:"mt-2 max-h-[40dvh] overflow-y-auto overscroll-contain rounded-xl bg-panel px-3.5 py-2.5 text-[13px] leading-relaxed text-dim md:max-h-48",children:e(x,{text:c.brief})})}),e(W,{room:c,className:"mt-3"})]}),n("div",{className:"flex min-h-0 flex-1 flex-col md:flex-row",children:[e("div",{className:"flex shrink-0 gap-2 overflow-x-auto overscroll-x-contain border-b border-line px-4 py-2.5 [scrollbar-width:none] md:hidden",children:c.members.map((l)=>e(he,{member:l,onSelect:()=>h(l.id)},l.id))}),n("aside",{className:"hidden w-72 shrink-0 flex-col gap-2 overflow-y-auto border-r border-line p-4 md:flex",children:[n("div",{className:"flex items-center justify-between text-[11px] text-faint",children:[e("span",{className:"font-medium tracking-wide",children:"席位"}),n("span",{className:"tabular-nums",children:[e("span",{className:"text-success",children:me})," / ",e("span",{className:"text-danger",children:de})," /"," ",c.members.length]})]}),c.members.map((l)=>e(ye,{member:l,onMention:()=>J(l.name),onOpen:()=>t.onOpenMember(l.childSessionID)},l.id))]}),n("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col",children:[e("div",{ref:T,onScroll:(l)=>{let k=l.currentTarget;D(k.scrollHeight-k.scrollTop-k.clientHeight<80)},className:"min-h-0 flex-1 overflow-y-auto",children:n("div",{className:"mx-auto w-full max-w-3xl px-4 py-4 sm:px-6 md:py-5",children:[c.messages.length===0?n("div",{className:"flex flex-col items-center justify-center gap-3 py-24 text-center text-faint",children:[P?e(K,{className:"size-5 animate-spin"}):null,e("p",{className:"text-sm",children:P?c.phase==="research"?"成员正在各自调研,笔记不会进入群聊":"成员正在独立准备开场观点,彼此不可见":"这场理事会没有产生发言"})]}):e("ol",{className:"space-y-5",children:c.messages.map((l)=>e(ke,{message:l,membersByID:re,onMention:()=>J(l.senderName)},l.floor))}),c.summary&&!P&&n("section",{className:"mt-8 rounded-2xl border border-line bg-panel px-4 py-3",children:[n("h3",{className:b("text-xs font-semibold",U[j.tone]),children:["结论:",j.label]}),e("div",{className:"mt-1.5 text-[13px] leading-relaxed text-dim",children:e(x,{text:c.summary})})]})]})}),e("div",{className:"shrink-0 px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] sm:px-6 md:pb-4",children:n("div",{className:"mx-auto w-full max-w-3xl",children:[I&&e("p",{role:"status",className:"px-1 pb-2 text-[13px] text-danger",children:I}),e(v,{draftKey:`council:${c.roomID}`,placeholder:P?"插话,@ 某位成员会点名要求其回应":"理事会已结束,插话会重新唤醒成员",busy:P,allowAttachments:!1,text:w,onTextChange:M,inputRef:R,onSend:le,onAbort:()=>void ce()})]})})]})]}),_&&e(Ne,{member:_,onClose:()=>h(void 0),onMention:()=>{h(void 0),J(_.name)},onOpen:()=>t.onOpenMember(_.childSessionID)})]}),document.body)}function he(t){let{ModelIcon:d,cn:u}=y(),{member:v}=t,x=C[v.verdict]??C.pending,{busy:b}=F(v);return n("button",{type:"button",onClick:t.onSelect,"aria-label":`${v.name},${x.label},查看详情`,className:"flex h-11 max-w-[11rem] shrink-0 cursor-pointer items-center gap-2 rounded-full border border-line bg-panel/60 pr-3.5 pl-1.5 active:bg-raised",children:[n("span",{className:u("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-raised ring-2",x.ring),children:[e(d,{modelID:v.model,className:"size-4",size:16}),b&&e(K,{className:"absolute -right-1 -bottom-1 size-3.5 animate-spin rounded-full bg-bg text-accent"})]}),n("span",{className:"min-w-0 text-left leading-tight",children:[e("span",{className:"block truncate text-[13px] font-medium",children:v.name}),e("span",{className:u("block text-[11px]",x.text),children:x.label})]})]})}function Ne(t){let{Button:d,Dialog:u,Markdown:v,ModelIcon:x,cn:b}=y(),{member:a}=t,c=C[a.verdict]??C.pending,p=F(a);return e(u,{open:!0,onOpenChange:(m)=>!m&&t.onClose(),title:n("span",{className:"flex min-w-0 items-center gap-2.5",children:[e("span",{className:b("flex size-8 shrink-0 items-center justify-center rounded-full bg-raised ring-2",c.ring),children:e(x,{modelID:a.model,className:"size-4",size:16})}),e("span",{className:"min-w-0 truncate",children:a.name}),e("span",{className:b("shrink-0 rounded px-1.5 py-px text-[11px] font-medium",c.soft),children:c.label})]}),description:a.model,footer:n(f,{children:[n(d,{variant:"secondary",onClick:t.onMention,children:[e(A,{className:"size-4"}),"点名"]}),n(d,{variant:"secondary",onClick:t.onOpen,children:[e(ot,{className:"size-4"}),"查看推理"]})]}),children:n("div",{className:"space-y-3 pb-1",children:[n("div",{className:"flex items-center gap-3 text-[13px]",children:[n("span",{className:b("flex min-w-0 flex-1 items-center gap-1.5",p.busy?"text-accent":"text-dim"),children:[p.busy&&e(K,{className:"size-3.5 shrink-0 animate-spin"}),e("span",{className:"truncate",children:p.text})]}),n("span",{className:"shrink-0 text-faint tabular-nums",children:["发言 ",a.turns??0," 次"]})]}),a.notes?n("section",{children:[n("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-medium text-faint",children:[e(X,{className:"size-3.5"}),"调研笔记"]}),e("div",{className:"rounded-xl bg-bg/60 px-3.5 py-2.5 text-[13px] leading-relaxed text-dim",children:e(v,{text:a.notes})})]}):e("p",{className:"text-[13px] text-faint",children:"没有调研笔记"})]})})}function ye(t){let{Collapsible:d,CollapsibleContent:u,Markdown:v,ModelIcon:x,cn:b}=y(),{member:a}=t,[c,p]=r(!1),m=C[a.verdict]??C.pending,{busy:N,text:w}=F(a);return n(d,{open:c,onOpenChange:p,className:"shrink-0 rounded-xl border border-line bg-panel/60 p-2.5",children:[n("div",{className:"flex items-center gap-2.5",children:[e("span",{className:b("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-raised ring-2",m.ring),children:e(x,{modelID:a.model,className:"size-4",size:16})}),n("div",{className:"min-w-0 flex-1",children:[n("div",{className:"flex items-center gap-1.5",children:[e("span",{className:"truncate text-[13px] font-medium",title:a.model,children:a.name}),e("span",{className:b("shrink-0 rounded px-1 text-[10.5px] font-medium",m.soft),children:m.label})]}),n("div",{className:b("flex min-w-0 items-center gap-1 text-[11px]",N?"text-accent":"text-faint"),children:[N&&e(K,{className:"size-3 shrink-0 animate-spin"}),e("span",{className:"truncate",children:w})]})]})]}),n("div",{className:"mt-2 flex items-center gap-1 text-[11px] text-faint",children:[n("span",{className:"tabular-nums",children:["发言 ",a.turns??0," 次"]}),e("span",{className:"ml-auto"}),a.notes&&n("button",{type:"button","aria-expanded":c,onClick:()=>p((M)=>!M),className:b("inline-flex cursor-pointer items-center gap-1 rounded px-1.5 py-0.5 hover:bg-raised hover:text-ink",c&&"text-ink"),children:[e(X,{className:"size-3"}),"笔记"]}),e("button",{type:"button","aria-label":`@ ${a.name}`,title:`@ ${a.name}`,onClick:t.onMention,className:"inline-flex cursor-pointer items-center rounded p-1 hover:bg-raised hover:text-ink",children:e(A,{className:"size-3"})}),e("button",{type:"button","aria-label":`查看 ${a.name} 的推理过程`,title:"查看推理与工具调用",onClick:t.onOpen,className:"inline-flex cursor-pointer items-center rounded p-1 hover:bg-raised hover:text-ink",children:e(ot,{className:"size-3"})})]}),a.notes&&e(u,{children:e("div",{className:"mt-2 max-h-56 overflow-y-auto rounded-lg bg-bg/60 px-2.5 py-2 text-xs leading-relaxed text-dim",children:e(v,{text:a.notes})})})]})}function ke(t){let{Code:d,Collapsible:u,CollapsibleContent:v,Markdown:x,cn:b}=y(),{message:a}=t,[c,p]=r(!1),m=a.senderID==="user"||a.senderID==="host",N=a.verdict&&a.verdict!=="pending"?C[a.verdict]:void 0,w=a.evidences??[],M=(a.mentions??[]).map((g)=>t.membersByID.get(g)).filter((g)=>g!==void 0);return n("li",{id:`council-floor-${a.floor}`,className:"group flex gap-3 animate-fade",children:[e(ae,{message:a,isHuman:m,className:"mt-0.5 hidden size-8 md:flex"}),n("div",{className:"min-w-0 flex-1",children:[n("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs",children:[e(ae,{message:a,isHuman:m,className:"flex size-6 md:hidden"}),e("span",{className:"font-semibold text-ink",title:a.senderModel,children:a.senderName}),n("a",{href:`#council-floor-${a.floor}`,className:"font-mono text-[11px] text-faint hover:text-dim",onClick:(g)=>g.preventDefault(),children:["#",a.floor]}),N&&e("span",{className:b("rounded px-1.5 py-px text-[10.5px] font-medium",N.soft),children:N.label}),!m&&n("button",{type:"button",onClick:t.onMention,className:"ml-auto inline-flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-[11px] text-faint transition-opacity hover:bg-raised hover:text-ink focus-visible:opacity-100 md:px-1.5 md:py-0.5 md:opacity-0 md:group-hover:opacity-100",children:[e(A,{className:"size-3"}),"回复"]})]}),(a.replyToFloor||M.length>0)&&n("div",{className:"mt-1 flex flex-wrap items-center gap-1.5 text-[11px] text-faint",children:[a.replyToFloor&&n("button",{type:"button",onClick:()=>document.getElementById(`council-floor-${a.replyToFloor}`)?.scrollIntoView({block:"center",behavior:"smooth"}),className:"inline-flex min-w-0 max-w-full cursor-pointer items-center gap-1 rounded-md bg-raised/70 px-1.5 py-0.5 hover:text-ink",children:[e(er,{className:"size-3 shrink-0"}),n("span",{className:"shrink-0 text-dim",children:["#",a.replyToFloor," ",a.replyToName]}),a.replyToPreview&&e("span",{className:"truncate",children:a.replyToPreview})]}),M.map((g)=>n("span",{className:"inline-flex items-center gap-1 rounded-md bg-accent/10 px-1.5 py-0.5 text-accent",children:[e(A,{className:"size-3"}),g.name]},g.id))]}),e("div",{className:"mt-1.5 break-words text-[14px] leading-relaxed text-ink/90 md:text-[13.5px] [&_p]:my-1.5 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",children:e(x,{text:a.text})}),w.length>0&&n(u,{open:c,onOpenChange:p,className:"mt-2",children:[n("button",{type:"button","aria-expanded":c,onClick:()=>p((g)=>!g),className:"inline-flex max-w-full cursor-pointer items-center gap-1 text-[11px] text-faint hover:text-ink",children:[e(te,{className:"size-3 shrink-0"}),n("span",{className:"shrink-0",children:["查阅 ",w.length," 处"]}),!c&&e("span",{className:"truncate font-mono",children:w.map((g)=>g.label).join(",")}),e(ie,{className:b("size-3 shrink-0 transition-transform duration-300 ease-out-quint",!c&&"-rotate-90")})]}),e(v,{children:e("div",{className:"mt-1.5 space-y-1.5",children:w.map((g)=>n("div",{className:"overflow-hidden rounded-lg border border-line bg-panel text-xs",children:[e("div",{className:"truncate border-b border-line/70 px-2.5 py-1 font-mono text-[11px] text-dim",children:g.label}),g.snippet&&e(d,{code:g.snippet,lang:g.lang||"ts",className:"max-h-40 overflow-auto px-2.5 py-1.5 text-[11.5px]"})]},`${g.tool}:${g.label}:${g.snippet?.slice(0,32)??""}`))})})]})]})]})}function ae(t){let{ModelIcon:d,cn:u}=y();return e("span",{className:u("shrink-0 items-center justify-center rounded-full",t.isHuman?"bg-accent/12 text-accent":"bg-raised",t.className),children:t.message.senderModel?e(d,{modelID:t.message.senderModel,className:"size-4",size:16}):e(se,{className:"size-4"})})}function Je(t){let{ModelIcon:d,cn:u,useTheme:v}=y();v();let{connection:x,sessionID:b,payload:a,onOpen:c}=t,p=a,[m,N]=r(p),[w,M]=r(!1),[g,L]=r(Date.now);o(()=>{N(p)},[p]);let I=m.state==="running",O=`/api/sessions/${encodeURIComponent(b)}/council/${encodeURIComponent(m.roomID)}`;o(()=>{if(!I)return;let h=!1,R=setInterval(()=>{if(x.request(O).then((T)=>{if(!h&&T&&typeof T==="object"&&"roomID"in T)N(T)}).catch(()=>{}),!h)L(Date.now())},1200);return()=>{h=!0,clearInterval(R)}},[x,O,I]);let S=async(h)=>{let z=await x.request(`${O}/post`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:h})});N(z)},H=async()=>{let h=await x.request(`${O}/kill`,{method:"POST"});N(h)},E=(I?g:m.updatedAt)-m.createdAt,D=m.messages.at(-1),B=m.members.filter((h)=>q(h.status)).length;return n(f,{children:[n("button",{type:"button","aria-label":`进入理事会:${m.topic}`,onClick:()=>M(!0),className:"group relative my-2 block w-full cursor-pointer overflow-hidden rounded-2xl border border-line bg-panel text-left transition-colors hover:border-line-strong animate-fade",children:[n("div",{className:"px-4 pt-3.5",children:[n("div",{className:"flex items-center gap-1.5 text-[11px] text-faint",children:[e("span",{className:"font-medium text-dim",children:"理事会"}),e("span",{"aria-hidden":!0,children:"·"}),e("span",{className:"tabular-nums",children:V(E)}),n("span",{className:"ml-auto tabular-nums",children:[m.members.length," 位成员"]})]}),e("h4",{className:"mt-1 line-clamp-2 text-sm font-semibold text-ink md:truncate",title:m.topic,children:m.topic})]}),e(W,{room:m,className:"mt-3 px-4"}),e("div",{className:"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 px-4",children:m.members.map((h)=>{let z=C[h.verdict]??C.pending,R=q(h.status);return n("span",{className:"flex min-w-0 items-center gap-1.5 text-xs",title:h.model,children:[n("span",{className:u("relative flex size-6 shrink-0 items-center justify-center rounded-full bg-raised ring-2",z.ring),children:[e(d,{modelID:h.model,className:"size-3.5",size:14}),R&&e(K,{className:"absolute -right-1 -bottom-1 size-3 animate-spin rounded-full bg-panel text-accent"})]}),e("span",{className:"truncate text-dim",children:h.name}),e("span",{className:u("shrink-0 text-[11px]",z.text),children:z.label})]},h.id)})}),n("div",{className:"mt-3 flex items-center gap-2 border-t border-line/70 px-4 py-2.5 text-xs",children:[D?n(f,{children:[e("span",{className:"shrink-0 font-medium text-dim",children:D.senderName}),e("span",{className:"min-w-0 flex-1 truncate text-faint",children:D.text.replace(/\s+/g," ")})]}):e("span",{className:"min-w-0 flex-1 truncate text-faint",children:I?`${B} 位成员正在${m.phase==="research"?"调研":"思考"}…`:"没有发言"}),n("span",{className:"inline-flex shrink-0 items-center gap-1 text-faint transition-colors group-hover:text-ink",children:[m.messages.length>0&&n("span",{className:"tabular-nums",children:[m.messages.length," 条"]}),e(ne,{className:"size-3.5"})]})]})]}),w&&e(oe,{room:m,elapsedMs:E,onClose:()=>M(!1),onOpenMember:c,onPost:S,onAbort:H})]})}export{Je as CouncilCard};
@@ -1 +0,0 @@
1
- import{Li}from"./chunk-n9v14vyd.js";export{Li as createTreeViewServices};
@@ -1 +0,0 @@
1
- import{ki}from"./chunk-n9v14vyd.js";export{ki as createTreemapServices};
@@ -1 +0,0 @@
1
- import{Ro}from"./chunk-3k9h7a73.js";export{Ro as QuestionDock};