chatlab-cli 0.36.0 → 0.36.1

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 (193) hide show
  1. package/README.md +7 -7
  2. package/dist/{chat-command-SXW67RF7.mjs → chat-command-XPJ43KSW.mjs} +10 -10
  3. package/dist/chat-command-XPJ43KSW.mjs.map +1 -0
  4. package/dist/{chunk-BSGLH6G3.mjs → chunk-2JPFBIAG.mjs} +144 -79
  5. package/dist/chunk-2JPFBIAG.mjs.map +1 -0
  6. package/dist/{chunk-VDWI4A4U.mjs → chunk-5MJO4AJB.mjs} +2 -2
  7. package/dist/{chunk-GVW3BDGZ.mjs → chunk-67HNPYZJ.mjs} +3 -3
  8. package/dist/{chunk-UNIKQFI5.mjs → chunk-6QP47LID.mjs} +2 -2
  9. package/dist/{chunk-4YPNYQSP.mjs → chunk-FJOGBUXU.mjs} +390 -96
  10. package/dist/chunk-FJOGBUXU.mjs.map +1 -0
  11. package/dist/{chunk-XDF6PMVZ.mjs → chunk-JOVL7OTW.mjs} +2 -2
  12. package/dist/{chunk-CNEWMCGX.mjs → chunk-L7TIIVAY.mjs} +57 -57
  13. package/dist/chunk-L7TIIVAY.mjs.map +1 -0
  14. package/dist/{chunk-U2NXHIJK.mjs → chunk-NFTCEJBJ.mjs} +3 -3
  15. package/dist/{chunk-AAGDVTP2.mjs → chunk-NQHZPSW2.mjs} +2 -2
  16. package/dist/{chunk-OWOEWZIC.mjs → chunk-Q3NEL2KK.mjs} +82 -28
  17. package/dist/chunk-Q3NEL2KK.mjs.map +1 -0
  18. package/dist/{chunk-LZGOIRLV.mjs → chunk-R73XMAB2.mjs} +9 -5
  19. package/dist/chunk-R73XMAB2.mjs.map +1 -0
  20. package/dist/{chunk-JHON5FN7.mjs → chunk-X2QBH24F.mjs} +8 -3
  21. package/dist/chunk-X2QBH24F.mjs.map +1 -0
  22. package/dist/cli.mjs +9 -9
  23. package/dist/contacts-worker.mjs +2 -2
  24. package/dist/global-insight-worker.mjs +1 -1
  25. package/dist/{http-LVOGJFDL.mjs → http-5RVY5J5U.mjs} +12 -12
  26. package/dist/{import-7OU57ZHM.mjs → import-ILTWVHKU.mjs} +7 -7
  27. package/dist/index.mjs +12 -12
  28. package/dist/{mcp-CUKHTTII.mjs → mcp-Y2YXOFB4.mjs} +8 -8
  29. package/dist/people-relationships-worker.mjs +2 -2
  30. package/dist/semantic-index-worker.mjs +1 -1
  31. package/dist/{service-KZTHBDQ5.mjs → service-ZAHXRSFD.mjs} +6 -6
  32. package/dist/service-ZAHXRSFD.mjs.map +1 -0
  33. package/dist/{src-LORFXAUE.mjs → src-OV5ZNE3Z.mjs} +10 -6
  34. package/dist/{stream-import-7YUWIAD6.mjs → stream-import-XOUM3Z5W.mjs} +7 -7
  35. package/dist/{undici-MU5I3L6Q.mjs → undici-UGXDRJLV.mjs} +193 -193
  36. package/dist/undici-UGXDRJLV.mjs.map +1 -0
  37. package/dist/{update-checker-3N7HQEP2.mjs → update-checker-UL2FBLXH.mjs} +3 -5
  38. package/dist/{update-checker-3N7HQEP2.mjs.map → update-checker-UL2FBLXH.mjs.map} +1 -1
  39. package/dist/{worker-runtime-GQ5SY7E3.mjs → worker-runtime-JNGURHDM.mjs} +5 -5
  40. package/dist-cli-web/assets/AISettingsTab-vvjijrc5.js +1 -0
  41. package/dist-cli-web/assets/AboutTab-CxI8zJNz.js +1 -0
  42. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-w0hHEodr.js +110 -0
  43. package/dist-cli-web/assets/{Alert-DJzXKcec.js → Alert-_MYcI_E2.js} +1 -1
  44. package/dist-cli-web/assets/ApiSettingsTab-CK7U6dVA.js +2 -0
  45. package/dist-cli-web/assets/BatchManageTab-1WnEqqpB.js +1 -0
  46. package/dist-cli-web/assets/{BufferResource-DY3P-dGs.js → BufferResource-i64DlwQT.js} +1 -1
  47. package/dist-cli-web/assets/{CanvasRenderer-As2MJTWZ.js → CanvasRenderer-B76mEt9A.js} +1 -1
  48. package/dist-cli-web/assets/ChatRecordDrawer-Bp6OSCrz.js +1 -0
  49. package/dist-cli-web/assets/{ChatRecordWorkspace-CVDPBmcl.js → ChatRecordWorkspace-CyfPIlIy.js} +1 -1
  50. package/dist-cli-web/assets/{Checkbox-4F1WAuVF.js → Checkbox-Ci7IeRw1.js} +1 -1
  51. package/dist-cli-web/assets/DataDirCleanupNotice-Dh63pOLt.js +1 -0
  52. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-DqNBNa1D.js +1 -0
  53. package/dist-cli-web/assets/{DebugToolsPanel-BLU6SY8a.js → DebugToolsPanel-CbNsD9co.js} +1 -1
  54. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-YeqmodwE.js +1 -0
  55. package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-C3pZmq0v.js +1 -0
  56. package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-BYhukELX.js → EChartLine.vue_vue_type_script_setup_true_lang-Co6olfwv.js} +1 -1
  57. package/dist-cli-web/assets/{EChartWordcloud-C16xh7Tx.js → EChartWordcloud-rDusZwSq.js} +1 -1
  58. package/dist-cli-web/assets/{Filter-BEtPORqF.js → Filter-yxkeHO78.js} +1 -1
  59. package/dist-cli-web/assets/GlobalTaskBar-BlZ-fFiq.js +1 -0
  60. package/dist-cli-web/assets/GroupRelationshipGalaxyView-BXQBX0zJ.js +1 -0
  61. package/dist-cli-web/assets/{Label-Dgl3ghzT.js → Label-CFAZFBQX.js} +1 -1
  62. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwgpqtMZ.js +1 -0
  63. package/dist-cli-web/assets/MessageExportModal-DU71grc7.js +1 -0
  64. package/dist-cli-web/assets/{PageHeader-CL9AFfvl.js → PageHeader-BDPf4NuI.js} +1 -1
  65. package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-C22kOxIK.js → PageTabs.vue_vue_type_script_setup_true_lang-_j82asQU.js} +1 -1
  66. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-BnkcrIpk.js → RelationshipGalaxyCanvas-BODk18aA.js} +14 -14
  67. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-BJyuRiC-.js +4168 -0
  68. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-CCasBcBQ.css +1 -0
  69. package/dist-cli-web/assets/{RenderTargetSystem-CPwnC2X3.js → RenderTargetSystem-CVMvAUSv.js} +1 -1
  70. package/dist-cli-web/assets/RovingFocusItem-DC_06OmN.js +1 -0
  71. package/dist-cli-web/assets/{ScreenCaptureModal-ByKxzNQe.js → ScreenCaptureModal-DrBFDOtC.js} +1 -1
  72. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-C-Zj2biH.js +1 -0
  73. package/dist-cli-web/assets/{Select-jVtfc_xc.js → Select-DLK2LYhO.js} +1 -1
  74. package/dist-cli-web/assets/SettingsModal-BFkxzo0Y.css +1 -0
  75. package/dist-cli-web/assets/SettingsModal-DqaR4Dx5.js +2 -0
  76. package/dist-cli-web/assets/{StorageTab-QdcDqA6Q.js → StorageTab-B0ebN0f8.js} +1 -1
  77. package/dist-cli-web/assets/{Switch-DYHM64k9.js → Switch-CokhQWxm.js} +1 -1
  78. package/dist-cli-web/assets/{Tabs-B6Nzq2NQ.js → Tabs-D1UiZNaZ.js} +1 -1
  79. package/dist-cli-web/assets/Tabs-N3Q-Mpqi.js +1 -0
  80. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-Bsq7gpC0.js → ThemeCard.vue_vue_type_script_setup_true_lang-OT-I0mbU.js} +1 -1
  81. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-Ccunouyf.js +1 -0
  82. package/dist-cli-web/assets/{VisuallyHiddenInput-IQpmK9yR.js → VisuallyHiddenInput-OAJEt_Y5.js} +1 -1
  83. package/dist-cli-web/assets/{WebGLRenderer-8JHbnkTc.js → WebGLRenderer-DuUeftYD.js} +1 -1
  84. package/dist-cli-web/assets/{WebGPURenderer-CLWfB4CC.js → WebGPURenderer-DoWQxiWZ.js} +1 -1
  85. package/dist-cli-web/assets/aiChat-CdADfRnU.js +8 -0
  86. package/dist-cli-web/assets/{browserAll-Cin6ghNg.js → browserAll-Cb-mtR2y.js} +1 -1
  87. package/dist-cli-web/assets/{cli-web-D7IBc3AX.js → cli-web-BHQCZLLg.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-B7kuohCt.js → fetch-AvsnJLWJ.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-BR71C0K9.js → fetch-B-6tyYWu.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-OnnCjzee.js → fetch-B4PYy5JS.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-_CN1EVMt.js → fetch-BbcFaCRB.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-C8tTTsCm.js → fetch-BkA_so1e.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-2QEQPA9q.js → fetch-BzXuAaT3.js} +1 -1
  94. package/dist-cli-web/assets/fetch-CW2fKvGp.js +1 -0
  95. package/dist-cli-web/assets/{fetch-CuUeyk0N.js → fetch-DEub4tOo.js} +1 -1
  96. package/dist-cli-web/assets/{fetch-1NiXh-_B.js → fetch-DLTlYnDB.js} +1 -1
  97. package/dist-cli-web/assets/{fetch-B2agy1hy.js → fetch-Qs38Hx1V.js} +1 -1
  98. package/dist-cli-web/assets/{fetch-Bk-7vxHV.js → fetch-sYDJ-Zs8.js} +1 -1
  99. package/dist-cli-web/assets/{fetch-DPRDSI39.js → fetch-ul8-uQIb.js} +1 -1
  100. package/dist-cli-web/assets/host-B6SQ6OGo.js +1 -0
  101. package/dist-cli-web/assets/host-DYIkQqvY.js +1 -0
  102. package/dist-cli-web/assets/{index-BCEk6ZpL.js → index--IEkRjKe.js} +10 -10
  103. package/dist-cli-web/assets/index-9iaY_EWG.js +1 -0
  104. package/dist-cli-web/assets/index-BnaLj2dx.css +1 -0
  105. package/dist-cli-web/assets/index-C7omDgiJ.js +2 -0
  106. package/dist-cli-web/assets/index-CHsM84U1.js +2 -0
  107. package/dist-cli-web/assets/index-CL8u01Pf.js +137 -0
  108. package/dist-cli-web/assets/{index-BIHFuCJK.js → index-CShh95fU.js} +1 -1
  109. package/dist-cli-web/assets/index-C_OS8Y8W.js +1 -0
  110. package/dist-cli-web/assets/{index-Colc58j-.js → index-D64XYYts.js} +1 -1
  111. package/dist-cli-web/assets/index-DrCc8p_I.css +1 -0
  112. package/dist-cli-web/assets/index-Dz_ddyZS.css +1 -0
  113. package/dist-cli-web/assets/index-UpTe1KzQ.js +1 -0
  114. package/dist-cli-web/assets/index-a8Hw6eD8.js +1 -0
  115. package/dist-cli-web/assets/index-jwjzZNKm.js +1 -0
  116. package/dist-cli-web/assets/index-pkxlF8Ee.js +1 -0
  117. package/dist-cli-web/assets/index-sWxuTsa7.js +36 -0
  118. package/dist-cli-web/assets/{people-page-header-DNPjaSt4.js → people-page-header-0jvXFFnh.js} +1 -1
  119. package/dist-cli-web/assets/{prompt-BgywZQ_g.js → prompt-BPYj29Vq.js} +1 -1
  120. package/dist-cli-web/assets/{semantic-index-config-builder-bji_UxYE.js → semantic-index-config-builder-vO37z355.js} +1 -1
  121. package/dist-cli-web/assets/service-CVoA9yNf.js +1 -0
  122. package/dist-cli-web/assets/{service-DpU9fa-l.js → service-D29Vftq9.js} +1 -1
  123. package/dist-cli-web/assets/service-DMysyLCa.js +1 -0
  124. package/dist-cli-web/assets/{useFormControl-De24E2zT.js → useFormControl-DVawP2DO.js} +1 -1
  125. package/dist-cli-web/assets/useTable-Bv3R_Hux.js +1 -0
  126. package/dist-cli-web/assets/useToast-BA0EwImD.js +1 -0
  127. package/dist-cli-web/assets/{vendor-echarts-DfAMQxdr.js → vendor-echarts-hTLhTs52.js} +5 -5
  128. package/dist-cli-web/assets/{vendor-echarts-wordcloud-BsaEJTPY.js → vendor-echarts-wordcloud-B8CF_NgP.js} +1 -1
  129. package/dist-cli-web/assets/{vendor-zrender-PFmZe1EY.js → vendor-zrender-D8psf1AA.js} +2 -2
  130. package/dist-cli-web/assets/{webworkerAll-BRnv6GvJ.js → webworkerAll-ZPE_yGnC.js} +1 -1
  131. package/dist-cli-web/index.html +2 -2
  132. package/package.json +4 -4
  133. package/dist/chat-command-SXW67RF7.mjs.map +0 -1
  134. package/dist/chunk-4YPNYQSP.mjs.map +0 -1
  135. package/dist/chunk-BSGLH6G3.mjs.map +0 -1
  136. package/dist/chunk-CNEWMCGX.mjs.map +0 -1
  137. package/dist/chunk-JHON5FN7.mjs.map +0 -1
  138. package/dist/chunk-LZGOIRLV.mjs.map +0 -1
  139. package/dist/chunk-OWOEWZIC.mjs.map +0 -1
  140. package/dist/service-KZTHBDQ5.mjs.map +0 -1
  141. package/dist/undici-MU5I3L6Q.mjs.map +0 -1
  142. package/dist-cli-web/assets/AISettingsTab-BmhNcUEh.js +0 -1
  143. package/dist-cli-web/assets/AboutTab-CFklrZt8.js +0 -1
  144. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-B-dIPvcs.js +0 -110
  145. package/dist-cli-web/assets/ApiSettingsTab-DvDm421U.js +0 -2
  146. package/dist-cli-web/assets/BatchManageTab-DhIDH3Q1.js +0 -1
  147. package/dist-cli-web/assets/ChatRecordDrawer-DHdas7Jp.js +0 -1
  148. package/dist-cli-web/assets/DataDirCleanupNotice-jebQ9il3.js +0 -1
  149. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-Cal624eP.js +0 -1
  150. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-CsgJ-Xn3.js +0 -1
  151. package/dist-cli-web/assets/GlobalTaskBar-BvNmFO7q.js +0 -1
  152. package/dist-cli-web/assets/GroupRelationshipGalaxyView-DEUIrvgz.js +0 -1
  153. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwDIA0UP.js +0 -1
  154. package/dist-cli-web/assets/MessageExportModal-DYjhBuzO.js +0 -1
  155. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-CqdqveEJ.js +0 -4108
  156. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-TYGOUDiv.css +0 -1
  157. package/dist-cli-web/assets/RovingFocusItem-j33Nsbbn.js +0 -1
  158. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-C6EHKB_i.js +0 -1
  159. package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +0 -1
  160. package/dist-cli-web/assets/SettingsModal-Dg27piEO.js +0 -2
  161. package/dist-cli-web/assets/Tabs-CRZdCcU4.js +0 -1
  162. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-BLpQds4F.js +0 -1
  163. package/dist-cli-web/assets/aiChat-4JvxWGXZ.js +0 -8
  164. package/dist-cli-web/assets/base-D6fxqD_X.js +0 -1
  165. package/dist-cli-web/assets/dateFormat-Bu4-Ux3L.js +0 -1
  166. package/dist-cli-web/assets/index-BUz_Vl9U.js +0 -2
  167. package/dist-cli-web/assets/index-BWZIoPV3.css +0 -1
  168. package/dist-cli-web/assets/index-BYQV3OA5.js +0 -1
  169. package/dist-cli-web/assets/index-CVVv_6qu.js +0 -2
  170. package/dist-cli-web/assets/index-CacwXQL4.js +0 -1
  171. package/dist-cli-web/assets/index-DImo7TQN.js +0 -1
  172. package/dist-cli-web/assets/index-DV9zQVPV.js +0 -137
  173. package/dist-cli-web/assets/index-DXKS-q-w.css +0 -1
  174. package/dist-cli-web/assets/index-DZc5A4_J.js +0 -1
  175. package/dist-cli-web/assets/index-DkWTvE7d.js +0 -36
  176. package/dist-cli-web/assets/index-DmEn0PAI.js +0 -1
  177. package/dist-cli-web/assets/index-b9eEQeVt.js +0 -1
  178. package/dist-cli-web/assets/index-waDxab2e.css +0 -1
  179. package/dist-cli-web/assets/insight-time-range-MJxLEu6o.js +0 -1
  180. package/dist-cli-web/assets/useTable-C7BH94MF.js +0 -1
  181. package/dist-cli-web/assets/useToast-CxhJkhXK.js +0 -1
  182. /package/dist/{chunk-VDWI4A4U.mjs.map → chunk-5MJO4AJB.mjs.map} +0 -0
  183. /package/dist/{chunk-GVW3BDGZ.mjs.map → chunk-67HNPYZJ.mjs.map} +0 -0
  184. /package/dist/{chunk-UNIKQFI5.mjs.map → chunk-6QP47LID.mjs.map} +0 -0
  185. /package/dist/{chunk-XDF6PMVZ.mjs.map → chunk-JOVL7OTW.mjs.map} +0 -0
  186. /package/dist/{chunk-U2NXHIJK.mjs.map → chunk-NFTCEJBJ.mjs.map} +0 -0
  187. /package/dist/{chunk-AAGDVTP2.mjs.map → chunk-NQHZPSW2.mjs.map} +0 -0
  188. /package/dist/{http-LVOGJFDL.mjs.map → http-5RVY5J5U.mjs.map} +0 -0
  189. /package/dist/{import-7OU57ZHM.mjs.map → import-ILTWVHKU.mjs.map} +0 -0
  190. /package/dist/{mcp-CUKHTTII.mjs.map → mcp-Y2YXOFB4.mjs.map} +0 -0
  191. /package/dist/{src-LORFXAUE.mjs.map → src-OV5ZNE3Z.mjs.map} +0 -0
  192. /package/dist/{stream-import-7YUWIAD6.mjs.map → stream-import-XOUM3Z5W.mjs.map} +0 -0
  193. /package/dist/{worker-runtime-GQ5SY7E3.mjs.map → worker-runtime-JNGURHDM.mjs.map} +0 -0
@@ -1,110 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/service-DpU9fa-l.js","assets/index-DkWTvE7d.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BWZIoPV3.css","assets/EChartWordcloud-C16xh7Tx.js","assets/vendor-echarts-wordcloud-BsaEJTPY.js","assets/vendor-echarts-DfAMQxdr.js","assets/vendor-zrender-PFmZe1EY.js"])))=>i.map(i=>d[i]);
2
- import{bo as Wt,f as T,e as t,aZ as ct,a as de,aV as Dt,A as Ct,bR as Ns,bw as xa,aW as _t,i as he,o as i,c as W,w as B,b as ye,s as E,H as Ae,P as He,ab as Et,r as z,ca as Nt,E as Us,c7 as Ws,cc as Hs,cz as Xa,D as f,aX as Ge,aY as Oe,cA as Ks,B as Be,C as tt,z as yt,m as qe,u as Qe,cB as Ys,bZ as Gs,cC as Qs,J as Js,cD as Va,ao as Jt,cE as Xs,cF as Zs,b_ as Za,cG as en,h as m,F as ue,q as ve,x as es,aj as et,cH as tn,aA as ts,bL as an,cs as sn,c0 as nn,bP as on,bO as ln,bQ as rn,bM as un,bT as as,bU as dn,bN as cn,b6 as ft,bW as mn,bX as gn,bp as pn,a4 as ie,v as c,b7 as At,b$ as fn,cI as hn,cJ as vn,b3 as We,bD as it,cK as ca,k as Ee,bu as Xt,ad as Ke,bH as yn,l as a,n as Z,_ as xn,ac as Bt,j as bn,p as kn,ae as nt,a0 as _e,a3 as Ue,a2 as we,a5 as Xe,a1 as xt,ah as dt,bJ as ba,aQ as Je,aR as wt,az as ht,ci as _n,ap as ka,W as Ht,aq as wn,aE as ss,a_ as ns,b2 as $n,a$ as _a,bB as os,cL as Oa,c1 as zt,ar as Kt,c2 as Cn,b8 as Sn,an as Ft,Z as qt,as as wa,bC as $a,c3 as Pa,c4 as Tt,aS as ls,c5 as is,at as $t,cM as In,c6 as Tn,cv as Mn,aT as Ye,aN as rs,cN as zn,cl as vt,bj as St,bI as An,bE as qn,cd as Ln,cO as Ot,a6 as Ca,a7 as Zt,ag as gt,bt as us,d as Dn,K as ja,N as En,t as Bn,am as Fn,bi as Rn,Y as Vn,aU as On,V as Pn,cf as jn,ck as Na}from"./index-DkWTvE7d.js";import{L as Nn,i as Un,_ as Yt,u as Wn}from"./LoadingState.vue_vue_type_script_setup_true_lang-CwDIA0UP.js";import{_ as Sa}from"./SectionTabs.vue_vue_type_script_setup_true_lang-C6EHKB_i.js";import{_ as Ia}from"./Select-jVtfc_xc.js";import{_ as Ta}from"./Checkbox-4F1WAuVF.js";import{u as ot}from"./useToast-CxhJkhXK.js";import{a as Lt,M as Ma,_ as Hn}from"./index-Colc58j-.js";import{u as za}from"./prompt-BgywZQ_g.js";import{useCacheService as ds}from"./service-DpU9fa-l.js";import{u as Kn,a as cs,s as Yn,b as It,c as Rt}from"./aiChat-4JvxWGXZ.js";import{_ as mt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-Bsq7gpC0.js";import{a as Gn,s as Qn,f as Jn}from"./ChatRecordWorkspace-CVDPBmcl.js";import{T as pt}from"./Tabs-CRZdCcU4.js";import{_ as rt,g as ma}from"./base-D6fxqD_X.js";import{_ as ga}from"./EChartLine.vue_vue_type_script_setup_true_lang-BYhukELX.js";import{C as Xn,_ as Aa}from"./EChart.vue_vue_type_script_setup_true_lang-CsgJ-Xn3.js";import"./vendor-echarts-wordcloud-BsaEJTPY.js";import{u as ea,p as ms,y as gs,j as qa,v as ps,i as ta,k as aa,m as Zn,n as eo,t as to,z as ao}from"./vendor-echarts-DfAMQxdr.js";import{a as fs}from"./Tabs-B6Nzq2NQ.js";import{u as hs}from"./useFormControl-De24E2zT.js";import{V as vs}from"./VisuallyHiddenInput-IQpmK9yR.js";import{u as La,a as so,i as no}from"./semantic-index-config-builder-bji_UxYE.js";import{f as oo,d as Ua}from"./dateFormat-Bu4-Ux3L.js";import{_ as lo,u as io,a as ro}from"./useTable-C7BH94MF.js";import{_ as uo}from"./TimeSelect.vue_vue_type_script_setup_true_lang-BLpQds4F.js";import{P as co}from"./PageHeader-CL9AFfvl.js";import{_ as mo}from"./PageTabs.vue_vue_type_script_setup_true_lang-C22kOxIK.js";import{_ as go}from"./Alert-DJzXKcec.js";function Ut(r,l,e){const n=r.findIndex(d=>Wt(d,l)),s=r.findIndex(d=>Wt(d,e));if(n===-1||s===-1)return[];const[u,o]=[n,s].sort((d,g)=>d-g);return r.slice(u,o+1)}function ys(r){const l=T(()=>t(r)),e=T(()=>new Intl.Collator("en",{usage:"search",...l.value}));return{startsWith:(o,d)=>d.length===0?!0:(o=o.normalize("NFC"),d=d.normalize("NFC"),e.value.compare(o.slice(0,d.length),d)===0),endsWith:(o,d)=>d.length===0?!0:(o=o.normalize("NFC"),d=d.normalize("NFC"),e.value.compare(o.slice(-d.length),d)===0),contains:(o,d)=>{if(d.length===0)return!0;o=o.normalize("NFC"),d=d.normalize("NFC");let g=0;const p=d.length;for(;g+p<=o.length;g++){const y=o.slice(g,g+p);if(e.value.compare(d,y)===0)return!0}return!1}}}function Wa(r){return r?.querySelector("[data-state=checked]")}function po(r,l,e){return r===void 0?!1:Array.isArray(r)?r.some(n=>ut(n,l,e)):ut(r,l,e)}function ut(r,l,e){return r===void 0||l===void 0?!1:typeof r=="string"?r===l:typeof e=="function"?e(r,l):typeof e=="string"?r?.[e]===l?.[e]:Wt(r,l)}const[Vt,fo]=ct("ListboxRoot");var ho=de({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(r,{expose:l,emit:e}){const n=r,s=e,{multiple:u,highlightOnHover:o,orientation:d,disabled:g,selectionBehavior:p,dir:y}=Dt(n),{getItems:_}=Ct({isProvider:!0}),{handleTypeaheadSearch:v}=Ns(),{primitiveElement:x,currentElement:b}=Et(),k=Hs(),$=xa(y),w=hs(b),S=z(),I=z(!1),h=z(!0),C=_t(n,"modelValue",s,{defaultValue:n.defaultValue??(u.value?[]:void 0),passive:n.modelValue===void 0,deep:!0});function O(le){if(I.value=!0,n.multiple){const J=Array.isArray(C.value)?[...C.value]:[],ee=J.findIndex(pe=>ut(pe,le,n.by));n.selectionBehavior==="toggle"?(ee===-1?J.push(le):J.splice(ee,1),C.value=J):(C.value=[le],S.value=le)}else n.selectionBehavior==="toggle"&&ut(C.value,le,n.by)?C.value=void 0:C.value=le;setTimeout(()=>{I.value=!1},1)}const R=z(null),L=z(null),A=z(!1),M=z(!1),q=Nt(),Y=Nt(),G=Nt();function ae(){return _().map(le=>le.ref).filter(le=>le.dataset.disabled!=="")}function re(le,J=!0,ee){if(!le)return;R.value=le,(ee??h.value)&&R.value.focus(),J&&R.value.scrollIntoView({block:"nearest"});const pe=_().find(ke=>ke.ref===le);s("highlight",pe)}function Q(le){if(A.value)G.trigger(le);else{const J=_().find(ee=>ut(ee.value,le,n.by));J&&(R.value=J.ref,re(J.ref))}}function H(le){R.value&&R.value.isConnected&&(le.preventDefault(),le.stopPropagation(),M.value||R.value.click())}function V(le){if(h.value){if(I.value=!0,A.value)Y.trigger(le);else{const J=le.altKey||le.ctrlKey||le.metaKey;if(J&&le.key==="a"&&u.value){const ee=_(),pe=ee.map($e=>$e.value);C.value=[...pe],le.preventDefault();const ke=ee.at(-1);ke&&re(ke.ref)}else if(!J){const ee=v(le.key,_());ee&&re(ee)}}setTimeout(()=>{I.value=!1},1)}}function X(){M.value=!0}function ce(){Ae(()=>{M.value=!1})}function fe(){Ae(()=>{const le=new KeyboardEvent("keydown",{key:"PageUp"});N(le)})}function te(le){const J=R.value;J?.isConnected&&(L.value=J),R.value=null,s("leave",le)}function se(le){const J=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(le.currentTarget?.dispatchEvent(J),s("entryFocus",J),!J.defaultPrevented)if(L.value)re(L.value);else{const ee=ae()?.[0];re(ee)}}function N(le){const J=Us(le,d.value,$.value);if(!J)return;let ee=ae();if(R.value){if(J==="last")ee.reverse();else if(J==="prev"||J==="next"){J==="prev"&&ee.reverse();const pe=ee.indexOf(R.value);ee=ee.slice(pe+1)}me(le,ee[0])}if(ee.length){const pe=!R.value&&J==="prev"?ee.length-1:0;re(ee[pe])}if(A.value)return Y.trigger(le)}function me(le,J){if(!(A.value||n.selectionBehavior!=="replace"||!u.value||!Array.isArray(C.value)||(le.altKey||le.ctrlKey||le.metaKey)&&!le.shiftKey)&&le.shiftKey){const pe=_().filter(De=>De.ref.dataset.disabled!=="");let ke=pe.find(De=>De.ref===J)?.value;if(le.key===k.END?ke=pe.at(-1)?.value:le.key===k.HOME&&(ke=pe[0]?.value),!ke||!S.value)return;const $e=Ut(pe.map(De=>De.value),S.value,ke);C.value=$e}}async function be(le,J=!0){if(Ws)if(await Ae(),A.value)q.trigger({event:le,scroll:J});else{const ee=ae(),pe=ee.find($e=>$e.dataset.state==="checked"),ke=J?void 0:!1;pe?re(pe,J,ke):ee.length&&re(ee[0],J,ke)}}let xe=!1;return he(C,()=>{if(!I.value){const le=xe;xe=!0,Ae(()=>{be(void 0,le)})}},{immediate:!0,deep:!0}),l({highlightedElement:R,highlightItem:Q,highlightFirstItem:fe,highlightSelected:be,getItems:_}),fo({modelValue:C,onValueChange:O,multiple:u,orientation:d,dir:$,disabled:g,highlightOnHover:o,highlightedElement:R,isVirtual:A,virtualFocusHook:q,virtualKeydownHook:Y,virtualHighlightHook:G,by:n.by,firstValue:S,selectionBehavior:p,focusable:h,onLeave:te,onEnter:se,changeHighlight:re,onKeydownEnter:H,onKeydownNavigation:N,onKeydownTypeAhead:V,onCompositionStart:X,onCompositionEnd:ce,highlightFirstItem:fe}),(le,J)=>(i(),W(t(He),{ref_key:"primitiveElement",ref:x,as:le.as,"as-child":le.asChild,dir:t($),"data-disabled":t(g)?"":void 0,onPointerleave:te,onFocusout:J[0]||(J[0]=async ee=>{const pe=ee.relatedTarget||ee.target;await Ae(),R.value&&t(b)&&!t(b).contains(pe)&&te(ee)})},{default:B(()=>[ye(le.$slots,"default",{modelValue:t(C)}),t(w)&&le.name?(i(),W(t(vs),{key:0,name:le.name,value:t(C),disabled:t(g),required:le.required},null,8,["name","value","disabled","required"])):E("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),vo=ho,yo=de({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const{CollectionSlot:l}=Ct(),e=Vt(),n=Xa(!1,10);return(s,u)=>(i(),W(t(l),null,{default:B(()=>[f(t(He),{role:"listbox",as:s.as,"as-child":s.asChild,tabindex:t(e).focusable.value?t(e).highlightedElement.value?"-1":"0":"-1","aria-orientation":t(e).orientation.value,"aria-multiselectable":!!t(e).multiple.value,"data-orientation":t(e).orientation.value,onMousedown:u[0]||(u[0]=Oe(o=>n.value=!0,["left"])),onFocus:u[1]||(u[1]=o=>{t(n)||t(e).onEnter(o)}),onKeydown:[u[2]||(u[2]=Ge(o=>{t(e).orientation.value==="vertical"&&(o.key==="ArrowLeft"||o.key==="ArrowRight")||t(e).orientation.value==="horizontal"&&(o.key==="ArrowUp"||o.key==="ArrowDown")||(o.preventDefault(),t(e).focusable.value&&t(e).onKeydownNavigation(o))},["down","up","left","right","home","end"])),Ge(t(e).onKeydownEnter,["enter"]),t(e).onKeydownTypeAhead]},{default:B(()=>[ye(s.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),xo=yo,bo=de({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(r,{emit:l}){const e=r,s=_t(e,"modelValue",l,{defaultValue:"",passive:e.modelValue===void 0}),u=Vt(),{primitiveElement:o,currentElement:d}=Et(),g=T(()=>e.disabled||u.disabled.value||!1),p=z();Ks(()=>p.value=u.highlightedElement.value?.id),Be(()=>{u.focusable.value=!1,setTimeout(()=>{e.autoFocus&&d.value?.focus()},1)}),tt(()=>{u.focusable.value=!0});const{isComposing:y,handleCompositionStart:_,handleCompositionEnd:v}=La(w=>{s.value=w.target.value,u.onCompositionEnd(),u.highlightFirstItem()});function x(){u.onCompositionStart(),_()}function b(w){y.value||(s.value=w.target.value,u.highlightFirstItem())}function k(w){y.value||(w.preventDefault(),u.onKeydownNavigation(w))}function $(w){y.value||u.onKeydownEnter(w)}return(w,S)=>(i(),W(t(He),{ref_key:"primitiveElement",ref:o,as:w.as,"as-child":w.asChild,value:t(s),disabled:g.value?"":void 0,"data-disabled":g.value?"":void 0,"aria-disabled":g.value??void 0,"aria-activedescendant":p.value,type:"text",onKeydown:[Ge(k,["down","up","home","end"]),Ge($,["enter"])],onInput:b,onCompositionstart:x,onCompositionend:t(v)},{default:B(()=>[ye(w.$slots,"default",{modelValue:t(s)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),ko=bo;const[y2,_o]=ct("ListboxGroup");var wo=de({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const l=r,e=yt(void 0,"reka-listbox-group");return _o({id:e}),(n,s)=>(i(),W(t(He),qe({role:"group"},l,{"aria-labelledby":t(e)}),{default:B(()=>[ye(n.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),$o=wo;const Co="listbox.select",[So,Io]=ct("ListboxItem");var To=de({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(r,{emit:l}){const e=r,n=l,s=yt(void 0,"reka-listbox-item"),{CollectionItem:u}=Ct(),{forwardRef:o,currentElement:d}=Qe(),g=Vt(),p=T(()=>d.value!=null&&d.value===g.highlightedElement.value),y=T(()=>po(g.modelValue.value,e.value,g.by)),_=T(()=>g.disabled.value||e.disabled);async function v(b){n("select",b),!b?.defaultPrevented&&!_.value&&b&&(g.onValueChange(e.value),g.changeHighlight(d.value))}function x(b){const k={originalEvent:b,value:e.value};Gs(Co,v,k)}return Io({isSelected:y}),(b,k)=>(i(),W(t(u),{value:b.value},{default:B(()=>[Ys([p.value,y.value,_.value,t(g).focusable.value],()=>f(t(He),qe({id:t(s)},b.$attrs,{ref:t(o),role:"option",tabindex:t(g).focusable.value?p.value?"0":"-1":-1,"aria-selected":y.value,as:b.as,"as-child":b.asChild,disabled:_.value?"":void 0,"data-disabled":_.value?"":void 0,"data-highlighted":p.value?"":void 0,"data-state":y.value?"checked":"unchecked",onClick:x,onKeydown:Ge(Oe(x,["prevent"]),["space"]),onPointermove:k[0]||(k[0]=()=>{t(g).highlightedElement.value!==t(d)&&t(g).highlightOnHover.value&&t(g).changeHighlight(t(d),!1,!1)})}),{default:B(()=>[ye(b.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),k,1)]),_:3},8,["value"]))}}),Mo=To,zo=de({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(r){const l=r;Qe();const e=So();return(n,s)=>t(e).isSelected.value?(i(),W(t(He),qe({key:0,"aria-hidden":"true"},l),{default:B(()=>[ye(n.$slots,"default")]),_:3},16)):E("v-if",!0)}}),Ao=zo;function qo(r,l,e){const n=new Array(r);return new Proxy(n,{get(s,u,o){if(typeof u=="string"){const d=u.charCodeAt(0);if(d>=48&&d<=57){const g=+u;if(Number.isInteger(g)&&g>=0&&g<r){let p=s[g];if(!p){const y=l[g*2];p=s[g]={index:g,key:e(g),start:y,size:l[g*2+1],end:y+l[g*2+1],lane:0}}return p}}if(u==="length")return r}return Reflect.get(s,u,o)}})}function kt(r,l,e){let n=e.initialDeps??[],s,u=!0;function o(){const d=r();return(d.length!==n.length||d.some((p,y)=>n[y]!==p))&&(n=d,s=l(...d),e?.onChange&&!(u&&e.skipInitialOnChange)&&e.onChange(s),u=!1),s}return o.updateDeps=d=>{n=d},o}function Ha(r,l){if(r===void 0)throw new Error("Unexpected undefined");return r}const Lo=(r,l)=>Math.abs(r-l)<1.01,Do=(r,l,e)=>{let n;return function(...s){r.clearTimeout(n),n=r.setTimeout(()=>l.apply(this,s),e)}};let Mt;const oa=()=>{if(Mt!==void 0)return Mt;if(typeof navigator>"u")return Mt=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Mt=!0;const r=navigator.maxTouchPoints;return Mt=navigator.platform==="MacIntel"&&r!==void 0&&r>0},Ka=r=>{const{offsetWidth:l,offsetHeight:e}=r;return{width:l,height:e}},Eo=r=>r,Bo=r=>{const l=Math.max(r.startIndex-r.overscan,0),n=Math.min(r.endIndex+r.overscan,r.count-1)-l+1,s=new Array(n);for(let u=0;u<n;u++)s[u]=l+u;return s},Fo=(r,l)=>{const e=r.scrollElement;if(!e)return;const n=r.targetWindow;if(!n)return;const s=o=>{const{width:d,height:g}=o;l({width:Math.round(d),height:Math.round(g)})};if(s(Ka(e)),!n.ResizeObserver)return()=>{};const u=new n.ResizeObserver(o=>{const d=()=>{const g=o[0];if(g?.borderBoxSize){const p=g.borderBoxSize[0];if(p){s({width:p.inlineSize,height:p.blockSize});return}}s(Ka(e))};r.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(d):d()});return u.observe(e,{box:"border-box"}),()=>{u.unobserve(e)}},Gt={passive:!0},Ro=typeof window>"u"?!0:"onscrollend"in window,Vo=(r,l,e)=>{const n=r.scrollElement;if(!n)return;const s=r.targetWindow;if(!s)return;const u=r.options.useScrollendEvent&&Ro;let o=0;const d=u?null:Do(s,()=>l(o,!1),r.options.isScrollingResetDelay),g=_=>()=>{o=e(n),d?.(),l(o,_)},p=g(!0),y=g(!1);return n.addEventListener("scroll",p,Gt),u&&n.addEventListener("scrollend",y,Gt),()=>{n.removeEventListener("scroll",p),u&&n.removeEventListener("scrollend",y)}},Oo=(r,l)=>Vo(r,l,e=>{const{horizontal:n,isRtl:s}=r.options;return n?e.scrollLeft*(s&&-1||1):e.scrollTop}),Po=(r,l,e)=>{if(e.options.useCachedMeasurements){const n=e.indexFromElement(r),s=e.options.getItemKey(n);return e.itemSizeCache.get(s)??e.options.estimateSize(n)}if(l?.borderBoxSize){const n=l.borderBoxSize[0];if(n)return Math.round(n[e.options.horizontal?"inlineSize":"blockSize"])}if(!l){const n=e.indexFromElement(r),s=e.options.getItemKey(n),u=e.itemSizeCache.get(s);if(u!==void 0)return u}return r[e.options.horizontal?"offsetWidth":"offsetHeight"]},jo=(r,{adjustments:l=0,behavior:e},n)=>{var s,u;(u=(s=n.scrollElement)==null?void 0:s.scrollTo)==null||u.call(s,{[n.options.horizontal?"left":"top"]:r+l,behavior:e})},No=jo;class Uo{constructor(l){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e,n,s;return((s=(n=(e=this.targetWindow)==null?void 0:e.performance)==null?void 0:n.now)==null?void 0:s.call(n))??Date.now()},this.observer=(()=>{let e=null;const n=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(s=>{s.forEach(u=>{const o=()=>{const d=u.target,g=this.indexFromElement(d);if(!d.isConnected){this.observer.unobserve(d);for(const[p,y]of this.elementsCache)if(y===d){this.elementsCache.delete(p);break}return}this.shouldMeasureDuringScroll(g)&&this.resizeItem(g,this.options.measureElement(d,u,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()})}));return{disconnect:()=>{var s;(s=n())==null||s.disconnect(),e=null},observe:s=>{var u;return(u=n())==null?void 0:u.observe(s,{box:"border-box"})},unobserve:s=>{var u;return(u=n())==null?void 0:u.unobserve(s)}}})(),this.range=null,this.setOptions=e=>{var n,s;const u={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Eo,rangeExtractor:Bo,onChange:()=>{},measureElement:Po,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const v in e){const x=e[v];x!==void 0&&(u[v]=x)}const o=this.options;let d=null,g=null,p=!1;if(o!==void 0&&o.enabled&&u.enabled&&u.anchorTo==="end"&&this.scrollElement!==null){const v=o.count,x=u.count,b=this.getMeasurements(),k=v>0?((n=b[0])==null?void 0:n.key)??o.getItemKey(0):null,$=v>0?((s=b[v-1])==null?void 0:s.key)??o.getItemKey(v-1):null;if(x!==v||v>0&&x>0&&(u.getItemKey(0)!==k||u.getItemKey(x-1)!==$)){p=!0;const I=v>0?this.getVirtualItemForOffset(this.getScrollOffset())??b[0]:null;I&&(d=[I.key,this.getScrollOffset()-I.start]);const h=u.followOnAppend===!0?"auto":u.followOnAppend||null;h&&x>v&&this.isAtEnd(o.scrollEndThreshold)&&(v===0||u.getItemKey(x-1)!==$)&&(g=h)}}this.options=u,p&&(this.pendingMin=0,this.itemSizeCacheVersion++);let y=!1,_=0;if(d&&this.scrollOffset!==null){const[v,x]=d,b=this.getMeasurements(),{count:k,getItemKey:$}=this.options;let w=0;for(;w<k&&$(w)!==v;)w++;if(w<k){const S=b[w];if(S){const I=S.start+x;I!==this.scrollOffset&&(_=I-this.scrollOffset,this.scrollOffset=I,y=!0)}}}(y||g)&&(this.pendingScrollAnchor=[y?d[0]:null,y?d[1]:0,g,_])},this.notify=e=>{var n,s;(s=(n=this.options).onChange)==null||s.call(n,this,e)},this.maybeNotify=kt(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const n=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==n){if(this.cleanup(),!n){this.maybeNotify();return}if(this.scrollElement=n,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((e=this.scrollElement)==null?void 0:e.window)??null,this.elementsCache.forEach(u=>{this.observer.observe(u)}),this.unsubs.push(this.options.observeElementRect(this,u=>{this.scrollRect=u,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(u,o)=>{if(o&&this._intendedScrollOffset===null&&u===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(u-this._intendedScrollOffset)<1.5&&(u=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const d=this.getScrollOffset();this.scrollDirection=o?d===u?this.scrollDirection:d<u?"forward":"backward":null,this.scrollOffset=u,this.isScrolling=o,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const u=this.scrollElement,o=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},d=()=>{this._iosTouching=!1,!(!oa()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};u.addEventListener("touchstart",o,Gt),u.addEventListener("touchend",d,Gt),this.unsubs.push(()=>{u.removeEventListener("touchstart",o),u.removeEventListener("touchend",d),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const s=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,s&&this.scrollElement&&this.options.enabled){const[u,o,d,g]=s;u!==null&&!d&&(oa()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?g!==0&&(this._iosDeferredAdjustment+=g):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),d&&this.scrollToEnd({behavior:d})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const e=this.getScrollOffset(),n=this.getMaxScrollOffset();if(e<0||e>n)return;const s=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=s,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=kt(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,n,s,u,o,d,g,p)=>(this.prevLanes!==void 0&&this.prevLanes!==d&&(this.lanesChangedFlag=!0),this.prevLanes=d,this.pendingMin=null,{count:e,paddingStart:n,scrollMargin:s,getItemKey:u,enabled:o,lanes:d,laneAssignmentMode:g,gap:p}),{key:!1}),this.getMeasurements=kt(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:n,scrollMargin:s,getItemKey:u,enabled:o,lanes:d,laneAssignmentMode:g,gap:p},y)=>{const _=this.itemSizeCache;if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(const w of this.laneAssignments.keys())w>=e&&this.laneAssignments.delete(w);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(w=>{this.itemSizeCache.set(w.key,w.size)}));const v=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),d===1){const w=e*2;let S=this._flatMeasurements;if(!S||S.length<w){const C=new Float64Array(w);S&&v>0&&C.set(S.subarray(0,v*2)),S=C,this._flatMeasurements=S}let I;if(v===0)I=n+s;else{const C=v-1;I=S[C*2]+S[C*2+1]+p}for(let C=v;C<e;C++){const O=u(C),R=_.get(O),L=typeof R=="number"?R:this.options.estimateSize(C);S[C*2]=I,S[C*2+1]=L,I+=L+p}const h=qo(e,S,u);return this.measurementsCache=h,h}const x=this.measurementsCache.slice(0,v),b=new Array(d).fill(void 0),k=new Float64Array(d);let $=0;for(let w=0;w<v;w++){const S=x[w];S&&(b[S.lane]===void 0&&$++,b[S.lane]=w,k[S.lane]=S.end)}for(let w=v;w<e;w++){const S=u(w),I=this.laneAssignments.get(w);let h,C;const O=g==="estimate"||_.has(S);if(I!==void 0&&this.options.lanes>1){h=I;const M=b[h],q=M!==void 0?x[M]:void 0;C=q?q.end+p:n+s}else if($===d){let M=0,q=k[0],Y=b[0];for(let G=1;G<d;G++){const ae=k[G];(ae<q||ae===q&&b[G]<Y)&&(M=G,q=ae,Y=b[G])}h=M,C=q+p,O&&this.laneAssignments.set(w,h)}else h=w%this.options.lanes,C=n+s,O&&this.laneAssignments.set(w,h);const R=_.get(S),L=typeof R=="number"?R:this.options.estimateSize(w),A=C+L;x[w]={index:w,start:C,size:L,end:A,key:S,lane:h},b[h]===void 0&&$++,b[h]=w,k[h]=A}return this.measurementsCache=x,x},{key:!1,debug:()=>this.options.debug}),this.calculateRange=kt(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,n,s,u)=>e.length===0||n===0?(this.range=null,null):(this.range=Ho(e,n,s,u,u===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=kt(()=>{let e=null,n=null;const s=this.calculateRange();return s&&(e=s.startIndex,n=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,n]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,n]},(e,n,s,u,o)=>u===null||o===null?[]:e({startIndex:u,endIndex:o,overscan:n,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const n=this.options.indexAttribute,s=e.getAttribute(n);return s?parseInt(s,10):(console.warn(`Missing attribute name '${n}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var n;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((n=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:n.index);if(s!==void 0&&this.range){const u=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),o=Math.max(0,s-u),d=Math.min(this.options.count-1,s+u);return e>=o&&e<=d}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((o,d)=>{o.isConnected||(this.observer.unobserve(o),this.elementsCache.delete(d))});return}const n=this.indexFromElement(e),s=this.options.getItemKey(n),u=this.elementsCache.get(s);u!==e&&(u&&this.observer.unobserve(u),this.observer.observe(e),this.elementsCache.set(s,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,n)=>{var s,u;if(e<0||e>=this.options.count)return;let o,d,g;const p=this._flatMeasurements;if(this.options.lanes===1&&p!==null)g=this.options.getItemKey(e),d=p[e*2],o=p[e*2+1];else{const v=this.measurementsCache[e];if(!v)return;g=v.key,d=v.start,o=v.size}const y=this.itemSizeCache.get(g)??o,_=n-y;if(_!==0){const v=this.options.anchorTo==="end"&&((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,x=v?this.getTotalSize():0,b=((u=this.scrollState)==null?void 0:u.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:g,start:d,size:o,end:d+o,lane:0},_,this):d<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(g)||this.scrollDirection!=="backward"));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(g,n),this.itemSizeCacheVersion++,v?this.applyScrollAdjustment(this.getTotalSize()-x):b&&this.applyScrollAdjustment(_),this.notify(!1)}},this.getVirtualItems=kt(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,n)=>{const s=[];for(let u=0,o=e.length;u<o;u++){const d=e[u],g=n[d];s.push(g)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{const n=this.getMeasurements();if(n.length===0)return;const s=this._flatMeasurements,u=this.options.lanes===1&&s!=null,o=xs(0,n.length-1,u?d=>s[d*2]:d=>Ha(n[d]).start,e);return Ha(n[o])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,n,s=0)=>{if(!this.scrollElement)return 0;const u=this.getSize(),o=this.getScrollOffset();n==="auto"&&(n=e>=o+u?"end":"start"),n==="center"?e+=(s-u)/2:n==="end"&&(e-=u);const d=this.getMaxScrollOffset();return Math.max(Math.min(d,e),0)},this.getOffsetForIndex=(e,n="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const s=this.getSize(),u=this.getScrollOffset(),o=this.measurementsCache[e];if(!o)return;if(n==="auto")if(o.end>=u+s-this.options.scrollPaddingEnd)n="end";else if(o.start<=u+this.options.scrollPaddingStart)n="start";else return[u,n];if(n==="end"&&e===this.options.count-1)return[this.getMaxScrollOffset(),n];const d=n==="end"?o.end+this.options.scrollPaddingEnd:o.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(d,n,o.size),n]},this.scrollToOffset=(e,{align:n="start",behavior:s="auto"}={})=>{const u=this.getOffsetForAlignment(e,n),o=this.now();this.scrollState={index:null,align:n,behavior:s,startedAt:o,lastTargetOffset:u,stableFrames:0},this._scrollToOffset(u,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:n="auto",behavior:s="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));const u=this.getOffsetForIndex(e,n);if(!u)return;const[o,d]=u,g=this.now();this.scrollState={index:e,align:d,behavior:s,startedAt:g,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:n="auto"}={})=>{const s=this.getScrollOffset()+e,u=this.now();this.scrollState={index:null,align:"start",behavior:n,startedAt:u,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{var e;const n=this.getMeasurements();let s;if(n.length===0)s=this.options.paddingStart;else if(this.options.lanes===1){const u=n.length-1,o=this._flatMeasurements;o!=null?s=o[u*2]+o[u*2+1]:s=((e=n[u])==null?void 0:e.end)??0}else{const u=Array(this.options.lanes).fill(null);let o=n.length-1;for(;o>=0&&u.some(d=>d===null);){const d=n[o];u[d.lane]===null&&(u[d.lane]=d.end),o--}s=Math.max(...u.filter(d=>d!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const e=[];if(this.itemSizeCache.size===0)return e;const n=this.getMeasurements();for(const s of n)s&&this.itemSizeCache.has(s.key)&&e.push({index:s.index,key:s.key,start:s.start,size:s.size,end:s.end,lane:s.lane});return e},this._scrollToOffset=(e,{adjustments:n,behavior:s})=>{this._intendedScrollOffset=e+(n??0),this.options.scrollToFn(e,{behavior:s,adjustments:n},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(l)}applyScrollAdjustment(l,e){l!==0&&(oa()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=l:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=l,behavior:e}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const n=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=n?n[0]:this.scrollState.lastTargetOffset,u=1,o=s!==this.scrollState.lastTargetOffset;if(!o&&Lo(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=u){this.getScrollOffset()!==s&&this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,o){const d=this.getSize()||600,g=Math.abs(s-this.getScrollOffset()),p=this.scrollState.behavior==="smooth"&&g>d;this.scrollState.lastTargetOffset=s,p||(this.scrollState.behavior="auto"),this._scrollToOffset(s,{adjustments:void 0,behavior:p?"smooth":"auto"})}this.scheduleScrollReconcile()}}const xs=(r,l,e,n)=>{for(;r<=l;){const s=(r+l)/2|0,u=e(s);if(u<n)r=s+1;else if(u>n)l=s-1;else return s}return r>0?r-1:0};function Wo(r,l,e){let n=0;for(;n<=l;){const s=(n+l)/2|0,u=r[s*2];if(u<e)n=s+1;else if(u>e)l=s-1;else return s}return n>0?n-1:0}function Ho(r,l,e,n,s){const u=r.length-1;if(r.length<=n)return{startIndex:0,endIndex:u};if(n===1&&s!==null){const p=Wo(s,u,e);let y=p;const _=e+l;for(;y<u&&s[y*2]+s[y*2+1]<_;)y++;return{startIndex:p,endIndex:y}}let d=xs(0,u,p=>r[p].start,e),g=d;if(n===1)for(;g<u&&r[g].end<e+l;)g++;else if(n>1){const p=Array(n).fill(0);for(;g<u&&p.some(_=>_<e+l);){const _=r[g];p[_.lane]=_.end,g++}const y=Array(n).fill(e+l);for(;d>=0&&y.some(_=>_>=e);){const _=r[d];y[_.lane]=_.start,d--}d=Math.max(0,d-d%n),g=Math.min(u,g+(n-1-g%n))}return{startIndex:d,endIndex:g}}function Ko(r){const l=new Uo(t(r)),e=Js(l),n=l._didMount();return he(()=>t(r).getScrollElement(),s=>{s&&l._willUpdate()},{immediate:!0}),he(()=>t(r),s=>{l.setOptions({...s,onChange:(u,o)=>{var d;Va(e),(d=s.onChange)==null||d.call(s,u,o)}}),l._willUpdate(),Va(e)},{immediate:!0}),Qs(n),e}function Yo(r){return Ko(T(()=>({observeElementRect:Fo,observeElementOffset:Oo,scrollToFn:No,...t(r)})))}var Go=de({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(r){const l=r,e=Jt(),n=Vt(),s=Xs(),{getItems:u}=Ct();n.isVirtual.value=!0;const o=T(()=>{const v=s.value;if(v){const x=window.getComputedStyle(v);return{start:Number.parseFloat(x.paddingBlockStart||x.paddingTop),end:Number.parseFloat(x.paddingBlockEnd||x.paddingBottom)}}else return{start:0,end:0}}),d=Yo({get scrollPaddingStart(){return o.value.start},get scrollPaddingEnd(){return o.value.end},get count(){return l.options.length},get horizontal(){return n.orientation.value==="horizontal"},estimateSize(v){return typeof l.estimateSize=="function"?l.estimateSize(v):l.estimateSize??28},getScrollElement(){return s.value},overscan:l.overscan??12}),g=T(()=>d.value.getVirtualItems().map(v=>{const x=e.default({option:l.options[v.index],virtualizer:d.value,virtualItem:v})[0],b=x.type===ue&&Array.isArray(x.children)?x.children.find(k=>typeof k.type!="symbol"):x;return{item:v,is:tn(b,{key:`${v.key}`,"data-index":v.index,"aria-setsize":l.options.length,"aria-posinset":v.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${v.start}px)`,overflowAnchor:"none"}})}}));n.virtualFocusHook.on(({event:v,scroll:x})=>{const b=l.options.findIndex(k=>Array.isArray(n.modelValue.value)?ut(k,n.modelValue.value[0],n.by):ut(k,n.modelValue.value,n.by));b!==-1?(v?.preventDefault(),d.value.scrollToIndex(b,{align:"start"}),requestAnimationFrame(()=>{const k=Wa(s.value);k&&(n.changeHighlight(k,x,x?void 0:!1),v&&k?.focus())})):x?n.highlightFirstItem():requestAnimationFrame(()=>{const k=u().find($=>$.ref.dataset.disabled!=="")?.ref;k&&n.changeHighlight(k,!1,!1)})}),n.virtualHighlightHook.on(v=>{const x=l.options.findIndex(b=>ut(b,v,n.by));d.value.scrollToIndex(x,{align:"start"}),requestAnimationFrame(()=>{const b=Wa(s.value);b&&n.changeHighlight(b)})});const p=Xa("",1e3),y=T(()=>{const v=x=>l.textContent?l.textContent(x):x?.toString().toLowerCase();return l.options.map((x,b)=>({index:b,textContent:v(x)}))});function _(v,x){if(!n.firstValue?.value||!n.multiple.value||!Array.isArray(n.modelValue.value))return;const k=u().filter(w=>w.ref.dataset.disabled!=="").find(w=>w.ref===n.highlightedElement.value)?.value;if(!k)return;let $=null;switch(x){case"prev":case"next":{$=Ut(l.options,n.firstValue.value,k);break}case"first":{$=Ut(l.options,n.firstValue.value,l.options?.[0]);break}case"last":{$=Ut(l.options,n.firstValue.value,l.options.at(-1));break}}n.modelValue.value=$}return n.virtualKeydownHook.on(v=>{const x=v.altKey||v.ctrlKey||v.metaKey;if(v.key==="Tab"&&!x)return;let k=Zs[v.key];if(x&&v.key==="a"&&n.multiple.value?(v.preventDefault(),n.modelValue.value=[...l.options],k="last"):v.shiftKey&&k&&_(v,k),["first","last"].includes(k)){v.preventDefault();const $=k==="first"?0:l.options.length-1;d.value.scrollToIndex($),requestAnimationFrame(()=>{const w=u(),S=k==="first"?w[0]:w.at(-1);S&&n.changeHighlight(S.ref)})}else if(!k&&!x){p.value+=v.key;const $=Number(Za()?.getAttribute("data-index")),w=y.value[$].textContent,S=y.value.map(C=>C.textContent??""),I=en(S,p.value,w),h=y.value.find(C=>C.textContent===I);h&&(d.value.scrollToIndex(h.index,{align:"start"}),requestAnimationFrame(()=>{const C=s.value.querySelector(`[data-index="${h.index}"]`);C instanceof HTMLElement&&n.changeHighlight(C)}))}}),(v,x)=>(i(),m("div",{"data-reka-virtualizer":"",style:et({position:"relative",width:"100%",height:`${t(d).getTotalSize()}px`})},[(i(!0),m(ue,null,ve(g.value,({is:b,item:k})=>(i(),W(es(b),{key:k.index}))),128))],4))}}),Qo=Go;const[at,Jo]=ct("ComboboxRoot");var Xo=de({__name:"ComboboxRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","update:open"],setup(r,{expose:l,emit:e}){const n=r,s=e,{primitiveElement:u,currentElement:o}=Et(),{multiple:d,disabled:g,ignoreFilter:p,resetSearchTermOnSelect:y,openOnFocus:_,openOnClick:v,dir:x,resetModelValueOnClear:b,highlightOnHover:k}=Dt(n),$=xa(x),w=_t(n,"modelValue",s,{defaultValue:n.defaultValue??(d.value?[]:void 0),passive:n.modelValue===void 0,deep:!0}),S=_t(n,"open",s,{defaultValue:n.defaultOpen,passive:n.open===void 0});async function I(Q){S.value=Q,G.value="",Q?(await Ae(),u.value?.highlightSelected(),C.value=!0,R.value?.focus()):(C.value=!1,setTimeout(()=>{!Q&&n.resetSearchTermOnBlur&&h.trigger()},1))}const h=Nt(),C=z(!1),O=z(!1),R=z(),L=z(),A=T(()=>u.value?.highlightedElement??void 0),M=z(new Map),q=z(new Map),{contains:Y}=ys({sensitivity:"base"}),G=z(""),ae=T(Q=>{if(!G.value||n.ignoreFilter||O.value)return{count:M.value.size,items:Q?.items??new Map,groups:Q?.groups??new Set(q.value.keys())};let H=0;const V=new Map,X=new Set;for(const[ce,fe]of M.value){const te=Y(fe,G.value);V.set(ce,te?1:0),te&&H++}for(const[ce,fe]of q.value)for(const te of fe)if(V.get(te)>0){X.add(ce);break}return{count:H,items:V,groups:X}}),re=sn();return Be(()=>{re?.exposed&&(re.exposed.highlightItem=u.value?.highlightItem,re.exposed.highlightFirstItem=u.value?.highlightFirstItem,re.exposed.highlightSelected=u.value?.highlightSelected)}),l({filtered:ae,highlightedElement:A,highlightItem:u.value?.highlightItem,highlightFirstItem:u.value?.highlightFirstItem,highlightSelected:u.value?.highlightSelected}),Jo({modelValue:w,multiple:d,disabled:g,open:S,onOpenChange:I,contentId:"",isUserInputted:C,isVirtual:O,inputElement:R,highlightedElement:A,onInputElementChange:Q=>R.value=Q,triggerElement:L,onTriggerElementChange:Q=>L.value=Q,parentElement:o,resetSearchTermOnSelect:y,onResetSearchTerm:h.on,allItems:M,allGroups:q,filterSearch:G,filterState:ae,ignoreFilter:p,openOnFocus:_,openOnClick:v,resetModelValueOnClear:b}),(Q,H)=>(i(),W(t(an),null,{default:B(()=>[f(t(vo),qe({ref_key:"primitiveElement",ref:u},Q.$attrs,{modelValue:t(w),"onUpdate:modelValue":H[0]||(H[0]=V=>ts(w)?w.value=V:null),style:{pointerEvents:t(S)?"auto":void 0},as:Q.as,"as-child":Q.asChild,dir:t($),multiple:t(d),name:Q.name,required:Q.required,disabled:t(g),"highlight-on-hover":t(k),by:n.by,onHighlight:H[1]||(H[1]=V=>s("highlight",V))}),{default:B(()=>[ye(Q.$slots,"default",{open:t(S),modelValue:t(w)})]),_:3},16,["modelValue","style","as","as-child","dir","multiple","name","required","disabled","highlight-on-hover","by"])]),_:3}))}}),Zo=Xo,el=de({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const{forwardRef:l}=Qe();return(e,n)=>(i(),W(t(nn),{"as-child":"",reference:e.reference},{default:B(()=>[f(t(He),qe({ref:t(l),"as-child":e.asChild,as:e.as},e.$attrs),{default:B(()=>[ye(e.$slots,"default")]),_:3},16,["as-child","as"])]),_:3},8,["reference"]))}}),tl=el;const[al,sl]=ct("ComboboxContent");var nl=de({__name:"ComboboxContentImpl",props:{position:{type:String,required:!1,default:"inline"},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(r,{emit:l}){const e=r,n=l,{position:s}=Dt(e),u=at(),o=T(()=>u.ignoreFilter.value?u.allItems.value.size===0:u.filterState.value.count===0),{forwardRef:d,currentElement:g}=Qe();on(e.bodyLock),ln(),rn(u.parentElement);const p=T(()=>e.position==="popper"?e:{}),y=un(p.value),_={boxSizing:"border-box","--reka-combobox-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-combobox-content-available-width":"var(--reka-popper-available-width)","--reka-combobox-content-available-height":"var(--reka-popper-available-height)","--reka-combobox-trigger-width":"var(--reka-popper-anchor-width)","--reka-combobox-trigger-height":"var(--reka-popper-anchor-height)"};sl({position:s});const v=z(!1);Be(()=>{u.inputElement.value&&(v.value=g.value.contains(u.inputElement.value),v.value&&u.inputElement.value.focus())}),tt(()=>{const b=Za();v.value&&(!b||b===document.body)&&u.triggerElement.value?.focus()});function x(b){if(u.parentElement.value?.contains(b))return!0;const $=(b instanceof Element?b.closest("label"):null)?.control;return!!$&&!!u.parentElement.value?.contains($)}return(b,k)=>(i(),W(t(xo),{"as-child":""},{default:B(()=>[f(t(as),{"as-child":"",onMountAutoFocus:k[5]||(k[5]=Oe(()=>{},["prevent"])),onUnmountAutoFocus:k[6]||(k[6]=Oe(()=>{},["prevent"]))},{default:B(()=>[f(t(dn),{"as-child":"","disable-outside-pointer-events":b.disableOutsidePointerEvents,onDismiss:k[0]||(k[0]=$=>t(u).onOpenChange(!1)),onFocusOutside:k[1]||(k[1]=$=>{x($.target)&&$.preventDefault(),n("focusOutside",$)}),onInteractOutside:k[2]||(k[2]=$=>n("interactOutside",$)),onEscapeKeyDown:k[3]||(k[3]=$=>n("escapeKeyDown",$)),onPointerDownOutside:k[4]||(k[4]=$=>{x($.target)&&$.preventDefault(),n("pointerDownOutside",$)})},{default:B(()=>[(i(),W(es(t(s)==="popper"?t(cn):t(He)),qe({...b.$attrs,...t(y)},{id:t(u).contentId,ref:t(d),"data-state":t(u).open.value?"open":"closed","data-empty":o.value?"":void 0,style:{display:e.hideWhenEmpty&&o.value?"none":"flex",flexDirection:"column",outline:"none",...t(s)==="popper"?_:{}}}),{default:B(()=>[ye(b.$slots,"default")]),_:3},16,["id","data-state","data-empty","style"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),ol=nl,ll=de({__name:"ComboboxArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(r){const l=r,e=at(),n=al();return Qe(),(s,u)=>t(e).open.value&&t(n).position.value==="popper"?(i(),W(t(mn),ft(qe({key:0},l)),{default:B(()=>[ye(s.$slots,"default")]),_:3},16)):E("v-if",!0)}}),il=ll,rl=de({__name:"ComboboxCancel",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const l=r;Qe();const e=at();function n(){e.filterSearch.value="",e.inputElement.value&&(e.inputElement.value.value="",e.inputElement.value.focus()),e.resetModelValueOnClear?.value&&(e.modelValue.value=e.multiple.value?[]:null)}return(s,u)=>(i(),W(t(He),qe({type:s.as==="button"?"button":void 0},l,{tabindex:"-1",onClick:n}),{default:B(()=>[ye(s.$slots,"default")]),_:3},16,["type"]))}}),ul=rl,dl=de({__name:"ComboboxContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(r,{emit:l}){const s=gn(r,l),{forwardRef:u}=Qe(),o=at();return o.contentId||=yt(void 0,"reka-combobox-content"),(d,g)=>(i(),W(t(pn),{present:d.forceMount||t(o).open.value},{default:B(()=>[f(ol,qe({...t(s),...d.$attrs},{ref:t(u)}),{default:B(()=>[ye(d.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),cl=dl,ml=de({__name:"ComboboxEmpty",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const l=r,e=at(),n=T(()=>e.ignoreFilter.value?e.allItems.value.size===0:e.filterState.value.count===0);return(s,u)=>n.value?(i(),W(t(He),ft(qe({key:0},l)),{default:B(()=>[ye(s.$slots,"default",{},()=>[u[0]||(u[0]=ie("No options"))])]),_:3},16)):E("v-if",!0)}}),gl=ml;const[bs,pl]=ct("ComboboxGroup");var fl=de({__name:"ComboboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const l=r,e=yt(void 0,"reka-combobox-group"),n=at(),s=T(()=>n.ignoreFilter.value?!0:n.filterSearch.value?n.filterState.value.groups.has(e):!0),u=pl({id:e,labelId:""});return Be(()=>{n.allGroups.value.has(e)||n.allGroups.value.set(e,new Set)}),tt(()=>{n.allGroups.value.delete(e)}),(o,d)=>(i(),W(t($o),qe({id:t(e),"aria-labelledby":t(u).labelId},l,{hidden:s.value?void 0:!0}),{default:B(()=>[ye(o.$slots,"default")]),_:3},16,["id","aria-labelledby","hidden"]))}}),la=fl,hl=de({__name:"ComboboxInput",props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(r,{emit:l}){const e=r,n=l,s=at(),u=Vt(),{primitiveElement:o,currentElement:d}=Et(),g=_t(e,"modelValue",n,{passive:e.modelValue===void 0});Be(()=>{d.value&&s.onInputElementChange(d.value)});const{isComposing:p,handleCompositionStart:y,handleCompositionEnd:_}=La(I=>{const h=I.target;h&&x(h.value)});function v(I){p.value||(I.preventDefault(),s.open.value||s.onOpenChange(!0))}function x(I){s.open.value?s.filterSearch.value=I:(s.onOpenChange(!0),Ae(()=>{I&&(s.filterSearch.value=I,u.highlightFirstItem())}))}function b(I){p.value||x(I.target.value)}function k(){s.openOnFocus.value&&!s.open.value&&s.onOpenChange(!0)}function $(I){if(!s.open.value)return;const h=I.relatedTarget;if(!h)return;const C=s.parentElement.value?.contains(h),O=document.getElementById(s.contentId)?.contains(h);!C&&!O&&requestAnimationFrame(()=>{if(!s.open.value)return;const R=document.activeElement;!s.parentElement.value?.contains(R)&&!document.getElementById(s.contentId)?.contains(R)&&s.onOpenChange(!1)})}function w(){s.openOnClick.value&&!s.open.value&&s.onOpenChange(!0)}function S(){const I=s.modelValue.value;e.displayValue?g.value=e.displayValue(I):!s.multiple.value&&I&&!Array.isArray(I)&&typeof I!="object"?g.value=I.toString():g.value="",Ae(()=>{g.value=g.value})}return s.onResetSearchTerm(()=>{S()}),he(s.modelValue,async()=>{!s.isUserInputted.value&&s.resetSearchTermOnSelect.value&&S()},{immediate:!0,deep:!0}),he(s.filterState,(I,h)=>{!s.isVirtual.value&&h.count===0&&u.highlightFirstItem()}),(I,h)=>(i(),W(t(ko),{ref_key:"primitiveElement",ref:o,modelValue:t(g),"onUpdate:modelValue":h[0]||(h[0]=C=>ts(g)?g.value=C:null),as:I.as,"as-child":I.asChild,"auto-focus":I.autoFocus,disabled:I.disabled,"aria-expanded":t(s).open.value,"aria-controls":t(s).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:w,onInput:b,onKeydown:Ge(v,["down","up"]),onFocus:k,onBlur:$,onCompositionstart:t(y),onCompositionend:t(_)},{default:B(()=>[ye(I.$slots,"default")]),_:3},8,["modelValue","as","as-child","auto-focus","disabled","aria-expanded","aria-controls","onCompositionstart","onCompositionend"]))}}),vl=hl,yl=de({__name:"ComboboxItem",props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(r,{emit:l}){const e=r,n=l,s=yt(void 0,"reka-combobox-item"),u=at(),o=bs(null),{primitiveElement:d,currentElement:g}=Et();if(e.value==="")throw new Error("A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.");const p=T(()=>{if(u.isVirtual.value||u.ignoreFilter.value||!u.filterSearch.value)return!0;{const y=u.filterState.value.items.get(s);return y===void 0?!0:y>0}});return Be(()=>{u.allItems.value.set(s,e.textValue||g.value.textContent||g.value.innerText);const y=o?.id;y&&(u.allGroups.value.has(y)?u.allGroups.value.get(y)?.add(s):u.allGroups.value.set(y,new Set([s])))}),tt(()=>{u.allItems.value.delete(s)}),(y,_)=>p.value?(i(),W(t(Mo),qe({key:0},e,{id:t(s),ref_key:"primitiveElement",ref:d,disabled:t(u).disabled.value||y.disabled,onSelect:_[0]||(_[0]=v=>{n("select",v),!v.defaultPrevented&&(!t(u).multiple.value&&!y.disabled&&!t(u).disabled.value?(v.preventDefault(),t(u).onOpenChange(!1),t(u).modelValue.value=e.value):t(u).multiple.value&&t(u).inputElement.value?.focus())})}),{default:B(()=>[ye(y.$slots,"default",{},()=>[ie(c(y.value),1)])]),_:3},16,["id","disabled"])):E("v-if",!0)}}),Ya=yl,xl=de({__name:"ComboboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(r){const l=r;return(e,n)=>(i(),W(t(Ao),ft(At(l)),{default:B(()=>[ye(e.$slots,"default")]),_:3},16))}}),bl=xl,kl=de({__name:"ComboboxLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(r){const l=r;Qe();const e=bs({id:"",labelId:""});return e.labelId||=yt(void 0,"reka-combobox-group-label"),(n,s)=>(i(),W(t(He),qe(l,{id:t(e).labelId}),{default:B(()=>[ye(n.$slots,"default")]),_:3},16,["id"]))}}),_l=kl,wl=de({__name:"ComboboxPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(r){const l=r;return(e,n)=>(i(),W(t(fn),ft(At(l)),{default:B(()=>[ye(e.$slots,"default")]),_:3},16))}}),$l=wl,Cl=de({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const l=r;return Qe(),(e,n)=>(i(),W(t(He),qe(l,{"aria-hidden":"true"}),{default:B(()=>[ye(e.$slots,"default")]),_:3},16))}}),Sl=Cl,Il=de({__name:"ComboboxTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const l=r,{forwardRef:e,currentElement:n}=Qe(),s=at(),u=T(()=>l.disabled||s.disabled.value||!1);return Be(()=>{n.value&&s.onTriggerElementChange(n.value)}),(o,d)=>(i(),W(t(He),qe(l,{ref:t(e),type:o.as==="button"?"button":void 0,tabindex:"-1","aria-label":"Show popup","aria-haspopup":"listbox","aria-expanded":t(s).open.value,"aria-controls":t(s).contentId,"data-state":t(s).open.value?"open":"closed",disabled:u.value,"data-disabled":u.value?"":void 0,"aria-disabled":u.value??void 0,onClick:d[0]||(d[0]=g=>t(s).onOpenChange(!t(s).open.value))}),{default:B(()=>[ye(o.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","disabled","data-disabled","aria-disabled"]))}}),Tl=Il,Ml=de({__name:"ComboboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(r){const l=r,e=at();return e.isVirtual.value=!0,(n,s)=>(i(),W(Qo,ft(At(l)),{default:B(u=>[ye(n.$slots,"default",ft(At(u)))]),_:3},16))}}),zl=Ml;const[Da,Al]=ct("TagsInputRoot");var ql=de({__name:"TagsInputRoot",props:{modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1,default:()=>[]},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1,default:","},dir:{type:String,required:!1},max:{type:Number,required:!1,default:0},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1,default:r=>r.toString()},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","invalid","addTag","removeTag"],setup(r,{emit:l}){const e=r,n=l,{addOnPaste:s,disabled:u,delimiter:o,max:d,id:g,dir:p,addOnBlur:y,addOnTab:_}=Dt(e),v=xa(p),x=_t(e,"modelValue",n,{defaultValue:e.defaultValue,passive:!0,deep:!0}),{forwardRef:b,currentElement:k}=Qe(),{focused:$}=hn(k),w=hs(k),{getItems:S,CollectionSlot:I}=Ct({isProvider:!0}),h=z(),C=z(!1),O=T(()=>Array.isArray(x.value)?[...x.value]:[]);function R(L){if(L!==-1){const A=S().filter(M=>M.ref.dataset.disabled!=="");x.value=x.value.filter((M,q)=>q!==L),n("removeTag",A[L].value)}}return Al({modelValue:x,onAddValue:L=>{const A=[...O.value],M=A.length>0&&typeof A[0]=="object",q=A.length>0&&typeof e.defaultValue[0]=="object";if((M||q)&&typeof e.convertValue!="function")throw new Error("You must provide a `convertValue` function when using objects as values.");const Y=e.convertValue?e.convertValue(L):L;if(A.length>=d.value&&d.value)return n("invalid",Y),!1;if(e.duplicate)return x.value=[...A,Y],n("addTag",Y),!0;if(A.includes(Y))C.value=!0;else return x.value=[...A,Y],n("addTag",Y),!0;return n("invalid",Y),!1},onRemoveValue:R,onInputKeydown:L=>{if(L.isComposing)return;const A=L.target,M=S().map(Y=>Y.ref).filter(Y=>Y.dataset.disabled!=="");if(!M.length)return;const q=M.at(-1);switch(L.key){case"Delete":case"Backspace":{if(A.selectionStart!==0||A.selectionEnd!==0)break;if(h.value){const Y=M.findIndex(G=>G===h.value);R(Y),h.value=h.value===q?M.at(Y-1):M.at(Y+1),L.preventDefault()}else L.key==="Backspace"&&(h.value=q,L.preventDefault());break}case"Home":case"End":case"ArrowRight":case"ArrowLeft":{const Y=L.key==="ArrowRight"&&v.value==="ltr"||L.key==="ArrowLeft"&&v.value==="rtl",G=!Y;if(A.selectionStart!==0||A.selectionEnd!==0)break;if(G&&!h.value)h.value=q,L.preventDefault();else if(Y&&q&&h.value===q)h.value=void 0,L.preventDefault();else if(h.value){const ae=vn(L,h.value,void 0,{itemsArray:M,loop:!1,dir:v.value});ae&&(h.value=ae),L.preventDefault()}break}case"ArrowUp":case"ArrowDown":{h.value&&L.preventDefault();break}default:h.value=void 0}},selectedElement:h,isInvalidInput:C,addOnPaste:s,addOnBlur:y,addOnTab:_,dir:v,disabled:u,delimiter:o,max:d,id:g,displayValue:e.displayValue}),(L,A)=>(i(),W(t(I),null,{default:B(()=>[f(t(He),{ref:t(b),dir:t(v),as:L.as,"as-child":L.asChild,"data-invalid":C.value?"":void 0,"data-disabled":t(u)?"":void 0,"data-focused":t($)?"":void 0},{default:B(()=>[ye(L.$slots,"default",{modelValue:t(x)}),t(w)&&L.name?(i(),W(t(vs),{key:0,name:L.name,value:t(x),required:L.required,disabled:t(u)},null,8,["name","value","required","disabled"])):E("v-if",!0)]),_:3},8,["dir","as","as-child","data-invalid","data-disabled","data-focused"])]),_:3}))}}),Ll=ql,Dl=de({__name:"TagsInputInput",props:{placeholder:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},maxLength:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},setup(r){const l=r,e=Da(),{forwardRef:n,currentElement:s}=Qe();function u(b){if(e.selectedElement.value=void 0,!e.addOnBlur.value)return;const k=b.target,$=b.relatedTarget,w=k.getAttribute("aria-controls");if(w&&$?.closest(`#${CSS.escape(w)}`)||!k.value)return;e.onAddValue(k.value)&&(k.value="")}function o(b){e.addOnTab.value&&y(b)}const{isComposing:d,handleCompositionStart:g,handleCompositionEnd:p}=La();async function y(b){if(d.value||(await Ae(),b.defaultPrevented))return;const k=b.target;if(!k.value)return;e.onAddValue(k.value)&&(k.value=""),b.preventDefault()}function _(b){if(d.value||(e.isInvalidInput.value=!1,b.data===null))return;const k=e.delimiter.value;if(k===b.data||k instanceof RegExp&&k.test(b.data)){const w=b.target;if(w.value=w.value.replace(k,""),w.value.trim()===""){w.value="";return}e.onAddValue(w.value)&&(w.value="")}}function v(b){d.value||e.onInputKeydown(b)}function x(b){if(e.addOnPaste.value){b.preventDefault();const k=b.clipboardData;if(!k)return;const $=k.getData("text");e.delimiter.value?$.split(e.delimiter.value).forEach(S=>{e.onAddValue(S)}):e.onAddValue($)}}return Be(()=>{const b=s.value.nodeName==="INPUT"?s.value:s.value.querySelector("input");b&&setTimeout(()=>{l.autoFocus&&b?.focus()},1)}),(b,k)=>(i(),W(t(He),{id:t(e).id?.value,ref:t(n),type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",as:b.as,"as-child":b.asChild,maxlength:b.maxLength,placeholder:b.placeholder,disabled:t(e).disabled.value,"data-invalid":t(e).isInvalidInput.value?"":void 0,onInput:_,onKeydown:[Ge(y,["enter"]),Ge(o,["tab"]),v],onBlur:u,onCompositionstart:t(g),onCompositionend:t(p),onPaste:x},{default:B(()=>[ye(b.$slots,"default")]),_:3},8,["id","as","as-child","maxlength","placeholder","disabled","data-invalid","onCompositionstart","onCompositionend"]))}}),El=Dl;const[ks,Bl]=ct("TagsInputItem");var Fl=de({__name:"TagsInputItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const l=r,{value:e}=Dt(l),n=Da(),{forwardRef:s,currentElement:u}=Qe(),{CollectionItem:o}=Ct(),d=T(()=>n.selectedElement.value===u.value),g=T(()=>l.disabled||n.disabled.value),p=Bl({value:e,isSelected:d,disabled:g,textId:"",displayValue:T(()=>n.displayValue(e.value))});return(y,_)=>(i(),W(t(o),{value:t(e)},{default:B(()=>[f(t(He),{ref:t(s),as:y.as,"as-child":y.asChild,"aria-labelledby":t(p).textId,"aria-current":d.value,"data-disabled":g.value?"":void 0,"data-state":d.value?"active":"inactive"},{default:B(()=>[ye(y.$slots,"default")]),_:3},8,["as","as-child","aria-labelledby","aria-current","data-disabled","data-state"])]),_:3},8,["value"]))}}),Rl=Fl,Vl=de({__name:"TagsInputItemDelete",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const l=r;Qe();const e=Da(),n=ks(),s=T(()=>n.disabled?.value||e.disabled.value);function u(){if(s.value)return;const o=e.modelValue.value.findIndex(d=>Wt(d,n.value.value));e.onRemoveValue(o)}return(o,d)=>(i(),W(t(He),qe({tabindex:"-1"},l,{"aria-labelledby":t(n).textId,"aria-current":t(n).isSelected.value,"data-state":t(n).isSelected.value?"active":"inactive","data-disabled":s.value?"":void 0,type:o.as==="button"?"button":void 0,onClick:u}),{default:B(()=>[ye(o.$slots,"default")]),_:3},16,["aria-labelledby","aria-current","data-state","data-disabled","type"]))}}),Ol=Vl,Pl=de({__name:"TagsInputItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(r){const l=r,e=ks();return Qe(),e.textId||=yt(void 0,"reka-tags-input-item-text"),(n,s)=>(i(),W(t(He),qe(l,{id:t(e).textId}),{default:B(()=>[ye(n.$slots,"default",{},()=>[ie(c(t(e).displayValue.value),1)])]),_:3},16,["id"]))}}),jl=Pl;const Nl={none:[],qwen:["default","off","high"],deepseek_v4:["default","off","high","xhigh"],deepseek_hybrid:["default","off","auto"],o_series:["default","low","medium","high"],gpt5:["default","minimal","low","medium","high"],gpt5_1:["default","off","low","medium","high"],gpt5_2plus:["default","off","minimal","low","medium","high","xhigh"],grok:["default","low","high"],kimi:["default","off","auto","low","medium","high"],doubao:["default","off","auto","high"],hunyuan:["default","off","high"],gemini:["default","off","low","medium","high"],default:["default","off","low","medium","high"]},Ga=/^(?!.*-non-reasoning\b)(o\d+(?:-[\w-]+)?|.*\b(?:reasoning|reasoner|thinking|think)\b.*|.*-[rR]\d+.*|.*\bqwq(?:-[\w-]+)?\b.*|.*\bhunyuan-t1(?:-[\w-]+)?\b.*|.*\bgrok-(?:3-mini|4|4-fast|build)(?:-[\w-]+)?\b.*)$/i;function Ul(r,l){const e=l.toLowerCase(),n=r.toLowerCase();if(e.includes("-non-reasoning")||n==="anthropic")return"none";if(n==="gemini")return/gemini-(?:2\.5|3(?:\.\d+)?-(?:flash|pro)|flash-latest|pro-latest)/i.test(e)?"gemini":"none";if(n==="qwen"||/\bqwen|qwq/i.test(e))return"qwen";if(/deepseek[_-]v([4-9]|\d{2,})/i.test(e)||/deepseek-ai\/deepseek-r1/i.test(e))return"deepseek_v4";if(/deepseek[_-]chat|deepseek[_-]v3/i.test(e))return"deepseek_hybrid";if(n==="openai"||n==="openai-compatible"){if(/gpt-5\.[2-9]|gpt-5\.[1-9]\d/.test(e))return"gpt5_2plus";if(/gpt-5\.1/.test(e))return"gpt5_1";if(/gpt-5/.test(e))return"gpt5";if(/^o\d/.test(e))return"o_series"}return/^o\d/.test(e)?"o_series":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(e)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(e)||n==="kimi"&&/thinking/i.test(e)?"kimi":/\bdoubao-.*seed/i.test(e)||n==="doubao"&&/seed/i.test(e)?"doubao":/\bhunyuan-(?:t1|a13b)/i.test(e)?"hunyuan":n==="glm"||/\bglm-?(?:5|4\.[5-7]|z1|zero)/i.test(e)?"qwen":n==="siliconflow"&&/r[1-9]/i.test(e)?"deepseek_v4":n==="openrouter"?/deepseek.*(v[4-9]|r\d)/i.test(e)?"deepseek_v4":/deepseek[_-]?(chat|v3)/i.test(e)?"deepseek_hybrid":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(e)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(e)?"kimi":Ga.test(e)?"default":"none":/\bmimo-v2/i.test(e)||/\bminimax-m[123]/i.test(e)||/\bseed-oss/i.test(e)?"deepseek_hybrid":/\bbaichuan-m[23]/i.test(e)||/\bmagistral/i.test(e)||/\bmistral-small-2603/i.test(e)||/\bstep-(?:3|r1-v-mini)/i.test(e)||/\bgemma-?4/i.test(e)||/\bpangu-pro-moe/i.test(e)||/\bsonar-deep-research/i.test(e)||/\bring-(?:1t|mini|flash)/i.test(e)?"default":/\bqwen|qwq/i.test(e)?"qwen":/deepseek[_-]?r\d|deepseek[_-]?v[4-9]/i.test(e)?"deepseek_v4":/^o\d/i.test(e)?"o_series":Ga.test(e)?"default":"none"}function Wl(r,l){const e=Ul(r,l);return Nl[e]}function Hl(r,l,e,n="group",s="zh-CN"){const u=Kn(),{chatKey:o,state:d}=u.ensureSessionState({sessionId:r,sessionName:l,timeFilter:e,chatType:n,locale:s});return u.resetToSelectorOnEnter(o),u.applySessionAssistantSelection(o),{messages:We(d,"messages"),sourceMessages:We(d,"sourceMessages"),currentKeywords:We(d,"currentKeywords"),isLoadingSource:We(d,"isLoadingSource"),isAIThinking:We(d,"isAIThinking"),currentAIChatId:We(d,"currentAIChatId"),currentToolStatus:We(d,"currentToolStatus"),toolsUsedInCurrentRound:We(d,"toolsUsedInCurrentRound"),sessionTokenUsage:We(d,"sessionTokenUsage"),agentStatus:We(d,"agentStatus"),selectedAssistantId:We(d,"selectedAssistantId"),sendMessage:(g,p)=>u.sendMessage(o,g,p),editMessageAndRegenerate:(g,p,y)=>u.editMessageAndRegenerate(o,g,p,y),loadAIChat:g=>u.loadAIChat(o,g),startNewAIChat:g=>u.startNewAIChat(o,g),loadMoreSourceMessages:()=>u.loadMoreSourceMessages(),updateMaxMessages:()=>u.updateMaxMessages(),stopGeneration:()=>u.stopGeneration(o),selectAssistantForSession:g=>u.selectAssistantForSession(o,g)}}function Kl(){const{contains:r,startsWith:l}=ys({sensitivity:"base"});function e(o,d){return r(o,d)?r(d,o)?0:l(o,d)?1:2:null}function n(o,d,g){if(typeof o!="object"||o===null)return e(String(o),d);let p=null;for(const y of g){const _=it(o,y);if(_==null)continue;const v=Array.isArray(_)?_.map(String):[String(_)];for(const x of v){const b=e(x,d);if(b!==null&&(p===null||b<p)&&(p=b),p===0)return 0}}return p}function s(o,d,g){if(!d)return o;const p=[];for(const y of o){const _=n(y,d,g);_!==null&&p.push({item:y,score:_})}return p.sort((y,_)=>y.score-_.score),p.map(({item:y})=>y)}function u(o,d,g){return d?o.map(p=>{const y=[];for(const _ of p){if(_==null)continue;if(g.isStructural?.(_)){y.push({item:_,score:-1});continue}const v=n(_,d,g.fields);v!==null&&y.push({item:_,score:v})}return y.sort((_,v)=>_.score-v.score),y.map(({item:_})=>_)}).filter(p=>p.some(y=>!g.isStructural?.(y))):o}return{score:e,scoreItem:n,filter:s,filterGroups:u}}const ia=new Map;function Yl(r,l,e){const{activeTab:n,isInitialLoad:s,currentSessionId:u,onTimeRangeChange:o}=e,d=z(null),g=z(null),p=z([]),y=T(()=>{const b=d.value;if(b)return{startTs:b.startTs,endTs:b.endTs}}),_=T(()=>{const b=d.value;return b?`${b.startTs}-${b.endTs}`:"init"}),v=T(()=>{const b=r.query,k=b.timeMode;return k?{mode:k,recentDays:b.timeDays?Number(b.timeDays):void 0,year:b.timeYear?Number(b.timeYear):void 0,quarterYear:b.timeYear?Number(b.timeYear):void 0,quarter:b.timeQuarter?Number(b.timeQuarter):void 0,customStart:b.timeStart||void 0,customEnd:b.timeEnd||void 0}:u.value&&ia.has(u.value)?ia.get(u.value):{mode:"recent",recentDays:365}});he([n,d],([b,k])=>{if(s.value||!k)return;const $=k.state,w={tab:b,timeMode:$.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};$.mode==="recent"&&(w.timeDays=$.recentDays),$.mode==="year"&&(w.timeYear=$.year),$.mode==="quarter"&&(w.timeYear=$.quarterYear,w.timeQuarter=$.quarter),$.mode==="custom"&&(w.timeStart=$.customStart,w.timeEnd=$.customEnd),l.replace({query:{...r.query,...w}})}),he(d,b=>{!b||!u.value||(ca(),ia.set(u.value,b.state),o?.())},{immediate:!0});function x(){d.value=null,g.value=null,p.value=[]}return{timeRangeValue:d,fullTimeRange:g,availableYears:p,timeFilter:y,timeFilterKey:_,initialTimeState:v,resetTimeRange:x}}function Gl(r){return r.content.trim()?r.content:r.contentBlocks?.filter(e=>e.type==="text"&&!!e.text).map(e=>e.text).join("")??""}function pa(r){return r.flatMap(l=>{if(l.role!=="user"&&l.role!=="assistant")return[];const e=Gl(l);return e.trim()?[{role:l.role,content:e,timestamp:l.timestamp}]:[]})}function Ql(r){return pa(r).length>0}function Jl(r,l,e,n){const s=[];s.push(`# ${r}`),s.push(""),s.push(`> ${n.createdAt}: ${Ee(e).format("YYYY-MM-DD HH:mm:ss")}`),s.push(""),s.push("---"),s.push("");for(const u of l){const o=Ee(u.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=u.role==="user"?n.user:n.assistant;s.push(`### ${d}`),s.push(`*${o}*`),s.push(""),s.push(u.content),s.push(""),s.push("---"),s.push("")}return s.join(`
3
- `)}function Xl(r,l,e,n){const s=[];s.push(`${r}`),s.push(`${n.createdAt}: ${Ee(e).format("YYYY-MM-DD HH:mm:ss")}`),s.push(""),s.push("=".repeat(50)),s.push("");for(const u of l){const o=Ee(u.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=u.role==="user"?n.user:n.assistant;s.push(`[${d}] ${o}`),s.push(""),s.push(u.content),s.push(""),s.push("-".repeat(50)),s.push("")}return s.join(`
4
- `)}function Zl(r){return r.replace(/[/\\?%*:|"<>]/g,"_")}async function ei(r,l,e,n,s){if(l.length===0)return{success:!1,error:"No messages to export"};let u,o;const d=Ee(e).format("YYYYMMDD_HHmmss"),g=Zl(r);n==="markdown"?(u=Jl(r,l,e,s),o=`${g}_${d}.md`):(u=Xl(r,l,e,s),o=`${g}_${d}.txt`);const p=`data:text/plain;charset=utf-8,${encodeURIComponent(u)}`,{useCacheService:y}=await Xt(async()=>{const{useCacheService:v}=await import("./service-DpU9fa-l.js");return{useCacheService:v}},__vite__mapDeps([0,1,2,3]));return await y().saveToDownloads(o,p)}function ti(r){const l=r.columns.join(","),e=r.rows.map(n=>n.map(s=>s===null?"":`"${String(s).replace(/"/g,'""')}"`).join(","));return[l,...e].join(`
5
- `)}function ai(r){const l=r.rows.map(e=>{const n={};return r.columns.forEach((s,u)=>{n[s]=e[u]}),n});return JSON.stringify(l,null,2)}async function si(r,l){if(r.rows.length===0)return{success:!1,error:"No data to export"};const n=`sql_result_${Ee().format("YYYYMMDD_HHmmss")}.${l}`;let s,u;l==="json"?(s=ai(r),u="application/json"):(s=ti(r),u="text/csv");const o=`data:${u};charset=utf-8,${encodeURIComponent(s)}`,{useCacheService:d}=await Xt(async()=>{const{useCacheService:p}=await import("./service-DpU9fa-l.js");return{useCacheService:p}},__vite__mapDeps([0,1,2,3]));return await d().saveToDownloads(n,o)}function x2(r){const{route:l,router:e,currentSessionId:n,selectSession:s,defaultTab:u,validTabIds:o}=r,d=z(!0),g=z(!0),p=z(!0),y=z(null),_=z([]),v=z([]),x=z([]),b=z([]);let k=0,$=0,w=!1,S=!1;function I(){!p.value||!w||(!y.value||S)&&(p.value=!1)}function h(){const V=l.query.tab;return V&&o.includes(V)?V:u}const C=z(h()),O=T(()=>C.value==="insights"),R=T(()=>["insights","ranking"].includes(C.value));he(C,V=>{const X={insights:"insights",ranking:"ranking","ai-chat":"ai_chat",lab:"sql_lab"}[V];X&&yn("feature_used",{feature_id:X})},{immediate:!0});const{timeRangeValue:L,fullTimeRange:A,availableYears:M,timeFilter:q,initialTimeState:Y,resetTimeRange:G}=Yl(l,e,{activeTab:C,isInitialLoad:g,currentSessionId:n,onTimeRangeChange:()=>re()});function ae(){const V=l.params.id;V&&(s(V),n.value!==V&&e.replace("/"))}async function re(){const V=n.value;if(!V)return;const X=++$;if(!O.value){d.value=!1,S=!0,I();return}p.value&&(S=!1),d.value=!0;try{const ce=q.value,fe=Ke(),[te,se,N,me]=await Promise.all([fe.getMemberActivity(V,ce),fe.getHourlyActivity(V,ce),fe.getDailyActivity(V,ce),fe.getMessageTypeDistribution(V,ce)]);if(X!==$)return;_.value=te,v.value=se,x.value=N,b.value=me}catch(ce){X===$&&console.error("加载分析数据失败:",ce)}finally{X===$&&(d.value=!1,S=!0,I())}}function Q(V){V||(L.value=null,re())}async function H(){const V=n.value;if(!V)return;const X=++k;g.value=!0;try{const ce=await Ke().getSession(V);if(X!==k||n.value!==V)return;y.value=ce}catch(ce){X===k&&n.value===V&&(y.value=null,console.error("加载基础数据失败:",ce))}finally{X===k&&n.value===V&&(g.value=!1,w=!0,I())}}return he(C,()=>{if(!O.value){$++,ca(),d.value=!1,R.value||(S=!0,I());return}d.value=!0,n.value&&L.value&&re()}),he(()=>l.params.id,()=>{C.value=h(),ae()}),he(()=>l.query.tab,()=>{C.value=h()}),he(n,()=>{$++,G(),w=!1,S=!R.value,d.value=O.value,p.value=!0,ca(),H()},{immediate:!0}),Be(()=>{ae()}),{activeTab:C,isLoading:d,isInitialLoad:g,isSessionSwitching:p,session:y,memberActivity:_,hourlyActivity:v,dailyActivity:x,messageTypes:b,timeRangeValue:L,fullTimeRange:A,availableYears:M,timeFilter:q,initialTimeState:Y,syncSession:ae,loadData:H,loadAnalysisData:re,handleTimeRangeInitialized:Q}}const ni={class:"pointer-events-none absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},oi=de({__name:"CardCaptureOverlay",setup(r){return(l,e)=>(i(),m("div",ni,[f(Lt,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),sa=de({__name:"ReportCard",props:{capturable:{type:Boolean,default:!0}},setup(r){return(l,e)=>(i(),W(mt,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:B(()=>[f(Xn),r.capturable?(i(),W(oi,{key:0})):E("",!0),ye(l.$slots,"default")]),_:3}))}}),li={class:"flex items-center justify-between"},ii={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},ri={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},ui={class:"flex items-center gap-2"},di={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Ze=de({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(r){const l=r,e=T(()=>{if(l.scrollable)return{maxHeight:`${l.maxHeightVh}vh`,overflowY:"auto"}});return(n,s)=>(i(),W(mt,{class:"group/card","data-section-card":""},{default:B(()=>[a("div",{class:Z(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":r.showDivider&&n.$slots.default}])},[a("div",li,[a("div",null,[a("p",ii,c(r.title),1),r.description?(i(),m("p",ri,c(r.description),1)):E("",!0)]),a("div",ui,[ye(n.$slots,"headerRight"),r.capturable?(i(),m("div",di,[f(Lt,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):E("",!0)])])],2),r.scrollable?(i(),m("div",{key:0,style:et(e.value)},[ye(n.$slots,"default")],4)):ye(n.$slots,"default",{key:1}),ye(n.$slots,"footer")]),_:3}))}}),ci={class:"flex items-start justify-between"},mi={class:"min-w-0 flex-1"},gi={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},pi={key:1,class:"text-xl"},fi={key:0,class:"mt-4 flex items-center text-sm"},hi={class:"text-gray-500 dark:text-gray-400"},lt=de({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(r){const l={pink:"text-pink-600 dark:text-pink-400",amber:"text-amber-600 dark:text-amber-400",blue:"text-blue-600 dark:text-blue-400",green:"text-green-600 dark:text-green-400",red:"text-red-600 dark:text-red-400",gray:"text-gray-900 dark:text-white"},e={pink:"bg-pink-100 dark:bg-pink-500/10",amber:"bg-amber-100 dark:bg-amber-500/10",blue:"bg-blue-100 dark:bg-blue-500/10",green:"bg-green-100 dark:bg-green-500/10",red:"bg-red-100 dark:bg-red-500/10",gray:"bg-gray-100 dark:bg-white/5"};return(n,s)=>(i(),W(mt,{class:"p-5"},{default:B(()=>[a("div",ci,[a("div",mi,[a("p",gi,c(r.label),1),a("p",{class:Z(["mt-2 truncate text-2xl font-bold tracking-tight",r.valueColor?l[r.valueColor]:"text-gray-900 dark:text-white"])},c(r.value),3)]),r.icon?(i(),m("div",{key:0,class:Z(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",e[r.iconBg||"gray"]])},[r.icon.startsWith("i-")?(i(),W(xn,{key:0,name:r.icon,size:"lg"},null,8,["name"])):(i(),m("span",pi,c(r.icon),1))],2)):E("",!0)]),r.subtext||n.$slots.subtext?(i(),m("div",fi,[ye(n.$slots,"subtext",{},()=>[a("span",hi,c(r.subtext),1)])])):E("",!0)]),_:3}))}}),vi={key:0,class:"mb-2 block text-2xl"},b2=de({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(r){const l={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(e,n)=>(i(),m("div",{class:Z(["text-center text-sm text-gray-400",l[r.padding||"md"]])},[r.icon?(i(),m("span",vi,c(r.icon),1)):E("",!0),ie(" "+c(r.text||"暂无数据"),1)],2))}}),yi=["aria-busy"],xi={key:0,class:"insight-view-transition__indicator","aria-hidden":"true"},bi=["inert","aria-hidden"],ki=["inert","aria-hidden"],_i=de({__name:"InsightViewTransition",props:{activeKey:{}},setup(r){const l=r,e=z(l.activeKey),n=z(null),s=z("primary"),u=z("idle"),o=z(0),d=bn("session-switch-loading",null),g=T(()=>s.value==="primary"?e.value:n.value),p=T(()=>s.value==="primary"?"secondary":"primary"),y=T(()=>u.value!=="idle"),_=T(()=>u.value==="waiting"&&!d?.value);kn(Un,{register:k,suppress:y});let v=0,x=null;function b(){x&&clearTimeout(x),x=null}function k(){const h=v;let C=!0;return o.value++,()=>{C&&(C=!1,h===v&&(o.value=Math.max(0,o.value-1)))}}function $(h,C){h==="primary"?e.value=C:n.value=C}function w(h){const C=h===s.value;return{"insight-view-transition__pane--active":C&&u.value==="idle","insight-view-transition__pane--waiting":C&&u.value==="waiting","insight-view-transition__pane--outgoing":C&&u.value==="revealing","insight-view-transition__pane--pending":!C&&u.value==="waiting","insight-view-transition__pane--incoming":!C&&u.value==="revealing"}}async function S(h){await Ae(),await Ae(),!(h!==v||u.value!=="waiting"||o.value>0)&&(u.value="revealing",x=setTimeout(()=>{if(h!==v)return;const C=s.value;s.value=p.value,$(C,null),u.value="idle",x=null},180))}function I(h){const C=++v;if(b(),o.value=0,h===g.value){$(p.value,null),u.value="idle";return}$(p.value,h),u.value="waiting",S(C)}return he(()=>l.activeKey,h=>I(h)),he(o,h=>{h===0&&u.value==="waiting"&&S(v)}),Bt(()=>{v++,b()}),(h,C)=>(i(),m("div",{class:"insight-view-transition","aria-busy":y.value},[_.value?(i(),m("div",xi,[f(Nn)])):E("",!0),e.value?(i(),m("div",{key:1,class:Z(["insight-view-transition__pane",w("primary")]),inert:s.value!=="primary"||y.value,"aria-hidden":s.value!=="primary"},[ye(h.$slots,"default",{viewKey:e.value},void 0,!0)],10,bi)):E("",!0),n.value?(i(),m("div",{key:2,class:Z(["insight-view-transition__pane",w("secondary")]),inert:s.value!=="secondary"||y.value,"aria-hidden":s.value!=="secondary"},[ye(h.$slots,"default",{viewKey:n.value},void 0,!0)],10,ki)):E("",!0)],8,yi))}}),k2=nt(_i,[["__scopeId","data-v-be8a2c26"]]),wi={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},fa={"zh-CN":{message:{id:"消息ID",sender_id:"发送者ID",sender_account_name:"发送时账号名",sender_group_nickname:"发送时群昵称",ts:"时间戳(秒)",type:"消息类型",content:"消息内容"},member:{id:"成员ID",platform_id:"平台ID",account_name:"账号名称",group_nickname:"群昵称",aliases:"自定义别名"},meta:{name:"群名称",platform:"平台",type:"聊天类型",imported_at:"导入时间"},member_name_history:{id:"记录ID",member_id:"成员ID",name_type:"名称类型",name:"昵称值",start_ts:"开始时间",end_ts:"结束时间"}},"en-US":{message:{id:"Message ID",sender_id:"Sender ID",sender_account_name:"Sender Account",sender_group_nickname:"Sender Nickname",ts:"Timestamp (sec)",type:"Message Type",content:"Content"},member:{id:"Member ID",platform_id:"Platform ID",account_name:"Account Name",group_nickname:"Group Nickname",aliases:"Custom Aliases"},meta:{name:"Chat Name",platform:"Platform",type:"Chat Type",imported_at:"Imported At"},member_name_history:{id:"Record ID",member_id:"Member ID",name_type:"Name Type",name:"Nickname",start_ts:"Start Time",end_ts:"End Time"}}};function ha(r,l="zh-CN"){return wi[_s(l)]?.[r]||r}function Ea(r,l,e="zh-CN"){return fa[_s(e)]?.[r]?.[l]||l}function _s(r){return r.startsWith("zh")?"zh-CN":"en-US"}const $i={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Ci={key:0,class:"flex-1 overflow-y-auto p-2"},Si=["onClick"],Ii={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Ti={class:"flex-1 truncate text-right text-xs text-gray-400"},Mi={key:0,class:"ml-4 mt-1 space-y-0.5"},zi=["title","onDblclick"],Ai={class:"font-mono text-gray-700 dark:text-gray-300"},qi={class:"flex-1 truncate text-right text-[10px] text-gray-400"},Li={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Di=["title","onClick"],Ei=de({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(r,{expose:l,emit:e}){const{t:n,locale:s}=_e(),u=r,o=e,d=z(!1),g=z([]),p=z(new Set);async function y(){try{g.value=await Ke().getSchema(u.sessionId),g.value.forEach(b=>p.value.add(b.name))}catch(b){console.error("加载 Schema 失败:",b)}}function _(b){p.value.has(b)?p.value.delete(b):p.value.add(b)}function v(b){d.value=!1,p.value.add(b)}function x(b,k){o("insertColumn",b,k)}return l({loadSchema:y,schema:g}),Be(()=>{y()}),(b,k)=>{const $=we,w=Ue;return i(),m("div",{class:Z(["m-3 flex h-[calc(100%-1.5rem)] shrink-0 flex-col overflow-hidden rounded-lg bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",d.value?"w-14":"w-56"])},[a("div",{class:Z(["flex items-center",d.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[d.value?E("",!0):(i(),m("span",$i,c(t(n)("ai.sqlLab.schema.tables")),1)),d.value?(i(),m("button",{key:2,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:k[1]||(k[1]=S=>d.value=!d.value)},[f($,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(i(),W(w,{key:1,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:k[0]||(k[0]=S=>d.value=!d.value)},{default:B(()=>[f($,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),f($,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1}))],2),d.value?(i(),m("div",Li,[(i(!0),m(ue,null,ve(g.value,S=>(i(),m("button",{key:S.name,class:"flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",title:`${t(ha)(S.name,t(s))} (${S.name})`,onClick:I=>v(S.name)},[f($,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,Di))),128))])):(i(),m("div",Ci,[(i(!0),m(ue,null,ve(g.value,S=>(i(),m("div",{key:S.name,class:"mb-2"},[a("button",{class:"flex w-full items-center gap-1 rounded px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",onClick:I=>_(S.name)},[f($,{name:p.value.has(S.name)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 text-gray-400"},null,8,["name"]),f($,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),a("span",Ii,c(S.name),1),a("span",Ti,c(t(ha)(S.name,t(s))),1)],8,Si),p.value.has(S.name)?(i(),m("div",Mi,[(i(!0),m(ue,null,ve(S.columns,I=>(i(),m("button",{key:I.name,class:"flex w-full items-center gap-2 rounded px-2 py-1 text-left text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",title:t(n)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:h=>x(S.name,I.name)},[I.pk?(i(),W($,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:t(n)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):E("",!0),a("span",Ai,c(I.name),1),a("span",qi,c(t(Ea)(S.name,I.name,t(s))),1)],40,zi))),128))])):E("",!0)]))),128))]))],2)}}}),Bi={class:"max-h-[70vh] overflow-hidden p-6"},Fi={class:"mb-4 flex items-center gap-2"},Ri={class:"text-lg font-semibold text-gray-900 dark:text-white"},Vi={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},Oi={class:"mb-2 flex items-start justify-between gap-2"},Pi={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},ji={class:"shrink-0 text-xs text-gray-400"},Ni={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},Ui={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},Wi={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},Hi={class:"flex justify-end gap-2"},Ki={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},Yi={class:"text-sm"},Gi={class:"mt-4 flex justify-end"},Qi=de({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(r,{emit:l}){const{t:e}=_e(),n=l;function s(u){const o=new Date(u),d=new Date,g=d.getTime()-u;return g<6e4?e("ai.sqlLab.history.justNow"):g<36e5?e("ai.sqlLab.history.minutesAgo",{count:Math.floor(g/6e4)}):g<864e5?e("ai.sqlLab.history.hoursAgo",{count:Math.floor(g/36e5)}):o.toDateString()===d.toDateString()?e("ai.sqlLab.history.today"):`${o.getMonth()+1}/${o.getDate()}`}return(u,o)=>{const d=we,g=Ue,p=Xe;return i(),W(p,{open:r.open,ui:{content:"max-w-5xl"},"onUpdate:open":o[1]||(o[1]=y=>n("update:open",y))},{content:B(()=>[a("div",Bi,[a("div",Fi,[f(d,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),a("h3",Ri,c(t(e)("ai.sqlLab.history.title")),1)]),r.history.length>0?(i(),m("div",Vi,[(i(!0),m(ue,null,ve(r.history,y=>(i(),m("div",{key:y.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[a("div",Oi,[a("p",Pi,c(y.prompt),1),a("span",ji,c(s(y.timestamp)),1)]),a("div",Ni,[a("pre",Ui,c(y.sql),1)]),y.explanation?(i(),m("p",Wi,c(y.explanation),1)):E("",!0),a("div",Hi,[f(g,{variant:"ghost",size:"xs",color:"error",onClick:_=>n("delete",y.id)},{default:B(()=>[f(d,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),f(g,{size:"xs",onClick:_=>n("execute",y)},{default:B(()=>[f(d,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),ie(" "+c(t(e)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(i(),m("div",Ki,[f(d,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),a("p",Yi,c(t(e)("ai.sqlLab.history.empty")),1)])),a("div",Gi,[f(g,{variant:"ghost",onClick:o[0]||(o[0]=y=>n("update:open",!1))},{default:B(()=>[ie(c(t(e)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),Ji={class:"flex flex-1 flex-col overflow-hidden"},Xi={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},Zi={class:"flex items-start gap-2"},er={class:"min-w-0 flex-1"},tr={class:"text-sm font-medium text-red-800 dark:text-red-200"},ar={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},sr={key:1,class:"flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},nr={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},or={class:"flex cursor-pointer items-center gap-1.5"},lr={class:"text-xs"},ir={class:"flex items-center gap-2"},rr={key:2,class:"flex-1 overflow-auto"},ur={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},dr={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},cr=["onClick"],mr={class:"flex items-center gap-1"},gr={class:"flex flex-col"},pr={class:"text-gray-700 dark:text-gray-300"},fr={key:0,class:"font-mono text-[10px] text-gray-400"},hr={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},vr={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},yr=["title"],xr={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},br={key:3,class:"flex shrink-0 items-center gap-4 border-t border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},kr={class:"flex items-center gap-1"},_r={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},wr={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},$r={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Cr={class:"text-center"},Sr={class:"mt-2 text-sm"},Ir={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Tr={class:"text-center"},Mr={class:"mt-2 text-sm"},zr={class:"mt-1 text-xs text-gray-400"},Ar={class:"max-h-[70vh] overflow-hidden p-6"},qr={class:"mb-4 flex items-center gap-2"},Lr={class:"text-lg font-semibold text-gray-900 dark:text-white"},Dr={key:0,class:"flex items-center justify-center py-8"},Er={class:"ml-2 text-sm text-gray-500"},Br={key:1,class:"max-h-[50vh] overflow-y-auto"},Fr=["innerHTML"],Rr={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},Vr={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},Or={class:"text-sm text-red-600 dark:text-red-400"},Pr={class:"mt-4 flex justify-end gap-2"},jr=de({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(r,{expose:l}){const{t:e,locale:n}=_e(),s=ot(),u=za(),o=xt(),{aiGlobalSettings:d}=dt(u),g=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function p(J){return g.some(ee=>ee.test(J))}function y(J){if(typeof J!="number"||!Number.isFinite(J))return!1;const ee=946684800,pe=4102444800,ke=ee*1e3,$e=pe*1e3;return J>=ee&&J<=pe||J>=ke&&J<=$e}function _(J){const pe=J>1e10?J:J*1e3;return Ee(pe).format("YYYY-MM-DD HH:mm:ss")}const v=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function x(J){return J.findIndex(ee=>v.some(pe=>pe.test(ee)))}function b(J){o.openChatRecordDrawer({scrollToMessageId:J})}const k=new Ma({html:!1,breaks:!0,linkify:!0,typographer:!0}),$=r,w=z(null),S=z("asc"),I=z(1),h=z(100),C=[50,100,200,500],O=z(localStorage.getItem("sql-lab-readable-time")!=="false");function R(){O.value=!O.value,localStorage.setItem("sql-lab-readable-time",String(O.value))}const L=z(!1),A=z(!1),M=z(""),q=z(null),Y=z(""),G=z(!1);function ae(J){const ee=J.split("."),pe=ee.length>1?ee[ee.length-1]:J,ke=fa[n.value]||fa["zh-CN"];for(const $e of Object.values(ke))if($e[pe])return $e[pe];return null}const re=T(()=>{if(!$.result||!w.value)return $.result?.rows||[];const J=$.result.columns.indexOf(w.value);return J===-1?$.result.rows:[...$.result.rows].sort((ee,pe)=>{const ke=ee[J],$e=pe[J];if(ke===null)return 1;if($e===null)return-1;if(typeof ke=="number"&&typeof $e=="number")return S.value==="asc"?ke-$e:$e-ke;const De=String(ke).localeCompare(String($e));return S.value==="asc"?De:-De})}),Q=T(()=>$.result?Math.ceil(re.value.length/h.value):0),H=T(()=>{const J=(I.value-1)*h.value,ee=J+h.value;return re.value.slice(J,ee)}),V=T(()=>$.result?x($.result.columns):-1),X=T(()=>V.value!==-1);function ce(J){w.value===J?S.value=S.value==="asc"?"desc":"asc":(w.value=J,S.value="asc"),I.value=1}function fe(J){h.value=J,I.value=1}function te(J,ee){return J===null?"NULL":typeof J=="object"?JSON.stringify(J):O.value&&ee&&p(ee)&&y(J)?_(J):String(J)}async function se(){if(!(!$.result||G.value)){G.value=!0;try{const J=d.value.sqlExportFormat??"csv",ee=await si({columns:$.result.columns,rows:$.result.rows},J);if(ee.success&&ee.filePath){const pe=ee.filePath.split("/").pop()||ee.filePath;s.add({title:e("common.exportSuccess"),description:pe,color:"primary",actions:[{label:e("common.openFolder"),onClick:()=>{ds().showInFolder(ee.filePath)}}]})}else s.fail(e("common.exportFailed"),{description:ee.error})}catch(J){console.error("导出失败:",J),s.fail(e("common.exportFailed"),{description:String(J)})}finally{G.value=!1}}}function N(){w.value=null,S.value="asc",I.value=1}function me(){if(!$.result)return"";const J=50,ee=$.result.rows.slice(0,J),pe=$.result.columns.join(" | "),ke=$.result.columns.map(()=>"---").join(" | "),$e=ee.map(Fe=>Fe.map(Te=>Te===null?"NULL":String(Te).slice(0,50)).join(" | "));let De=`| ${pe} |
6
- | ${ke} |
7
- `;return De+=$e.map(Fe=>`| ${Fe} |`).join(`
8
- `),$.result.rows.length>J&&(De+=`
9
-
10
- (仅展示前 ${J} 行,共 ${$.result.rowCount} 行)`),De}async function be(){L.value=!0,M.value="",q.value=null,Y.value="",await xe()}async function xe(){if(!await ba().hasConfig()){q.value=e("common.errorNoAIConfig");return}A.value=!0,q.value=null,Y.value="";try{const ee=me();let pe="";$.prompt&&(pe=`用户的查询意图:${$.prompt}
11
-
12
- `),$.sql&&(pe+=`执行的 SQL 语句:
13
- \`\`\`sql
14
- ${$.sql}
15
- \`\`\`
16
-
17
- `);const ke=`请分析以下 SQL 查询结果,用简洁的中文总结关键发现和洞察。
18
-
19
- ${pe}查询结果(共 ${$.result?.rowCount||0} 行):
20
-
21
- ${ee}
22
-
23
- 请提供:
24
- 1. 结果概述(一句话总结)
25
- 2. 关键发现(2-4 个要点)
26
- 3. 如有明显的趋势或异常,请指出`,$e=await cs().chatStream([{role:"system",content:"你是一个数据分析专家,擅长从查询结果中提取关键信息和洞察。请用简洁清晰的中文回答。"},{role:"user",content:ke}],{temperature:.3,maxTokens:1e3},De=>{De.content&&(Y.value+=De.content)});$e.success?M.value=Y.value:q.value=$e.error||e("ai.sqlLab.result.errorSummary")}catch(ee){q.value=ee.message||String(ee)}finally{A.value=!1}}function le(){L.value=!1,M.value="",q.value=null,Y.value=""}return l({resetSort:N}),(J,ee)=>{const pe=we,ke=Ta,$e=Ue,De=Ia,Fe=Xe;return i(),m("div",Ji,[r.error?(i(),m("div",Xi,[a("div",Zi,[f(pe,{name:"i-heroicons-exclamation-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-red-500"}),a("div",er,[a("p",tr,c(t(e)("ai.sqlLab.result.queryError")),1),a("p",ar,c(r.error),1)])])])):E("",!0),r.result?(i(),m("div",sr,[a("div",nr,[a("label",or,[f(ke,{"model-value":O.value,size:"xs","onUpdate:modelValue":R},null,8,["model-value"]),a("span",lr,c(t(e)("ai.sqlLab.result.readableTime")),1)]),ee[5]||(ee[5]=a("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),a("span",null,[f(pe,{name:"i-heroicons-table-cells",class:"mr-1 inline h-4 w-4"}),ie(" "+c(t(e)("ai.sqlLab.result.rows",{count:r.result.rowCount})),1)]),a("span",null,[f(pe,{name:"i-heroicons-clock",class:"mr-1 inline h-4 w-4"}),ie(" "+c(r.result.duration)+" ms ",1)])]),a("div",ir,[f($e,{variant:"ghost",size:"xs",onClick:be},{default:B(()=>[f(pe,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ie(" "+c(t(e)("ai.sqlLab.result.summarize")),1)]),_:1}),f($e,{variant:"ghost",size:"xs",loading:G.value,onClick:se},{default:B(()=>[f(pe,{name:"i-heroicons-arrow-down-tray",class:"mr-1 h-4 w-4"}),ie(" "+c(t(e)("common.export")),1)]),_:1},8,["loading"])])])):E("",!0),r.result&&r.result.rows.length>0?(i(),m("div",rr,[a("table",ur,[a("thead",dr,[a("tr",null,[(i(!0),m(ue,null,ve(r.result.columns,(Te,Pe)=>(i(),m("th",{key:Pe,class:"cursor-pointer whitespace-nowrap px-4 py-2 text-left text-xs font-medium transition-colors hover:bg-gray-200 dark:hover:bg-gray-700",onClick:je=>ce(Te)},[a("div",mr,[a("div",gr,[a("span",pr,c(ae(Te)||Te),1),ae(Te)?(i(),m("span",fr,c(Te),1)):E("",!0)]),w.value===Te?(i(),W(pe,{key:0,name:S.value==="asc"?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3 w-3 text-gray-500"},null,8,["name"])):E("",!0)])],8,cr))),128)),X.value?(i(),m("th",hr)):E("",!0)])]),a("tbody",vr,[(i(!0),m(ue,null,ve(H.value,(Te,Pe)=>(i(),m("tr",{key:Pe,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[(i(!0),m(ue,null,ve(Te,(je,Se)=>(i(),m("td",{key:Se,class:Z(["max-w-xs truncate whitespace-nowrap px-4 py-2 font-mono text-sm text-gray-700 dark:text-gray-300",{"text-gray-400 italic":je===null}]),title:te(je,r.result.columns[Se])},c(te(je,r.result.columns[Se])),11,yr))),128)),X.value?(i(),m("td",xr,[f($e,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:t(e)("ai.sqlLab.result.viewChat"),onClick:je=>b(Te[V.value])},null,8,["title","onClick"])])):E("",!0)]))),128))])])])):E("",!0),r.result&&r.result.rows.length>0&&Q.value>1?(i(),m("div",br,[a("div",kr,[f($e,{icon:"i-heroicons-chevron-double-left",variant:"ghost",size:"xs",disabled:I.value===1,onClick:ee[0]||(ee[0]=Te=>I.value=1)},null,8,["disabled"]),f($e,{icon:"i-heroicons-chevron-left",variant:"ghost",size:"xs",disabled:I.value===1,onClick:ee[1]||(ee[1]=Te=>I.value--)},null,8,["disabled"]),a("span",_r,c(I.value)+" / "+c(Q.value),1),f($e,{icon:"i-heroicons-chevron-right",variant:"ghost",size:"xs",disabled:I.value>=Q.value,onClick:ee[2]||(ee[2]=Te=>I.value++)},null,8,["disabled"]),f($e,{icon:"i-heroicons-chevron-double-right",variant:"ghost",size:"xs",disabled:I.value>=Q.value,onClick:ee[3]||(ee[3]=Te=>I.value=Q.value)},null,8,["disabled"])]),a("div",wr,[a("span",null,c(t(e)("ai.sqlLab.result.pageSize")),1),f(De,{"model-value":h.value,items:C.map(Te=>({label:String(Te),value:Te})),size:"xs",class:"w-20","onUpdate:modelValue":fe},null,8,["model-value","items"])])])):E("",!0),r.result&&r.result.rows.length===0?(i(),m("div",$r,[a("div",Cr,[f(pe,{name:"i-heroicons-inbox",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Sr,c(t(e)("ai.sqlLab.result.emptyResult")),1)])])):E("",!0),!r.result&&!r.error?(i(),m("div",Ir,[a("div",Tr,[f(pe,{name:"i-heroicons-command-line",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Mr,c(t(e)("ai.sqlLab.result.initialState")),1),a("p",zr,c(t(e)("ai.sqlLab.result.initialHint")),1)])])):E("",!0),f(Fe,{open:L.value,"onUpdate:open":ee[4]||(ee[4]=Te=>L.value=Te)},{content:B(()=>[a("div",Ar,[a("div",qr,[f(pe,{name:"i-heroicons-sparkles",class:"h-5 w-5 text-pink-500"}),a("h3",Lr,c(t(e)("ai.sqlLab.result.summaryTitle")),1)]),A.value&&!Y.value?(i(),m("div",Dr,[f(pe,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-pink-500"}),a("span",Er,c(t(e)("ai.sqlLab.result.analyzing")),1)])):Y.value||M.value?(i(),m("div",Br,[a("div",{class:"prose prose-sm max-w-none rounded-lg bg-gray-50 p-4 dark:prose-invert dark:bg-page-dark",innerHTML:t(k).render(Y.value||M.value)},null,8,Fr),A.value?(i(),m("div",Rr,[f(pe,{name:"i-heroicons-arrow-path",class:"mr-1 h-3 w-3 animate-spin"}),ie(" "+c(t(e)("common.generating")),1)])):E("",!0)])):E("",!0),q.value?(i(),m("div",Vr,[a("p",Or,c(q.value),1)])):E("",!0),a("div",Pr,[!A.value&&M.value?(i(),W($e,{key:0,variant:"outline",onClick:xe},{default:B(()=>[f(pe,{name:"i-heroicons-arrow-path",class:"mr-1 h-4 w-4"}),ie(" "+c(t(e)("common.regenerate")),1)]),_:1})):E("",!0),f($e,{variant:"ghost",onClick:le},{default:B(()=>[ie(c(t(e)("common.close")),1)]),_:1})])])]),_:1},8,["open"])])}}}),Nr={class:"main-content flex h-full"},Ur={class:"flex flex-1 flex-col overflow-hidden"},Wr={class:"flex flex-col border-b border-gray-200 bg-gray-50 p-4 dark:border-gray-800 dark:bg-page-dark"},Hr={class:"mx-auto w-full max-w-3xl"},Kr=["placeholder"],Yr=["placeholder"],Gr={class:"mt-1 flex items-center justify-between"},Qr={class:"flex items-center gap-2"},Jr={key:0,class:"text-xs text-gray-400"},Xr={class:"flex items-center gap-2"},Zr={key:0,class:"ml-1 text-xs text-gray-400"},eu={key:0,class:"flex-1 overflow-auto p-4"},tu={class:"mb-2 flex items-center gap-1.5 text-sm font-medium text-gray-600 dark:text-gray-300"},au={key:0,class:"text-gray-500"},su={key:1,class:"text-pink-500"},nu=["open"],ou={class:"cursor-pointer select-none text-xs font-medium text-gray-500 dark:text-gray-400"},lu={key:1,class:"whitespace-pre-wrap break-all font-mono text-xs leading-5 text-gray-600 dark:text-gray-400"},iu={key:2,class:"font-mono text-xs text-gray-400"},ru=de({__name:"SQLLabTab",props:{sessionId:{},chatType:{}},setup(r){const{t:l,locale:e}=_e(),n=r,s=z(null),u=z(null);function o(V){return l(V==="group"?"ai.sqlLab.generate.defaultPromptGroup":"ai.sqlLab.generate.defaultPromptPrivate")}const d=z("SELECT * FROM message LIMIT 10"),g=z(o(n.chatType)),p=z("prompt"),y=z(!1),_=z(!1),v=z(null),x=z(null),b=z(""),k=z(""),$=z(""),w=z(!1),S=z(null),I=z(!1),h=z([]);function C(){try{const V=`sql-lab-history-${n.sessionId}`,X=localStorage.getItem(V);X&&(h.value=JSON.parse(X))}catch(V){console.error("加载历史记录失败:",V)}}function O(){try{const V=`sql-lab-history-${n.sessionId}`;localStorage.setItem(V,JSON.stringify(h.value))}catch(V){console.error("保存历史记录失败:",V)}}function R(V,X,ce){const fe={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,prompt:V,sql:X,explanation:ce,timestamp:Date.now()};h.value.unshift(fe),h.value.length>50&&(h.value=h.value.slice(0,50)),O()}function L(V){h.value=h.value.filter(X=>X.id!==V),O()}async function A(){if(!d.value.trim()){v.value=l("ai.sqlLab.editor.errorEmptySQL");return}y.value=!0,v.value=null,x.value=null,u.value?.resetSort();try{x.value=await Ke().executeSQL(n.sessionId,d.value)}catch(V){v.value=V.message||String(V)}finally{y.value=!1}}function M(V,X){(V.ctrlKey||V.metaKey)&&V.key==="Enter"&&(V.preventDefault(),X==="prompt"?Q():A())}function q(V,X){d.value+=`${V}.${X}`}function Y(){p.value=p.value==="prompt"?"sql":"prompt"}function G(V){const X=[];for(const ce of V){X.push(`### ${ce.name} (${ha(ce.name,e.value)})`),X.push("| 列名 | 说明 | 类型 |"),X.push("|------|------|------|");for(const fe of ce.columns){const te=fe.pk?" (主键)":"";X.push(`| ${fe.name} | ${Ea(ce.name,fe.name,e.value)}${te} | ${fe.type} |`)}X.push("")}return X.join(`
27
- `)}function ae(V,X){return`你是一个 SQLite 数据库专家。用户需要查询聊天记录数据库。
28
-
29
- ## 数据库结构
30
-
31
- ${G(X)}
32
-
33
- ## 重要说明
34
-
35
- 1. message 表的 ts 字段是 Unix 时间戳(秒),查询日期需要使用 datetime(ts, 'unixepoch') 转换
36
- 2. message.type 字段:0=文本, 1=图片, 2=语音, 3=视频, 4=文件, 5=表情包, 6=系统消息, 99=其他
37
- 3. member 和 message 表通过 message.sender_id = member.id 关联
38
- 4. **人名查询**:当识别到人名/昵称查询时,必须同时在 member 表的 account_name、group_nickname 和 aliases 三个字段中模糊搜索,使用 OR 连接:
39
- \`\`\`
40
- WHERE m.account_name LIKE '%人名%'
41
- OR m.group_nickname LIKE '%人名%'
42
- OR m.aliases LIKE '%人名%'
43
- \`\`\`
44
- 5. 显示成员名称时,使用 COALESCE(m.group_nickname, m.account_name, m.platform_id) 来获取最佳显示名
45
- 6. **查询具体消息时包含消息 ID**:当用户需要查看具体的聊天记录时,SELECT 应包含 msg.id 作为第一个字段,这样用户可以点击查看完整上下文。注意是 msg.id(消息 ID),不是 m.id(成员 ID)。
46
- 7. **统计查询不需要消息 ID**:当用户需要统计分析时,不需要返回 msg.id
47
- 8. **严禁使用不存在的字段**:只能使用上方 Schema 中明确存在的表名和列名,禁止使用如 sender.display_name、member.display_name 等虚构字段
48
- 9. **成员显示名写法**:如果需要显示成员名称,优先使用 COALESCE(m.group_nickname, m.account_name, m.platform_id);若不联表 member,可使用 COALESCE(msg.sender_group_nickname, msg.sender_account_name, msg.sender_id)
49
- 10. **单次只做一个分析目标**:一次 SQL 只返回一个语义一致的结果集,不要把多个分析目标用 UNION ALL/UNION 混合到同一结果表
50
-
51
- ## 用户需求
52
-
53
- ${V}
54
-
55
- ## 要求
56
-
57
- 请以 JSON 格式输出,包含两个字段:
58
- - sql: SQLite 查询语句(不要用代码块包裹)
59
- - explanation: 用简洁的中文解释这条 SQL 做了什么
60
-
61
- 示例格式:
62
- {"sql": "SELECT ...", "explanation": "这条SQL查询了..."}
63
-
64
- 注意:
65
- 1. 仅输出 JSON,不要有任何其他文字
66
- 2. SQL 中的查询结果限制在合理范围内(建议 LIMIT 100)
67
- 3. 确保 SQL 语法正确
68
- 4. 若用户需求包含多个分析目标,仅选择第一个目标生成 SQL`}function re(V){let X=V.trim();X=X.replace(/^```json?\n?/i,"").replace(/\n?```$/i,"");try{const ce=JSON.parse(X);return{sql:(ce.sql||"").trim(),explanation:(ce.explanation||"").trim()}}catch{return X=X.replace(/^```sql?\n?/i,"").replace(/\n?```$/i,""),{sql:X.trim(),explanation:""}}}async function Q(){const V=g.value.trim();if(!V){v.value=l("ai.sqlLab.generate.errorEmptyPrompt");return}if(!await ba().hasConfig()){v.value=l("common.errorNoAIConfig");return}const ce=s.value?.schema||[];if(ce.length===0){v.value=l("common.error.unknown");return}_.value=!0,x.value=null,v.value=null,k.value="",$.value="",w.value=!1;let fe="";try{const te=ae(V,ce),se=await cs().chatStream([{role:"system",content:"你是一个 SQLite 专家,请以 JSON 格式输出 sql 和 explanation 字段。"},{role:"user",content:te}],{temperature:.1,maxTokens:4096},me=>{if(me.thinking!==void 0){me.thinkingDone?w.value=!1:(w.value=!0,me.thinking&&($.value+=me.thinking,Ae(()=>{S.value&&(S.value.scrollTop=S.value.scrollHeight)})));return}me.error&&(fe=me.error),me.isFinished&&me.finishReason==="length"&&(fe=l("ai.sqlLab.generate.errorTokenLimit")),me.content&&(k.value+=me.content)});if(!se.success){v.value=se.error||fe||l("ai.sqlLab.generate.errorGenerate");return}if(fe){v.value=fe;return}const N=re(k.value);if(!N.sql){v.value=k.value?`${l("ai.sqlLab.generate.errorGenerate")}: ${k.value.slice(0,200)}`:l("ai.sqlLab.generate.errorGenerate");return}d.value=N.sql,b.value=V,R(V,N.sql,N.explanation),await A()}catch(te){v.value=te.message||String(te)}finally{_.value=!1}}async function H(V){d.value=V.sql,b.value=V.prompt,I.value=!1,await A()}return Be(()=>{C()}),he(()=>n.chatType,V=>{g.value=o(V)}),(V,X)=>{const ce=we,fe=Ue;return i(),m("div",Nr,[f(t(Ei),{ref_key:"schemaPanelRef",ref:s,"session-id":r.sessionId,onInsertColumn:q},null,8,["session-id"]),a("div",Ur,[a("div",Wr,[a("div",Hr,[p.value==="prompt"?Je((i(),m("textarea",{key:0,"onUpdate:modelValue":X[0]||(X[0]=te=>g.value=te),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:t(l)("ai.sqlLab.generate.placeholder"),spellcheck:"false",onKeydown:X[1]||(X[1]=te=>M(te,"prompt"))},null,40,Kr)),[[wt,g.value]]):Je((i(),m("textarea",{key:1,"onUpdate:modelValue":X[2]||(X[2]=te=>d.value=te),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 font-mono text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:t(l)("ai.sqlLab.editor.placeholder"),spellcheck:"false",onKeydown:X[3]||(X[3]=te=>M(te,"sql"))},null,40,Yr)),[[wt,d.value]]),a("div",Gr,[a("div",Qr,[f(fe,{variant:"ghost",size:"xs",onClick:Y},{default:B(()=>[f(ce,{name:"i-heroicons-arrows-right-left",class:"mr-1 h-3.5 w-3.5"}),ie(" "+c(p.value==="prompt"?t(l)("ai.sqlLab.editor.switchToSQLMode"):t(l)("ai.sqlLab.editor.switchToPromptMode")),1)]),_:1}),p.value==="sql"?(i(),m("span",Jr,c(t(l)("ai.sqlLab.editor.tip")),1)):E("",!0)]),a("div",Xr,[f(fe,{variant:"ghost",size:"sm",disabled:h.value.length===0,onClick:X[4]||(X[4]=te=>I.value=!0)},{default:B(()=>[f(ce,{name:"i-heroicons-clock",class:"mr-1 h-4 w-4"}),ie(" "+c(t(l)("ai.sqlLab.editor.history"))+" ",1),h.value.length>0?(i(),m("span",Zr,"("+c(h.value.length)+")",1)):E("",!0)]),_:1},8,["disabled"]),p.value==="prompt"?(i(),W(fe,{key:0,color:"primary",size:"sm",loading:_.value||y.value,disabled:!g.value.trim(),onClick:Q},{default:B(()=>[f(ce,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ie(" "+c(t(l)("ai.sqlLab.editor.generateAndRun")),1)]),_:1},8,["loading","disabled"])):(i(),W(fe,{key:1,color:"primary",size:"sm",loading:y.value,onClick:A},{default:B(()=>[f(ce,{name:"i-heroicons-play",class:"mr-1 h-4 w-4"}),ie(" "+c(t(l)("ai.sqlLab.editor.run")),1)]),_:1},8,["loading"]))])])])]),p.value==="prompt"&&!x.value&&!v.value&&(k.value||$.value||_.value)?(i(),m("div",eu,[f(t(mt),{class:"mx-auto w-full max-w-3xl p-4"},{default:B(()=>[a("p",tu,[f(ce,{name:"i-heroicons-cpu-chip",class:"h-4 w-4"}),ie(" "+c(t(l)("ai.sqlLab.generate.aiOutput"))+" ",1),w.value?(i(),m("span",au,c(t(l)("ai.sqlLab.generate.thinking")),1)):_.value?(i(),m("span",su,c(t(l)("common.generating")),1)):E("",!0)]),$.value?(i(),m("details",{key:0,class:"mb-3",open:w.value},[a("summary",ou,c(t(l)("ai.sqlLab.generate.thinkingProcess")),1),a("pre",{ref_key:"thinkingPreRef",ref:S,class:"mt-1 max-h-48 overflow-auto whitespace-pre-wrap break-all rounded border border-gray-200 bg-gray-50 p-2 font-mono text-xs leading-5 text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400"},c($.value),513)],8,nu)):E("",!0),k.value?(i(),m("pre",lu,c(k.value),1)):$.value?E("",!0):(i(),m("p",iu,c(t(l)("ai.sqlLab.generate.waitingAI")),1))]),_:1})])):(i(),W(t(jr),{key:1,ref_key:"resultTableRef",ref:u,result:x.value,error:v.value,sql:d.value,prompt:b.value},null,8,["result","error","sql","prompt"]))]),f(t(Qi),{open:I.value,"onUpdate:open":X[5]||(X[5]=te=>I.value=te),history:h.value,onExecute:H,onDelete:L},null,8,["open","history"])])}}}),uu={class:"flex h-full flex-col"},du={class:"min-h-0 flex-1 overflow-hidden"},cu=de({__name:"LabTab",props:{sessionId:{},chatType:{}},setup(r){const l=r,{t:e}=_e(),n=T(()=>[{id:"sql-lab",label:e("ai.tab.sqlLab"),icon:"i-heroicons-command-line"}]),s=z("sql-lab");return(u,o)=>(i(),m("div",uu,[f(t(Sa),{modelValue:s.value,"onUpdate:modelValue":o[0]||(o[0]=d=>s.value=d),items:n.value,"persist-key":"labTab"},null,8,["modelValue","items"]),a("div",du,[f(ht,{name:"fade",mode:"out-in"},{default:B(()=>[s.value==="sql-lab"?(i(),W(ru,{key:0,class:"h-full","session-id":l.sessionId,"chat-type":l.chatType},null,8,["session-id","chat-type"])):E("",!0)]),_:1})])]))}}),_2=nt(cu,[["__scopeId","data-v-7fc6fe33"]]),mu={class:"flex h-full min-h-0 flex-col"},gu={class:"min-h-0 flex-1 overflow-hidden"},w2=de({__name:"MemoryTab",props:{sessionId:{},sessionName:{}},setup(r){const{t:l}=_e(),e=z("records"),n=T(()=>[{id:"records",label:l("analysis.memory.tabs.records"),icon:"i-heroicons-chat-bubble-left-right"}]);return(s,u)=>(i(),m("div",mu,[f(t(Sa),{modelValue:e.value,"onUpdate:modelValue":u[0]||(u[0]=o=>e.value=o),items:n.value,"persist-key":"memoryTab"},null,8,["modelValue","items"]),a("div",gu,[e.value==="records"?(i(),W(t(Gn),{key:r.sessionId,"session-id":r.sessionId,mode:"page","show-topics":!t(_n)},null,8,["session-id","show-topics"])):E("",!0)])]))}});function pu(r,l){if(typeof r!="object"||r===null)return!1;const e=it(r,l);return e!=null&&e!==""}function Qa(r,l){return l?{xs:44,sm:48,md:52,lg:56,xl:60}[r]:{xs:24,sm:28,md:32,lg:36,xl:40}[r]}function fu(r,l,e,n){const s=Qa(l,!0),u=Qa(l,!1);return n?()=>s:e?o=>pu(r[o],e)?s:u:()=>u}const hu={slots:{base:["relative group rounded-md inline-flex items-center disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-bg stroke-default",content:["max-h-[min(15rem,var(--reka-select-content-available-height,15rem))] w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col","max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"],viewport:"relative scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted",input:"border-b border-default",focusScope:"flex flex-col min-h-0",trailingClear:"p-0"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-3 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-3 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},position:{popper:{content:"data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"},"item-aligned":{content:""}},multiple:{true:""},virtualize:{true:{viewport:"p-1 isolate"},false:{viewport:"divide-y divide-default"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline",position:"popper"}},Ba=Object.assign({inheritAttrs:!1},{__name:"SelectMenu",props:qt({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},clear:{type:[Boolean,Object],required:!1},clearIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},resetModelValueOnClear:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:""},searchTermModifiers:{}}),emits:qt(["change","blur","focus","create","clear","highlight","update:modelValue","update:open"],["update:searchTerm"]),setup(r,{expose:l,emit:e}){const n=r,s=e,u=Jt(),o=ka("selectMenu",n),d=Ht(r,"searchTerm",{type:String,default:""}),{t:g}=wn(),p=wa(),{filterGroups:y}=Kl(),_=ss(ns(o,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","resetModelValueOnClear","highlightOnHover","by"),s),v=$n(We(()=>o.portal)),x=We(()=>Tt(o.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),b=We(()=>Tt(o.arrow,{rounded:!0})),k=T(()=>typeof o.clear=="object"?o.clear:{}),$=We(()=>o.virtualize?Tt(typeof o.virtualize=="boolean"?{}:o.virtualize,{estimateSize:fu(J.value,X.value||"md",o.descriptionKey,!!u["item-description"])}):!1),w=We(()=>Tt(o.searchInput,{placeholder:g("selectMenu.search"),variant:"none"})),{emitFormBlur:S,emitFormFocus:I,emitFormInput:h,emitFormChange:C,size:O,color:R,id:L,name:A,highlight:M,disabled:q,ariaAttrs:Y}=_a(n),{orientation:G,size:ae}=os(n),{isLeading:re,isTrailing:Q,leadingIconName:H,trailingIconName:V}=$a(We(()=>Tt(o,{trailingIcon:p.ui.icons.chevronDown}))),X=T(()=>ae.value||O.value),[ce,fe]=Oa(),[te,se]=Oa({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),N=T(()=>$t({extend:$t(hu),...p.ui?.selectMenu||{}})({color:R.value??o.color,variant:o.variant,size:X?.value??o.size,loading:o.loading,highlight:M.value??o.highlight,leading:re.value||!!o.avatar||!!u.leading,trailing:Q.value||!!u.trailing,fieldGroup:G.value,virtualize:!!o.virtualize,multiple:o.multiple}));function me(D){if(o.multiple&&Array.isArray(D)){const j=D.map(U=>Pa(xe.value,U,{labelKey:o.labelKey,valueKey:o.valueKey,by:o.by})).filter(U=>U!=null&&U!=="");return j.length>0?j.join(", "):void 0}return Pa(xe.value,D,{labelKey:o.labelKey,valueKey:o.valueKey,by:o.by})}const be=T(()=>o.items?.length?Tn(o.items)?o.items:[o.items]:[]),xe=T(()=>be.value.flatMap(D=>D)),le=T(()=>{if(o.ignoreFilter||!d.value)return be.value;const D=Array.isArray(o.filterFields)?o.filterFields:[o.labelKey];return y(be.value,d.value,{fields:D,isStructural:j=>Se(j)&&!!j.type&&["label","separator"].includes(j.type)})}),J=T(()=>le.value.flatMap(D=>D)),ee=T(()=>{if(!o.createItem||!d.value)return!1;const D=o.valueKey?{[o.valueKey]:d.value}:d.value;return typeof o.createItem=="object"&&o.createItem.when==="always"||o.createItem==="always"?!J.value.find(j=>In(j,D,o.by??o.valueKey)):!J.value.length}),pe=T(()=>typeof o.createItem=="object"?o.createItem.position:"bottom"),ke=zt("triggerRef");function $e(){o.autofocus&&ke.value?.$el?.focus({focusVisible:!0})}Be(()=>{setTimeout(()=>{$e()},o.autofocusDelay)});function De(D){if(ls(o.modelValue)===D)return;o.modelModifiers?.trim&&(typeof D=="string"||D===null||D===void 0)&&(D=D?.trim()??null),o.modelModifiers?.number&&(D=is(D)),o.modelModifiers?.nullable&&(D??=null),o.modelModifiers?.optional&&!o.modelModifiers?.nullable&&D!==null&&(D??=void 0);const j=new Event("change",{target:{value:D}});s("change",j),C(),h(),o.resetSearchTermOnSelect&&(d.value="")}const Fe=z(!1);function Te(D){Fe.value=D;let j;if(D){const U=new FocusEvent("focus");s("focus",U),I(),clearTimeout(j)}else{const U=new FocusEvent("blur");s("blur",U),S(),o.resetSearchTermOnBlur&&(j=setTimeout(()=>{d.value=""},100))}}function Pe(D){D.preventDefault(),D.stopPropagation(),s("create",d.value)}function je(D,j){if(Se(j)){if(j.disabled){D.preventDefault();return}j.onSelect?.(D)}}function Se(D){return typeof D=="object"&&D!==null}function ge(D){return o.multiple&&Array.isArray(D)?D.length===0:D==null||D===""}function P(){s("clear")}const F=zt("viewportRef"),K=zt("comboboxRootRef");return he(()=>o.items,async()=>{Fe.value&&(await Ae(),K.value?.highlightFirstItem?.())},{flush:"post"}),l({triggerRef:We(()=>ke.value?.$el),viewportRef:We(()=>F.value)}),(D,j)=>(i(),m(ue,null,[f(t(ce),null,{default:B(()=>[f(t(Ya),{"data-slot":"item",class:Z(N.value.item({class:t(o).ui?.item})),value:d.value,onSelect:Pe},{default:B(()=>[a("span",{"data-slot":"itemLabel",class:Z(N.value.itemLabel({class:t(o).ui?.itemLabel}))},[ye(D.$slots,"create-item-label",{item:d.value},()=>[ie(c(t(g)("selectMenu.create",{label:d.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),f(t(te),null,{default:B(({item:U,index:oe})=>[Se(U)&&U.type==="label"?(i(),W(t(_l),{key:0,"data-slot":"label",class:Z(N.value.label({class:[t(o).ui?.label,U.ui?.label,U.class]}))},{default:B(()=>[ie(c(t(it)(U,t(o).labelKey)),1)]),_:2},1032,["class"])):Se(U)&&U.type==="separator"?(i(),W(t(Sl),{key:1,"data-slot":"separator",class:Z(N.value.separator({class:[t(o).ui?.separator,U.ui?.separator,U.class]}))},null,8,["class"])):(i(),W(t(Ya),{key:2,"data-slot":"item",class:Z(N.value.item({class:[t(o).ui?.item,Se(U)&&U.ui?.item,Se(U)&&U.class]})),disabled:Se(U)&&U.disabled,value:t(o).valueKey&&Se(U)?t(it)(U,t(o).valueKey):U,onSelect:ne=>je(ne,U)},{default:B(()=>[ye(D.$slots,"item",{item:U,index:oe,ui:N.value},()=>[ye(D.$slots,"item-leading",{item:U,index:oe,ui:N.value},()=>[Se(U)&&U.icon?(i(),W(we,{key:0,name:U.icon,"data-slot":"itemLeadingIcon",class:Z(N.value.itemLeadingIcon({class:[t(o).ui?.itemLeadingIcon,U.ui?.itemLeadingIcon]}))},null,8,["name","class"])):Se(U)&&U.avatar?(i(),W(Kt,qe({key:1,size:U.ui?.itemLeadingAvatarSize||t(o).ui?.itemLeadingAvatarSize||N.value.itemLeadingAvatarSize()},U.avatar,{"data-slot":"itemLeadingAvatar",class:N.value.itemLeadingAvatar({class:[t(o).ui?.itemLeadingAvatar,U.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):Se(U)&&U.chip?(i(),W(Cn,qe({key:2,size:U.ui?.itemLeadingChipSize||t(o).ui?.itemLeadingChipSize||N.value.itemLeadingChipSize(),inset:"",standalone:""},U.chip,{"data-slot":"itemLeadingChip",class:N.value.itemLeadingChip({class:[t(o).ui?.itemLeadingChip,U.ui?.itemLeadingChip]})}),null,16,["size","class"])):E("",!0)]),a("span",{"data-slot":"itemWrapper",class:Z(N.value.itemWrapper({class:[t(o).ui?.itemWrapper,Se(U)&&U.ui?.itemWrapper]}))},[a("span",{"data-slot":"itemLabel",class:Z(N.value.itemLabel({class:[t(o).ui?.itemLabel,Se(U)&&U.ui?.itemLabel]}))},[ye(D.$slots,"item-label",{item:U,index:oe},()=>[ie(c(Se(U)?t(it)(U,t(o).labelKey):U),1)])],2),Se(U)&&(t(it)(U,t(o).descriptionKey)||u["item-description"])?(i(),m("span",{key:0,"data-slot":"itemDescription",class:Z(N.value.itemDescription({class:[t(o).ui?.itemDescription,Se(U)&&U.ui?.itemDescription]}))},[ye(D.$slots,"item-description",{item:U,index:oe},()=>[ie(c(t(it)(U,t(o).descriptionKey)),1)])],2)):E("",!0)],2),a("span",{"data-slot":"itemTrailing",class:Z(N.value.itemTrailing({class:[t(o).ui?.itemTrailing,Se(U)&&U.ui?.itemTrailing]}))},[ye(D.$slots,"item-trailing",{item:U,index:oe,ui:N.value}),f(t(bl),{"as-child":""},{default:B(()=>[f(we,{name:t(o).selectedIcon||t(p).ui.icons.check,"data-slot":"itemTrailingIcon",class:Z(N.value.itemTrailingIcon({class:[t(o).ui?.itemTrailingIcon,Se(U)&&U.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),f(t(Zo),qe({ref_key:"comboboxRootRef",ref:K},t(_),{"ignore-filter":"","as-child":"",name:t(A),disabled:t(q),"onUpdate:modelValue":De,"onUpdate:open":Te}),{default:B(({modelValue:U,open:oe})=>[f(t(tl),{"as-child":""},{default:B(()=>[f(t(Tl),qe({id:t(L),ref_key:"triggerRef",ref:ke,"data-slot":"base",class:N.value.base({class:[t(o).ui?.base,t(o).class]}),tabindex:"0"},{...D.$attrs,...t(Y)}),{default:B(()=>[t(re)||t(o).avatar||u.leading?(i(),m("span",{key:0,"data-slot":"leading",class:Z(N.value.leading({class:t(o).ui?.leading}))},[ye(D.$slots,"leading",{modelValue:U,open:oe,ui:N.value},()=>[t(re)&&t(H)?(i(),W(we,{key:0,name:t(H),"data-slot":"leadingIcon",class:Z(N.value.leadingIcon({class:t(o).ui?.leadingIcon}))},null,8,["name","class"])):t(o).avatar?(i(),W(Kt,qe({key:1,size:t(o).ui?.itemLeadingAvatarSize||N.value.itemLeadingAvatarSize()},t(o).avatar,{"data-slot":"itemLeadingAvatar",class:N.value.itemLeadingAvatar({class:t(o).ui?.itemLeadingAvatar})}),null,16,["size","class"])):E("",!0)])],2)):E("",!0),ye(D.$slots,"default",{modelValue:U,open:oe,ui:N.value},()=>[(i(!0),m(ue,null,ve([me(U)],ne=>(i(),m(ue,{key:ne},[ne!=null?(i(),m("span",{key:0,"data-slot":"value",class:Z(N.value.value({class:t(o).ui?.value}))},c(ne),3)):(i(),m("span",{key:1,"data-slot":"placeholder",class:Z(N.value.placeholder({class:t(o).ui?.placeholder}))},c(t(o).placeholder??" "),3))],64))),128))]),t(Q)||u.trailing||t(o).clear?(i(),m("span",{key:1,"data-slot":"trailing",class:Z(N.value.trailing({class:t(o).ui?.trailing}))},[ye(D.$slots,"trailing",{modelValue:U,open:oe,ui:N.value},()=>[t(o).clear&&!ge(U)?(i(),W(t(ul),{key:0,"as-child":""},{default:B(()=>[f(Ue,qe({as:"span",icon:t(o).clearIcon||t(p).ui.icons.close,size:X.value,variant:"link",color:"neutral",tabindex:"-1"},k.value,{"data-slot":"trailingClear",class:N.value.trailingClear({class:t(o).ui?.trailingClear}),onClick:Oe(P,["stop"])}),null,16,["icon","size","class"])]),_:1})):t(V)?(i(),W(we,{key:1,name:t(V),"data-slot":"trailingIcon",class:Z(N.value.trailingIcon({class:t(o).ui?.trailingIcon}))},null,8,["name","class"])):E("",!0)])],2)):E("",!0)]),_:2},1040,["id","class"])]),_:2},1024),f(t($l),ft(At(t(v))),{default:B(()=>[f(t(Sn),null,{default:B(()=>[f(t(cl),qe({"data-slot":"content",class:N.value.content({class:t(o).ui?.content})},x.value),{default:B(()=>[f(t(as),{trapped:"","data-slot":"focusScope",class:Z(N.value.focusScope({class:t(o).ui?.focusScope}))},{default:B(()=>[ye(D.$slots,"content-top"),t(o).searchInput?(i(),W(t(vl),{key:0,modelValue:d.value,"onUpdate:modelValue":j[1]||(j[1]=ne=>d.value=ne),"display-value":()=>d.value,"as-child":""},{default:B(()=>[f(Ft,qe({autofocus:"",autocomplete:"off",size:X.value},w.value,{"model-modifiers":{trim:t(o).modelModifiers?.trim},"data-slot":"input",class:N.value.input({class:t(o).ui?.input}),onChange:j[0]||(j[0]=Oe(()=>{},["stop"]))}),null,16,["size","model-modifiers","class"])]),_:1},8,["modelValue","display-value"])):E("",!0),f(t(gl),{"data-slot":"empty",class:Z(N.value.empty({class:t(o).ui?.empty}))},{default:B(()=>[ye(D.$slots,"empty",{searchTerm:d.value},()=>[ie(c(d.value?t(g)("selectMenu.noMatch",{searchTerm:d.value}):t(g)("selectMenu.noData")),1)])]),_:3},8,["class"]),a("div",{ref_key:"viewportRef",ref:F,role:"presentation","data-slot":"viewport",class:Z(N.value.viewport({class:t(o).ui?.viewport}))},[t(o).virtualize?(i(),m(ue,{key:0},[ee.value&&pe.value==="top"?(i(),W(t(fe),{key:0})):E("",!0),f(t(zl),qe({options:J.value,"text-content":ne=>Se(ne)?t(it)(ne,t(o).labelKey):String(ne)},$.value),{default:B(({option:ne,virtualItem:Ve})=>[f(t(se),{item:ne,index:Ve.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),ee.value&&pe.value==="bottom"?(i(),W(t(fe),{key:1})):E("",!0)],64)):(i(),m(ue,{key:1},[ee.value&&pe.value==="top"?(i(),W(t(la),{key:0,"data-slot":"group",class:Z(N.value.group({class:t(o).ui?.group}))},{default:B(()=>[f(t(fe))]),_:1},8,["class"])):E("",!0),(i(!0),m(ue,null,ve(le.value,(ne,Ve)=>(i(),W(t(la),{key:`group-${Ve}`,"data-slot":"group",class:Z(N.value.group({class:t(o).ui?.group}))},{default:B(()=>[(i(!0),m(ue,null,ve(ne,(Le,Me)=>(i(),W(t(se),{key:`group-${Ve}-${Me}`,item:Le,index:Me},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),ee.value&&pe.value==="bottom"?(i(),W(t(la),{key:1,"data-slot":"group",class:Z(N.value.group({class:t(o).ui?.group}))},{default:B(()=>[f(t(fe))]),_:1},8,["class"])):E("",!0)],64))],2),ye(D.$slots,"content-bottom")]),_:3},8,["class"]),t(o).arrow?(i(),W(t(il),qe({key:0},b.value,{"data-slot":"arrow",class:N.value.arrow({class:t(o).ui?.arrow})}),null,16,["class"])):E("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["name","disabled"])],64))}}),vu={class:"h-full p-3"},yu={class:"relative z-20 flex items-center gap-2 border-b border-gray-200 px-4 py-2 dark:border-gray-700"},xu={key:0,class:"mx-4 mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},bu={class:"flex-1 overflow-auto"},ku={key:0,class:"flex h-full items-center justify-center"},_u={class:"text-sm text-gray-400"},wu={key:1,class:"w-full border-collapse text-xs"},$u={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},Cu={class:"font-mono text-xs font-medium text-gray-700 dark:text-gray-300"},Su={class:"text-[10px] leading-tight text-gray-400"},Iu={class:"border-b border-r border-gray-100 px-2 py-1.5 text-gray-400 dark:border-gray-800"},Tu=["title"],Mu=["onUpdate:modelValue"],zu={class:"w-full truncate px-2 py-1.5"},Au={key:0,class:"italic text-gray-400"},qu={key:1},Lu={class:"border-b border-gray-100 px-2 py-1.5 text-center dark:border-gray-800"},Du={key:0,class:"flex items-center justify-center gap-1"},Eu={key:1,class:"flex items-center justify-center gap-1"},Bu={class:"flex items-center justify-between border-t border-gray-200 px-4 py-2 dark:border-gray-700"},Fu={class:"text-xs text-gray-500 dark:text-gray-400"},Ru={key:0,class:"flex items-center gap-3"},Vu={class:"text-xs text-gray-500 dark:text-gray-400"},Pt=100,Ou=de({__name:"TableBrowser",props:{sessionId:{}},setup(r){const l=["member","meta","message","message_context","member_name_history"],{t:e,locale:n}=_e(),s=r,u=z(localStorage.getItem("debug_dbSource")||"chat"),o=z([]),d=z(""),g=z(null),p=z(!1),y=z(null),_=z(1),v=z(0),x=T(()=>Math.max(1,Math.ceil(v.value/Pt))),b=z(null),k=z({}),$=z(!1),w=T(()=>u.value==="ai"),S=z([]),I=z(""),h=T(()=>w.value&&d.value==="ai_message"&&S.value.length>0),C=T(()=>{const te={label:e("analysis.debug.tableBrowser.allConversations"),value:"__all__"},se=S.value.map(N=>({label:N.title||N.id.slice(0,16),value:N.id}));return[te,...se]});async function O(){if(!w.value){S.value=[];return}try{const te=s.sessionId.replace(/'/g,"''"),se=await Ye().executeAiSQL(`SELECT id, title FROM ai_chat WHERE session_id = '${te}' ORDER BY updated_at DESC`);S.value=se.rows.map(N=>({id:String(N[0]),title:N[1]?String(N[1]):null})),I.value="__all__"}catch{S.value=[]}}const R=T(()=>[{label:e("analysis.debug.tableBrowser.chatDb"),value:"chat"},{label:e("analysis.debug.tableBrowser.aiDb"),value:"ai"}]),L=T(()=>{const te=[...o.value];return te.sort((se,N)=>{const me=l.indexOf(se.name),be=l.indexOf(N.name);return me!==-1&&be!==-1?me-be:me!==-1?-1:be!==-1?1:0}),te}),A=T(()=>L.value.map(te=>({label:te.name,value:te.name})));async function M(te){return u.value==="ai"?await Ye().executeAiSQL(te):await Ke().executeSQL(s.sessionId,te)}async function q(){try{if(u.value==="ai"?o.value=await Ye().getAiSchema():o.value=await Ke().getSchema(s.sessionId),L.value.length>0){const te=w.value?"ai_message":L.value[0].name;d.value=L.value.some(se=>se.name===te)?te:L.value[0].name}else d.value="",g.value=null}catch(te){console.error("Failed to load schema:",te)}}function Y(){if(!w.value)return"";const te=s.sessionId.replace(/'/g,"''"),se=d.value;return se==="ai_chat"?` WHERE "session_id" = '${te}'`:se==="ai_message"?I.value&&I.value!=="__all__"?` WHERE "ai_chat_id" = '${I.value.replace(/'/g,"''")}'`:` WHERE "ai_chat_id" IN (SELECT "id" FROM "ai_chat" WHERE "session_id" = '${te}')`:""}async function G(){if(d.value){p.value=!0,y.value=null,b.value=null;try{const te=Y(),se=await M(`SELECT COUNT(*) as cnt FROM "${d.value}"${te}`);v.value=se?.rows?.[0]?.[0]??0;const N=(_.value-1)*Pt;g.value=await M(`SELECT * FROM "${d.value}"${te} ORDER BY rowid DESC LIMIT ${Pt} OFFSET ${N}`)}catch(te){y.value=te.message||String(te),g.value=null}finally{p.value=!1}}}function ae(te){if(!g.value)return;b.value=te;const se=g.value.rows[te],N={};g.value.columns.forEach((me,be)=>{N[me]=se[be]==null?"":String(se[be])}),k.value=N}function re(){b.value=null,k.value={}}async function Q(){if(b.value===null||!g.value)return;const te=d.value,se=o.value.find(ee=>ee.name===te);if(!se)return;const N=se.columns.find(ee=>ee.pk);if(!N){y.value="No primary key found for this table";return}const me=g.value.rows[b.value],be=g.value.columns.indexOf(N.name),xe=me[be],le=g.value.columns.filter(ee=>ee!==N.name).map(ee=>`"${ee}" = '${k.value[ee].replace(/'/g,"''")}'`).join(", "),J=`UPDATE "${te}" SET ${le} WHERE "${N.name}" = '${String(xe).replace(/'/g,"''")}'`;try{await M(J),re(),await G()}catch(ee){y.value=ee.message||String(ee)}}async function H(te){if(!g.value)return;const se=d.value,N=o.value.find(ee=>ee.name===se);if(!N)return;const me=N.columns.find(ee=>ee.pk);if(!me){y.value="No primary key found for this table";return}const be=g.value.rows[te],xe=g.value.columns.indexOf(me.name),le=be[xe],J=`DELETE FROM "${se}" WHERE "${me.name}" = '${String(le).replace(/'/g,"''")}'`;try{await M(J),await G()}catch(ee){y.value=ee.message||String(ee)}}function V(te){confirm(e("analysis.debug.tableBrowser.confirmDelete"))&&H(te)}async function X(){if(confirm(e("analysis.debug.tableBrowser.confirmClearDebug"))){$.value=!0;try{(await Ye().clearDebugContext()).success&&await G()}catch(te){y.value=te.message||String(te)}finally{$.value=!1}}}function ce(te){navigator.clipboard.writeText(te)}function fe(te,se,N){if(!g.value)return[];const me=te==null?"NULL":String(te),be=g.value.rows[N],xe={};return g.value.columns.forEach((le,J)=>{xe[le]=be[J]}),[[{label:e("analysis.debug.tableBrowser.copyCell"),class:"p-2",onSelect:()=>ce(me)},{label:e("analysis.debug.tableBrowser.editRow"),class:"p-2",onSelect:()=>ae(N)},{label:e("analysis.debug.tableBrowser.copyRow"),class:"p-2",onSelect:()=>ce(JSON.stringify(xe,null,2))},{label:e("analysis.debug.tableBrowser.deleteRow"),class:"p-2 text-red-600 dark:text-red-400",onSelect:()=>H(N)}]]}return he(u,te=>{localStorage.setItem("debug_dbSource",te),d.value="",g.value=null,v.value=0,_.value=1,I.value="",q(),O()}),he(d,te=>{te&&(_.value=1,G())}),he(I,()=>{d.value==="ai_message"&&(_.value=1,G())}),he(_,()=>{G()}),Be(async()=>{await Promise.all([q(),O()]),d.value&&await G()}),(te,se)=>{const N=Ba,me=Ue,be=Mn;return i(),m("div",vu,[f(t(mt),{shadow:!1,class:"flex h-full min-w-0 flex-col"},{default:B(()=>[a("div",yu,[f(t(pt),{modelValue:u.value,"onUpdate:modelValue":se[0]||(se[0]=xe=>u.value=xe),items:R.value,size:"xs"},null,8,["modelValue","items"]),se[5]||(se[5]=a("div",{class:"mx-1 h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),a("div",{class:Z([w.value?"max-w-[50%]":"flex-1","min-w-0"])},[f(t(pt),{modelValue:d.value,"onUpdate:modelValue":se[1]||(se[1]=xe=>d.value=xe),items:A.value,size:"xs"},null,8,["modelValue","items"])],2),h.value?(i(),W(N,{key:0,modelValue:I.value,"onUpdate:modelValue":se[2]||(se[2]=xe=>I.value=xe),items:C.value,"value-key":"value",class:"w-48",size:"xs",ui:{content:"z-50"}},null,8,["modelValue","items"])):E("",!0),se[6]||(se[6]=a("div",{class:"flex-1"},null,-1)),w.value&&d.value==="ai_message"?(i(),W(me,{key:1,variant:"ghost",size:"xs",color:"error",icon:"i-heroicons-trash",loading:$.value,onClick:X},{default:B(()=>[ie(c(t(e)("analysis.debug.tableBrowser.clearDebugContext")),1)]),_:1},8,["loading"])):E("",!0),f(me,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",loading:p.value,onClick:G},{default:B(()=>[ie(c(t(e)("analysis.debug.tableBrowser.refresh")),1)]),_:1},8,["loading"])]),y.value?(i(),m("div",xu,c(y.value),1)):E("",!0),a("div",bu,[!g.value&&!p.value?(i(),m("div",ku,[a("p",_u,c(t(e)("analysis.debug.tableBrowser.noData")),1)])):g.value?(i(),m("table",wu,[a("thead",$u,[a("tr",null,[se[7]||(se[7]=a("th",{class:"whitespace-nowrap border-b border-r border-gray-200 px-2 py-1.5 text-left font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," # ",-1)),(i(!0),m(ue,null,ve(g.value.columns,xe=>(i(),m("th",{key:xe,class:"border-b border-r border-gray-200 px-2 py-1.5 text-left dark:border-gray-700"},[a("div",Cu,c(xe),1),a("div",Su,c(t(Ea)(d.value,xe,t(n))),1)]))),128)),se[8]||(se[8]=a("th",{class:"whitespace-nowrap border-b border-gray-200 px-2 py-1.5 text-center font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," 操作 ",-1))])]),a("tbody",null,[(i(!0),m(ue,null,ve(g.value.rows,(xe,le)=>(i(),m("tr",{key:le,class:"transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("td",Iu,c((_.value-1)*Pt+le+1),1),(i(!0),m(ue,null,ve(xe,(J,ee)=>(i(),m("td",{key:ee,class:"max-w-[300px] border-b border-r border-gray-100 p-0 text-gray-700 dark:border-gray-800 dark:text-gray-300",title:J==null?"NULL":String(J)},[b.value===le?Je((i(),m("input",{key:0,"onUpdate:modelValue":pe=>k.value[g.value.columns[ee]]=pe,class:"w-full px-2 py-1.5 rounded border border-gray-300 bg-white text-xs dark:border-gray-600 dark:bg-gray-800"},null,8,Mu)),[[wt,k.value[g.value.columns[ee]]]]):(i(),W(be,{key:1,items:fe(J,ee,le)},{default:B(()=>[a("div",zu,[J==null?(i(),m("span",Au,"NULL")):(i(),m("span",qu,c(String(J).slice(0,200)),1))])]),_:2},1032,["items"]))],8,Tu))),128)),a("td",Lu,[b.value===le?(i(),m("div",Du,[f(me,{size:"xs",color:"primary",variant:"ghost",icon:"i-heroicons-check",onClick:Q}),f(me,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-x-mark",onClick:re})])):(i(),m("div",Eu,[f(me,{size:"xs",variant:"ghost",icon:"i-heroicons-pencil-square",onClick:J=>ae(le)},null,8,["onClick"]),f(me,{size:"xs",variant:"ghost",color:"error",icon:"i-heroicons-trash",onClick:J=>V(le)},null,8,["onClick"])]))])]))),128))])])):E("",!0)]),a("div",Bu,[a("span",Fu,c(v.value>0?t(e)("analysis.debug.tableBrowser.rowCount",{count:v.value}):""),1),x.value>1?(i(),m("div",Ru,[f(me,{size:"xs",variant:"ghost",disabled:_.value<=1,icon:"i-heroicons-chevron-left",onClick:se[3]||(se[3]=xe=>_.value--)},null,8,["disabled"]),a("span",Vu,c(t(e)("analysis.debug.tableBrowser.page",{current:_.value,total:x.value})),1),f(me,{size:"xs",variant:"ghost",disabled:_.value>=x.value,icon:"i-heroicons-chevron-right",onClick:se[4]||(se[4]=xe=>_.value++)},null,8,["disabled"])])):E("",!0)])]),_:1})])}}}),Pu={class:"flex h-full"},ju={class:"m-3 h-[calc(100%-1.5rem)] w-56 shrink-0 overflow-y-auto rounded-lg bg-white shadow-elevated dark:bg-sidebar-dark"},Nu={key:0,class:"py-2"},Uu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Wu=["title","onClick"],Hu={class:"truncate text-xs font-medium"},Ku={class:"truncate text-[10px] opacity-50"},Yu={key:1,class:"border-t border-gray-200 py-2 dark:border-gray-700"},Gu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Qu=["title","onClick"],Ju={class:"truncate text-xs font-medium"},Xu={class:"truncate text-[10px] opacity-50"},Zu={class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4"},ed={key:0,class:"rounded-lg border border-primary-200 bg-primary-50/50 px-4 py-3 dark:border-primary-800 dark:bg-primary-900/20"},td={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},ad={class:"mt-1 text-xs text-primary-600/70 dark:text-primary-400/70"},sd={key:1,class:"flex flex-col gap-3"},nd={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},od={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},ld={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},id={key:0,class:"text-red-500"},rd={key:1,class:"ml-1 text-gray-400"},ud={key:2,class:"ml-1 text-gray-400"},dd={class:"flex items-center gap-3"},cd={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},md={key:2,class:"flex-1 min-h-0"},gd={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},pd={key:0,class:"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},fd={key:0,class:"mb-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-400"},hd={class:"max-h-[60vh] overflow-auto rounded-lg border border-gray-200 bg-gray-50 p-3 text-xs leading-relaxed text-gray-800 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200"},vd=de({__name:"ToolTestTab",props:{sessionId:{}},setup(r){const{t:l}=_e(),e=r,n=z([]),s=z(""),u=z({}),o=z(!1),d=z(null),g=z(null),p=z(null),y=z(!1),_=z(null);function v(h){const C=`ai.assistant.builtinToolDesc.${h}`,O=l(C);return O!==C?O:h}const x=T(()=>n.value.filter(h=>h.category==="core")),b=T(()=>n.value.filter(h=>h.category==="analysis")),k=T(()=>n.value.find(h=>h.name===s.value)),$=T(()=>{const h=k.value;if(!h?.parameters)return[];const C=h.parameters;if(!C.properties)return[];const O=new Set(C.required??[]);return Object.entries(C.properties).map(([R,L])=>{const A={name:R,type:L.type??"string",description:L.description??"",required:O.has(R),defaultValue:L.default};if(L.enum&&(A.enumValues=L.enum),L.type==="array"){A.isArray=!0;const M=L.items;A.arrayItemType=M?.type??"string"}return A})});he(s,()=>{u.value={},g.value=null,p.value=null,_.value=null}),Be(async()=>{try{n.value=await Ye().getToolCatalog(),n.value.length>0&&(s.value=n.value[0].name)}catch(h){console.error("Failed to load tool catalog:",h)}});function w(){const h={};for(const C of $.value){const O=u.value[C.name];if(!(O===void 0||O===""))if(C.type==="number"){const R=Number(O);isNaN(R)||(h[C.name]=R)}else C.isArray?h[C.name]=O.split(",").map(R=>R.trim()).filter(Boolean):h[C.name]=O}return h}async function S(){if(!s.value||o.value)return;o.value=!0,g.value=null,p.value=null,y.value=!1,_.value=null;const h=`tool_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;d.value=h;try{const C=w(),O=await Ye().executeTool(h,s.value,C,e.sessionId);if(O.error==="cancelled")return;O.success?(_.value=O.elapsed??null,y.value=!!O.truncated,g.value=O.truncated?O.details?._preview??"":JSON.stringify(O.details??O.content,null,2)):p.value=O.error??"Unknown error"}catch(C){p.value=String(C)}finally{o.value=!1,d.value=null}}async function I(){d.value&&(await Ye().cancelToolTest(d.value),o.value=!1,d.value=null)}return(h,C)=>{const O=Ba,R=Ft,L=Ue,A=we;return i(),m("div",Pu,[a("div",ju,[x.value.length>0?(i(),m("div",Nu,[a("div",Uu,c(t(l)("ai.lab.toolTest.coreTools")),1),(i(!0),m(ue,null,ve(x.value,M=>(i(),m("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[s.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:q=>s.value=M.name},[a("span",Hu,c(v(M.name)),1),a("span",Ku,c(M.name),1)],10,Wu))),128))])):E("",!0),b.value.length>0?(i(),m("div",Yu,[a("div",Gu,c(t(l)("ai.lab.toolTest.analysisTools")),1),(i(!0),m(ue,null,ve(b.value,M=>(i(),m("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[s.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:q=>s.value=M.name},[a("span",Ju,c(v(M.name)),1),a("span",Xu,c(M.name),1)],10,Qu))),128))])):E("",!0)]),f(t(mt),{class:"my-3 mr-3 flex min-w-0 flex-1 flex-col"},{default:B(()=>[a("div",Zu,[k.value?(i(),m("div",ed,[a("div",td,c(v(k.value.name)),1),a("div",ad,c(k.value.description),1)])):E("",!0),$.value.length>0?(i(),m("div",sd,[a("h3",nd,c(t(l)("ai.lab.toolTest.parameters")),1),a("div",od,[(i(!0),m(ue,null,ve($.value,M=>(i(),m("div",{key:M.name,class:"flex flex-col gap-1"},[a("label",ld,[ie(c(M.name)+" ",1),M.required?(i(),m("span",id,"*")):E("",!0),M.type==="number"?(i(),m("span",rd,"(number)")):E("",!0),M.isArray?(i(),m("span",ud,"("+c(M.arrayItemType)+"[])",1)):E("",!0)]),M.enumValues?(i(),W(O,{key:0,modelValue:u.value[M.name],"onUpdate:modelValue":q=>u.value[M.name]=q,items:M.enumValues,placeholder:M.description,size:"sm"},null,8,["modelValue","onUpdate:modelValue","items","placeholder"])):(i(),W(R,{key:1,modelValue:u.value[M.name],"onUpdate:modelValue":q=>u.value[M.name]=q,placeholder:M.isArray?t(l)("ai.lab.toolTest.arrayPlaceholder"):M.defaultValue!==void 0?String(M.defaultValue):M.description,type:M.type==="number"?"number":"text",size:"sm"},null,8,["modelValue","onUpdate:modelValue","placeholder","type"]))]))),128))])])):E("",!0),a("div",dd,[o.value?(i(),W(L,{key:1,color:"error",icon:"i-heroicons-stop",onClick:I},{default:B(()=>[ie(c(t(l)("ai.lab.toolTest.cancel")),1)]),_:1})):(i(),W(L,{key:0,color:"primary",disabled:!s.value,icon:"i-heroicons-play",onClick:S},{default:B(()=>[ie(c(t(l)("ai.lab.toolTest.execute")),1)]),_:1},8,["disabled"])),o.value?(i(),W(A,{key:2,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-gray-400"})):E("",!0),_.value!==null?(i(),m("span",cd,c(t(l)("ai.lab.toolTest.elapsed",{ms:_.value})),1)):E("",!0)]),g.value||p.value?(i(),m("div",md,[a("h3",gd,c(t(l)("ai.lab.toolTest.result")),1),p.value?(i(),m("div",pd,c(p.value),1)):(i(),m(ue,{key:1},[y.value?(i(),m("div",fd,c(t(l)("ai.lab.toolTest.truncated")),1)):E("",!0),a("pre",hd,c(g.value),1)],64))])):E("",!0)])]),_:1})])}}}),yd={class:"flex h-full flex-col"},xd={class:"min-h-0 flex-1 overflow-hidden"},bd=de({__name:"DebugTab",props:{sessionId:{}},setup(r){const{t:l}=_e(),e=r,n=[{id:"sql-tables",label:l("analysis.debug.sqlTables"),icon:"i-heroicons-table-cells"},{id:"basic-tools",label:l("analysis.debug.basicTools"),icon:"i-heroicons-wrench-screwdriver"}],s=z("sql-tables");return(u,o)=>(i(),m("div",yd,[f(t(Sa),{modelValue:s.value,"onUpdate:modelValue":o[0]||(o[0]=d=>s.value=d),items:n,"persist-key":"debugTab"},null,8,["modelValue"]),a("div",xd,[f(ht,{name:"fade",mode:"out-in"},{default:B(()=>[s.value==="sql-tables"?(i(),W(Ou,{key:0,class:"h-full","session-id":e.sessionId},null,8,["session-id"])):s.value==="basic-tools"?(i(),W(vd,{key:1,class:"h-full","session-id":e.sessionId},null,8,["session-id"])):E("",!0)]),_:1})])]))}}),$2=nt(bd,[["__scopeId","data-v-b3b3d1a4"]]),kd=["disabled"],_d={key:0,class:"flex-1 overflow-y-auto p-2"},wd={key:0,class:"flex items-center justify-center py-8"},$d={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},Cd={class:"flex h-12 w-12 items-center justify-center rounded-full bg-gray-50 dark:bg-gray-800"},Sd={class:"mt-3 text-xs text-gray-400"},Id={key:2,class:"space-y-3"},Td={class:"px-2 pb-1 pt-1.5 text-[10px] font-medium tracking-wide text-gray-400 dark:text-gray-500"},Md={class:"space-y-0.5"},zd=["onClick"],Ad=["placeholder","onBlur","onKeyup"],qd={key:1,class:"flex items-center"},Ld={class:"line-clamp-1 min-w-0 flex-1 text-sm leading-snug"},Dd={class:"rounded p-0.5 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300"},Ed={class:"w-28 p-1"},Bd=["disabled","onClick"],Fd=["onClick"],Rd=["disabled","onClick"],Vd={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Od=["title","disabled"],Pd=["title","onClick"],jd={key:0,class:"absolute -left-2 top-1/2 h-4.5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary-500"},Nd=de({__name:"ConversationList",props:{sessionId:{},activeId:{},disabled:{type:Boolean},conversations:{},loading:{type:Boolean},embedded:{type:Boolean},collapsible:{type:Boolean}},emits:["select","create","delete","rename"],setup(r,{expose:l,emit:e}){const{t:n}=_e(),s=r,u=e,o=z([]),d=z(!1),g=z(null),p=z(""),y=z(!1),_=z(null),v=T(()=>s.conversations!==void 0),x=T(()=>s.conversations??o.value),b=T(()=>v.value?s.loading??!1:d.value),k=T(()=>s.collapsible!==!1),$=T(()=>k.value&&y.value);async function w(){if(!v.value){d.value=!0;try{o.value=await Ye().getAIChats(s.sessionId)}catch(M){console.error("加载对话列表失败:",M)}finally{d.value=!1}}}const S=T(()=>{if(x.value.length===0)return[];const M=Ee(),q=M.subtract(7,"day").startOf("day"),Y=M.subtract(30,"day").startOf("day"),G=[],ae=[],re=new Map;for(const V of x.value){const X=Ee(V.updatedAt*1e3);if(X.isAfter(q))G.push(V);else if(X.isAfter(Y))ae.push(V);else{const ce=X.format("YYYY-MM");re.has(ce)||re.set(ce,[]),re.get(ce).push(V)}}const Q=[];G.length>0&&Q.push({label:n("ai.chat.conversation.group.last7Days"),conversations:G}),ae.length>0&&Q.push({label:n("ai.chat.conversation.group.last30Days"),conversations:ae});const H=[...re.keys()].sort((V,X)=>X.localeCompare(V));for(const V of H){const X=Ee(V+"-01");Q.push({label:X.format(X.year()===M.year()?"M月":"YYYY年M月"),conversations:re.get(V)})}return Q});function I(M){return M.title||n("ai.chat.conversation.newChat")}function h(M){s.disabled||(g.value=M.id,p.value=M.title||"")}async function C(M){if(!s.disabled){if(p.value.trim()){if(v.value){u("rename",{id:M,title:p.value.trim()}),g.value=null;return}try{await Ye().updateAIChatTitle(M,p.value.trim());const q=o.value.find(Y=>Y.id===M);q&&(q.title=p.value.trim())}catch(q){console.error("更新标题失败:",q)}}g.value=null}}function O(M){_.value=null,h(M)}function R(M){_.value=null,navigator.clipboard.writeText(M)}function L(M){_.value=null,A(M)}async function A(M){if(!s.disabled){if(v.value){u("delete",M);return}try{await Ye().deleteAIChat(M),o.value=o.value.filter(q=>q.id!==M),u("delete",M)}catch(q){console.error("删除对话失败:",q)}}}return Be(()=>{w()}),he(()=>s.sessionId,()=>{w()}),l({refresh:w}),(M,q)=>{const Y=we,G=Ue,ae=rs;return i(),m("div",{class:Z(["flex shrink-0 flex-col overflow-hidden bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",[s.embedded?"h-full":"m-3 h-[calc(100%-1.5rem)] rounded-lg",$.value?"w-14":"w-64"]])},[a("div",{class:Z(["flex items-center",$.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[$.value?(i(),m("button",{key:1,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:q[2]||(q[2]=re=>y.value=!y.value)},[f(Y,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(i(),m(ue,{key:0},[a("button",{class:Z(["flex items-center gap-1.5 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":r.disabled}]),disabled:r.disabled,onClick:q[0]||(q[0]=re=>!r.disabled&&u("create"))},[f(Y,{name:"i-heroicons-plus",class:"h-3.5 w-3.5"}),a("span",null,c(t(n)("ai.chat.conversation.newConversation")),1)],10,kd),k.value?(i(),W(G,{key:0,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:q[1]||(q[1]=re=>y.value=!y.value)},{default:B(()=>[f(Y,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),f(Y,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1})):E("",!0)],64))],2),$.value?(i(),m("div",Vd,[a("button",{class:Z(["flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",{"cursor-not-allowed opacity-50":r.disabled}]),title:t(n)("ai.chat.conversation.newConversation"),disabled:r.disabled,onClick:q[7]||(q[7]=re=>!r.disabled&&u("create"))},[f(Y,{name:"i-heroicons-plus",class:"h-5 w-5"})],10,Od),(i(!0),m(ue,null,ve(x.value,re=>(i(),m("button",{key:re.id,class:Z(["relative mx-auto flex h-10 w-10 items-center justify-center rounded-lg transition-all duration-200",[r.activeId===re.id?"bg-gray-200/50 text-primary-600 dark:bg-white/[0.07] dark:text-primary-400 dark:ring-1 dark:ring-white/10":"text-gray-600 hover:bg-gray-200/40 dark:text-gray-300 dark:hover:bg-white/[0.06]"]]),title:I(re),onClick:Q=>u("select",re.id)},[r.activeId===re.id?(i(),m("span",jd)):E("",!0),f(Y,{name:"i-heroicons-chat-bubble-left",class:"h-5 w-5"})],10,Pd))),128))])):(i(),m("div",_d,[b.value?(i(),m("div",wd,[f(Y,{name:"i-heroicons-arrow-path",class:"h-5 w-5 animate-spin text-gray-400"})])):x.value.length===0?(i(),m("div",$d,[a("div",Cd,[f(Y,{name:"i-heroicons-chat-bubble-left",class:"h-6 w-6 text-gray-300 dark:text-gray-600"})]),a("p",Sd,c(t(n)("ai.chat.conversation.empty")),1),f(G,{class:"mt-2",size:"xs",variant:"link",color:"primary",disabled:r.disabled,onClick:q[3]||(q[3]=re=>!r.disabled&&u("create"))},{default:B(()=>[ie(c(t(n)("ai.chat.conversation.startNew")),1)]),_:1},8,["disabled"])])):(i(),m("div",Id,[(i(!0),m(ue,null,ve(S.value,re=>(i(),m("div",{key:re.label},[a("div",Td,c(re.label),1),a("div",Md,[(i(!0),m(ue,null,ve(re.conversations,Q=>(i(),m("div",{key:Q.id,class:Z(["group relative rounded-lg px-3 py-2 transition-all",["cursor-pointer",r.activeId===Q.id?"bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-white":"text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-gray-800/50"]]),onClick:H=>u("select",Q.id)},[g.value===Q.id?Je((i(),m("input",{key:0,"onUpdate:modelValue":q[4]||(q[4]=H=>p.value=H),class:"w-full rounded border-none bg-white px-2 py-1 text-sm shadow-sm outline-none ring-1 ring-gray-200 focus:ring-2 focus:ring-primary-500 dark:bg-page-dark dark:ring-gray-700",placeholder:t(n)("ai.chat.conversation.titlePlaceholder"),autoFocus:"",onBlur:H=>C(Q.id),onKeyup:Ge(H=>C(Q.id),["enter"]),onClick:q[5]||(q[5]=Oe(()=>{},["stop"]))},null,40,Ad)),[[wt,p.value]]):(i(),m("div",qd,[a("p",Ld,c(I(Q)),1),a("div",{class:Z(["ml-1 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",{"opacity-100":r.activeId===Q.id||_.value===Q.id}]),onClick:q[6]||(q[6]=Oe(()=>{},["stop"]))},[f(ae,{open:_.value===Q.id,ui:{content:"z-50 p-0"},"onUpdate:open":H=>_.value=H?Q.id:null},{content:B(()=>[a("div",Ed,[a("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",disabled:r.disabled,onClick:H=>O(Q)},[f(Y,{name:"i-heroicons-pencil",class:"h-3.5 w-3.5"}),ie(" "+c(t(n)("ai.chat.conversation.rename")),1)],8,Bd),a("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:H=>R(Q.id)},[f(Y,{name:"i-heroicons-clipboard-document",class:"h-3.5 w-3.5"}),ie(" "+c(t(n)("ai.chat.conversation.copyId")),1)],8,Fd),a("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-red-500 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30",disabled:r.disabled,onClick:H=>L(Q.id)},[f(Y,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"}),ie(" "+c(t(n)("ai.chat.conversation.delete")),1)],8,Rd)])]),default:B(()=>[a("button",Dd,[f(Y,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4"})])]),_:2},1032,["open","onUpdate:open"])],2)]))],10,zd))),128))])]))),128))]))]))],2)}}}),Ud={class:"writing-vertical text-xs"},Wd={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},Hd={class:"flex items-center gap-2"},Kd={class:"font-medium text-gray-900 dark:text-white"},Yd={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},Gd={class:"flex flex-wrap items-center gap-2"},Qd={class:"text-xs text-gray-500"},Jd={class:"flex-1 overflow-y-auto"},Xd={key:0,class:"flex items-center justify-center py-8"},Zd={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},ec={class:"mt-2 text-sm text-gray-500"},tc={class:"text-xs text-gray-400"},ac={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},sc={class:"mb-1 flex items-center justify-between"},nc={class:"text-sm font-medium text-gray-900 dark:text-white"},oc={class:"text-xs text-gray-400"},lc=["innerHTML"],ic={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},rc={class:"flex items-center justify-between"},uc={class:"text-xs text-gray-500"},dc={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},cc=de({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle","loadMore"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l;function u(d){return Ee(d).format("MM-DD HH:mm")}function o(d){if(!n.keywords.length)return d;const g=n.keywords.join("|"),p=new RegExp(`(${g})`,"gi");return d.replace(p,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(d,g)=>{const p=we,y=Ue;return i(),m("div",{class:Z(["relative flex flex-col rounded-xl bg-white transition-all duration-300 dark:bg-page-dark",[r.isCollapsed?"w-12":"w-full"]])},[r.isCollapsed?(i(),m("button",{key:0,class:"flex h-full flex-col items-center justify-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",onClick:g[0]||(g[0]=_=>s("toggle"))},[f(p,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),a("span",Ud,c(t(e)("ai.chat.dataSource.title")),1)])):(i(),m(ue,{key:1},[a("div",Wd,[a("div",Hd,[f(p,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),a("span",Kd,c(t(e)("ai.chat.dataSource.title")),1)]),f(y,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:g[1]||(g[1]=_=>s("toggle"))})]),r.keywords.length>0?(i(),m("div",Yd,[a("div",Gd,[a("span",Qd,c(t(e)("ai.chat.dataSource.keywords")),1),(i(!0),m(ue,null,ve(r.keywords,_=>(i(),m("span",{key:_,class:"rounded-full bg-violet-100 px-2 py-0.5 text-xs text-violet-700 dark:bg-violet-900/30 dark:text-violet-400"},c(_),1))),128))])])):E("",!0),a("div",Jd,[r.isLoading?(i(),m("div",Xd,[f(p,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):r.messages.length===0?(i(),m("div",Zd,[f(p,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),a("p",ec,c(t(e)("ai.chat.dataSource.empty")),1),a("p",tc,c(t(e)("ai.chat.dataSource.emptyHint")),1)])):(i(),m("div",ac,[(i(!0),m(ue,null,ve(r.messages,_=>(i(),m("div",{key:_.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("div",sc,[a("span",nc,c(_.senderName),1),a("span",oc,c(u(_.timestamp)),1)]),a("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:o(_.content)},null,8,lc)]))),128))]))]),r.messages.length>0?(i(),m("div",ic,[a("div",rc,[a("span",uc,c(t(e)("ai.chat.dataSource.totalRecords",{count:r.messages.length})),1),f(y,{size:"xs",variant:"ghost",onClick:g[2]||(g[2]=_=>s("loadMore"))},{default:B(()=>[ie(c(t(e)("ai.chat.dataSource.loadMore")),1)]),_:1})])])):E("",!0)],64)),r.isCollapsed?E("",!0):(i(),m("div",dc,[...g[3]||(g[3]=[a("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),mc=nt(cc,[["__scopeId","data-v-a9962add"]]),gc={class:"flex max-h-[80vh] flex-col overflow-hidden"},pc={class:"shrink-0 border-b border-gray-200 px-6 py-4 dark:border-gray-800"},fc={class:"flex items-center justify-between"},hc={class:"flex items-center gap-3"},vc={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-red-100 dark:bg-red-900/40"},yc={class:"text-lg font-semibold text-gray-900 dark:text-white"},xc={class:"flex-1 overflow-y-auto px-6 py-4"},bc={class:"flex flex-col gap-4"},kc={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},_c={key:0,class:"rounded-md border border-red-200 bg-red-50/50 p-3 dark:border-red-900/40 dark:bg-red-950/20"},wc={class:"m-0 whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-red-600 dark:text-red-400"},$c={key:1,class:"rounded-md border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},Cc={class:"m-0 max-h-[300px] overflow-auto whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-gray-700 dark:text-gray-300"},Sc={key:2,class:"select-text break-words rounded-md border border-gray-200 bg-gray-50 px-3 py-2 font-mono text-xs text-gray-700 dark:border-gray-700 dark:bg-page-dark dark:text-gray-300"},Ic={key:0,class:"py-8 text-center text-sm text-gray-400 dark:text-gray-500"},Tc={class:"shrink-0 border-t border-gray-200 px-6 py-3 dark:border-gray-800"},Mc={class:"flex justify-end"},zc=de({__name:"ErrorDetailModal",props:qt({error:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:["update:open"],setup(r){const{t:l}=_e(),e=ot(),n=Ht(r,"open"),s=r,u=T(()=>{const g=s.error,p=[];return g.url&&p.push({label:l("ai.chat.error.requestUrl"),value:g.url}),g.statusCode!=null&&p.push({label:l("ai.chat.error.statusCode"),value:String(g.statusCode)}),g.responseBody&&p.push({label:l("ai.chat.error.responseBody"),value:o(g.responseBody),isCode:!0}),g.responseHeaders&&p.push({label:l("ai.chat.error.responseHeaders"),value:JSON.stringify(g.responseHeaders,null,2),isCode:!0}),g.name&&p.push({label:l("ai.chat.error.name"),value:g.name}),g.message&&p.push({label:l("ai.chat.error.message"),value:g.message}),g.stack&&p.push({label:l("ai.chat.error.stack"),value:g.stack,isStack:!0}),g.cause&&p.push({label:l("ai.chat.error.cause"),value:o(g.cause),isCode:!0}),g.provider&&p.push({label:l("ai.chat.error.provider"),value:g.provider}),g.requestBody&&p.push({label:l("ai.chat.error.requestBody"),value:o(g.requestBody),isCode:!0}),p});function o(g){try{return JSON.stringify(JSON.parse(g),null,2)}catch{return g}}function d(){const g=u.value.map(p=>`${p.label}: ${p.value}`).join(`
69
-
70
- `);navigator.clipboard.writeText(g).then(()=>{e.success(l("ai.chat.error.copied"))})}return(g,p)=>{const y=we,_=Ue,v=Xe;return i(),W(v,{open:n.value,"onUpdate:open":p[1]||(p[1]=x=>n.value=x),ui:{content:"sm:max-w-[700px] z-[100]",overlay:"backdrop-blur-sm z-[99]"}},{content:B(()=>[a("div",gc,[a("div",pc,[a("div",fc,[a("div",hc,[a("div",vc,[f(y,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4 text-red-600 dark:text-red-400"})]),a("h2",yc,c(t(l)("ai.chat.error.detail")),1)]),f(_,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:p[0]||(p[0]=x=>n.value=!1)})])]),a("div",xc,[a("div",bc,[(i(!0),m(ue,null,ve(u.value,(x,b)=>(i(),m("div",{key:b,class:"flex flex-col gap-1.5"},[a("div",kc,c(x.label),1),x.isStack?(i(),m("div",_c,[a("pre",wc,c(x.value),1)])):x.isCode?(i(),m("div",$c,[a("pre",Cc,c(x.value),1)])):(i(),m("div",Sc,c(x.value),1))]))),128)),u.value.length===0?(i(),m("div",Ic,c(t(l)("ai.chat.error.unknown")),1)):E("",!0)])]),a("div",Tc,[a("div",Mc,[f(_,{icon:"i-heroicons-document-duplicate",variant:"soft",color:"neutral",size:"sm",onClick:d},{default:B(()=>[ie(c(t(l)("ai.chat.error.copyAll")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ac={class:"mb-1.5 flex items-center gap-2"},qc={class:"flex shrink-0 items-center justify-center text-red-500 dark:text-red-400"},Lc={class:"pr-5 text-[13px] font-semibold leading-[1.4] text-red-600 dark:text-red-400"},Dc={class:"ml-6 line-clamp-3 break-words text-xs leading-normal text-gray-600 dark:text-gray-400"},Ec={class:"mt-2.5 ml-6 flex items-center"},Bc={class:"ml-auto inline-flex items-center gap-0.5 text-xs text-gray-400 transition-colors duration-150 group-hover:text-red-500 dark:text-gray-500 dark:group-hover:text-red-400"},Fc=de({__name:"ErrorBlock",props:{error:{}},setup(r){const{t:l}=_e(),e=z(!1);function n(s){return s.friendlyMessage||s.message||l("ai.chat.error.unknown")}return(s,u)=>{const o=we;return i(),m(ue,null,[a("div",{class:"group relative my-2 w-full min-w-[320px] cursor-pointer rounded-lg border border-red-200 bg-red-50/60 px-3.5 py-3 text-[13px] transition-all duration-200 hover:border-red-300 hover:bg-red-50 dark:border-red-900/30 dark:bg-red-950/20 dark:hover:border-red-800/50 dark:hover:bg-red-950/30",onClick:u[0]||(u[0]=d=>e.value=!0)},[a("div",Ac,[a("div",qc,[f(o,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4"})]),a("div",Lc,c(t(l)("ai.chat.error.title")),1)]),a("div",Dc,c(n(r.error)),1),a("div",Ec,[a("div",Bc,[ie(c(t(l)("ai.chat.error.viewDetail"))+" ",1),f(o,{name:"i-heroicons-chevron-right",class:"h-3.5 w-3.5"})])])]),f(zc,{open:e.value,"onUpdate:open":u[1]||(u[1]=d=>e.value=d),error:r.error},null,8,["open","error"])],64)}}}),va=de({__name:"EChartHeatmap",props:{data:{},height:{default:280},mode:{default:"expanded"},minColor:{default:"#fee5e8"},maxColor:{default:"#ee4567"}},setup(r){const l=r,e=T(()=>{let s=0;for(const[,,u]of l.data.data)u>s&&(s=u);return s||1}),n=T(()=>{const s=l.mode==="compact",u=l.data.xLabels.length,o=l.data.yLabels.length;return{tooltip:{position:"top",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",formatter:d=>{const g=l.data.xLabels[d.data[0]],p=l.data.yLabels[d.data[1]],y=d.data[2];return`${p} ${g}<br/>消息数: <strong>${y}</strong>`},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:s?52:72,right:20,top:s?12:24,bottom:s?52:70,outerBoundsMode:"same"},xAxis:{type:"category",data:l.data.xLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:s?10:11,color:"#6b7280",interval:s&&u>16?"auto":0,hideOverlap:!0}},yAxis:{type:"category",data:l.data.yLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:s?10:11,color:"#6b7280",interval:s&&o>14?"auto":0,hideOverlap:!0}},visualMap:{min:0,max:e.value,calculable:!0,orient:"horizontal",left:"center",bottom:0,itemWidth:s?8:10,itemHeight:s?84:120,inRange:{color:[l.minColor,l.maxColor]},textStyle:{color:"#6b7280",fontSize:11}},series:[{type:"heatmap",data:l.data.data,label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]}});return(s,u)=>(i(),W(Aa,{option:n.value,height:r.height},null,8,["option","height"]))}}),ya=de({__name:"EChartPie",props:{data:{},height:{default:280},mode:{default:"expanded"},doughnut:{type:Boolean,default:!0},innerRadius:{default:"50%"},showLegend:{type:Boolean,default:!0}},setup(r){const l=r,e=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"],n=T(()=>{const s=l.data.labels.map((v,x)=>({name:v,value:l.data.values[x]})),u=l.data.labels.length,o=l.mode==="compact",d=u>(o?8:14),g=u>(o?6:12),p=o?{type:g?"scroll":"plain",orient:"horizontal",left:8,right:8,bottom:0,height:28,textStyle:{fontSize:11,overflow:"truncate",width:72}}:{type:g?"scroll":"plain",orient:"vertical",right:10,top:24,bottom:24,textStyle:{fontSize:12,overflow:"truncate",width:120}},y=!o&&!d,_=l.showLegend&&!y;return{color:e,tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:_?p:void 0,series:[{type:"pie",radius:l.doughnut?[l.innerRadius,o?"58%":"68%"]:o?"58%":"68%",center:_?o?["50%","42%"]:["38%","50%"]:["50%",o?"46%":"50%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:4,borderColor:"#fff",borderWidth:2},label:{show:y,formatter:"{b}",overflow:"truncate",width:110,alignTo:"edge",edgeDistance:12},emphasis:{label:{show:y,fontSize:14,fontWeight:"bold",overflow:"truncate",width:140},itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}},data:s}]}});return(s,u)=>(i(),W(Aa,{option:n.value,height:r.height},null,8,["option","height"]))}}),Rc={class:"my-2 w-full overflow-hidden rounded-lg border border-gray-200 bg-white/80 dark:border-gray-700/70 dark:bg-page-dark/70"},Vc={class:"border-b border-gray-100 px-3 py-2 dark:border-gray-800"},Oc={class:"flex min-w-0 items-start justify-between gap-3"},Pc={class:"min-w-0"},jc={class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100"},Nc={key:0,class:"mt-0.5 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},Uc={class:"flex shrink-0 items-center gap-1.5"},Wc={class:"rounded-md bg-gray-100 px-1.5 py-0.5 text-[10px] uppercase text-gray-500 dark:bg-gray-800"},Hc={class:"flex max-h-[92vh] flex-col overflow-hidden bg-white dark:bg-page-dark"},Kc={class:"flex items-start justify-between gap-4 border-b border-gray-200 px-5 py-4 dark:border-gray-800"},Yc={class:"min-w-0"},Gc={class:"truncate text-base font-semibold text-gray-900 dark:text-gray-100"},Qc={key:0,class:"mt-1 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},Jc={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},Xc={class:"min-h-0 flex-1 overflow-auto p-4"},Zc={key:0,class:"flex h-64 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},em={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},tm={class:"px-2 py-3"},am={key:0,class:"flex h-32 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},sm=de({__name:"ChartBlockRenderer",props:{chart:{}},setup(r){const{t:l}=_e(),e=r,n=z(!1),s=T(()=>e.chart.spec.title),u=T(()=>e.chart.spec.subtitle||e.chart.spec.description||""),o=T(()=>e.chart.spec.display?.height??(e.chart.spec.type==="heatmap"?300:260)),d=T(()=>e.chart.rowCount===0),g=T(()=>{const w=[];return e.chart.spec.unit&&w.push(e.chart.spec.unit),e.chart.truncated&&w.push(l("ai.chat.message.chart.truncated")),w.push(l("ai.chat.message.chart.rows",{count:e.chart.rowCount})),w.join(" · ")}),p=T(()=>e.chart.data),y=T(()=>e.chart.data),_=T(()=>e.chart.data),v=T(()=>e.chart.data),x=T(()=>e.chart.spec.type==="pie"?_.value.labels.length>8:e.chart.spec.type==="line"?y.value.labels.length>28||(y.value.series?.length??0)>4:e.chart.spec.type==="bar"?p.value.labels.length>12:e.chart.spec.type==="heatmap"?v.value.xLabels.length*v.value.yLabels.length>180:!1),b=T(()=>{const w=x.value?320:380;return Math.min(o.value,w)}),k=T(()=>{const w=o.value;if(e.chart.spec.type==="pie")return Math.max(w,560);if(e.chart.spec.type==="line")return Math.max(w,y.value.labels.length>40?620:540);if(e.chart.spec.type==="bar"){const S=e.chart.spec.display?.horizontal?p.value.labels.length*28+120:520;return Math.min(Math.max(w,S),820)}return e.chart.spec.type==="heatmap"?Math.min(Math.max(w,v.value.yLabels.length*22+150,560),860):Math.max(w,520)}),$=T(()=>e.chart.spec.type==="pie"?"640px":e.chart.spec.type==="bar"?"720px":"780px");return(w,S)=>{const I=Ue,h=Xe;return i(),m("div",Rc,[a("div",Vc,[a("div",Oc,[a("div",Pc,[a("h3",jc,c(s.value),1),u.value?(i(),m("p",Nc,c(u.value),1)):E("",!0)]),a("div",Uc,[a("span",Wc,c(r.chart.spec.type),1),f(h,{open:n.value,"onUpdate:open":S[2]||(S[2]=C=>n.value=C),ui:{overlay:"z-[10040] backdrop-blur-sm",content:"z-[10050] w-[96vw] max-w-6xl max-h-[92vh] overflow-hidden"}},{content:B(()=>[a("div",Hc,[a("div",Kc,[a("div",Yc,[a("h3",Gc,c(s.value),1),u.value?(i(),m("p",Qc,c(u.value),1)):E("",!0),a("p",Jc,c(g.value),1)]),f(I,{icon:"i-heroicons-x-mark",size:"sm",color:"neutral",variant:"ghost",class:"shrink-0",title:t(l)("common.close"),"aria-label":t(l)("common.close"),onClick:S[1]||(S[1]=C=>n.value=!1)},null,8,["title","aria-label"])]),a("div",Xc,[a("div",{class:"mx-auto w-full",style:et({minWidth:$.value})},[d.value?(i(),m("div",Zc,c(t(l)("ai.chat.message.chart.empty")),1)):r.chart.spec.type==="bar"?(i(),W(rt,{key:1,data:p.value,height:k.value,mode:"expanded",horizontal:r.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):r.chart.spec.type==="line"?(i(),W(ga,{key:2,data:y.value,height:k.value,mode:"expanded"},null,8,["data","height"])):r.chart.spec.type==="pie"?(i(),W(ya,{key:3,data:_.value,height:k.value,mode:"expanded","show-legend":r.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):r.chart.spec.type==="heatmap"?(i(),W(va,{key:4,data:v.value,height:k.value,mode:"expanded"},null,8,["data","height"])):E("",!0)],4)])])]),default:B(()=>[f(I,{icon:"i-heroicons-arrows-pointing-out",size:"xs",color:"neutral",variant:"ghost",class:"no-capture",title:t(l)("ai.chat.message.chart.expand"),"aria-label":t(l)("ai.chat.message.chart.expand"),onClick:S[0]||(S[0]=Oe(()=>{},["stop"]))},null,8,["title","aria-label"])]),_:1},8,["open"])])]),a("p",em,c(g.value),1)]),a("div",tm,[d.value?(i(),m("div",am,c(t(l)("ai.chat.message.chart.empty")),1)):r.chart.spec.type==="bar"?(i(),W(rt,{key:1,data:p.value,height:b.value,mode:"compact",horizontal:r.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):r.chart.spec.type==="line"?(i(),W(ga,{key:2,data:y.value,height:b.value,mode:"compact"},null,8,["data","height"])):r.chart.spec.type==="pie"?(i(),W(ya,{key:3,data:_.value,height:b.value,mode:"compact","show-legend":r.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):r.chart.spec.type==="heatmap"?(i(),W(va,{key:4,data:v.value,height:b.value,mode:"compact"},null,8,["data","height"])):E("",!0)])])}}}),nm={class:"my-1.5 w-full overflow-hidden rounded-lg border border-gray-200 bg-gray-50/60 text-[13px] dark:border-gray-700/60 dark:bg-gray-800/30"},om={class:"text-xs font-semibold text-gray-700 dark:text-gray-200"},lm={key:0,class:"flex min-w-0 items-center gap-2"},im={key:0,class:"truncate text-[11px] text-gray-400 dark:text-gray-500"},rm={class:"ml-auto flex shrink-0 items-center gap-1.5"},um={class:"text-[11px] text-gray-400 dark:text-gray-500"},dm={key:0,class:"border-t border-gray-200/70 px-3 py-2 dark:border-gray-700/50"},cm={class:"mb-2 space-y-0.5 text-xs text-gray-600 dark:text-gray-400"},mm={class:"font-medium"},gm={key:0},pm={class:"font-medium"},fm={key:0,class:"mb-2 space-y-1"},hm={key:1,class:"py-1.5 text-center text-xs text-gray-400 dark:text-gray-500"},vm={key:2,class:"space-y-2"},ym={class:"flex items-center gap-2"},xm={class:"ml-auto shrink-0 text-[11px] text-gray-400 dark:text-gray-500"},bm={key:0,class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},km={class:"mt-1 space-y-0.5"},_m=["onClick"],wm={class:"min-w-0 flex-1 text-xs leading-snug text-gray-600 dark:text-gray-300"},$m={key:0,class:"mr-1 text-gray-400 dark:text-gray-500"},Cm={class:"line-clamp-2 break-words align-middle"},Sm={key:3,class:"mt-1.5 text-right text-[11px] text-gray-400 dark:text-gray-500"},Im=de({__name:"EvidenceBlock",props:{evidence:{}},setup(r){const l=r,{t:e}=_e(),n=xt(),s=z(!1),u=["included","uncertain","excluded"],o=T(()=>[...l.evidence.groups].sort((x,b)=>u.indexOf(x.status)-u.indexOf(b.status))),d=T(()=>l.evidence.groups.reduce((x,b)=>x+b.sources.length,0)),g=T(()=>u.map(x=>({status:x,count:l.evidence.groups.filter(b=>b.status===x).length})).filter(x=>x.count>0)),p=T(()=>l.evidence.warnings??[]),y={included:"bg-emerald-50 text-emerald-600 dark:bg-emerald-900/20 dark:text-emerald-400",uncertain:"bg-amber-50 text-amber-600 dark:bg-amber-900/20 dark:text-amber-400",excluded:"bg-gray-100 text-gray-500 dark:bg-gray-800/40 dark:text-gray-400"},_={included:"bg-emerald-500",uncertain:"bg-amber-500",excluded:"bg-gray-400"};function v(x){n.openChatRecordDrawer({scrollToMessageId:x})}return(x,b)=>{const k=we;return i(),m("div",nm,[a("button",{type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-gray-100/60 dark:hover:bg-gray-800/40",onClick:b[0]||(b[0]=$=>s.value=!s.value)},[f(k,{name:"i-heroicons-document-magnifying-glass",class:"h-4 w-4 shrink-0 text-primary-500"}),a("span",om,c(t(e)("ai.chat.evidence.title")),1),s.value?E("",!0):(i(),m("div",lm,[(i(!0),m(ue,null,ve(g.value,$=>(i(),m("span",{key:$.status,class:"flex shrink-0 items-center gap-1 text-[11px] text-gray-500 dark:text-gray-400"},[a("span",{class:Z(["h-1.5 w-1.5 rounded-full",_[$.status]])},null,2),ie(" "+c(t(e)(`ai.chat.evidence.group.${$.status}`))+" "+c($.count),1)]))),128)),g.value.length===0?(i(),m("span",im,c(t(e)("ai.chat.evidence.empty")),1)):E("",!0)])),a("span",rm,[a("span",um,c(t(e)(`ai.chat.evidence.mode.${r.evidence.mode}`)),1),f(k,{name:s.value?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3.5 w-3.5 text-gray-400 dark:text-gray-500"},null,8,["name"])])]),s.value?(i(),m("div",dm,[a("div",cm,[a("div",null,[a("span",mm,c(t(e)("ai.chat.evidence.query"))+":",1),ie(" "+c(r.evidence.query),1)]),r.evidence.criteria?(i(),m("div",gm,[a("span",pm,c(t(e)("ai.chat.evidence.criteria"))+":",1),ie(" "+c(r.evidence.criteria),1)])):E("",!0)]),p.value.length>0?(i(),m("div",fm,[(i(!0),m(ue,null,ve(p.value,$=>(i(),m("div",{key:$,class:"flex items-start gap-1.5 rounded bg-amber-50/70 px-2 py-1 text-[11px] text-amber-600 dark:bg-amber-900/15 dark:text-amber-400"},[f(k,{name:"i-heroicons-exclamation-triangle",class:"mt-0.5 h-3 w-3 shrink-0"}),a("span",null,c(t(e)(`ai.chat.evidence.warning.${$}`)),1)]))),128))])):E("",!0),o.value.length===0?(i(),m("div",hm,c(t(e)("ai.chat.evidence.empty")),1)):(i(),m("div",vm,[(i(!0),m(ue,null,ve(o.value,$=>(i(),m("div",{key:$.id,class:"rounded-md border border-gray-200/80 bg-white px-2.5 py-1.5 dark:border-gray-700/50 dark:bg-page-dark/30"},[a("div",ym,[a("span",{class:Z(["rounded px-1.5 py-0.5 text-[11px] font-medium",y[$.status]])},c(t(e)(`ai.chat.evidence.group.${$.status}`)),3),a("span",xm,c($.title),1)]),$.reason?(i(),m("div",bm,c($.reason),1)):E("",!0),a("ul",km,[(i(!0),m(ue,null,ve($.sources,(w,S)=>(i(),m("li",{key:`${$.id}-${S}`,class:"group/source flex cursor-pointer items-start gap-1.5 rounded px-1.5 py-1 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/40",onClick:I=>v(w.messageId)},[a("div",wm,[w.senderName?(i(),m("span",$m,c(w.senderName)+": ",1)):E("",!0),a("span",Cm,c(w.snippet),1)]),f(k,{name:"i-heroicons-arrow-top-right-on-square",class:"mt-0.5 h-3 w-3 shrink-0 text-gray-400 opacity-0 transition-opacity group-hover/source:opacity-100 dark:text-gray-500"})],8,_m))),128))])]))),128))])),o.value.length>0?(i(),m("div",Sm,c(t(e)("ai.chat.evidence.totalSources",{count:d.value})),1)):E("",!0)])):E("",!0)])}}}),Tm=/^\s*!\[[^\]\n]*\]\(\s*(?:(?:https?:\/\/(?:localhost|127\.0\.0\.1)(?::\d+)?)?\/?|\.\/)?chart[\w-]*(?:\.(?:png|jpg|jpeg|webp|svg))?(?:\?[^)\s]*)?\s*(?:"[^"]*")?\s*\)\s*$/gim;function Mm(r){return r&&r.replace(Tm,"").replace(/\n{3,}/g,`
71
-
72
- `).replace(/^\n+|\n+$/g,"")}function zm(r,l,e){for(let n=l+1;n<r.length;n+=1)if(e(r[n]))return!0;return!1}function Am(r,l){const e=[];return r.forEach((n,s)=>{if(!(l.isFoldableProcessBlock(n)||l.isTextBlock(n)&&zm(r,s,l.isFoldableProcessBlock))){e.push({type:"visible",block:n});return}const o=e[e.length-1];o?.type==="process"?o.blocks.push(n):e.push({type:"process",blocks:[n]})}),e}function qm(r){return r.flatMap(l=>l.type==="visible"?[l.block]:[])}function Lm(r,l){const e=Math.max(0,Math.round(r/1e3));if(l.startsWith("zh")||l.startsWith("ja")){if(e<60)return`${e}秒`;if(e<3600){const p=Math.floor(e/60),y=e%60;return`${p}分${y.toString().padStart(2,"0")}秒`}const o=Math.floor(e/3600),d=Math.floor(e%3600/60),g=e%60;return`${o}时${d.toString().padStart(2,"0")}分${g.toString().padStart(2,"0")}秒`}if(e<60)return`${e}s`;if(e<3600){const o=Math.floor(e/60),d=e%60;return`${o}m ${d.toString().padStart(2,"0")}s`}const n=Math.floor(e/3600),s=Math.floor(e%3600/60),u=e%60;return`${n}h ${s.toString().padStart(2,"0")}m ${u.toString().padStart(2,"0")}s`}function Dm(r,l){return r.type!=="process"?0:r.blocks.reduce((e,n)=>e+(l(n)??0),0)}function Em(r,l){if(l.isProcessing)return l.labels.processing;const e=Dm(r,l.getBlockDurationMs),n=e>0?` ${Lm(e,l.locale)}`:"";return`${l.labels.processed}${n}`}const Bm={key:0,class:"w-full rounded-lg border border-gray-200 bg-gray-50/80 dark:border-gray-700/50 dark:bg-gray-800/40"},Fm={class:"flex cursor-pointer select-none items-center gap-2 px-3 py-2 text-xs font-medium text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"},Rm={class:"border-t border-gray-200/60 px-3 py-2.5 dark:border-gray-700/40"},Vm=["innerHTML"],Om={class:"mt-2 text-[11px] text-gray-400 dark:text-gray-500"},Pm={key:0,class:"rounded-2xl bg-gray-100 p-4 text-gray-900 dark:bg-gray-800 dark:text-gray-100"},jm=["onKeydown"],Nm={class:"mt-2 flex items-center justify-between"},Um={class:"flex cursor-pointer items-center gap-1.5 text-xs text-gray-500 dark:text-gray-400"},Wm={class:"flex gap-2"},Hm={key:1,class:"rounded-3xl bg-gray-100 px-5 py-3 text-gray-900 dark:bg-gray-800 dark:text-gray-100"},Km=["innerHTML"],Ym={key:2,class:"space-y-2"},Gm=["aria-expanded","onClick"],Qm={class:"truncate"},Jm={key:0,class:"py-1 text-gray-900 dark:text-gray-100"},Xm=["innerHTML"],Zm={key:0,class:"ml-1 inline-block h-4 w-1.5 animate-pulse rounded-sm bg-gray-800 dark:bg-gray-200"},eg={key:1,class:"mb-2 border-l-2 border-gray-200 pl-4 py-1 text-sm text-gray-500 dark:border-gray-700 dark:text-gray-400"},tg={class:"cursor-pointer select-none text-xs font-medium transition-colors hover:text-gray-700 dark:hover:text-gray-300"},ag={key:0,class:"ml-2 text-xs text-gray-400 dark:text-gray-500"},sg={key:1,class:"ml-2 inline-flex items-center gap-1 text-[11px] text-gray-400 dark:text-gray-500"},ng={class:"mt-2 prose prose-sm dark:prose-invert max-w-none leading-relaxed text-xs"},og={key:0,class:"mb-2 font-medium text-gray-700 dark:text-gray-200"},lg={class:"not-prose space-y-2 text-xs leading-relaxed"},ig={class:"font-medium text-gray-800 dark:text-gray-200"},rg={key:0,class:"mt-1 text-gray-500 dark:text-gray-400"},ug={class:"mt-0.5 text-gray-500 dark:text-gray-400"},dg={key:1,class:"not-prose mt-2 border-t border-gray-100 pt-2 dark:border-gray-800"},cg={class:"text-[11px] font-medium text-gray-500 dark:text-gray-400"},mg={class:"mt-1 list-disc space-y-0.5 pl-4 text-xs leading-relaxed text-gray-600 dark:text-gray-300"},gg=["innerHTML"],pg={key:2,class:"inline-flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 text-xs font-medium text-gray-600 dark:bg-gray-800/50 dark:text-gray-400"},fg={key:3,open:"",class:"mb-2 border-l-2 border-gray-200 py-1 pl-4 text-sm text-gray-600 dark:border-gray-700 dark:text-gray-400"},hg={class:"flex cursor-pointer select-none items-center gap-2 text-xs font-medium text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"},vg={class:"min-w-0 truncate"},yg={class:"mt-2"},xg=["innerHTML"],bg={key:1,class:"space-y-2"},kg={class:"font-medium text-gray-800 dark:text-gray-200"},_g={class:"mt-1 text-gray-500 dark:text-gray-400"},wg={class:"mt-0.5 text-gray-500 dark:text-gray-400"},$g={key:2,class:"mt-2 border-t border-gray-100 pt-2 dark:border-gray-800"},Cg={class:"text-[11px] font-medium text-gray-500 dark:text-gray-400"},Sg={class:"mt-1 list-disc space-y-0.5 pl-4 text-xs leading-relaxed text-gray-600 dark:text-gray-300"},Ig={key:4,class:"mb-2 border-l-2 border-gray-200 py-1 pl-4 text-sm text-gray-600 dark:border-gray-700 dark:text-gray-400"},Tg={class:"flex items-center gap-2 text-xs font-medium text-gray-500 dark:text-gray-400"},Mg={key:0,class:"inline-flex items-center gap-1 text-[11px] font-normal text-gray-400 dark:text-gray-500"},zg=["innerHTML"],Ag={key:7,class:"w-full max-w-full"},qg={class:"inline-flex cursor-pointer list-none select-none [&::-webkit-details-marker]:hidden"},Lg={class:"flex min-w-0 items-baseline gap-1.5 font-medium"},Dg={key:0,class:"max-w-[200px] truncate text-[11px] font-normal opacity-75 sm:max-w-[300px]"},Eg={class:"shrink-0 text-[11px] font-normal opacity-75"},Bg={class:"mt-2 max-w-full rounded-lg border border-gray-200 bg-gray-50/80 dark:border-gray-700/70 dark:bg-page-dark/40"},Fg={class:"flex items-center justify-between gap-2 border-b border-gray-200/70 px-3 py-2 dark:border-gray-700/70"},Rg={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Vg={key:0,class:"border-b border-amber-200/70 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-800/60 dark:bg-amber-950/30 dark:text-amber-300"},Og={class:"max-h-[28rem] overflow-auto whitespace-pre-wrap break-words px-3 py-2.5 text-xs leading-relaxed text-gray-700 dark:text-gray-200"},Pg={class:"flex min-w-0 items-baseline gap-1.5 font-medium"},jg={key:0,class:"max-w-[200px] truncate text-[11px] font-normal opacity-75 sm:max-w-[300px]"},Ng={key:1,class:"shrink-0 text-[11px] font-normal opacity-75"},Ug={key:0,class:"flex items-center gap-2 px-1 py-2 text-sm text-gray-500 dark:text-gray-400"},Wg={key:3,class:"py-1 text-gray-900 dark:text-gray-100"},Hg=["innerHTML"],Kg={key:0,class:"ml-1 inline-block h-4 w-1.5 animate-pulse rounded-sm bg-gray-800 dark:bg-gray-200"},Yg={class:"text-xs text-gray-400"},ra=de({__name:"ChatMessage",props:{messageId:{},role:{},content:{},timestamp:{},isStreaming:{type:Boolean},contentBlocks:{},showCaptureButton:{type:Boolean},editable:{type:Boolean}},emits:["edit","fork"],setup(r,{emit:l}){const{t:e,te:n,locale:s}=_e(),u=ot(),o=r,d=l,g=T(()=>Ee(o.timestamp).format("HH:mm")),p=T(()=>o.role==="user"),y=T(()=>o.role==="summary"),_=z(!1),v=z(o.content),x=z(null),b=T(()=>p.value&&o.editable&&!o.isStreaming&&!!o.messageId),k=T(()=>!p.value&&!y.value&&!o.isStreaming&&!!o.messageId),$=z(!1),w=new Ma({html:!1,breaks:!0,linkify:!0,typographer:!0});w.renderer.rules.link_open=(P,F,K,D,j)=>(P[F].attrSet("target","_blank"),P[F].attrSet("rel","noopener noreferrer"),j.renderToken(P,F,K));function S(P){return P?w.render(P):""}function I(P){const F=P?.toLowerCase()||"think";return F==="analysis"?e("ai.chat.message.think.labels.analysis"):F==="reasoning"?e("ai.chat.message.think.labels.reasoning"):F==="reflection"?e("ai.chat.message.think.labels.reflection"):F==="plan_validation"?e("ai.chat.message.think.labels.planValidation"):F==="think"||F==="thought"||F==="thinking"?e("ai.chat.message.think.labels.think"):e("ai.chat.message.think.labels.other",{tag:P})}function h(P){if(!P)return"";const F=(P/1e3).toFixed(1);return e("ai.chat.message.think.duration",{seconds:F})}const C=T(()=>o.content?w.render(M(o.content)):"");he(()=>o.content,P=>{_.value||(v.value=P)});function O(){const P=x.value;if(!P)return;P.style.height="auto";const F=384,K=Math.min(P.scrollHeight,F);P.style.height=`${K}px`,P.style.overflowY=P.scrollHeight>F?"auto":"hidden"}async function R(){b.value&&(v.value=o.content,_.value=!0,await Ae(),O(),x.value?.focus())}function L(){_.value=!1,v.value=o.content,$.value=!1}function A(){if(!o.messageId)return;const P=v.value.trim();if(!P||P===o.content.trim()){L();return}_.value=!1,d("edit",{messageId:o.messageId,content:P,overwriteSubsequent:$.value}),$.value=!1}function M(P){return Mm(P)}const q=T(()=>{const P=o.contentBlocks||[];return P.filter((F,K)=>F.type==="text"?M(F.text).trim().length>0:F.type==="think"?F.text.trim().length>0:F.type==="error"?!Yn(P,K,{isStreaming:o.isStreaming}):!0)});function Y(P){return P.type==="think"||P.type==="tool"||P.type==="plan"||P.type==="plan_draft"}function G(P){return P.type==="text"}const ae=T(()=>Am(q.value,{isFoldableProcessBlock:Y,isTextBlock:G})),re=T(()=>qm(ae.value)),Q=z({});function H(P){return P.type==="process"?P.blocks:[P.block]}function V(P){return`${o.messageId??o.timestamp}:process:${P}`}function X(P){const F=V(P),K=Q.value[F];return K!==void 0?K:te(P)}function ce(P){const F=V(P);Q.value={...Q.value,[F]:!X(P)}}function fe(P){return q.value[q.value.length-1]===P}function te(P){return!!o.isStreaming&&P===ae.value.length-1}function se(P){return P.type==="think"?P.durationMs??0:P.type==="tool"?P.tool.durationMs??0:0}function N(P,F){return Em(P,{getBlockDurationMs:se,isProcessing:te(F),labels:{processed:e("ai.chat.message.process.processed"),processing:e("ai.chat.message.process.processing")},locale:s.value})}const me=T(()=>o.role==="assistant"&&q.value.length>0);function be(P){return n(`ai.assistant.builtinToolDesc.${P.name}`)?e(`ai.assistant.builtinToolDesc.${P.name}`):P.displayName}function xe(P){return P==="running"?"running":P==="done"?"done":"error"}function le(P){return P.displayResult??P.result??""}function J(P){return P.status!=="running"&&le(P).trim().length>0}function ee(P){return!P.displayResult&&(P.result??"").includes("…[truncated]")}async function pe(P){const F=le(P);if(F.trim())try{await navigator.clipboard.writeText(F),u.success(e("ai.chat.message.toolResult.copySuccess"))}catch(K){u.fail(e("ai.chat.message.toolResult.copyFailed"),{description:String(K)})}}function ke(P){return P.length===0?e("ai.chat.message.plan.noTools"):P.join(", ")}function $e(P){try{const F=JSON.parse(P.trim());if(!F||typeof F!="object")return null;const K=F,D=Array.isArray(K.steps)?K.steps.filter(j=>!!j&&typeof j=="object").map(j=>({goal:typeof j.goal=="string"?j.goal:"",suggestedTools:Array.isArray(j.suggestedTools)?j.suggestedTools.filter(U=>typeof U=="string"):[],evidenceNeeded:typeof j.evidenceNeeded=="string"?j.evidenceNeeded:""})).filter(j=>j.goal):[];return{title:typeof K.title=="string"?K.title:void 0,steps:D,successCriteria:Array.isArray(K.successCriteria)?K.successCriteria.filter(j=>typeof j=="string"):[]}}catch{return null}}const De=new Map;function Fe(P){const F=De.get(P);if(F)return F;const K=$e(P);return K&&De.set(P,K),K}function Te(P){if(P.start_time||P.end_time){const F=P.start_time?String(P.start_time):"",K=P.end_time?String(P.end_time):"";return F&&K?`${F} ~ ${K}`:F||K}if(P.year)if(s.value.startsWith("zh")){let F=`${P.year}年`;return P.month&&(F+=`${P.month}月`,P.day&&(F+=`${P.day}日`,P.hour!==void 0&&(F+=` ${P.hour}点`))),F}else{const F=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];let K="";if(P.month){if(K=F[P.month-1]||String(P.month),P.day&&(K+=` ${P.day}`,P.hour!==void 0)){const D=P.hour,j=D>=12?"pm":"am",U=D%12||12;K+=`, ${U}${j}`}K+=`, ${P.year}`}else K=String(P.year);return K}return""}function Pe(P){if(!P.params)return"";const F=P.name,K=P.params;if(F==="search_messages"){const j=K.keywords,U=[];j&&j.length>0&&U.push(`${e("ai.chat.message.toolParams.keywords")}: ${j.join(", ")}`);const oe=Te(K);return oe&&U.push(`${e("ai.chat.message.toolParams.time")}: ${oe}`),U.join(" | ")}if(F==="get_recent_messages"){const j=[];j.push(e("ai.chat.message.toolParams.getMessages",{count:K.limit||100}));const U=Te(K);return U&&j.push(U),j.join(" | ")}if(F==="get_conversation_between"){const j=[],U=Te(K);return U&&j.push(`${e("ai.chat.message.toolParams.time")}: ${U}`),K.limit&&j.push(e("ai.chat.message.toolParams.limit",{count:K.limit})),j.join(" | ")}if(F==="get_message_context"){const j=K.message_ids,U=K.context_size||20;return j&&j.length>0?e("ai.chat.message.toolParams.contextWithMessages",{msgCount:j.length,contextSize:U}):e("ai.chat.message.toolParams.context",{size:U})}if(F==="get_member_stats")return e("ai.chat.message.toolParams.topMembers",{count:K.top_n||10});if(F==="get_time_stats"){const j=K.type;return e(`ai.chat.message.toolParams.timeStats.${j}`)||String(K.type)}if(F==="render_chart"){const j=K.spec&&typeof K.spec=="object"?K.spec:null;return[j?.title,j?.type].filter(oe=>typeof oe=="string"&&oe.length>0).join(" | ")}if(F==="get_members")return K.search?`${e("ai.chat.message.toolParams.search")}: ${K.search}`:e("ai.chat.message.toolParams.getMemberList");if(F==="get_member_name_history")return`${e("ai.chat.message.toolParams.memberId")}: ${K.member_id}`;if(F==="semantic_search_current_chat"){const j=typeof K.query=="string"?K.query:"";return j?j.length>40?`“${j.slice(0,40)}…”`:`“${j}”`:""}const D=[];for(const[j,U]of Object.entries(K)){if(U==null||U==="")continue;const oe=typeof U=="object"?JSON.stringify(U):String(U),ne=oe.length>30?oe.substring(0,30)+"...":oe;if(D.push(`${j}: ${ne}`),D.length>=3){D.push("...");break}}return D.join(" | ")}const je=T(()=>!me.value&&o.content.trim()?M(o.content):me.value?re.value.map(F=>{if(F.type==="text")return M(F.text);if(F.type==="think"){const K=I(F.tag),D=F.text.split(`
73
- `).map(j=>`> ${j}`).join(`
74
- `);return`> ${K}
75
- >
76
- ${D}`}if(F.type==="skill")return`> ${e("ai.skill.active.label",{name:F.skillName})}`;if(F.type==="chart")return`> Chart: ${F.chart.spec.title}`;if(F.type==="evidence"){const K=`> ${e("ai.chat.evidence.title")}`,D=F.evidence.groups.map(j=>{const U=e(`ai.chat.evidence.group.${j.status}`),oe=j.sources.map(ne=>`> - ${ne.snippet}`).join(`
77
- `);return`> [${U}] ${j.title}
78
- ${oe}`});return[K,...D].join(`
79
- `)}if(F.type==="plan"){const K=F.plan.steps.map((U,oe)=>`${oe+1}. ${U.goal}
80
- - ${e("ai.chat.message.plan.evidenceNeeded")}: ${U.evidenceNeeded}
81
- - ${e("ai.chat.message.plan.suggestedTools")}: ${ke(U.suggestedTools)}`).join(`
82
- `),D=F.plan.successCriteria.map(U=>`- ${U}`).join(`
83
- `),j=F.displayText?`${F.displayText.split(`
84
- `).map(U=>`> ${U}`).join(`
85
- `)}
86
-
87
- `:"";return F.displayText?`> ${e("ai.chat.message.plan.label")}: ${F.plan.title}
88
-
89
- ${j.trimEnd()}`:`> ${e("ai.chat.message.plan.label")}: ${F.plan.title}
90
-
91
- ${K}
92
-
93
- ${e("ai.chat.message.plan.successCriteria")}:
94
- ${D}`}if(F.type==="plan_draft")return`> ${e("ai.chat.message.plan.label")}
95
- >
96
- ${F.text.split(`
97
- `).map(K=>`> ${K}`).join(`
98
- `)}`;if(F.type==="tool"){const K=be(F.tool),D=Pe(F.tool),j=D?` (${D})`:"";return`- [${xe(F.tool.status)}] ${K}${j}`}return""}).filter(F=>F.trim().length>0).join(`
99
-
100
- `):""),Se=T(()=>!o.isStreaming&&je.value.trim().length>0);async function ge(){if(Se.value)try{await navigator.clipboard.writeText(je.value),u.success(e("ai.chat.message.copy.success"))}catch(P){u.fail(e("ai.chat.message.copy.failed"),{description:String(P)})}}return(P,F)=>{const K=we,D=Ue,j=St;return i(),m("div",{class:Z(["flex items-start gap-3",[p.value&&!_.value?"flex-row-reverse":"",y.value?"justify-center":""]])},[a("div",{class:Z([p.value&&!_.value?"max-w-[85%] min-w-0":"w-full min-w-0"])},[y.value?(i(),m("details",Bm,[a("summary",Fm,[f(K,{name:"i-heroicons-arrow-path",class:"h-3.5 w-3.5 shrink-0"}),a("span",null,c(t(e)("ai.chat.message.summary.label")),1),f(K,{name:"i-heroicons-chevron-right",class:"ml-auto h-3 w-3 transition-transform [[open]>&]:rotate-90"})]),a("div",Rm,[a("div",{class:"prose prose-sm dark:prose-invert max-w-none text-xs leading-relaxed text-gray-600 dark:text-gray-300",innerHTML:C.value},null,8,Vm),a("p",Om,c(t(e)("ai.chat.message.summary.info")),1)])])):p.value?(i(),m(ue,{key:1},[_.value?(i(),m("div",Pm,[Je(a("textarea",{ref_key:"editTextareaRef",ref:x,"onUpdate:modelValue":F[0]||(F[0]=U=>v.value=U),rows:"2",class:"w-full resize-none rounded-xl border border-primary-200 bg-white/90 px-4 py-3 text-sm leading-relaxed outline-none focus:border-primary-400 dark:border-primary-400/40 dark:bg-page-dark/70",onInput:O,onKeydown:[Ge(Oe(L,["prevent"]),["esc"]),Ge(Oe(A,["ctrl","prevent"]),["enter"]),Ge(Oe(A,["meta","prevent"]),["enter"])]},null,40,jm),[[wt,v.value]]),a("div",Nm,[a("label",Um,[Je(a("input",{"onUpdate:modelValue":F[1]||(F[1]=U=>$.value=U),type:"checkbox",class:"h-3.5 w-3.5 rounded border-gray-300 text-primary-500 focus:ring-primary-500 dark:border-gray-600"},null,512),[[zn,$.value]]),ie(" "+c(t(e)("ai.chat.message.edit.overwriteSubsequent")),1)]),a("div",Wm,[f(D,{size:"xs",variant:"ghost",color:"gray",onClick:L},{default:B(()=>[ie(c(t(e)("common.cancel")),1)]),_:1}),f(D,{size:"xs",color:"primary",onClick:A},{default:B(()=>[ie(c(t(e)("ai.chat.message.edit.submit")),1)]),_:1})])])])):(i(),m("div",Hm,[a("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:C.value},null,8,Km)]))],64)):me.value?(i(),m("div",Ym,[(i(!0),m(ue,null,ve(ae.value,(U,oe)=>(i(),m("div",{key:oe,class:Z([U.type==="process"?"py-1":""])},[U.type==="process"?(i(),m("button",{key:0,type:"button",class:"inline-flex max-w-full items-center gap-1.5 text-left text-xs text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300","aria-expanded":X(oe),onClick:ne=>ce(oe)},[f(K,{name:X(oe)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0"},null,8,["name"]),a("span",Qm,c(N(U,oe)),1),te(oe)?(i(),W(K,{key:0,name:"i-heroicons-arrow-path",class:"h-3 w-3 shrink-0 animate-spin"})):E("",!0)],8,Gm)):E("",!0),Je(a("div",{class:Z([U.type==="process"?"mt-2 space-y-2 pl-4":""])},[(i(!0),m(ue,null,ve(H(U),(ne,Ve)=>(i(),m(ue,{key:`${oe}-${Ve}`},[ne.type==="text"?(i(),m("div",Jm,[a("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:S(M(ne.text))},null,8,Xm),r.isStreaming&&fe(ne)?(i(),m("span",Zm)):E("",!0)])):ne.type==="think"?(i(),m("details",eg,[a("summary",tg,[ie(c(I(ne.tag))+" ",1),ne.durationMs?(i(),m("span",ag,c(h(ne.durationMs)),1)):E("",!0),r.isStreaming&&fe(ne)?(i(),m("span",sg,[a("span",null,c(t(e)("ai.chat.message.think.loading")),1),F[3]||(F[3]=a("span",{class:"flex gap-0.5"},[a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1))])):E("",!0)]),a("div",ng,[ne.tag==="plan_validation"&&Fe(ne.text)?(i(),m(ue,{key:0},[Fe(ne.text)?.title?(i(),m("div",og,c(Fe(ne.text)?.title),1)):E("",!0),a("ol",lg,[(i(!0),m(ue,null,ve(Fe(ne.text)?.steps,(Le,Me)=>(i(),m("li",{key:Me,class:"text-gray-600 dark:text-gray-300"},[a("div",ig,c(Le.goal),1),Le.evidenceNeeded?(i(),m("div",rg,c(t(e)("ai.chat.message.plan.evidenceNeeded"))+": "+c(Le.evidenceNeeded),1)):E("",!0),a("div",ug,c(t(e)("ai.chat.message.plan.suggestedTools"))+": "+c(ke(Le.suggestedTools)),1)]))),128))]),Fe(ne.text)?.successCriteria.length?(i(),m("div",dg,[a("div",cg,c(t(e)("ai.chat.message.plan.successCriteria")),1),a("ul",mg,[(i(!0),m(ue,null,ve(Fe(ne.text)?.successCriteria,(Le,Me)=>(i(),m("li",{key:Me},c(Le),1))),128))])])):E("",!0)],64)):(i(),m("div",{key:1,innerHTML:S(ne.text)},null,8,gg))])])):ne.type==="skill"?(i(),m("div",pg,[f(K,{name:"i-heroicons-bolt",class:"h-3.5 w-3.5"}),a("span",null,c(t(e)("ai.skill.active.label",{name:ne.skillName})),1)])):ne.type==="plan"?(i(),m("details",fg,[a("summary",hg,[f(K,{name:"i-heroicons-clipboard-document-list",class:"h-3.5 w-3.5 shrink-0"}),a("span",vg,c(t(e)("ai.chat.message.plan.label"))+" · "+c(ne.plan.title),1)]),a("div",yg,[ne.displayText?(i(),m("div",{key:0,class:"prose prose-sm dark:prose-invert max-w-none text-xs leading-relaxed text-gray-600 dark:text-gray-300",innerHTML:S(ne.displayText)},null,8,xg)):(i(),m("ol",bg,[(i(!0),m(ue,null,ve(ne.plan.steps,(Le,Me)=>(i(),m("li",{key:Me,class:"text-xs leading-relaxed"},[a("div",kg,c(Me+1)+". "+c(Le.goal),1),a("div",_g,c(t(e)("ai.chat.message.plan.evidenceNeeded"))+": "+c(Le.evidenceNeeded),1),a("div",wg,c(t(e)("ai.chat.message.plan.suggestedTools"))+": "+c(ke(Le.suggestedTools)),1)]))),128))])),ne.displayText?E("",!0):(i(),m("div",$g,[a("div",Cg,c(t(e)("ai.chat.message.plan.successCriteria")),1),a("ul",Sg,[(i(!0),m(ue,null,ve(ne.plan.successCriteria,(Le,Me)=>(i(),m("li",{key:Me},c(Le),1))),128))])]))])])):ne.type==="plan_draft"?(i(),m("div",Ig,[a("div",Tg,[f(K,{name:"i-heroicons-clipboard-document-list",class:"h-3.5 w-3.5 shrink-0"}),a("span",null,c(t(e)("ai.chat.message.plan.label")),1),r.isStreaming?(i(),m("span",Mg,[...F[4]||(F[4]=[a("span",{class:"flex gap-0.5"},[a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1)])])):E("",!0)]),a("div",{class:"mt-2 prose prose-sm dark:prose-invert max-w-none text-xs leading-relaxed text-gray-600 dark:text-gray-300",innerHTML:S(ne.text)},null,8,zg)])):ne.type==="chart"?(i(),W(sm,{key:5,chart:ne.chart},null,8,["chart"])):ne.type==="evidence"?(i(),W(Im,{key:6,evidence:ne.evidence},null,8,["evidence"])):ne.type==="tool"&&J(ne.tool)?(i(),m("details",Ag,[a("summary",qg,[a("div",{class:Z(["flex w-fit items-center gap-1.5 rounded-lg bg-gray-50 px-2.5 py-1 text-xs text-gray-500 transition-colors hover:bg-gray-100 dark:bg-gray-800/30 dark:text-gray-400/80 dark:hover:bg-gray-800/60",[ne.tool.status==="error"?"bg-red-50 text-red-600 dark:bg-red-900/20 dark:text-red-400":""]])},[f(K,{name:ne.tool.status==="error"?"i-heroicons-exclamation-circle":"i-heroicons-wrench-screwdriver",class:"h-3.5 w-3.5 shrink-0"},null,8,["name"]),a("div",Lg,[a("span",null,c(be(ne.tool)),1),Pe(ne.tool)?(i(),m("span",Dg,c(Pe(ne.tool)),1)):E("",!0),a("span",Eg," · "+c(t(e)("ai.chat.message.toolResult.view")),1)]),f(K,{name:"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 transition-transform [[open]>&]:rotate-90"})],2)]),a("div",Bg,[a("div",Fg,[a("span",Rg,c(t(e)("ai.chat.message.toolResult.title")),1),f(D,{size:"xs",variant:"ghost",color:"primary",icon:"i-heroicons-document-duplicate",title:t(e)("ai.chat.message.toolResult.copy"),onClick:Oe(Le=>pe(ne.tool),["stop"])},null,8,["title","onClick"])]),ee(ne.tool)?(i(),m("div",Vg,c(t(e)("ai.chat.message.toolResult.displayTruncated")),1)):E("",!0),a("pre",Og,c(le(ne.tool)),1)])])):ne.type==="tool"?(i(),m("div",{key:8,class:Z(["flex w-fit items-center gap-1.5 rounded-lg px-2.5 py-1 text-xs transition-colors",[ne.tool.status==="running"?"bg-gray-100 text-gray-600 dark:bg-gray-800/50 dark:text-gray-400":ne.tool.status==="done"?"bg-gray-50 text-gray-500 dark:bg-gray-800/30 dark:text-gray-400/80":"bg-red-50 text-red-600 dark:bg-red-900/20 dark:text-red-400"]])},[f(K,{name:ne.tool.status==="running"?"i-heroicons-arrow-path":ne.tool.status==="done"?"i-heroicons-wrench-screwdriver":"i-heroicons-exclamation-circle",class:Z(["h-3.5 w-3.5 shrink-0",[ne.tool.status==="running"?"animate-spin":""]])},null,8,["name","class"]),a("div",Pg,[a("span",null,c(be(ne.tool)),1),Pe(ne.tool)?(i(),m("span",jg,c(Pe(ne.tool)),1)):E("",!0),ne.tool.status==="done"&&ne.tool.durationMs?(i(),m("span",Ng," · "+c(h(ne.tool.durationMs)),1)):E("",!0)])],2)):ne.type==="error"?(i(),W(Fc,{key:9,error:ne.error},null,8,["error"])):E("",!0)],64))),128))],2),[[vt,U.type!=="process"||X(oe)]])],2))),128)),r.isStreaming&&q.value.length>0&&q.value[q.value.length-1].type==="tool"?(i(),m("div",Ug,[F[5]||(F[5]=a("span",{class:"flex gap-1"},[a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1)),a("span",null,c(t(e)("ai.chat.message.generating")),1)])):E("",!0)])):(i(),m("div",Wg,[a("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:C.value},null,8,Hg),r.isStreaming?(i(),m("span",Kg)):E("",!0)])),!y.value&&!r.isStreaming?(i(),m("div",{key:4,class:Z(["mt-1 flex items-center gap-2 px-1",[p.value?"flex-row-reverse":""]])},[a("span",Yg,c(g.value),1),f(j,{text:t(e)("ai.chat.message.copy.tooltip"),class:"no-capture"},{default:B(()=>[f(D,{icon:"i-heroicons-document-duplicate",variant:"ghost",color:"primary",size:"xs",disabled:!Se.value,onClick:ge},null,8,["disabled"])]),_:1},8,["text"]),b.value?(i(),W(j,{key:0,text:t(e)("ai.chat.message.edit.tooltip"),class:"no-capture"},{default:B(()=>[f(D,{icon:"i-heroicons-pencil-square",variant:"ghost",color:"primary",size:"xs",onClick:R})]),_:1},8,["text"])):E("",!0),k.value?(i(),W(j,{key:1,text:t(e)("ai.chat.message.fork.tooltip"),class:"no-capture"},{default:B(()=>[f(D,{icon:"i-heroicons-arrow-top-right-on-square",variant:"ghost",color:"primary",size:"xs",onClick:F[2]||(F[2]=U=>d("fork",r.messageId))})]),_:1},8,["text"])):E("",!0),r.showCaptureButton&&!p.value&&!r.isStreaming?(i(),W(Lt,{key:2,size:"xs",type:"element","target-selector":".qa-pair","markdown-fix":"","capture-frame":"","progressive-narrowing":!0})):E("",!0)],2)):E("",!0)],2)],2)}}}),Gg={class:"relative px-4 pt-2.5 pb-2.5"},Qg={class:"flex items-start gap-2 pr-10"},Jg={key:0,class:"inline-flex max-w-[180px] shrink-0 items-center rounded-md bg-primary-50 px-2 text-sm leading-6 font-medium text-primary-700 dark:bg-primary-500/10 dark:text-primary-400"},Xg={class:"truncate"},Zg=["value","disabled","placeholder"],ep=["disabled","title"],tp=de({__name:"AIChatComposer",props:{modelValue:{},disabled:{type:Boolean,default:!1},status:{default:"ready"},placeholder:{},sendButtonTitle:{},activeSkillName:{default:null}},emits:["update:modelValue","submit","stop","keydown","cursorChange","compositionStart","compositionEnd"],setup(r,{expose:l,emit:e}){const n=r,s=e,u=z(null),o=T(()=>n.modelValue.trim().length>0&&!n.disabled);function d(){const v=u.value;if(!v)return;v.style.height="auto";const x=192;v.style.height=`${Math.min(v.scrollHeight,x)}px`,v.style.overflowY=v.scrollHeight>x?"auto":"hidden"}function g(){u.value?.focus()}function p(){const v=n.modelValue.length;return{start:u.value?.selectionStart??v,end:u.value?.selectionEnd??v}}function y(v,x){u.value?.setSelectionRange(v,x)}function _(v){s("update:modelValue",v.target.value)}return he(()=>n.modelValue,async()=>{await Ae(),d()}),Be(()=>{Ae(d)}),l({focus:g,getSelection:p,setSelectionRange:y,syncHeight:d}),(v,x)=>{const b=we;return i(),m("div",{class:Z(["flex flex-col overflow-hidden rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all dark:bg-page-dark dark:ring-white/5",r.disabled?"bg-gray-50/50 dark:bg-page-dark/50":"focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:focus-within:ring-primary-500/40"])},[a("div",Gg,[a("div",Qg,[r.activeSkillName?(i(),m("div",Jg,[a("span",Xg,"/"+c(r.activeSkillName),1)])):E("",!0),a("textarea",{ref_key:"textareaRef",ref:u,value:r.modelValue,rows:"2",class:"min-h-[48px] min-w-0 flex-1 resize-none border-0 bg-transparent px-0 py-0 text-sm leading-6 text-gray-900 outline-none placeholder:text-gray-400 disabled:cursor-not-allowed disabled:text-gray-400 dark:text-gray-100 dark:placeholder:text-gray-500 dark:disabled:text-gray-500",disabled:r.disabled,placeholder:r.placeholder,onInput:_,onKeydown:x[0]||(x[0]=k=>s("keydown",k)),onClick:x[1]||(x[1]=k=>s("cursorChange")),onKeyup:x[2]||(x[2]=k=>s("cursorChange")),onSelect:x[3]||(x[3]=k=>s("cursorChange")),onCompositionstart:x[4]||(x[4]=k=>s("compositionStart")),onCompositionend:x[5]||(x[5]=k=>s("compositionEnd"))},null,40,Zg)]),r.status==="streaming"?(i(),m("button",{key:0,type:"button",class:"absolute right-3 bottom-2 flex h-7 w-7 items-center justify-center rounded-full bg-primary-500 text-white shadow-sm transition-colors hover:bg-primary-600",onClick:x[6]||(x[6]=k=>s("stop"))},[f(b,{name:"i-heroicons-stop-16-solid",class:"h-3.5 w-3.5"})])):(i(),m("button",{key:1,type:"button",class:Z(["absolute right-3 bottom-2 flex h-7 w-7 items-center justify-center rounded-full transition-all duration-200",o.value?"bg-primary-500 text-white hover:bg-primary-600 shadow-sm":"bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"]),disabled:!o.value,title:r.sendButtonTitle,onClick:x[7]||(x[7]=k=>s("submit"))},[f(b,{name:"i-heroicons-arrow-up-20-solid",class:"h-4 w-4"})],10,ep))])],2)}}}),ap={key:0,class:"absolute bottom-full left-0 z-20 mb-1.5 w-[240px] max-w-[calc(100vw-2rem)]"},sp={class:"overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-overlay dark:border-gray-700 dark:bg-page-dark"},np={class:"flex items-center justify-between border-b border-gray-100 px-2.5 py-1.5 dark:border-gray-800"},op={class:"flex items-center gap-1.5 text-[11px] text-gray-500 dark:text-gray-400"},lp=["title"],ip={key:0,class:"px-3 py-4 text-center text-xs text-gray-500 dark:text-gray-400"},rp=["onMouseenter","onClick"],up={class:"min-w-0 flex-1"},dp={class:"flex items-center gap-1.5"},cp={class:"truncate text-xs font-medium"},mp={class:"mt-0.5 line-clamp-2 text-[11px] leading-4 text-gray-500 dark:text-gray-400"},gp={key:2,class:"px-3 py-4 text-center"},pp={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},fp={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},hp=de({__name:"MemberMentionMenu",props:{visible:{type:Boolean},members:{},highlightIndex:{},loading:{type:Boolean}},emits:["select","close","highlight"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l,u=z(null);return he(()=>[n.visible,n.highlightIndex,n.members.length],async([o,d])=>{if(!o||!u.value)return;await Ae(),u.value.querySelectorAll("[data-mention-item]")[d]?.scrollIntoView({block:"nearest"})}),(o,d)=>{const g=we;return i(),W(ht,{name:"mention-menu"},{default:B(()=>[r.visible?(i(),m("div",ap,[a("div",sp,[a("div",np,[a("div",op,[a("span",null,c(t(e)("ai.chat.input.mentionHint")),1)]),a("button",{type:"button",class:"rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",title:t(e)("common.close"),onClick:d[0]||(d[0]=p=>s("close"))},[f(g,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5"})],8,lp)]),n.loading?(i(),m("div",ip,c(t(e)("common.loading")),1)):n.members.length>0?(i(),m("div",{key:1,ref_key:"listRef",ref:u,class:"max-h-72 overflow-y-auto p-1.5"},[(i(!0),m(ue,null,ve(n.members,(p,y)=>(i(),m("button",{key:`${p.memberId}-${p.insertName}`,type:"button","data-mention-item":"",class:Z(["flex w-full items-start justify-between gap-1.5 rounded-lg px-2.5 py-1.5 text-left transition-colors",y===n.highlightIndex?"bg-primary-50 text-gray-900 dark:bg-primary-950/30 dark:text-gray-100":"text-gray-700 hover:bg-gray-50 dark:text-gray-200 dark:hover:bg-gray-800/80"]),onMouseenter:_=>s("highlight",y),onClick:_=>s("select",p)},[a("div",up,[a("div",dp,[a("span",cp,"@"+c(p.insertName),1)]),a("p",mp,c(p.subtitle),1)])],42,rp))),128))],512)):(i(),m("div",gp,[a("p",pp,c(t(e)("ai.chat.input.mentionEmpty")),1),a("p",fp,c(t(e)("ai.chat.input.mentionEmptyHint")),1)]))])])):E("",!0)]),_:1})}}}),vp=nt(hp,[["__scopeId","data-v-7bc45150"]]),yp={key:0,class:"absolute bottom-full left-0 z-20 mb-1.5 w-[240px] max-w-[calc(100vw-2rem)]"},xp={class:"overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-overlay dark:border-gray-700 dark:bg-page-dark"},bp={class:"flex items-center justify-between border-b border-gray-100 px-2.5 py-1.5 dark:border-gray-800"},kp={class:"flex items-center gap-1.5 text-[11px] text-gray-500 dark:text-gray-400"},_p=["title"],wp=["onMouseenter","onClick"],$p={class:"min-w-0 flex-1"},Cp={class:"flex items-center gap-1.5"},Sp={class:"truncate text-xs font-medium"},Ip={class:"mt-0.5 line-clamp-1 text-xs leading-4 text-gray-500 dark:text-gray-400"},Tp={key:1,class:"px-3 py-4 text-center"},Mp={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},zp={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Ap={key:0,class:"absolute top-1/2 left-full ml-1 flex max-h-[min(348px,calc(100vh-10rem))] w-[300px] -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-overlay dark:border-gray-700 dark:bg-page-dark"},qp={class:"border-b border-gray-100 px-3 py-2 dark:border-gray-800"},Lp={class:"truncate text-sm font-medium text-gray-900 dark:text-gray-100"},Dp={class:"mt-0.5 text-xs leading-5 text-gray-500 dark:text-gray-400"},Ep={key:0,class:"mt-1 flex items-start gap-1.5 text-[11px] leading-4"},Bp={class:"shrink-0 font-medium text-gray-600 dark:text-gray-300"},Fp={class:"line-clamp-1 min-w-0 flex-1 text-gray-500 dark:text-gray-400"},Rp={key:1,class:"mt-0.5 flex items-start gap-1.5 text-[11px] leading-4"},Vp={class:"shrink-0 font-medium text-gray-600 dark:text-gray-300"},Op={class:"line-clamp-1 min-w-0 flex-1 text-gray-500 dark:text-gray-400"},Pp={class:"min-h-0 flex-1 overflow-y-auto px-3 py-2"},jp={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},Np=["innerHTML"],Up={key:2,class:"text-xs leading-relaxed text-gray-400 dark:text-gray-500"},Wp=de({__name:"SlashCommandMenu",props:{visible:{type:Boolean},skills:{},highlightIndex:{},activeSkillId:{}},emits:["select","close","manage","highlight"],setup(r,{emit:l}){const{t:e,te:n}=_e(),s=It(),u=r,o=l,d=z({}),g=z(""),p=z(!1),y=z(null),_=new Ma({html:!1,breaks:!0,linkify:!0,typographer:!0}),v=T(()=>{if(u.skills.length===0)return null;const w=Math.min(u.highlightIndex,u.skills.length-1);return u.skills[w]??null}),x=T(()=>g.value?_.render(g.value):"");function b(w){const S=`ai.assistant.builtinToolDesc.${w}`;return n(S)?e(S):w}const k=T(()=>v.value?.tags.join(" / ")||""),$=T(()=>v.value?.tools.map(w=>b(w)).join(" / ")||"");return he(()=>[u.visible,v.value?.id],async([w,S])=>{if(!w||!S){g.value="",p.value=!1;return}if(d.value[S]){g.value=d.value[S],p.value=!1;return}p.value=!0;const h=(await s.getSkillConfig(S))?.prompt?.trim()||"";d.value={...d.value,[S]:h},v.value?.id===S&&(g.value=h,p.value=!1)},{immediate:!0}),he(()=>[u.visible,u.highlightIndex,u.skills.length],async([w,S])=>{if(!w||!y.value)return;await Ae(),y.value.querySelectorAll("[data-slash-item]")[S]?.scrollIntoView({block:"nearest"})}),(w,S)=>{const I=we;return i(),W(ht,{name:"slash-menu"},{default:B(()=>[r.visible?(i(),m("div",yp,[a("div",xp,[a("div",bp,[a("div",kp,[a("span",null,c(t(e)("ai.chat.input.slashHint")),1)]),a("button",{type:"button",class:"rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",title:t(e)("common.close"),onClick:S[0]||(S[0]=h=>o("close"))},[f(I,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5"})],8,_p)]),u.skills.length>0?(i(),m("div",{key:0,ref_key:"listRef",ref:y,class:"max-h-72 overflow-y-auto p-1.5"},[(i(!0),m(ue,null,ve(u.skills,(h,C)=>(i(),m("button",{key:h.id,type:"button","data-slash-item":"",class:Z(["flex w-full items-start justify-between gap-1.5 rounded-lg px-2.5 py-1.5 text-left transition-colors",C===u.highlightIndex?"bg-primary-50 text-gray-900 dark:bg-primary-950/30 dark:text-gray-100":"text-gray-700 hover:bg-gray-50 dark:text-gray-200 dark:hover:bg-gray-800/80"]),onMouseenter:O=>o("highlight",C),onClick:O=>o("select",h)},[a("div",$p,[a("div",Cp,[a("span",Sp,c(h.name),1),u.activeSkillId===h.id?(i(),W(I,{key:0,name:"i-heroicons-check-circle-20-solid",class:"h-3.5 w-3.5 shrink-0 text-primary-500"})):E("",!0)]),a("p",Ip,c(h.description),1)])],42,wp))),128))],512)):(i(),m("div",Tp,[a("p",Mp,c(t(e)("ai.chat.input.slashEmpty")),1),a("p",zp,c(t(e)("ai.chat.input.slashEmptyHint")),1)])),a("button",{type:"button",class:"flex w-full items-center justify-between border-t border-gray-100 px-2.5 py-1.5 text-xs text-gray-600 transition-colors hover:bg-gray-50 hover:text-gray-900 dark:border-gray-800 dark:text-gray-300 dark:hover:bg-gray-800/80 dark:hover:text-gray-100",onClick:S[1]||(S[1]=h=>o("manage"))},[a("span",null,c(t(e)("ai.chat.input.manageSkills")),1),f(I,{name:"i-heroicons-arrow-top-right-on-square",class:"h-3.5 w-3.5"})])]),u.skills.length>0&&v.value?(i(),m("div",Ap,[a("div",qp,[a("p",Lp,c(v.value.name),1),a("p",Dp,c(v.value.description),1),k.value?(i(),m("div",Ep,[a("span",Bp,c(t(e)("ai.chat.input.previewTagsLabel")),1),a("span",Fp,c(k.value),1)])):E("",!0),$.value?(i(),m("div",Rp,[a("span",Vp,c(t(e)("ai.chat.input.previewToolsLabel")),1),a("span",Op,c($.value),1)])):E("",!0)]),a("div",Pp,[p.value?(i(),m("div",jp,c(t(e)("common.loading")),1)):x.value?(i(),m("div",{key:1,class:"prose prose-sm max-w-none text-xs leading-5 dark:prose-invert prose-headings:mb-1.5 prose-headings:mt-2 prose-p:my-1.5 prose-ul:my-1.5 prose-ol:my-1.5",innerHTML:x.value},null,8,Np)):(i(),m("div",Up,c(t(e)("ai.chat.input.previewUnavailable")),1))])])):E("",!0)])):E("",!0)]),_:1})}}}),Hp=nt(Wp,[["__scopeId","data-v-0f67bc21"]]),Kp={class:"shrink-0 pt-2 pb-2"},Yp=de({__name:"AIChatInput",props:{sessionId:{},disabled:{type:Boolean},status:{},chatType:{}},emits:["send","stop","manageSkills","skillActivated"],setup(r,{expose:l,emit:e}){const{t:n}=_e(),s=r,u=e,o=It(),{compatibleSkills:d,activeSkill:g,activeSkillId:p,isLoaded:y}=dt(o),_=z(null),v=z(null),x=z(""),b=z([]),k=z([]),$=z(!1),w=z(!1),S=z(""),I=z(0),h=z(!1),C=z(""),O=z(0),R=z(null),L=z(!1),A=z(null),M=z(null),q=z(!1),Y=T(()=>x.value.trim().length>0&&!s.disabled),G=T(()=>g.value&&x.value.trim().length===0?n("ai.chat.input.placeholderWithActiveSkill",{name:g.value.name}):n("ai.chat.input.placeholderWithSlash")),ae=T(()=>s.status==="streaming"?"":Y.value?n("ai.chat.input.send"):g.value?n("ai.chat.input.needMoreThanSkill"):n("ai.chat.input.needQuestion")),re=T(()=>{const D=new Map;return b.value.forEach(j=>{const U=j.groupNickname||j.accountName||j.platformId;D.set(U,(D.get(U)??0)+1)}),b.value.map(j=>{const U=j.groupNickname||j.accountName||j.platformId,oe=(D.get(U)??0)>1?`${U}·${j.platformId}`:U,ne=[j.platformId];return j.aliases.length>0&&ne.push(j.aliases.join(" / ")),{memberId:j.id,platformId:j.platformId,displayName:U,aliases:[...j.aliases],mentionText:`@${oe}`,insertName:oe,subtitle:ne.join(" · "),searchText:[U,j.groupNickname||"",j.accountName||"",j.platformId,oe,j.aliases.join(" ")].join(" ").toLocaleLowerCase()}})}),Q=T(()=>{const D=S.value.trim().toLocaleLowerCase();return D?d.value.filter(j=>[j.name,j.description,j.tags.join(" ")].join(" ").toLocaleLowerCase().includes(D)):d.value}),H=T(()=>{const D=C.value.trim().toLocaleLowerCase();return D?re.value.filter(j=>j.searchText.includes(D)):re.value});function V(){v.value?.syncHeight()}function X(){v.value?.focus()}async function ce(){if(!s.sessionId){b.value=[];return}$.value=!0;try{const D=await Ke().getMembers(s.sessionId);b.value=[...D].sort((j,U)=>U.messageCount-j.messageCount)}catch(D){console.error("加载 AI @ 成员列表失败:",D),b.value=[]}finally{$.value=!1}}function fe(){w.value=!1,S.value="",I.value=0}function te(){h.value=!1,C.value="",O.value=0,R.value=null}function se(){/^\s*\/([^\n]*)$/.test(x.value)&&(A.value=x.value),fe()}function N(){R.value&&(M.value=R.value.rawToken),te()}function me(D){if(s.disabled){fe();return}A.value&&A.value!==D&&(A.value=null);const j=D.match(/^\s*\/([^\n]*)$/);if(!j){fe();return}const U=!w.value||S.value!==j[1];if(S.value=j[1],A.value===D){w.value=!1;return}w.value=!0,U&&(I.value=0)}function be(){return v.value?.getSelection()??{start:x.value.length,end:x.value.length}}function xe(D){const{start:j,end:U}=be();if(j!==U)return null;const oe=D.slice(0,j),ne=oe.match(/@([^\s@]*)$/);if(!ne)return null;const Ve=ne[1],Le=oe.length-Ve.length-1;return{start:Le,end:j,rawToken:oe.slice(Le),query:Ve}}function le(D){if(s.disabled||w.value){te();return}const j=xe(D);if(M.value&&M.value!==j?.rawToken&&(M.value=null),!j){te();return}const U=!h.value||C.value!==j.query||R.value?.rawToken!==j.rawToken;if(C.value=j.query,R.value={start:j.start,end:j.end,rawToken:j.rawToken},M.value===j.rawToken){h.value=!1;return}h.value=!0,U&&(O.value=0)}function J(D){if(me(D),w.value){te();return}le(D)}function ee(D){k.value=k.value.filter(j=>D.includes(j.mentionText))}function pe(){const{start:D,end:j}=be();if(D!==j||D===0)return!1;const U=[...new Set(k.value.map(oe=>oe.mentionText))].sort((oe,ne)=>ne.length-oe.length);for(const oe of U){let ne=x.value.indexOf(oe);for(;ne!==-1;){const Ve=ne,Le=ne+oe.length,Me=x.value[Le]===" "?Le+1:Le;if(D>Ve&&D<=Me)return q.value=!0,x.value=x.value.slice(0,Ve)+x.value.slice(Me),M.value=null,Ae(()=>{V(),X(),v.value?.setSelectionRange(Ve,Ve),q.value=!1,J(x.value)}),!0;ne=x.value.indexOf(oe,ne+oe.length)}}return!1}function ke(){o.activateSkill(null),Ae(X)}function $e(){s.disabled||(p.value&&o.activateSkill(null),q.value=!0,x.value="/",A.value=null,Ae(()=>{V(),X(),v.value?.setSelectionRange(1,1),q.value=!1,J(x.value)}))}function De(D){s.disabled||(q.value=!0,x.value=D,A.value=null,Ae(()=>{V(),X();const j=x.value.length;v.value?.setSelectionRange(j,j),q.value=!1,J(x.value)}))}function Fe(D){if(s.disabled||!R.value)return;const j=x.value.slice(0,R.value.start),U=x.value.slice(R.value.end),oe=`@${D.insertName}`,ne=`${j}${oe} ${U}`;k.value=[...k.value.filter(Ve=>Ve.memberId!==D.memberId),{memberId:D.memberId,platformId:D.platformId,displayName:D.displayName,aliases:[...D.aliases],mentionText:oe}],q.value=!0,x.value=ne,M.value=null,te(),Ae(()=>{const Ve=j.length+oe.length+1;V(),X(),v.value?.setSelectionRange(Ve,Ve),q.value=!1,J(x.value)})}function Te(){Y.value&&(u("send",{content:x.value.trim(),mentionedMembers:[...k.value]}),x.value="",A.value=null,M.value=null,k.value=[],te(),p.value&&o.activateSkill(null))}function Pe(D){s.disabled||(o.activateSkill(D.id),u("skillActivated",D),x.value="",A.value=null,fe(),Ae(()=>{X()}))}function je(){se(),u("manageSkills")}function Se(D){if(!Q.value.length)return;const j=Q.value.length;I.value=(I.value+D+j)%j}function ge(D){if(!H.value.length)return;const j=H.value.length;O.value=(O.value+D+j)%j}function P(D){if(D.key==="Backspace"&&x.value.length===0&&p.value){D.preventDefault(),ke();return}if(D.key==="Backspace"&&pe()){D.preventDefault();return}if(h.value){if(D.key==="ArrowDown"){D.preventDefault(),ge(1);return}if(D.key==="ArrowUp"){D.preventDefault(),ge(-1);return}if(D.key==="Escape"){D.preventDefault(),N();return}if(D.key==="Enter"&&!D.shiftKey&&!L.value||D.key==="Tab"){D.preventDefault();const j=H.value[O.value];j&&Fe(j);return}}if(w.value){if(D.key==="ArrowDown"){D.preventDefault(),Se(1);return}if(D.key==="ArrowUp"){D.preventDefault(),Se(-1);return}if(D.key==="Escape"){D.preventDefault(),se();return}if(D.key==="Enter"&&!D.shiftKey&&!L.value||D.key==="Tab"){D.preventDefault();const j=Q.value[I.value];j&&Pe(j);return}}D.key==="Enter"&&!D.shiftKey&&!L.value&&(D.preventDefault(),Te())}function F(D){if(!w.value&&!h.value||!_.value)return;const j=D.target;j instanceof Node&&!_.value.contains(j)&&(se(),N())}function K(){q.value||J(x.value)}return he(()=>s.chatType,D=>{o.setFilterContext(D)},{immediate:!0}),he(x,async D=>{ee(D),q.value||J(D),await Ae(),V()}),he(Q,D=>{if(D.length===0){I.value=0;return}I.value>=D.length&&(I.value=D.length-1)},{immediate:!0}),he(H,D=>{if(D.length===0){O.value=0;return}O.value>=D.length&&(O.value=D.length-1)},{immediate:!0}),he(()=>s.disabled,D=>{D&&(se(),N())}),he(()=>s.sessionId,()=>{k.value=[],te(),ce()},{immediate:!0}),Be(async()=>{y.value||await o.loadSkills(),await Ae(),V(),document.addEventListener("mousedown",F)}),Bt(()=>{document.removeEventListener("mousedown",F)}),l({fillInput:De,openSkillSelector:$e}),(D,j)=>(i(),m("div",Kp,[a("div",{ref_key:"rootRef",ref:_,class:"relative w-full max-w-4xl mx-auto"},[f(Hp,{visible:w.value,skills:Q.value,"highlight-index":I.value,"active-skill-id":t(p),onSelect:Pe,onClose:se,onManage:je,onHighlight:j[0]||(j[0]=U=>I.value=U)},null,8,["visible","skills","highlight-index","active-skill-id"]),f(vp,{visible:h.value,members:H.value,"highlight-index":O.value,loading:$.value,onSelect:Fe,onClose:N,onHighlight:j[1]||(j[1]=U=>O.value=U)},null,8,["visible","members","highlight-index","loading"]),f(tp,{ref_key:"composerRef",ref:v,modelValue:x.value,"onUpdate:modelValue":j[2]||(j[2]=U=>x.value=U),disabled:s.disabled,status:s.status,placeholder:G.value,"send-button-title":ae.value,"active-skill-name":t(g)?.name,onSubmit:Te,onStop:j[3]||(j[3]=U=>u("stop")),onKeydown:P,onCursorChange:K,onCompositionStart:j[4]||(j[4]=U=>L.value=!0),onCompositionEnd:j[5]||(j[5]=U=>L.value=!1)},null,8,["modelValue","disabled","status","placeholder","send-button-title","active-skill-name"])],512)]))}}),Gp={key:0,class:"flex w-fit items-center gap-1.5 rounded-lg bg-gray-100 px-2.5 py-1 text-xs transition-colors dark:bg-gray-800/50"},Qp={class:"font-medium text-gray-600 dark:text-gray-400"},Jp={key:1,class:"flex items-start gap-3"},Xp={class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-500 to-pink-600"},Zp={class:"rounded-2xl rounded-tl-sm bg-gray-100 px-4 py-3 dark:bg-gray-800"},e0={key:0,class:"space-y-2"},t0={class:"flex items-center gap-2"},a0={key:0,class:"flex gap-1"},s0={key:1,class:"flex items-center gap-1.5 text-xs text-gray-500 dark:text-gray-400"},n0={key:0,class:"flex flex-wrap gap-1"},o0={class:"text-xs text-gray-400"},l0={key:1,class:"flex items-center gap-2"},i0={class:"text-sm text-gray-600 dark:text-gray-400"},r0=de({__name:"AIThinkingIndicator",props:{currentToolStatus:{},toolsUsed:{},agentStatus:{}},setup(r){const{t:l,te:e}=_e();function n(o,d){const g=`ai.assistant.builtinToolDesc.${o}`;return e(g)?l(g):d||o}const s=r,u=T(()=>s.agentStatus?.phase==="compressing");return(o,d)=>{const g=we;return u.value?(i(),m("div",Gp,[f(g,{name:"i-heroicons-arrow-path",class:"h-3.5 w-3.5 shrink-0 animate-spin text-gray-600 dark:text-gray-400"}),a("span",Qp,c(t(l)("ai.chat.thinking.compressing")),1)])):(i(),m("div",Jp,[a("div",Xp,[f(g,{name:"i-heroicons-sparkles",class:"h-4 w-4 text-white"})]),a("div",Zp,[r.currentToolStatus?(i(),m("div",e0,[a("div",t0,[a("span",{class:Z(["inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium",[r.currentToolStatus.status==="running"?"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300":r.currentToolStatus.status==="done"?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300"]])},[f(g,{name:r.currentToolStatus.status==="running"?"i-heroicons-cog-6-tooth":r.currentToolStatus.status==="done"?"i-heroicons-check-circle":"i-heroicons-x-circle",class:Z(["h-3 w-3",{"animate-spin":r.currentToolStatus.status==="running"}])},null,8,["name","class"]),ie(" "+c(n(r.currentToolStatus.name,r.currentToolStatus.displayName)),1)],2),r.currentToolStatus.status==="running"?(i(),m("span",a0,[...d[0]||(d[0]=[a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:0ms]"},null,-1),a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:150ms]"},null,-1),a("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:300ms]"},null,-1)])])):r.currentToolStatus.status==="done"?(i(),m("span",s0,[a("span",null,c(t(l)("ai.chat.thinking.processingResult")),1),d[1]||(d[1]=a("span",{class:"flex gap-1"},[a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),a("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1))])):E("",!0)]),r.toolsUsed.length>1?(i(),m("div",n0,[a("span",o0,c(t(l)("ai.chat.thinking.called")),1),(i(!0),m(ue,null,ve(r.toolsUsed.slice(0,-1),p=>(i(),m("span",{key:p,class:"inline-flex items-center gap-1 rounded-full bg-gray-200 px-2 py-0.5 text-xs text-gray-600 dark:bg-gray-700 dark:text-gray-400"},[f(g,{name:"i-heroicons-check",class:"h-3 w-3 text-green-500"}),ie(" "+c(n(p)),1)]))),128))])):E("",!0)])):(i(),m("div",l0,[a("span",i0,c(t(l)("ai.chat.thinking.analyzing")),1),d[2]||(d[2]=a("span",{class:"flex gap-1"},[a("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:0ms]"}),a("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:150ms]"}),a("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:300ms]"})],-1))]))])]))}}}),u0={class:"relative z-20 flex items-center justify-between"},d0={class:"flex items-center gap-1"},c0=["disabled"],m0={class:"max-w-[160px] truncate"},g0=["title"],p0={class:"w-40 py-1"},f0={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},h0=["onClick"],v0={class:"flex items-center gap-1"},y0=["title"],x0={class:"hidden shrink-0 items-center gap-1.5 rounded-md px-1.5 py-1 text-xs text-gray-400 dark:text-gray-500 md:flex"},b0={class:"h-1.5 w-10 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},k0={class:"text-[10px]"},_0={class:"space-y-0.5 whitespace-nowrap text-xs"},w0={key:0},$0=["title","disabled"],C0={class:"hidden xl:inline"},S0=["title","disabled"],I0={class:"hidden xl:inline"},T0=de({__name:"ChatStatusBar",props:{sessionTokenUsage:{},agentStatus:{},currentAIChatId:{},currentMessages:{},fallbackTitle:{},estimatedContextTokens:{}},setup(r){const{t:l}=_e(),e=ot(),n=xt(),s=r,u=za(),o=An(),{aiGlobalSettings:d}=dt(u),{defaultAssistantConfig:g,isLoading:p}=dt(o),y=z(!1),_=T(()=>s.agentStatus?l(`ai.chat.statusBar.agent.phase.${s.agentStatus.phase}`):""),v=T(()=>s.agentStatus?l(`ai.chat.statusBar.agent.phaseShort.${s.agentStatus.phase}`):""),x=T(()=>{if(!s.agentStatus)return"text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-300";switch(s.agentStatus.phase){case"compressing":return"text-purple-600 bg-purple-50 dark:bg-purple-900/30 dark:text-purple-300";case"tool_running":return"text-indigo-600 bg-indigo-50 dark:bg-indigo-900/30 dark:text-indigo-300";case"thinking":return"text-blue-600 bg-blue-50 dark:bg-blue-900/30 dark:text-blue-300";case"responding":return"text-emerald-600 bg-emerald-50 dark:bg-emerald-900/30 dark:text-emerald-300";case"completed":return"text-green-600 bg-green-50 dark:bg-green-900/30 dark:text-green-300";case"aborted":return"text-amber-600 bg-amber-50 dark:bg-amber-900/30 dark:text-amber-300";case"error":return"text-red-600 bg-red-50 dark:bg-red-900/30 dark:text-red-300";default:return"text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-300"}});function b(se){return Number.isFinite(se)?new Intl.NumberFormat().format(Math.max(0,Math.round(se))):"0"}function k(se){const N=Math.max(0,Math.round(se));return N>=1e6?`${(N/1e6).toFixed(1).replace(/\.0$/,"")}M`:N>=1e3?`${(N/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(N)}const $=T(()=>b(s.sessionTokenUsage.totalTokens)),w=T(()=>k(s.sessionTokenUsage.totalTokens)),S=T(()=>s.sessionTokenUsage.cacheReadTokens>0),I=T(()=>k(s.sessionTokenUsage.cacheReadTokens)),h=T(()=>s.agentStatus?.contextTokens?s.agentStatus.contextTokens:s.estimatedContextTokens&&s.estimatedContextTokens>0?s.estimatedContextTokens:0),C=T(()=>{const se=g.value,N=o.defaultAssistant?.modelId||se?.model;return!se||!N?128e3:(o.getModelById(se.provider,N)||o.findModelAcrossProviders(N))?.contextWindow??128e3}),O=T(()=>h.value<=0||C.value<=0?0:Math.min(100,Math.round(h.value/C.value*100))),R=T(()=>{const se=O.value;return se>=80?"bg-red-500":se>=60?"bg-amber-500":"bg-emerald-500"}),L=T(()=>s.agentStatus?[`${l("ai.chat.statusBar.agent.label")}: ${_.value}`,`${l("ai.chat.statusBar.agent.contextTokens")}: ${b(s.agentStatus.contextTokens)}`,`${l("ai.chat.statusBar.tokenUsageTitle")}: ${$.value}`].join(`
101
- `):"");function A(){n.openSettings("ai","defaultModel")}const M=z(!1),q=T(()=>pa(s.currentMessages??[])),Y=T(()=>!!s.currentAIChatId||Ql(s.currentMessages??[]));function G(){return{createdAt:l("ai.chat.conversation.export.createdAt"),user:l("ai.chat.conversation.export.user"),assistant:l("ai.chat.conversation.export.assistant")}}function ae(se){return se.map(N=>({...N,timestamp:N.timestamp*1e3}))}async function re(){if(!(M.value||!Y.value)){M.value=!0;try{const se=d.value.exportFormat||"markdown",N=G();let me=s.fallbackTitle||l("ai.chat.conversation.newChat"),be=q.value[0]?.timestamp??Date.now(),xe=q.value;if(s.currentAIChatId){const[J,ee]=await Promise.all([Ye().getAIChat(s.currentAIChatId),Ye().getMessages(s.currentAIChatId)]);J&&(me=J.title||me,be=J.createdAt*1e3);const pe=pa(ae(ee));pe.length>0&&(xe=pe)}if(xe.length===0){e.warn(l("ai.chat.conversation.export.noMessages"));return}const le=await ei(me,xe,be,se,N);if(le.success&&le.filePath){const J=le.filePath.split("/").pop()||le.filePath,ee=le.filePath;e.add({title:l("common.exportSuccess"),description:J,color:"primary",actions:[{label:l("common.openFolder"),onClick:()=>{ds().showInFolder(ee)}}]})}else e.fail(l("common.exportFailed"),{description:le.error})}catch(se){console.error("导出对话失败:",se),e.fail(l("common.exportFailed"),{description:String(se)})}finally{M.value=!1}}}async function Q(){if(!y.value){y.value=!0;try{const se=await Ye().showAiLogFile();se?.success||e.fail(l("ai.chat.statusBar.log.openFailed"),{description:se?.error||l("ai.chat.statusBar.log.openFailedDesc")})}catch(se){console.error("打开 AI 日志失败:",se),e.fail(l("ai.chat.statusBar.log.openFailed"),{description:String(se)})}finally{y.value=!1}}}const H=z(!1),V=T(()=>{const se=g.value,N=o.defaultAssistant?.modelId||se?.model;return!se?.provider||!N?[]:Wl(se.provider,N)}),X=T(()=>V.value.length>0),ce=T(()=>{const se=o.defaultAssistant;return!se?.configId||!se?.modelId?"default":u.getThinkingLevel(se.configId,se.modelId)??"default"});function fe(se){const N=o.defaultAssistant;!N?.configId||!N?.modelId||(u.setThinkingLevel(N.configId,N.modelId,se),H.value=!1)}const te=T(()=>l(`ai.chat.statusBar.thinking.level.${ce.value}`));return(se,N)=>{const me=we,be=rs,xe=St;return i(),m("div",u0,[a("div",d0,[a("button",{class:"flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-300",disabled:t(p),onClick:A},[f(me,{name:"i-heroicons-cpu-chip",class:"h-3.5 w-3.5"}),a("span",m0,c(t(o).defaultAssistant?.modelId?t(o).getModelById(t(g)?.provider??"",t(o).defaultAssistant.modelId)?.name||t(o).defaultAssistant.modelId:t(l)("ai.chat.statusBar.model.notConfigured")),1)],8,c0),X.value?(i(),W(be,{key:0,open:H.value,"onUpdate:open":N[0]||(N[0]=le=>H.value=le),ui:{content:"z-[80] p-0"}},{content:B(()=>[a("div",p0,[a("div",f0,c(t(l)("ai.chat.statusBar.thinking.title")),1),(i(!0),m(ue,null,ve(V.value,le=>(i(),m("button",{key:le,class:Z(["flex w-full items-center gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",ce.value===le?"text-primary-600 dark:text-primary-400":"text-gray-700 dark:text-gray-300"]),onClick:J=>fe(le)},[f(me,{name:ce.value===le?"i-heroicons-check-circle-solid":"i-heroicons-light-bulb",class:Z(["h-4 w-4 shrink-0",ce.value===le?"text-primary-500":"text-gray-400"])},null,8,["name","class"]),a("span",null,c(t(l)(`ai.chat.statusBar.thinking.level.${le}`)),1)],10,h0))),128))])]),default:B(()=>[a("button",{class:Z(["flex items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",ce.value==="default"||ce.value==="off"?"text-gray-400 dark:text-gray-500":"text-primary-500 dark:text-primary-400"]),title:t(l)("ai.chat.statusBar.thinking.tooltip")},[f(me,{name:"i-heroicons-light-bulb",class:"h-3.5 w-3.5"}),a("span",null,c(te.value),1)],10,g0)]),_:1},8,["open"])):E("",!0)]),a("div",v0,[r.agentStatus?(i(),m("div",{key:0,class:"hidden shrink-0 items-center gap-1 rounded-lg bg-gray-50/90 px-1.5 py-1 text-xs shadow-[inset_0_0_0_1px_rgba(255,255,255,0.35)] dark:bg-gray-800/70 dark:shadow-[inset_0_0_0_1px_rgba(255,255,255,0.04)] lg:flex",title:L.value},[a("span",{class:Z(["rounded px-1 py-0.5 text-[10px] font-medium",x.value])},c(v.value),3)],8,y0)):E("",!0),h.value>0?(i(),W(xe,{key:1,ui:{content:"h-auto py-1.5"}},{content:B(()=>[a("div",_0,[a("div",null,c(t(l)("ai.chat.statusBar.agent.contextTokens"))+": "+c(k(h.value))+" / "+c(k(C.value)),1),a("div",null,c(t(l)("ai.chat.statusBar.tokenUsageTitle"))+": "+c(w.value),1),S.value?(i(),m("div",w0,c(t(l)("ai.chat.statusBar.cacheHit"))+": "+c(I.value),1)):E("",!0)])]),default:B(()=>[a("div",x0,[a("div",b0,[a("div",{class:Z(["h-full rounded-full transition-all duration-300",R.value]),style:et({width:`${O.value}%`})},null,6)]),a("span",k0,c(O.value)+"%",1)])]),_:1})):E("",!0),a("button",{class:"flex shrink-0 items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 disabled:cursor-not-allowed disabled:opacity-60 dark:hover:bg-gray-800 dark:hover:text-gray-300",title:t(l)("ai.chat.statusBar.export.title"),disabled:M.value||!Y.value,onClick:re},[f(me,{name:"i-heroicons-arrow-down-tray",class:"h-3.5 w-3.5"}),a("span",C0,c(t(l)("ai.chat.statusBar.export.label")),1)],8,$0),a("button",{class:"flex shrink-0 items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 disabled:cursor-not-allowed disabled:opacity-60 dark:hover:bg-gray-800 dark:hover:text-gray-300",title:t(l)("ai.chat.statusBar.log.title"),disabled:y.value,onClick:Q},[f(me,{name:"i-heroicons-document-text",class:"h-3.5 w-3.5"}),a("span",I0,c(t(l)("ai.chat.statusBar.log.label")),1)],8,S0)])])}}}),M0={class:"assistant-bar-wrapper flex justify-center"},z0=["onClick"],A0={key:0,class:"absolute right-0 top-full z-30 mt-2 w-56 overflow-hidden rounded-xl border border-gray-200/80 bg-white/95 p-1 shadow-overlay backdrop-blur-md dark:border-gray-700 dark:bg-page-dark/95"},q0={class:"custom-scrollbar max-h-60 space-y-0.5 overflow-y-auto"},L0=["onClick"],D0={class:"truncate font-medium"},jt=4,E0=de({__name:"AssistantInlineBar",props:{chatType:{},locale:{},selectedId:{}},emits:["select","market"],setup(r,{emit:l}){const e=r,n=l,s=z(!1),u=z(null);function o(h){n("select",h),s.value=!1}function d(){b.value.length!==0&&(s.value=!s.value)}function g(h){if(!s.value||!u.value)return;const C=h.target;C instanceof Node&&!u.value.contains(C)&&(s.value=!1)}const p=Rt(),{filteredAssistants:y,isLoaded:_}=dt(p),v=T(()=>{const h=qn(e.locale);return[...y.value].sort((C,O)=>C.id===h?-1:O.id===h?1:0)}),x=T(()=>{const h=v.value;if(h.length<=jt)return h;const C=h.findIndex(O=>O.id===e.selectedId);if(C!==-1&&C>=jt-1){const O=h.slice(0,jt-1),R=h[C];return[...O,R]}return h.slice(0,jt)}),b=T(()=>{const h=new Set(x.value.map(C=>C.id));return v.value.filter(C=>!h.has(C.id))});he(()=>[e.chatType,e.locale],([h,C])=>{p.setFilterContext(h,C)},{immediate:!0});const k=z([]),$=z(null);let w=null;const S=z({width:"0px",transform:"translateX(0px)",opacity:0}),I=async()=>{await Ae();const h=x.value.findIndex(C=>C.id===e.selectedId);if(h!==-1&&k.value[h]){const C=k.value[h];S.value={width:`${C.offsetWidth+6}px`,transform:`translateX(${C.offsetLeft-3}px)`,opacity:1}}else S.value.opacity=0};return he(()=>[e.selectedId,x.value],()=>{I()},{deep:!0}),Be(async()=>{_.value||await p.loadAssistants(),I(),document.addEventListener("mousedown",g),typeof ResizeObserver<"u"&&$.value&&(w=new ResizeObserver(()=>{I()}),w.observe($.value))}),tt(()=>{document.removeEventListener("mousedown",g),w&&w.disconnect()}),(h,C)=>{const O=we;return i(),m("div",M0,[a("div",{ref_key:"containerRef",ref:$,class:"assistant-bar-grid relative flex items-center justify-center gap-1.5 rounded-full bg-gray-50/60 p-[3px] shadow-inner ring-1 ring-inset ring-gray-900/5 backdrop-blur-md dark:bg-gray-800/40 dark:ring-white/10 z-0 overflow-hidden sm:overflow-visible"},[a("div",{class:"absolute left-0 inset-y-0 -z-10 rounded-full bg-white ring-[1.5px] ring-primary-500 shadow-sm transition-all duration-350 ease-out dark:bg-primary-700/15 dark:ring-primary-500",style:et(S.value)},null,4),(i(!0),m(ue,null,ve(x.value,(R,L)=>(i(),m("button",{key:R.id,ref_for:!0,ref:A=>{A&&(k.value[L]=A)},class:Z(["relative z-10 flex h-[32px] items-center justify-center whitespace-nowrap rounded-full px-4 text-[13px] font-medium transition-colors duration-200",[r.selectedId===R.id?"text-primary-600 dark:text-primary-400":"text-gray-500 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200"]]),onClick:A=>n("select",R.id)},c(R.name),11,z0))),128)),b.value.length>0?(i(),m("div",{key:0,ref_key:"overflowMenuRef",ref:u,class:"relative z-20"},[a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] ml-0.5 items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:d},[f(O,{name:"i-heroicons-ellipsis-horizontal",class:"h-5 w-5"})]),s.value?(i(),m("div",A0,[a("div",q0,[C[1]||(C[1]=a("p",{class:"px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"}," 更多助手 ",-1)),(i(!0),m(ue,null,ve(b.value,R=>(i(),m("button",{key:R.id,type:"button",class:Z(["flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",[r.selectedId===R.id?"bg-primary-50 text-primary-600 dark:bg-primary-500/10 dark:text-primary-400":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"]]),onClick:L=>o(R.id)},[a("span",D0,c(R.name),1),r.selectedId===R.id?(i(),W(O,{key:0,name:"i-heroicons-check",class:"h-4 w-4 shrink-0"})):E("",!0)],10,L0))),128))])])):E("",!0)],512)):E("",!0),a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:C[0]||(C[0]=R=>n("market"))},[f(O,{name:"i-heroicons-plus",class:"h-[18px] w-[18px]"})])],512)])}}}),B0=nt(E0,[["__scopeId","data-v-169115ce"]]),F0={slots:{root:"relative inline-flex items-center",base:["w-full rounded-md border-0 appearance-none placeholder:text-dimmed disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute start-0 flex items-start",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute end-0 flex items-start",trailingIcon:"shrink-0 text-dimmed"},variants:{fieldGroup:{horizontal:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"},vertical:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"}},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2 inset-y-1",trailing:"pe-2 inset-y-1",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},autoresize:{true:{base:"resize-none"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},R0=["id","value","name","rows","placeholder","disabled","required"],V0=Object.assign({inheritAttrs:!1},{__name:"Textarea",props:{as:{type:null,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},autoresize:{type:Boolean,required:!1},autoresizeDelay:{type:Number,required:!1,default:0},disabled:{type:Boolean,required:!1},rows:{type:Number,required:!1,default:3},maxrows:{type:Number,required:!1,default:0},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["update:modelValue","blur","change"],setup(r,{expose:l,emit:e}){const n=r,s=e,u=Jt(),o=ka("textarea",n),d=Ln(o,"modelValue",s,{defaultValue:o.defaultValue}),g=wa(),{emitFormFocus:p,emitFormBlur:y,emitFormInput:_,emitFormChange:v,size:x,color:b,id:k,name:$,highlight:w,disabled:S,ariaAttrs:I}=_a(n,{deferInputValidation:!0}),{isLeading:h,isTrailing:C,leadingIconName:O,trailingIconName:R}=$a(o),L=T(()=>$t({extend:$t(F0),...g.ui?.textarea||{}})({color:b.value??o.color,variant:o.variant,size:x?.value??o.size,loading:o.loading,highlight:w.value??o.highlight,fixed:o.fixed,autoresize:o.autoresize,leading:h.value||!!o.avatar||!!u.leading,trailing:C.value||!!u.trailing})),A=zt("textareaRef");function M(Q){o.modelModifiers?.trim&&(typeof Q=="string"||Q===null||Q===void 0)&&(Q=Q?.trim()??null),o.modelModifiers?.number&&(Q=is(Q)),o.modelModifiers?.nullable&&(Q||=null),o.modelModifiers?.optional&&!o.modelModifiers?.nullable&&Q!==null&&(Q||=void 0),d.value=Q,_()}function q(Q){re(),o.modelModifiers?.lazy||M(Q.target.value)}function Y(Q){const H=Q.target.value;o.modelModifiers?.lazy&&M(H),o.modelModifiers?.trim&&(Q.target.value=H.trim()),v(),s("change",Q)}function G(Q){y(),s("blur",Q)}function ae(){o.autofocus&&A.value?.focus()}function re(){if(o.autoresize&&A.value){A.value.rows=o.rows;const Q=A.value.style.overflow;A.value.style.overflow="hidden";const H=window.getComputedStyle(A.value),V=Number.parseInt(H.paddingTop),X=Number.parseInt(H.paddingBottom),ce=V+X,fe=Number.parseInt(H.lineHeight),{scrollHeight:te}=A.value,se=(te-ce)/fe;se>o.rows&&(A.value.rows=o.maxrows?Math.min(se,o.maxrows):se),A.value.style.overflow=Q}}return he(d,()=>{Ae(re)}),Be(()=>{setTimeout(()=>{ae()},o.autofocusDelay),setTimeout(async()=>{await Ae(),re()},o.autoresizeDelay)}),l({textareaRef:A,autoResize:re}),(Q,H)=>(i(),W(t(He),{as:t(o).as,"data-slot":"root",class:Z(L.value.root({class:[t(o).ui?.root,t(o).class]}))},{default:B(()=>[a("textarea",qe({id:t(k),ref_key:"textareaRef",ref:A,value:t(d),name:t($),rows:t(o).rows,placeholder:t(o).placeholder,"data-slot":"base",class:L.value.base({class:t(o).ui?.base}),disabled:t(S),required:t(o).required},{...Q.$attrs,...t(I)},{onInput:q,onBlur:G,onChange:Y,onFocus:H[0]||(H[0]=(...V)=>t(p)&&t(p)(...V))}),null,16,R0),ye(Q.$slots,"default",{ui:L.value}),t(h)||t(o).avatar||u.leading?(i(),m("span",{key:0,"data-slot":"leading",class:Z(L.value.leading({class:t(o).ui?.leading}))},[ye(Q.$slots,"leading",{ui:L.value},()=>[t(h)&&t(O)?(i(),W(we,{key:0,name:t(O),"data-slot":"leadingIcon",class:Z(L.value.leadingIcon({class:t(o).ui?.leadingIcon}))},null,8,["name","class"])):t(o).avatar?(i(),W(Kt,qe({key:1,size:t(o).ui?.leadingAvatarSize||L.value.leadingAvatarSize()},t(o).avatar,{"data-slot":"leadingAvatar",class:L.value.leadingAvatar({class:t(o).ui?.leadingAvatar})}),null,16,["size","class"])):E("",!0)])],2)):E("",!0),t(C)||u.trailing?(i(),m("span",{key:1,"data-slot":"trailing",class:Z(L.value.trailing({class:t(o).ui?.trailing}))},[ye(Q.$slots,"trailing",{ui:L.value},()=>[t(R)?(i(),W(we,{key:0,name:t(R),"data-slot":"trailingIcon",class:Z(L.value.trailingIcon({class:t(o).ui?.trailingIcon}))},null,8,["name","class"])):E("",!0)])],2)):E("",!0)]),_:3},8,["as","class"]))}}),O0={class:"p-6"},P0={class:"mb-4 flex items-start justify-between gap-3"},j0={class:"min-w-0"},N0={class:"text-lg font-semibold text-gray-900 dark:text-white"},U0={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},W0={key:0,class:"flex items-center justify-center py-12"},H0={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},K0={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Y0={class:"max-h-[500px] overflow-y-auto pr-1"},G0={class:"space-y-5"},Q0={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},J0={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},X0={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},Z0={class:"flex flex-wrap gap-2"},ef=["disabled","onClick"],tf={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},af={class:"flex flex-wrap gap-2"},sf=["disabled","onClick"],nf={class:"mt-1 text-[10px] text-gray-400"},of={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},lf={class:"space-y-2"},rf={key:0,class:"flex items-center gap-2"},uf={class:"space-y-5"},df={class:"mb-1 text-sm font-medium text-gray-700 dark:text-gray-300"},cf={class:"mb-2.5 text-[10px] text-gray-400"},mf={class:"grid grid-cols-2 gap-1.5"},gf={class:"min-w-0"},pf={class:"truncate text-xs font-medium text-gray-600 dark:text-gray-400"},ff={class:"truncate text-[10px] text-gray-400 dark:text-gray-500"},hf={class:"mb-1 flex items-center justify-between"},vf={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},yf={key:0,class:"flex gap-2"},xf={class:"mb-2.5 text-[10px] text-gray-400"},bf={class:"grid grid-cols-2 gap-1.5"},kf=["checked","disabled","onChange"],_f={class:"min-w-0"},wf={class:"truncate text-xs font-medium text-gray-800 dark:text-gray-200"},$f={class:"truncate text-[10px] text-gray-500 dark:text-gray-400"},Cf={class:"mt-6 flex items-center justify-between"},Sf={class:"flex gap-2"},If=de({__name:"AssistantConfigModal",props:{open:{type:Boolean},assistantId:{},readonly:{type:Boolean},scrollToSection:{}},emits:["update:open","saved","created"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l,u=ot(),o=Rt(),d=z(!1),g=z(!1),p=z(null),y=z(!1),_=z("basic"),v=T(()=>[{value:"",label:e("ai.assistant.config.chatTypeAll")},{value:"group",label:e("ai.assistant.config.chatTypeGroup")},{value:"private",label:e("ai.assistant.config.chatTypePrivate")}]),x=[{value:"zh",label:"简体中文"},{value:"en",label:"English"},{value:"ja",label:"日本語"}],b=T(()=>o.builtinToolCatalog.filter(H=>H.category==="core").map(H=>({name:H.name,description:e(`ai.assistant.builtinToolDesc.${H.name}`)}))),k=T(()=>o.builtinToolCatalog.filter(H=>H.category==="analysis").map(H=>({name:H.name,description:e(`ai.assistant.builtinToolDesc.${H.name}`)}))),$=z({name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]}),w=z(""),S=z(null),I=T(()=>$.value.allowedBuiltinTools.length);Be(async()=>{o.builtinToolCatalog.length===0&&await o.loadBuiltinToolCatalog()}),he(()=>[n.open,n.assistantId],async([H,V])=>{H&&(_.value="basic",V?(y.value=!1,await C(V)):n.readonly||(y.value=!0,h()),n.scrollToSection==="presetQuestions"&&(await Ae(),setTimeout(()=>{S.value?.scrollIntoView({behavior:"smooth",block:"center"})},100)))},{immediate:!0});function h(){p.value={id:"",name:"",systemPrompt:"",presetQuestions:[],allowedBuiltinTools:[],applicableChatTypes:[],supportedLocales:[]},$.value={name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]},d.value=!1}async function C(H){d.value=!0;try{p.value=await o.getAssistantConfig(H),p.value&&($.value={name:p.value.name,systemPrompt:p.value.systemPrompt,presetQuestions:[...p.value.presetQuestions],applicableChatType:p.value.applicableChatTypes?.[0]||"",supportedLocales:[...p.value.supportedLocales||[]],allowedBuiltinTools:[...p.value.allowedBuiltinTools||[]]})}catch(V){console.error("[AssistantConfigModal] Failed to load config:",V),u.fail(e("ai.assistant.toast.loadFailed"),{description:String(V)})}finally{d.value=!1}}async function O(){g.value=!0;try{const H={name:$.value.name,systemPrompt:$.value.systemPrompt,presetQuestions:[...$.value.presetQuestions],applicableChatTypes:$.value.applicableChatType?[$.value.applicableChatType]:[],supportedLocales:[...$.value.supportedLocales],allowedBuiltinTools:[...$.value.allowedBuiltinTools]};if(y.value){const V=await o.createAssistant(H);V.success?(u.success(e("ai.assistant.toast.createSuccess")),s("created",V.id),Q()):u.fail(e("ai.assistant.toast.createFailed"),{description:V.error||e("ai.assistant.toast.unknownError")})}else{if(!n.assistantId)return;const V=await o.updateAssistant(n.assistantId,H);V.success?(u.success(e("ai.assistant.toast.saveSuccess")),s("saved"),Q()):u.fail(e("ai.assistant.toast.saveFailed"),{description:V.error||e("ai.assistant.toast.unknownError")})}}catch(H){console.error("[AssistantConfigModal] Save failed:",H),u.fail(e("ai.assistant.toast.saveFailed"),{description:String(H)})}finally{g.value=!1}}async function R(){if(!(!n.assistantId||!p.value?.builtinId)){g.value=!0;try{const H=await o.resetAssistant(n.assistantId);H.success?(u.success(e("ai.assistant.toast.resetSuccess")),await C(n.assistantId),s("saved")):u.fail(e("ai.assistant.toast.resetFailed"),{description:H.error||e("ai.assistant.toast.unknownError")})}catch(H){u.fail(e("ai.assistant.toast.resetFailed"),{description:String(H)})}finally{g.value=!1}}}function L(){const H=w.value.trim();H&&!$.value.presetQuestions.includes(H)&&($.value.presetQuestions.push(H),w.value="")}function A(H){$.value.presetQuestions.splice(H,1)}function M(H){const V=$.value.allowedBuiltinTools.indexOf(H);V>=0?$.value.allowedBuiltinTools.splice(V,1):$.value.allowedBuiltinTools.push(H)}function q(H){return $.value.allowedBuiltinTools.includes(H)}function Y(){$.value.allowedBuiltinTools=k.value.map(H=>H.name)}function G(){$.value.allowedBuiltinTools=[]}function ae(H){$.value.applicableChatType=H}function re(H){const V=$.value.supportedLocales.indexOf(H);V>=0?$.value.supportedLocales.splice(V,1):$.value.supportedLocales.push(H)}function Q(){s("update:open",!1)}return(H,V)=>{const X=Ue,ce=we,fe=Ft,te=V0,se=Xe;return i(),W(se,{open:r.open,ui:{content:"sm:max-w-2xl z-100"},"onUpdate:open":V[5]||(V[5]=N=>s("update:open",N))},{content:B(()=>[a("div",O0,[a("div",P0,[a("div",j0,[a("h2",N0,c(r.readonly?t(e)("ai.assistant.config.viewTitle"):y.value?t(e)("ai.assistant.config.createTitle"):t(e)("ai.assistant.config.editTitle")),1),r.readonly?E("",!0):(i(),m("p",U0,c(t(e)("ai.assistant.config.betaWarning")),1))]),f(X,{icon:"i-heroicons-x-mark",variant:"ghost",size:"sm",class:"shrink-0",onClick:Q})]),d.value?(i(),m("div",W0,[f(ce,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):p.value?(i(),m(ue,{key:1},[a("div",H0,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",_.value==="basic"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:V[0]||(V[0]=N=>_.value="basic")},c(t(e)("ai.assistant.config.tabs.basic")),3),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",_.value==="tools"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:V[1]||(V[1]=N=>_.value="tools")},[ie(c(t(e)("ai.assistant.config.tabs.tools"))+" ",1),I.value>0?(i(),m("span",K0,c(I.value),1)):E("",!0)],2)]),a("div",Y0,[Je(a("div",G0,[a("div",null,[a("label",Q0,c(t(e)("ai.assistant.config.name")),1),f(fe,{modelValue:$.value.name,"onUpdate:modelValue":V[2]||(V[2]=N=>$.value.name=N),class:"w-full",disabled:r.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",J0,c(t(e)("ai.assistant.config.systemPrompt")),1),f(te,{modelValue:$.value.systemPrompt,"onUpdate:modelValue":V[3]||(V[3]=N=>$.value.systemPrompt=N),rows:5,autoresize:"",class:"w-full font-mono text-sm",disabled:r.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",X0,c(t(e)("ai.assistant.config.chatType")),1),a("div",Z0,[(i(!0),m(ue,null,ve(v.value,N=>(i(),m("button",{key:N.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",$.value.applicableChatType===N.value?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:r.readonly,onClick:me=>ae(N.value)},c(N.label),11,ef))),128))])]),a("div",null,[a("label",tf,c(t(e)("ai.assistant.config.locale")),1),a("div",af,[(i(),m(ue,null,ve(x,N=>a("button",{key:N.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",$.value.supportedLocales.includes(N.value)?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:r.readonly,onClick:me=>re(N.value)},c(N.label),11,sf)),64))]),a("p",nf,c(t(e)("ai.assistant.config.localeHint")),1)]),a("div",{ref_key:"presetQuestionsRef",ref:S},[a("label",of,c(t(e)("ai.assistant.config.presetQuestions")),1),a("div",lf,[(i(!0),m(ue,null,ve($.value.presetQuestions,(N,me)=>(i(),m("div",{key:me,class:"flex items-center gap-2"},[f(fe,{modelValue:$.value.presetQuestions[me],"onUpdate:modelValue":be=>$.value.presetQuestions[me]=be,class:"min-w-0 flex-1",size:"sm",disabled:r.readonly},null,8,["modelValue","onUpdate:modelValue","disabled"]),r.readonly?E("",!0):(i(),W(X,{key:0,color:"error",variant:"ghost",icon:"i-heroicons-trash",size:"xs",class:"shrink-0",onClick:be=>A(me)},null,8,["onClick"]))]))),128)),r.readonly?E("",!0):(i(),m("div",rf,[f(fe,{modelValue:w.value,"onUpdate:modelValue":V[4]||(V[4]=N=>w.value=N),placeholder:t(e)("ai.assistant.config.addQuestion"),class:"min-w-0 flex-1",size:"sm",onKeyup:Ge(L,["enter"])},null,8,["modelValue","placeholder"]),f(X,{color:"primary",variant:"soft",icon:"i-heroicons-plus",size:"xs",class:"shrink-0",onClick:L})]))])],512)],512),[[vt,_.value==="basic"]]),Je(a("div",uf,[a("div",null,[a("h3",df,c(t(e)("ai.assistant.config.coreTools")),1),a("p",cf,c(t(e)("ai.assistant.config.coreToolsHint")),1),a("div",mf,[(i(!0),m(ue,null,ve(b.value,N=>(i(),m("label",{key:N.name,class:"flex items-start gap-2 rounded-md border border-gray-200 bg-gray-50/50 px-2.5 py-2 opacity-70 dark:border-gray-700 dark:bg-gray-800/30"},[V[6]||(V[6]=a("input",{type:"checkbox",checked:"",disabled:"",class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-gray-400"},null,-1)),a("div",gf,[a("div",pf,c(N.name),1),a("div",ff,c(N.description),1)])]))),128))])]),a("div",null,[a("div",hf,[a("h3",vf,c(t(e)("ai.assistant.config.analysisTools")),1),r.readonly?E("",!0):(i(),m("div",yf,[a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:Y},c(t(e)("ai.assistant.config.selectAll")),1),V[7]||(V[7]=a("span",{class:"text-[10px] text-gray-300 dark:text-gray-600"},"|",-1)),a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:G},c(t(e)("ai.assistant.config.deselectAll")),1)]))]),a("p",xf,c(t(e)("ai.assistant.config.analysisToolsHint")),1),a("div",bf,[(i(!0),m(ue,null,ve(k.value,N=>(i(),m("label",{key:N.name,class:Z(["flex cursor-pointer items-start gap-2 rounded-md border px-2.5 py-2 transition-colors",q(N.name)?"border-primary-200 bg-primary-50/50 dark:border-primary-800 dark:bg-primary-950/20":"border-gray-200 dark:border-gray-700"])},[a("input",{type:"checkbox",checked:q(N.name),disabled:r.readonly,class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:me=>M(N.name)},null,40,kf),a("div",_f,[a("div",wf,c(N.name),1),a("div",$f,c(N.description),1)])],2))),128))])])],512),[[vt,_.value==="tools"]])]),a("div",Cf,[a("div",null,[!r.readonly&&!y.value&&p.value?.builtinId?(i(),W(X,{key:0,variant:"outline",color:"warning",loading:g.value,onClick:R},{default:B(()=>[ie(c(t(e)("ai.assistant.config.resetDefault")),1)]),_:1},8,["loading"])):E("",!0)]),a("div",Sf,[f(X,{variant:"ghost",onClick:Q},{default:B(()=>[ie(c(r.readonly?t(e)("common.close"):t(e)("common.cancel")),1)]),_:1}),r.readonly?E("",!0):(i(),W(X,{key:0,color:"primary",loading:g.value,onClick:O},{default:B(()=>[ie(c(y.value?t(e)("ai.assistant.config.create"):t(e)("common.save")),1)]),_:1},8,["loading"]))])])],64)):E("",!0)])]),_:1},8,["open"])}}}),Tf={class:"p-6"},Mf={class:"mb-4 flex items-center justify-between"},zf={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Af={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},qf={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Lf={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Df={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Ef={class:"min-w-0 flex-1"},Bf={class:"flex items-center gap-2"},Ff={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Rf={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Vf={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},Of={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Pf={class:"flex shrink-0 items-center gap-1.5"},jf=["title","onClick"],Nf=["title","onClick"],Uf=["title","onClick"],Wf={key:0,class:"py-12 text-center text-sm text-gray-400"},Hf={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Kf={key:0,class:"py-12 text-center text-sm text-gray-400"},Yf={key:1,class:"py-12 text-center"},Gf={class:"text-sm text-gray-500 dark:text-gray-400"},Qf={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Jf={class:"min-w-0 flex-1"},Xf={class:"flex items-center gap-2"},Zf={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},eh={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},th={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},ah={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},sh={class:"flex shrink-0 items-center gap-2"},nh=["disabled","onClick"],oh={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},lh=["disabled","onClick"],ih=["title","onClick"],rh={key:3,class:"py-12 text-center text-sm text-gray-400"},uh=de({__name:"AssistantMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","view-config","create"],setup(r,{emit:l}){const{t:e,locale:n}=_e(),s=ot(),u=r,o=l,d=Rt(),{assistants:g,cloudCatalogWithStatus:p,cloudLoading:y,cloudError:_}=dt(d),v=z("local"),x=T(()=>{const A=n.value;return[...g.value].filter(M=>!M.supportedLocales?.length||M.supportedLocales.some(q=>A.startsWith(q))).sort((M,q)=>M.name.localeCompare(q.name))}),b=T(()=>[...p.value].sort((A,M)=>A.name.localeCompare(M.name))),k=z(new Set);he(()=>[u.open,v.value],([A,M])=>{A&&M==="market"&&d.fetchCloudCatalog(n.value)},{immediate:!0});function $(A){o("configure",A)}async function w(A){Ot(A)||await d.deleteAssistant(A)}async function S(A){await d.duplicateAssistant(A)}function I(){o("create")}async function h(A){if(!k.value.has(A.id)){k.value=new Set([...k.value,A.id]);try{const M=await d.importFromCloud(A);M.success?s.success(e("ai.assistant.market.importSuccess")):s.fail(e("ai.assistant.market.importFailed"),{description:M.error})}finally{const M=new Set(k.value);M.delete(A.id),k.value=M}}}async function C(A){if(!k.value.has(A.id)){k.value=new Set([...k.value,A.id]);try{const M=await d.deleteAssistant(A.id);if(!M.success){s.fail(e("ai.assistant.market.importFailed"),{description:M.error});return}const q=await d.importFromCloud(A);q.success?s.success(e("ai.assistant.market.importSuccess")):s.fail(e("ai.assistant.market.importFailed"),{description:q.error})}finally{const M=new Set(k.value);M.delete(A.id),k.value=M}}}function O(A){o("view-config",A)}function R(){d.fetchCloudCatalog(n.value)}function L(A){return A?.length?A.map(q=>e(q==="group"?"ai.assistant.config.chatTypeGroup":"ai.assistant.config.chatTypePrivate")).join(" / "):null}return(A,M)=>{const q=we,Y=Xe;return i(),W(Y,{open:r.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":M[3]||(M[3]=G=>o("update:open",G))},{content:B(()=>[a("div",Tf,[a("div",Mf,[a("h2",zf,c(t(e)("ai.assistant.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:M[0]||(M[0]=G=>o("update:open",!1))},[f(q,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Af,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",v.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[1]||(M[1]=G=>v.value="local")},[ie(c(t(e)("ai.assistant.market.tabs.local"))+" ",1),x.value.length?(i(),m("span",qf,c(x.value.length),1)):E("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",v.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[2]||(M[2]=G=>v.value="market")},c(t(e)("ai.assistant.market.tabs.market")),3)]),Je(a("div",null,[a("p",Lf,c(t(e)("ai.assistant.market.localHint")),1),a("div",Df,[(i(!0),m(ue,null,ve(x.value,G=>(i(),m("div",{key:G.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Ef,[a("div",Bf,[a("h3",Ff,c(G.name),1),L(G.applicableChatTypes)?(i(),m("span",Rf,c(L(G.applicableChatTypes)),1)):E("",!0),t(Ot)(G.id)?(i(),m("span",Vf,c(t(e)("ai.assistant.market.default")),1)):E("",!0)]),a("p",Of,c(G.systemPrompt),1)]),a("div",Pf,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:t(e)("common.edit"),onClick:Oe(ae=>$(G.id),["stop"])},[f(q,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,jf),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:t(e)("ai.assistant.market.duplicate"),onClick:Oe(ae=>S(G.id),["stop"])},[f(q,{name:"i-heroicons-document-duplicate",class:"h-4 w-4"})],8,Nf),t(Ot)(G.id)?E("",!0):(i(),m("button",{key:0,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:t(e)("common.delete"),onClick:Oe(ae=>w(G.id),["stop"])},[f(q,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,Uf))])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:I},[f(q,{name:"i-heroicons-plus",class:"h-4 w-4"}),ie(" "+c(t(e)("ai.assistant.market.addAssistant")),1)]),x.value.length===0?(i(),m("div",Wf,c(t(e)("ai.assistant.market.noLocal")),1)):E("",!0)],512),[[vt,v.value==="local"]]),Je(a("div",null,[a("p",Hf,c(t(e)("ai.assistant.market.marketHint")),1),t(y)?(i(),m("div",Kf,c(t(e)("ai.assistant.market.loading")),1)):t(_)?(i(),m("div",Yf,[a("p",Gf,c(t(e)("ai.assistant.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:R},c(t(e)("ai.assistant.market.retry")),1)])):(i(),m("div",Qf,[(i(!0),m(ue,null,ve(b.value,G=>(i(),m("div",{key:G.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Jf,[a("div",Xf,[a("h3",Zf,c(G.name),1),L(G.applicableChatTypes)?(i(),m("span",eh,c(L(G.applicableChatTypes)),1)):E("",!0),t(Ot)(G.id)?(i(),m("span",th,c(t(e)("ai.assistant.market.default")),1)):E("",!0)]),a("p",ah,c(G.description),1)]),a("div",sh,[G.imported?(i(),m(ue,{key:1},[a("span",oh,c(t(e)("ai.assistant.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:k.value.has(G.id),onClick:ae=>C(G)},c(k.value.has(G.id)?t(e)("ai.assistant.market.importing"):t(e)("ai.assistant.market.reimport")),9,lh)],64)):(i(),m("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:k.value.has(G.id),onClick:ae=>h(G)},c(k.value.has(G.id)?t(e)("ai.assistant.market.importing"):t(e)("ai.assistant.market.import")),9,nh)),G.imported?(i(),m("button",{key:2,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:t(e)("ai.assistant.market.viewConfig"),onClick:Oe(ae=>O(G.id),["stop"])},[f(q,{name:"i-heroicons-eye",class:"h-4 w-4"})],8,ih)):E("",!0)])]))),128))])),!t(y)&&!t(_)&&b.value.length===0?(i(),m("div",rh,c(t(e)("ai.assistant.market.noCatalog")),1)):E("",!0)],512),[[vt,v.value==="market"]])])]),_:1},8,["open"])}}}),dh={class:"p-5"},ch={class:"flex items-start gap-3"},mh={class:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-primary-50 text-primary-600 dark:bg-primary-950/40 dark:text-primary-400"},gh={class:"min-w-0"},ph={class:"font-semibold text-gray-900 dark:text-white"},fh={class:"mt-1.5 text-sm leading-6 text-gray-600 dark:text-gray-400"},hh={class:"mt-4 rounded-lg bg-gray-50 px-3 py-2.5 dark:bg-gray-800/70"},vh={class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},yh={class:"truncate"},xh={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},bh={class:"mt-5 flex justify-end gap-2"},kh=de({__name:"AssistantUpgradeModal",props:{open:{type:Boolean},backupName:{},upgrading:{type:Boolean},skipping:{type:Boolean}},emits:["skip","confirm"],setup(r,{emit:l}){const e=l,{t:n}=_e();return(s,u)=>{const o=we,d=Ue,g=Xe;return i(),W(g,{open:r.open,dismissible:!1,ui:{content:"sm:max-w-md z-50",overlay:"z-40"}},{content:B(()=>[a("div",dh,[a("div",ch,[a("div",mh,[f(o,{name:"i-lucide-sparkles",class:"h-5 w-5"})]),a("div",gh,[a("h3",ph,c(t(n)("ai.assistant.upgrade.title")),1),a("p",fh,c(t(n)("ai.assistant.upgrade.message",{backupName:r.backupName})),1)])]),a("div",hh,[a("div",vh,[f(o,{name:"i-lucide-copy-check",class:"h-4 w-4 shrink-0 text-gray-400"}),a("span",yh,c(r.backupName),1)])]),a("p",xh,c(t(n)("ai.assistant.upgrade.skipHint")),1),a("div",bh,[f(d,{variant:"soft",loading:r.skipping,disabled:r.upgrading,onClick:u[0]||(u[0]=p=>e("skip"))},{default:B(()=>[ie(c(t(n)("ai.assistant.upgrade.skip")),1)]),_:1},8,["loading","disabled"]),f(d,{color:"primary",loading:r.upgrading,disabled:r.skipping,onClick:u[1]||(u[1]=p=>e("confirm"))},{default:B(()=>[ie(c(t(n)("ai.assistant.upgrade.confirm")),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["open"])}}}),_h={class:"p-6"},wh={class:"mb-4 flex items-center justify-between"},$h={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Ch={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Sh={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Ih={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Th={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Mh={class:"min-w-0 flex-1"},zh={class:"flex items-center gap-2"},Ah={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},qh={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Lh={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Dh={key:0,class:"mt-1.5 flex flex-wrap gap-1"},Eh={class:"flex shrink-0 items-center gap-1.5"},Bh=["title","onClick"],Fh=["title","onClick"],Rh={key:0,class:"py-12 text-center text-sm text-gray-400"},Vh={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Oh={key:0,class:"py-12 text-center text-sm text-gray-400"},Ph={key:1,class:"py-12 text-center"},jh={class:"text-sm text-gray-500 dark:text-gray-400"},Nh={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Uh={class:"min-w-0 flex-1"},Wh={class:"flex items-center gap-2"},Hh={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Kh={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Yh={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Gh={key:0,class:"mt-1.5 flex flex-wrap gap-1"},Qh={class:"flex shrink-0 items-center gap-2"},Jh=["disabled","onClick"],Xh={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},Zh=["disabled","onClick"],ev={key:3,class:"py-12 text-center text-sm text-gray-400"},tv=de({__name:"SkillMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","create"],setup(r,{emit:l}){const{t:e,locale:n}=_e(),s=ot(),u=r,o=l,d=It(),{skills:g,cloudCatalogWithStatus:p,cloudLoading:y,cloudError:_}=dt(d),v=z("local"),x=z(new Set);Be(()=>{d.setFilterContext("group",n.value)}),he(()=>[u.open,v.value],([R,L])=>{R&&L==="market"&&(d.setFilterContext("group",n.value),d.fetchCloudCatalog())},{immediate:!0});const b=T(()=>[...g.value].sort((R,L)=>R.name.localeCompare(L.name))),k=T(()=>[...p.value].sort((R,L)=>R.name.localeCompare(L.name)));function $(R){return e(R==="group"?"ai.skill.config.chatScopeGroup":R==="private"?"ai.skill.config.chatScopePrivate":"ai.skill.config.chatScopeAll")}function w(R){o("configure",R)}async function S(R){await d.deleteSkill(R)}function I(){o("create")}async function h(R){if(!x.value.has(R.id)){x.value=new Set([...x.value,R.id]);try{const L=await d.importFromCloud(R);L.success?s.success(e("ai.skill.market.importSuccess")):s.fail(e("ai.skill.market.importFailed"),{description:L.error})}finally{const L=new Set(x.value);L.delete(R.id),x.value=L}}}async function C(R){if(!x.value.has(R.id)){x.value=new Set([...x.value,R.id]);try{const L=await d.deleteSkill(R.id);if(!L.success){s.fail(e("ai.skill.market.importFailed"),{description:L.error});return}const A=await d.importFromCloud(R);A.success?s.success(e("ai.skill.market.importSuccess")):s.fail(e("ai.skill.market.importFailed"),{description:A.error})}finally{const L=new Set(x.value);L.delete(R.id),x.value=L}}}function O(){d.fetchCloudCatalog()}return(R,L)=>{const A=we,M=Xe;return i(),W(M,{open:r.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":L[3]||(L[3]=q=>o("update:open",q))},{content:B(()=>[a("div",_h,[a("div",wh,[a("h2",$h,c(t(e)("ai.skill.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:L[0]||(L[0]=q=>o("update:open",!1))},[f(A,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Ch,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",v.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:L[1]||(L[1]=q=>v.value="local")},[ie(c(t(e)("ai.skill.market.tabs.local"))+" ",1),t(g).length?(i(),m("span",Sh,c(t(g).length),1)):E("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",v.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:L[2]||(L[2]=q=>v.value="market")},c(t(e)("ai.skill.market.tabs.market")),3)]),Je(a("div",null,[a("p",Ih,c(t(e)("ai.skill.market.localHint")),1),a("div",Th,[(i(!0),m(ue,null,ve(b.value,q=>(i(),m("div",{key:q.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Mh,[a("div",zh,[a("h3",Ah,c(q.name),1),a("span",qh,c($(q.chatScope)),1)]),a("p",Lh,c(q.description),1),q.tags.length?(i(),m("div",Dh,[(i(!0),m(ue,null,ve(q.tags,Y=>(i(),m("span",{key:Y,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(Y),1))),128))])):E("",!0)]),a("div",Eh,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:t(e)("common.edit"),onClick:Oe(Y=>w(q.id),["stop"])},[f(A,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,Bh),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:t(e)("common.delete"),onClick:Oe(Y=>S(q.id),["stop"])},[f(A,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,Fh)])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:I},[f(A,{name:"i-heroicons-plus",class:"h-4 w-4"}),ie(" "+c(t(e)("ai.skill.market.addSkill")),1)]),b.value.length===0?(i(),m("div",Rh,c(t(e)("ai.skill.market.noLocal")),1)):E("",!0)],512),[[vt,v.value==="local"]]),Je(a("div",null,[a("p",Vh,c(t(e)("ai.skill.market.marketHint")),1),t(y)?(i(),m("div",Oh,c(t(e)("ai.skill.market.loading")),1)):t(_)?(i(),m("div",Ph,[a("p",jh,c(t(e)("ai.skill.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:O},c(t(e)("ai.skill.market.retry")),1)])):(i(),m("div",Nh,[(i(!0),m(ue,null,ve(k.value,q=>(i(),m("div",{key:q.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Uh,[a("div",Wh,[a("h3",Hh,c(q.name),1),a("span",Kh,c($(q.chatScope)),1)]),a("p",Yh,c(q.description),1),q.tags?.length?(i(),m("div",Gh,[(i(!0),m(ue,null,ve(q.tags,Y=>(i(),m("span",{key:Y,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(Y),1))),128))])):E("",!0)]),a("div",Qh,[q.imported?(i(),m(ue,{key:1},[a("span",Xh,c(t(e)("ai.skill.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:x.value.has(q.id),onClick:Y=>C(q)},c(x.value.has(q.id)?t(e)("ai.skill.market.importing"):t(e)("ai.skill.market.reimport")),9,Zh)],64)):(i(),m("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:x.value.has(q.id),onClick:Y=>h(q)},c(x.value.has(q.id)?t(e)("ai.skill.market.importing"):t(e)("ai.skill.market.import")),9,Jh))])]))),128))])),!t(y)&&!t(_)&&k.value.length===0?(i(),m("div",ev,c(t(e)("ai.skill.market.noCatalog")),1)):E("",!0)],512),[[vt,v.value==="market"]])])]),_:1},8,["open"])}}}),av={class:"p-6"},sv={class:"mb-4 flex items-center justify-between"},nv={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},ov={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},lv={key:0,class:"flex h-64 items-center justify-center text-gray-400"},iv={class:"mt-4 flex justify-end gap-2"},rv=["disabled"],uv=`---
102
- name: ""
103
- description: ""
104
- tags: []
105
- chatScope: all
106
- tools: []
107
- ---
108
-
109
- `,dv=de({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l,u=It(),o=z(""),d=z(!1),g=z(!1),p=z(!1);he(()=>[n.open,n.skillId],async([_,v])=>{if(_){if(!v){p.value=!0,o.value=uv;return}p.value=!1,d.value=!0;try{const x=await u.getSkillConfig(v);if(x){const b=["---",`name: "${x.name}"`,`description: "${x.description}"`,`tags: [${x.tags.map(k=>`"${k}"`).join(", ")}]`,`chatScope: ${x.chatScope}`,x.tools.length?`tools: [${x.tools.map(k=>`"${k}"`).join(", ")}]`:"tools: []",x.builtinId?`builtinId: ${x.builtinId}`:"","---","",x.prompt].filter(Boolean).join(`
110
- `);o.value=b}}finally{d.value=!1}}},{immediate:!0});async function y(){if(o.value.trim()){g.value=!0;try{if(p.value){const _=await u.createSkill(o.value);_.success&&_.id&&(s("created",_.id),s("update:open",!1))}else n.skillId&&(await u.updateSkill(n.skillId,o.value)).success&&(s("saved"),s("update:open",!1))}finally{g.value=!1}}}return(_,v)=>{const x=we,b=Xe;return i(),W(b,{open:r.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":v[3]||(v[3]=k=>s("update:open",k))},{content:B(()=>[a("div",av,[a("div",sv,[a("h2",nv,c(p.value?t(e)("ai.skill.config.createTitle"):t(e)("ai.skill.config.editTitle")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:v[0]||(v[0]=k=>s("update:open",!1))},[f(x,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("p",ov,c(t(e)("ai.skill.config.rawEditorHint")),1),d.value?(i(),m("div",lv,[f(x,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):Je((i(),m("textarea",{key:1,"onUpdate:modelValue":v[1]||(v[1]=k=>o.value=k),class:"h-[400px] w-full resize-none rounded-lg border border-gray-300 bg-gray-50 p-3 font-mono text-xs text-gray-900 focus:border-primary-500 focus:ring-1 focus:ring-primary-500 dark:border-gray-600 dark:bg-page-dark dark:text-gray-100",spellcheck:"false"},null,512)),[[wt,o.value]]),a("div",iv,[a("button",{class:"rounded-lg px-4 py-2 text-sm text-gray-500 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:v[2]||(v[2]=k=>s("update:open",!1))},c(t(e)("common.cancel")),1),a("button",{class:"rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:g.value||!o.value.trim(),onClick:y},c(p.value?t(e)("ai.skill.config.create"):t(e)("ai.skill.config.save")),9,rv)])])]),_:1},8,["open"])}}}),cv={key:0,class:"relative"},mv={class:"relative flex flex-nowrap gap-2"},gv=["disabled"],pv=["disabled"],fv={class:"inline-flex items-center gap-1"},hv={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},vv={class:"mb-1.5 flex justify-start"},yv={class:"flex flex-wrap gap-2"},xv=["disabled","onClick"],ua="rounded-full ring-1 ring-inset ring-gray-200/80 bg-white/60 shadow-[0_2px_8px_-2px_rgba(0,0,0,0.05)] backdrop-blur-md px-3 py-1.5 text-xs text-gray-600 transition-all duration-300 hover:-translate-y-[1px] hover:ring-primary-300 hover:bg-white/90 hover:text-primary-600 hover:shadow-[0_4px_12px_-2px_rgba(0,0,0,0.08)] disabled:cursor-not-allowed disabled:opacity-50 dark:ring-gray-700/60 dark:bg-gray-800/60 dark:text-gray-300 dark:hover:ring-primary-500/50 dark:hover:bg-gray-800/90 dark:hover:text-primary-400",bv=de({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l,u=z(!1);let o=null;function d(_){u.value=!1,s("select",_)}function g(){n.disabled||n.questions.length===0||(o&&(clearTimeout(o),o=null),u.value=!0)}function p(){o=setTimeout(()=>{u.value=!1},150)}function y(){u.value=!1,s("editQuestions")}return Bt(()=>{o&&clearTimeout(o)}),(_,v)=>{const x=we;return r.leadingActionLabel||r.questions.length>0?(i(),m("div",cv,[a("div",mv,[r.leadingActionLabel?(i(),m("button",{key:0,class:Z(ua),disabled:n.disabled,onClick:v[0]||(v[0]=b=>s("leadingAction"))},c(r.leadingActionLabel),9,gv)):E("",!0),r.questions.length>0?(i(),m("div",{key:1,class:"relative shrink-0",onMouseenter:g,onMouseleave:p},[a("button",{class:Z([ua,u.value?"ring-primary-300 bg-white/90 text-primary-600 dark:ring-primary-500/50 dark:bg-gray-800/90 dark:text-primary-400":""]),disabled:n.disabled},[a("span",fv,[f(x,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),ie(" "+c(t(e)("ai.chat.input.quickAsk")),1)])],10,pv),f(ht,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-2"},{default:B(()=>[u.value?(i(),m("div",hv,[a("div",vv,[a("button",{class:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400",onClick:y},[f(x,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),ie(" "+c(t(e)("ai.chat.input.editQuickAsk")),1)])]),a("div",yv,[(i(!0),m(ue,null,ve(r.questions,(b,k)=>(i(),m("button",{key:k,class:Z(ua),disabled:n.disabled,onClick:$=>d(b)},c(b),9,xv))),128))])])):E("",!0)]),_:1})],32)):E("",!0)])])):E("",!0)}}}),kv=30;function _v(r,l){const e=z(null),n=z(!0),s=z(!1);function u(p=!1){setTimeout(()=>{e.value&&(p||n.value)&&(e.value.scrollTop=e.value.scrollHeight,n.value=!0,s.value=!1)},100)}function o(p){p.deltaY<0&&l.value&&(n.value=!1,s.value=!0)}function d(){if(!e.value)return;const{scrollTop:p,scrollHeight:y,clientHeight:_}=e.value;y-p-_<kv&&(n.value=!0,s.value=!1)}function g(){u(!0)}return he(()=>{const p=r.value[r.value.length-1];return[r.value.length,p?.content,p?.contentBlocks?.length]},()=>u()),Be(()=>{e.value&&(e.value.addEventListener("scroll",d),e.value.addEventListener("wheel",o,{passive:!0})),r.value.length>0&&u(!0)}),Bt(()=>{e.value&&(e.value.removeEventListener("scroll",d),e.value.removeEventListener("wheel",o))}),{messagesContainer:e,showScrollToBottom:s,scrollToBottom:u,handleScrollToBottom:g}}function wv(){const r=Rt(),l=It(),e=z(!1),n=z(null),s=z(!1),u=z(!1),o=z(!1),d=z(!1),g=z(null);function p(C){n.value=C,s.value=!1,e.value=!0}function y(){u.value=!0}function _(C){n.value=C,s.value=!1,e.value=!0}function v(C){n.value=C,s.value=!0,e.value=!0}function x(){n.value=null,s.value=!1,e.value=!0}async function b(C){await r.loadAssistants(),await r.loadBuiltinCatalog()}async function k(){await r.loadAssistants()}function $(){o.value=!0}function w(C){g.value=C,d.value=!0}function S(){g.value=null,d.value=!0}async function I(){await l.loadSkills()}async function h(C){await l.loadSkills(),await l.loadBuiltinCatalog()}return{configModalVisible:e,configModalAssistantId:n,configModalReadonly:s,marketModalVisible:u,handleConfigureAssistant:p,handleOpenMarket:y,handleMarketConfigure:_,handleMarketViewConfig:v,handleCreateAssistant:x,handleAssistantCreated:b,handleAssistantConfigSaved:k,skillMarketModalVisible:o,skillConfigModalVisible:d,skillConfigModalSkillId:g,handleOpenSkillMarket:$,handleSkillMarketConfigure:w,handleCreateSkill:S,handleSkillConfigSaved:I,handleSkillCreated:h}}function $v(r){const l=[];let e=null;for(const n of r)n.role==="user"?(e&&l.push({user:e,assistant:null,standalone:null,id:e.id}),e=n):n.role==="assistant"?(l.push({user:e,assistant:n,standalone:null,id:e?.id||n.id}),e=null):(e&&(l.push({user:e,assistant:null,standalone:null,id:e.id}),e=null),l.push({user:null,assistant:null,standalone:n,id:n.id}));return e&&l.push({user:e,assistant:null,standalone:null,id:e.id}),l}const Cv={class:"main-content flex h-full overflow-hidden"},Sv={class:"flex h-full flex-1 overflow-hidden"},Iv={class:"flex h-full flex-1"},Tv={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Mv={key:0,class:"flex items-center gap-1.5 px-3 py-1.5"},zv=["disabled"],Av={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},qv={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},Lv={class:"text-primary-600 dark:text-primary-400"},Dv={key:1,class:"relative mb-8 w-full max-w-lg"},Ev={class:"flex w-full justify-center"},Bv={key:1,class:"qa-pair space-y-6 pb-4"},Fv={key:1,class:"px-4 pb-2"},Rv={class:"mx-auto max-w-[740px]"},Vv={class:"px-4 pb-2"},Ov={class:"mx-auto max-w-[740px]"},Pv={key:0,class:"w-80 shrink-0 border-l border-gray-200 bg-gray-50/50 p-4 dark:border-gray-800 dark:bg-page-dark/50"},jv=de({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(r,{expose:l}){const{t:e}=_e(),n=ot(),s=Ca(),u=Rt(),o=It(),d=r,{messages:g,sourceMessages:p,currentKeywords:y,isLoadingSource:_,isAIThinking:v,currentAIChatId:x,currentToolStatus:b,toolsUsedInCurrentRound:k,sessionTokenUsage:$,agentStatus:w,selectedAssistantId:S,sendMessage:I,editMessageAndRegenerate:h,loadAIChat:C,startNewAIChat:O,loadMoreSourceMessages:R,updateMaxMessages:L,stopGeneration:A,selectAssistantForSession:M}=Hl(d.sessionId,d.sessionName,d.timeFilter,d.chatType??"group",s.locale),q=_v(g,v),{showScrollToBottom:Y,scrollToBottom:G,handleScrollToBottom:ae}=q,{configModalVisible:re,configModalAssistantId:Q,configModalReadonly:H,marketModalVisible:V,skillMarketModalVisible:X,skillConfigModalVisible:ce,skillConfigModalSkillId:fe,handleConfigureAssistant:te,handleOpenMarket:se,handleMarketConfigure:N,handleMarketViewConfig:me,handleCreateAssistant:be,handleAssistantCreated:xe,handleAssistantConfigSaved:le,handleOpenSkillMarket:J,handleSkillMarketConfigure:ee,handleCreateSkill:pe,handleSkillConfigSaved:ke,handleSkillCreated:$e}=wv(),De=za(),Fe=z(0);he(()=>x.value,async Ce=>{if(!Ce){Fe.value=0;return}try{const Ie=await Ye().estimateContextTokens(Ce);Ie.success&&(Fe.value=Ie.tokens)}catch{Fe.value=0}},{immediate:!0});const Te=T(()=>u.selectedAssistant?.presetQuestions??[]),Pe=T(()=>d.chatType??"group"),je=z(!1),Se=z(!1),ge=z(!0),P=z(void 0),F=z(null),K=z(null),D=z(null),j=z(!1),U=z(!1),oe=z(!1),ne=T(()=>{const Ce=D.value?.name||e("ai.assistant.fallbackName");return e("ai.assistant.upgrade.backupName",{name:Ce})}),Ve=T(()=>$v(g.value));async function Le(){ge.value=!0;try{Se.value=await ba().hasConfig()}catch(Ce){console.error("检查 LLM 配置失败:",Ce),Se.value=!1}finally{ge.value=!1}}async function Me(){await Le(),Se.value&&await L()}l({refreshConfig:Me});const Re=T(()=>{const Ce=u.selectedAssistant;if(!Ce)return{name:"",preview:""};const Ie=Ce.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:Ce.name,preview:Ie}}),st=T(()=>!!S.value&&g.value.length===0&&!v.value);function na(){n.warn(e("ai.chat.backgroundTask.runningTitle"),{description:e("ai.chat.backgroundTask.runningDescription")})}function Fa(){n.warn(e("ai.chat.backgroundTask.blockedAction"))}function Cs(Ce){if(Ce!==S.value){if(!M(Ce)){Fa();return}o.activateSkill(null),O()}}async function Ss(Ce){const Ie=await I(Ce);!Ie.success&&Ie.reason==="busy"&&na()}function Is(){const Ce=u.selectedAssistant?.id;Ce&&(P.value="presetQuestions",te(Ce))}function Ts(Ce){re.value=Ce,Ce||(P.value=void 0)}function Ms(){K.value?.openSkillSelector()}function zs(){G(!0)}async function Ra(){const Ce=await u.checkDefaultAssistantUpgrade(s.locale);Ce&&(D.value=Ce,j.value=!0)}async function As(){const Ce=D.value;if(!(!Ce||U.value||oe.value)){oe.value=!0;try{const Ie=await u.skipAssistantUpgrade(Ce);if(!Ie.success){n.fail(e("ai.assistant.upgrade.skipFailed"),{description:Ie.error||e("ai.assistant.toast.unknownError")});return}j.value=!1,D.value=null}finally{oe.value=!1}}}async function qs(){const Ce=D.value;if(!(!Ce||U.value||oe.value)){U.value=!0;try{const Ie=ne.value,bt=await u.upgradeAssistantWithBackup(Ce,Ie);if(!bt.success){n.fail(e("ai.assistant.upgrade.failed"),{description:bt.error||e("ai.assistant.toast.unknownError")});return}j.value=!1,D.value=null,n.success(e("ai.assistant.upgrade.success"),{description:e("ai.assistant.upgrade.successDescription",{name:Ie})})}finally{U.value=!1}}}async function Ls(Ce){const Ie=await I(Ce.content,{mentionedMembers:Ce.mentionedMembers});if(!Ie.success){Ie.reason==="busy"&&na();return}G(!0),F.value?.refresh()}async function Ds(Ce){const Ie=await h(Ce.messageId,Ce.content,{overwriteSubsequent:Ce.overwriteSubsequent});if(!Ie.success){Ie.reason==="busy"&&na();return}G(!0),F.value?.refresh()}async function Es(Ce){if(x.value)try{const Ie=await Ye().forkAIChat(x.value,Ce);await C(Ie.id),F.value?.refresh(),G(!0),n.success(e("ai.chat.fork.success"))}catch(Ie){n.fail(e("ai.chat.fork.failed"),{description:String(Ie)})}}function Bs(){je.value=!je.value}async function Fs(){await R()}async function Rs(Ce){await C(Ce),G(!0)}function Vs(){if(v.value){Fa();return}O()}function Os(Ce){x.value===Ce&&O()}function Ps(){A()}return Le(),L(),Be(()=>{Ra()}),he(()=>s.locale,()=>{Ra()}),he(()=>De.aiConfigVersion,async()=>{await Me()}),(Ce,Ie)=>{const bt=we,js=St;return i(),m("div",Cv,[f(Nd,{ref_key:"conversationListRef",ref:F,"session-id":r.sessionId,"active-id":t(x),disabled:t(v),onSelect:Rs,onCreate:Vs,onDelete:Os},null,8,["session-id","active-id","disabled"]),a("div",Sv,[a("div",Iv,[a("div",Tv,[t(g).length>0||t(v)?(i(),m("div",Mv,[a("button",{class:Z(["flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":t(v)||!t(u).selectedAssistant?.id}]),disabled:t(v)||!t(u).selectedAssistant?.id,onClick:Ie[0]||(Ie[0]=ze=>t(te)(t(u).selectedAssistant.id))},[f(bt,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),a("span",null,c(t(u).selectedAssistant?.name||t(e)("ai.assistant.fallbackName")),1)],10,zv)])):E("",!0),a("div",{ref:t(q).messagesContainer,class:Z(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":t(g).length===0&&!t(v)}])},[a("div",{class:Z(["mx-auto max-w-3xl space-y-6",{"flex min-h-full flex-col justify-center px-4 pb-32 pt-4 space-y-0!":t(g).length===0&&!t(v),"px-4":t(g).length>0||t(v)}])},[t(g).length===0&&!t(v)?(i(),m("div",Av,[Re.value.name?(i(),m("h2",qv,[ie(c(t(e)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),a("span",Lv,c(Re.value.name),1),ie(" "+c(t(e)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):E("",!0),st.value&&Re.value.name?(i(),m("div",Dv,[a("p",{class:"cursor-pointer pr-7 text-center text-sm leading-relaxed text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 line-clamp-2",onClick:Ie[1]||(Ie[1]=ze=>t(te)(t(u).selectedAssistant.id))},[f(js,{text:t(e)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:B(()=>[ie(c(Re.value.preview),1)]),_:1},8,["text"])]),a("button",{type:"button",class:"absolute bottom-0 right-0 rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:Ie[2]||(Ie[2]=Oe(ze=>t(te)(t(u).selectedAssistant.id),["stop"]))},[f(bt,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):E("",!0),a("div",Ev,[f(B0,{"chat-type":Pe.value,locale:t(s).locale,"selected-id":t(S),onSelect:Cs,onMarket:t(se)},null,8,["chat-type","locale","selected-id","onMarket"])])])):E("",!0),(i(!0),m(ue,null,ve(Ve.value,ze=>(i(),m(ue,{key:ze.id},[ze.standalone?(i(),W(ra,{key:0,role:ze.standalone.role,content:ze.standalone.content,timestamp:ze.standalone.timestamp},null,8,["role","content","timestamp"])):(i(),m("div",Bv,[ze.user&&(ze.user.role==="user"||ze.user.content)?(i(),W(ra,{key:0,role:ze.user.role,"message-id":ze.user.id,content:ze.user.content,timestamp:ze.user.timestamp,"is-streaming":ze.user.isStreaming,"content-blocks":ze.user.contentBlocks,editable:!t(v),onEdit:Ds},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):E("",!0),ze.assistant&&(ze.assistant.content||ze.assistant.contentBlocks&&ze.assistant.contentBlocks.length>0)?(i(),W(ra,{key:1,role:ze.assistant.role,"message-id":ze.assistant.id,content:ze.assistant.content,timestamp:ze.assistant.timestamp,"is-streaming":ze.assistant.isStreaming,"content-blocks":ze.assistant.contentBlocks,"show-capture-button":!ze.assistant.isStreaming,onFork:Es},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","show-capture-button"])):E("",!0)]))],64))),128)),t(v)&&!t(g)[t(g).length-1]?.content&&!(t(g)[t(g).length-1]?.contentBlocks?.length??0)?(i(),W(r0,{key:1,"current-tool-status":t(b),"tools-used":t(k),"agent-status":t(w)},null,8,["current-tool-status","tools-used","agent-status"])):E("",!0)],2)],2),f(ht,{name:"fade-up"},{default:B(()=>[t(Y)?(i(),m("button",{key:0,class:"absolute bottom-20 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm transition-all hover:bg-gray-700 dark:bg-gray-700/90 dark:hover:bg-gray-600",onClick:Ie[3]||(Ie[3]=(...ze)=>t(ae)&&t(ae)(...ze))},[f(bt,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),a("span",null,c(t(e)("ai.chat.scrollToBottom")),1)])):E("",!0)]),_:1}),t(g).length===0&&!t(v)?(i(),m("div",Fv,[a("div",Rv,[f(bv,{questions:Te.value,"leading-action-label":t(e)("ai.chat.input.useSkill"),onSelect:Ss,onLeadingAction:Ms,onEditQuestions:Is},null,8,["questions","leading-action-label"])])])):E("",!0),a("div",Vv,[a("div",Ov,[f(Yp,{ref_key:"chatInputRef",ref:K,"session-id":r.sessionId,disabled:t(v),status:t(v)?"streaming":"ready","chat-type":Pe.value,onSend:Ls,onStop:Ps,onManageSkills:t(J),onSkillActivated:zs},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),f(T0,{"session-token-usage":t($),"agent-status":t(w),"current-ai-chat-id":t(x),"current-messages":t(g),"fallback-title":r.sessionName,"estimated-context-tokens":Fe.value},null,8,["session-token-usage","agent-status","current-ai-chat-id","current-messages","fallback-title","estimated-context-tokens"])])])])]),f(ht,{name:"slide-fade"},{default:B(()=>[t(p).length>0&&!je.value?(i(),m("div",Pv,[f(mc,{messages:t(p),keywords:t(y),"is-loading":t(_),"is-collapsed":je.value,class:"h-full",onToggle:Bs,onLoadMore:Fs},null,8,["messages","keywords","is-loading","is-collapsed"])])):E("",!0)]),_:1})]),f(If,{open:t(re),"assistant-id":t(Q),readonly:t(H),"scroll-to-section":P.value,"onUpdate:open":Ts,onSaved:t(le),onCreated:t(xe)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),f(kh,{open:j.value,"backup-name":ne.value,upgrading:U.value,skipping:oe.value,onSkip:As,onConfirm:qs},null,8,["open","backup-name","upgrading","skipping"]),f(uh,{open:t(V),"onUpdate:open":Ie[4]||(Ie[4]=ze=>V.value=ze),onConfigure:t(N),onViewConfig:t(me),onCreate:t(be)},null,8,["open","onConfigure","onViewConfig","onCreate"]),f(tv,{open:t(X),"onUpdate:open":Ie[5]||(Ie[5]=ze=>X.value=ze),onConfigure:t(ee),onCreate:t(pe)},null,8,["open","onConfigure","onCreate"]),f(dv,{open:t(ce),"skill-id":t(fe),"onUpdate:open":Ie[6]||(Ie[6]=ze=>ce.value=ze),onSaved:t(ke),onCreated:t($e)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),C2=nt(jv,[["__scopeId","data-v-3b042ff8"]]),da="__ALL__",Nv=de({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(r,{emit:l}){const{t:e}=_e(),n=r,s=l,u=z([]),o=z(!1),d=T({get:()=>n.modelValue===null?da:String(n.modelValue),set:y=>{s("update:modelValue",y===da?null:parseInt(y))}}),g=T(()=>{const y=[{value:da,label:e("common.userSelect.allMembers")}];return u.value.forEach(_=>{const v=_.groupNickname||_.accountName||_.platformId;y.push({value:String(_.id),label:`${v} (${_.messageCount})`})}),y});async function p(){if(n.sessionId){o.value=!0;try{const y=await Ke().getMembers(n.sessionId);u.value=y.sort((_,v)=>v.messageCount-_.messageCount)}catch(y){console.error("加载成员列表失败:",y)}finally{o.value=!1}}}return he(()=>n.sessionId,()=>{s("update:modelValue",null),p()},{immediate:!0}),(y,_)=>{const v=Ba;return i(),W(v,{modelValue:d.value,"onUpdate:modelValue":_[0]||(_[0]=x=>d.value=x),items:g.value,loading:o.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),Uv=de({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(r){ea([ms,gs,qa,ps,ta]);const l=r,{t:e,locale:n}=_e(),s=Zt(),u=z(null);let o=null;const d=T(()=>{if(l.year)return l.year;if(l.data.length===0)return new Date().getFullYear();const k=l.data.map($=>parseInt($.date.split("-")[0]));return Math.max(...k)}),g=T(()=>l.data.length===0?10:Math.max(...l.data.map(k=>k.value),1)),p=T(()=>l.data.map(k=>[k.date,k.value])),y={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},_=T(()=>({tooltip:{trigger:"item",formatter:k=>{const $=k.data[0],w=k.data[1];return`${$}<br/>${e("views.message.calendarTooltipMessages")}: ${w}`}},visualMap:{min:0,max:g.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${g.value}`,"0"],inRange:{color:s.value?y.dark:y.light},textStyle:{color:s.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(d.value),itemStyle:{borderWidth:2,borderColor:s.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:s.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:s.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[e("common.month.jan"),e("common.month.feb"),e("common.month.mar"),e("common.month.apr"),e("common.month.may"),e("common.month.jun"),e("common.month.jul"),e("common.month.aug"),e("common.month.sep"),e("common.month.oct"),e("common.month.nov"),e("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:s.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[e("common.weekday.sun"),e("common.weekday.mon"),e("common.weekday.tue"),e("common.weekday.wed"),e("common.weekday.thu"),e("common.weekday.fri"),e("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:p.value}]}));function v(){u.value&&(o=aa(u.value,s.value?"dark":void 0,{renderer:"canvas"}),o.setOption({backgroundColor:"transparent",..._.value}))}function x(){o&&o.setOption({backgroundColor:"transparent",..._.value},{notMerge:!0})}function b(){o?.resize()}return he([()=>l.data,s,n],()=>{x()}),he(()=>l.year,()=>{x()}),Be(()=>{v(),window.addEventListener("resize",b)}),tt(()=>{window.removeEventListener("resize",b),o?.dispose()}),(k,$)=>(i(),m("div",{ref_key:"chartRef",ref:u,style:et({height:`${r.height}px`,width:"100%"})},null,4))}}),Wv={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Hv={class:"flex items-center gap-6 sm:gap-10"},Kv={class:"min-w-0 flex-1"},Yv={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},Gv={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Qv={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},Jv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Xv={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Zv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ey={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},ty={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ay={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},sy={class:"flex shrink-0 flex-col items-center"},ny={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},oy={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},ly={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},iy={class:"min-w-0 flex-1"},ry={class:"flex items-center justify-between gap-1"},uy={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},dy={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},cy={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},my={class:"flex items-center gap-1.5"},gy={class:"text-[9px] font-medium uppercase tracking-widest"},py=de({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(r){ea([Zn,qa,ta]);const{t:l}=_e(),e=Zt(),n=r,s=T(()=>n.messageTypes.reduce((M,q)=>M+q.count,0)),u=T(()=>n.messageTypes.find(M=>M.type===gt.TEXT)?.count??0),o=T(()=>{if(s.value===0)return 0;const M=s.value-u.value;return Math.round(M/s.value*100)}),d=T(()=>n.textStats.textCount===0?0:Math.round(n.textStats.shortCount/n.textStats.textCount*100)),g=z({first:"",last:""});async function p(){if(n.sessionId)try{const M=await Ke().getDailyActivity(n.sessionId,n.timeFilter);if(M.length>0){const q=[...M].sort((Y,G)=>Y.date.localeCompare(G.date));g.value={first:Ee(q[0].date).format("YYYY/MM/DD"),last:Ee(q[q.length-1].date).format("YYYY/MM/DD")}}}catch{}}function y(M){return n.messageTypes.find(q=>q.type===M)?.count??0}const _=T(()=>[{label:l("views.message.typeCard.nonTextImage"),count:y(gt.IMAGE),unit:l("views.message.typeCard.unitImage")},{label:l("views.message.typeCard.nonTextEmoji"),count:y(gt.EMOJI),unit:l("views.message.typeCard.unitEmoji")},{label:l("views.message.typeCard.nonTextVoice"),count:y(gt.VOICE),unit:l("views.message.typeCard.unitVoice")},{label:l("views.message.typeCard.nonTextVideo"),count:y(gt.VIDEO),unit:l("views.message.typeCard.unitVideo")},{label:l("views.message.typeCard.nonTextFile"),count:y(gt.FILE),unit:l("views.message.typeCard.unitFile")},{label:l("views.message.typeCard.nonTextLink"),count:y(gt.LINK),unit:l("views.message.typeCard.unitLink")}].filter(M=>M.count>0)),v=z(30),x=z(0),b=z(!1),k=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],$=T({get:()=>v.value,set:M=>{v.value!==M&&(v.value=M,w())}});async function w(){if(n.sessionId){b.value=!0;try{x.value=await Ke().getLongMessageCount(n.sessionId,n.timeFilter,v.value)}catch(M){console.error("[chart-message] Failed to load essay count:",M)}finally{b.value=!1}}}he(()=>[n.sessionId,n.timeFilter],()=>{w(),p()},{immediate:!0,deep:!0});const S=T(()=>[{icon:"i-heroicons-pencil-square",label:l("views.message.profile.textExpression"),value:l("views.message.profile.avgLengthUnit",{count:n.textStats.avgLength||0}),subtext:n.textStats.maxLength>0?l("views.message.profile.textExpressionDesc",{count:n.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:l("views.message.profile.shortMaster"),value:`${d.value}%`,subtext:l("views.message.profile.shortMasterDesc",{count:n.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:l("views.message.profile.essayLover"),value:x.value.toLocaleString(),subtext:l("views.message.profile.essayLoverDesc",{threshold:v.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:l("views.message.profile.mediaRichness"),value:`${o.value}%`,subtext:_.value.slice(0,3).map(M=>`${M.label} ${M.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),I=z(null);let h=null;const C=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],O=T(()=>[...n.messageTypes].sort((q,Y)=>Y.count-q.count).slice(0,8).map((q,Y)=>({name:ma(q.type,l),value:q.count,itemStyle:{color:C[Y%C.length]}})));function R(){I.value&&(h=aa(I.value,void 0,{renderer:"canvas"}),L())}function L(){h&&h.setOption({backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["50%","78%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!1},emphasis:{label:{show:!1},scaleSize:4},data:O.value}]},{notMerge:!0})}function A(){h?.resize()}return he(()=>n.messageTypes,()=>L()),he(e,()=>{h?.dispose(),R()}),Be(()=>{R(),window.addEventListener("resize",A)}),tt(()=>{window.removeEventListener("resize",A),h?.dispose()}),(M,q)=>{const Y=we,G=Ia;return i(),W(t(sa),null,{default:B(()=>[a("div",Wv,[a("div",Hv,[a("div",Kv,[a("div",Yv,[g.value.first?(i(),m("p",Gv,c(g.value.first)+" – "+c(g.value.last),1)):E("",!0),a("div",Qv,[a("span",Jv,c(t(l)("views.message.profile.heroLine1Prefix")),1),a("span",Xv,c(s.value.toLocaleString()),1),a("span",Zv,c(t(l)("views.message.profile.heroLine1Suffix")),1)]),_.value.length>0?(i(),m("div",ey,[a("span",ty,c(t(l)("views.message.typeCard.nonTextPrefix")),1),(i(!0),m(ue,null,ve(_.value,ae=>(i(),m("span",{key:ae.label,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-semibold text-gray-700 dark:bg-white/10 dark:text-gray-200"},[a("span",ay,c(ae.count.toLocaleString()),1),a("span",null,c(ae.unit),1)]))),128))])):E("",!0)])]),a("div",sy,[a("div",ny,c(t(l)("views.message.profile.typeDistribution")),1),a("div",{ref_key:"donutRef",ref:I,style:{width:"130px",height:"130px"}},null,512)])])]),a("div",oy,[q[1]||(q[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),a("div",ly,[(i(!0),m(ue,null,ve(S.value,ae=>(i(),m("div",{key:ae.icon+ae.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(Y,{name:ae.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",ae.colorClass])},null,8,["name","class"]),a("div",iy,[a("div",ry,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",ae.colorClass])},c(ae.value),3),ae.slot==="essay-threshold"?(i(),W(G,{key:0,modelValue:$.value,"onUpdate:modelValue":q[0]||(q[0]=re=>$.value=re),items:k,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:b.value},null,8,["modelValue","disabled"])):E("",!0)]),a("div",uy,c(ae.label),1),a("div",dy,c(ae.subtext),1)])]))),128))])]),a("div",cy,[a("div",my,[f(Y,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),q[2]||(q[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",gy,c(t(l)("views.message.typeCard.watermark")),1)])]),_:1})}}}),fy={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},hy={class:"p-5"},vy={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},yy={class:"space-y-3"},xy={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},by={class:"flex-1"},ky={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},_y={class:"shrink-0 text-right"},wy={class:"text-sm font-medium text-gray-900 dark:text-white"},$y={class:"ml-1 text-xs text-gray-400"},Cy={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Sy={class:"p-5"},Iy={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Ty={class:"p-3"},My={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},zy={class:"mt-1 text-xs text-gray-500"},Ay={class:"p-3"},qy={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},Ly={class:"mt-1 text-xs text-gray-500"},Dy={class:"p-3"},Ey={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},By={class:"mt-1 text-xs text-gray-500"},Fy={class:"p-3"},Ry={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},Vy={class:"mt-1 text-xs text-gray-500"},Oy={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},Py={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},jy={class:"flex items-center gap-4 text-sm"},Ny={class:"flex items-center gap-1.5"},Uy={class:"font-mono font-medium text-gray-900 dark:text-white"},Wy={class:"flex items-center gap-1.5"},Hy={class:"font-mono font-medium text-gray-900 dark:text-white"},Ky={class:"flex items-center gap-1.5"},Yy={class:"font-mono font-medium text-gray-900 dark:text-white"},Gy={class:"flex items-center gap-1.5"},Qy={class:"font-mono font-medium text-gray-900 dark:text-white"},Jy={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},Xy={class:"text-gray-500"},Zy={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},ex={class:"text-gray-400"},tx={class:"text-gray-500"},ax={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},sx={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},nx={class:"text-xs text-gray-400"},ox={class:"p-5"},lx={key:1,class:"flex h-48 items-center justify-center text-gray-400"},ix={class:"text-xs text-gray-400"},rx={class:"p-5"},ux={key:1,class:"flex h-48 items-center justify-center text-gray-400"},S2=de({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(r){const l=r,{t:e}=_e(),n=z(!0),s=z([]),u=z([]),o=z([]),d=z({textCount:0,avgLength:0,maxLength:0,shortCount:0}),g=z({p25:0,p50:0,p75:0,p90:0}),p=z(0),y=T(()=>{const S=[...s.value].sort((I,h)=>h.count-I.count);return{labels:S.map(I=>ma(I.type,e)),values:S.map(I=>I.count)}}),_=T(()=>{const S=s.value.reduce((h,C)=>h+C.count,0);return[...s.value].sort((h,C)=>C.count-h.count).map(h=>({name:ma(h.type,e),count:h.count,percentage:S>0?Math.round(h.count/S*100):0}))}),v=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function x(S){return v[S%v.length]}const b=T(()=>({labels:u.value.map(S=>String(S.len)),values:u.value.map(S=>S.count)})),k=T(()=>({labels:o.value.map(S=>S.range),values:o.value.map(S=>S.count)})),$=T(()=>d.value.textCount===0?0:Math.round(d.value.shortCount/d.value.textCount*100));async function w(){if(l.sessionId){n.value=!0;try{const S=Ke(),[I,h,C,O,R]=await Promise.all([S.getMessageTypeDistribution(l.sessionId,l.timeFilter),S.getMessageLengthDistribution(l.sessionId,l.timeFilter),S.getTextStats(l.sessionId,l.timeFilter),S.getTextLengthPercentiles(l.sessionId,l.timeFilter),S.getLongMessageCount(l.sessionId,l.timeFilter,30)]);s.value=I,u.value=h.detail,o.value=h.grouped,d.value=C,g.value=O,p.value=R}catch(S){console.error("[chart-message] Failed to load type analysis data:",S)}finally{n.value=!1}}}return he(()=>[l.sessionId,l.timeFilter],()=>w(),{immediate:!0,deep:!0}),(S,I)=>(i(),m("div",{class:Z(n.value?"h-full":"")},[n.value?(i(),W(t(Yt),{key:0,variant:"page",text:t(e)("common.loading")},null,8,["text"])):(i(),m("div",fy,[s.value.length>0?(i(),W(py,{key:0,"session-id":r.sessionId,"message-types":s.value,"text-stats":d.value,"time-filter":r.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):E("",!0),f(t(Ze),{title:t(e)("views.message.typeDistribution"),"show-divider":!1},{default:B(()=>[a("div",hy,[y.value.values.length>0?(i(),m("div",vy,[a("div",null,[f(t(ya),{data:y.value,height:280,"show-legend":!1},null,8,["data"])]),a("div",null,[a("div",yy,[(i(!0),m(ue,null,ve(_.value,(h,C)=>(i(),m("div",{key:C,class:"flex items-center gap-3"},[a("div",{class:"h-3 w-3 shrink-0 rounded-full",style:et({backgroundColor:x(C)})},null,4),a("div",xy,c(h.name),1),a("div",by,[a("div",ky,[a("div",{class:"h-full rounded-full transition-all",style:et({width:`${h.percentage}%`,backgroundColor:x(C)})},null,4)])]),a("div",_y,[a("span",wy,c(h.count.toLocaleString()),1),a("span",$y,"("+c(h.percentage)+"%)",1)])]))),128))])])])):(i(),m("div",Cy,c(t(e)("views.message.noData")),1))])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:B(()=>[a("div",Sy,[a("div",Iy,[a("div",Ty,[a("div",My,c(d.value.textCount.toLocaleString()),1),a("div",zy,c(t(e)("views.message.typeAnalysis.textTotal")),1)]),a("div",Ay,[a("div",qy,c(d.value.avgLength||0),1),a("div",Ly,c(t(e)("views.message.typeAnalysis.avgLength")),1)]),a("div",Dy,[a("div",Ey,c(g.value.p50),1),a("div",By,c(t(e)("views.message.typeAnalysis.medianLength")),1)]),a("div",Fy,[a("div",Ry,c(d.value.maxLength),1),a("div",Vy,c(t(e)("views.message.typeAnalysis.maxLength")),1)])]),a("div",Oy,[a("div",Py,c(t(e)("views.message.typeAnalysis.percentiles")),1),a("div",jy,[a("div",Ny,[I[0]||(I[0]=a("span",{class:"text-gray-500"},"P25",-1)),a("span",Uy,c(g.value.p25),1)]),a("div",Wy,[I[1]||(I[1]=a("span",{class:"text-gray-500"},"P50",-1)),a("span",Hy,c(g.value.p50),1)]),a("div",Ky,[I[2]||(I[2]=a("span",{class:"text-gray-500"},"P75",-1)),a("span",Yy,c(g.value.p75),1)]),a("div",Gy,[I[3]||(I[3]=a("span",{class:"text-gray-500"},"P90",-1)),a("span",Qy,c(g.value.p90),1)])]),a("div",Jy,[a("div",null,[a("span",Xy,c(t(e)("views.message.typeAnalysis.shortMessages")),1),a("span",Zy,c($.value)+"%",1),a("span",ex,"("+c(d.value.shortCount)+")",1)]),a("div",null,[a("span",tx,c(t(e)("views.message.typeAnalysis.essayMessages")),1),a("span",ax,c(p.value),1)])])])])]),_:1},8,["title"]),a("div",sx,[f(t(Ze),{title:t(e)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:B(()=>[a("span",nx,c(t(e)("views.message.lengthDetailHint")),1)]),default:B(()=>[a("div",ox,[b.value.values.some(h=>h>0)?(i(),W(t(rt),{key:0,data:b.value,height:200},null,8,["data"])):(i(),m("div",lx,c(t(e)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:B(()=>[a("span",ix,c(t(e)("views.message.lengthGroupedHint")),1)]),default:B(()=>[a("div",rx,[k.value.values.some(h=>h>0)?(i(),W(t(rt),{key:0,data:k.value,height:200},null,8,["data"])):(i(),m("div",ux,c(t(e)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),dx={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},cx={class:"flex items-start gap-6 sm:gap-10"},mx={class:"min-w-0 flex-1"},gx={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},px={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},fx={class:"mb-3 flex items-baseline gap-2"},hx={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},vx={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},yx={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},xx={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},bx={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},kx={class:"text-base font-medium text-gray-600 dark:text-gray-300"},_x={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},wx={class:"text-base font-medium text-gray-600 dark:text-gray-300"},$x={class:"text-base font-medium text-amber-600 dark:text-amber-400"},Cx={class:"flex shrink-0 flex-col items-center"},Sx={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Ix={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Tx={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Mx={class:"min-w-0 flex-1"},zx={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ax={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},qx={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Lx={class:"flex items-center gap-1.5"},Dx={class:"text-[9px] font-medium uppercase tracking-widest"},Ex=de({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(r){ea([eo,to,ta]);const{t:l}=_e(),e=Zt(),n=r,s=T(()=>n.dailyActivity.filter(h=>h.messageCount>0).length),u=T(()=>n.dailyActivity.reduce((h,C)=>h+C.messageCount,0)),o=T(()=>{if(n.dailyActivity.length===0)return{first:"",last:"",days:0};const h=[...n.dailyActivity].sort((R,L)=>R.date.localeCompare(L.date)),C=Ee(h[0].date),O=Ee(h[h.length-1].date);return{first:C.format("YYYY/MM/DD"),last:O.format("YYYY/MM/DD"),days:O.diff(C,"day")+1}}),d=T(()=>s.value===0?0:Math.round(u.value/s.value)),g=T(()=>n.dailyActivity.length===0?null:n.dailyActivity.reduce((h,C)=>C.messageCount>h.messageCount?C:h,n.dailyActivity[0])),p=T(()=>n.hourlyActivity.length===0?[]:[...n.hourlyActivity].sort((h,C)=>C.messageCount-h.messageCount).slice(0,3)),y=T(()=>{if(n.hourlyActivity.length===0&&n.weekdayActivity.length===0)return null;const h=o.value.days>0?s.value/o.value.days:0,C=n.weekdayActivity.filter(H=>H.weekday===6||H.weekday===7),O=n.weekdayActivity.filter(H=>H.weekday>=1&&H.weekday<=5),R=C.reduce((H,V)=>H+V.messageCount,0),L=O.reduce((H,V)=>H+V.messageCount,0),A=R+L,M=A>0?R/A:0,q=n.hourlyActivity.reduce((H,V)=>H+V.messageCount,0),Y=n.hourlyActivity.filter(H=>H.hour>=22||H.hour<5).reduce((H,V)=>H+V.messageCount,0),G=n.hourlyActivity.filter(H=>H.hour>=18&&H.hour<22).reduce((H,V)=>H+V.messageCount,0),ae=q>0?Y/q:0,re=q>0?G/q:0;if(h>=.9)return{label:l("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(M>=.55)return{label:l("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(M<=.2&&A>0)return{label:l("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(ae>=.3)return{label:l("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(re>=.4)return{label:l("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const Q=[...n.hourlyActivity].sort((H,V)=>V.messageCount-H.messageCount)[0];return Q?Q.hour>=5&&Q.hour<9?{label:l("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:Q.hour>=12&&Q.hour<14?{label:l("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:l("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),_=T(()=>{const h=n.weekdayActivity.filter(A=>A.weekday===6||A.weekday===7),C=n.weekdayActivity.filter(A=>A.weekday>=1&&A.weekday<=5),O=h.reduce((A,M)=>A+M.messageCount,0),R=C.reduce((A,M)=>A+M.messageCount,0),L=O+R;return L===0?0:Math.round(O/L*100)}),v=T(()=>[l("common.weekday.mon"),l("common.weekday.tue"),l("common.weekday.wed"),l("common.weekday.thu"),l("common.weekday.fri"),l("common.weekday.sat"),l("common.weekday.sun")]),x=T(()=>{if(n.weekdayActivity.length===0)return null;const h=[...n.weekdayActivity].sort((C,O)=>O.messageCount-C.messageCount)[0];return{name:v.value[h.weekday-1],count:h.messageCount}}),b=T(()=>[{icon:"i-heroicons-fire",label:l("views.message.timeCard.peakRecord"),value:g.value?Ee(g.value.date).format("MM/DD"):"-",subtext:g.value?l("views.message.timeCard.peakRecordDesc",{count:g.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:l("views.message.timeCard.topHoursLabel"),value:p.value.length>0?`${p.value[0].hour}:00`:"-",subtext:p.value.length>=2?p.value.map(h=>`${h.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:l("views.message.timeCard.peakWeekdayLabel"),value:x.value?.name||"-",subtext:x.value?`${x.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:l("views.message.timeCard.weekendRatio"),value:`${_.value}%`,subtext:l("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),k=z(null);let $=null;function w(){k.value&&($=aa(k.value,void 0,{renderer:"canvas"}),S())}function S(){if(!$)return;const h=new Map(n.hourlyActivity.map(L=>[L.hour,L.messageCount])),C=[];for(let L=0;L<24;L++)C.push(h.get(L)||0);const O=Math.max(...C,1),R=C.map(L=>{const A=L/O;return A>.8?e.value?"#f472b6":"#ec4899":A>.5?e.value?"#a78bfa":"#8b5cf6":e.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});$.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:L=>`${L[0].axisValue}:00 — ${L[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(L,A)=>`${A}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:e.value?"#6b7280":"#9ca3af",interval:L=>L%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:C.map((L,A)=>({value:L,itemStyle:{color:R[A]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function I(){$?.resize()}return he(()=>n.hourlyActivity,()=>S()),he(e,()=>{$?.dispose(),w()}),Be(()=>{w(),window.addEventListener("resize",I)}),tt(()=>{window.removeEventListener("resize",I),$?.dispose()}),(h,C)=>{const O=we;return i(),W(t(sa),null,{default:B(()=>[a("div",dx,[a("div",cx,[a("div",mx,[a("div",gx,[o.value.first?(i(),m("p",px,c(o.value.first)+" – "+c(o.value.last),1)):E("",!0),a("div",fx,[a("span",hx,c(o.value.days),1),a("span",vx,c(t(l)("views.message.timeCard.heroDaysIn")),1),a("span",yx,c(s.value),1),a("span",xx,c(t(l)("views.message.timeCard.heroDaysActive")),1)]),a("div",bx,[a("span",kx,c(t(l)("views.message.timeCard.heroAvgPrefix")),1),a("span",_x,c(d.value),1),a("span",wx,c(t(l)("views.message.timeCard.heroAvgSuffix")),1),y.value?(i(),m(ue,{key:0},[f(O,{name:y.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),a("span",$x,c(y.value.label),1)],64)):E("",!0)])])]),a("div",Cx,[a("div",Sx,c(t(l)("views.message.timeCard.hourlyDistribution")),1),a("div",{ref_key:"barRef",ref:k,style:{width:"180px",height:"110px"}},null,512)])])]),a("div",Ix,[C[0]||(C[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),a("div",Tx,[(i(!0),m(ue,null,ve(b.value,R=>(i(),m("div",{key:R.icon+R.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(O,{name:R.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",R.colorClass])},null,8,["name","class"]),a("div",Mx,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",R.colorClass])},c(R.value),3),a("div",zx,c(R.label),1),a("div",Ax,c(R.subtext),1)])]))),128))])]),a("div",qx,[a("div",Lx,[f(O,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),C[1]||(C[1]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Dx,c(t(l)("views.message.timeCard.watermark")),1)])]),_:1})}}}),Bx={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Fx={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Rx={class:"p-5"},Vx={class:"p-5"},Ox={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Px={class:"p-5"},jx={class:"p-5"},Nx={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Ux={class:"text-xs text-gray-400"},Wx={class:"p-5"},Hx={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Kx={class:"text-xs text-gray-400"},Yx={class:"p-5"},Gx={class:"flex items-center gap-2"},Qx={class:"text-xs text-gray-400"},Jx={class:"p-5"},Xx={key:1,class:"flex h-32 items-center justify-center text-gray-400"},I2=de({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(r){const l=r,{t:e}=_e(),n=z(!0),s=z([]),u=z([]),o=z([]),d=z([]),g=z([]),p=z([]),y=z([]),_=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],v=T(()=>[e("common.weekday.mon"),e("common.weekday.tue"),e("common.weekday.wed"),e("common.weekday.thu"),e("common.weekday.fri"),e("common.weekday.sat"),e("common.weekday.sun")]),x=T(()=>[e("common.month.jan"),e("common.month.feb"),e("common.month.mar"),e("common.month.apr"),e("common.month.may"),e("common.month.jun"),e("common.month.jul"),e("common.month.aug"),e("common.month.sep"),e("common.month.oct"),e("common.month.nov"),e("common.month.dec")]),b=T(()=>{const A=new Map(u.value.map(Y=>[Y.hour,Y.messageCount])),M=[],q=[];for(let Y=0;Y<24;Y++)M.push(`${Y}`),q.push(A.get(Y)||0);return{labels:M,values:q}}),k=T(()=>{const A=new Map(o.value.map(q=>[q.weekday,q.messageCount])),M=[];for(let q=1;q<=7;q++)M.push(A.get(q)||0);return{labels:v.value,values:M}}),$=T(()=>{const A=new Map(d.value.map(q=>[q.month,q.messageCount])),M=[];for(let q=1;q<=12;q++)M.push(A.get(q)||0);return{labels:x.value,values:M}}),w=T(()=>{const A=[...g.value].sort((M,q)=>M.year-q.year);return{labels:A.map(M=>String(M.year)),values:A.map(M=>M.messageCount)}}),S=T(()=>{const A=Array.from({length:24},(G,ae)=>`${ae}:00`),M=v.value,q=s.value.reduce((G,ae)=>G+ae.count,0)||1,Y=[];for(let G=1;G<=7;G++)for(let ae=0;ae<24;ae++){const re=o.value.find(V=>V.weekday===G)?.messageCount||0,Q=u.value.find(V=>V.hour===ae)?.messageCount||0,H=Math.round(re*Q/q);Y.push([ae,G-1,H])}return{xLabels:A,yLabels:M,data:Y}}),I=T(()=>p.value.map(A=>({date:A.date,value:A.messageCount}))),h=T(()=>{const A=new Set;return p.value.forEach(M=>{const q=parseInt(M.date.split("-")[0]);isNaN(q)||A.add(q)}),Array.from(A).sort((M,q)=>q-M)}),C=z(new Date().getFullYear()),O=T(()=>{const A=C.value;return I.value.filter(M=>M.date.startsWith(`${A}-`))}),R=T(()=>{if(y.value.length===0)return{};const A=[...new Set(y.value.map(ae=>ae.month))].sort(),M=new Map;if(y.value.forEach(ae=>{const re=M.get(ae.memberId);re?re.total+=ae.count:M.set(ae.memberId,{name:ae.memberName,total:ae.count})}),M.size<=2){const ae=new Map;return y.value.forEach(re=>{ae.set(re.month,(ae.get(re.month)||0)+re.count)}),{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:10,bottom:30},xAxis:{type:"category",data:A,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:[{type:"line",smooth:!0,symbol:"none",areaStyle:{opacity:.2},itemStyle:{color:"#6366f1"},data:A.map(re=>ae.get(re)||0)}]}}const G=[...M.entries()].sort((ae,re)=>re[1].total-ae[1].total).slice(0,10).map(([ae,re],Q)=>{const H=new Map(y.value.filter(V=>V.memberId===ae).map(V=>[V.month,V.count]));return{name:re.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:_[Q%_.length]},data:A.map(V=>H.get(V)||0)}});return{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:{bottom:0,textStyle:{fontSize:11}},grid:{left:50,right:20,top:10,bottom:40},xAxis:{type:"category",data:A,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:G}});async function L(){if(l.sessionId){n.value=!0;try{const A=Ke(),[M,q,Y,G,ae,re,Q]=await Promise.all([A.getMessageTypeDistribution(l.sessionId,l.timeFilter),A.getHourlyActivity(l.sessionId,l.timeFilter),A.getWeekdayActivity(l.sessionId,l.timeFilter),A.getMonthlyActivity(l.sessionId,l.timeFilter),A.getYearlyActivity(l.sessionId,l.timeFilter),A.getDailyActivity(l.sessionId,l.timeFilter),A.getMemberMonthlyTrend(l.sessionId,l.timeFilter)]);s.value=M,u.value=q,o.value=Y,d.value=G,g.value=ae,p.value=re,y.value=Q,h.value.length>0&&(C.value=h.value[0])}catch(A){console.error("[chart-message] Failed to load time analysis data:",A)}finally{n.value=!1}}}return he(()=>[l.sessionId,l.timeFilter],()=>L(),{immediate:!0,deep:!0}),(A,M)=>{const q=Ia;return i(),m("div",{class:Z(n.value?"h-full":"")},[n.value?(i(),W(t(Yt),{key:0,variant:"page",text:t(e)("common.loading")},null,8,["text"])):(i(),m("div",Bx,[p.value.length>0?(i(),W(Ex,{key:0,"hourly-activity":u.value,"weekday-activity":o.value,"daily-activity":p.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):E("",!0),a("div",Fx,[f(t(Ze),{title:t(e)("views.message.hourlyDistribution"),"show-divider":!1},{default:B(()=>[a("div",Rx,[f(t(rt),{data:b.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.weekdayDistribution"),"show-divider":!1},{default:B(()=>[a("div",Vx,[f(t(rt),{data:k.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),a("div",Ox,[f(t(Ze),{title:t(e)("views.message.monthlyDistribution"),"show-divider":!1},{default:B(()=>[a("div",Px,[f(t(rt),{data:$.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.yearlyDistribution"),"show-divider":!1},{default:B(()=>[a("div",jx,[w.value.values.length>0?(i(),W(t(rt),{key:0,data:w.value,height:200},null,8,["data"])):(i(),m("div",Nx,c(t(e)("views.message.noData")),1))])]),_:1},8,["title"])]),f(t(Ze),{title:t(e)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:B(()=>[a("span",Ux,c(t(e)("views.message.timeAnalysis.memberTrendHint")),1)]),default:B(()=>[a("div",Wx,[y.value.length>0?(i(),W(t(Aa),{key:0,option:R.value,height:280},null,8,["option"])):(i(),m("div",Hx,c(t(e)("views.message.noData")),1))])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:B(()=>[a("span",Kx,c(t(e)("views.message.heatmapHint")),1)]),default:B(()=>[a("div",Yx,[f(t(va),{data:S.value,height:320},null,8,["data"])])]),_:1},8,["title"]),f(t(Ze),{title:t(e)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:B(()=>[a("div",Gx,[a("span",Qx,c(t(e)("views.message.calendarHint")),1),h.value.length>1?(i(),W(q,{key:0,modelValue:C.value,"onUpdate:modelValue":M[0]||(M[0]=Y=>C.value=Y),items:h.value.map(Y=>({value:Y,label:String(Y)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):E("",!0)])]),default:B(()=>[a("div",Jx,[O.value.length>0?(i(),W(t(Uv),{key:0,data:O.value,year:C.value,height:180},null,8,["data","year"])):(i(),m("div",Xx,c(t(e)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),Zx={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},eb={class:"flex items-center gap-6 sm:gap-10"},tb={class:"min-w-0 flex-1"},ab={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},sb={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},nb={class:"flex items-baseline gap-x-1.5"},ob={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},lb={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ib={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},rb={class:"flex items-baseline gap-x-1.5"},ub={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},db={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},cb={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},mb={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},gb={class:"text-base font-medium text-gray-600 dark:text-gray-300"},pb=["onClick"],fb={key:0,class:"text-gray-400"},hb={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},vb={class:"relative",style:{width:"360px",height:"220px"}},yb={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},xb={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},bb={class:"min-w-0 flex-1"},kb={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},_b={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},wb={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},$b={class:"flex items-center gap-1.5"},Cb={class:"text-[9px] font-medium uppercase tracking-widest"},Sb=de({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(r,{emit:l}){const e=us(()=>Xt(()=>import("./EChartWordcloud-C16xh7Tx.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t:n}=_e(),s=r,u=l,o=T(()=>{const{startTs:b,endTs:k}=s.timeFilter??{};return b&&k?`${Ee(b*1e3).format("YYYY/MM/DD")} – ${Ee(k*1e3).format("YYYY/MM/DD")}`:""}),d=T(()=>(s.topicWords?.length?s.topicWords:s.topWords).slice(0,5)),g=T(()=>({words:(s.topicWords?.length?s.topicWords:s.topWords).slice(0,50).map(k=>({word:k.word,count:k.count,percentage:k.percentage}))})),p=T(()=>s.totalWords===0?0:Math.round(s.uniqueWords/s.totalWords*100)),y=T(()=>{if(!s.posTagStats?.length)return{key:"Balanced",label:n("quotes.topicProfile.styleBalanced"),desc:n("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const b=new Map(s.posTagStats.map(O=>[O.tag,O.count])),k=(b.get("n")||0)+(b.get("ns")||0)+(b.get("nt")||0)+(b.get("nz")||0),$=(b.get("v")||0)+(b.get("vn")||0)+(b.get("vd")||0),w=(b.get("a")||0)+(b.get("ad")||0)+(b.get("an")||0),S=k+$+w;if(S===0)return{key:"Balanced",label:n("quotes.topicProfile.styleBalanced"),desc:n("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const I=k/S,h=$/S,C=w/S;return I>.5?{key:"Encyclopedia",label:n("quotes.topicProfile.styleEncyclopedia"),desc:n("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:h>.45?{key:"Action",label:n("quotes.topicProfile.styleAction"),desc:n("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:C>.3?{key:"Expressive",label:n("quotes.topicProfile.styleExpressive"),desc:n("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:n("quotes.topicProfile.styleBalanced"),desc:n("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),_=T(()=>{if(s.topWords.length===0)return{label:n("quotes.topicProfile.expressionMixed"),desc:n("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const b=s.topWords.reduce((w,S)=>w+S.word.length*S.count,0),k=s.topWords.reduce((w,S)=>w+S.count,0),$=b/k;return $<2.5?{label:n("quotes.topicProfile.expressionCasual"),desc:n("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:$>3.5?{label:n("quotes.topicProfile.expressionFormal"),desc:n("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:n("quotes.topicProfile.expressionMixed"),desc:n("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),v=T(()=>[{icon:"i-heroicons-fire-solid",label:n("quotes.topicProfile.hotTopic"),value:d.value[0]?.word??"-",subtext:d.value[0]?n("quotes.topicProfile.hotTopicDesc",{count:d.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:n("quotes.topicProfile.richness"),value:n("quotes.topicProfile.richnessValue",{value:p.value}),subtext:n("quotes.topicProfile.richnessDesc",{unique:s.uniqueWords.toLocaleString(),total:s.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:y.value.icon,label:n("quotes.topicProfile.chatStyle"),value:y.value.label,subtext:y.value.desc,colorClass:y.value.colorClass},{icon:_.value.icon,label:n("quotes.topicProfile.expressionStyle"),value:_.value.label,subtext:_.value.desc,colorClass:_.value.colorClass}]),x=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(b,k)=>{const $=we;return i(),W(t(sa),null,{default:B(()=>[a("div",Zx,[a("div",eb,[a("div",tb,[a("div",ab,[o.value?(i(),m("p",sb,c(o.value),1)):E("",!0),a("div",nb,[a("span",ob,c(t(n)("quotes.topicProfile.heroPrefix")),1),a("span",lb,c(r.totalMessages.toLocaleString()),1),a("span",ib,c(t(n)("quotes.topicProfile.heroMiddle")),1)]),a("div",rb,[a("span",ub,c(t(n)("quotes.topicProfile.heroMiddleSecond")),1),a("span",db,c(r.uniqueWords.toLocaleString()),1),a("span",cb,c(t(n)("quotes.topicProfile.heroSuffix")),1)]),d.value.length>0?(i(),m("div",mb,[a("span",gb,c(t(n)("quotes.topicProfile.topTopicsPrefix")),1),(i(!0),m(ue,null,ve(d.value,(w,S)=>(i(),m(ue,{key:w.word},[a("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:et({color:x[S%x.length]}),onClick:I=>u("wordClick",w.word)},c(w.word),13,pb),S<d.value.length-1?(i(),m("span",fb,"·")):E("",!0)],64))),128))])):E("",!0)])]),g.value.words.length>0?(i(),m("div",hb,[a("div",vb,[f(t(e),{data:g.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:k[0]||(k[0]=w=>u("wordClick",w))},null,8,["data"])])])):E("",!0)])]),a("div",yb,[k[1]||(k[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),a("div",xb,[(i(!0),m(ue,null,ve(v.value,w=>(i(),m("div",{key:w.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f($,{name:w.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",w.colorClass])},null,8,["name","class"]),a("div",bb,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",w.colorClass])},c(w.value),3),a("div",kb,c(w.label),1),a("div",_b,c(w.subtext),1)])]))),128))])]),a("div",wb,[a("div",$b,[f($,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),k[2]||(k[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Cb,c(t(n)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Ib={class:"px-5 py-4 sm:px-6"},Tb={class:"mb-4 flex items-center gap-2"},Mb={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},zb={class:"flex flex-wrap justify-center gap-2"},Ab=["onClick"],qb=de({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(r,{emit:l}){const{t:e}=_e(),n=Ca(),s=r,u=l,o=T(()=>n.locale),d=z([]),g=z([]),p=T(()=>d.value.slice(0,20)),y=["bg-indigo-50 text-indigo-600 ring-1 ring-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-400 dark:ring-indigo-500/30","bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30","bg-orange-50 text-orange-600 ring-1 ring-orange-500/20 dark:bg-orange-500/10 dark:text-orange-400 dark:ring-orange-500/30","bg-green-50 text-green-600 ring-1 ring-green-500/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/30","bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30","bg-violet-50 text-violet-600 ring-1 ring-violet-500/20 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30","bg-teal-50 text-teal-600 ring-1 ring-teal-500/20 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-500/30","bg-rose-50 text-rose-600 ring-1 ring-rose-500/20 dark:bg-rose-500/10 dark:text-rose-400 dark:ring-rose-500/30","bg-yellow-50 text-yellow-600 ring-1 ring-yellow-500/20 dark:bg-yellow-500/10 dark:text-yellow-400 dark:ring-yellow-500/30","bg-cyan-50 text-cyan-600 ring-1 ring-cyan-500/20 dark:bg-cyan-500/10 dark:text-cyan-400 dark:ring-cyan-500/30"];async function _(){if(s.sessionId)try{g.value.length===0&&(g.value=await Ke().getMembers(s.sessionId));const v=[...g.value].sort((I,h)=>h.messageCount-I.messageCount).slice(0,2);if(v.length<2){d.value=[];return}const x={locale:o.value,timeFilter:s.timeFilter?{startTs:s.timeFilter.startTs,endTs:s.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:s.dictType??"default",excludeWords:s.excludeWords?.length?[...s.excludeWords]:void 0},b=Ke(),[k,$]=await Promise.all([b.getWordFrequency(s.sessionId,{...x,memberId:v[0].id}),b.getWordFrequency(s.sessionId,{...x,memberId:v[1].id})]),w=new Map($.words.map(I=>[I.word,I.count])),S=[];for(const I of k.words){const h=w.get(I.word);h&&S.push({word:I.word,countA:I.count,countB:h})}S.sort((I,h)=>h.countA+h.countB-(I.countA+I.countB)),d.value=S.slice(0,30)}catch(v){console.error("加载共同话题数据失败:",v),d.value=[]}}return he(()=>s.sessionId,()=>{g.value=[]}),he(()=>[s.sessionId,s.timeFilter,s.dictType,s.excludeWords],()=>{_()},{immediate:!0,deep:!0}),(v,x)=>{const b=we;return p.value.length>0?(i(),W(t(mt),{key:0},{default:B(()=>[a("div",Ib,[a("div",Tb,[f(b,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),a("span",Mb,c(t(e)("quotes.topicProfile.sharedTopics")),1)]),a("div",zb,[(i(!0),m(ue,null,ve(p.value,(k,$)=>(i(),m("span",{key:k.word,class:Z(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",y[$%y.length]]),onClick:w=>u("wordClick",k.word)},c(k.word),11,Ab))),128))])])]),_:1})):E("",!0)}}}),ws=Dn("wordFilter",()=>{const r=z([]),l=z(null),e=z({}),n=z(!1);function s(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function u(w,S=[]){const I={id:s(),name:w,words:[...S],createdAt:Date.now()};return r.value.push(I),I}function o(w,S){const I=r.value.find(h=>h.id===w);I&&(S.name!==void 0&&(I.name=S.name),S.words!==void 0&&(I.words=[...S.words]))}function d(w){r.value=r.value.filter(S=>S.id!==w),l.value===w&&(l.value=null);for(const[S,I]of Object.entries(e.value))I===w&&delete e.value[S]}function g(w){l.value=w}function p(w,S){e.value[w]=S}function y(w){delete e.value[w]}function _(w){return w in e.value?e.value[w]:l.value}function v(w){const S=_(w);return S?r.value.find(h=>h.id===S)?.words??[]:[]}function x(w){return r.value.find(S=>S.id===w)}const b=T(()=>r.value.map(w=>({label:w.name,value:w.id,isDefault:w.id===l.value,wordCount:w.words.length})));function k(){n.value=!0}function $(){n.value=!1}return{schemes:r,defaultSchemeId:l,sessionSchemeOverrides:e,showWordFilterModal:n,schemeOptions:b,createScheme:u,updateScheme:o,deleteScheme:d,setDefaultScheme:g,setSessionScheme:p,clearSessionScheme:y,getActiveSchemeId:_,getExcludeWords:v,getSchemeById:x,openModal:k,closeModal:$}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),Lb={class:"flex flex-col",style:{height:"520px"}},Db={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},Eb={class:"flex items-center gap-3"},Bb={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},Fb={class:"text-lg font-semibold text-gray-900 dark:text-white"},Rb={class:"flex flex-1 overflow-hidden"},Vb={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},Ob={class:"flex items-center justify-between px-3 py-2"},Pb={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},jb={class:"flex-1 overflow-y-auto px-2 pb-2"},Nb=["onClick"],Ub={class:"truncate text-sm"},Wb={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},Hb={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},Kb={class:"flex flex-1 flex-col overflow-hidden"},Yb={class:"flex-1 space-y-4 overflow-y-auto p-5"},Gb={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},Qb={class:"flex items-center gap-2"},Jb={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},Xb={class:"flex gap-2"},Zb={class:"mb-1.5 flex items-center justify-between"},e1={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},t1={class:"ml-1 text-gray-400 dark:text-gray-500"},a1={key:0,class:"flex max-h-[220px] flex-wrap gap-1.5 overflow-y-auto rounded-lg border border-gray-200 p-3 dark:border-white/5"},s1={key:1,class:"rounded-lg border border-dashed border-gray-300 px-4 py-6 text-center text-xs text-gray-400 dark:border-gray-600 dark:text-gray-500"},n1={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},o1={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},l1={class:"text-sm"},i1=de({__name:"WordFilterModal",setup(r){const{t:l}=_e(),e=ws(),n=T({get:()=>e.showWordFilterModal,set:S=>S?e.openModal():e.closeModal()}),s=z(null),u=z(""),o=z(""),d=z(null),g=T(()=>s.value?e.getSchemeById(s.value)??null:null),p=T(()=>s.value===e.defaultSchemeId);he(n,S=>{S&&(e.schemes.length>0&&!s.value&&(s.value=e.schemes[0].id),y())}),he(s,()=>{y(),o.value=""});function y(){u.value=g.value?.name??""}function _(){const S=e.createScheme(l("wordFilter.defaultSchemeName"));s.value=S.id,Ae(()=>{d.value?.focus(),d.value?.select()})}function v(){if(!s.value)return;const S=e.schemes.findIndex(I=>I.id===s.value);if(e.deleteScheme(s.value),e.schemes.length>0){const I=Math.min(S,e.schemes.length-1);s.value=e.schemes[I].id}else s.value=null}function x(){!s.value||!u.value.trim()||e.updateScheme(s.value,{name:u.value.trim()})}function b(){s.value&&(p.value?e.setDefaultScheme(null):e.setDefaultScheme(s.value))}function k(){if(!s.value||!o.value.trim())return;const I=o.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(R=>R.trim()).filter(R=>R.length>0);if(I.length===0)return;const h=g.value;if(!h)return;const C=new Set(h.words.map(R=>R.toLowerCase())),O=I.filter(R=>!C.has(R.toLowerCase()));O.length>0&&e.updateScheme(s.value,{words:[...h.words,...O]}),o.value=""}function $(S){if(!s.value)return;const I=g.value;I&&e.updateScheme(s.value,{words:I.words.filter(h=>h!==S)})}function w(){s.value&&e.updateScheme(s.value,{words:[]})}return(S,I)=>{const h=we,C=Ue,O=Ft,R=fs,L=Xe;return i(),W(L,{open:n.value,"onUpdate:open":I[4]||(I[4]=A=>n.value=A),ui:{content:"max-w-3xl z-50"}},{content:B(()=>[a("div",Lb,[a("div",Db,[a("div",Eb,[a("div",Bb,[f(h,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),a("h2",Fb,c(t(l)("wordFilter.title")),1)]),f(C,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:I[0]||(I[0]=A=>n.value=!1)})]),a("div",Rb,[a("div",Vb,[a("div",Ob,[a("span",Pb,c(t(l)("wordFilter.schemeList")),1),f(C,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:_})]),a("div",jb,[(i(!0),m(ue,null,ve(t(e).schemes,A=>(i(),m("div",{key:A.id,class:Z(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",s.value===A.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/20 dark:text-primary-300":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5"]),onClick:M=>s.value=A.id},[A.id===t(e).defaultSchemeId?(i(),W(h,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):E("",!0),a("span",Ub,c(A.name),1),a("span",Wb,c(A.words.length),1)],10,Nb))),128)),t(e).schemes.length===0?(i(),m("div",Hb,c(t(l)("wordFilter.emptyScheme")),1)):E("",!0)])]),a("div",Kb,[g.value?(i(),m(ue,{key:0},[a("div",Yb,[a("div",null,[a("label",Gb,c(t(l)("wordFilter.schemeName")),1),f(O,{ref_key:"nameInputRef",ref:d,modelValue:u.value,"onUpdate:modelValue":I[1]||(I[1]=A=>u.value=A),size:"sm",placeholder:t(l)("wordFilter.schemeNamePlaceholder"),onBlur:x,onKeydown:Ge(x,["enter"])},null,8,["modelValue","placeholder"])]),a("div",Qb,[f(C,{size:"xs",variant:p.value?"solid":"soft",color:p.value?"warning":"neutral",icon:p.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:b},{default:B(()=>[ie(c(p.value?t(l)("wordFilter.isDefault"):t(l)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),f(C,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:v},{default:B(()=>[ie(c(t(l)("wordFilter.deleteScheme")),1)]),_:1})]),a("div",null,[a("label",Jb,c(t(l)("wordFilter.addWords")),1),a("div",Xb,[f(O,{modelValue:o.value,"onUpdate:modelValue":I[2]||(I[2]=A=>o.value=A),size:"sm",class:"flex-1",placeholder:t(l)("wordFilter.addWordsPlaceholder"),onKeydown:Ge(k,["enter"])},null,8,["modelValue","placeholder"]),f(C,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:k},{default:B(()=>[ie(c(t(l)("wordFilter.add")),1)]),_:1})])]),a("div",null,[a("div",Zb,[a("label",e1,[ie(c(t(l)("wordFilter.wordList"))+" ",1),a("span",t1,"("+c(g.value.words.length)+")",1)]),g.value.words.length>0?(i(),W(C,{key:0,size:"xs",variant:"ghost",color:"error",onClick:w},{default:B(()=>[ie(c(t(l)("wordFilter.clearAll")),1)]),_:1})):E("",!0)]),g.value.words.length>0?(i(),m("div",a1,[(i(!0),m(ue,null,ve(g.value.words,A=>(i(),W(R,{key:A,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:B(()=>[ie(c(A)+" ",1),f(h,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:M=>$(A)},null,8,["onClick"])]),_:2},1024))),128))])):(i(),m("div",s1,c(t(l)("wordFilter.emptyWords")),1))])]),a("div",n1,[f(C,{color:"primary",variant:"soft",onClick:I[3]||(I[3]=A=>n.value=!1)},{default:B(()=>[ie(c(t(l)("wordFilter.close")),1)]),_:1})])],64)):(i(),m("div",o1,[f(h,{name:"i-heroicons-funnel",class:"h-10 w-10"}),a("p",l1,c(t(l)("wordFilter.selectOrCreate")),1),f(C,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:_},{default:B(()=>[ie(c(t(l)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),r1={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},u1={key:0,class:"flex flex-col gap-3 rounded-lg border border-primary-200 bg-primary-50/70 p-4 dark:border-primary-800 dark:bg-primary-950/30 sm:flex-row sm:items-center sm:justify-between"},d1={class:"flex min-w-0 items-start gap-3"},c1={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},m1={class:"flex shrink-0 flex-wrap gap-2"},g1={key:1,class:"space-y-6"},p1={class:"flex flex-col gap-6 p-4 sm:p-6 lg:flex-row"},f1={class:"flex min-w-0 flex-1 flex-col"},h1={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},v1={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-gray-200 bg-gray-50/40 text-gray-500 dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-400"},y1={class:"text-xs font-medium"},x1={class:"px-4 text-center text-[11px]"},b1={key:0,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},k1={class:"w-full shrink-0 space-y-4 lg:w-[280px]"},_1={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},w1={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},$1={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},C1={key:0},S1={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},I1={class:"space-y-2"},T1={class:"text-xs text-gray-400 dark:text-gray-500"},M1={key:1},z1={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},A1={class:"flex items-center"},q1={key:2,class:"space-y-2"},L1={class:"flex items-center justify-between"},D1={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},E1={class:"flex gap-1"},B1={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},F1={key:0,class:"ml-1 opacity-60"},R1={class:"mb-2 flex items-center justify-between"},V1={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},O1={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},P1={class:"space-y-4"},j1={class:"text-sm text-gray-600 dark:text-gray-300"},N1={class:"flex justify-end gap-2"},U1="default",Ja="chatlab_zhTW_dict_prompt_dismissed",T2=de({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean},enableNodeNlpFeatures:{type:Boolean,default:!0},enableRecordNavigation:{type:Boolean,default:!0}},setup(r){const l=us(()=>Xt(()=>import("./EChartWordcloud-C16xh7Tx.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t:e}=_e(),n=Ca(),s=xt(),u=ws(),o=ot(),d=r,g=z(!0);Wn(g);const p=z([]),y=z({totalMessages:0,totalWords:0,uniqueWords:0}),_=z(1.25),v=z(150),x=T(()=>{const ge=p.value.slice(0,v.value),P=ge.reduce((F,K)=>F+K.count,0);return{words:ge.map(F=>({word:F.word,count:F.count,percentage:P>0?Math.round(F.count/P*1e4)/100:0}))}}),b=z(d.enableNodeNlpFeatures?"meaningful":"all"),k=z(!0),$=z([]),w=z([]),S=z(new Map),I=["n","nr","ns","nt","nz","nw","vn","a","an"],h=z([]),C=T(()=>x.value.words.map(ge=>({word:ge.word,count:ge.count,percentage:ge.percentage??0}))),O=T(()=>[...S.value.entries()].map(([ge,P])=>({tag:ge,count:P}))),R=z(null),L=T({get:()=>u.getActiveSchemeId(d.sessionId),set:ge=>u.setSessionScheme(d.sessionId,ge)}),A=T(()=>[{label:e("wordFilter.noFilter"),value:"__none__"},...u.schemeOptions.map(ge=>({label:ge.isDefault?`${ge.label} ★`:ge.label,value:ge.value}))]),M=T({get:()=>L.value??"__none__",set:ge=>{L.value=ge==="__none__"?null:ge}}),q=T(()=>u.getExcludeWords(d.sessionId)),Y=z("default"),G=z([]),ae=z(!1),re=z(null),Q=z(!1),H=z(!d.enableNodeNlpFeatures),V=T(()=>n.locale),X=T(()=>n.locale==="zh-TW"),ce=T(()=>V.value.startsWith("zh")),fe=T(()=>G.value.filter(ge=>ge.downloaded).map(ge=>({label:e(`quotes.wordcloud.dict.${ge.id==="zh-CN"?"zhCN":ge.id==="zh-TW"?"zhTW":ge.id}`),value:ge.id}))),te=T(()=>G.value.some(ge=>ge.downloaded)),se=T(()=>!d.enableNodeNlpFeatures||!ce.value||H.value),N=T(()=>G.value.filter(ge=>!ge.downloaded));async function me(){if(d.enableNodeNlpFeatures)try{G.value=await ja("/nlp/dicts"),X.value&&Y.value==="default"&&G.value.find(F=>F.id==="zh-TW")?.downloaded&&(Y.value="zh-TW"),G.value.find(P=>P.id==="zh-CN")?.downloaded&&Y.value==="default"&&(Y.value="zh-CN")}catch(ge){console.error("Failed to get dict list:",ge)}finally{H.value=!0}}async function be(ge){ae.value=!0,re.value=ge;try{const P=await En(`/nlp/dicts/${ge}/download`);P.success?(await me(),Y.value=ge,o.success(e("quotes.wordcloud.dict.downloadSuccess"))):o.fail(e("quotes.wordcloud.dict.downloadFailed"),{description:P.error})}catch{o.fail(e("quotes.wordcloud.dict.downloadFailed"))}finally{ae.value=!1,re.value=null,Q.value=!1}}function xe(){Q.value=!1,localStorage.setItem(Ja,"true")}function le(){const ge=G.value.find(P=>P.id==="zh-TW");X.value&&ge&&!ge.downloaded&&!localStorage.getItem(Ja)&&(Q.value=!0)}const J=T(()=>[{label:e("quotes.wordcloud.posFilter.all"),value:"all"},{label:e("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:e("quotes.wordcloud.posFilter.custom"),value:"custom"}]),ee=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],pe=Math.max(...ee.map(ge=>ge.value)),ke=T(()=>[{label:e("quotes.wordcloud.size.small"),value:.75},{label:e("quotes.wordcloud.size.medium"),value:1},{label:e("quotes.wordcloud.size.large"),value:1.25},{label:e("quotes.wordcloud.size.xlarge"),value:1.5}]),$e=T(()=>w.value.map(ge=>({label:ge.name,tag:ge.tag,value:ge.tag,count:S.value.get(ge.tag)||0,meaningful:ge.meaningful})));async function De(){if(d.enableNodeNlpFeatures)try{const ge=await ja("/nlp/pos-tags");w.value=ge,$.value=ge.filter(P=>P.meaningful).map(P=>P.tag)}catch(ge){console.error("加载词性标签失败:",ge)}}let Fe=0;async function Te(){if(!d.sessionId||!se.value)return;const ge=++Fe;try{const P=await Ke().getWordFrequency(d.sessionId,{locale:V.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:R.value??void 0,topN:50,minCount:2,posFilterMode:d.enableNodeNlpFeatures?"custom":"all",customPosTags:d.enableNodeNlpFeatures?[...I]:void 0,enableStopwords:!0,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ge!==Fe)return;h.value=P.words.map(F=>({word:F.word,count:F.count,percentage:F.percentage}))}catch(P){if(console.error("加载话题迷你词云数据失败:",P),ge!==Fe)return;h.value=[]}}let Pe=0;async function je(){if(!d.sessionId||!se.value)return;const ge=++Pe;p.value.length===0&&(g.value=!0);try{const P=await Ke().getWordFrequency(d.sessionId,{locale:V.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:R.value??void 0,topN:pe,minCount:2,posFilterMode:d.enableNodeNlpFeatures?b.value:"all",customPosTags:d.enableNodeNlpFeatures&&b.value==="custom"?[...$.value]:void 0,enableStopwords:k.value,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ge!==Pe)return;if(p.value=P.words.map(F=>({word:F.word,count:F.count,percentage:F.percentage})),y.value={totalMessages:P.totalMessages,totalWords:P.totalWords,uniqueWords:P.uniqueWords},P.posTagStats){const F=new Map;for(const K of P.posTagStats)F.set(K.tag,K.count);S.value=F}}catch(P){if(console.error("加载词频数据失败:",P),ge!==Pe)return;p.value=[]}finally{ge===Pe&&(g.value=!1)}}he(()=>d.sessionId,()=>{R.value=null,p.value=[],h.value=[],y.value={totalMessages:0,totalWords:0,uniqueWords:0},S.value=new Map}),he(()=>[d.sessionId,d.timeFilter,R.value,b.value,k.value,Y.value,q.value,se.value],()=>{je()},{immediate:!0,deep:!0}),he(()=>[d.sessionId,d.timeFilter,R.value,Y.value,q.value,se.value],()=>{Te()},{immediate:!0,deep:!0}),he($,()=>{b.value==="custom"&&je()},{deep:!0}),he(V,()=>{je()});function Se(ge){d.enableRecordNavigation&&s.openChatRecordDrawer({keywords:[ge]})}return Be(async()=>{d.enableNodeNlpFeatures&&(De(),await me(),le())}),(ge,P)=>{const F=we,K=Ue,D=Ta,j=fs,U=Xe;return i(),m("div",r1,[d.enableNodeNlpFeatures&&ce.value&&!te.value?(i(),m("div",u1,[a("div",d1,[f(F,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),a("p",c1,c(t(e)("quotes.wordcloud.dict.needDownload")),1)]),a("div",m1,[(i(!0),m(ue,null,ve(G.value,oe=>(i(),W(K,{key:oe.id,size:"sm",color:"primary",loading:ae.value&&re.value===oe.id,disabled:ae.value&&re.value!==oe.id,icon:"i-heroicons-arrow-down-tray",onClick:ne=>be(oe.id)},{default:B(()=>[ie(c(t(e)(`quotes.wordcloud.dict.download_${oe.id}`,oe.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):E("",!0),se.value?(i(),m("div",g1,[g.value&&C.value.length===0?(i(),W(t(Yt),{key:0,text:t(e)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):E("",!0),f(Sb,{"total-messages":y.value.totalMessages,"total-words":y.value.totalWords,"unique-words":y.value.uniqueWords,"top-words":C.value,"topic-words":h.value,"pos-tag-stats":O.value,"time-filter":d.timeFilter,onWordClick:Se},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),d.showSharedTopics?(i(),W(qb,{key:1,"session-id":d.sessionId,"time-filter":d.timeFilter,"dict-type":Y.value,"exclude-words":q.value,onWordClick:Se},null,8,["session-id","time-filter","dict-type","exclude-words"])):E("",!0),f(t(Ze),{title:t(e)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:B(()=>[a("div",p1,[a("div",f1,[a("div",h1,[g.value?(i(),W(t(Yt),{key:0,text:t(e)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):C.value.length===0?(i(),m("div",v1,[f(F,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),a("p",y1,c(t(e)("quotes.wordcloud.empty.title")),1),a("p",x1,c(t(e)("quotes.wordcloud.empty.description")),1)])):(i(),W(t(l),{key:2,data:x.value,height:"100%","max-words":v.value,"color-scheme":U1,"size-scale":_.value,loading:g.value,onWordClick:Se},null,8,["data","max-words","size-scale","loading"]))]),d.enableRecordNavigation?(i(),m("p",b1,c(t(e)("quotes.wordcloud.stats.clickHint")),1)):E("",!0)]),a("div",k1,[a("div",null,[a("h4",_1,c(t(e)("quotes.wordcloud.config.maxWords")),1),f(t(pt),{modelValue:v.value,"onUpdate:modelValue":P[0]||(P[0]=oe=>v.value=oe),size:"xs",items:ee},null,8,["modelValue"])]),a("div",null,[a("h4",w1,c(t(e)("quotes.wordcloud.config.sizeScale")),1),f(t(pt),{modelValue:_.value,"onUpdate:modelValue":P[1]||(P[1]=oe=>_.value=oe),size:"xs",items:ke.value},null,8,["modelValue","items"])]),a("div",null,[a("h4",$1,c(t(e)("quotes.wordcloud.config.userFilter")),1),f(Nv,{modelValue:R.value,"onUpdate:modelValue":P[2]||(P[2]=oe=>R.value=oe),"session-id":d.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),d.enableNodeNlpFeatures?(i(),m("div",C1,[a("h4",S1,c(t(e)("quotes.wordcloud.config.dict")),1),a("div",I1,[fe.value.length>1?(i(),W(t(pt),{key:0,modelValue:Y.value,"onUpdate:modelValue":P[3]||(P[3]=oe=>Y.value=oe),size:"xs",items:fe.value},null,8,["modelValue","items"])):E("",!0),(i(!0),m(ue,null,ve(N.value,oe=>(i(),m("div",{key:oe.id,class:"flex items-center gap-2"},[f(K,{size:"xs",variant:"soft",color:"primary",loading:ae.value&&re.value===oe.id,disabled:ae.value&&re.value!==oe.id,icon:"i-heroicons-arrow-down-tray",onClick:ne=>be(oe.id)},{default:B(()=>[ie(c(t(e)(`quotes.wordcloud.dict.download_${oe.id}`,t(e)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),a("span",T1,c(t(e)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])])):E("",!0),d.enableNodeNlpFeatures?(i(),m("div",M1,[a("h4",z1,c(t(e)("quotes.wordcloud.config.posFilter")),1),f(t(pt),{modelValue:b.value,"onUpdate:modelValue":P[4]||(P[4]=oe=>b.value=oe),size:"xs",items:J.value},null,8,["modelValue","items"])])):E("",!0),a("div",A1,[f(D,{modelValue:k.value,"onUpdate:modelValue":P[5]||(P[5]=oe=>k.value=oe),label:t(e)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),d.enableNodeNlpFeatures&&b.value==="custom"?(i(),m("div",q1,[a("div",L1,[a("h4",D1,c(t(e)("quotes.wordcloud.posFilter.customHint")),1),a("div",E1,[f(K,{size:"xs",variant:"ghost",color:"neutral",onClick:P[6]||(P[6]=oe=>$.value=w.value.filter(ne=>ne.meaningful).map(ne=>ne.tag))},{default:B(()=>[ie(c(t(e)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),f(K,{size:"xs",variant:"ghost",color:"neutral",onClick:P[7]||(P[7]=oe=>$.value=w.value.map(ne=>ne.tag))},{default:B(()=>[ie(c(t(e)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),f(K,{size:"xs",variant:"ghost",color:"neutral",onClick:P[8]||(P[8]=oe=>$.value=[])},{default:B(()=>[ie(c(t(e)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),a("div",B1,[(i(!0),m(ue,null,ve($e.value,oe=>(i(),W(j,{key:oe.value,color:$.value.includes(oe.value)?"primary":"neutral",variant:$.value.includes(oe.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{$.value.includes(oe.value)?$.value=$.value.filter(ne=>ne!==oe.value):$.value=[...$.value,oe.value]}},{default:B(()=>[ie(c(oe.label)+" ",1),oe.count>0?(i(),m("span",F1,"("+c(oe.count)+")",1)):E("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):E("",!0),a("div",null,[a("div",R1,[a("h4",V1,c(t(e)("wordFilter.filterScheme")),1),f(K,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":t(e)("wordFilter.manage"),onClick:P[9]||(P[9]=oe=>t(u).openModal())},null,8,["aria-label"])]),f(t(pt),{modelValue:M.value,"onUpdate:modelValue":P[10]||(P[10]=oe=>M.value=oe),size:"xs",items:A.value},null,8,["modelValue","items"]),q.value.length>0?(i(),m("p",O1,c(t(e)("wordFilter.activeCount",{count:q.value.length})),1)):E("",!0)])])])]),_:1},8,["title"])])):E("",!0),d.enableNodeNlpFeatures?(i(),W(U,{key:2,open:Q.value,"onUpdate:open":P[12]||(P[12]=oe=>Q.value=oe),title:t(e)("quotes.wordcloud.dict.promptTitle")},{body:B(()=>[a("div",P1,[a("p",j1,c(t(e)("quotes.wordcloud.dict.promptDescription")),1),a("div",N1,[f(K,{variant:"ghost",color:"neutral",onClick:xe},{default:B(()=>[ie(c(t(e)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),f(K,{color:"primary",loading:ae.value,onClick:P[11]||(P[11]=oe=>be("zh-TW"))},{default:B(()=>[ie(c(t(e)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"])):E("",!0),f(i1)])}}});function M2(r){const l=T(()=>Bn(r)),e=T(()=>{const s=l.value;return s.length<2?!1:new Set(s.map(o=>Ee(o.date).year())).size>1}),n=T(()=>{const s=l.value,u=50;if(s.length<=u){const p=e.value?"YYYY/MM/DD":"MM/DD";return{labels:s.map(y=>Ee(y.date).format(p)),values:s.map(y=>y.messageCount)}}const o=Math.ceil(s.length/u),d=[],g=[];for(let p=0;p<s.length;p+=o){const y=s.slice(p,p+o);if(y.length===0)continue;const _=Math.floor(y.length/2),v=y[_].date,x=e.value?"YYYY/MM/DD":"MM/DD";d.push(Ee(v).format(x));const b=y.reduce(($,w)=>$+w.messageCount,0),k=Math.round(b/y.length);g.push(k)}return{labels:d,values:g}});return{isMultiYear:e,dailyChartData:n}}const W1=86400;function Qt(r){return typeof r=="number"&&Number.isFinite(r)}function H1(r){return Qt(r?.startTs)&&Qt(r?.endTs)}function $s(r,l){const e=l?.startTs??r?.start,n=l?.endTs??r?.end;return!Qt(e)||!Qt(n)||n<e?null:{start:e,end:n}}function K1(r,l=0){return!r||r.end<r.start?0:Math.max(Math.ceil((r.end-r.start)/W1),l,1)}function Y1(r){return r?[Ee.unix(r.start).format("YYYY-MM-DD"),Ee.unix(r.end).format("YYYY-MM-DD")]:null}function G1(r,l){const{t:e}=_e(),n=T(()=>$s(r.timeRange,r.timeFilter)),s=T(()=>H1(r.timeFilter)),u=T(()=>r.dailyActivity.filter(O=>O.messageCount>0).length),o=T(()=>K1(n.value,u.value)),d=T(()=>s.value?r.filteredMessageCount:r.session.messageCount),g=T(()=>s.value?r.filteredMemberCount??r.session.memberCount:r.session.memberCount),p=T(()=>o.value),y=T(()=>p.value===0?0:Math.round(d.value/p.value)),_=T(()=>o.value===0?0:Math.round(d.value/o.value)),v=T(()=>r.messageTypes.find(R=>R.type===1)?.count||0),x=T(()=>r.hourlyActivity.length?r.hourlyActivity.reduce((O,R)=>R.messageCount>O.messageCount?R:O,r.hourlyActivity[0]):null),b=T(()=>l.value.length?l.value.reduce((O,R)=>R.messageCount>O.messageCount?R:O,l.value[0]):null),k=T(()=>[e("common.weekday.mon"),e("common.weekday.tue"),e("common.weekday.wed"),e("common.weekday.thu"),e("common.weekday.fri"),e("common.weekday.sat"),e("common.weekday.sun")]),$=T(()=>{if(!l.value.length)return{weekday:0,weekend:0};const O=l.value.filter(A=>A.weekday>=1&&A.weekday<=5).reduce((A,M)=>A+M.messageCount,0),R=l.value.filter(A=>A.weekday>=6&&A.weekday<=7).reduce((A,M)=>A+M.messageCount,0),L=O+R;return{weekday:L>0?Math.round(O/L*100):0,weekend:L>0?Math.round(R/L*100):0}}),w=T(()=>r.dailyActivity.length?r.dailyActivity.reduce((O,R)=>R.messageCount>O.messageCount?R:O,r.dailyActivity[0]):null),S=T(()=>o.value),I=T(()=>S.value>0?Math.round(u.value/S.value*100):0),h=T(()=>{if(!r.hourlyActivity.length)return{count:0,ratio:0};const O=r.hourlyActivity.reduce((L,A)=>L+A.messageCount,0),R=r.hourlyActivity.filter(L=>L.hour>=0&&L.hour<=4).reduce((L,A)=>L+A.messageCount,0);return{count:R,ratio:O>0?Math.round(R/O*100):0}}),C=T(()=>{if(!r.dailyActivity.length)return 0;const O=[...r.dailyActivity].filter(A=>A.messageCount>0).sort((A,M)=>Ee(A.date).valueOf()-Ee(M.date).valueOf());if(O.length===0)return 0;let R=1,L=1;for(let A=1;A<O.length;A++){const M=Ee(O[A-1].date);Ee(O[A].date).diff(M,"day")===1?L++:(L>R&&(R=L),L=1)}return L>R&&(R=L),R});return{durationDays:o,displayMessageCount:d,displayMemberCount:g,dailyAvgMessages:_,totalDurationDays:p,totalDailyAvgMessages:y,imageCount:v,peakHour:x,peakWeekday:b,weekdayNames:k,weekdayVsWeekend:$,peakDay:w,activeDays:u,totalDays:S,activeRate:I,lateNightChat:h,maxConsecutiveDays:C}}function Q1(r){const l=z([]);let e=0;async function n(){const s=++e,u=r.sessionId();if(!u){l.value=[];return}try{const o=await Ke().getWeekdayActivity(u,r.timeFilter());s===e&&(l.value=o)}catch(o){s===e&&console.error("Failed to load weekday activity:",o)}}return he([r.sessionId,r.timeFilter],()=>n(),{immediate:!0,deep:!0}),{weekdayActivity:l}}const J1={key:0,class:"relative z-10 px-5 pb-5 pt-2 sm:px-8 sm:pb-6"},X1={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Z1={class:"min-w-0"},ek={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},tk={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},ak={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},sk={class:"text-sm text-gray-500"},nk={class:"text-sm text-gray-500"},ok={class:"ml-1 font-semibold text-pink-500"},lk={class:"text-sm text-gray-500"},ik={class:"text-sm text-gray-500"},rk={class:"text-sm text-gray-500"},uk={class:"text-sm text-gray-500"},dk={class:"text-sm text-gray-500"},ck={class:"text-sm text-gray-500"},mk=de({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(r){const{t:l}=_e(),e=r,n=T(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:l("analysis.overview.statCards.dailyAvgMessages"),value:l("analysis.overview.statCards.messagesCount",{count:e.dailyAvgMessages}),subtext:l("analysis.overview.statCards.daysCount",{count:e.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:l("analysis.overview.statCards.imageMessages"),value:l("analysis.overview.statCards.imagesCount",{count:e.imageCount}),subtext:`${l("analysis.overview.statCards.peakHour")} ${e.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:l("analysis.overview.statCards.mostActiveWeekday"),value:e.peakWeekday?e.weekdayNames[e.peakWeekday.weekday-1]:"-",subtext:l("analysis.overview.statCards.messagesOnDay",{count:e.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:l("analysis.overview.statCards.weekendActivity"),value:`${e.weekdayVsWeekend.weekend}%`,subtext:l("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:l("analysis.overview.statCards.mostActiveDate"),value:e.peakDay?Ee(e.peakDay.date).format("MM/DD"):"-",subtext:l("analysis.overview.statCards.messagesOnDay",{count:e.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:l("analysis.overview.statCards.lateNightChat"),value:l("analysis.overview.statCards.messagesCount",{count:e.lateNightCount}),subtext:l("analysis.overview.statCards.lateNightRatio",{ratio:e.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:l("analysis.overview.statCards.consecutiveStreak"),value:l("analysis.overview.statCards.daysStreak",{count:e.maxConsecutiveDays}),subtext:l("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:l("analysis.overview.statCards.activityRate"),value:`${e.activeRate}%`,subtext:l("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(s,u)=>{const o=we;return r.flat?(i(),m("div",J1,[u[0]||(u[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),a("div",X1,[(i(!0),m(ue,null,ve(n.value,d=>(i(),m("div",{key:d.icon+d.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(o,{name:d.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",d.colorClass])},null,8,["name","class"]),a("div",Z1,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",d.colorClass])},c(d.value),3),a("div",ek,c(d.label),1),a("div",tk,c(d.subtext),1)])]))),128))])])):(i(),m("div",ak,[f(t(lt),{label:t(l)("analysis.overview.statCards.dailyAvgMessages"),value:t(l)("analysis.overview.statCards.messagesCount",{count:r.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:B(()=>[a("span",sk,c(t(l)("analysis.overview.statCards.daysCount",{count:r.durationDays})),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.imageMessages"),value:t(l)("analysis.overview.statCards.imagesCount",{count:r.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:B(()=>[a("span",nk,c(t(l)("analysis.overview.statCards.peakHour")),1),a("span",ok,c(r.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.mostActiveWeekday"),value:r.peakWeekday?r.weekdayNames[r.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:B(()=>[a("span",lk,c(t(l)("analysis.overview.statCards.messagesOnDay",{count:r.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.weekendActivity"),value:`${r.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:B(()=>[a("span",ik,c(t(l)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.mostActiveDate"),value:r.peakDay?t(Ee)(r.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:B(()=>[a("span",rk,c(t(l)("analysis.overview.statCards.messagesOnDay",{count:r.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.lateNightChat"),value:t(l)("analysis.overview.statCards.messagesCount",{count:r.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:B(()=>[a("span",uk,c(t(l)("analysis.overview.statCards.lateNightRatio",{ratio:r.lateNightRatio})),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.consecutiveStreak"),value:t(l)("analysis.overview.statCards.daysStreak",{count:r.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:B(()=>[a("span",dk,c(t(l)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),f(t(lt),{label:t(l)("analysis.overview.statCards.activityRate"),value:`${r.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:B(()=>[a("span",ck,c(t(l)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),gk={class:"relative z-10 px-5 pt-6 pb-4 sm:px-8 sm:pt-8"},pk={class:"text-2xl font-bold tracking-tight text-gray-900 sm:text-3xl dark:text-gray-100"},fk={class:"mt-4 flex flex-col gap-5 sm:flex-row sm:items-start sm:gap-24"},hk={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},vk={class:"flex items-center gap-2"},yk={class:"flex h-6 w-6 shrink-0 items-center justify-center"},xk={class:"whitespace-nowrap"},bk={key:0,class:"flex items-center gap-2"},kk={class:"flex h-6 w-6 shrink-0 items-center justify-center"},_k={class:"font-mono text-xs opacity-90 whitespace-nowrap"},wk={class:"grid grid-cols-2 gap-x-8 gap-y-4 sm:flex sm:shrink-0 sm:gap-6"},$k={class:"flex flex-col gap-1 text-center"},Ck={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Sk={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Ik={class:"flex flex-col gap-1 text-center"},Tk={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Mk={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},zk={class:"flex flex-col gap-1 text-center"},Ak={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},qk={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Lk={class:"flex flex-col gap-1 text-center"},Dk={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Ek={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Bk={class:"relative z-10 px-5 pb-2 sm:px-8"},Fk={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},z2=de({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{},capturable:{type:Boolean,default:!0}},setup(r){ea([ms,ao,gs,qa,ps,ta]);const{t:l,locale:e}=_e(),n=Zt(),s=r,{weekdayActivity:u}=Q1({sessionId:()=>s.session.id,timeFilter:()=>s.timeFilter}),{durationDays:o,displayMessageCount:d,dailyAvgMessages:g,imageCount:p,peakHour:y,peakWeekday:_,weekdayNames:v,weekdayVsWeekend:x,peakDay:b,activeDays:k,totalDays:$,activeRate:w,lateNightChat:S,maxConsecutiveDays:I}=G1(s,u),h=z(null);let C=null;const O=T(()=>$s(s.timeRange,s.timeFilter)),R=T(()=>O.value?oo(O.value.start,O.value.end,"YYYY/MM/DD"):""),L=T(()=>{const H=Y1(O.value);if(H)return H;const ce=(fe=>fe.toISOString().slice(0,10))(new Date);return[ce,ce]}),A=T(()=>{const[H,V]=L.value,X=new Date(H+"T00:00:00Z"),ce=new Date(V+"T00:00:00Z"),fe=new Map;s.dailyActivity.filter(N=>N.date>=H&&N.date<=V).forEach(N=>fe.set(N.date,N.messageCount));const te=[],se=new Date(X);for(;se<=ce;){const N=se.toISOString().slice(0,10),me=fe.get(N)||0;te.push({value:[N,me],itemStyle:me===0?{color:Y.value}:void 0}),se.setUTCDate(se.getUTCDate()+1)}return te}),M=T(()=>s.dailyActivity.length===0?10:Math.max(...s.dailyActivity.map(H=>H.messageCount),1)),q={light:["#fce4ec","#f8a4b8","#f06292","#e91e63"],dark:["rgba(238, 69, 103, 0.15)","rgba(238, 69, 103, 0.45)","rgba(238, 69, 103, 0.75)","rgba(238, 69, 103, 1)"]},Y=T(()=>n.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),G=T(()=>({tooltip:{trigger:"item",formatter:H=>{const V=H.value[0],X=H.value[1];return`${V}<br/>${l("views.message.calendarTooltipMessages")}: ${X}`}},visualMap:{min:1,max:M.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${M.value}`,"1"],inRange:{color:n.value?q.dark:q.light},textStyle:{color:n.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:L.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:n.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[l("common.month.jan"),l("common.month.feb"),l("common.month.mar"),l("common.month.apr"),l("common.month.may"),l("common.month.jun"),l("common.month.jul"),l("common.month.aug"),l("common.month.sep"),l("common.month.oct"),l("common.month.nov"),l("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:n.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[l("common.weekday.sun"),l("common.weekday.mon"),l("common.weekday.tue"),l("common.weekday.wed"),l("common.weekday.thu"),l("common.weekday.fri"),l("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:A.value,renderItem:(H,V)=>{const X=V.coord(V.value(0)),ce=H.coordSys.cellWidth,fe=H.coordSys.cellHeight,te=Math.min(ce,fe)-3;return{type:"rect",shape:{x:X[0]-te/2,y:X[1]-te/2,width:te,height:te,r:3},style:{fill:V.visual("color")}}},itemStyle:{borderColor:n.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function ae(){h.value&&(C=aa(h.value,void 0,{renderer:"canvas"}),C.setOption({backgroundColor:"transparent",...G.value}))}function re(){C&&C.setOption({backgroundColor:"transparent",...G.value},{notMerge:!0})}function Q(){C?.resize()}return he([()=>s.dailyActivity,e,L],()=>re()),he(n,()=>{C?.dispose(),ae()}),Be(()=>{ae(),window.addEventListener("resize",Q)}),tt(()=>{window.removeEventListener("resize",Q),C?.dispose()}),(H,V)=>{const X=we;return i(),W(t(sa),{capturable:r.capturable},{default:B(()=>[a("div",gk,[a("h2",pk,c(r.session.name),1),a("div",fk,[a("div",hk,[a("div",vk,[a("div",yk,[r.session.type==="group"?(i(),W(X,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(i(),W(X,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),a("span",xk,c(r.session.platform.toUpperCase())+" · "+c(r.session.type==="private"?t(l)("analysis.overview.identity.privateChat"):t(l)("analysis.overview.identity.groupChat")),1)]),R.value?(i(),m("div",bk,[a("div",kk,[f(X,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),a("span",_k,c(R.value),1)])):E("",!0)]),a("div",wk,[a("div",$k,[a("span",Ck,c(t(d).toLocaleString()),1),a("span",Sk,c(t(l)("analysis.overview.identity.totalMessages")),1)]),a("div",Ik,[a("span",Tk,c(t(o).toLocaleString()),1),a("span",Mk,c(t(l)("analysis.overview.identity.durationDays")),1)]),a("div",zk,[a("span",Ak,c(t(k).toLocaleString()),1),a("span",qk,c(t(l)("analysis.overview.identity.activeDays")),1)]),a("div",Lk,[a("span",Dk,c(t(g).toLocaleString()),1),a("span",Ek,c(t(l)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),a("div",Bk,[V[0]||(V[0]=a("div",{class:"mb-2 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),a("div",Fk,[a("div",{ref_key:"chartRef",ref:h,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),f(mk,{flat:"","daily-avg-messages":t(g),"duration-days":t(o),"image-count":t(p),"peak-hour":t(y),"peak-weekday":t(_),"weekday-names":t(v),"weekday-vs-weekend":t(x),"peak-day":t(b),"active-days":t(k),"total-days":t($),"active-rate":t(w),"late-night-count":t(S).count,"late-night-ratio":t(S).ratio,"max-consecutive-days":t(I)},null,8,["daily-avg-messages","duration-days","image-count","peak-hour","peak-weekday","weekday-names","weekday-vs-weekend","peak-day","active-days","total-days","active-rate","late-night-count","late-night-ratio","max-consecutive-days"])]),_:1},8,["capturable"])}}}),Rk={class:"p-3 sm:p-5"},A2=de({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{},capturable:{type:Boolean,default:!0}},setup(r){const{t:l}=_e();return(e,n)=>r.dailyActivity.length>0?(i(),W(t(Ze),{key:0,title:t(l)("analysis.overview.dailyTrend.title"),capturable:r.capturable,"show-divider":!1},{default:B(()=>[a("div",Rk,[f(t(ga),{data:r.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title","capturable"])):E("",!0)}}),Vk={slots:{root:["relative inline-flex items-center","flex-wrap"],base:["rounded-md","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",item:'px-1.5 py-0.5 rounded-sm font-medium inline-flex items-center gap-0.5 ring ring-inset ring-accented bg-elevated text-default data-disabled:cursor-not-allowed data-disabled:opacity-75 wrap-anywhere data-[state="active"]:bg-accented',itemText:"",itemDelete:["inline-flex items-center rounded-xs text-dimmed hover:text-default hover:bg-accented/75 disabled:pointer-events-none","transition-colors"],itemDeleteIcon:"shrink-0",input:"flex-1 border-0 bg-transparent placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",item:"text-sm",itemDeleteIcon:"size-4"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated has-focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated has-focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent has-focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 has-focus-visible:outline-3 has-focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 has-focus-visible:outline-3 has-focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 has-focus-visible:outline-3 has-focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 has-focus-visible:outline-3 has-focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 has-focus-visible:outline-3 has-focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 has-focus-visible:outline-3 has-focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 has-focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 has-focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 has-focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 has-focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 has-focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 has-focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 has-focus-visible:outline-3 has-focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 has-focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},Ok=Object.assign({inheritAttrs:!1},{__name:"InputTags",props:{as:{type:null,required:!1},placeholder:{type:String,required:!1},maxLength:{type:Number,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},deleteIcon:{type:null,required:!1},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1},max:{type:Number,required:!1},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["change","blur","focus","update:modelValue","invalid","addTag","removeTag"],setup(r,{expose:l,emit:e}){const n=r,s=e,u=Jt(),o=ka("inputTags",n),d=wa(),g=ss(ns(o,"as","addOnPaste","addOnTab","addOnBlur","duplicate","delimiter","max","convertValue","displayValue","required"),s),{emitFormBlur:p,emitFormFocus:y,emitFormChange:_,emitFormInput:v,size:x,color:b,id:k,name:$,highlight:w,disabled:S,ariaAttrs:I}=_a(n),{orientation:h,size:C}=os(n),{isLeading:O,isTrailing:R,leadingIconName:L,trailingIconName:A}=$a(o),M=T(()=>C.value||x.value),q=T(()=>$t({extend:$t(Vk),...d.ui?.inputTags||{}})({color:b.value??o.color,variant:o.variant,size:M?.value??o.size,loading:o.loading,highlight:w.value??o.highlight,fixed:o.fixed,leading:O.value||!!o.avatar||!!u.leading,trailing:R.value||!!u.trailing,fieldGroup:h.value})),Y=zt("inputRef");function G(){o.autofocus&&Y.value?.$el?.focus()}Be(()=>{setTimeout(()=>{G()},o.autofocusDelay)});function ae(H){if(ls(o.modelValue)===H)return;const V=new Event("change",{target:{value:H}});s("change",V),_(),v()}function re(H){s("blur",H),p()}function Q(H){s("focus",H),y()}return l({inputRef:We(()=>Y.value?.$el)}),(H,V)=>(i(),W(t(Ll),qe({id:t(k),"model-value":t(o).modelValue,"default-value":t(o).defaultValue,"data-slot":"root",class:q.value.root({class:[q.value.base({class:t(o).ui?.base}),t(o).ui?.root,t(o).class]})},t(g),{name:t($),disabled:t(S),"onUpdate:modelValue":ae}),{default:B(({modelValue:X})=>[(i(!0),m(ue,null,ve(X,(ce,fe)=>(i(),W(t(Rl),{key:fe,value:ce,"data-slot":"item",class:Z(q.value.item({class:[t(o).ui?.item]}))},{default:B(()=>[f(t(jl),{"data-slot":"itemText",class:Z(q.value.itemText({class:[t(o).ui?.itemText]}))},{default:B(()=>[u["item-text"]?ye(H.$slots,"item-text",{key:0,item:ce,index:fe,ui:q.value}):E("",!0)]),_:2},1032,["class"]),f(t(Ol),{"data-slot":"itemDelete",class:Z(q.value.itemDelete({class:[t(o).ui?.itemDelete]})),disabled:t(S)},{default:B(()=>[ye(H.$slots,"item-delete",{item:ce,index:fe,ui:q.value},()=>[f(we,{name:t(o).deleteIcon||t(d).ui.icons.close,"data-slot":"itemDeleteIcon",class:Z(q.value.itemDeleteIcon({class:[t(o).ui?.itemDeleteIcon]}))},null,8,["name","class"])])]),_:2},1032,["class","disabled"])]),_:2},1032,["value","class"]))),128)),f(t(El),qe({ref_key:"inputRef",ref:Y},{...H.$attrs,...t(I)},{placeholder:t(o).placeholder,"max-length":t(o).maxLength,"data-slot":"input",class:q.value.input({class:t(o).ui?.input}),onBlur:re,onFocus:Q}),null,16,["placeholder","max-length","class"]),ye(H.$slots,"default",{ui:q.value}),t(O)||t(o).avatar||u.leading?(i(),m("span",{key:0,"data-slot":"leading",class:Z(q.value.leading({class:t(o).ui?.leading}))},[ye(H.$slots,"leading",{ui:q.value},()=>[t(O)&&t(L)?(i(),W(we,{key:0,name:t(L),"data-slot":"leadingIcon",class:Z(q.value.leadingIcon({class:t(o).ui?.leadingIcon}))},null,8,["name","class"])):t(o).avatar?(i(),W(Kt,qe({key:1,size:t(o).ui?.leadingAvatarSize||q.value.leadingAvatarSize()},t(o).avatar,{"data-slot":"leadingAvatar",class:q.value.leadingAvatar({class:t(o).ui?.leadingAvatar})}),null,16,["size","class"])):E("",!0)])],2)):E("",!0),t(R)||u.trailing?(i(),m("span",{key:1,"data-slot":"trailing",class:Z(q.value.trailing({class:t(o).ui?.trailing}))},[ye(H.$slots,"trailing",{ui:q.value},()=>[t(A)?(i(),W(we,{key:0,name:t(A),"data-slot":"trailingIcon",class:Z(q.value.trailingIcon({class:t(o).ui?.trailingIcon}))},null,8,["name","class"])):E("",!0)])],2)):E("",!0)]),_:3},16,["id","model-value","default-value","class","name","disabled"]))}}),Pk={class:"flex items-center justify-between gap-3"},jk={class:"flex items-center gap-2"},Nk={class:"text-sm font-medium text-gray-900 dark:text-white"},Uk={class:"text-xs text-gray-500 dark:text-gray-400"},Wk=de({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(r){const{t:l}=_e(),e=Fn(),n=r,s=z(!1);function u(g){return g.groupNickname||g.accountName||g.platformId}const o=T(()=>{const g=e.currentSession?.ownerId;return g&&n.members.find(p=>p.platformId===g)||null}),d=T(()=>o.value?u(o.value):e.currentSession?.ownerId??"");return(g,p)=>{const y=we,_=Ue;return i(),W(t(mt),{class:"w-150 p-3"},{default:B(()=>[a("div",Pk,[a("div",jk,[a("div",{class:Z(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",r.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[f(y,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),a("div",null,[a("h3",Nk,c(d.value?t(l)("members.ownerPrompt.currentOwner",{name:d.value}):t(l)("members.ownerPrompt.choose")),1),a("p",Uk,c(t(l)("members.ownerPrompt.helper")),1)])]),f(_,{size:"sm",variant:d.value?"outline":"solid",color:"primary",onClick:p[0]||(p[0]=v=>s.value=!0)},{default:B(()=>[ie(c(d.value?t(l)("members.ownerPrompt.change"):t(l)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),f(lo,{modelValue:s.value,"onUpdate:modelValue":p[1]||(p[1]=v=>s.value=v),"session-id":r.sessionId,"chat-type":r.chatType},null,8,["modelValue","session-id","chat-type"])]),_:1})}}}),Hk={key:0,class:"mb-6"},Kk={class:"flex items-center gap-3"},Yk={class:"text-xl font-bold text-gray-900 dark:text-white"},Gk={class:"text-sm text-gray-500 dark:text-gray-400"},Qk={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},Jk={key:0,class:"flex items-center gap-2"},Xk={class:"text-xs text-gray-500 dark:text-gray-400"},Zk={key:0,class:"flex flex-1 items-center justify-center"},e_={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},t_={class:"text-sm text-gray-500 dark:text-gray-400"},a_={key:2,class:"flex flex-1 flex-col items-center justify-center"},s_={class:"text-gray-500 dark:text-gray-400"},n_={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},o_={key:0,"aria-hidden":"true"},l_={class:"flex shrink-0 flex-col leading-none"},i_={class:"flex shrink-0 flex-col leading-none"},r_={class:"flex shrink-0 flex-col leading-none"},u_={class:"inline-flex items-center gap-1.5"},d_={class:"text-right"},c_=["data-index","onClick"],m_={key:0,class:"flex justify-center"},g_={class:"flex min-w-0 items-center gap-2.5"},p_={class:"min-w-0"},f_=["title"],h_=["title"],v_=["title"],y_={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},x_=["title"],b_={class:"flex justify-end gap-1"},k_={class:"p-6 text-center"},__={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},w_={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},$_={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},C_={class:"flex justify-center gap-3"},S_={class:"p-6 text-center"},I_={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},T_={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},M_={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},z_={class:"flex justify-center gap-3"},A_={class:"p-6"},q_={class:"mb-4 flex items-center gap-3"},L_={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},D_={class:"text-lg font-semibold text-gray-900 dark:text-white"},E_={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},B_={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},F_={class:"flex justify-end gap-2"},R_=64,V_=de({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0},chatType:{default:"group"}},emits:["data-changed"],setup(r,{emit:l}){const{t:e}=_e(),n=Ke(),s=xt(),u=r,o=l,d=z([]),g=z(!1),p=z(!1),y=z(""),_=T(()=>Qn(u.chatType,d.value.length)),v=T(()=>u.chatType==="group"?"":_.value?"member-table-grid--private":"member-table-grid--private-without-selection"),x=z(null),b=z(!1),k=z(!1),$=z(!1),w=z(!1),S=z(!1),{sortState:I,toggleSort:h,resetSort:C,isSortActive:O}=io({initialState:{field:"messageCount",direction:"desc"}}),R=z(new Set);let L=0;function A(F,K){const D=K instanceof Error?K:new Error(String(K));console.error(F,D),Pn(`${F} ${D.message}`,D.stack)}function M(F){return F.groupNickname||F.accountName||F.platformId}function q(F){return M(F).slice(0,1)}function Y(F){s.openChatRecordDrawer({sessionId:u.sessionId,memberId:F.id,memberName:M(F)})}const G=T(()=>Jn(d.value,y.value,I.value)),{selectedIds:ae,setSelection:re,clearSelection:Q,handleRowClick:H,handleRowMouseDown:V}=ro({rows:G,getRowId:F=>F.id}),X=T(()=>d.value.filter(F=>ae.value.has(F.id))),ce=T(()=>X.value.length===2),fe=T(()=>X.value.reduce((F,K)=>F+K.messageCount,0));function te(F,K,D){_.value&&H(F,K,D)}function se(F){_.value&&V(F)}const N=T(()=>{if(X.value.length!==2)return null;const[F,K]=X.value;return K.messageCount>F.messageCount||K.messageCount===F.messageCount&&K.id<F.id?{primary:K,secondary:F}:{primary:F,secondary:K}});function me(F,K){return O(F,K)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const be=z(null),xe=Rn(T(()=>({count:G.value.length,getScrollElement:()=>be.value,estimateSize:()=>R_,overscan:8,getItemKey:F=>G.value[F]?.id??F}))),le=T(()=>xe.value.getVirtualItems().map(F=>({virtualItem:F,member:G.value[F.index]}))),J=T(()=>xe.value.getTotalSize());function ee(F){F instanceof HTMLElement&&xe.value.measureElement(F)}async function pe(){await Ae(),be.value?.scrollTo({top:0}),xe.value.measure()}async function ke(){const F=u.sessionId;if(!F)return;const K=++L;g.value=!0,p.value=!1;try{const D=await n.getMembers(F);if(K!==L||F!==u.sessionId)return;d.value=D,await Ae(),xe.value.measure()}catch(D){K===L&&(p.value=!0),A("Failed to load member list:",D)}finally{K===L&&(g.value=!1)}}function $e(F,K){const D=new Set(R.value);K?D.add(F):D.delete(F),R.value=D}async function De(F,K){const D=u.sessionId,j=JSON.parse(JSON.stringify(K)),U=JSON.stringify(F.aliases),oe=JSON.stringify(j);if(U!==oe){$e(F.id,!0);try{if(await n.updateMemberAliases(D,F.id,j)&&D===u.sessionId){const Ve=d.value.findIndex(Le=>Le.id===F.id);Ve!==-1&&(d.value[Ve]={...d.value[Ve],aliases:j},await Ae(),xe.value.measure())}}catch(ne){A("Failed to save member aliases:",ne)}finally{$e(F.id,!1)}}}function Fe(F){x.value=F}function Te(){x.value=null}async function Pe(){if(x.value){b.value=!0;try{const F=x.value.id;if(await n.deleteMember(u.sessionId,F)){const D=new Set(ae.value);D.delete(F),re(D),await ke(),o("data-changed")}}catch(F){A("Failed to delete member:",F)}finally{b.value=!1,x.value=null}}}function je(){ae.value.size!==0&&(k.value=!0)}async function Se(){const F=u.sessionId,K=Array.from(ae.value);if(K.length!==0){$.value=!0;try{await n.deleteMembers(F,K)&&F===u.sessionId&&(k.value=!1,Q(),await ke(),o("data-changed"))}catch(D){A("Failed to delete selected members:",D)}finally{$.value=!1}}}function ge(){ce.value&&(w.value=!0)}async function P(){if(N.value){S.value=!0;try{await n.mergeMembers(u.sessionId,N.value.primary.id,N.value.secondary.id)&&(w.value=!1,Q(),await ke(),o("data-changed"))}catch(F){A("Failed to merge members:",F)}finally{S.value=!1}}}return he([y,I],pe),he(_,F=>{F||Q()}),he(()=>u.sessionId,()=>{L+=1,d.value=[],p.value=!1,R.value=new Set,y.value="",C(),Q(),pe(),ke()},{immediate:!0}),tt(()=>{L+=1}),(F,K)=>{const D=Ue,j=Ft,U=we,oe=St,ne=Ta,Ve=Ok,Le=Xe;return i(),m("div",{class:Z(["main-content",u.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[u.showHeader?(i(),m("div",Hk,[a("div",Kk,[a("div",null,[a("h2",Yk,c(t(e)(u.chatType==="private"?"members.private.title":"members.list.title")),1),a("p",Gk,c(t(e)(u.chatType==="private"?"members.private.description":"members.list.description",{count:d.value.length})),1)])])])):E("",!0),f(Wk,{class:"mb-6","session-id":r.sessionId,members:d.value,"chat-type":u.chatType},null,8,["session-id","members","chat-type"]),a("div",Qk,[f(j,{modelValue:y.value,"onUpdate:modelValue":K[1]||(K[1]=Me=>y.value=Me),placeholder:t(e)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Vn({_:2},[y.value?{name:"trailing",fn:B(()=>[f(D,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:K[0]||(K[0]=Me=>y.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),_.value?(i(),m("div",Jk,[g.value&&d.value.length>0?(i(),W(U,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):E("",!0),a("span",Xk,c(t(e)("members.list.selectedCount",{count:t(ae).size})),1),f(D,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!ce.value,onClick:ge},{default:B(()=>[ie(c(t(e)("members.list.mergeSelected")),1)]),_:1},8,["disabled"]),f(D,{icon:"i-heroicons-trash",size:"sm",color:"error",variant:"outline",disabled:t(ae).size===0,onClick:je},{default:B(()=>[ie(c(t(e)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):E("",!0)]),a("div",{class:Z(["flex min-h-[240px] flex-col overflow-hidden rounded-lg border border-gray-200/60 bg-card-bg dark:border-white/5 dark:bg-card-dark",u.showHeader?"h-[500px]":"min-h-0 flex-1"])},[g.value&&d.value.length===0?(i(),m("div",Zk,[f(U,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):p.value&&d.value.length===0?(i(),m("div",e_,[f(U,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),a("p",t_,c(t(e)("members.list.loadError")),1),f(D,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:ke},{default:B(()=>[ie(c(t(e)("common.retry")),1)]),_:1})])):G.value.length===0?(i(),m("div",a_,[f(U,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",s_,c(y.value?t(e)("members.list.noMatch"):t(e)("members.list.empty")),1)])):(i(),m("div",n_,[a("div",{class:Z(["flex h-full flex-col",u.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[a("div",{class:Z(["member-table-grid shrink-0 border-b border-gray-200 bg-gray-50 px-3 py-2 text-xs font-medium text-gray-500 dark:border-white/5 dark:bg-page-dark/80 dark:text-gray-400",v.value])},[_.value?(i(),m("span",o_)):E("",!0),a("span",null,c(t(e)("members.list.table.accountName")),1),u.chatType==="group"?(i(),m("button",{key:1,type:"button",class:"flex items-center justify-start gap-1.5 text-left transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:K[2]||(K[2]=Me=>t(h)("groupNickname"))},[ie(c(t(e)("members.list.table.groupNickname"))+" ",1),a("span",l_,[f(U,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",me("groupNickname","asc")])},null,8,["class"]),f(U,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",me("groupNickname","desc")])},null,8,["class"])])])):E("",!0),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:K[3]||(K[3]=Me=>t(h)("messageCount"))},[ie(c(t(e)("members.list.table.messageCount"))+" ",1),a("span",i_,[f(U,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",me("messageCount","asc")])},null,8,["class"]),f(U,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",me("messageCount","desc")])},null,8,["class"])])]),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:K[4]||(K[4]=Me=>t(h)("lastMessageTs"))},[ie(c(t(e)("members.list.table.lastMessageTime"))+" ",1),a("span",r_,[f(U,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",me("lastMessageTs","asc")])},null,8,["class"]),f(U,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",me("lastMessageTs","desc")])},null,8,["class"])])]),a("span",u_,[a("span",null,c(t(e)("members.list.table.customAlias")),1),f(oe,{text:t(e)("members.list.tip"),popper:{placement:"top"}},{default:B(()=>[f(U,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),a("span",d_,c(t(e)("members.list.table.actions")),1)],2),a("div",{ref_key:"listScrollRef",ref:be,class:"min-h-0 flex-1 overflow-y-auto"},[a("div",{class:"relative",style:et({height:`${J.value}px`})},[(i(!0),m(ue,null,ve(le.value,({virtualItem:Me,member:Re})=>(i(),m("div",{key:String(Me.key),ref_for:!0,ref:ee,"data-index":Me.index,class:Z(["member-table-grid absolute left-0 top-0 w-full min-h-16 border-b border-gray-100/80 px-3 py-2 transition-colors hover:bg-gray-50 dark:border-white/5 dark:hover:bg-gray-800/30",[v.value,_.value?"cursor-pointer":"",_.value&&t(ae).has(Re.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:et({transform:`translateY(${Me.start}px)`}),onMousedown:se,onClick:st=>te(Me.index,Re.id,st)},[_.value?(i(),m("div",m_,[f(ne,{"model-value":t(ae).has(Re.id),onClick:Oe(st=>te(Me.index,Re.id,st),["stop"])},null,8,["model-value","onClick"])])):E("",!0),a("div",g_,[f(On,{src:Re.avatar,alt:M(Re),text:q(Re),"fallback-class":["flex h-8 w-8 items-center justify-center rounded-full text-[10px] font-bold","bg-primary-500 text-white"]},null,8,["src","alt","text"]),a("div",p_,[a("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Re.accountName||"-"},c(Re.accountName||"-"),9,f_),a("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Re.platformId},c(Re.platformId),9,h_)])]),u.chatType==="group"?(i(),m("p",{key:1,class:Z(["truncate text-sm text-gray-700 dark:text-gray-300",Re.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Re.groupNickname||"-"},c(Re.groupNickname||"-"),11,v_)):E("",!0),a("span",y_,c(Re.messageCount.toLocaleString()),1),a("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Re.lastMessageTs===null?"-":t(Ua)(Re.lastMessageTs)},c(Re.lastMessageTs===null?"-":t(Ua)(Re.lastMessageTs)),9,x_),f(Ve,{"model-value":Re.aliases,placeholder:t(e)("members.list.aliasPlaceholder"),loading:R.value.has(Re.id),size:"xs",class:"w-full",onClick:K[5]||(K[5]=Oe(()=>{},["stop"])),"onUpdate:modelValue":st=>De(Re,st)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),a("div",b_,[f(D,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:t(e)("common.viewChatRecords"),onClick:Oe(st=>Y(Re),["stop"])},null,8,["title","onClick"]),f(D,{icon:"i-heroicons-trash",size:"xs",color:"error",variant:"ghost",title:t(e)("members.list.delete"),onClick:Oe(st=>Fe(Re),["stop"])},null,8,["title","onClick"])])],46,c_))),128))],4)],512)],2)]))],2),f(Le,{open:!!x.value,ui:{content:"max-w-sm"},"onUpdate:open":K[6]||(K[6]=Me=>x.value=null)},{content:B(()=>[a("div",k_,[a("div",__,[f(U,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",w_,c(t(e)("members.list.modal.title")),1),a("p",$_,c(t(e)("members.list.modal.content",{name:x.value?M(x.value):"",count:x.value?.messageCount.toLocaleString()})),1),a("div",C_,[f(D,{variant:"outline",onClick:Te},{default:B(()=>[ie(c(t(e)("members.list.modal.cancel")),1)]),_:1}),f(D,{color:"error",loading:b.value,onClick:Pe},{default:B(()=>[ie(c(t(e)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(Le,{open:k.value,ui:{content:"max-w-sm"},"onUpdate:open":K[8]||(K[8]=Me=>k.value=Me)},{content:B(()=>[a("div",S_,[a("div",I_,[f(U,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",T_,c(t(e)("members.list.batchDeleteModal.title")),1),a("p",M_,c(t(e)("members.list.batchDeleteModal.content",{count:X.value.length,messageCount:fe.value.toLocaleString()})),1),a("div",z_,[f(D,{variant:"outline",disabled:$.value,onClick:K[7]||(K[7]=Me=>k.value=!1)},{default:B(()=>[ie(c(t(e)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),f(D,{color:"error",loading:$.value,onClick:Se},{default:B(()=>[ie(c(t(e)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(Le,{open:w.value,ui:{content:"max-w-md"},"onUpdate:open":K[10]||(K[10]=Me=>w.value=Me)},{content:B(()=>[a("div",A_,[a("div",q_,[a("div",L_,[f(U,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),a("h3",D_,c(t(e)("members.list.mergeModal.title")),1)]),a("p",E_,c(t(e)("members.list.mergeModal.content",{source:N.value?M(N.value.secondary):"",sourceCount:N.value?N.value.secondary.messageCount.toLocaleString():"0",target:N.value?M(N.value.primary):"",targetCount:N.value?N.value.primary.messageCount.toLocaleString():"0"})),1),a("p",B_,c(t(e)("members.list.mergeModal.hint")),1),a("div",F_,[f(D,{variant:"outline",disabled:S.value,onClick:K[9]||(K[9]=Me=>w.value=!1)},{default:B(()=>[ie(c(t(e)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),f(D,{color:"primary",loading:S.value,onClick:P},{default:B(()=>[ie(c(t(e)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),q2=nt(V_,[["__scopeId","data-v-0754d30f"]]),O_={class:"mt-3 flex flex-col items-stretch gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-3"},P_={class:"max-w-full overflow-x-auto scrollbar-hide"},L2=de({__name:"SessionAnalysisHeader",props:qt({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{},showSessionActions:{type:Boolean,default:!0}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:qt(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears","timeRangeInitialized"],["update:activeTab","update:timeRangeValue"]),setup(r,{emit:l}){const e=Ht(r,"activeTab"),n=Ht(r,"timeRangeValue"),s=r,u=l,{t:o}=_e(),d=xt(),g=T(()=>!["ai-chat","memory","lab","debug"].includes(e.value)),p=T(()=>s.tabs.map(y=>({id:y.id,label:o(y.labelKey),icon:y.icon})));return(y,_)=>{const v=Ue,x=St;return i(),W(co,{title:r.title,avatar:r.avatar,size:"compact",icon:r.icon,"icon-class":r.iconClass},{actions:B(()=>[r.showSessionActions&&t(d).effectiveToolsPanelPosition==="header"?(i(),m(ue,{key:0},[f(x,{text:t(o)("analysis.tooltip.viewChatRecord")},{default:B(()=>[f(v,{icon:"i-heroicons-chat-bubble-bottom-center-text",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:_[0]||(_[0]=b=>u("openChatRecord"))})]),_:1},8,["text"]),f(x,{text:t(o)("analysis.tooltip.incrementalImport")},{default:B(()=>[f(v,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:_[1]||(_[1]=b=>u("openIncrementalImport"))})]),_:1},8,["text"]),f(x,{text:t(o)("analysis.tooltip.memberManagement")},{default:B(()=>[f(v,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:_[2]||(_[2]=b=>u("openMemberManagement"))})]),_:1},8,["text"]),f(Lt,{color:"gray"}),f(x,{text:t(o)("analysis.tooltip.more")},{default:B(()=>[f(v,{"data-tools-panel-trigger":"",icon:"i-heroicons-ellipsis-horizontal",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:_[3]||(_[3]=b=>t(d).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):r.showSessionActions?(i(),W(Lt,{key:1,color:"gray"})):E("",!0)]),default:B(()=>[a("div",O_,[f(t(mo),{modelValue:e.value,"onUpdate:modelValue":_[4]||(_[4]=b=>e.value=b),class:"min-w-0 shrink",items:p.value},null,8,["modelValue","items"]),a("div",P_,[g.value?(i(),W(uo,{key:0,modelValue:n.value,"onUpdate:modelValue":_[5]||(_[5]=b=>n.value=b),"session-id":r.currentSessionId??void 0,"initial-state":r.initialTimeState,size:"sm","onUpdate:fullRange":_[6]||(_[6]=b=>u("update:fullRange",b)),"onUpdate:availableYears":_[7]||(_[7]=b=>u("update:availableYears",b)),onInitializationComplete:_[8]||(_[8]=b=>u("timeRangeInitialized",b))},null,8,["modelValue","session-id","initial-state"])):E("",!0)])])]),_:1},8,["title","avatar","icon","icon-class"])}}}),j_={class:"space-y-4 p-5"},N_={class:"flex items-center gap-2"},U_={class:"text-base font-semibold text-gray-900 dark:text-white"},W_={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},H_={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},K_={class:"flex items-center justify-between"},Y_={class:"text-gray-500"},G_={class:"font-medium text-gray-800 dark:text-gray-200"},Q_={key:0,class:"mt-1 flex items-center justify-between"},J_={class:"text-gray-500"},X_={class:"text-gray-700 dark:text-gray-300"},Z_={key:1,class:"mt-2"},ew={class:"flex items-center justify-between text-xs text-gray-500"},tw={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},aw={key:2,class:"mt-1 text-xs text-red-500"},sw={class:"text-sm text-gray-600 dark:text-gray-400"},nw={key:0,class:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-xs text-amber-700 dark:border-amber-800/50 dark:bg-amber-900/20 dark:text-amber-400"},ow={class:"flex justify-end gap-2"},lw={class:"text-xs text-gray-400"},iw={class:"flex flex-wrap justify-end gap-2"},Ne="settings.ai.semanticIndex",D2=de({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(r,{emit:l}){const e=r,n=l,{t:s}=_e(),u=so(),o=T({get:()=>e.modelValue,set:I=>n("update:modelValue",I)}),d=z(null),g=z(!1),p=z(!1),y=z(!1),_=T(()=>{const I=d.value;return!I||!I.enabled?s(`${Ne}.session.notEnabled`):I.needsRebuild?s(`${Ne}.state.needsRebuild`):I.running||I.queued||I.indexStatus==="running"?s(`${Ne}.state.building`):I.indexStatus==="completed"?s(`${Ne}.state.completed`):I.indexStatus==="failed"?s(`${Ne}.state.failed`):I.indexStatus==="paused"?s(`${Ne}.state.paused`):s(`${Ne}.state.pending`)}),v=T(()=>{const I=d.value;return!!I&&(I.running||I.queued||I.indexStatus==="running")}),x=T(()=>d.value&&d.value.totalMessages>0?Math.round(d.value.indexedMessages/d.value.totalMessages*100):0);let b=null;function k(){b&&(clearTimeout(b),b=null)}function $(){k(),b=setTimeout(async()=>{try{d.value=await u.status(e.sessionId)}catch(I){console.error("[semantic-index] poll status failed:",I)}v.value&&e.modelValue?$():k()},1500)}async function w(){p.value=!0;try{const[I,h]=await Promise.all([u.getConfig(),u.status(e.sessionId)]);g.value=I.config.enabled&&I.configured&&(I.config.mode==="local"?!!I.config.local.modelId:!!I.config.api?.baseUrl&&!!I.config.api?.model&&(!no(I.config.api?.baseUrl)||I.apiKeySet)),d.value=h}catch(I){console.error("[semantic-index] load session status failed:",I)}finally{p.value=!1}v.value&&$()}async function S(I){y.value=!0;try{d.value=await u[I](e.sessionId)}catch(h){console.error(`[semantic-index] ${I} failed:`,h)}finally{y.value=!1}v.value?$():k()}return he(()=>e.modelValue,I=>{I?w():k()}),tt(k),(I,h)=>{const C=we,O=Ue,R=Xe;return i(),W(R,{open:o.value,"onUpdate:open":h[10]||(h[10]=L=>o.value=L),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:B(()=>[a("div",j_,[a("div",N_,[f(C,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),a("h3",U_,c(t(s)(`${Ne}.title`)),1)]),p.value?(i(),m("div",W_,[f(C,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),ie(" "+c(t(s)("common.loading")),1)])):(i(),m(ue,{key:1},[a("div",H_,[a("div",K_,[a("span",Y_,c(t(s)(`${Ne}.session.statusLabel`)),1),a("span",G_,c(_.value),1)]),d.value?.enabled&&d.value.indexStatus==="completed"?(i(),m("div",Q_,[a("span",J_,c(t(s)(`${Ne}.session.coverageLabel`)),1),a("span",X_,c(x.value)+"%",1)])):E("",!0),v.value?(i(),m("div",Z_,[a("div",ew,[a("span",null,c(t(s)(`${Ne}.session.progressLabel`)),1),a("span",null,c(d.value?.indexedMessages??0)+" / "+c(d.value?.totalMessages??0)+" ("+c(x.value)+"%) ",1)]),a("div",tw,[a("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:et({width:`${x.value}%`})},null,4)])])):E("",!0),d.value?.error?(i(),m("p",aw,c(d.value.error),1)):E("",!0)]),d.value?.enabled?(i(),m(ue,{key:1},[a("p",lw,c(t(s)(`${Ne}.session.buildVsEnable`)),1),a("div",iw,[v.value?(i(),m(ue,{key:0},[f(O,{variant:"soft",loading:y.value,onClick:h[2]||(h[2]=L=>S("pause"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.pause`)),1)]),_:1},8,["loading"]),f(O,{color:"error",variant:"soft",disabled:y.value,onClick:h[3]||(h[3]=L=>S("cancel"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):d.value?.indexStatus==="completed"&&!d.value?.needsRebuild?(i(),W(O,{key:1,variant:"soft",loading:y.value,onClick:h[4]||(h[4]=L=>S("rebuild"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.needsRebuild?(i(),W(O,{key:2,color:"primary",loading:y.value,onClick:h[5]||(h[5]=L=>S("rebuild"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="failed"?(i(),W(O,{key:3,color:"primary",loading:y.value,onClick:h[6]||(h[6]=L=>S("build"))},{default:B(()=>[ie(c(t(s)(`${Ne}.session.retry`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="paused"?(i(),W(O,{key:4,color:"primary",loading:y.value,onClick:h[7]||(h[7]=L=>S("build"))},{default:B(()=>[ie(c(t(s)(`${Ne}.session.continue`)),1)]),_:1},8,["loading"])):(i(),W(O,{key:5,color:"primary",loading:y.value,onClick:h[8]||(h[8]=L=>S("build"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.build`)),1)]),_:1},8,["loading"])),f(O,{variant:"ghost",color:"neutral",disabled:y.value,onClick:h[9]||(h[9]=L=>S("remove"))},{default:B(()=>[ie(c(t(s)(`${Ne}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(i(),m(ue,{key:0},[a("p",sw,c(t(s)(`${Ne}.session.enableHint`)),1),g.value?E("",!0):(i(),m("p",nw,c(t(s)(`${Ne}.session.configFirst`)),1)),a("div",ow,[f(O,{variant:"ghost",onClick:h[0]||(h[0]=L=>o.value=!1)},{default:B(()=>[ie(c(t(s)("common.close")),1)]),_:1}),f(O,{color:"primary",loading:y.value,disabled:!g.value,onClick:h[1]||(h[1]=L=>S("enable"))},{default:B(()=>[ie(c(t(s)(`${Ne}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),rw={class:"min-h-[200px]"},uw={key:0,class:"space-y-4"},dw={class:"text-sm text-gray-600 dark:text-gray-400"},cw={class:"text-sm text-gray-600 dark:text-gray-400"},mw={key:1,class:"flex flex-col items-center justify-center py-10"},gw={class:"text-gray-600 dark:text-gray-400"},pw={class:"mt-2 text-sm text-gray-500"},fw={key:2,class:"space-y-6"},hw={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},vw={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},yw={class:"grid grid-cols-3 gap-4 text-center"},xw={class:"text-2xl font-bold text-gray-900 dark:text-white"},bw={class:"text-xs text-gray-500"},kw={class:"text-2xl font-bold text-green-600 dark:text-green-400"},_w={class:"text-xs text-gray-500"},ww={class:"text-2xl font-bold text-gray-400"},$w={class:"text-xs text-gray-500"},Cw={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Sw={key:3,class:"flex flex-col items-center justify-center py-10"},Iw={class:"text-gray-600 dark:text-gray-400"},Tw={key:0,class:"mt-4 w-full max-w-xs"},Mw={key:4,class:"flex flex-col items-center justify-center py-10"},zw={class:"text-lg font-medium text-gray-900 dark:text-white"},Aw={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},qw={key:5,class:"flex flex-col items-center justify-center py-10"},Lw={class:"text-lg font-medium text-gray-900 dark:text-white"},Dw={class:"mt-2 text-sm text-red-600 dark:text-red-400"},Ew={class:"flex w-full justify-end gap-2"},E2=de({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(r,{emit:l}){const e=r,n=l,{t:s}=_e(),u=z("select"),o=z(null),d=z(null),g=z(null),p=z(null),y=z(null),_=z(null),v=T({get:()=>e.modelValue,set:C=>n("update:modelValue",C)});he(v,C=>{C||x()});function x(){u.value="select",o.value=null,g.value=null,p.value=null,y.value=null,_.value=null}async function b({files:C,paths:O}){if(C.length>0)o.value={source:C[0],name:C[0].name};else{y.value=s("home.import.cannotReadPath");return}await $()}function k(){d.value?.openFileDialog()}async function $(){if(o.value){u.value="analyzing",y.value=null;try{const C=await Na().analyzeIncrementalImport(e.sessionId,o.value.source);if(C.error){u.value="error",y.value=h(C.error);return}g.value={newMessageCount:C.newMessageCount,duplicateCount:C.duplicateCount,totalInFile:C.totalInFile},u.value="preview"}catch(C){u.value="error",y.value=String(C)}}}async function w(){if(o.value){u.value="importing",p.value={stage:"saving",progress:0,message:""};try{const C=await Na().incrementalImport(e.sessionId,o.value.source,O=>{p.value=O});C.success?(_.value={newMessageCount:C.newMessageCount},u.value="done"):(u.value="error",y.value=h(C.error||"error.import_failed"))}catch(C){u.value="error",y.value=String(C)}}}function S(){_.value&&n("imported",_.value.newMessageCount),v.value=!1}function I(){u.value="select",o.value=null,g.value=null,y.value=null}function h(C){if(C.startsWith("error.")){const O=`home.import.errors.${C.slice(6)}`,R=s(O);return R!==O?R:C}return C}return(C,O)=>{const R=go,L=we,A=jn,M=Ue,q=Xe;return i(),W(q,{open:v.value,"onUpdate:open":O[1]||(O[1]=Y=>v.value=Y),title:t(s)("analysis.incremental.title")},{body:B(()=>[a("div",rw,[u.value==="select"?(i(),m("div",uw,[a("p",dw,c(t(s)("analysis.incremental.description",{name:r.sessionName})),1),f(R,{color:"info",variant:"soft",icon:"i-heroicons-information-circle",description:t(s)("analysis.incremental.homeAutoImportHint")},null,8,["description"]),f(t(Hn),{ref_key:"dropZoneRef",ref:d,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:b},{default:B(({isDragOver:Y})=>[a("div",{class:Z(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",Y?"border-pink-500 bg-pink-50/50 dark:border-pink-400 dark:bg-pink-500/10":"border-gray-300 hover:border-pink-400 dark:border-gray-600 dark:hover:border-pink-500"]),onClick:Oe(k,["stop"])},[f(L,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),a("p",cw,c(Y?t(s)("home.import.dropHint"):t(s)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):u.value==="analyzing"?(i(),m("div",mw,[f(L,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",gw,c(t(s)("analysis.incremental.analyzing")),1),a("p",pw,c(o.value?.name),1)])):u.value==="preview"&&g.value?(i(),m("div",fw,[a("div",hw,[a("p",vw,c(o.value?.name),1),a("div",yw,[a("div",null,[a("p",xw,c(g.value.totalInFile.toLocaleString()),1),a("p",bw,c(t(s)("analysis.incremental.totalInFile")),1)]),a("div",null,[a("p",kw,c(g.value.newMessageCount.toLocaleString()),1),a("p",_w,c(t(s)("analysis.incremental.newMessages")),1)]),a("div",null,[a("p",ww,c(g.value.duplicateCount.toLocaleString()),1),a("p",$w,c(t(s)("analysis.incremental.duplicates")),1)])])]),g.value.newMessageCount===0?(i(),m("p",Cw,[f(L,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),ie(" "+c(t(s)("analysis.incremental.noNewMessages")),1)])):E("",!0)])):u.value==="importing"?(i(),m("div",Sw,[f(L,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",Iw,c(t(s)("analysis.incremental.importing")),1),p.value?(i(),m("div",Tw,[f(A,{value:p.value.progress,size:"sm"},null,8,["value"])])):E("",!0)])):u.value==="done"&&_.value?(i(),m("div",Mw,[f(L,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),a("p",zw,c(t(s)("analysis.incremental.success")),1),a("p",Aw,c(t(s)("analysis.incremental.successDetail",{count:_.value.newMessageCount})),1)])):u.value==="error"?(i(),m("div",qw,[f(L,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),a("p",Lw,c(t(s)("analysis.incremental.failed")),1),a("p",Dw,c(y.value),1)])):E("",!0)])]),footer:B(()=>[a("div",Ew,[u.value==="select"?(i(),W(M,{key:0,color:"neutral",variant:"ghost",onClick:O[0]||(O[0]=Y=>v.value=!1)},{default:B(()=>[ie(c(t(s)("common.cancel")),1)]),_:1})):u.value==="preview"?(i(),m(ue,{key:1},[f(M,{color:"neutral",variant:"ghost",onClick:I},{default:B(()=>[ie(c(t(s)("common.back")),1)]),_:1}),f(M,{color:"primary",disabled:!g.value||g.value.newMessageCount===0,onClick:w},{default:B(()=>[ie(c(t(s)("analysis.incremental.import",{count:g.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):u.value==="done"||u.value==="error"?(i(),m(ue,{key:2},[u.value==="error"?(i(),W(M,{key:0,color:"neutral",variant:"ghost",onClick:I},{default:B(()=>[ie(c(t(s)("common.retry")),1)]),_:1})):E("",!0),f(M,{color:"primary",onClick:S},{default:B(()=>[ie(c(t(s)("common.done")),1)]),_:1})],64)):E("",!0)])]),_:1},8,["open","title"])}}}),Bw={key:0,class:"fixed right-0 top-1/3"},Fw={class:"no-capture flex flex-col items-center gap-0.5 rounded-l-lg border border-r-0 border-gray-200/60 bg-white py-1.5 shadow-sm dark:border-white/5 dark:bg-page-dark"},Rw=["onClick"],Vw={class:"mb-2 flex items-center justify-between"},Ow={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Pw={class:"flex flex-col gap-1.5"},jw=["onClick"],Nw={class:"whitespace-nowrap"},B2=de({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(r,{emit:l}){const{t:e}=_e(),n=xt(),{isToolsPanelMini:s,effectiveToolsPanelPosition:u,isToolsPanelOpen:o}=dt(n),d=T(()=>u.value==="header"),g=T(()=>!d.value||o.value),p=z(null),y=l;function _($){y($),d.value&&(o.value=!1)}function v($){if(!d.value||!o.value)return;const w=$.target;w instanceof Element&&(p.value?.contains(w)||w.closest("[data-tools-panel-trigger]")||(o.value=!1))}const x=[{event:"openIncrementalImport",icon:"i-heroicons-plus-circle",hoverColor:"group-hover:text-pink-500",miniHoverBg:"hover:text-pink-500",labelKey:"analysis.tooltip.incrementalImport"},{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMemberManagement",icon:"i-heroicons-user-group",hoverColor:"group-hover:text-purple-500",miniHoverBg:"hover:text-purple-500",labelKey:"analysis.tooltip.memberManagement"},{event:"openChatRecord",icon:"i-heroicons-chat-bubble-bottom-center-text",hoverColor:"group-hover:text-cyan-500",miniHoverBg:"hover:text-cyan-500",labelKey:"analysis.tooltip.viewChatRecord"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],b=[{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],k=T(()=>d.value?b:x);return he(u,()=>{o.value=!1}),Be(()=>{document.addEventListener("mousedown",v)}),Bt(()=>{document.removeEventListener("mousedown",v)}),($,w)=>{const S=we,I=St;return!d.value&&t(s)?(i(),m("div",Bw,[a("div",Fw,[(i(),m(ue,null,ve(x,h=>f(I,{key:h.event,text:t(e)(h.labelKey),popper:{placement:"left"}},{default:B(()=>[a("button",{class:Z(["flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 dark:text-gray-500 dark:hover:bg-white/5",h.miniHoverBg]),onClick:C=>_(h.event)},[f(S,{name:h.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,Rw)]),_:2},1032,["text"])),64)),w[2]||(w[2]=a("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),f(I,{text:t(e)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:B(()=>[a("button",{class:"flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100 hover:text-gray-500 dark:text-gray-600 dark:hover:bg-white/5 dark:hover:text-gray-400",onClick:w[0]||(w[0]=h=>t(n).toggleToolsPanelMini())},[f(S,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(i(),m("div",{key:1,class:Z(["fixed right-0 z-40",d.value?"top-14":"top-1/3"])},[a("div",{class:Z(["absolute right-0 top-0 transition-all duration-250 ease-in-out",g.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[a("div",{ref_key:"panelRef",ref:p,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-overlay dark:border-white/5 dark:bg-page-dark"},[a("div",Vw,[a("span",Ow,c(t(e)("analysis.overview.tools")),1),d.value?E("",!0):(i(),W(I,{key:0,text:t(e)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:B(()=>[a("button",{class:"flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-colors hover:text-gray-500 dark:text-gray-600 dark:hover:text-gray-400",onClick:w[1]||(w[1]=h=>t(n).toggleToolsPanelMini())},[f(S,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),a("div",Pw,[(i(!0),m(ue,null,ve(k.value,h=>(i(),m("button",{key:h.event,class:"group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",onClick:C=>_(h.event)},[f(S,{name:h.icon,class:Z(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",h.hoverColor])},null,8,["name","class"]),a("span",Nw,c(t(e)(h.labelKey)),1)],8,jw))),128))])],512)],2)],2))}}});export{C2 as C,$2 as D,k2 as I,_2 as L,q2 as M,sa as _,b2 as a,Ze as b,z2 as c,ya as d,A2 as e,Nv as f,S2 as g,I2 as h,T2 as i,x2 as j,L2 as k,B2 as l,D2 as m,E2 as n,w2 as o,M2 as u};