@bkm016/basalt 0.1.8 → 0.1.9

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 (252) hide show
  1. package/{chunk-0039s4jt.js → chunk-02d3x4mj.js} +3 -3
  2. package/{chunk-ky55taar.js → chunk-0xd9mnc2.js} +327 -316
  3. package/{chunk-ckjw3b61.js → chunk-13gvs0ax.js} +2 -2
  4. package/{chunk-0d51ggzj.js → chunk-1n7dat03.js} +4 -4
  5. package/{chunk-ppxv5q7y.js → chunk-1zj3zvw5.js} +3 -3
  6. package/{chunk-2ek3wq4b.js → chunk-29qrxygd.js} +1 -1
  7. package/{chunk-7p6e2f5s.js → chunk-30rjf7my.js} +3 -3
  8. package/{chunk-v2srrqcv.js → chunk-38g3gctw.js} +2 -2
  9. package/{chunk-3j2kkgsc.js → chunk-4dw43syb.js} +1 -1
  10. package/{chunk-t66jqz12.js → chunk-4gtgqcct.js} +2 -2
  11. package/chunk-66h5qpc6.js +479 -0
  12. package/{chunk-qmdpgbg3.js → chunk-755sy11p.js} +1 -1
  13. package/{chunk-n015c8nx.js → chunk-7zkswxvk.js} +1 -1
  14. package/{chunk-91r5nvth.js → chunk-82v8jh1h.js} +2 -2
  15. package/{chunk-12trygzx.js → chunk-95964592.js} +16 -16
  16. package/{chunk-nmtk9xra.js → chunk-9as0p561.js} +2 -2
  17. package/{chunk-pn413hjw.js → chunk-a1352w87.js} +1 -1
  18. package/{chunk-rnt1ckk9.js → chunk-a1rb1a48.js} +5 -5
  19. package/{chunk-fzcmzbsq.js → chunk-a98wma9j.js} +1 -1
  20. package/{chunk-kgkrccr1.js → chunk-asyr3gnq.js} +2 -2
  21. package/{chunk-5gxj9560.js → chunk-ax04trym.js} +1 -1
  22. package/chunk-b2bxqeb4.js +2 -0
  23. package/{chunk-xjw78yey.js → chunk-bdjr0kfr.js} +4 -4
  24. package/{chunk-7kjr9gdx.js → chunk-bk4rpnm8.js} +2 -2
  25. package/{chunk-47vf66t6.js → chunk-c0zfefq8.js} +1 -1
  26. package/{chunk-kpvaqb7c.js → chunk-c6q04xrd.js} +2 -2
  27. package/chunk-c71173py.js +25 -0
  28. package/{chunk-adys4qq4.js → chunk-cmwdjes8.js} +5 -5
  29. package/{chunk-dcwdmpw2.js → chunk-d0a1jxk5.js} +1 -1
  30. package/{chunk-2nrkqq45.js → chunk-d5j74pcp.js} +7 -7
  31. package/{chunk-pkpj7s2k.js → chunk-dfh9m9n7.js} +1 -1
  32. package/{chunk-26cz8et8.js → chunk-dq01v5eq.js} +1 -1
  33. package/{chunk-fpxc6qjr.js → chunk-e1x629v0.js} +2 -2
  34. package/{chunk-86xhmz7k.js → chunk-en218k4y.js} +1 -1
  35. package/{chunk-3hg7yn1t.js → chunk-fgwda4m0.js} +1 -1
  36. package/chunk-gbjn6d81.js +2 -0
  37. package/{chunk-x496kg3v.js → chunk-gkf5jwvj.js} +1 -1
  38. package/{chunk-k3q5jqjj.js → chunk-hb4f2v34.js} +2 -2
  39. package/{chunk-mr807v9n.js → chunk-hbnmymaq.js} +1 -1
  40. package/{chunk-818nd6s1.js → chunk-jj4hqbrx.js} +2 -2
  41. package/{chunk-jyv9cae6.js → chunk-jn5pqy5v.js} +1 -1
  42. package/{chunk-yyy2yp6f.js → chunk-jtsve11b.js} +9 -9
  43. package/chunk-m1eam0s5.js +2 -0
  44. package/{chunk-6vnjg5x9.js → chunk-mbpb5c7w.js} +1 -1
  45. package/{chunk-t40fag3z.js → chunk-msm9hmk9.js} +1 -1
  46. package/{chunk-j781n7ca.js → chunk-n0ybj4h9.js} +2 -2
  47. package/{chunk-jp5afrwm.js → chunk-n2jcx65v.js} +2 -2
  48. package/{chunk-2ks2tnac.js → chunk-nrsd810j.js} +2 -2
  49. package/chunk-pnspvnyd.js +2 -0
  50. package/chunk-pz2afna8.js +2 -0
  51. package/{chunk-d37gemt2.js → chunk-q9f4xb0w.js} +3 -3
  52. package/{chunk-hd3x1w46.js → chunk-qaeyhe65.js} +1 -1
  53. package/chunk-qnkrrwmg.js +2 -0
  54. package/{chunk-e6c2mzxc.js → chunk-r4ttdkrz.js} +2 -2
  55. package/{chunk-r9aatvwm.js → chunk-stj493dn.js} +2 -2
  56. package/{chunk-g3ed130w.js → chunk-tevejprz.js} +4 -4
  57. package/{chunk-k3rmjrf1.js → chunk-v3ee9z3f.js} +1 -1
  58. package/{chunk-4n49ptbz.js → chunk-vtqr7dm8.js} +2 -2
  59. package/{chunk-z3ch1wg6.js → chunk-xh444pfn.js} +14 -14
  60. package/{chunk-pehyqj8k.js → chunk-zc9ar0r4.js} +1 -1
  61. package/{chunk-ef9yhnk3.js → chunk-zyyzk5ha.js} +1 -1
  62. package/compiled.js +9 -9
  63. package/package.json +1 -1
  64. package/ui-test-worker.js +8 -8
  65. package/web/chunk-08sq3cwm.js +1 -0
  66. package/web/chunk-0pghpg4y.js +2 -0
  67. package/web/chunk-12qf1r6m.js +1 -0
  68. package/web/chunk-24fjnnee.js +1 -0
  69. package/web/chunk-24jhbz82.js +24 -0
  70. package/web/{chunk-v14s4vgc.js → chunk-2dvbeqt0.js} +1 -1
  71. package/web/chunk-2hrswh3d.js +2 -0
  72. package/web/chunk-2j2atyjw.js +1 -0
  73. package/web/{chunk-s7e93552.js → chunk-2x4g9t37.js} +4 -4
  74. package/web/{chunk-hstbgb83.js → chunk-3ak5dg10.js} +5 -5
  75. package/web/chunk-3ecrkvr3.js +106 -0
  76. package/web/chunk-3h3g3ca3.js +1 -0
  77. package/web/chunk-3hr3ew9w.js +1 -0
  78. package/web/chunk-3pcrxg6m.js +1 -0
  79. package/web/{chunk-7a4xk6j9.js → chunk-3pd0qt83.js} +5 -5
  80. package/web/chunk-3txxt0a7.js +1 -0
  81. package/web/chunk-43g4wd7a.js +1 -0
  82. package/web/{chunk-nky3bqfg.js → chunk-4a6gdrbs.js} +1 -1
  83. package/web/{chunk-d0m0h0eb.js → chunk-5a4mj3qz.js} +1 -1
  84. package/web/{chunk-rkjkynm3.js → chunk-5baeh8q7.js} +11 -11
  85. package/web/{chunk-qq2v8h6d.js → chunk-5dr4tkem.js} +4 -4
  86. package/web/chunk-5jdrev9p.js +36 -0
  87. package/web/{chunk-p0cjvjdx.js → chunk-5v2c0aqk.js} +1 -1
  88. package/web/chunk-5z2n4z9x.css +1 -0
  89. package/web/{chunk-6e38yf3a.js → chunk-601k823s.js} +4 -4
  90. package/web/{chunk-8dp7h6w8.js → chunk-60axh4sa.js} +16 -16
  91. package/web/chunk-66wb0p6e.js +62 -0
  92. package/web/{chunk-qcge7d6s.js → chunk-6e87m0nm.js} +2 -2
  93. package/web/chunk-6y55gk1n.js +1 -0
  94. package/web/{chunk-8wg44w91.js → chunk-79e08rk1.js} +2 -2
  95. package/web/{chunk-svh2gkx8.js → chunk-7qkav30b.js} +1 -1
  96. package/web/chunk-814kkkmq.js +8 -0
  97. package/web/chunk-8jcvdd5d.js +2 -0
  98. package/web/{chunk-rbdvc8x7.js → chunk-8w7fyb3v.js} +1 -1
  99. package/web/chunk-8w8atrdh.js +1 -0
  100. package/web/{chunk-sda7cyrt.js → chunk-8z0r0wtk.js} +21 -21
  101. package/web/chunk-935mjq1c.js +39 -0
  102. package/web/chunk-942g3eqn.js +1 -0
  103. package/web/{chunk-1gx0zpmp.js → chunk-98y92vmh.js} +9 -9
  104. package/web/chunk-9ctg0f30.js +3 -0
  105. package/web/chunk-9fnr00kv.js +4 -0
  106. package/web/{chunk-fe31sv6t.js → chunk-9yfftz38.js} +1 -1
  107. package/web/chunk-a0ryzdnp.js +7 -0
  108. package/web/chunk-a61zrp66.js +1 -0
  109. package/web/{chunk-dtg5yhhs.js → chunk-af9evdza.js} +1 -1
  110. package/web/chunk-arnzrqnm.js +1 -0
  111. package/web/chunk-avxk6jpc.js +2 -0
  112. package/web/{chunk-c01176kn.js → chunk-awkdw9rw.js} +2 -2
  113. package/web/{chunk-tkp72r9b.js → chunk-b5h52neg.js} +1 -1
  114. package/web/chunk-bwy3e58v.js +1 -0
  115. package/web/{chunk-ja7w629n.js → chunk-c57f714b.js} +2 -2
  116. package/web/chunk-c6yacwbc.js +30 -0
  117. package/web/{chunk-823b7866.js → chunk-ctzkqx2g.js} +18 -18
  118. package/web/{chunk-w37n09px.js → chunk-db3twjvk.js} +10 -10
  119. package/web/{chunk-hbkasy6c.js → chunk-ddyyc20r.js} +22 -22
  120. package/web/{chunk-z0zrp8n8.js → chunk-dnv8dx72.js} +1 -1
  121. package/web/{chunk-jzte2phh.js → chunk-dwjmr0zj.js} +1 -1
  122. package/web/chunk-dz7g1gnv.js +2 -0
  123. package/web/{chunk-cez1k71m.js → chunk-eadfxfkw.js} +1 -1
  124. package/web/{chunk-d9wdsjkk.js → chunk-eqndhs21.js} +2 -2
  125. package/web/{chunk-cyjnert7.js → chunk-ewx42c11.js} +16 -16
  126. package/web/chunk-f7jpakwh.js +1 -0
  127. package/web/{chunk-r4ffr96e.js → chunk-ff1pmd3g.js} +1 -1
  128. package/web/chunk-fjb3ksfd.js +78 -0
  129. package/web/chunk-fpb2dd2d.js +2 -0
  130. package/web/{chunk-fv6vm14n.js → chunk-frnh4zqf.js} +2 -2
  131. package/web/{chunk-0j9a7811.js → chunk-gn8kyz76.js} +6 -6
  132. package/web/chunk-gv99c8zv.js +1 -0
  133. package/web/chunk-h0767tjv.js +1 -0
  134. package/web/chunk-hqynf99g.js +1 -0
  135. package/web/{chunk-jam45rqg.js → chunk-jccz14ye.js} +2 -2
  136. package/web/{chunk-33w36n91.js → chunk-kcjz03h5.js} +2 -2
  137. package/web/chunk-ket6g0yd.js +1 -0
  138. package/web/chunk-m9q5nr8f.js +1 -0
  139. package/web/chunk-mdfksj61.js +1 -0
  140. package/web/chunk-me7dza1c.js +1 -0
  141. package/web/{chunk-8773nwdc.js → chunk-myd6sc76.js} +1 -1
  142. package/web/{chunk-sf101c23.js → chunk-mykrm8ba.js} +2 -2
  143. package/web/chunk-mzzaet63.js +1 -0
  144. package/web/chunk-n0wazxgz.js +1 -0
  145. package/web/{chunk-1s8zg6fb.js → chunk-nnyc889n.js} +5 -5
  146. package/web/{chunk-xabcx3ry.js → chunk-nvpp0ghj.js} +3 -3
  147. package/web/chunk-nvt9tkt4.js +1139 -0
  148. package/web/{chunk-dgwkqcz6.js → chunk-p9hfcamx.js} +2 -2
  149. package/web/chunk-ph1dgffm.js +1 -0
  150. package/web/chunk-q34as3v6.js +1 -0
  151. package/web/{chunk-sd3cdqcm.js → chunk-qh62nkem.js} +2 -2
  152. package/web/{chunk-j1bw5v1g.js → chunk-qq6m2my8.js} +2 -2
  153. package/web/{chunk-f93pe4kb.js → chunk-qsqtwf34.js} +4 -4
  154. package/web/{chunk-85gdsmt4.js → chunk-qz6r9v1z.js} +1 -1
  155. package/web/chunk-rad2s9ha.js +1 -0
  156. package/web/{chunk-8nv7q5ac.js → chunk-rasjtvsb.js} +15 -15
  157. package/web/{chunk-s38s9ff9.js → chunk-rayf24gy.js} +28 -28
  158. package/web/{chunk-cn0tmwjs.js → chunk-rrpn5r5w.js} +2 -2
  159. package/web/{chunk-m5y2d4zv.js → chunk-s37beysw.js} +1 -1
  160. package/web/chunk-s60s09mb.js +1 -0
  161. package/web/chunk-sk1wkgjw.js +4 -0
  162. package/web/{chunk-xqyazzm7.js → chunk-spbs56wz.js} +5 -5
  163. package/web/{chunk-h5cfg3vv.js → chunk-t893141g.js} +2 -2
  164. package/web/chunk-tftc5v89.js +24 -0
  165. package/web/chunk-tfvcs2xx.js +1 -0
  166. package/web/{chunk-q1xxs319.js → chunk-ts6jsfdk.js} +4 -4
  167. package/web/{chunk-xsz1dfm2.js → chunk-v1exk5wd.js} +20 -20
  168. package/web/{chunk-3q0v8w45.js → chunk-veam6vk4.js} +79 -79
  169. package/web/{chunk-xb9m0092.js → chunk-vqmj6peg.js} +1 -1
  170. package/web/{chunk-cn1xpg3q.js → chunk-vsjpnwsr.js} +2 -2
  171. package/web/{chunk-et8q775x.js → chunk-w3w18stt.js} +5 -5
  172. package/web/chunk-wdq2tp9e.js +1 -0
  173. package/web/chunk-wkf5xfyr.js +1 -0
  174. package/web/{chunk-fx4mackk.js → chunk-wzd2a4k5.js} +4 -4
  175. package/web/{chunk-jjjtv2r1.js → chunk-xa43ndfj.js} +2 -2
  176. package/web/chunk-xh4xn1az.js +1 -0
  177. package/web/{chunk-2axwda8c.js → chunk-xx11yv61.js} +7 -7
  178. package/web/chunk-xzwxcxb4.js +1 -0
  179. package/web/chunk-y1qty77a.js +1 -0
  180. package/web/{chunk-4anjs6yp.js → chunk-y2rzeb4v.js} +2 -2
  181. package/web/chunk-ys2tns0p.js +1 -0
  182. package/web/chunk-z05x9cbm.js +1 -0
  183. package/web/{chunk-mf6xng5b.js → chunk-zb2bkr7f.js} +2 -2
  184. package/web/{chunk-wj3ymejj.js → chunk-zdyys4ar.js} +3 -3
  185. package/web/chunk-zgavhnt8.js +1 -0
  186. package/web/index.html +1 -1
  187. package/worker.js +1 -1
  188. package/chunk-2gcp3xdc.js +0 -2
  189. package/chunk-320174qe.js +0 -2
  190. package/chunk-dvb5nd2x.js +0 -2
  191. package/chunk-frt9k18g.js +0 -480
  192. package/chunk-ndt6rjt9.js +0 -2
  193. package/chunk-xy2bxwq8.js +0 -2
  194. package/chunk-yzevjkms.js +0 -25
  195. package/chunk-zdyd8hbn.js +0 -2
  196. package/web/chunk-0jfda4jw.js +0 -2
  197. package/web/chunk-2p3fkhy8.js +0 -1
  198. package/web/chunk-3sz5qcwj.js +0 -1
  199. package/web/chunk-433c80pc.js +0 -1
  200. package/web/chunk-48cnmhvd.js +0 -106
  201. package/web/chunk-5r37rwq1.js +0 -4
  202. package/web/chunk-6bwgdvf6.js +0 -1
  203. package/web/chunk-7f1t7z72.js +0 -2
  204. package/web/chunk-7x35g67d.js +0 -78
  205. package/web/chunk-8pzg8qw4.js +0 -1
  206. package/web/chunk-8r0s8tx7.js +0 -1
  207. package/web/chunk-9p5dfvav.js +0 -1
  208. package/web/chunk-9q9w9pay.js +0 -1
  209. package/web/chunk-a3teqvz2.js +0 -39
  210. package/web/chunk-ahztazsg.js +0 -1
  211. package/web/chunk-bd8ftfxn.js +0 -3
  212. package/web/chunk-c03bt2pz.js +0 -1
  213. package/web/chunk-c1ha2xg6.js +0 -8
  214. package/web/chunk-cgng31df.js +0 -1
  215. package/web/chunk-cvd4f51j.js +0 -1
  216. package/web/chunk-cybvxssy.js +0 -1
  217. package/web/chunk-d22wq71s.js +0 -1
  218. package/web/chunk-dynajx8x.js +0 -2
  219. package/web/chunk-f3vv7n52.js +0 -1
  220. package/web/chunk-fpa81dv7.js +0 -62
  221. package/web/chunk-g17n6asp.js +0 -1
  222. package/web/chunk-g9dzaw9e.js +0 -30
  223. package/web/chunk-gcwhx3av.js +0 -1139
  224. package/web/chunk-gf8vm6b5.js +0 -1
  225. package/web/chunk-gnmeyy4h.js +0 -1
  226. package/web/chunk-hn7mhsbg.js +0 -1
  227. package/web/chunk-jfvxxp5c.js +0 -1
  228. package/web/chunk-k8h8zx6r.js +0 -24
  229. package/web/chunk-m3ajw575.js +0 -1
  230. package/web/chunk-mz9b5bsa.js +0 -1
  231. package/web/chunk-np33kmn4.js +0 -1
  232. package/web/chunk-nvk8mazs.js +0 -1
  233. package/web/chunk-nyw5ewgv.js +0 -1
  234. package/web/chunk-p56dcqpr.js +0 -1
  235. package/web/chunk-pdn4r8x4.js +0 -1
  236. package/web/chunk-qpt34d8d.js +0 -1
  237. package/web/chunk-qskt3tqa.js +0 -1
  238. package/web/chunk-qt3n897m.js +0 -4
  239. package/web/chunk-r1rt48h9.js +0 -1
  240. package/web/chunk-r7tgd2fm.js +0 -7
  241. package/web/chunk-rznszqmy.js +0 -1
  242. package/web/chunk-s1pefd34.js +0 -1
  243. package/web/chunk-sc29azev.js +0 -1
  244. package/web/chunk-t4jc4nac.js +0 -1
  245. package/web/chunk-t7g366a5.js +0 -24
  246. package/web/chunk-thbqwq6b.js +0 -1
  247. package/web/chunk-v94v68xg.js +0 -36
  248. package/web/chunk-wcphswcx.js +0 -2
  249. package/web/chunk-wwcnvyjh.css +0 -1
  250. package/web/chunk-xce8n339.js +0 -1
  251. package/web/chunk-xfd3b01q.js +0 -1
  252. package/web/chunk-xtss82z2.js +0 -1
@@ -1 +0,0 @@
1
- import{h,o,i,r,g,e,n,b,bt,J,me}from"./chunk-gcwhx3av.js";var te={global:"全局",project:"项目",custom:"自定义",builtin:"内置"};function H({skill:s,issue:x,connection:S}){let{Button:z,CopyButton:C,style:m,useTheme:E}=b();E();let[l,L]=r(),[w,P]=r(),[d,O]=r(0);return o(()=>{let p=!0;P(void 0),L(void 0);let v=new URLSearchParams;if(s.projectID)v.set("projectID",s.projectID);if(s.location)v.set("location",s.location);let N=v.toString()?`?${v.toString()}`:"";return Promise.all([S.request(`/api/skills/${encodeURIComponent(s.name)}/content${N}`),S.request(`/api/skills/${encodeURIComponent(s.name)}/files${N}`)]).then(([f,D])=>{if(p)L({text:f.text,files:D.files})}).catch((f)=>{if(p)P(f instanceof Error?f.message:"读取失败")}),()=>{p=!1}},[S,s.name,s.projectID,s.location,d]),n("div",{className:"min-w-0 space-y-5 text-sm text-ink",children:[e("p",{className:"whitespace-pre-wrap break-words [overflow-wrap:anywhere] text-dim",children:s.description||"暂无描述"}),n("div",{children:[n("p",{className:"break-all text-xs text-dim",children:[te[s.scope],s.projectName?` · ${s.projectName}`:""]}),n("div",{className:"mt-1 flex min-w-0 items-center gap-2",children:[e("code",{className:m("markdown.inlineCode","min-w-0 flex-1 break-all text-xs"),children:s.location}),e(C,{text:s.location,label:"复制完整路径",className:"size-10"})]})]}),n("ul",{className:"space-y-1 break-words text-xs text-dim",children:[e("li",{children:"启用状态按名称生效,影响所有同名技能的新会话可用性。"}),s.disableModelInvocation&&e("li",{children:"仅手动:可由用户调用,不向模型自动提供。"}),s.platforms&&n("li",{children:["平台限制:",s.platforms.join("、")]}),s.disabled&&e("li",{children:"已禁用:不会提供给新会话。"}),x?.overriddenBy&&n("li",{className:"break-all",children:["被覆盖:同名技能优先使用 ",x.overriddenBy]})]}),s.commands?.length?n("div",{children:[e("h3",{className:"font-medium",children:"bin 命令"}),e("p",{className:"mt-1 text-xs text-dim",children:"技能目录中的可执行命令。"}),e("ul",{className:"mt-2 space-y-1 font-mono text-xs",children:s.commands.map((p)=>e("li",{className:"break-all",children:p},p))})]}):null,w?n("div",{role:"alert",className:"space-y-2",children:[n("p",{className:"break-words text-danger",children:["读取失败:",w]}),e(z,{className:"h-10",onClick:()=>O(d+1),children:"重试"})]}):!l?e("p",{role:"status",className:"text-dim",children:"正在读取文件…"}):n(g,{children:[n("section",{children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e("h3",{className:"font-medium",children:"SKILL.md 原文"}),e(C,{text:l.text,label:"复制 SKILL.md 原文",className:"size-10"})]}),n("p",{className:"mb-2 text-xs text-faint",children:[l.text.length.toLocaleString()," 字符 · 约 ",Math.ceil(l.text.length/4).toLocaleString()," ","tokens(估算)"]}),e("pre",{className:m("surface.subtle",m("chat.toolOutput"),"rounded-lg bg-raised p-3 text-xs leading-5 break-all"),children:l.text})]}),n("section",{children:[n("h3",{className:"font-medium",children:["目录文件 · ",l.files.length,l.files.length===200?"(最多显示 200 个)":""]}),e("ul",{className:"mt-2 space-y-1 font-mono text-xs text-dim",children:l.files.map((p)=>e("li",{className:"break-all",children:p},p))})]})]})]})}var A="all",Q="non-project",se="size-4 cursor-pointer rounded border-line text-accent accent-accent focus-visible:outline-2 focus-visible:outline-accent";function ue({connection:s}){let{Button:x,Input:S,Select:z,Dialog:C,style:m,useTheme:E}=b();E();let[l,L]=r([]),[w,P]=r([]),[d,O]=r(A),[p,v]=r([]),[N,f]=r(),[D,V]=r(""),[I,B]=r(),[y,T]=r(!0),[K,R]=r(),[W,G]=r(),u=i(0),k=i(!1),j=h(async(t=!1)=>{let c=++u.current;k.current=!0,T(!0);try{if(t)await s.request("/api/skills/rescan",{method:"POST"});let[a,U,q]=await Promise.all([s.request("/api/skills?all=true"),s.request("/api/skills/settings"),s.request("/api/projects")]);if(c!==u.current)return;L(a.skills),P(q),v(a.issues),f(U),G(new Date),R(void 0)}catch(a){if(c===u.current)R(a instanceof Error?a.message:"读取失败")}finally{if(c===u.current)k.current=!1,T(!1)}},[s]);o(()=>(j(),()=>{u.current++}),[j]);async function X(t){if(k.current)return;k.current=!0;let c=++u.current;T(!0);try{let a=await s.request("/api/skills/settings",{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(c!==u.current)return;f(a),await j()}catch(a){if(c!==u.current)return;R(a instanceof Error?a.message:"保存设置失败"),k.current=!1,T(!1)}}let Y=D.trim().toLocaleLowerCase(),M=d===A?l:l.filter((t)=>{if(t.scope!=="project")return!0;return d!==Q&&t.projectID===d}),_=M.filter((t)=>`${t.name} ${t.description??""}`.toLocaleLowerCase().includes(Y)),F=(t)=>p.find((c)=>c.kind==="overridden"&&(c.path==="<built-in>"?t.scope==="builtin":c.path.replace(/\\/g,"/")===`${t.location.replace(/\\/g,"/")}/SKILL.md`));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:m("settings.groupTitle"),children:"技能"}),e("p",{"aria-live":"polite",className:m("settings.groupDesc"),children:W&&`找到 ${M.length} 个 · ${W.toLocaleTimeString("zh-CN",{hour12:!1})}`})]}),n("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[e(z,{value:d,disabled:y,onValueChange:(t)=>{B(void 0),O(t)},groups:[{options:[{value:A,label:"全部来源"},{value:Q,label:"非项目技能"}]},...w.length?[{label:"项目",options:w.map((t)=>({value:t.id,label:t.name,description:t.directory}))}]:[]],className:"w-44"}),n(x,{variant:"ghost",disabled:y,onClick:()=>j(!0),className:"h-9 px-2.5 text-xs",children:[e(J,{className:`size-3.5 ${y?"animate-spin":""}`}),e("span",{className:"ml-1",children:"重新扫描"})]})]})]}),K&&n("div",{role:"alert",className:"mb-3 flex flex-wrap items-center gap-2 rounded-xl border border-line p-3",children:[n("p",{className:"min-w-0 flex-1 break-words text-sm text-danger",children:["无法更新技能:",K]}),e(x,{disabled:y,onClick:()=>j(),children:"重试"})]}),n("div",{className:"relative mb-3 min-w-0",children:[e(me,{"aria-hidden":!0,className:"pointer-events-none absolute top-3 left-3 size-4 text-faint"}),e(S,{type:"search","aria-label":"搜索技能",placeholder:"搜索技能",value:D,onChange:(t)=>V(t.target.value),className:"h-10 min-w-0 pl-9"})]}),e("div",{className:m("settings.groupBox"),children:y&&!l.length?e("div",{role:"status","aria-label":"正在加载",className:"divide-y divide-line",children:[0,1,2].map((t)=>n("div",{className:"h-16 space-y-2 px-4 py-3",children:[e("div",{className:"h-3 w-24 animate-pulse rounded bg-raised"}),e("div",{className:"h-3 w-2/3 animate-pulse rounded bg-raised"})]},t))}):_.length===0?e("p",{className:"p-4 text-sm text-dim",children:"没有找到匹配的技能"}):e("ul",{className:"divide-y divide-line",children:_.map((t)=>{let c=F(t),a=t.disabled;return n("li",{className:`flex min-w-0 items-center justify-between gap-3 px-4 py-2.5 transition-colors hover:bg-raised/40 ${a?"opacity-55":""}`,children:[n("button",{type:"button",className:"group flex min-h-12 min-w-0 flex-1 cursor-pointer items-center gap-3 py-1 text-left focus-visible:outline-2 focus-visible:outline-accent","aria-label":`查看技能 ${t.name}`,onClick:()=>B(t),children:[n("span",{className:"min-w-0 flex-1",children:[n("span",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[e("span",{className:"truncate text-sm font-medium text-ink",title:t.name,children:t.name}),c&&n("span",{className:"flex shrink-0 items-center gap-1 text-xs text-warning",children:[e(bt,{className:"size-3.5"}),"被覆盖"]})]}),t.description&&e("span",{className:"mt-0.5 block truncate text-xs text-dim",title:t.description,children:t.description})]}),e("span",{className:m("control.badge","shrink-0 text-[11px] text-dim"),children:t.scope==="project"?"项目":t.scope==="builtin"?"built-in":"全局"})]}),e("span",{className:"relative flex size-10 shrink-0 items-center justify-center",children:e("input",{type:"checkbox","aria-label":`启用技能 ${t.name}`,className:se,disabled:y,checked:!a,onChange:(U)=>{if(!N)return;let q=N.disabled??[],Z=U.target.checked?q.filter((ee)=>ee!==t.name):[...q,t.name];X({...N,disabled:Z})}})})]},`${t.scope}:${t.projectID??""}:${t.name}`)})})})]}),e(C,{open:Boolean(I),onOpenChange:(t)=>{if(!t)B(void 0)},title:I?.name??"",size:"lg",footer:e("div",{className:"flex w-full justify-end",children:e(x,{variant:"primary",onClick:()=>B(void 0),children:"关闭"})}),children:I&&e(H,{skill:I,issue:F(I),connection:s})})]})}export{ue as SkillsSection};
@@ -1 +0,0 @@
1
- import{gi}from"./chunk-8dp7h6w8.js";export{gi as createRadarServices};
@@ -1 +0,0 @@
1
- import{ir}from"./chunk-8dp7h6w8.js";export{ir as createRailroadAbnfServices};
@@ -1 +0,0 @@
1
- import{pi}from"./chunk-j1bw5v1g.js";export{pi as default};
@@ -1,24 +0,0 @@
1
- import{G}from"./chunk-jzte2phh.js";import{t,a,D,x,B,C,S,E,T,A,L,R,V,U}from"./chunk-3q0v8w45.js";import{ee}from"./chunk-8dp7h6w8.js";var N=D.packet,F=class{constructor(){this.packet=[],this.setAccTitle=S,this.getAccTitle=E,this.setDiagramTitle=L,this.getDiagramTitle=R,this.getAccDescription=A,this.setAccDescription=T}static{t(this,"PacketDB")}getConfig(){let e=U({...N,...x().packet});if(e.showBits)e.paddingY+=10;return e}getPacket(){return this.packet}pushWord(e){if(e.length>0)this.packet.push(e)}clear(){C(),this.packet=[]}},M=1e4,Y=t((e,r)=>{G(e,r);let i=-1,s=[],l=1,{bitsPerRow:d}=r.getConfig();for(let{start:o,end:n,bits:g,label:f}of e.blocks){if(o!==void 0&&n!==void 0&&n<o)throw Error(`Packet block ${o} - ${n} is invalid. End must be greater than start.`);if(o??=i+1,o!==i+1)throw Error(`Packet block ${o} - ${n??o} is not contiguous. It should start from ${i+1}.`);if(g===0)throw Error(`Packet block ${o} is invalid. Cannot have a zero bit field.`);n??=o+(g??1)-1,g??=n-o+1,i=n,a.debug(`Packet block ${o} - ${i} with label ${f}`);while(s.length<=d+1&&r.getPacket().length<M){let[p,h]=I({start:o,end:n,bits:g,label:f},l,d);if(s.push(p),p.end+1===l*d)r.pushWord(s),s=[],l++;if(!h)break;({start:o,end:n,bits:g,label:f}=h)}}r.pushWord(s)},"populate"),I=t((e,r,i)=>{if(e.start===void 0)throw Error("start should have been set during first phase");if(e.end===void 0)throw Error("end should have been set during first phase");if(e.start>e.end)throw Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=r*i)return[e,void 0];let s=r*i-1,l=r*i;return[{start:e.start,end:s,label:e.label,bits:s-e.start},{start:l,end:e.end,label:e.label,bits:e.end-l}]},"getNextFittingBlock"),P={parser:{yy:void 0},parse:t(async(e)=>{let r=await ee("packet",e),i=P.parser?.yy;if(!(i instanceof F))throw Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");a.debug(r),Y(r,i)},"parse")},O=t((e,r,i,s)=>{let l=s.db,d=l.getConfig(),{rowHeight:o,paddingY:n,bitWidth:g,bitsPerRow:f}=d,p=l.getPacket(),h=l.getDiagramTitle(),b=o+n,c=b*(p.length+1)-(h?0:o),k=g*f+2,m=V(r);m.attr("viewBox",`0 0 ${k} ${c}`),B(m,c,k,d.useMaxWidth);for(let[y,u]of p.entries())j(m,u,y,d);m.append("text").text(h).attr("x",k/2).attr("y",c-b/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),j=t((e,r,i,{rowHeight:s,paddingX:l,paddingY:d,bitWidth:o,bitsPerRow:n,showBits:g,bitOrder:f})=>{let p=e.append("g"),h=i*(s+d)+d,b=f==="descending";for(let c of r){let k=c.end-c.start+1,m=c.start%n,u=(b?n-m-k:m)*o+1,w=k*o-l;if(p.append("rect").attr("x",u).attr("y",h).attr("width",w).attr("height",s).attr("class","packetBlock"),p.append("text").attr("x",u+w/2).attr("y",h+s/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(c.label),!g)continue;let[W,_]=b?[c.end,c.start]:[c.start,c.end],v=k===1,z=h-2;if(p.append("text").attr("x",u+(v?w/2:0)).attr("y",z).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",v?"middle":"start").text(W),!v)p.append("text").attr("x",u+w).attr("y",z).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(_)}},"drawWord"),H={draw:O},K={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},X=t(({packet:e}={})=>{let r=U(K,e);return`
2
- .packetByte {
3
- font-size: ${r.byteFontSize};
4
- }
5
- .packetByte.start {
6
- fill: ${r.startByteColor};
7
- }
8
- .packetByte.end {
9
- fill: ${r.endByteColor};
10
- }
11
- .packetLabel {
12
- fill: ${r.labelColor};
13
- font-size: ${r.labelFontSize};
14
- }
15
- .packetTitle {
16
- fill: ${r.titleColor};
17
- font-size: ${r.titleFontSize};
18
- }
19
- .packetBlock {
20
- stroke: ${r.blockStrokeColor};
21
- stroke-width: ${r.blockStrokeWidth};
22
- fill: ${r.blockFillColor};
23
- }
24
- `},"styles"),at={parser:P,get db(){return new F},renderer:H,styles:X};export{at as diagram};
@@ -1 +0,0 @@
1
- import{Ei}from"./chunk-8dp7h6w8.js";export{Ei as createEventModelingServices};
@@ -1 +0,0 @@
1
- import{mi}from"./chunk-fv6vm14n.js";export{mi as default};
@@ -1 +0,0 @@
1
- import{o,Y,i,r,g,e,n,b,K,J}from"./chunk-gcwhx3av.js";import{qt}from"./chunk-7f1t7z72.js";var A=[{id:"exa",name:"Exa",description:"免密钥 · 综合搜索"},{id:"tavily",name:"Tavily",description:"免密钥 · 支持域名筛选"},{id:"parallel",name:"Parallel",description:"免密钥 · 网页搜索"},{id:"firecrawl",name:"Firecrawl",description:"免密钥 · 网页内容"},{id:"tinyfish",name:"TinyFish",description:"免密钥 · 搜索摘要"},{id:"searxng",name:"SearXNG",description:"免密钥 · 需自建服务"},{id:"brave",name:"Brave",description:"需密钥 · 独立搜索引擎"}];function L(t){return{enabled:t.search.provider!=="off",provider:t.search.provider==="off"?"auto":t.search.provider,searxngUrl:t.search.searxngUrl??"",proxy:t.proxy??"",acceptLanguage:t.acceptLanguage??""}}function q(t,c){return{search:{provider:t.enabled?t.provider:"off",searxngUrl:t.searxngUrl},keys:{...c},proxy:t.proxy,acceptLanguage:t.acceptLanguage}}function z(t,c,f){let p=L(t);if(c.enabled!==p.enabled)return!0;if(c.enabled&&c.provider!==p.provider)return!0;return c.searxngUrl!==p.searxngUrl||c.proxy!==p.proxy||c.acceptLanguage!==p.acceptLanguage||Object.keys(f).length>0}function F({notice:t}){let{cn:c}=b();if(!t)return null;let f=t.type==="success"?qt:K;return n("div",{role:t.type==="error"?"alert":"status",className:c("flex items-start gap-2 text-xs",t.type==="success"?"text-success":"text-danger"),children:[e(f,{className:"mt-0.5 size-4 shrink-0","aria-hidden":"true"}),e("span",{className:"min-w-0 break-words",children:t.text})]})}function G(t){let{Button:c,Input:f,Switch:p,Select:k,StatusChip:S,SettingActions:W,SettingGroup:P,SettingRow:C,cn:w}=b(),m=Y(),l=t.busy!==void 0;return n("form",{id:`${m}-form`,className:"min-w-0 space-y-5",onSubmit:async(s)=>{s.preventDefault(),await t.onSave()},children:[n(P,{title:"联网搜索",children:[e(C,{title:"启用搜索",description:"查询会发送至所选搜索服务",children:e(p,{label:"启用联网搜索",disabled:l,checked:t.draft.enabled,onCheckedChange:(s)=>t.onDraft({...t.draft,enabled:s})})}),e(C,{title:"搜索渠道",description:"自动:Exa → Tavily → Parallel → Firecrawl → TinyFish",children:e("div",{className:"w-48",children:e(k,{id:`${m}-provider`,value:t.draft.provider,disabled:l||!t.draft.enabled,className:"min-w-0",groups:[{options:[{value:"auto",label:"自动",description:"失败时依次切换渠道"},...A.map((s)=>({value:s.id,label:s.name}))]}],onValueChange:(s)=>{let a=s==="auto"?s:A.find((x)=>x.id===s)?.id;if(a)t.onDraft({...t.draft,provider:a})}})})}),(t.draft.provider==="searxng"||t.draft.searxngUrl)&&e(C,{vertical:!0,title:"自建 SearXNG 地址",children:e(f,{id:`${m}-searxng`,"aria-label":"自建 SearXNG 地址",type:"url",maxLength:2000,disabled:l||!t.draft.enabled,value:t.draft.searxngUrl,placeholder:"https://search.example.com",onChange:(s)=>t.onDraft({...t.draft,searxngUrl:s.target.value})})})]}),e(P,{title:"渠道与密钥",description:"检测使用已保存的配置",action:n(c,{type:"button",size:"sm",variant:"ghost",disabled:l,className:"text-dim",onClick:async()=>await t.onCheck("all"),children:[e(J,{className:w("size-3.5",t.checking==="all"&&"animate-spin"),"aria-hidden":"true"}),t.checking==="all"?"正在检测…":"全部检测"]}),children:A.map((s)=>{let a=s.id,x=a==="searxng"?void 0:t.saved.keys[a],N=x?.source==="environment",D=a==="searxng"?void 0:t.keys[a],h=D==="",v=t.checks[a],E=t.checking==="all"||t.checking===a,y=x?.configured?"已配置密钥":"未配置";if(a==="searxng")y=t.saved.search.searxngUrl?"已配置地址":"未配置地址";if(N)y="来自环境变量";if(h)y="待移除";if(D)y="待保存密钥";let U=v&&!v.ok&&!E?v.error??(v.kind==="search"?v.meta?.failed[0]?.error:v.meta?.error)??"检测失败,请检查配置。":void 0;return n("div",{className:"min-w-0",children:[n(C,{title:s.name,description:n(g,{children:[s.description,N&&" · 请在服务端环境变量中更换或移除",U&&e("span",{role:"status",className:"block break-words text-danger",children:U})]}),children:[E?e(S,{tone:"neutral",pulse:!0,children:"检测中"}):v?e(S,{tone:v.ok?"success":"danger",children:v.ok?`可用 ${v.elapsedMs} ms`:"不可用"}):e("span",{className:w("text-xs",D!==void 0?"text-warning":"text-faint"),children:y}),a!=="searxng"&&!N&&n(g,{children:[e(c,{type:"button",size:"sm",variant:"ghost",disabled:l,"aria-label":`${x?.configured?"更换":"设置"} ${s.name} 密钥`,"aria-expanded":t.editingKey===a,"aria-controls":`${m}-${a}-key-editor`,onClick:()=>t.onEditKey(t.editingKey===a?void 0:a),children:x?.configured?"更换":"设置密钥"}),x?.configured&&!h&&e(c,{type:"button",size:"sm",variant:"ghost",disabled:l,"aria-label":`移除 ${s.name} 密钥`,onClick:()=>{t.onKeys({...t.keys,[a]:""}),t.onEditKey(void 0)},children:"移除"})]}),e(c,{type:"button",size:"sm",variant:"ghost",disabled:l,"aria-label":`检测 ${s.name}`,onClick:async()=>await t.onCheck(a),children:"检测"})]}),a!=="searxng"&&t.editingKey===a&&n("div",{id:`${m}-${a}-key-editor`,className:"flex items-center gap-2 pb-3",children:[e(f,{id:`${m}-${a}-key`,"aria-label":`${s.name} API 密钥`,type:"password",autoComplete:"new-password",maxLength:4000,disabled:l,value:t.keys[a]??"",placeholder:"输入新密钥,保存后生效;只写入,不回显",onChange:(R)=>{let d={...t.keys};if(R.target.value.trim())d[a]=R.target.value;else delete d[a];t.onKeys(d)}}),e(c,{type:"button",size:"sm",variant:"ghost",disabled:l,onClick:()=>{let R={...t.keys};delete R[a],t.onKeys(R),t.onEditKey(void 0)},children:"取消"})]})]},a)})}),n(P,{title:"网络",children:[e(C,{vertical:!0,title:"代理 URL",description:"留空使用服务端环境代理",children:e(f,{id:`${m}-proxy`,"aria-label":"代理 URL",type:"url",maxLength:2000,disabled:l,value:t.draft.proxy,placeholder:"http://127.0.0.1:7890",onChange:(s)=>t.onDraft({...t.draft,proxy:s.target.value})})}),e(C,{vertical:!0,title:"Accept-Language",children:e(f,{id:`${m}-language`,"aria-label":"Accept-Language",maxLength:200,disabled:l,value:t.draft.acceptLanguage,placeholder:"en-US,en;q=0.9",onChange:(s)=>t.onDraft({...t.draft,acceptLanguage:s.target.value})})})]}),n(W,{children:[e("div",{className:"mr-auto min-w-0",children:e(F,{notice:t.notice})}),t.dirty&&e(c,{type:"button",size:"sm",variant:"ghost",disabled:l,onClick:t.onRestore,children:"撤销更改"}),e(c,{form:`${m}-form`,type:"submit",size:"sm",variant:"primary",disabled:l||!t.dirty,children:t.busy==="save"?"保存中…":"保存"})]})]})}function O({connection:t}){let{Button:c}=b(),[f,p]=r(),[k,S]=r(),[W,P]=r({}),[C,w]=r(),[m,l]=r("load"),[s,a]=r(),[x,N]=r({}),[D,h]=r(),[v,E]=r(0),y=i(void 0);o(()=>{let d=new AbortController;return y.current=d,l("load"),h(void 0),p(void 0),S(void 0),P({}),w(void 0),N({}),t.request("/api/plugins/webfetch/settings",{signal:d.signal,cache:v>0?"reload":"default"}).then((u)=>{if(d.signal.aborted)return;p(u),S(L(u))}).catch((u)=>{if(!d.signal.aborted)h({type:"error",text:u instanceof Error?u.message:"加载设置失败,请重试。"})}).finally(()=>{if(!d.signal.aborted)y.current=void 0,l(void 0)}),()=>{d.abort(),y.current?.abort(),y.current=void 0}},[t,v]);async function U(){if(y.current||!f||!k||!z(f,k,W))return;let d=new AbortController;y.current=d,l("save"),h(void 0);try{let u=await t.request("/api/plugins/webfetch/settings",{method:"PATCH",signal:d.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify(q(k,W))});if(d.signal.aborted)return;p(u),S(L(u)),P({}),w(void 0),N({}),h({type:"success",text:"设置已保存。"})}catch(u){if(!d.signal.aborted)h({type:"error",text:u instanceof Error?u.message:"保存失败,请重试。"})}finally{if(!d.signal.aborted)y.current=void 0,l(void 0)}}async function R(d){if(y.current||!f)return;let u=new AbortController;y.current=u,l("test"),a(d),h(void 0);try{let B=await t.request(`/api/plugins/webfetch/test?provider=${d}`,{method:"POST",signal:u.signal});if(u.signal.aborted)return;N((M)=>{let I={...M};for(let T of B.checks)if(T.kind==="search"&&T.provider)I[T.provider]=T;return I})}catch(B){if(!u.signal.aborted)h({type:"error",text:B instanceof Error?B.message:"检测失败,请重试。"})}finally{if(!u.signal.aborted)y.current=void 0,l(void 0),a(void 0)}}if(!f||!k)return n("div",{className:"min-w-0 space-y-3",children:[m==="load"&&e("p",{role:"status",className:"text-sm text-dim",children:"正在加载设置…"}),e(F,{notice:D}),m!=="load"&&e(c,{type:"button",size:"sm",variant:"ghost",onClick:()=>E(v+1),children:"重新加载"})]});return e(G,{saved:f,draft:k,keys:W,editingKey:C,dirty:z(f,k,W),busy:m==="load"?void 0:m,checking:s,checks:x,notice:D,onDraft:(d)=>{S(d),h(void 0)},onKeys:(d)=>{P(d),h(void 0)},onEditKey:w,onSave:U,onCheck:R,onRestore:()=>{S(L(f)),P({}),w(void 0),h(void 0)}})}export{G as SettingsForm,O as default};
@@ -1 +0,0 @@
1
- import{or}from"./chunk-8dp7h6w8.js";export{or as createRailroadPegServices};
@@ -1 +0,0 @@
1
- import{h,o,i,r,g,e,n,b,s,K,bt,rt,Wt,be,ce,J,me,xt,lt,ne,an,Z}from"./chunk-gcwhx3av.js";var $e=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],ve=s("key-round",$e);function he(a){let d=[],v="",I,y=!1;for(let f=0;f<a.length;f++){let c=a[f];if(I)if(c===I)I=void 0;else if(c==="\\"&&I==='"'&&f+1<a.length)v+=a[++f];else v+=c;else if(c==='"'||c==="'")I=c,y=!0;else if(c==="\\"&&f+1<a.length)v+=a[++f],y=!0;else if(/\s/.test(c)){if(y||v)d.push(v);v="",y=!1}else v+=c,y=!0}if(y||v)d.push(v);return d}function de(a){return a.map((d)=>d===""||/[\s"'\\]/.test(d)?`"${d.replace(/(["\\])/g,"\\$1")}"`:d).join(" ")}var ye="size-4 cursor-pointer rounded border-line text-accent accent-accent focus-visible:outline-2 focus-visible:outline-accent",Te={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 te(a){return a.type==="local"?de(a.command):a.url}function Ne({info:a,tools:d=!1}){let v=Te[a.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 ${v.dot}`}),e("span",{className:d?void 0:"hidden @md/panel:inline",children:v.label}),d&&a.status.status==="connected"&&n("span",{className:"text-faint",children:["· ",a.toolCount," 个工具"]})]})}function Pe(a){if(typeof a!=="object"||a===null||!("type"in a))return"any";let d=a.type;if(typeof d==="string")return d;if(Array.isArray(d))return d.filter((v)=>typeof v==="string").join(" | ")||"any";return"any"}function Ce(a){let{Button:d,CopyButton:v,Dialog:I,StatusChip:y,confirm:f,style:c,useTheme:P}=b();P();let{info:l,connection:k}=a,[m,G]=r(),[O,H]=r(),[D,S]=r(!1),U=l.status.status==="connected",B=l.status.status==="needs_auth",ee=l.status.status==="failed",L=l.config.type==="remote"&&Boolean(l.config.oauth);o(()=>{function u(p){if(p&&p!==l.name)return;let T=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"";k.request(`/api/mcp/${encodeURIComponent(l.name)}/connect${T}`,{method:"POST"}).then((F)=>a.onChanged(F)).catch(()=>{})}function x(p){if(p.data?.type==="mcp-oauth-success")u(p.data.name)}function t(p){if(p.key==="basalt-mcp-oauth-event"&&p.newValue)try{let T=JSON.parse(p.newValue);u(T.name)}catch(T){}}window.addEventListener("message",x),window.addEventListener("storage",t);let C;if("BroadcastChannel"in window)C=new BroadcastChannel("basalt-mcp-oauth"),C.onmessage=(p)=>{if(p.data?.type==="mcp-oauth-success")u(p.data.name)};return()=>{window.removeEventListener("message",x),window.removeEventListener("storage",t),C?.close()}},[k,l.name,l.projectID,a]),o(()=>{if(l.status.status!=="connected")return;let u=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"";k.request(`/api/mcp/${encodeURIComponent(l.name)}/tools${u}`).then((x)=>{if(Array.isArray(x))G(x),H(void 0)}).catch((x)=>{H(x instanceof Error?x.message:"获取工具失败")})},[k,l.name,l.projectID,l.status.status]);async function ae(u){S(!0);try{let x=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"",t=await k.request(`/api/mcp/${encodeURIComponent(l.name)}/${u}${x}`,{method:"POST"});a.onChanged(t)}catch{}finally{S(!1)}}async function Q(){S(!0);try{let u=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"",x=l.status.status==="needs_auth"?l.status.authorizationUrl:void 0;if(!x)x=(await k.request(`/api/mcp/${encodeURIComponent(l.name)}/oauth/authorize${u}`,{method:"POST"})).authorizationUrl;if(x)window.open(x,"_blank","width=600,height=700")}catch(u){H(u instanceof Error?u.message:"获取授权链接失败")}finally{S(!1)}}async function X(){S(!0);try{let u=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"",x=await k.request(`/api/mcp/${encodeURIComponent(l.name)}/oauth/clear${u}`,{method:"POST"});a.onChanged(x)}finally{S(!1)}}async function z(){if(!await f({title:`删除 ${l.name}?`,description:"删除后将断开连接并不再向会话提供其工具。",action:"删除",danger:!0}))return;S(!0);try{let x=l.projectID?`?projectID=${encodeURIComponent(l.projectID)}`:"";await k.request(`/api/mcp/${encodeURIComponent(l.name)}${x}`,{method:"DELETE"}),a.onChanged(),a.onClose()}finally{S(!1)}}let E=l.config,M=te(E),j="error"in l.status?l.status.error:void 0,se=m?.length??l.toolCount??0;return e(I,{open:!0,className:"bg-panel shadow-float",onOpenChange:(u)=>{if(!u&&!D)a.onClose()},title:n("div",{className:"flex flex-wrap items-center gap-3",children:[e("div",{className:"flex size-8 items-center justify-center rounded-[10px] border border-accent/20 bg-accent-soft text-accent",children:E.type==="local"?e(lt,{className:"size-4"}):e(be,{className:"size-4"})}),e("span",{className:"font-serif text-lg font-semibold tracking-tight text-ink",children:l.name}),U?e(y,{tone:"success",pulse:!0,children:"已连接"}):B?e(y,{tone:"warning",pulse:!0,children:"需要授权"}):ee?e(y,{tone:"danger",children:"连接失败"}):l.status.status==="disabled"?e(y,{tone:"neutral",children:"已停用"}):e(y,{tone:"neutral",children:"未连接"})]}),description:n("div",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-1.5 text-xs",children:[n("span",{className:"flex min-w-0 max-w-full items-center gap-1 rounded-lg border border-line bg-raised/60 py-0.5 pr-1 pl-2.5 font-mono text-[11.5px] text-ink",children:[e("span",{className:"min-w-0 truncate",title:M,children:M}),e(v,{text:M,label:"复制地址",size:"icon-xs",className:"shrink-0 text-dim hover:text-ink"})]}),e("span",{className:"rounded-lg border border-line px-2 py-1 text-[11px] leading-none text-dim",children:E.type==="local"?"本地命令":"远程 HTTP"}),L&&n("span",{className:c("control.badgeAccent","gap-1 rounded-lg border border-accent/25 px-2 py-1"),children:[e(xt,{className:"size-3"}),"OAuth 2.0"]})]}),size:"lg",footer:n("div",{className:"flex w-full items-center justify-between gap-2 max-sm:flex-col",children:[n("div",{className:"flex items-center gap-1 max-sm:w-full",children:[L&&e(d,{type:"button",variant:"ghost",onClick:X,disabled:D,title:"清除已保存的 OAuth 凭据",children:"清除凭据"}),e(d,{type:"button",variant:"danger-ghost",size:"icon-sm","aria-label":"删除服务器",onClick:z,disabled:D,title:"删除服务器",children:e(ne,{className:"size-4"})})]}),n("div",{className:"flex items-center gap-2 max-sm:w-full max-sm:justify-end",children:[e(d,{type:"button",variant:"ghost",onClick:a.onEdit,disabled:D,children:"编辑配置"}),!B&&e(d,{type:"button",variant:"secondary",onClick:()=>ae(U?"disconnect":"connect"),disabled:D,children:D?"处理中...":U?"断开连接":"立即连接"}),e(d,{type:"button",variant:"primary",onClick:a.onClose,children:"完成"})]})]}),children:n("div",{className:"space-y-6 pt-1",children:[B&&e("div",{className:"relative overflow-hidden rounded-2xl border border-warning/30 bg-[radial-gradient(120%_140%_at_0%_0%,color-mix(in_oklch,var(--color-warning)_16%,transparent),transparent_65%)] p-5",children:n("div",{className:"flex items-start gap-4 max-sm:flex-col",children:[e("div",{className:"relative flex size-11 shrink-0 items-center justify-center rounded-xl border border-warning/30 bg-panel text-warning shadow-[0_0_28px_-4px_color-mix(in_oklch,var(--color-warning)_55%,transparent)]",children:e(ve,{className:"size-5"})}),n("div",{className:"min-w-0 flex-1 space-y-1.5",children:[e("h4",{className:"text-sm font-semibold text-ink",children:"授权后即可使用此服务器"}),e("p",{className:"text-[13px] leading-relaxed text-dim",children:"该端点要求 OAuth 2.0 身份许可。在浏览器中完成授权后,令牌会自动保存并载入全部工具。"}),j&&e("p",{className:"line-clamp-2 break-words font-mono text-[11.5px] text-faint",title:j,children:j})]}),n(d,{type:"button",variant:"primary",onClick:Q,disabled:D,className:"shrink-0",children:[e(Wt,{className:"mr-1.5 size-3.5"}),D?"正在拉起授权...":"前往授权"]})]})}),ee&&n("div",{className:c("callout.base",c("callout.danger"),"gap-3 rounded-2xl p-4"),children:[e(bt,{className:"mt-0.5 size-4 shrink-0 text-danger"}),n("div",{className:"min-w-0 space-y-1",children:[e("h4",{className:"text-sm font-medium text-ink",children:"连接失败"}),e("p",{className:"font-mono text-[11.5px] leading-relaxed break-words text-dim",children:j})]})]}),n("section",{className:"space-y-3",children:[n("div",{className:"flex items-baseline justify-between gap-3 px-0.5",children:[n("h4",{className:"flex items-center gap-2 text-[13px] font-medium text-ink",children:["可用工具",e("span",{className:"rounded-full bg-raised px-1.5 py-0.5 font-mono text-[11px] leading-none text-dim",children:se})]}),e("span",{className:"text-[11.5px] text-faint",children:"对所有会话可用"})]}),O?e("div",{className:c("callout.base",c("callout.danger"),"text-xs leading-relaxed break-words"),children:O}):!U?n("div",{className:c("surface.emptyDashed","gap-2 py-10"),children:[e("div",{className:"flex size-10 items-center justify-center rounded-full bg-raised text-faint",children:e(an,{className:"size-4.5"})}),e("p",{className:"text-[13px] font-medium text-dim",children:B?"等待授权":"尚未连接"}),e("p",{className:"max-w-xs text-xs leading-relaxed text-faint",children:B?"授权完成后会自动连接并列出工具。":"连接服务器后,这里会列出它提供的全部工具。"})]}):!m?e("div",{role:"status","aria-label":"正在获取工具列表",className:"grid gap-2",children:[0,1,2].map((u)=>n("div",{className:"animate-pulse space-y-2.5 rounded-xl border border-line p-3.5",children:[e("div",{className:"h-3.5 w-32 rounded bg-raised"}),e("div",{className:"h-3 w-4/5 rounded bg-raised/70"})]},u))}):m.length===0?n("div",{className:c("surface.emptyDashed","gap-2 py-10"),children:[e("div",{className:"flex size-10 items-center justify-center rounded-full bg-raised text-faint",children:e(an,{className:"size-4.5"})}),e("p",{className:"text-[13px] font-medium text-dim",children:"没有可用工具"}),e("p",{className:"max-w-xs text-xs leading-relaxed text-faint",children:"已连接成功,但该服务器没有声明任何工具。"})]}):e("ul",{className:"grid gap-2",children:m.map((u)=>{let x=u.inputSchema?.properties??{},t=u.inputSchema?.required??[],C=Object.entries(x);return n("li",{className:c("surface.subtle","border-line bg-raised/30 p-3.5 transition-colors hover:border-line-strong hover:bg-raised/60"),children:[e("span",{className:"font-mono text-[13px] font-medium break-all text-accent",children:u.name}),u.description&&e("p",{className:"mt-1.5 text-[13px] leading-relaxed break-words text-dim",children:u.description}),C.length>0&&e("div",{className:"mt-3 flex flex-wrap gap-1.5",children:C.map(([p,T])=>n("span",{title:t.includes(p)?"必填参数":"可选参数",className:"inline-flex items-center gap-1 rounded-md border border-line bg-panel px-1.5 py-1 font-mono text-[11px] leading-none",children:[e("span",{className:"text-ink",children:p}),t.includes(p)&&e("span",{className:"text-warning",children:"*"}),e("span",{className:"text-faint",children:Pe(T)})]},p))})]},u.name)})})]})]})})}var De=/^[A-Za-z0-9_-]{1,64}$/;function W(a){return e("span",{className:"truncate text-xs text-faint",children:a.children})}function we(a){let{pairs:d,onChange:v,InputComponent:I}=a,y=(f,c)=>v(d.map((P,l)=>l===f?{...P,...c}:P));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:a.label}),e(W,{children:a.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:()=>v([...d,{key:"",value:"",saved:!1}]),children:[e(ce,{className:"size-3.5"}),"添加"]})]}),d.map((f,c)=>n("div",{className:"flex min-w-0 items-center gap-1.5",children:[e(I,{"aria-label":`${a.keyLabel} ${c+1}`,placeholder:a.keyLabel,value:f.key,readOnly:f.saved,onChange:(P)=>y(c,{key:P.target.value}),className:"min-w-0 flex-[2] font-mono text-xs"}),e(I,{"aria-label":`${a.keyLabel} ${f.key||c+1} 的值`,type:"password",autoComplete:"off",placeholder:f.saved?"已保存,留空保持不变":"值",value:f.value,onChange:(P)=>y(c,{value:P.target.value}),className:"min-w-0 flex-[3] font-mono text-xs"}),e("button",{type:"button","aria-label":`删除 ${f.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:()=>v(d.filter((P,l)=>l!==c)),children:e(Z,{className:"size-4"})})]},c))]})}function ke(a){return Object.keys(a??{}).map((d)=>({key:d,value:"",saved:!0}))}function Ie(a){let{Button:d,Segmented:v,Dialog:I,Form:y,Field:f,Input:c,Switch:P,style:l,useTheme:k}=b();k();let{existing:m}=a,[G,O]=r(m?.config.type??"local"),[H,D]=r(m?.name??""),[S,U]=r(m?.config.type==="local"?de(m.config.command):""),[B,ee]=r(m?.config.type==="remote"?m.config.url:""),[L,ae]=r(ke(m?.config.type==="local"?m.config.environment:void 0)),[Q,X]=r(ke(m?.config.type==="remote"?m.config.headers:void 0)),z=m?.config.type==="remote"?m.config.oauth:void 0,[E,M]=r(Boolean(z)),[j,se]=r(typeof z==="object"&&z.clientId?z.clientId:""),[u,x]=r(""),[t,C]=r(typeof z==="object"&&z.scope?z.scope:""),[p,T]=r(m?.config.defer??"default"),[F,pe]=r(m?.config.timeout!==void 0?String(m.config.timeout):""),[V,Se]=r(m?.config.defer!==void 0||m?.config.timeout!==void 0),[fe,Y]=r(),[le,ge]=r(!1);async function je(N){N.preventDefault(),Y(void 0);let w=H.trim();if(!m&&!De.test(w)){Y("名称只能包含英文字母、数字、下划线与中划线,长度 1-64");return}if(!m&&a.taken.includes(w)){Y("同名服务器已存在");return}let oe=F.trim()?Number.parseInt(F.trim(),10):void 0;if(oe!==void 0&&(!Number.isFinite(oe)||oe<=0)){Y("超时时间须为大于 0 的毫秒数");return}let ue;if(G==="local"){let _=he(S.trim());if(!_.length){Y("请输入启动命令");return}let A={};for(let q of L){let R=q.key.trim();if(!R)continue;if(!q.saved||q.value)A[R]=q.value}ue={type:"local",command:_,environment:Object.keys(A).length?A:void 0,enabled:m?m.config.enabled:!0,defer:p==="default"?void 0:p,timeout:oe}}else{let _=B.trim();try{let R=new URL(_);if(R.protocol!=="http:"&&R.protocol!=="https:")throw Error("bad protocol")}catch{Y("请输入合法的 HTTP 或 HTTPS 地址");return}let A={};for(let R of Q){let ie=R.key.trim();if(!ie)continue;if(!R.saved||R.value)A[ie]=R.value}let q;if(E){let R=j.trim(),ie=u.trim(),xe=t.trim();if(R||ie||xe)q={clientId:R||void 0,clientSecret:ie||void 0,scope:xe||void 0};else q=!0}else q=!1;ue={type:"remote",url:_,headers:Object.keys(A).length?A:void 0,oauth:q,enabled:m?m.config.enabled:!0,defer:p==="default"?void 0:p,timeout:oe}}ge(!0);try{let _=m?.name??w,A=m?m.projectID:a.projectID,q=A?`?projectID=${encodeURIComponent(A)}`:"";await a.connection.request(`/api/mcp/${encodeURIComponent(_)}${q}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(ue)}),a.onSaved()}catch(_){Y(_ instanceof Error?_.message:"保存失败")}finally{ge(!1)}}return e(I,{open:!0,onOpenChange:(N)=>{if(!N&&!le)a.onClose()},title:m?`编辑 ${m.name}`:"添加 MCP 服务器",size:"lg",footer:n("div",{className:"flex w-full justify-end gap-2.5",children:[e(d,{type:"button",variant:"ghost",onClick:a.onClose,disabled:le,className:"min-w-20",children:"取消"}),e(d,{type:"submit",form:"mcp-server-form",variant:"primary",disabled:le,className:"min-w-24",children:le?"保存中...":"保存"})]}),children:n(y,{id:"mcp-server-form",onSubmit:je,children:[e(v,{value:G,onChange:(N)=>O(N),className:"w-full [&>button]:flex-1",options:[{value:"local",label:"本地(标准输入输出)"},{value:"remote",label:"远程(HTTP / SSE)"}]}),!m&&e(f,{label:"名称",aside:e(W,{children:"唯一标识,如 postgres"}),children:(N)=>e(c,{id:N,value:H,onChange:(w)=>D(w.target.value),placeholder:"postgres",className:"font-mono text-xs"})}),G==="local"?n(g,{children:[e(f,{label:"启动命令",aside:e(W,{children:"完整命令及参数"}),children:(N)=>e(c,{id:N,value:S,onChange:(w)=>U(w.target.value),placeholder:"npx -y @modelcontextprotocol/server-postgres ...",className:"font-mono text-xs"})}),e(we,{label:"环境变量",tip:"启动进程时注入",keyLabel:"变量名",pairs:L,onChange:ae,InputComponent:c})]}):n(g,{children:[e(f,{label:"服务地址",aside:e(W,{children:"HTTP / HTTPS 端点"}),children:(N)=>e(c,{id:N,value:B,onChange:(w)=>ee(w.target.value),placeholder:"https://example.com/mcp",className:"font-mono text-xs"})}),e(we,{label:"请求头",tip:"随每次请求发送",keyLabel:"头字段",pairs:Q,onChange:X,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(P,{checked:E,onCheckedChange:M,label:"启用 OAuth 2.0"})]}),E&&n(g,{children:[e(f,{label:"Client ID",aside:e(W,{children:"留空自动动态注册(DCR)"}),children:(N)=>e(c,{id:N,value:j,onChange:(w)=>se(w.target.value),placeholder:"留空自动动态注册",className:"font-mono text-xs"})}),e(f,{label:"Client Secret",aside:e(W,{children:"留空保持不变"}),children:(N)=>e(c,{id:N,type:"password",autoComplete:"off",value:u,onChange:(w)=>x(w.target.value),placeholder:"••••••••",className:"font-mono text-xs"})}),e(f,{label:"Scope",aside:e(W,{children:"选填授权范围"}),children:(N)=>e(c,{id:N,value:t,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":V,className:"flex w-full cursor-pointer items-center gap-1.5 text-[13px] font-medium text-dim transition-colors hover:text-ink",onClick:()=>Se(!V),children:[e(rt,{className:`size-3.5 transition-transform ${V?"rotate-90":""}`}),"高级设置",e("span",{className:"truncate text-xs font-normal text-faint",children:"加载时机、超时"})]}),V&&n("div",{className:"grid grid-cols-2 gap-3 max-sm:grid-cols-1",children:[e(f,{label:"加载时机",aside:e(W,{children:"延迟 = 按需加载"}),children:()=>e(v,{value:p,onChange:(N)=>T(N),className:"w-full [&>button]:flex-1",options:[{value:"default",label:"默认"},{value:"defer",label:"延迟"},{value:"always",label:"常驻"}]})}),e(f,{label:"超时(毫秒)",aside:e(W,{children:"留空用默认"}),children:(N)=>e(c,{id:N,value:F,onChange:(w)=>pe(w.target.value),placeholder:"默认",className:"font-mono text-xs"})})]})]}),fe&&n("div",{role:"alert",className:l("callout.base",l("callout.danger"),"px-3 py-2.5 text-xs"),children:[e(K,{className:"mt-0.5 size-3.5 shrink-0"}),e("span",{className:"min-w-0 break-words",children:fe})]})]})})}var re="global";function nt({connection:a}){let{Button:d,Input:v,Select:I,style:y,useTheme:f}=b();f();let[c,P]=r(""),[l,k]=r(),[m,G]=r([]),[O,H]=r(re),[D,S]=r(),[U,B]=r(!1),[ee,L]=r(),[ae,Q]=r(!1),X=i(!1),[z,E]=r(),M=i(0),j=h(async()=>{let t=++M.current;B(!0);try{let C=O===re?"":`?projectID=${encodeURIComponent(O)}`,[p,T]=await Promise.all([a.request(`/api/mcp${C}`),a.request("/api/projects")]);if(t!==M.current)return;k(p),G(T),S(void 0)}catch(C){if(t===M.current)S(C instanceof Error?C.message:"读取失败")}finally{if(t===M.current)B(!1)}},[a,O]);o(()=>(j(),()=>{M.current++}),[j]);async function se(t,C){if(X.current)return;X.current=!0,Q(!0);let p=M.current;try{let T=t.projectID?`?projectID=${encodeURIComponent(t.projectID)}`:"",F=await a.request(`/api/mcp/${encodeURIComponent(t.name)}${T}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({...t.config,enabled:C})});if(p===M.current)k((pe)=>pe?.map((V)=>V.name===F.name&&V.projectID===F.projectID?F:V))}finally{X.current=!1,Q(!1)}}let u=l?.filter((t)=>`${t.name} ${te(t.config)}`.toLowerCase().includes(c.trim().toLowerCase())),x=l?.find((t)=>t.name===ee);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:y("settings.groupTitle"),children:"MCP 服务器"}),e("p",{className:y("settings.groupDesc"),children:"外部工具与数据源管理"})]}),n("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[e(I,{value:O,disabled:U,onValueChange:(t)=>{L(void 0),E(void 0),k(void 0),H(t)},groups:[{options:[{value:re,label:"全局"}]},...m.length?[{label:"项目",options:m.map((t)=>({value:t.id,label:t.name,description:t.directory}))}]:[]],className:"w-44"}),e(d,{variant:"ghost",disabled:U,onClick:j,className:"h-9 px-2.5 text-xs",children:e(J,{className:`size-3.5 ${U?"animate-spin":""}`})}),n(d,{variant:"secondary",onClick:()=>E({}),className:"h-9 px-2.5 text-xs",children:[e(ce,{className:"size-3.5 mr-1"}),"添加服务器"]})]})]}),D&&n("div",{role:"alert",className:y("callout.base",y("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 服务器:",D]}),e(d,{disabled:U,onClick:j,children:"重试"})]}),n("div",{className:"relative mb-3 min-w-0",children:[e(me,{"aria-hidden":!0,className:"pointer-events-none absolute top-3 left-3 size-4 text-faint"}),e(v,{type:"search","aria-label":"搜索 MCP 服务器",placeholder:"搜索服务器",value:c,onChange:(t)=>P(t.target.value),className:"h-10 min-w-0 pl-9"})]}),e("div",{className:y("settings.groupBox"),children:!l?e("div",{role:"status","aria-label":"正在加载",className:"divide-y divide-line",children:[0,1,2].map((t)=>n("div",{className:"h-16 space-y-2 px-4 py-3",children:[e("div",{className:"h-3 w-24 animate-pulse rounded bg-raised"}),e("div",{className:"h-3 w-2/3 animate-pulse rounded bg-raised"})]},t))}):u?.length===0?e("p",{className:"p-4 text-sm text-dim",children:"没有匹配的 MCP 服务器"}):e("ul",{className:"divide-y divide-line",children:u?.map((t)=>{let C=t.config.enabled===!1,p=t.scope==="file";return n("li",{className:`flex min-w-0 items-center justify-between gap-3 px-4 py-2.5 transition-colors hover:bg-raised/40 ${C?"opacity-55":""}`,children:[n("button",{type:"button",className:"group flex min-h-12 min-w-0 flex-1 cursor-pointer items-center gap-3 py-1 text-left focus-visible:outline-2 focus-visible:outline-accent","aria-label":`查看 ${t.name}`,disabled:p,title:p?"来自项目的 .mcp.json,只读":void 0,onClick:()=>L(t.name),children:[e("span",{"aria-hidden":!0,className:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-raised text-dim",children:t.config.type==="local"?e(lt,{className:"size-4"}):e(be,{className:"size-4"})}),n("span",{className:"min-w-0 flex-1",children:[e("span",{className:"block truncate text-sm font-medium text-ink",title:t.name,children:t.name}),e("span",{className:"mt-0.5 block truncate font-mono text-xs text-dim",title:te(t.config),children:te(t.config)})]}),e("span",{className:y("control.badge","shrink-0 text-[11px] text-dim"),children:t.scope==="project"?"项目":t.scope==="file"?".mcp.json":"全局"}),e(Ne,{info:t})]}),e("span",{className:"relative flex size-10 shrink-0 items-center justify-center",children:!p&&e("input",{type:"checkbox","aria-label":`启用服务器 ${t.name}`,className:ye,disabled:ae||U,checked:!C,onChange:(T)=>se(t,T.target.checked)})})]},t.name)})})})]}),x&&!z&&e(Ce,{connection:a,info:x,onClose:()=>L(void 0),onEdit:()=>E({info:x}),onChanged:(t)=>t?k((C)=>C?.map((p)=>p.name===t.name?t:p)):j()},`${x.projectID}:${x.name}`),z&&e(Ie,{connection:a,projectID:O===re?void 0:O,existing:z.info,taken:(l??[]).filter((t)=>t.scope===(O===re?"global":"project")).map((t)=>t.name),onClose:()=>E(void 0),onSaved:()=>{E(void 0),j()}})]})}export{nt as McpSection};
@@ -1 +0,0 @@
1
- import{h,o,Y,i,r,e,n,b,K,J}from"./chunk-gcwhx3av.js";import{qt}from"./chunk-7f1t7z72.js";var L={config:"自定义路径",env:"环境变量",system:"系统预装"};function U({connection:p}){let{Button:m,Input:P,Switch:v,SettingActions:I,SettingGroup:B,SettingRow:w,cn:x}=b(),k=Y(),[S,N]=r({}),[a,d]=r({}),[l,C]=r(null),[u,q]=r(!0),[R,E]=r(!1),[g,A]=r(!1),[f,c]=r(null),T=i(null),z=(a.executable??"")!==(S.executable??"")||Boolean(a.noSandbox)!==Boolean(S.noSandbox)||Boolean(a.ignoreCertErrors)!==Boolean(S.ignoreCertErrors),O=h(async(t)=>{E(!0);try{let s=await p.request("/api/plugins/browser/status",{signal:t});C(s)}catch(s){if(!t?.aborted)C({available:!1,error:s instanceof Error?s.message:"无法获取浏览器状态"})}finally{if(!t?.aborted)E(!1)}},[p]);o(()=>{let t=new AbortController;return T.current=t,Promise.all([p.request("/api/plugins/browser/settings",{signal:t.signal}),p.request("/api/plugins/browser/status",{signal:t.signal})]).then(([s,y])=>{if(!t.signal.aborted)N(s),d(s),C(y)}).catch((s)=>{if(!t.signal.aborted)c({type:"error",text:s instanceof Error?s.message:"读取浏览器设置失败"})}).finally(()=>{if(!t.signal.aborted)q(!1)}),()=>t.abort()},[p]);let D=async(t)=>{if(t?.preventDefault(),g||u)return;let s=new AbortController;A(!0),c(null);try{if(await p.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(y){if(!s.signal.aborted)c({type:"error",text:y instanceof Error?y.message:"保存设置失败"})}finally{if(!s.signal.aborted)A(!1)}},G=()=>{d(S),c(null)};return n("form",{id:k,onSubmit:D,className:"min-w-0 space-y-5",children:[e(B,{title:"运行环境",children:e(w,{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(m,{type:"button",size:"sm",variant:"ghost",disabled:u||R,onClick:()=>void O(),className:"text-dim",children:[e(J,{className:x("size-3.5",R&&"animate-spin")}),"重新检测"]})})}),n(B,{title:"启动参数",children:[e(w,{vertical:!0,title:"可执行文件路径",description:"留空时自动探测系统浏览器",children:n("div",{className:"flex gap-2",children:[e(P,{id:"browser-executable",disabled:u||g,value:a.executable??"",placeholder:"自动探测",onChange:(t)=>{d({...a,executable:t.target.value}),c(null)}}),a.executable&&e(m,{type:"button",variant:"ghost",size:"sm",disabled:u||g,onClick:()=>{d({...a,executable:""}),c(null)},className:"shrink-0",children:"清空"})]})}),e(w,{title:"禁用沙箱 (--no-sandbox)",description:"容器或 root 环境使用",children:e(v,{label:"禁用沙箱",disabled:u||g,checked:a.noSandbox??!1,onCheckedChange:(t)=>{d({...a,noSandbox:t}),c(null)}})}),e(w,{title:"忽略证书错误 (--ignore-certificate-errors)",description:"跳过自签名与证书有效性检查",children:e(v,{label:"忽略证书错误",disabled:u||g,checked:a.ignoreCertErrors??!1,onCheckedChange:(t)=>{d({...a,ignoreCertErrors:t}),c(null)}})})]}),n(I,{children:[f&&n("span",{role:f.type==="error"?"alert":"status",className:x("mr-auto flex min-w-0 items-center gap-1.5 text-xs",f.type==="success"?"text-success":"text-danger"),children:[f.type==="success"?e(qt,{className:"size-3.5 shrink-0"}):e(K,{className:"size-3.5 shrink-0"}),e("span",{className:"min-w-0 break-words",children:f.text})]}),z&&e(m,{type:"button",variant:"ghost",size:"sm",disabled:u||g,onClick:G,children:"撤销更改"}),e(m,{form:k,type:"submit",variant:"primary",size:"sm",disabled:u||g||!z,children:g?"保存中…":"保存"})]})]})}export{U as default};
@@ -1 +0,0 @@
1
- import{Ci}from"./chunk-8dp7h6w8.js";export{Ci as createPieServices};
@@ -1 +0,0 @@
1
- import{bi}from"./chunk-8dp7h6w8.js";export{bi as createWardleyServices};
@@ -1 +0,0 @@
1
- import{ki}from"./chunk-8dp7h6w8.js";export{ki as createPacketServices};
@@ -1,4 +0,0 @@
1
- import{t,a,l,I,Tt,go,yt,tn,At,Yn,nn}from"./chunk-3q0v8w45.js";import{xe,Oe,Ke,Ee,ut,Gt,H,fe,at,Ht,it,cr,la,ca,ua,vn,Ct,da,bn,$e,xn,$t,St,_n,Yt,wn,pa,ma,ur,_e,fa,kn,Zt,Cn,dr,pr,Xt,ha,mr,ga,Fr,dt,fr,ya,va,ba,Ge,hr,gr,Sn,xa,yr,f,Qe,pt,we,Kt,re}from"./chunk-33w36n91.js";import{ia,oa,W,Bn,eo,sa,lr}from"./chunk-mf6xng5b.js";import{Lt}from"./chunk-gcwhx3av.js";var br={};Lt(br,{default:()=>rr});var uo=/\s/;function co(r){var e=r.length;while(e--&&uo.test(r.charAt(e)));return e}var te=co;var po=/^\s+/;function lo(r){return r?r.slice(0,te(r)+1).replace(po,""):r}var ne=lo;var oe=NaN,mo=/^[-+]0x[0-9a-f]+$/i,ho=/^0b[01]+$/i,vo=/^0o[0-7]+$/i,bo=parseInt;function yo(r){if(typeof r=="number")return r;if(ut(r))return oe;if(fe(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=fe(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=ne(r);var n=ho.test(r);return n||vo.test(r)?bo(r.slice(2),n?2:8):mo.test(r)?oe:+r}var ie=yo;var ae=1/0,wo=179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;function _o(r){if(!r)return r===0?r:0;if(r=ie(r),r===ae||r===-ae){var e=r<0?-1:1;return e*wo}return r===r?r:0}var V=_o;function Eo(r){var e=V(r),n=e%1;return e===e?n?e-n:e:0}var se=Eo;var ue=Object.create,xo=function(){function r(){}return function(e){if(!fe(e))return{};if(ue)return ue(e);r.prototype=e;var n=new r;return r.prototype=void 0,n}}(),de=xo;function Oo(r,e){var n=-1,o=r.length;e||(e=Array(o));while(++n<o)e[n]=r[n];return e}var sr=Oo;function Lo(r,e,n){if(e=="__proto__"&&cr)cr(r,e,{configurable:!0,enumerable:!0,value:n,writable:!0});else r[e]=n}var M=Lo;var Io=Object.prototype,No=Io.hasOwnProperty;function Po(r,e,n){var o=r[e];if(!(No.call(r,e)&&Ct(o,n))||n===void 0&&!(e in r))M(r,e,n)}var j=Po;function ko(r,e,n,o){var i=!n;n||(n={});var s=-1,u=e.length;while(++s<u){var d=e[s],c=o?o(n[d],r[d],d,n,r):void 0;if(c===void 0)c=r[d];if(i)M(n,d,c);else j(n,d,c)}return n}var k=ko;function Ao(r,e,n){if(!fe(n))return!1;var o=typeof e;if(o=="number"?$e(n)&&vn(e,n.length):o=="string"&&(e in n))return Ct(n[e],r);return!1}var C=Ao;function Ro(r){return bn(function(e,n){var o=-1,i=n.length,s=i>1?n[i-1]:void 0,u=i>2?n[2]:void 0;if(s=r.length>3&&typeof s=="function"?(i--,s):void 0,u&&C(n[0],n[1],u))s=i<3?void 0:s,i=1;e=Object(e);while(++o<i){var d=n[o];if(d)r(e,d,o,s)}return e})}var ce=Ro;function Mo(r){var e=[];if(r!=null)for(var n in Object(r))e.push(n);return e}var pe=Mo;var jo=Object.prototype,Bo=jo.hasOwnProperty;function Do(r){if(!fe(r))return pe(r);var e=xn(r),n=[];for(var o in r)if(!(o=="constructor"&&(e||!Bo.call(r,o))))n.push(o);return n}var le=Do;function Fo(r){return $e(r)?pa(r,!0):le(r)}var L=Fo;function Go(r){var e=r==null?0:r.length;return e?pr(r,1):[]}var N=Go;function Xo(r){return la(da(r,void 0,N),r+"")}var me=Xo;var Uo=ma(Object.getPrototypeOf,Object),Y=Uo;var Vo="[object Object]",Yo=Function.prototype,zo=Object.prototype,he=Yo.toString,Wo=zo.hasOwnProperty,qo=he.call(Object);function Ho(r){if(!Ee(r)||Ke(r)!=Vo)return!1;var e=Y(r);if(e===null)return!0;var n=Wo.call(e,"constructor")&&e.constructor;return typeof n=="function"&&n instanceof n&&he.call(n)==qo}var ge=Ho;var Ko="\\ud800-\\udfff",Jo="\\u0300-\\u036f",Zo="\\ufe20-\\ufe2f",$o="\\u20d0-\\u20ff",Qo=Jo+Zo+$o,ri="\\ufe0e\\ufe0f",ei="\\u200d",ti=RegExp("["+ei+Ko+Qo+ri+"]");function ni(r){return ti.test(r)}var ve=ni;function oi(r,e){return r&&k(e,_e(e),r)}var be=oi;function ii(r,e){return r&&k(e,L(e),r)}var ye=ii;var Ne=typeof br=="object"&&br&&!br.nodeType&&br,Le=Ne&&typeof vr=="object"&&vr&&!vr.nodeType&&vr,ai=Le&&Le.exports===Ne,Ie=ai?xe.Buffer:void 0,Se=Ie?Ie.allocUnsafe:void 0;function fi(r,e){if(e)return r.slice();var n=r.length,o=Se?Se(n):new r.constructor(n);return r.copy(o),o}var rr=fi;function si(r,e){return k(r,mr(r),e)}var Pe=si;var ui=Object.getOwnPropertySymbols,di=!ui?ha:function(r){var e=[];while(r)dr(e,mr(r)),r=Y(r);return e},wr=di;function ci(r,e){return k(r,wr(r),e)}var ke=ci;function pi(r){return ga(r,L,wr)}var Te=pi;var li=Object.prototype,mi=li.hasOwnProperty;function hi(r){var e=r.length,n=new r.constructor(e);if(e&&typeof r[0]=="string"&&mi.call(r,"index"))n.index=r.index,n.input=r.input;return n}var Ce=hi;function gi(r){var e=new r.constructor(r.byteLength);return new fr(e).set(new fr(r)),e}var z=gi;function vi(r,e){var n=e?z(r.buffer):r.buffer;return new r.constructor(n,r.byteOffset,r.byteLength)}var Ae=vi;var bi=/\w*$/;function yi(r){var e=new r.constructor(r.source,bi.exec(r));return e.lastIndex=r.lastIndex,e}var Re=yi;var Me=Oe?Oe.prototype:void 0,je=Me?Me.valueOf:void 0;function wi(r){return je?Object(je.call(r)):{}}var Be=wi;function _i(r,e){var n=e?z(r.buffer):r.buffer;return new r.constructor(n,r.byteOffset,r.length)}var _r=_i;var Ei="[object Boolean]",xi="[object Date]",Oi="[object Map]",Li="[object Number]",Ii="[object RegExp]",Si="[object Set]",Ni="[object String]",Pi="[object Symbol]",ki="[object ArrayBuffer]",Ti="[object DataView]",Ci="[object Float32Array]",Ai="[object Float64Array]",Ri="[object Int8Array]",Mi="[object Int16Array]",ji="[object Int32Array]",Bi="[object Uint8Array]",Di="[object Uint8ClampedArray]",Fi="[object Uint16Array]",Gi="[object Uint32Array]";function Xi(r,e,n){var o=r.constructor;switch(e){case ki:return z(r);case Ei:case xi:return new o(+r);case Ti:return Ae(r,n);case Ci:case Ai:case Ri:case Mi:case ji:case Bi:case Di:case Fi:case Gi:return _r(r,n);case Oi:return new o;case Li:case Ni:return new o(r);case Ii:return Re(r);case Si:return new o;case Pi:return Be(r)}}var De=Xi;function Ui(r){return typeof r.constructor=="function"&&!xn(r)?de(Y(r)):{}}var Er=Ui;var Vi="[object Map]";function Yi(r){return Ee(r)&&dt(r)==Vi}var Fe=Yi;var Xe=Yt&&Yt.isMap,zi=Xe?_n(Xe):Fe,Ue=zi;var Wi="[object Set]";function qi(r){return Ee(r)&&dt(r)==Wi}var Ve=qi;var Ye=Yt&&Yt.isSet,Hi=Ye?_n(Ye):Ve,ze=Hi;var Zi=1,$i=2,ra=4,We="[object Arguments]",ea="[object Array]",ta="[object Boolean]",na="[object Date]",aa="[object Error]",qe="[object Function]",wa="[object GeneratorFunction]",_a="[object Map]",Ea="[object Number]",He="[object Object]",Oa="[object RegExp]",La="[object Set]",Ia="[object String]",Sa="[object Symbol]",Na="[object WeakMap]",Pa="[object ArrayBuffer]",ka="[object DataView]",Ta="[object Float32Array]",Ca="[object Float64Array]",Aa="[object Int8Array]",Ra="[object Int16Array]",Ma="[object Int32Array]",ja="[object Uint8Array]",Ba="[object Uint8ClampedArray]",Da="[object Uint16Array]",Fa="[object Uint32Array]",x={};x[We]=x[ea]=x[Pa]=x[ka]=x[ta]=x[na]=x[Ta]=x[Ca]=x[Aa]=x[Ra]=x[Ma]=x[_a]=x[Ea]=x[He]=x[Oa]=x[La]=x[Ia]=x[Sa]=x[ja]=x[Ba]=x[Da]=x[Fa]=!0;x[aa]=x[qe]=x[Na]=!1;function xr(r,e,n,o,i,s){var u,d=e&Zi,c=e&$i,p=e&ra;if(n)u=i?n(r,o,i,s):n(r);if(u!==void 0)return u;if(!fe(r))return r;var m=H(r);if(m){if(u=Ce(r),!d)return sr(r,u)}else{var h=dt(r),g=h==qe||h==wa;if(St(r))return rr(r,d);if(h==He||h==We||g&&!i){if(u=c||g?{}:Er(r),!d)return c?ke(r,ye(u,r)):Pe(r,be(u,r))}else{if(!x[h])return i?r:{};u=De(r,h,d)}}s||(s=new Xt);var b=s.get(r);if(b)return b;if(s.set(r,u),ze(r))r.forEach(function(v){u.add(xr(v,e,n,v,r,s))});else if(Ue(r))r.forEach(function(v,_){u.set(_,xr(v,e,n,_,r,s))});var w=p?c?Te:Fr:c?L:_e,y=m?void 0:w(r);return ca(y||r,function(v,_){if(y)_=v,v=r[_];j(u,_,xr(v,e,n,_,r,s))}),u}var Je=xr;var Ga=1,Xa=4;function Ua(r){return Je(r,Ga|Xa)}var Ze=Ua;var Va=function(){return xe.Date.now()},kr=Va;var rt=Object.prototype,Ya=rt.hasOwnProperty,za=bn(function(r,e){r=Object(r);var n=-1,o=e.length,i=o>2?e[2]:void 0;if(i&&C(e[0],e[1],i))o=1;while(++n<o){var s=e[n],u=L(s),d=-1,c=u.length;while(++d<c){var p=u[d],m=r[p];if(m===void 0||Ct(m,rt[p])&&!Ya.call(r,p))r[p]=s[p]}}return r}),et=za;function Wa(r,e,n){if(n!==void 0&&!Ct(r[e],n)||n===void 0&&!(e in r))M(r,e,n)}var er=Wa;function qa(r,e){if(e==="constructor"&&typeof r[e]==="function")return;if(e=="__proto__")return;return r[e]}var tr=qa;function Ha(r){return k(r,L(r))}var tt=Ha;function Ka(r,e,n,o,i,s,u){var d=tr(r,n),c=tr(e,n),p=u.get(c);if(p){er(r,n,p);return}var m=s?s(d,c,n+"",r,e,u):void 0,h=m===void 0;if(h){var g=H(c),b=!g&&St(c),w=!g&&!b&&wn(c);if(m=c,g||b||w)if(H(d))m=d;else if(xa(d))m=sr(d);else if(b)h=!1,m=rr(c,!0);else if(w)h=!1,m=_r(c,!0);else m=[];else if(ge(c)||$t(c)){if(m=d,$t(d))m=tt(d);else if(!fe(d)||Ht(d))m=Er(c)}else h=!1}if(h)u.set(c,m),i(m,c,o,s,u),u.delete(c);er(r,n,m)}var nt=Ka;function ot(r,e,n,o,i){if(r===e)return;hr(e,function(s,u){if(i||(i=new Xt),fe(s))nt(r,e,u,n,ot,o,i);else{var d=o?o(tr(r,u),s,u+"",r,e,i):void 0;if(d===void 0)d=s;er(r,u,d)}},L)}var ft=ot;function Ja(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var X=Ja;function Za(r){return function(e,n,o){var i=Object(e);if(!$e(e)){var s=Ge(n,3);e=_e(e),n=function(d){return s(i[d],d,i)}}var u=r(e,n,o);return u>-1?i[s?e[u]:u]:void 0}}var st=Za;var $a=Math.max;function Qa(r,e,n){var o=r==null?0:r.length;if(!o)return-1;var i=n==null?0:se(n);if(i<0)i=$a(o+i,0);return ua(r,Ge(e,3),i)}var ct=Qa;var rf=st(ct),nr=rf;function ef(r,e){var n=-1,o=$e(r)?Array(r.length):[];return Sn(r,function(i,s,u){o[++n]=e(i,s,u)}),o}var Or=ef;function tf(r,e){var n=H(r)?Gt:Or;return n(r,Ge(e,3))}var E=tf;function nf(r,e){return r==null?r:hr(r,yr(e),L)}var lt=nf;function of(r,e){return r&&gr(r,yr(e))}var mt=of;function af(r,e){return r>e}var ht=af;var ff=Object.prototype,sf=ff.hasOwnProperty;function uf(r,e){return r!=null&&sf.call(r,e)}var gt=uf;function df(r,e){return r!=null&&ya(r,e,gt)}var Lr=df;var cf="[object String]";function pf(r){return typeof r=="string"||!H(r)&&Ee(r)&&Ke(r)==cf}var vt=pf;function lf(r,e){return r<e}var Ir=lf;function mf(r,e){var n={};return e=Ge(e,3),gr(r,function(o,i,s){M(n,i,e(o,i,s))}),n}var q=mf;function hf(r,e,n){var o=-1,i=r.length;while(++o<i){var s=r[o],u=e(s);if(u!=null&&(d===void 0?u===u&&!ut(u):n(u,d)))var d=u,c=s}return c}var K=hf;function gf(r){return r&&r.length?K(r,at,ht):void 0}var S=gf;var vf=ce(function(r,e,n){ft(r,e,n)}),or=vf;function bf(r){return r&&r.length?K(r,at,Ir):void 0}var B=bf;function yf(r,e){return r&&r.length?K(r,Ge(e,2),Ir):void 0}var J=yf;function wf(r,e,n,o){if(!fe(r))return r;e=kn(e,r);var i=-1,s=e.length,u=s-1,d=r;while(d!=null&&++i<s){var c=Zt(e[i]),p=n;if(c==="__proto__"||c==="constructor"||c==="prototype")return r;if(i!=u){var m=d[c];if(p=o?o(m,c,d):void 0,p===void 0)p=fe(m)?m:vn(e[i+1])?[]:{}}j(d,c,p),d=d[c]}return r}var bt=wf;function _f(r,e,n){var o=-1,i=e.length,s={};while(++o<i){var u=e[o],d=Cn(r,u);if(n(d,u))bt(s,kn(u,r),d)}return s}var wt=_f;function Ef(r,e){var n=r.length;r.sort(e);while(n--)r[n]=r[n].value;return r}var _t=Ef;function xf(r,e){if(r!==e){var n=r!==void 0,o=r===null,i=r===r,s=ut(r),u=e!==void 0,d=e===null,c=e===e,p=ut(e);if(!d&&!p&&!s&&r>e||s&&u&&c&&!d&&!p||o&&u&&c||!n&&c||!i)return 1;if(!o&&!s&&!p&&r<e||p&&n&&i&&!o&&!s||d&&n&&i||!u&&i||!c)return-1}return 0}var Et=xf;function Of(r,e,n){var o=-1,i=r.criteria,s=e.criteria,u=i.length,d=n.length;while(++o<u){var c=Et(i[o],s[o]);if(c){if(o>=d)return c;var p=n[o];return c*(p=="desc"?-1:1)}}return r.index-e.index}var xt=Of;function Lf(r,e,n){if(e.length)e=Gt(e,function(s){if(H(s))return function(u){return Cn(u,s.length===1?s[0]:s)};return s});else e=[at];var o=-1;e=Gt(e,_n(Ge));var i=Or(r,function(s,u,d){var c=Gt(e,function(p){return p(s)});return{criteria:c,index:++o,value:s}});return _t(i,function(s,u){return xt(s,u,n)})}var Ot=Lf;var If=ba("length"),It=If;var Pt="\\ud800-\\udfff",Sf="\\u0300-\\u036f",Nf="\\ufe20-\\ufe2f",Pf="\\u20d0-\\u20ff",kf=Sf+Nf+Pf,Tf="\\ufe0e\\ufe0f",Cf="["+Pt+"]",Tr="["+kf+"]",Cr="\\ud83c[\\udffb-\\udfff]",Af="(?:"+Tr+"|"+Cr+")",kt="[^"+Pt+"]",Rt="(?:\\ud83c[\\udde6-\\uddff]){2}",Mt="[\\ud800-\\udbff][\\udc00-\\udfff]",Rf="\\u200d",jt=Af+"?",Bt="["+Tf+"]?",Mf="(?:"+Rf+"(?:"+[kt,Rt,Mt].join("|")+")"+Bt+jt+")*",jf=Bt+jt+Mf,Bf="(?:"+[kt+Tr+"?",Tr,Rt,Mt,Cf].join("|")+")",Nt=RegExp(Cr+"(?="+Cr+")|"+Bf+jf,"g");function Df(r){var e=Nt.lastIndex=0;while(Nt.test(r))++e;return e}var Dt=Df;function Ff(r){return ve(r)?Dt(r):It(r)}var Ft=Ff;function Gf(r,e){return wt(r,e,function(n,o){return va(r,o)})}var Ut=Gf;var Xf=me(function(r,e){return r==null?{}:Ut(r,e)}),Z=Xf;var{ceil:Uf,max:Vf}=Math;function Yf(r,e,n,o){var i=-1,s=Vf(Uf((e-r)/(n||1)),0),u=Array(s);while(s--)u[o?s:++i]=r,r+=n;return u}var Vt=Yf;function zf(r){return function(e,n,o){if(o&&typeof o!="number"&&C(e,n,o))n=o=void 0;if(e=V(e),n===void 0)n=e,e=0;else n=V(n);return o=o===void 0?e<n?1:-1:V(o),Vt(e,n,o,r)}}var zt=zf;var Wf=zt(),P=Wf;var qf="[object Map]",Hf="[object Set]";function Kf(r){if(r==null)return 0;if($e(r))return vt(r)?Ft(r):r.length;var e=dt(r);if(e==qf||e==Hf)return r.size;return ur(r).length}var Wt=Kf;var Jf=bn(function(r,e){if(r==null)return[];var n=e.length;if(n>1&&C(r,e[0],e[1]))e=[];else if(n>2&&C(e[0],e[1],e[2]))e=[e[0]];return Ot(r,pr(e,1),[])}),A=Jf;var Zf=0;function $f(r){var e=++Zf;return fa(r)+e}var Q=$f;function Qf(r,e,n){var o=-1,i=r.length,s=e.length,u={};while(++o<i){var d=o<s?e[o]:void 0;n(u,r[o],d)}return u}var qt=Qf;function rs(r,e){return qt(r||[],e||[],j)}var Ar=rs;class Rr{constructor(){var r={};r._next=r._prev=r,this._sentinel=r}dequeue(){var r=this._sentinel,e=r._prev;if(e!==r)return Jt(e),e}enqueue(r){var e=this._sentinel;if(r._prev&&r._next)Jt(r);r._next=e._next,e._next._prev=r,e._next=r,r._prev=e}toString(){var r=[],e=this._sentinel,n=e._prev;while(n!==e)r.push(JSON.stringify(n,es)),n=n._prev;return"["+r.join(", ")+"]"}}function Jt(r){r._prev._next=r._next,r._next._prev=r._prev,delete r._next,delete r._prev}function es(r,e){if(r!=="_next"&&r!=="_prev")return e}var ts=it(1);function Qt(r,e){if(r.nodeCount()<=1)return[];var n=os(r,e||ts),o=ns(n.graph,n.buckets,n.zeroIdx);return N(E(o,function(i){return r.outEdges(i.v,i.w)}))}function ns(r,e,n){var o=[],i=e[e.length-1],s=e[0],u;while(r.nodeCount()){while(u=s.dequeue())Mr(r,e,n,u);while(u=i.dequeue())Mr(r,e,n,u);if(r.nodeCount()){for(var d=e.length-2;d>0;--d)if(u=e[d].dequeue(),u){o=o.concat(Mr(r,e,n,u,!0));break}}}return o}function Mr(r,e,n,o,i){var s=i?[]:void 0;return f(r.inEdges(o.v),function(u){var d=r.edge(u),c=r.node(u.v);if(i)s.push({v:u.v,w:u.w});c.out-=d,jr(e,n,c)}),f(r.outEdges(o.v),function(u){var d=r.edge(u),c=u.w,p=r.node(c);p.in-=d,jr(e,n,p)}),r.removeNode(o.v),s}function os(r,e){var n=new re,o=0,i=0;f(r.nodes(),function(d){n.setNode(d,{v:d,in:0,out:0})}),f(r.edges(),function(d){var c=n.edge(d.v,d.w)||0,p=e(d),m=c+p;n.setEdge(d.v,d.w,m),i=Math.max(i,n.node(d.v).out+=p),o=Math.max(o,n.node(d.w).in+=p)});var s=P(i+o+3).map(function(){return new Rr}),u=o+1;return f(n.nodes(),function(d){jr(s,u,n.node(d))}),{graph:n,buckets:s,zeroIdx:u}}function jr(r,e,n){if(!n.out)r[0].enqueue(n);else if(!n.in)r[r.length-1].enqueue(n);else r[n.out-n.in+e].enqueue(n)}function rn(r){var e=r.graph().acyclicer==="greedy"?Qt(r,n(r)):is(r);f(e,function(o){var i=r.edge(o);r.removeEdge(o),i.forwardName=o.name,i.reversed=!0,r.setEdge(o.w,o.v,i,Q("rev"))});function n(o){return function(i){return o.edge(i).weight}}}function is(r){var e=[],n={},o={};function i(s){if(Object.prototype.hasOwnProperty.call(o,s))return;o[s]=!0,n[s]=!0,f(r.outEdges(s),function(u){if(Object.prototype.hasOwnProperty.call(n,u.w))e.push(u);else i(u.w)}),delete n[s]}return f(r.nodes(),i),e}function en(r){f(r.edges(),function(e){var n=r.edge(e);if(n.reversed){r.removeEdge(e);var o=n.forwardName;delete n.reversed,delete n.forwardName,r.setEdge(e.w,e.v,n,o)}})}function T(r,e,n,o){var i;do i=Q(o);while(r.hasNode(i));return n.dummy=e,r.setNode(i,n),i}function an(r){var e=new re().setGraph(r.graph());return f(r.nodes(),function(n){e.setNode(n,r.node(n))}),f(r.edges(),function(n){var o=e.edge(n.v,n.w)||{weight:0,minlen:1},i=r.edge(n);e.setEdge(n.v,n.w,{weight:o.weight+i.weight,minlen:Math.max(o.minlen,i.minlen)})}),e}function Sr(r){var e=new re({multigraph:r.isMultigraph()}).setGraph(r.graph());return f(r.nodes(),function(n){if(!r.children(n).length)e.setNode(n,r.node(n))}),f(r.edges(),function(n){e.setEdge(n,r.edge(n))}),e}function Br(r,e){var{x:n,y:o}=r,i=e.x-n,s=e.y-o,u=r.width/2,d=r.height/2;if(!i&&!s)throw Error("Not possible to find intersection inside of the rectangle");var c,p;if(Math.abs(s)*u>Math.abs(i)*d){if(s<0)d=-d;c=d*i/s,p=d}else{if(i<0)u=-u;c=u,p=u*s/i}return{x:n+c,y:o+p}}function D(r){var e=E(P(Gr(r)+1),function(){return[]});return f(r.nodes(),function(n){var o=r.node(n),i=o.rank;if(!we(i))e[i][o.order]=n}),e}function fn(r){var e=B(E(r.nodes(),function(n){return r.node(n).rank}));f(r.nodes(),function(n){var o=r.node(n);if(Lr(o,"rank"))o.rank-=e})}function sn(r){var e=B(E(r.nodes(),function(s){return r.node(s).rank})),n=[];f(r.nodes(),function(s){var u=r.node(s).rank-e;if(!n[u])n[u]=[];n[u].push(s)});var o=0,i=r.graph().nodeRankFactor;f(n,function(s,u){if(we(s)&&u%i!==0)--o;else if(o)f(s,function(d){r.node(d).rank+=o})})}function Dr(r,e,n,o){var i={width:0,height:0};if(arguments.length>=4)i.rank=n,i.order=o;return T(r,"border",i,e)}function Gr(r){return S(E(r.nodes(),function(e){var n=r.node(e).rank;if(!we(n))return n}))}function un(r,e){var n={lhs:[],rhs:[]};return f(r,function(o){if(e(o))n.lhs.push(o);else n.rhs.push(o)}),n}function dn(r,e){var n=kr();try{return e()}finally{console.log(r+" time: "+(kr()-n)+"ms")}}function cn(r,e){return e()}function ln(r){function e(n){var o=r.children(n),i=r.node(n);if(o.length)f(o,e);if(Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var s=i.minRank,u=i.maxRank+1;s<u;++s)pn(r,"borderLeft","_bl",n,i,s),pn(r,"borderRight","_br",n,i,s)}}f(r.children(),e)}function pn(r,e,n,o,i,s){var u={width:0,height:0,rank:s,borderType:e},d=i[e][s-1],c=T(r,"border",u,n);if(i[e][s]=c,r.setParent(c,o),d)r.setEdge(d,c,{weight:1})}function hn(r){var e=r.graph().rankdir.toLowerCase();if(e==="lr"||e==="rl")yn(r)}function gn(r){var e=r.graph().rankdir.toLowerCase();if(e==="bt"||e==="rl")as(r);if(e==="lr"||e==="rl")fs(r),yn(r)}function yn(r){f(r.nodes(),function(e){mn(r.node(e))}),f(r.edges(),function(e){mn(r.edge(e))})}function mn(r){var e=r.width;r.width=r.height,r.height=e}function as(r){f(r.nodes(),function(e){Xr(r.node(e))}),f(r.edges(),function(e){var n=r.edge(e);if(f(n.points,Xr),Object.prototype.hasOwnProperty.call(n,"y"))Xr(n)})}function Xr(r){r.y=-r.y}function fs(r){f(r.nodes(),function(e){Ur(r.node(e))}),f(r.edges(),function(e){var n=r.edge(e);if(f(n.points,Ur),Object.prototype.hasOwnProperty.call(n,"x"))Ur(n)})}function Ur(r){var e=r.x;r.x=r.y,r.y=e}function En(r){r.graph().dummyChains=[],f(r.edges(),function(e){us(r,e)})}function us(r,e){var n=e.v,o=r.node(n).rank,i=e.w,s=r.node(i).rank,u=e.name,d=r.edge(e),c=d.labelRank;if(s===o+1)return;r.removeEdge(e);var p=void 0,m,h;for(h=0,++o;o<s;++h,++o){if(d.points=[],p={width:0,height:0,edgeLabel:d,edgeObj:e,rank:o},m=T(r,"edge",p,"_d"),o===c)p.width=d.width,p.height=d.height,p.dummy="edge-label",p.labelpos=d.labelpos;if(r.setEdge(n,m,{weight:d.weight},u),h===0)r.graph().dummyChains.push(m);n=m}r.setEdge(n,i,{weight:d.weight},u)}function On(r){f(r.graph().dummyChains,function(e){var n=r.node(e),o=n.edgeLabel,i;r.setEdge(n.edgeObj,o);while(n.dummy){if(i=r.successors(e)[0],r.removeNode(e),o.points.push({x:n.x,y:n.y}),n.dummy==="edge-label")o.x=n.x,o.y=n.y,o.width=n.width,o.height=n.height;e=i,n=r.node(e)}})}function ir(r){var e={};function n(o){var i=r.node(o);if(Object.prototype.hasOwnProperty.call(e,o))return i.rank;e[o]=!0;var s=B(E(r.outEdges(o),function(u){return n(u.w)-r.edge(u).minlen}));if(s===Number.POSITIVE_INFINITY||s===void 0||s===null)s=0;return i.rank=s}f(r.sources(),n)}function U(r,e){return r.node(e.w).rank-r.node(e.v).rank-r.edge(e).minlen}function Nr(r){var e=new re({directed:!1}),n=r.nodes()[0],o=r.nodeCount();e.setNode(n,{});var i,s;while(ds(e,r)<o)i=cs(e,r),s=e.hasNode(i.v)?U(r,i):-U(r,i),ps(e,r,s);return e}function ds(r,e){function n(o){f(e.nodeEdges(o),function(i){var s=i.v,u=o===s?i.w:s;if(!r.hasNode(u)&&!U(e,i))r.setNode(u,{}),r.setEdge(o,u,{}),n(u)})}return f(r.nodes(),n),r.nodeCount()}function cs(r,e){return J(e.edges(),function(n){if(r.hasNode(n.v)!==r.hasNode(n.w))return U(e,n)})}function ps(r,e,n){f(r.nodes(),function(o){e.node(o).rank+=n})}var dh=it(1);var vh=it(1);Vr.CycleException=ar;function Vr(r){var e={},n={},o=[];function i(s){if(Object.prototype.hasOwnProperty.call(n,s))throw new ar;if(!Object.prototype.hasOwnProperty.call(e,s))n[s]=!0,e[s]=!0,f(r.predecessors(s),i),delete n[s],o.push(s)}if(f(r.sinks(),i),Wt(e)!==r.nodeCount())throw new ar;return o}function ar(){}ar.prototype=Error();function Pr(r,e,n){if(!H(e))e=[e];var o=(r.isDirected()?r.successors:r.neighbors).bind(r),i=[],s={};return f(e,function(u){if(!r.hasNode(u))throw Error("Graph does not have node: "+u);In(r,u,n==="post",s,o,i)}),i}function In(r,e,n,o,i,s){if(!Object.prototype.hasOwnProperty.call(o,e)){if(o[e]=!0,!n)s.push(e);if(f(i(e),function(u){In(r,u,n,o,i,s)}),n)s.push(e)}}function Yr(r,e){return Pr(r,e,"post")}function zr(r,e){return Pr(r,e,"pre")}G.initLowLimValues=qr;G.initCutValues=Wr;G.calcCutValue=Pn;G.leaveEdge=An;G.enterEdge=Rn;G.exchangeEdges=Mn;function G(r){r=an(r),ir(r);var e=Nr(r);qr(e),Wr(e,r);var n,o;while(n=An(e))o=Rn(e,r,n),Mn(e,r,n,o)}function Wr(r,e){var n=Yr(r,r.nodes());n=n.slice(0,n.length-1),f(n,function(o){vs(r,e,o)})}function vs(r,e,n){var o=r.node(n),i=o.parent;r.edge(n,i).cutvalue=Pn(r,e,n)}function Pn(r,e,n){var o=r.node(n),i=o.parent,s=!0,u=e.edge(n,i),d=0;if(!u)s=!1,u=e.edge(i,n);return d=u.weight,f(e.nodeEdges(n),function(c){var p=c.v===n,m=p?c.w:c.v;if(m!==i){var h=p===s,g=e.edge(c).weight;if(d+=h?g:-g,ys(r,n,m)){var b=r.edge(n,m).cutvalue;d+=h?-b:b}}}),d}function qr(r,e){if(arguments.length<2)e=r.nodes()[0];Tn(r,{},1,e)}function Tn(r,e,n,o,i){var s=n,u=r.node(o);if(e[o]=!0,f(r.neighbors(o),function(d){if(!Object.prototype.hasOwnProperty.call(e,d))n=Tn(r,e,n,d,o)}),u.low=s,u.lim=n++,i)u.parent=i;else delete u.parent;return n}function An(r){return nr(r.edges(),function(e){return r.edge(e).cutvalue<0})}function Rn(r,e,n){var{v:o,w:i}=n;if(!e.hasEdge(o,i))o=n.w,i=n.v;var s=r.node(o),u=r.node(i),d=s,c=!1;if(s.lim>u.lim)d=u,c=!0;var p=Qe(e.edges(),function(m){return c===Nn(r,r.node(m.v),d)&&c!==Nn(r,r.node(m.w),d)});return J(p,function(m){return U(e,m)})}function Mn(r,e,n,o){var{v:i,w:s}=n;r.removeEdge(i,s),r.setEdge(o.v,o.w,{}),qr(r),Wr(r,e),bs(r,e)}function bs(r,e){var n=nr(r.nodes(),function(i){return!e.node(i).parent}),o=zr(r,n);o=o.slice(1),f(o,function(i){var s=r.node(i).parent,u=e.edge(i,s),d=!1;if(!u)u=e.edge(s,i),d=!0;e.node(i).rank=e.node(s).rank+(d?u.minlen:-u.minlen)})}function ys(r,e,n){return r.hasEdge(e,n)}function Nn(r,e,n){return n.low<=e.lim&&e.lim<=n.lim}function Hr(r){switch(r.graph().ranker){case"network-simplex":jn(r);break;case"tight-tree":_s(r);break;case"longest-path":ws(r);break;default:jn(r)}}var ws=ir;function _s(r){ir(r),Nr(r)}function jn(r){G(r)}function Dn(r){var e=T(r,"root",{},"_root"),n=Es(r),o=S(pt(n))-1,i=2*o+1;r.graph().nestingRoot=e,f(r.edges(),function(u){r.edge(u).minlen*=i});var s=xs(r)+1;f(r.children(),function(u){Fn(r,e,i,s,o,n,u)}),r.graph().nodeRankFactor=i}function Fn(r,e,n,o,i,s,u){var d=r.children(u);if(!d.length){if(u!==e)r.setEdge(e,u,{weight:0,minlen:n});return}var c=Dr(r,"_bt"),p=Dr(r,"_bb"),m=r.node(u);if(r.setParent(c,u),m.borderTop=c,r.setParent(p,u),m.borderBottom=p,f(d,function(h){Fn(r,e,n,o,i,s,h);var g=r.node(h),b=g.borderTop?g.borderTop:h,w=g.borderBottom?g.borderBottom:h,y=g.borderTop?o:2*o,v=b!==w?1:i-s[u]+1;r.setEdge(c,b,{weight:y,minlen:v,nestingEdge:!0}),r.setEdge(w,p,{weight:y,minlen:v,nestingEdge:!0})}),!r.parent(u))r.setEdge(e,c,{weight:0,minlen:i+s[u]})}function Es(r){var e={};function n(o,i){var s=r.children(o);if(s&&s.length)f(s,function(u){n(u,i+1)});e[o]=i}return f(r.children(),function(o){n(o,1)}),e}function xs(r){return Kt(r.edges(),function(e,n){return e+r.edge(n).weight},0)}function Gn(r){var e=r.graph();r.removeNode(e.nestingRoot),delete e.nestingRoot,f(r.edges(),function(n){var o=r.edge(n);if(o.nestingEdge)r.removeEdge(n)})}function Xn(r,e,n){var o={},i;f(n,function(s){var u=r.parent(s),d,c;while(u){if(d=r.parent(u),d)c=o[d],o[d]=u;else c=i,i=u;if(c&&c!==u){e.setEdge(c,u);return}u=d}})}function Un(r,e,n){var o=Ls(r),i=new re({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(s){return r.node(s)});return f(r.nodes(),function(s){var u=r.node(s),d=r.parent(s);if(u.rank===e||u.minRank<=e&&e<=u.maxRank){if(i.setNode(s),i.setParent(s,d||o),f(r[n](s),function(c){var p=c.v===s?c.w:c.v,m=i.edge(p,s),h=!we(m)?m.weight:0;i.setEdge(p,s,{weight:r.edge(c).weight+h})}),Object.prototype.hasOwnProperty.call(u,"minRank"))i.setNode(s,{borderLeft:u.borderLeft[e],borderRight:u.borderRight[e]})}}),i}function Ls(r){var e;while(r.hasNode(e=Q("_root")));return e}function Vn(r,e){var n=0;for(var o=1;o<e.length;++o)n+=Is(r,e[o-1],e[o]);return n}function Is(r,e,n){var o=Ar(n,E(n,function(p,m){return m})),i=N(E(e,function(p){return A(E(r.outEdges(p),function(m){return{pos:o[m.w],weight:r.edge(m).weight}}),"pos")})),s=1;while(s<n.length)s<<=1;var u=2*s-1;s-=1;var d=E(Array(u),function(){return 0}),c=0;return f(i.forEach(function(p){var m=p.pos+s;d[m]+=p.weight;var h=0;while(m>0){if(m%2)h+=d[m+1];m=m-1>>1,d[m]+=p.weight}c+=p.weight*h})),c}function zn(r){var e={},n=Qe(r.nodes(),function(d){return!r.children(d).length}),o=S(E(n,function(d){return r.node(d).rank})),i=E(P(o+1),function(){return[]});function s(d){if(Lr(e,d))return;e[d]=!0;var c=r.node(d);i[c.rank].push(d),f(r.successors(d),s)}var u=A(n,function(d){return r.node(d).rank});return f(u,s),i}function Wn(r,e){return E(e,function(n){var o=r.inEdges(n);if(!o.length)return{v:n};else{var i=Kt(o,function(s,u){var d=r.edge(u),c=r.node(u.v);return{sum:s.sum+d.weight*c.order,weight:s.weight+d.weight}},{sum:0,weight:0});return{v:n,barycenter:i.sum/i.weight,weight:i.weight}}})}function qn(r,e){var n={};f(r,function(i,s){var u=n[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:s};if(!we(i.barycenter))u.barycenter=i.barycenter,u.weight=i.weight}),f(e.edges(),function(i){var s=n[i.v],u=n[i.w];if(!we(s)&&!we(u))u.indegree++,s.out.push(n[i.w])});var o=Qe(n,function(i){return!i.indegree});return Ss(o)}function Ss(r){var e=[];function n(s){return function(u){if(u.merged)return;if(we(u.barycenter)||we(s.barycenter)||u.barycenter>=s.barycenter)Ns(s,u)}}function o(s){return function(u){if(u.in.push(s),--u.indegree===0)r.push(u)}}while(r.length){var i=r.pop();e.push(i),f(i.in.reverse(),n(i)),f(i.out,o(i))}return E(Qe(e,function(s){return!s.merged}),function(s){return Z(s,["vs","i","barycenter","weight"])})}function Ns(r,e){var n=0,o=0;if(r.weight)n+=r.barycenter*r.weight,o+=r.weight;if(e.weight)n+=e.barycenter*e.weight,o+=e.weight;r.vs=e.vs.concat(r.vs),r.barycenter=n/o,r.weight=o,r.i=Math.min(e.i,r.i),e.merged=!0}function Kn(r,e){var n=un(r,function(m){return Object.prototype.hasOwnProperty.call(m,"barycenter")}),o=n.lhs,i=A(n.rhs,function(m){return-m.i}),s=[],u=0,d=0,c=0;o.sort(Ps(!!e)),c=Hn(s,i,c),f(o,function(m){c+=m.vs.length,s.push(m.vs),u+=m.barycenter*m.weight,d+=m.weight,c=Hn(s,i,c)});var p={vs:N(s)};if(d)p.barycenter=u/d,p.weight=d;return p}function Hn(r,e,n){var o;while(e.length&&(o=X(e)).i<=n)e.pop(),r.push(o.vs),n++;return n}function Ps(r){return function(e,n){if(e.barycenter<n.barycenter)return-1;else if(e.barycenter>n.barycenter)return 1;return!r?e.i-n.i:n.i-e.i}}function Kr(r,e,n,o){var i=r.children(e),s=r.node(e),u=s?s.borderLeft:void 0,d=s?s.borderRight:void 0,c={};if(u)i=Qe(i,function(w){return w!==u&&w!==d});var p=Wn(r,i);f(p,function(w){if(r.children(w.v).length){var y=Kr(r,w.v,n,o);if(c[w.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter"))Ts(w,y)}});var m=qn(p,n);ks(m,c);var h=Kn(m,o);if(u){if(h.vs=N([u,h.vs,d]),r.predecessors(u).length){var g=r.node(r.predecessors(u)[0]),b=r.node(r.predecessors(d)[0]);if(!Object.prototype.hasOwnProperty.call(h,"barycenter"))h.barycenter=0,h.weight=0;h.barycenter=(h.barycenter*h.weight+g.order+b.order)/(h.weight+2),h.weight+=2}}return h}function ks(r,e){f(r,function(n){n.vs=N(n.vs.map(function(o){if(e[o])return e[o].vs;return o}))})}function Ts(r,e){if(!we(r.barycenter))r.barycenter=(r.barycenter*r.weight+e.barycenter*e.weight)/(r.weight+e.weight),r.weight+=e.weight;else r.barycenter=e.barycenter,r.weight=e.weight}function $n(r){var e=Gr(r),n=Jn(r,P(1,e+1),"inEdges"),o=Jn(r,P(e-1,-1,-1),"outEdges"),i=zn(r);Zn(r,i);var s=Number.POSITIVE_INFINITY,u;for(var d=0,c=0;c<4;++d,++c){Cs(d%2?n:o,d%4>=2),i=D(r);var p=Vn(r,i);if(p<s)c=0,u=Ze(i),s=p}Zn(r,u)}function Jn(r,e,n){return E(e,function(o){return Un(r,o,n)})}function Cs(r,e){var n=new re;f(r,function(o){var i=o.graph().root,s=Kr(o,i,n,e);f(s.vs,function(u,d){o.node(u).order=d}),Xn(o,n,s.vs)})}function Zn(r,e){f(e,function(n){f(n,function(o,i){r.node(o).order=i})})}function Qn(r){var e=Rs(r);f(r.graph().dummyChains,function(n){var o=r.node(n),i=o.edgeObj,s=As(r,e,i.v,i.w),{path:u,lca:d}=s,c=0,p=u[c],m=!0;while(n!==i.w){if(o=r.node(n),m){while((p=u[c])!==d&&r.node(p).maxRank<o.rank)c++;if(p===d)m=!1}if(!m){while(c<u.length-1&&r.node(p=u[c+1]).minRank<=o.rank)c++;p=u[c]}r.setParent(n,p),n=r.successors(n)[0]}})}function As(r,e,n,o){var i=[],s=[],u=Math.min(e[n].low,e[o].low),d=Math.max(e[n].lim,e[o].lim),c,p;c=n;do c=r.parent(c),i.push(c);while(c&&(e[c].low>u||d>e[c].lim));p=c,c=o;while((c=r.parent(c))!==p)s.push(c);return{path:i.concat(s.reverse()),lca:p}}function Rs(r){var e={},n=0;function o(i){var s=n;f(r.children(i),o),e[i]={low:s,lim:n++}}return f(r.children(),o),e}function Ms(r,e){var n={};function o(i,s){var u=0,d=0,c=i.length,p=X(s);return f(s,function(m,h){var g=Bs(r,m),b=g?r.node(g).order:c;if(g||m===p)f(s.slice(d,h+1),function(w){f(r.predecessors(w),function(y){var v=r.node(y),_=v.order;if((_<u||b<_)&&!(v.dummy&&r.node(w).dummy))ro(n,y,w)})}),d=h+1,u=b}),s}return Kt(e,o),n}function js(r,e){var n={};function o(s,u,d,c,p){var m;f(P(u,d),function(h){if(m=s[h],r.node(m).dummy)f(r.predecessors(m),function(g){var b=r.node(g);if(b.dummy&&(b.order<c||b.order>p))ro(n,g,m)})})}function i(s,u){var d=-1,c,p=0;return f(u,function(m,h){if(r.node(m).dummy==="border"){var g=r.predecessors(m);if(g.length)c=r.node(g[0]).order,o(u,p,h,d,c),p=h,d=c}o(u,p,u.length,c,s.length)}),u}return Kt(e,i),n}function Bs(r,e){if(r.node(e).dummy)return nr(r.predecessors(e),function(n){return r.node(n).dummy})}function ro(r,e,n){if(e>n){var o=e;e=n,n=o}if(!Object.prototype.hasOwnProperty.call(r,e))Object.defineProperty(r,e,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=r[e];Object.defineProperty(i,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Ds(r,e,n){if(e>n){var o=e;e=n,n=o}return!!r[e]&&Object.prototype.hasOwnProperty.call(r[e],n)}function Fs(r,e,n,o){var i={},s={},u={};return f(e,function(d){f(d,function(c,p){i[c]=c,s[c]=c,u[c]=p})}),f(e,function(d){var c=-1;f(d,function(p){var m=o(p);if(m.length){m=A(m,function(y){return u[y]});var h=(m.length-1)/2;for(var g=Math.floor(h),b=Math.ceil(h);g<=b;++g){var w=m[g];if(s[p]===p&&c<u[w]&&!Ds(n,p,w))s[w]=p,s[p]=i[p]=i[w],c=u[w]}}})}),{root:i,align:s}}function Gs(r,e,n,o,i){var s={},u=Xs(r,e,n,i),d=i?"borderLeft":"borderRight";function c(h,g){var b=u.nodes(),w=b.pop(),y={};while(w){if(y[w])h(w);else y[w]=!0,b.push(w),b=b.concat(g(w));w=b.pop()}}function p(h){s[h]=u.inEdges(h).reduce(function(g,b){return Math.max(g,s[b.v]+u.edge(b))},0)}function m(h){var g=u.outEdges(h).reduce(function(w,y){return Math.min(w,s[y.w]-u.edge(y))},Number.POSITIVE_INFINITY),b=r.node(h);if(g!==Number.POSITIVE_INFINITY&&b.borderType!==d)s[h]=Math.max(s[h],g)}return c(p,u.predecessors.bind(u)),c(m,u.successors.bind(u)),f(o,function(h){s[h]=s[n[h]]}),s}function Xs(r,e,n,o){var i=new re,s=r.graph(),u=zs(s.nodesep,s.edgesep,o);return f(e,function(d){var c;f(d,function(p){var m=n[p];if(i.setNode(m),c){var h=n[c],g=i.edge(h,m);i.setEdge(h,m,Math.max(u(r,p,c),g||0))}c=p})}),i}function Us(r,e){return J(pt(e),function(n){var{NEGATIVE_INFINITY:o,POSITIVE_INFINITY:i}=Number;return lt(n,function(s,u){var d=Ws(r,u)/2;o=Math.max(s+d,o),i=Math.min(s-d,i)}),o-i})}function Vs(r,e){var n=pt(e),o=B(n),i=S(n);f(["u","d"],function(s){f(["l","r"],function(u){var d=s+u,c=r[d],p;if(c===e)return;var m=pt(c);if(p=u==="l"?o-B(m):i-S(m),p)r[d]=q(c,function(h){return h+p})})})}function Ys(r,e){return q(r.ul,function(n,o){if(e)return r[e.toLowerCase()][o];else{var i=A(E(r,o));return(i[1]+i[2])/2}})}function to(r){var e=D(r),n=or(Ms(r,e),js(r,e)),o={},i;f(["u","d"],function(u){i=u==="u"?e:pt(e).reverse(),f(["l","r"],function(d){if(d==="r")i=E(i,function(h){return pt(h).reverse()});var c=(u==="u"?r.predecessors:r.successors).bind(r),p=Fs(r,i,n,c),m=Gs(r,i,p.root,p.align,d==="r");if(d==="r")m=q(m,function(h){return-h});o[u+d]=m})});var s=Us(r,o);return Vs(o,s),Ys(o,r.graph().align)}function zs(r,e,n){return function(o,i,s){var u=o.node(i),d=o.node(s),c=0,p;if(c+=u.width/2,Object.prototype.hasOwnProperty.call(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":p=-u.width/2;break;case"r":p=u.width/2;break}if(p)c+=n?p:-p;if(p=0,c+=(u.dummy?e:r)/2,c+=(d.dummy?e:r)/2,c+=d.width/2,Object.prototype.hasOwnProperty.call(d,"labelpos"))switch(d.labelpos.toLowerCase()){case"l":p=d.width/2;break;case"r":p=-d.width/2;break}if(p)c+=n?p:-p;return p=0,c}}function Ws(r,e){return r.node(e).width}function no(r){r=Sr(r),qs(r),mt(to(r),function(e,n){r.node(n).x=e})}function qs(r){var e=D(r),n=r.graph().ranksep,o=0;f(e,function(i){var s=S(E(i,function(u){return r.node(u).height}));f(i,function(u){r.node(u).y=o+s/2}),o+=s+n})}function $r(r,e){var n=e&&e.debugTiming?dn:cn;n("layout",()=>{var o=n(" buildLayoutGraph",()=>ou(r));n(" runLayout",()=>Hs(o,n)),n(" updateInputGraph",()=>Ks(r,o))})}function Hs(r,e){e(" makeSpaceForEdgeLabels",()=>iu(r)),e(" removeSelfEdges",()=>mu(r)),e(" acyclic",()=>rn(r)),e(" nestingGraph.run",()=>Dn(r)),e(" rank",()=>Hr(Sr(r))),e(" injectEdgeLabelProxies",()=>au(r)),e(" removeEmptyRanks",()=>sn(r)),e(" nestingGraph.cleanup",()=>Gn(r)),e(" normalizeRanks",()=>fn(r)),e(" assignRankMinMax",()=>fu(r)),e(" removeEdgeLabelProxies",()=>su(r)),e(" normalize.run",()=>En(r)),e(" parentDummyChains",()=>Qn(r)),e(" addBorderSegments",()=>ln(r)),e(" order",()=>$n(r)),e(" insertSelfEdges",()=>hu(r)),e(" adjustCoordinateSystem",()=>hn(r)),e(" position",()=>no(r)),e(" positionSelfEdges",()=>gu(r)),e(" removeBorderNodes",()=>lu(r)),e(" normalize.undo",()=>On(r)),e(" fixupEdgeLabelCoords",()=>cu(r)),e(" undoCoordinateSystem",()=>gn(r)),e(" translateGraph",()=>uu(r)),e(" assignNodeIntersects",()=>du(r)),e(" reversePoints",()=>pu(r)),e(" acyclic.undo",()=>en(r))}function Ks(r,e){f(r.nodes(),function(n){var o=r.node(n),i=e.node(n);if(o){if(o.x=i.x,o.y=i.y,e.children(n).length)o.width=i.width,o.height=i.height}}),f(r.edges(),function(n){var o=r.edge(n),i=e.edge(n);if(o.points=i.points,Object.prototype.hasOwnProperty.call(i,"x"))o.x=i.x,o.y=i.y}),r.graph().width=e.graph().width,r.graph().height=e.graph().height}var Js=["nodesep","edgesep","ranksep","marginx","marginy"],Zs={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},$s=["acyclicer","ranker","rankdir","align"],Qs=["width","height"],ru={width:0,height:0},eu=["minlen","weight","width","height","labeloffset"],tu={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},nu=["labelpos"];function ou(r){var e=new re({multigraph:!0,compound:!0}),n=Zr(r.graph());return e.setGraph(or({},Zs,Jr(n,Js),Z(n,$s))),f(r.nodes(),function(o){var i=Zr(r.node(o));e.setNode(o,et(Jr(i,Qs),ru)),e.setParent(o,r.parent(o))}),f(r.edges(),function(o){var i=Zr(r.edge(o));e.setEdge(o,or({},tu,Jr(i,eu),Z(i,nu)))}),e}function iu(r){var e=r.graph();e.ranksep/=2,f(r.edges(),function(n){var o=r.edge(n);if(o.minlen*=2,o.labelpos.toLowerCase()!=="c")if(e.rankdir==="TB"||e.rankdir==="BT")o.width+=o.labeloffset;else o.height+=o.labeloffset})}function au(r){f(r.edges(),function(e){var n=r.edge(e);if(n.width&&n.height){var o=r.node(e.v),i=r.node(e.w),s={rank:(i.rank-o.rank)/2+o.rank,e};T(r,"edge-proxy",s,"_ep")}})}function fu(r){var e=0;f(r.nodes(),function(n){var o=r.node(n);if(o.borderTop)o.minRank=r.node(o.borderTop).rank,o.maxRank=r.node(o.borderBottom).rank,e=S(e,o.maxRank)}),r.graph().maxRank=e}function su(r){f(r.nodes(),function(e){var n=r.node(e);if(n.dummy==="edge-proxy")r.edge(n.e).labelRank=n.rank,r.removeNode(e)})}function uu(r){var e=Number.POSITIVE_INFINITY,n=0,o=Number.POSITIVE_INFINITY,i=0,s=r.graph(),u=s.marginx||0,d=s.marginy||0;function c(p){var{x:m,y:h,width:g,height:b}=p;e=Math.min(e,m-g/2),n=Math.max(n,m+g/2),o=Math.min(o,h-b/2),i=Math.max(i,h+b/2)}f(r.nodes(),function(p){c(r.node(p))}),f(r.edges(),function(p){var m=r.edge(p);if(Object.prototype.hasOwnProperty.call(m,"x"))c(m)}),e-=u,o-=d,f(r.nodes(),function(p){var m=r.node(p);m.x-=e,m.y-=o}),f(r.edges(),function(p){var m=r.edge(p);if(f(m.points,function(h){h.x-=e,h.y-=o}),Object.prototype.hasOwnProperty.call(m,"x"))m.x-=e;if(Object.prototype.hasOwnProperty.call(m,"y"))m.y-=o}),s.width=n-e+u,s.height=i-o+d}function du(r){f(r.edges(),function(e){var n=r.edge(e),o=r.node(e.v),i=r.node(e.w),s,u;if(!n.points)n.points=[],s=i,u=o;else s=n.points[0],u=n.points[n.points.length-1];n.points.unshift(Br(o,s)),n.points.push(Br(i,u))})}function cu(r){f(r.edges(),function(e){var n=r.edge(e);if(Object.prototype.hasOwnProperty.call(n,"x")){if(n.labelpos==="l"||n.labelpos==="r")n.width-=n.labeloffset;switch(n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}}})}function pu(r){f(r.edges(),function(e){var n=r.edge(e);if(n.reversed)n.points.reverse()})}function lu(r){f(r.nodes(),function(e){if(r.children(e).length){var n=r.node(e),o=r.node(n.borderTop),i=r.node(n.borderBottom),s=r.node(X(n.borderLeft)),u=r.node(X(n.borderRight));n.width=Math.abs(u.x-s.x),n.height=Math.abs(i.y-o.y),n.x=s.x+n.width/2,n.y=o.y+n.height/2}}),f(r.nodes(),function(e){if(r.node(e).dummy==="border")r.removeNode(e)})}function mu(r){f(r.edges(),function(e){if(e.v===e.w){var n=r.node(e.v);if(!n.selfEdges)n.selfEdges=[];n.selfEdges.push({e,label:r.edge(e)}),r.removeEdge(e)}})}function hu(r){var e=D(r);f(e,function(n){var o=0;f(n,function(i,s){var u=r.node(i);u.order=s+o,f(u.selfEdges,function(d){T(r,"selfedge",{width:d.label.width,height:d.label.height,rank:u.rank,order:s+ ++o,e:d.e,label:d.label},"_se")}),delete u.selfEdges})})}function gu(r){f(r.nodes(),function(e){var n=r.node(e);if(n.dummy==="selfedge"){var o=r.node(n.e.v),i=o.x+o.width/2,s=o.y,u=n.x-i,d=o.height/2;r.setEdge(n.e,n.label),r.removeNode(e),n.label.points=[{x:i+2*u/3,y:s-d},{x:i+5*u/6,y:s-d},{x:i+u,y:s},{x:i+5*u/6,y:s+d},{x:i+2*u/3,y:s+d}],n.label.x=n.x,n.label.y=n.y}})}function Jr(r,e){return q(Z(r,e),Number)}function Zr(r){var e={};return f(r,function(n,o){e[o.toLowerCase()]=n}),e}var oo=t((r,e,n)=>Math.max(e,Math.min(n,r)),"clamp"),io=t((r="TB")=>{switch(r){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";case"TB":default:return"top"}},"getDefaultSelfLoopSide"),vu=t((r)=>r==="flowchart"||r==="flowchart-v2"||r==="stateDiagram"||r==="er"||r==="classDiagram","shouldMergeSelfLoopSegments"),bu=["x","y","width","height","labelBBox","intersect","calcIntersect","diff","clusterNode"],yu=t((r,e,n,o,i)=>{let s=[],u=new Set;if(n.forEach(({start:m,end:h})=>{if(m!==o)u.add(m);if(h!==o)u.add(h)}),u.forEach((m)=>{let h=r.node(m);if(typeof h?.x==="number"&&typeof h?.y==="number")s.push(h)}),s.length===0)n.forEach(({edge:m})=>{(m.points??[]).forEach((h)=>{if(typeof h?.x==="number"&&typeof h?.y==="number")s.push(h)})});if(s.length===0)return io(i);let d=s.reduce((m,h)=>({x:m.x+h.x/s.length,y:m.y+h.y/s.length}),{x:0,y:0}),c=d.x-e.x,p=d.y-e.y;if(Math.abs(c)>Math.abs(p))return c>0?"right":"left";if(Math.abs(p)>0)return p>0?"bottom":"top";return io(i)},"getSelfLoopSide"),wu=t((r,e="top",n=0,o=0)=>{let i=r.x,s=r.y-n,u=r.width/2,d=r.height/2,c=Math.max(36,Math.min(100,r.width*0.8)),p=oo(Math.max(o,r.width*0.35),36,c),m=oo(Math.min(r.width,r.height)*0.45,24,48);switch(e){case"bottom":{let h=s+d;return[{x:i-p/2,y:h},{x:i-p/2,y:h+m},{x:i+p/2,y:h+m},{x:i+p/2,y:h}]}case"right":{let h=i+u;return[{x:h,y:s-p/2},{x:h+m,y:s-p/2},{x:h+m,y:s+p/2},{x:h,y:s+p/2}]}case"left":{let h=i-u;return[{x:h,y:s-p/2},{x:h-m,y:s-p/2},{x:h-m,y:s+p/2},{x:h,y:s+p/2}]}case"top":default:{let h=s-d;return[{x:i-p/2,y:h},{x:i-p/2,y:h-m},{x:i+p/2,y:h-m},{x:i+p/2,y:h}]}}},"getSelfLoopPoints"),_u=t((r,e,n="top",o=0,i={})=>{let u=r.x,d=r.y-o,c=i.width??0,p=i.height??0;switch(n){case"bottom":return{x:u,y:Math.max(...e.map((m)=>m.y))+p/2+4};case"right":return{x:Math.max(...e.map((m)=>m.x))+c/2+4,y:d};case"left":return{x:Math.min(...e.map((m)=>m.x))-c/2-4,y:d};case"top":default:return{x:u,y:Math.min(...e.map((m)=>m.y))-p/2-4}}},"getSelfLoopLabelPosition"),Ki=t((r,e=0,{mergeSelfLoops:n=!0}={})=>{let o=new Map,i=[],s=r.graph()?.rankdir;return r.edges().forEach((u)=>{let d=r.edge(u);if(n&&d.selfLoop){let c=d.selfLoop.id;if(!o.has(c))o.set(c,[]);o.get(c).push({edge:d,start:u.v,end:u.w})}else i.push({edge:d,start:u.v,end:u.w})}),o.forEach((u)=>{if(u.length!==3){u.forEach((_)=>i.push(_));return}u.sort((_,R)=>_.edge.selfLoop.order-R.edge.selfLoop.order);let[d,c,p]=u,m=d.edge.originalEdge??c.edge.originalEdge??p.edge.originalEdge??c.edge,h=r.node(m.start);if(!h){u.forEach((_)=>i.push(_));return}let g={width:c.edge.width,height:c.edge.height},b=yu(r,h,u,m.start,s),w=wu(h,b,e,g.width??0),y=_u(h,w,b,e,g),v={...c.edge,...m,id:m.id,points:w,start:m.start,end:m.end,x:y.x,y:y.y,width:g.width,height:g.height,labelStyle:c.edge.labelStyle,fromCluster:d.edge.fromCluster??c.edge.fromCluster??p.edge.fromCluster,toCluster:d.edge.toCluster??c.edge.toCluster??p.edge.toCluster};delete v.selfLoop,delete v.originalEdge,i.push({edge:v,start:v.start,end:v.end})}),i},"getEdgesToRender"),fo=t(async({element:r,graph:e,diagramType:n,id:o,parentCluster:i,siteConfig:s})=>{let u=e.graph().rankdir;a.trace("Dir in recursive render - dir:",u);let{clusters:d,edgePaths:c,edgeLabels:p,nodes:m,rootGroups:h}=ia(r,{edgePathsClass:"edgePaths"});if(!e.nodes())a.info("No nodes found for",e);else a.info("Recursive render XXX",e.nodes());if(e.edges().length>0)a.info("Recursive edges",e.edge(e.edges()[0]));let g=vu(n);await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let _=JSON.parse(JSON.stringify(i.clusterData));if(a.trace(`Setting data for parent cluster XXX
2
- Node.id = `,y,`
3
- data=`,_.height,`
4
- Parent cluster`,i.height),e.setNode(i.id,_),!e.parent(y))a.trace("Setting parent",y,i.id),e.setParent(y,i.id,_)}if(a.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){a.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:_,nodesep:R}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:_+25,nodesep:R});let Qr=await Lu({element:m,graph:v.graph,diagramType:n,id:o,parentCluster:e.node(y),siteConfig:s}),ee=Qr.elem;I(v,ee),v.diff=Qr.diff||0,a.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),go(ee,v)}else if(e.children(y).length>0)a.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),a.trace(Bn(v.id,e)),W.set(v.id,{id:Bn(v.id,e),node:v});else a.trace("Node - the non recursive path XAX",y,m,e.node(y),u),await oa(m,e.node(y),{config:s,dir:u})})),await t(async()=>{let y=e.edges().map(async function(v){let _=e.edge(v.v,v.w,v.name);if(a.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),a.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),a.info("Fix",W,"ids:",v.v,v.w,"Translating: ",W.get(v.v),W.get(v.w)),g&&_.selfLoop){if(_.selfLoop.order!==1)return;let R={..._.originalEdge,..._,id:_.selfLoop.id,startLabelLeft:_.originalEdge?.startLabelLeft??_.startLabelLeft,startLabelRight:_.originalEdge?.startLabelRight??_.startLabelRight,endLabelLeft:_.originalEdge?.endLabelLeft??_.endLabelLeft,endLabelRight:_.originalEdge?.endLabelRight??_.endLabelRight};await At(p,R),_.width=R.width,_.height=R.height,_.labelStyle=R.labelStyle;return}await At(p,_)});await Promise.all(y)},"processEdges")();let{subGraphTitleTotalMargin:w}=Tt(s);return{elem:h,graph:e,groups:{clusters:d,edgePaths:c,edgeLabels:p,nodes:m,rootGroups:h},diagramType:n,id:o,mergeSelfLoops:g,subGraphTitleTotalMargin:w}},"measureDagreGraph"),so=t((r)=>{a.info("############################################# XXX"),a.info("### Layout ### XXX"),a.info("############################################# XXX"),$r(r)},"runDagreGraphLayout"),Eu=t((r,e,n)=>{let o=r.node(e);if(!o)return;let i={...o};if(o?.clusterNode)i.y=(o.y??0)+n;else if(r.children(e).length>0)i.height=(o.height??0)+n;else i.y=(o.y??0)+n/2;return i},"normalizeDagreNode"),ao=t((r,e)=>{bu.forEach((n)=>{if(e[n]!==void 0)r[n]=e[n]})},"applyDagreNodeLayout"),xu=t((r,e,n,o)=>({...r,start:r.start??e,end:r.end??n,points:(r.points??[]).map((i)=>({...i,y:typeof i.y==="number"?i.y+o:i.y}))}),"normalizeDagreEdge"),Co=t((r,e)=>{let{graph:n,mergeSelfLoops:o,subGraphTitleTotalMargin:i=0}=e,s=new Map(r.nodes.map((d)=>[d.id,d]));sa(n).forEach((d)=>{let c=Eu(n,d,i);if(!c)return;ao(n.node(d),c);let p=s.get(d);if(p)ao(p,c)});let u=i/2;return r.edges=Ki(n,u,{mergeSelfLoops:o}).map(({edge:d,start:c,end:p})=>xu(d,c,p,u)),r},"applyDagreLayoutResult"),Ou=t(async({elem:r,graph:e,groups:{clusters:n,edgePaths:o},diagramType:i,id:s,mergeSelfLoops:u,subGraphTitleTotalMargin:d})=>{let c=0;await Promise.all(sa(e).map(async function(h){let g=e.node(h);if(a.info("Position XBX => "+h+": ("+g.x,","+g.y,") width: ",g.width," height: ",g.height),g?.clusterNode)g.y+=d,a.info("A tainted cluster node XBX1",h,g.id,g.width,g.height,g.x,g.y,e.parent(h)),W.get(g.id).node=g,yt(g);else if(e.children(h).length>0){a.info("A pure cluster node XBX1",h,g.id,g.x,g.y,g.width,g.height,e.parent(h)),g.height+=d,e.node(g.parentId);let b=g?.padding/2||0,w=g?.labelBBox?.height||0,y=w-b||0;a.debug("OffsetY",y,"labelHeight",w,"halfPadding",b),await tn(n,g),W.get(g.id).node=g}else{let b=e.node(g.parentId);g.y+=d/2,a.info("A regular node XBX1 - using the padding",g.id,"parent",g.parentId,g.width,g.height,g.x,g.y,"offsetY",g.offsetY,"parent",b,b?.offsetY,g),yt(g)}}));let p=d/2;return Ki(e,p,{mergeSelfLoops:u}).forEach(function({edge:h,start:g,end:b}){a.info("Edge "+g+" -> "+b+": "+JSON.stringify(h),h),h.points.forEach((_)=>_.y+=p);let w=e.node(g),y=e.node(b),v=nn(o,h,W,i,w,y,s);Yn(h,v)}),e.nodes().forEach(function(h){let g=e.node(h);if(a.info(h,g.type,g.diff),g.isGroup)c=g.diff}),a.warn("Returning from recursive render XAX",r,c),{elem:r,diff:c}},"paintDagreLayoutCore"),Lu=t(async(r)=>{let e=await fo(r);return so(e.graph),await Ou(e)},"renderDagreSubgraph"),Qi=t((r)=>{let e=new re({multigraph:!0,compound:!0}).setGraph({rankdir:r.direction,nodesep:r.config?.nodeSpacing||r.nodeSpacing||r.config?.flowchart?.nodeSpacing,ranksep:r.config?.rankSpacing||r.rankSpacing||r.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return r.nodes.forEach((n)=>{if(e.setNode(n.id,{...n}),n.parentId)e.setParent(n.id,n.parentId)}),a.debug("Edges:",r.edges),r.edges.forEach((n)=>{if(n.start===n.end){let o=n.start,i=o+"---"+o+"---1",s=o+"---"+o+"---2",u=e.node(o);e.setNode(i,{domId:i,id:i,parentId:u.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),e.setParent(i,u.parentId),e.setNode(s,{domId:s,id:s,parentId:u.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),e.setParent(s,u.parentId);let d=structuredClone(n),c=structuredClone(n),p=structuredClone(n),m=structuredClone(n);if(c.originalEdge=d,c.selfLoop={id:d.id,order:0},p.originalEdge=d,p.selfLoop={id:d.id,order:1},m.originalEdge=d,m.selfLoop={id:d.id,order:2},c.label="",c.arrowTypeEnd="none",c.endLabelLeft="",c.endLabelRight="",c.startLabelLeft="",c.id=o+"-cyclic-special-1",p.startLabelRight="",p.startLabelLeft="",p.endLabelLeft="",p.endLabelRight="",p.arrowTypeStart="none",p.arrowTypeEnd="none",p.id=o+"-cyclic-special-mid",m.label="",m.startLabelRight="",m.startLabelLeft="",m.arrowTypeStart="none",u.isGroup)c.fromCluster=o,m.toCluster=o;m.id=o+"-cyclic-special-2",m.arrowTypeStart="none",e.setEdge(o,i,c,o+"-cyclic-special-0"),e.setEdge(i,s,p,o+"-cyclic-special-1"),e.setEdge(s,o,m,o+"-cyclic-special-2")}else e.setEdge(n.start,n.end,{...n},n.id)}),eo(e),{graph:e}},"prepareLayoutForDagre"),So=t(async(r,{element:e,preparedLayout:n})=>{let o=n??Qi(r),i=l(),s=await fo({element:e,graph:o.graph,diagramType:r.type,id:r.diagramId,parentCluster:void 0,siteConfig:i});return o.measuredLayout=s,s},"measureDagreLayout"),To=t((r,e)=>{let n=e.preparedLayout?.measuredLayout;if(!n)throw Error("runDagreLayoutCore requires measureDagreLayout to run first");return so(n.graph),Co(r,n),n},"runDagreLayoutCore"),Iu=t((r,{measure:e})=>sa(e.graph).map((n)=>e.graph.node(n)).filter(Boolean),"getDagrePaintNodes"),Su=t((r,e,{measure:n})=>r?n.graph.node(r):void 0,"getDagreEdgeNode"),Ji=lr({prepareLayout:Qi,measureLayout:So,runLayoutCore:To,paintOptions:{clusterDb:W,getNodes:Iu,getEdgeNode:Su,skipNode:t((r,{measure:e})=>!e.graph.hasNode(r.id),"skipNode"),isCluster:t((r,{measure:e})=>e.graph.hasNode(r.id)&&(e.graph.children(r.id)??[]).length>0,"isCluster")}});export{Ki,Co,Qi,So,To,Ji};
@@ -1 +0,0 @@
1
- import"./chunk-3q0v8w45.js";import"./chunk-33w36n91.js";import"./chunk-mf6xng5b.js";import{Ji}from"./chunk-qt3n897m.js";export{Ji as render};
@@ -1,7 +0,0 @@
1
- import{h,o,y,i,r,g,e,n,b,rt}from"./chunk-gcwhx3av.js";var U="__chat__";function T(a){if(!Number.isFinite(a)||a<=0)return"0";if(a<1000)return Math.round(a).toString();if(a<1e6)return`${(a/1000).toFixed(1)}K`;if(a<1e9)return`${(a/1e6).toFixed(2)}M`;return`${(a/1e9).toFixed(2)}B`}function B(a){let c=Number.isFinite(a)?Math.max(0,a):0;return Math.round(c).toLocaleString("en-US")}function _(a){if(!Number.isFinite(a)||a<=0)return"0s";if(a<1000)return"<1s";if(a<60000)return`${Math.floor(a/1000)}s`;if(a<3600000){let u=Math.floor(a/1000),t=Math.floor(u/60),d=u%60;return d>0?`${t}m ${d}s`:`${t}m`}if(a<259200000){let u=Math.floor(a/60000),t=Math.floor(u/60),d=u%60;return d>0?`${t}h ${d}m`:`${t}h`}let c=Math.floor(a/3600000),x=Math.floor(c/24),p=c%24;return p>0?`${x}d ${p}h`:`${x}d`}function X(a){if(!Number.isFinite(a)||a<=0)return"0s";if(a<1000)return"<1s";if(a<60000)return`${Math.round(a/1000)}s`;if(a<3600000)return`${Math.round(a/60000)}m`;if(a<86400000){let p=a/3600000;return`${p>=10?Math.round(p).toString():p.toFixed(1).replace(/\.0$/,"")}h`}let c=a/86400000;return`${c>=10?Math.round(c).toString():c.toFixed(1).replace(/\.0$/,"")}d`}function L(a,c=1){if(!Number.isFinite(a)||a<=0)return"0%";let x=10**-c/100;if(a<x)return`<${(x*100).toFixed(c)}%`;return`${(a*100).toFixed(c)}%`}function K(a){if(!Number.isFinite(a)||a<=0)return"0 B";if(a<1024)return`${Math.round(a)} B`;if(a<1048576)return`${(a/1024).toFixed(1)} KB`;if(a<1073741824)return`${(a/1048576).toFixed(2)} MB`;return`${(a/1073741824).toFixed(2)} GB`}function G(a){let c=a.split("-"),x=c[1],p=c[2];if(x!==void 0&&p!==void 0)return`${x}/${p}`;return a}function Y(a){let c=a.split("-"),x=c[0],p=c[1],u=c[2];if(x===void 0||p===void 0||u===void 0)return a;let t=Number(x),d=Number(p)-1,v=Number(u),M=new Date(Date.UTC(t,d,v)),R=["周日","周一","周二","周三","周四","周五","周六"],D=M.getUTCDay(),F=R[D]??"";return`${a} ${F}`}function ee(a,c=Date.now()){if(a===null||a===void 0||!Number.isFinite(a)||a<=0)return"从未";let x=Math.max(0,c-a);if(x<60000)return"刚刚";if(x<3600000)return`${Math.max(1,Math.floor(x/60000))} 分钟前`;if(x<86400000)return`${Math.max(1,Math.floor(x/3600000))} 小时前`;if(x<2592000000)return`${Math.max(1,Math.floor(x/86400000))} 天前`;let p=new Date(a),u=p.getFullYear(),t=String(p.getMonth()+1).padStart(2,"0"),d=String(p.getDate()).padStart(2,"0");return`${u}-${t}-${d}`}function te(a){let{projects:c,selectedProjectID:x,onSelectProject:p}=a,{style:u}=b();if(c.length===0)return e("div",{className:u("surface.empty"),children:"暂无项目统计数据"});return e("div",{className:"divide-y divide-line",children:c.map((t)=>{let d=t.projectID??U,v=x===d,M=Math.max(t.tokenShare>0?1:0,t.tokenShare*100);return n("div",{className:"p-4 space-y-2.5",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[n("div",{className:"flex min-w-0 items-center gap-2",children:[e("span",{className:"font-medium text-sm text-ink truncate",children:t.name}),e("span",{className:u("control.badge","font-mono truncate max-w-[240px]"),title:t.directory||"未绑定项目目录",children:t.directory||"独立会话"}),e("button",{type:"button",onClick:()=>p(v?null:d),className:"rounded px-1.5 py-0.5 text-[11px] text-accent hover:bg-accent/10 transition-colors cursor-pointer shrink-0",children:v?"取消筛选":"筛选"})]}),n("div",{className:"flex items-baseline gap-1.5 font-mono tabular-nums shrink-0",children:[e("span",{className:"text-xs font-medium text-ink",title:B(t.totalTokens),children:T(t.totalTokens)}),n("span",{className:"text-[11px] text-faint",children:["(",L(t.tokenShare),")"]})]})]}),e("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-raised",children:e("div",{className:"h-full rounded-full bg-accent transition-all duration-300",style:{width:`${M}%`}})}),n("div",{className:"flex flex-wrap items-center justify-between gap-x-4 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["输入 ",e("span",{className:"text-ink",children:T(t.inputTokens)})]}),n("span",{children:["输出 ",e("span",{className:"text-ink",children:T(t.outputTokens)})]}),n("span",{children:["缓存读 ",e("span",{className:"text-ink",children:T(t.cacheReadTokens)}),n("span",{className:"text-faint",children:[" (",L(t.cacheHitRate),")"]})]})]}),n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["耗时 ",e("span",{className:"text-ink",children:_(t.activeDurationMs)})]}),n("span",{children:[e("span",{className:"text-ink",children:t.sessionCount.toLocaleString()})," 会话"]}),n("span",{children:["工具 ",e("span",{className:"text-ink",children:t.toolCalls.toLocaleString()})," 次"]})]})]})]},d)})})}function ae(a){let{models:c}=a,{ModelIcon:x,style:p}=b();if(c.length===0)return e("div",{className:p("surface.empty"),children:"暂无模型调用数据"});return e("div",{className:"divide-y divide-line",children:c.map((u)=>{let t=Math.max(u.share>0?1:0,u.share*100);return n("div",{className:"p-4 space-y-2.5",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[n("div",{className:"flex min-w-0 items-center gap-2",children:[e(x,{modelID:u.model,className:"size-4 shrink-0"}),e("span",{className:"font-mono text-sm font-medium text-ink truncate",children:u.shortName}),e("span",{className:p("control.badge","font-mono shrink-0"),children:u.provider})]}),n("div",{className:"flex items-baseline gap-2.5 font-mono tabular-nums shrink-0",children:[u.avgTps!==null&&n("span",{className:"text-[11px] text-dim",children:[u.avgTps.toFixed(1)," tok/s"]}),n("span",{className:"text-xs font-medium text-ink",title:B(u.totalTokens),children:[T(u.totalTokens)," ",n("span",{className:"text-[11px] font-normal text-faint",children:["(",L(u.share),")"]})]})]})]}),e("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-raised",children:e("div",{className:"h-full rounded-full bg-accent transition-all duration-300",style:{width:`${t}%`}})}),n("div",{className:"flex flex-wrap items-center justify-between gap-x-4 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["输入 ",e("span",{className:"text-ink",children:T(u.inputTokens)})]}),n("span",{children:["输出 ",e("span",{className:"text-ink",children:T(u.outputTokens)})]}),n("span",{children:["缓存读 ",e("span",{className:"text-ink",children:T(u.cacheReadTokens)}),n("span",{className:"text-faint",children:[" (",L(u.cacheHitRate),")"]})]})]}),n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:[e("span",{className:"text-ink",children:u.turns.toLocaleString()})," 轮",u.errors>0?n("span",{className:"text-danger",children:[" (",u.errors," 错)"]}):null]}),n("span",{children:["工具 ",e("span",{className:"text-ink",children:u.toolCalls.toLocaleString()})," 次"]}),u.generationMs>0&&n("span",{children:["推理 ",e("span",{className:"text-ink",children:X(u.generationMs)})]})]})]})]},u.model)})})}function ne(a){let{tools:c}=a,{StatusChip:x,style:p}=b();if(c.length===0)return e("div",{className:p("surface.empty"),children:"暂无工具调用数据"});return e("div",{className:"divide-y divide-line",children:c.map((u)=>{let t=Math.max(u.share>0?1:0,u.share*100),d=u.successRate>=0.95?"success":u.successRate>=0.8?"warning":"danger",v=Math.max(0,u.calls-u.errors),M=u.calls>0?Math.round(u.outputBytes/u.calls):0;return n("div",{className:"p-4 space-y-2.5",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[n("div",{className:"flex min-w-0 items-center gap-2",children:[e("span",{className:"font-mono text-sm font-medium text-ink truncate",children:u.name}),n(x,{tone:d,children:["成功率 ",L(u.successRate)]})]}),n("div",{className:"flex items-baseline gap-1.5 font-mono tabular-nums shrink-0",children:[n("span",{className:"text-xs font-medium text-ink",children:[u.calls.toLocaleString()," 次"]}),n("span",{className:"text-[11px] text-faint",children:["(",L(u.share),")"]})]})]}),e("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-raised",children:e("div",{className:"h-full rounded-full bg-accent transition-all duration-300",style:{width:`${t}%`}})}),n("div",{className:"flex flex-wrap items-center justify-between gap-x-4 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["成功 ",e("span",{className:"text-ink",children:v.toLocaleString()})," 次"]}),n("span",{children:["失败 ",e("span",{className:u.errors>0?"text-danger":"text-ink",children:u.errors.toLocaleString()})," 次"]})]}),n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["累计输出 ",e("span",{className:"text-ink",children:K(u.outputBytes)})]}),n("span",{children:["单次均值 ",e("span",{className:"text-ink",children:K(M)})]})]})]})]},u.name)})})}function se(a){let{sessions:c,onOpenSession:x}=a,{style:p}=b();if(c.length===0)return e("div",{className:p("surface.empty"),children:"暂无高消耗会话记录"});let u=Math.max(1,...c.map((t)=>t.totalTokens));return e("div",{className:"divide-y divide-line",children:c.map((t)=>{let d=u>0?Math.max(1,t.totalTokens/u*100):0,v=t.model.split("/").pop()??t.model;return n("button",{type:"button",onClick:()=>x(t.id),className:"group block w-full p-4 text-left space-y-2.5 hover:bg-raised/40 transition-colors cursor-pointer",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e("span",{className:"font-medium text-sm text-ink truncate group-hover:text-accent transition-colors",children:t.title.trim()||"新会话"}),e("span",{className:p("control.badge","font-mono truncate max-w-[140px] shrink-0"),title:t.projectName,children:t.projectName}),t.kind==="sub"&&e("span",{className:"rounded bg-accent/15 px-1.5 py-0.5 text-[10.5px] text-accent shrink-0",children:"子代理"}),t.archivedAt!==null&&e("span",{className:p("control.badge","shrink-0"),children:"已归档"})]}),n("div",{className:"flex items-center gap-1.5 font-mono tabular-nums shrink-0",children:[e("span",{className:"text-xs font-medium text-ink",title:B(t.totalTokens),children:T(t.totalTokens)}),e(rt,{className:"size-3.5 text-faint group-hover:text-ink group-hover:translate-x-0.5 transition-all"})]})]}),e("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-raised",children:e("div",{className:"h-full rounded-full bg-accent transition-all duration-300",style:{width:`${d}%`}})}),n("div",{className:"flex flex-wrap items-center justify-between gap-x-4 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n("span",{children:["输入 ",e("span",{className:"text-ink",children:T(t.inputTokens)})]}),n("span",{children:["输出 ",e("span",{className:"text-ink",children:T(t.outputTokens)})]}),n("span",{children:["缓存读 ",e("span",{className:"text-ink",children:T(t.cacheReadTokens)})]})]}),n("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[e("span",{className:"text-ink",children:v}),n("span",{children:["耗时 ",e("span",{className:"text-ink",children:_(t.activeDurationMs)})]}),n("span",{children:[e("span",{className:"text-ink",children:t.assistantTurns})," 轮"]}),e("span",{className:"text-faint",children:ee(t.updated)})]})]})]},t.id)})})}var oe=[{value:"tokens",label:"Token 用量"},{value:"duration",label:"活跃耗时"},{value:"activity",label:"交互轮次"}];function re(a){let{cn:c,Segmented:x,SettingGroup:p,style:u}=b(),{daily:t}=a,[d,v]=r("tokens"),[M,R]=r(null),D=y(()=>t.some((s)=>s.totalTokens>0||s.activeDurationMs>0||s.runs>0),[t]),F=y(()=>{if(t.length===0)return{totalText:"0",avgText:"0",peakDate:"—",peakValueText:"0"};if(d==="tokens"){let w=t.reduce((C,I)=>C+I.totalTokens,0),P=t.filter((C)=>C.totalTokens>0).length,S=t[0];for(let C of t)if(!S||C.totalTokens>S.totalTokens)S=C;return{totalText:T(w),totalFullText:B(w),avgText:P>0?T(Math.round(w/P)):"0",peakDate:S&&S.totalTokens>0?G(S.date):"—",peakValueText:S&&S.totalTokens>0?T(S.totalTokens):"0"}}if(d==="duration"){let w=t.reduce((C,I)=>C+I.activeDurationMs,0),P=t.filter((C)=>C.activeDurationMs>0).length,S=t[0];for(let C of t)if(!S||C.activeDurationMs>S.activeDurationMs)S=C;return{totalText:_(w),totalFullText:_(w),avgText:P>0?_(Math.round(w/P)):"0s",peakDate:S&&S.activeDurationMs>0?G(S.date):"—",peakValueText:S&&S.activeDurationMs>0?_(S.activeDurationMs):"0s"}}let s=t.reduce((w,P)=>w+P.assistantTurns,0),l=t.reduce((w,P)=>w+P.userMessages,0),f=s+l,N=t.filter((w)=>w.assistantTurns>0||w.userMessages>0).length,k=t[0];for(let w of t){let P=k?k.assistantTurns+k.userMessages:0;if(!k||w.assistantTurns+w.userMessages>P)k=w}let A=k?k.assistantTurns+k.userMessages:0;return{totalText:`${f.toLocaleString()} 轮`,totalFullText:`助手 ${s.toLocaleString()} 轮 · 用户 ${l.toLocaleString()} 问`,avgText:N>0?`${(f/N).toFixed(1)} 轮/天`:"0 轮/天",peakDate:k&&A>0?G(k.date):"—",peakValueText:k&&A>0?`${A.toLocaleString()} 轮`:"0 轮"}},[t,d]),j=y(()=>{if(M){let s=t.find((l)=>l.date===M);if(s)return s}for(let s=t.length-1;s>=0;s--){let l=t[s];if(l&&(l.totalTokens>0||l.activeDurationMs>0||l.runs>0))return l}return t[t.length-1]},[t,M]),z=y(()=>{if(d==="tokens")return Math.max(1,...t.map((s)=>s.totalTokens));if(d==="duration")return Math.max(1000,...t.map((s)=>s.activeDurationMs));return Math.max(1,...t.map((s)=>s.assistantTurns+s.userMessages))},[t,d]),m=y(()=>{if(t.length<=7)return t.map((f)=>f.date);let s=6,l=[];for(let f=0;f<s;f++){let N=Math.round(f*(t.length-1)/(s-1)),k=t[N];if(k)l.push(k.date)}return l},[t]);if(!D)return e(p,{title:"每日趋势",action:e(x,{value:d,onChange:(s)=>v(s),options:oe}),children:e("div",{className:u("surface.empty"),children:"当前时间范围内暂无活跃数据"})});return e(p,{title:"每日趋势",action:e(x,{value:d,onChange:(s)=>v(s),options:oe}),children:n("div",{className:"p-4 space-y-4",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[n("div",{className:"flex flex-wrap items-center gap-x-3.5 gap-y-1 font-mono text-dim tabular-nums",children:[n("span",{children:["汇总 ",e("span",{className:"text-ink",children:F.totalText})]}),n("span",{children:["日均 ",e("span",{className:"text-ink",children:F.avgText})]}),n("span",{children:["峰值 ",e("span",{className:"text-ink",children:F.peakValueText}),F.peakDate!=="—"?n("span",{className:"text-faint",children:[" (",F.peakDate,")"]}):null]})]}),n("div",{className:"flex items-center gap-3 text-[11px] text-dim",children:[d==="tokens"&&n(g,{children:[n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-accent/40"}),"缓存读"]}),n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-accent"}),"输入"]}),n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-success"}),"输出"]})]}),d==="duration"&&n(g,{children:[n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-accent"}),"工作调度"]}),n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-success"}),"模型推理"]})]}),d==="activity"&&n(g,{children:[n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-accent"}),"助手回复"]}),n("span",{className:"inline-flex items-center gap-1.5",children:[e("span",{className:"size-2 rounded-full bg-success"}),"用户提问"]})]})]})]}),n("div",{className:"relative h-44 w-full pt-1",children:[n("div",{className:"absolute inset-0 flex flex-col justify-between pointer-events-none pb-5 text-[10px] text-faint/60",children:[e("div",{className:"border-b border-line/40 w-full"}),e("div",{className:"border-b border-line/30 w-full"}),e("div",{className:"border-b border-line/40 w-full"})]}),n("section",{"aria-label":"每日趋势柱状序列",className:"relative h-full flex flex-col justify-between",onMouseLeave:()=>R(null),children:[e("div",{className:"flex-1 flex items-end gap-1 sm:gap-1.5 pb-2",children:t.map((s)=>{let l=s.totalTokens;if(d==="duration")l=s.activeDurationMs;else if(d==="activity")l=s.assistantTurns+s.userMessages;let f=l<=0,N=f?0:Math.max(3,Math.min(100,l/z*100)),k=j?.date===s.date;return n("button",{type:"button","aria-label":`${s.date} 统计数据`,className:"flex-1 h-full flex flex-col justify-end items-center group cursor-pointer relative min-w-0 bg-transparent p-0 border-0 focus:outline-hidden",onMouseEnter:()=>R(s.date),onFocus:()=>R(s.date),onClick:()=>R(s.date),children:[e("div",{className:c("absolute inset-y-0 w-full rounded-xs transition-colors pointer-events-none",k?"bg-accent/10":"group-hover:bg-raised/60")}),f?e("div",{className:"h-1 w-full max-w-[24px] rounded-full bg-raised group-hover:bg-dim/30"}):n("div",{className:"w-full max-w-[24px] rounded-t-xs overflow-hidden flex flex-col justify-end transition-all duration-150",style:{height:`${N}%`},children:[d==="tokens"&&n(g,{children:[s.outputTokens>0&&e("div",{className:"bg-success transition-all duration-200",style:{height:`${s.outputTokens/s.totalTokens*100}%`}}),s.inputTokens+s.cacheWriteTokens>0&&e("div",{className:"bg-accent transition-all duration-200",style:{height:`${(s.inputTokens+s.cacheWriteTokens)/s.totalTokens*100}%`}}),s.cacheReadTokens>0&&e("div",{className:"bg-accent/40 transition-all duration-200",style:{height:`${s.cacheReadTokens/s.totalTokens*100}%`}})]}),d==="duration"&&n(g,{children:[s.generationMs>0&&e("div",{className:"bg-success transition-all duration-200",style:{height:`${Math.min(100,s.generationMs/Math.max(1,s.activeDurationMs)*100)}%`}}),e("div",{className:"bg-accent flex-1 transition-all duration-200"})]}),d==="activity"&&n(g,{children:[s.userMessages>0&&e("div",{className:"bg-success transition-all duration-200",style:{height:`${s.userMessages/Math.max(1,s.assistantTurns+s.userMessages)*100}%`}}),e("div",{className:"bg-accent flex-1 transition-all duration-200"})]})]}),k&&e("div",{className:"absolute -bottom-1 size-1 rounded-full bg-accent"})]},s.date)})}),e("div",{className:c("flex items-center pt-1.5 text-[10px] text-faint font-mono tabular-nums",t.length<=7?"gap-1 sm:gap-1.5":"justify-between"),children:m.map((s)=>e("div",{className:c("whitespace-nowrap",t.length<=7&&"flex-1 text-center"),children:G(s)},s))})]})]}),e("div",{className:"flex flex-wrap items-center justify-between gap-2 border-t border-line pt-3 font-mono text-xs tabular-nums",children:j?n(g,{children:[e("span",{className:"text-ink",children:Y(j.date)}),n("div",{className:"flex flex-wrap items-center gap-x-3.5 gap-y-1 text-dim",children:[n("span",{children:["Token ",e("span",{className:"text-ink",children:T(j.totalTokens)})]}),n("span",{children:["耗时 ",e("span",{className:"text-ink",children:_(j.activeDurationMs)})]}),n("span",{children:["交互 ",n("span",{className:"text-ink",children:[j.assistantTurns+j.userMessages," 轮"]})]}),n("span",{children:["工具 ",n("span",{className:"text-ink",children:[j.toolCalls," 次"]})]})]})]}):e("span",{className:"font-sans text-faint",children:"悬停柱状图查看单日明细"})})]})})}function ie(a){let{cn:c,SettingGroup:x}=b(),{daily:p,hourly:u}=a,[t,d]=r(null),v=y(()=>{let l=new Map;for(let N of u)l.set(N.hour,N);let f=[];for(let N=0;N<24;N++){let k=l.get(N);if(k)f.push(k);else f.push({hour:N,totalTokens:0,activeDurationMs:0,userMessages:0,assistantTurns:0,runs:0})}return f},[u]),M=y(()=>{let l=v[0];for(let f of v)if(!l||f.totalTokens>l.totalTokens)l=f;return l&&l.totalTokens>0?l:null},[v]),R=y(()=>v.reduce((l,f)=>l+f.totalTokens,0),[v]),D=y(()=>Math.max(1,...v.map((l)=>l.totalTokens)),[v]),F=y(()=>{if(R<=0)return 0;return v.filter((f)=>f.hour>=8&&f.hour<20).reduce((f,N)=>f+N.totalTokens,0)/R},[v,R]),j=y(()=>Math.max(1,...p.map((l)=>l.totalTokens)),[p]),z=y(()=>{let l=0,f=0;for(let N of p)if(N.totalTokens>0||N.activeDurationMs>0||N.runs>0){if(f++,f>l)l=f}else f=0;return l},[p]),m=y(()=>p.filter((l)=>l.totalTokens>0||l.activeDurationMs>0||l.runs>0).length,[p]),s=t!==null?v[t]:M;return n(x,{title:"活跃时段与热力",action:n("div",{className:"flex items-center gap-3 font-mono text-xs text-faint tabular-nums",children:[n("span",{children:["日间占比 ",L(F)]}),n("span",{children:["连续活跃 ",z," 天"]}),n("span",{children:["活跃 ",m,"/",p.length," 天"]})]}),children:[n("div",{className:"p-4 space-y-3",children:[n("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs",children:[e("span",{className:"text-dim",children:"24 小时分布"}),s?n("div",{className:"flex items-center gap-3 font-mono text-dim tabular-nums",children:[n("span",{className:"text-ink",children:[t!==null?"时段 ":"高峰 ",String(s.hour).padStart(2,"0"),":00 -"," ",String((s.hour+1)%24).padStart(2,"0"),":00"]}),e("span",{className:"text-ink",children:T(s.totalTokens)}),s.activeDurationMs>0&&e("span",{children:_(s.activeDurationMs)})]}):e("span",{className:"text-faint",children:"暂无时段分布"})]}),n("section",{"aria-label":"24 小时活跃分布序列",className:"h-28 w-full flex flex-col justify-between pt-1",onMouseLeave:()=>d(null),children:[e("div",{className:"flex-1 flex items-end gap-1.5 pb-1.5",children:v.map((l)=>{let f=M?.hour===l.hour,N=t===l.hour,k=l.totalTokens>0?Math.max(6,l.totalTokens/D*100):0,A=`${String(l.hour).padStart(2,"0")}:00 - ${String((l.hour+1)%24).padStart(2,"0")}:00
2
- 消耗: ${B(l.totalTokens)} Token
3
- 耗时: ${_(l.activeDurationMs)}
4
- 助手轮次: ${l.assistantTurns} 轮`;return e("button",{type:"button","aria-label":`${String(l.hour).padStart(2,"0")}:00 时段统计`,className:"flex-1 h-full flex flex-col justify-end items-center group relative cursor-pointer bg-transparent p-0 border-0 focus:outline-hidden",title:A,onMouseEnter:()=>d(l.hour),onFocus:()=>d(l.hour),onClick:()=>d(l.hour),children:k>0?e("div",{className:c("w-full max-w-[20px] rounded-t-xs transition-all duration-200",f||N?"bg-accent":"bg-accent/55 group-hover:bg-accent"),style:{height:`${k}%`}}):e("div",{className:"h-1 w-full max-w-[20px] rounded-full bg-raised group-hover:bg-dim/30"})},l.hour)})}),n("div",{className:"flex justify-between items-center text-[10px] text-faint font-mono pt-1.5 border-t border-line/40",children:[e("span",{children:"00:00"}),e("span",{children:"04:00"}),e("span",{children:"08:00"}),e("span",{children:"12:00"}),e("span",{children:"16:00"}),e("span",{children:"20:00"}),e("span",{children:"23:00"})]})]})]}),n("div",{className:"p-4 space-y-2.5",children:[n("div",{className:"text-xs text-dim",children:["自然日热力 (",p.length," 天)"]}),e("div",{className:"flex flex-wrap items-center gap-1.5",children:p.map((l)=>{let f="bg-raised";if(l.totalTokens>0){let k=l.totalTokens/j;if(k<=0.33)f="bg-accent/30";else if(k<=0.66)f="bg-accent/60";else f="bg-accent"}let N=`${Y(l.date)}
5
- 消耗: ${B(l.totalTokens)} Token
6
- 耗时: ${_(l.activeDurationMs)}
7
- 助手轮次: ${l.assistantTurns} 轮`;return e("div",{className:c("size-3.5 rounded-xs transition-transform hover:scale-125 cursor-pointer",f),title:N},l.date)})})]})]})}var pe=[{value:"7d",label:"近 7 天"},{value:"30d",label:"近 30 天"},{value:"90d",label:"近 90 天"},{value:"all",label:"全部"}],V=new Map,le=[];function q(a,c){return`${a}:${c??"all"}`}function _e(a){let{connection:c,onOpen:x}=a,{Button:p,PageLayout:u,Segmented:t,SettingGroup:d,style:v}=b(),[M,R]=r("30d"),[D,F]=r(null),[j,z]=r("projects"),[m,s]=r(()=>V.get(q("30d",null))??null),[l,f]=r(()=>!V.has(q("30d",null))),[N,k]=r(null),[A,w]=r(()=>le),P=i(0),S=h(async()=>{let I=++P.current,O=q(M,D),Q=V.get(O);if(Q)s(Q);f(!0);try{let E=new URLSearchParams({range:M,tzOffset:String(new Date().getTimezoneOffset())});if(D)E.set("projectID",D);let W=await c.request(`/api/stats?${E.toString()}`);if(I!==P.current)return;if(V.set(O,W),s(W),k(null),W.projects)w((ue)=>{let Z=new Map(ue.map((H)=>[H.id,H.name]));for(let H of W.projects)if(H.projectID)Z.set(H.projectID,H.name);let J=Array.from(Z.entries()).map(([H,ce])=>({id:H,name:ce}));return le=J,J})}catch(E){if(I===P.current)k(E instanceof Error?E.message:"加载统计数据失败")}finally{if(I===P.current)f(!1)}},[c,M,D]);o(()=>(S(),()=>{P.current++}),[S]);let C=y(()=>{if(!D)return null;if(D===U)return"独立聊天";return(A.find((O)=>O.id===D)??m?.projects.find((O)=>O.projectID===D))?.name??"指定项目"},[D,A,m]);return n(u,{title:C?n(g,{children:["统计 ",n("span",{className:"text-dim",children:["· ",C]})]}):"统计",description:"按项目、模型与工具统计活跃耗时与 Token 消耗。",actions:n(g,{children:[D&&e(p,{size:"sm",variant:"ghost",onClick:()=>F(null),children:"返回全部"}),e(t,{value:M,onChange:R,options:pe})]}),children:[N&&n("div",{className:"mb-4 flex items-center justify-between rounded-lg bg-danger/10 px-3 py-2 text-xs text-danger",children:[e("span",{children:N}),e(p,{size:"sm",variant:"ghost",onClick:()=>{S()},className:"text-danger hover:text-danger",children:"重试"})]}),l&&!m?e("div",{className:"flex justify-center py-12 text-xs text-faint",children:"正在加载统计…"}):!m?e("div",{className:v("surface.card","p-12 text-center text-sm text-dim"),children:"暂无统计数据"}):n("div",{className:"space-y-8",children:[e(d,{title:"核心总览",unboxed:!0,children:n("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[n("div",{className:v("surface.card","p-4"),children:[n("div",{className:"flex items-center justify-between gap-2 text-xs text-faint",children:[e("span",{children:"总 Token 消耗"}),n("span",{className:"font-mono tabular-nums",children:["缓存命中 ",L(m.overview.cacheHitRate)]})]}),e("div",{className:"mt-1.5 font-mono text-xl font-semibold tracking-tight text-ink tabular-nums",title:`${B(m.overview.totalTokens)} Token`,children:T(m.overview.totalTokens)}),n("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("span",{children:["输入 ",T(m.overview.inputTokens)]}),n("span",{children:["输出 ",T(m.overview.outputTokens)]}),n("span",{children:["缓存读 ",T(m.overview.cacheReadTokens)]})]})]}),n("div",{className:v("surface.card","p-4"),children:[n("div",{className:"flex items-center justify-between gap-2 text-xs text-faint",children:[e("span",{children:"活跃工作耗时"}),n("span",{className:"font-mono tabular-nums",children:["日均"," ",m.overview.activeDays>0?_(m.overview.activeDurationMs/m.overview.activeDays):"0s"]})]}),e("div",{className:"mt-1.5 font-mono text-xl font-semibold tracking-tight text-ink tabular-nums",children:_(m.overview.activeDurationMs)}),n("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("span",{children:["模型推理 ",_(m.overview.generationMs)]}),n("span",{children:["并发累计 ",_(m.overview.cumulativeRunDurationMs)]})]})]}),n("div",{className:v("surface.card","p-4"),children:[n("div",{className:"flex items-center justify-between gap-2 text-xs text-faint",children:[e("span",{children:"会话与工作流"}),n("span",{className:"font-mono tabular-nums",children:[m.overview.activeProjects,"/",m.overview.totalProjects," 活跃项目"]})]}),n("div",{className:"mt-1.5 font-mono text-xl font-semibold tracking-tight text-ink tabular-nums",children:[m.overview.sessionCount.toLocaleString()," 个会话"]}),n("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("span",{children:[m.overview.mainSessionCount," 主会话 / ",m.overview.subSessionCount," 子代理"]}),n("span",{children:[m.overview.userMessages," 提问 / ",m.overview.assistantTurns," 回复"]})]})]}),n("div",{className:v("surface.card","p-4"),children:[n("div",{className:"flex items-center justify-between gap-2 text-xs text-faint",children:[e("span",{children:"吞吐效率与调用"}),n("span",{className:"font-mono tabular-nums",children:[m.overview.compactions," 次折叠"]})]}),e("div",{className:"mt-1.5 font-mono text-xl font-semibold tracking-tight text-ink tabular-nums",children:m.overview.avgTps!==null?`${m.overview.avgTps.toFixed(1)} tok/s`:`${m.overview.toolCalls.toLocaleString()} 次调用`}),n("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-dim tabular-nums",children:[n("span",{children:[m.overview.toolCalls.toLocaleString()," 次工具调用"]}),n("span",{children:[m.overview.runCount.toLocaleString()," 次运行"]})]})]})]})}),e(re,{daily:m.daily}),e(ie,{daily:m.daily,hourly:m.hourly}),e(d,{title:"分类明细",action:e(t,{value:j,onChange:z,options:[{value:"projects",label:`项目消耗 (${m.projects.length})`},{value:"models",label:`模型分析 (${m.models.length})`},{value:"tools",label:`工具调用 (${m.tools.length})`},{value:"sessions",label:`高消耗会话 (${m.topSessions.length})`}]}),children:n("div",{className:"animate-fade",children:[j==="projects"&&e(te,{projects:m.projects,selectedProjectID:D,onSelectProject:F,onOpenSession:x}),j==="models"&&e(ae,{models:m.models}),j==="tools"&&e(ne,{tools:m.tools}),j==="sessions"&&e(se,{sessions:m.topSessions,onOpenSession:x})]},j)})]})]})}export{_e as StatsPage};
@@ -1 +0,0 @@
1
- import{wi}from"./chunk-8dp7h6w8.js";export{wi as createInfoServices};
@@ -1 +0,0 @@
1
- import"./chunk-3q0v8w45.js";import"./chunk-8wg44w91.js";import{Eo}from"./chunk-hbkasy6c.js";import"./chunk-p0cjvjdx.js";import"./chunk-dynajx8x.js";import"./chunk-cn0tmwjs.js";import"./chunk-svh2gkx8.js";export{Eo as diagram};
@@ -1 +0,0 @@
1
- import{h,o,Y,i,r,g,e,n,b,Vt,er,Ue,Mn,Ie,mn,ce,ne}from"./chunk-gcwhx3av.js";var T=[{label:"每天 9:00",cron:"0 9 * * *"},{label:"每个工作日 9:00",cron:"0 9 * * 1-5"},{label:"每周一 9:00",cron:"0 9 * * 1"},{label:"每小时",cron:"0 * * * *"},{label:"每天 18:00",cron:"0 18 * * *"},{label:"每月 1 号 9:00",cron:"0 9 1 * *"}],ie=["日","一","二","三","四","五","六","日"],re=(a)=>a.padStart(2,"0");function X(a){let p=T.find((S)=>S.cron===a.trim());if(p)return p.label;let C=a.trim().split(/\s+/);if(C.length!==5)return a;let[u="",I="",x="",w="",c=""]=C,P=(S)=>/^\d+$/.test(S);if(w!=="*")return a;if(P(u)&&I==="*"&&x==="*"&&c==="*")return`每小时第 ${u} 分`;let j=u.match(/^\*\/(\d+)$/);if(j&&I==="*"&&x==="*"&&c==="*")return`每 ${j[1]} 分钟`;if(!P(u)||!P(I))return a;let m=`${I}:${re(u)}`;if(x==="*"&&c==="*")return`每天 ${m}`;if(x==="*"&&c==="1-5")return`每个工作日 ${m}`;if(x==="*"&&/^[0-7](,[0-7])*$/.test(c))return`每周${c.split(",").map((S)=>ie[Number(S)]).join("、")} ${m}`;if(P(x)&&c==="*")return`每月 ${x} 号 ${m}`;return a}function Z(a){let p=Date.now()-a,C=Math.floor(Math.abs(p)/1000);if(C<60)return"刚刚";let u=Math.floor(C/60);if(u<60)return`${u} 分钟${p>0?"前":"后"}`;let I=Math.floor(u/60);if(I<24)return`${I} 小时${p>0?"前":"后"}`;return`${Math.floor(I/24)} 天${p>0?"前":"后"}`}function he(a){let{Button:p,confirm:C,PageLayout:u,Switch:I,cn:x,style:w}=b(),{connection:c,onOpen:P}=a,[j,m]=r([]),[S,J]=r([]),[R,U]=r([]),[D,B]=r(),[L,V]=r([]),[O,W]=r(!0),[q,E]=r(),[A,_]=r(),[K,k]=r(!1),[G,f]=r({}),s=i(0),M=h(async()=>{let t=++s.current;try{let[l,d,v,y]=await Promise.all([c.request("/api/automations"),c.request("/api/projects").catch(()=>[]),c.request("/api/info").catch(()=>{return}),c.request("/api/models").catch(()=>({models:[]}))]),se=[...new Set(l.flatMap((N)=>N.lastSessionID?[N.lastSessionID]:[]))],ae=(await Promise.all(se.map(async(N)=>c.request(`/api/sessions/${encodeURIComponent(N)}`).catch((F)=>{if(F instanceof Error&&"status"in F&&F.status===404)return;throw F})))).filter((N)=>N!==void 0);if(t!==s.current)return;if(m(l.sort((N,F)=>N.created-F.created)),J(d),U(ae),B(v),y?.models)V(y.models.map((N)=>N.id));E(void 0)}catch(l){if(t===s.current)E(l instanceof Error?l.message:"加载失败")}finally{if(t===s.current)W(!1)}},[c]);o(()=>(M(),()=>{s.current++}),[M]);let z=(t)=>{_(t),k(!0)},ee=async(t)=>{f((l)=>({...l,[t.id]:!0}));try{let l=await c.request(`/api/automations/${t.id}/run`,{method:"POST"});P(l.id)}catch(l){E(l instanceof Error?l.message:"运行失败")}finally{f((l)=>({...l,[t.id]:!1}))}},te=async(t)=>{if(!await C({title:`删除自动化「${t.name}」?`,description:"已经跑出来的会话会保留。",action:"删除",danger:!0}))return;try{await c.request(`/api/automations/${t.id}`,{method:"DELETE"}),m((d)=>d.filter((v)=>v.id!==t.id))}catch(d){E(d instanceof Error?d.message:"删除失败")}},oe=async(t,l)=>{try{let d=await c.request(`/api/automations/${t.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({enabled:l})});m((v)=>v.map((y)=>y.id===t.id?d:y))}catch(d){E(d instanceof Error?d.message:"状态切换失败")}};return n(u,{title:"自动化",description:n(g,{children:["到点自动开一个新会话执行提示词,跑完的结果在会话里查看。",D?.timezone&&n("span",{className:"text-faint",children:["按服务器时区 ",D.timezone,"。"]})]}),actions:n(p,{variant:"primary",onClick:()=>z(null),children:[e(ce,{className:"size-4"}),"新建"]}),children:[q&&e("div",{className:"mb-4 rounded-lg bg-danger/10 px-3 py-2 text-xs text-danger",children:q}),O?e("div",{className:"flex justify-center py-12 text-xs text-faint",children:"正在加载自动化…"}):j.length===0?n("div",{className:w("surface.emptyDashed","animate-fade"),children:[e("div",{className:"grid size-11 place-items-center rounded-xl bg-raised text-dim",children:e(Vt,{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(p,{size:"sm",onClick:()=>z(null),className:"mt-1",children:[e(ce,{className:"size-3.5"}),"新建自动化"]})]}):e("ul",{className:"flex animate-fade flex-col gap-3",children:j.map((t)=>{let l=t.projectID?S.find((y)=>y.id===t.projectID):void 0,d=t.lastSessionID?R.find((y)=>y.id===t.lastSessionID):void 0,v=Boolean(G[t.id]);return e("li",{children:n("article",{className:w("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:x("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(Vt,{}),X(t.schedule)]}),n("span",{className:"flex items-center gap-1.5 [&_svg]:size-3.5 [&_svg]:text-faint",children:[l?e(Ue,{}):e(Mn,{}),l?l.name:"聊天"]}),t.enabled&&t.nextRun!==null&&n("span",{className:"flex items-center gap-1.5 [&_svg]:size-3.5 [&_svg]:text-faint",children:[e(er,{}),"下次 ",Z(t.nextRun)]})]})]}),e(I,{checked:t.enabled,label:t.enabled?"停用":"启用",onCheckedChange:(y)=>oe(t,y),className:"mt-0.5"})]}),e("p",{className:x("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(p,{size:"sm",onClick:()=>ee(t),disabled:v,children:[e(mn,{className:"size-3.5"}),v?"正在启动…":"立即运行"]}),n(p,{size:"sm",variant:"ghost",onClick:()=>z(t),children:[e(Ie,{className:"size-3.5"}),"编辑"]}),n(p,{size:"sm",variant:"danger-ghost",onClick:()=>te(t),children:[e(ne,{className:"size-3.5"}),"删除"]}),e("div",{className:"flex-1"}),t.lastRun!==null&&n("button",{type:"button",disabled:!d,onClick:()=>d&&P(d.id),className:"rounded-md px-1.5 py-1 text-[13px] text-faint transition-colors enabled:hover:bg-raised enabled:hover:text-ink",children:["上次运行 ",Z(t.lastRun),d?.archivedAt!=null?" · 已归档":"",!d?" · 会话已删除":""]})]})]})},t.id)})}),A!==void 0&&e(le,{open:K,onOpenChange:k,automation:A??void 0,projects:S,models:L,timezone:D?.timezone,onSaved:(t)=>{m((l)=>{let d=l.findIndex((v)=>v.id===t.id);if(d>=0){let v=[...l];return v[d]=t,v}return[...l,t].sort((v,y)=>v.created-y.created)}),k(!1)},connection:c},A?.id??"new")]})}var H="custom",Q="chat";function le(a){let{Button:p,Dialog:C,Field:u,Form:I,FormError:x,Input:w,Select:c,Textarea:P}=b(),j=Y(),m=a.automation,[S,J]=r(m?.name??""),[R,U]=r(m?.prompt??""),[D,B]=r(m?.schedule??T[0]?.cron??"0 9 * * *"),[L,V]=r(()=>!T.some((f)=>f.cron===D)),[O,W]=r(m?.projectID??Q),[q,E]=r(m?.model??""),[A,_]=r(!1),[K,k]=r();async function G(f){f.preventDefault(),_(!0),k(void 0);try{let s=O===Q?void 0:O,M={name:S,prompt:R,schedule:D,model:q||void 0},z;if(m)z=await a.connection.request(`/api/automations/${m.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({...M,projectID:s??null})});else z=await a.connection.request("/api/automations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({...M,projectID:s})});a.onSaved(z)}catch(s){k(s instanceof Error?s.message:"保存失败")}finally{_(!1)}}return e(C,{open:a.open,onOpenChange:a.onOpenChange,title:a.automation?"编辑自动化":"新建自动化",size:"lg",footer:n(g,{children:[e("div",{className:"flex-1 max-sm:hidden"}),e(p,{onClick:()=>a.onOpenChange(!1),children:"取消"}),e(p,{type:"submit",form:j,variant:"primary",disabled:A,children:A?"正在保存…":a.automation?"保存":"创建"})]}),children:n(I,{id:j,onSubmit:G,children:[e(u,{label:"名称",children:(f)=>e(w,{id:f,autoFocus:!m,required:!0,value:S,onChange:(s)=>J(s.target.value),placeholder:"例如:每日提交总结"})}),e(u,{label:"提示词",hint:"没人盯着运行,写清楚要做什么、结果怎么汇报。",children:(f)=>e(P,{id:f,required:!0,value:R,onChange:(s)=>U(s.target.value),rows:5,placeholder:"总结昨天到现在的 git 提交,按模块分组,列出需要我关注的改动。"})}),n("div",{className:"grid gap-x-3 gap-y-4 sm:grid-cols-2",children:[e(u,{label:"时间",children:(f)=>e(c,{id:f,value:L?H:D,onValueChange:(s)=>{if(V(s===H),s!==H)B(s)},groups:[{options:T.map((s)=>({value:s.cron,label:s.label}))},{options:[{value:H,label:"自定义(cron)"}]}]})}),e(u,{label:"在哪里运行",children:(f)=>e(c,{id:f,value:O,onValueChange:W,groups:[{options:[{value:Q,label:"聊天",description:"不绑定目录",icon:e(Mn,{})}]},...a.projects.length?[{label:"项目",options:a.projects.map((s)=>({value:s.id,label:s.name,icon:e(Ue,{})}))}]:[]]})})]}),L&&e(u,{label:"cron 表达式",hint:`分 时 日 月 周,例如 30 8 * * 1-5 是工作日 8:30。${a.timezone?`按 ${a.timezone} 时间。`:""}`,children:(f)=>e(w,{id:f,required:!0,value:D,onChange:(s)=>B(s.target.value),spellCheck:!1,className:"font-mono"})}),a.models.length>0&&e(u,{label:"模型",children:(f)=>e(c,{id:f,value:q||"default",onValueChange:(s)=>E(s==="default"?"":s),groups:[{options:[{value:"default",label:"默认模型"},...a.models.map((s)=>({value:s,label:s}))]}]})}),e(x,{children:K})]})})}export{he as AutomationsPage};
@@ -1 +0,0 @@
1
- import{r,g,e,n,b,s,K,Q,j,lt}from"./chunk-gcwhx3av.js";var z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]],h=s("circle-slash",z);function U(o){let{Button:N,Panel:y,style:k}=b(),t=o.payload,[i,c]=r(!1),[C,P]=r(!1),[l,p]=r();if(!t)return null;let a=C?"killed":t.state,m=a==="running",d=a==="exited"&&t.code===0,u=a==="killed"||a==="timeout",f=t.output?.trim(),I=async()=>{if(i)return;c(!0),p(void 0);try{await o.connection.request(`/api/sessions/${encodeURIComponent(o.sessionID)}/jobs/${encodeURIComponent(t.id)}/kill`,{method:"POST"}),P(!0)}catch(x){p(x instanceof Error?x.message:"停止失败,后台任务可能已结束")}finally{c(!1)}};return n(y,{className:"my-2",header:n(g,{children:[e(lt,{className:"size-3.5 shrink-0 text-faint"}),e("span",{className:"truncate font-mono text-ink/90",title:t.command??t.id,children:t.command??`任务 ${t.id}`})]}),actions:n(g,{children:[m&&n(g,{children:[n("span",{className:"flex items-center gap-1 text-warning",children:[e(Q,{className:"size-3.5 animate-spin"}),e("span",{children:"后台运行中"})]}),e(N,{size:"sm",variant:"danger-ghost",className:"h-6 rounded-md px-2 text-xs",disabled:i,onClick:()=>{I()},children:"停止"})]}),d&&n("span",{className:"flex items-center gap-1 text-success",children:[e(j,{className:"size-3.5"}),e("span",{children:"已完成"})]}),u&&n("span",{className:"flex items-center gap-1 text-faint",children:[e(h,{className:"size-3.5"}),e("span",{children:a==="timeout"?"已超时":"已停止"})]}),!m&&!d&&!u&&n("span",{className:"flex items-center gap-1 text-danger",children:[e(K,{className:"size-3.5"}),n("span",{children:["退出码 ",t.code??"异常"]})]})]}),children:[l&&e("p",{role:"status",className:"border-b border-line px-4 py-2.5 text-xs text-danger",children:l}),f&&e("pre",{className:k("chat.toolOutput","max-h-60 text-ink/90 select-text"),children:f})]})}export{U as BashJobCard};
@@ -1,24 +0,0 @@
1
- import{G}from"./chunk-jzte2phh.js";import{t,a,ke,D,x,B,C,S,E,T,A,L,R,p,V,Gr,k,U}from"./chunk-3q0v8w45.js";import{Pt}from"./chunk-fe31sv6t.js";import{ee}from"./chunk-8dp7h6w8.js";import{Xe}from"./chunk-07agqp8h.js";import{ue}from"./chunk-svh2gkx8.js";function je(e){var n=0,l=e.children,o=l&&l.length;if(!o)n=1;else while(--o>=0)n+=l[o].value;e.value=n}function ge(){return this.eachAfter(je)}function ye(e,n){let l=-1;for(let o of this)e.call(n,o,++l,this);return this}function xe(e,n){var l=this,o=[l],s,d,f=-1;while(l=o.pop())if(e.call(n,l,++f,this),s=l.children)for(d=s.length-1;d>=0;--d)o.push(s[d]);return this}function Se(e,n){var l=this,o=[l],s=[],d,f,h,b=-1;while(l=o.pop())if(s.push(l),d=l.children)for(f=0,h=d.length;f<h;++f)o.push(d[f]);while(l=s.pop())e.call(n,l,++b,this);return this}function ve(e,n){let l=-1;for(let o of this)if(e.call(n,o,++l,this))return o}function be(e){return this.eachAfter(function(n){var l=+e(n.data)||0,o=n.children,s=o&&o.length;while(--s>=0)l+=o[s].value;n.value=l})}function we(e){return this.eachBefore(function(n){if(n.children)n.children.sort(e)})}function Ce(e){var n=this,l=Ze(n,e),o=[n];while(n!==l)n=n.parent,o.push(n);var s=o.length;while(e!==l)o.splice(s,0,e),e=e.parent;return o}function Ze(e,n){if(e===n)return e;var l=e.ancestors(),o=n.ancestors(),s=null;e=l.pop(),n=o.pop();while(e===n)s=e,e=l.pop(),n=o.pop();return s}function Te(){var e=this,n=[e];while(e=e.parent)n.push(e);return n}function Le(){return Array.from(this)}function $e(){var e=[];return this.eachBefore(function(n){if(!n.children)e.push(n)}),e}function Ae(){var e=this,n=[];return e.each(function(l){if(l!==e)n.push({source:l.parent,target:l})}),n}function*Fe(){var e=this,n,l=[e],o,s,d;do{n=l.reverse(),l=[];while(e=n.pop())if(yield e,o=e.children)for(s=0,d=o.length;s<d;++s)l.push(o[s])}while(l.length)}function re(e,n){if(e instanceof Map){if(e=[void 0,e],n===void 0)n=Ke}else if(n===void 0)n=Je;var l=new ie(e),o,s=[l],d,f,h,b;while(o=s.pop())if((f=n(o.data))&&(b=(f=Array.from(f)).length)){o.children=f;for(h=b-1;h>=0;--h)s.push(d=f[h]=new ie(f[h])),d.parent=o,d.depth=o.depth+1}return l.eachBefore(et)}function Ue(){return re(this).eachBefore(Qe)}function Je(e){return e.children}function Ke(e){return Array.isArray(e)?e[1]:null}function Qe(e){if(e.data.value!==void 0)e.value=e.data.value;e.data=e.data.data}function et(e){var n=0;do e.height=n;while((e=e.parent)&&e.height<++n)}function ie(e){this.data=e,this.depth=this.height=0,this.parent=null}ie.prototype=re.prototype={constructor:ie,count:ge,each:ye,eachAfter:Se,eachBefore:xe,find:ve,sum:be,sort:we,path:Ce,ancestors:Te,descendants:Le,leaves:$e,links:Ae,copy:Ue,[Symbol.iterator]:Fe};function Be(e){if(typeof e!=="function")throw Error();return e}function ne(){return 0}function K(e){return function(){return e}}function Ne(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function Me(e,n,l,o,s){var d=e.children,f,h=-1,b=d.length,u=e.value&&(o-n)/e.value;while(++h<b)f=d[h],f.y0=l,f.y1=s,f.x0=n,f.x1=n+=f.value*u}function _e(e,n,l,o,s){var d=e.children,f,h=-1,b=d.length,u=e.value&&(s-l)/e.value;while(++h<b)f=d[h],f.x0=n,f.x1=o,f.y0=l,f.y1=l+=f.value*u}var tt=(1+Math.sqrt(5))/2;function at(e,n,l,o,s,d){var f=[],h=n.children,b,u,m=0,_=0,i=h.length,M,F,N=n.value,g,w,X,O,Q,oe,Y;while(m<i){M=s-l,F=d-o;do g=h[_++].value;while(!g&&_<i);w=X=g,oe=Math.max(F/M,M/F)/(N*e),Y=g*g*oe,Q=Math.max(X/Y,Y/w);for(;_<i;++_){if(g+=u=h[_].value,u<w)w=u;if(u>X)X=u;if(Y=g*g*oe,O=Math.max(X/Y,Y/w),O>Q){g-=u;break}Q=O}if(f.push(b={value:g,dice:M<F,children:h.slice(m,_)}),b.dice)Me(b,l,o,s,N?o+=F*g/N:d);else _e(b,l,o,N?l+=M*g/N:s,d);N-=g,m=_}return f}var Ee=function e(n){function l(o,s,d,f,h){at(n,o,s,d,f,h)}return l.ratio=function(o){return e((o=+o)>1?o:1)},l}(tt);function fe(){var e=Ee,n=!1,l=1,o=1,s=[0],d=ne,f=ne,h=ne,b=ne,u=ne;function m(i){if(i.x0=i.y0=0,i.x1=l,i.y1=o,i.eachBefore(_),s=[0],n)i.eachBefore(Ne);return i}function _(i){var M=s[i.depth],F=i.x0+M,N=i.y0+M,g=i.x1-M,w=i.y1-M;if(g<F)F=g=(F+g)/2;if(w<N)N=w=(N+w)/2;if(i.x0=F,i.y0=N,i.x1=g,i.y1=w,i.children){if(M=s[i.depth+1]=d(i)/2,F+=u(i)-M,N+=f(i)-M,g-=h(i)-M,w-=b(i)-M,g<F)F=g=(F+g)/2;if(w<N)N=w=(N+w)/2;e(i,F,N,g,w)}}return m.round=function(i){return arguments.length?(n=!!i,m):n},m.size=function(i){return arguments.length?(l=+i[0],o=+i[1],m):[l,o]},m.tile=function(i){return arguments.length?(e=Be(i),m):e},m.padding=function(i){return arguments.length?m.paddingInner(i).paddingOuter(i):m.paddingInner()},m.paddingInner=function(i){return arguments.length?(d=typeof i==="function"?i:K(+i),m):d},m.paddingOuter=function(i){return arguments.length?m.paddingTop(i).paddingRight(i).paddingBottom(i).paddingLeft(i):m.paddingTop()},m.paddingTop=function(i){return arguments.length?(f=typeof i==="function"?i:K(+i),m):f},m.paddingRight=function(i){return arguments.length?(h=typeof i==="function"?i:K(+i),m):h},m.paddingBottom=function(i){return arguments.length?(b=typeof i==="function"?i:K(+i),m):b},m.paddingLeft=function(i){return arguments.length?(u=typeof i==="function"?i:K(+i),m):u},m}var Re=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=S,this.getAccTitle=E,this.setDiagramTitle=L,this.getDiagramTitle=R,this.getAccDescription=A,this.setAccDescription=T}static{t(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let e=D,n=x();return U({...e.treemap,...n.treemap??{}})}addNode(e,n){if(this.nodes.push(e),this.levels.set(e,n),n===0)this.outerNodes.push(e),this.root??=e}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,n){let l=this.classes.get(e)??{id:e,styles:[],textStyles:[]},o=n.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");if(o)o.forEach((s)=>{if(Gr(s))if(l?.textStyles)l.textStyles.push(s);else l.textStyles=[s];if(l?.styles)l.styles.push(s);else l.styles=[s]});this.classes.set(e,l)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){C(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function We(e){if(!e.length)return[];let n=[],l=[];return e.forEach((o)=>{let s={name:o.name,children:o.type==="Leaf"?void 0:[]};if(s.classSelector=o?.classSelector,o?.cssCompiledStyles)s.cssCompiledStyles=o.cssCompiledStyles;if(o.type==="Leaf"&&o.value!==void 0)s.value=o.value;while(l.length>0&&l[l.length-1].level>=o.level)l.pop();if(l.length===0)n.push(s);else{let d=l[l.length-1].node;if(d.children)d.children.push(s);else d.children=[s]}if(o.type!=="Leaf")l.push({node:s,level:o.level})}),n}t(We,"buildHierarchy");var rt=t((e,n)=>{G(e,n);let l=[];for(let d of e.TreemapRows??[])if(d.$type==="ClassDefStatement")n.addClass(d.className??"",d.styleText??"");for(let d of e.TreemapRows??[]){let f=d.item;if(!f)continue;let h=d.indent?parseInt(d.indent):0,b=nt(f),u=f.classSelector?n.getStylesForClass(f.classSelector):[],m=u.length>0?u:void 0,_={level:h,name:b,type:f.$type,value:f.value,classSelector:f.classSelector,cssCompiledStyles:m};l.push(_)}let o=We(l),s=t((d,f)=>{for(let h of d)if(n.addNode(h,f),h.children&&h.children.length>0)s(h.children,f+1)},"addNodesRecursively");s(o,0)},"populate"),nt=t((e)=>e.name?String(e.name):"","getItemName"),He={parser:{yy:void 0},parse:t(async(e)=>{try{let l=await ee("treemap",e);a.debug("Treemap AST:",l);let o=He.parser?.yy;if(!(o instanceof Re))throw Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");rt(l,o)}catch(n){throw a.error("Error parsing treemap:",n),n}},"parse")},lt=10,le=10,ce=25,ot=t((e,n,l,o)=>{let s=o.db,d=s.getConfig(),f=d.padding??lt,h=s.getDiagramTitle(),b=s.getRoot(),{themeVariables:u}=x();if(!b)return;let m=h?30:0,_=V(n),i=d.nodeWidth?d.nodeWidth*le:960,M=d.nodeHeight?d.nodeHeight*le:500,F=i,N=M+m;_.attr("viewBox",`0 0 ${F} ${N}`),B(_,N,F,d.useMaxWidth);let g;try{let r=d.valueFormat||",";if(r==="$0,0")g=t((c)=>"$"+Pt(",")(c),"valueFormat");else if(r.startsWith("$")&&r.includes(",")){let c=/\.\d+/.exec(r),y=c?c[0]:"";g=t((z)=>"$"+Pt(","+y)(z),"valueFormat")}else if(r.startsWith("$")){let c=r.substring(1);g=t((y)=>"$"+Pt(c||"")(y),"valueFormat")}else g=Pt(r)}catch(r){a.error("Error creating format function:",r),g=Pt(",")}let w=Xe().range(["transparent",u.cScale0,u.cScale1,u.cScale2,u.cScale3,u.cScale4,u.cScale5,u.cScale6,u.cScale7,u.cScale8,u.cScale9,u.cScale10,u.cScale11]),X=Xe().range(["transparent",u.cScalePeer0,u.cScalePeer1,u.cScalePeer2,u.cScalePeer3,u.cScalePeer4,u.cScalePeer5,u.cScalePeer6,u.cScalePeer7,u.cScalePeer8,u.cScalePeer9,u.cScalePeer10,u.cScalePeer11]),O=Xe().range([u.cScaleLabel0,u.cScaleLabel1,u.cScaleLabel2,u.cScaleLabel3,u.cScaleLabel4,u.cScaleLabel5,u.cScaleLabel6,u.cScaleLabel7,u.cScaleLabel8,u.cScaleLabel9,u.cScaleLabel10,u.cScaleLabel11]);if(h)_.append("text").attr("x",F/2).attr("y",m/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let Q=_.append("g").attr("transform",`translate(0, ${m})`).attr("class","treemapContainer"),oe=re(b).sum((r)=>r.value??0).sort((r,c)=>(c.value??0)-(r.value??0)),ze=fe().size([i,M]).paddingTop((r)=>r.children&&r.children.length>0?ce+le:0).paddingInner(f).paddingLeft((r)=>r.children&&r.children.length>0?le:0).paddingRight((r)=>r.children&&r.children.length>0?le:0).paddingBottom((r)=>r.children&&r.children.length>0?le:0).round(!0)(oe),Ie=ze.descendants().filter((r)=>r.children&&r.children.length>0),se=Q.selectAll(".treemapSection").data(Ie).enter().append("g").attr("class","treemapSection").attr("transform",(r)=>`translate(${r.x0},${r.y0})`);if(se.append("rect").attr("width",(r)=>r.x1-r.x0).attr("height",ce).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",0.6).attr("stroke-width",0.6).attr("style",(r)=>{if(r.depth===0)return"display: none;";return""}),se.append("clipPath").attr("id",(r,c)=>`clip-section-${n}-${c}`).append("rect").attr("width",(r)=>Math.max(0,r.x1-r.x0-12)).attr("height",ce),se.append("rect").attr("width",(r)=>r.x1-r.x0).attr("height",(r)=>r.y1-r.y0).attr("class",(r,c)=>`treemapSection section${c}`).attr("fill",(r)=>w(r.data.name)).attr("fill-opacity",0.6).attr("stroke",(r)=>X(r.data.name)).attr("stroke-width",2).attr("stroke-opacity",0.4).attr("style",(r)=>{if(r.depth===0)return"display: none;";let c=k({cssCompiledStyles:r.data.cssCompiledStyles});return c.nodeStyles+";"+c.borderStyles.join(";")}),se.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",ce/2).attr("dominant-baseline","middle").text((r)=>r.depth===0?"":r.data.name).attr("font-weight","bold").attr("clip-path",(r,c)=>`url(#clip-section-${n}-${c})`).attr("style",(r)=>{if(r.depth===0)return"display: none;";let c="dominant-baseline: middle; font-size: 12px; fill:"+O(r.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",y=k({cssCompiledStyles:r.data.cssCompiledStyles});return c+y.labelStyles.replace("color:","fill:")}).each(function(r){if(r.depth===0)return;let c=p(this),y=r.data.name;c.text(y);let z=r.x1-r.x0,W=6,P;if(d.showValues!==!1&&r.value){let I=z-10,J=30,Ge=10;P=I-30-10-W}else P=z-W-6;let v=Math.max(15,P),Z=c.node();if(Z.getComputedTextLength()>v){let J=y;while(J.length>0){if(J=y.substring(0,J.length-1),J.length===0){if(c.text("..."),Z.getComputedTextLength()>v)c.text("");break}if(c.text(J+"..."),Z.getComputedTextLength()<=v)break}}}),d.showValues!==!1)se.append("text").attr("class","treemapSectionValue").attr("x",(r)=>r.x1-r.x0-10).attr("y",ce/2).attr("text-anchor","end").attr("dominant-baseline","middle").text((r)=>r.value?g(r.value):"").attr("font-style","italic").attr("style",(r)=>{if(r.depth===0)return"display: none;";let c="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+O(r.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",y=k({cssCompiledStyles:r.data.cssCompiledStyles});return c+y.labelStyles.replace("color:","fill:")});let De=ze.leaves(),q=De.length>20,Oe=q?16:38,pe=q?14:28,te=q?4:8,ae=q?4:6,he=q?2:4,Ve=q?8:10,me=q?1:2,de=Q.selectAll(".treemapLeafGroup").data(De).enter().append("g").attr("class",(r,c)=>`treemapNode treemapLeafGroup leaf${c}${r.data.classSelector?` ${r.data.classSelector}`:""}x`).attr("transform",(r)=>`translate(${r.x0},${r.y0})`);if(de.append("rect").attr("width",(r)=>r.x1-r.x0).attr("height",(r)=>r.y1-r.y0).attr("class","treemapLeaf").attr("fill",(r)=>r.parent?w(r.parent.data.name):w(r.data.name)).attr("style",(r)=>k({cssCompiledStyles:r.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",0.3).attr("stroke",(r)=>r.parent?w(r.parent.data.name):w(r.data.name)).attr("stroke-width",3),de.append("clipPath").attr("id",(r,c)=>`clip-${n}-${c}`).append("rect").attr("width",(r)=>Math.max(0,r.x1-r.x0-4)).attr("height",(r)=>Math.max(0,r.y1-r.y0-4)),de.append("text").attr("class","treemapLabel").attr("x",(r)=>(r.x1-r.x0)/2).attr("y",(r)=>(r.y1-r.y0)/2).attr("style",(r)=>{let c=`text-anchor: middle; dominant-baseline: middle; font-size: ${Oe}px;fill:`+O(r.data.name)+";",y=k({cssCompiledStyles:r.data.cssCompiledStyles});return c+y.labelStyles.replace("color:","fill:")}).attr("clip-path",(r,c)=>`url(#clip-${n}-${c})`).text((r)=>r.data.name).each(function(r){let c=p(this),y=r.x1-r.x0,z=r.y1-r.y0,W=c.node(),P=y-2*he,j=z-2*he;if(P<Ve||j<Ve){c.style("display","none");return}let v=parseInt(c.style("font-size"),10),Z=0.6;while(W.getComputedTextLength()>P&&v>te)v--,c.style("font-size",`${v}px`);let H=Math.max(ae,Math.min(pe,Math.round(v*Z))),I=v+me+H;while(I>j&&v>te){if(v--,H=Math.max(ae,Math.min(pe,Math.round(v*Z))),H<ae&&v===te)break;if(c.style("font-size",`${v}px`),I=v+me+H,H<=ae&&I>j);}if(c.style("font-size",`${v}px`),q){if(v<te||j<te)c.style("display","none")}else if(W.getComputedTextLength()>P||v<te||j<v)c.style("display","none")}),d.showValues!==!1)de.append("text").attr("class","treemapValue").attr("x",(c)=>(c.x1-c.x0)/2).attr("y",function(c){return(c.y1-c.y0)/2}).attr("style",(c)=>{let y=`text-anchor: middle; dominant-baseline: hanging; font-size: ${pe}px;fill:`+O(c.data.name)+";",z=k({cssCompiledStyles:c.data.cssCompiledStyles});return y+z.labelStyles.replace("color:","fill:")}).attr("clip-path",(c,y)=>`url(#clip-${n}-${y})`).text((c)=>c.value?g(c.value):"").each(function(c){let y=p(this),z=this.parentNode;if(!z){y.style("display","none");return}let W=p(z).select(".treemapLabel");if(W.empty()||W.style("display")==="none"){y.style("display","none");return}let P=parseFloat(W.style("font-size")),v=Math.max(ae,Math.min(pe,Math.round(P*0.6)));y.style("font-size",`${v}px`);let H=(c.y1-c.y0)/2+P/2+me;y.attr("y",H);let I=c.x1-c.x0,Pe=c.y1-c.y0-4,Ye=I-2*he;if(y.node().getComputedTextLength()>Ye||H+v>Pe||v<ae)y.style("display","none");else y.style("display",null)});let qe=d.diagramPadding??8;ue(_,qe,"flowchart",d?.useMaxWidth||!1)},"draw"),st=t(function(e,n){return n.db.getClasses()},"getClasses"),it={draw:ot,getClasses:st},ct={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},pt=t(({treemap:e}={})=>{let n=ke(),l=x(),o=U(n,l.themeVariables),s=U(ct,e),d=s.titleColor??o.titleColor,f=s.labelColor??o.textColor,h=s.valueColor??o.textColor;return`
2
- .treemapNode.section {
3
- stroke: ${s.sectionStrokeColor};
4
- stroke-width: ${s.sectionStrokeWidth};
5
- fill: ${s.sectionFillColor};
6
- }
7
- .treemapNode.leaf {
8
- stroke: ${s.leafStrokeColor};
9
- stroke-width: ${s.leafStrokeWidth};
10
- fill: ${s.leafFillColor};
11
- }
12
- .treemapLabel {
13
- fill: ${f};
14
- font-size: ${s.labelFontSize};
15
- }
16
- .treemapValue {
17
- fill: ${h};
18
- font-size: ${s.valueFontSize};
19
- }
20
- .treemapTitle {
21
- fill: ${d};
22
- font-size: ${s.titleFontSize};
23
- }
24
- `},"getStyles"),dt=pt,fa={parser:He,get db(){return new Re},renderer:it,styles:dt};export{fa as diagram};
@@ -1 +0,0 @@
1
- import{ii}from"./chunk-sf101c23.js";export{ii as default};