chatlab-cli 0.29.0 → 0.30.1-beta.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 (104) hide show
  1. package/dist/{chat-command-JKG3FY5B.mjs → chat-command-VBDMWOKL.mjs} +8 -8
  2. package/dist/{chunk-6FPEP2ZX.mjs → chunk-326OCJOT.mjs} +2 -2
  3. package/dist/{chunk-QQK7MLCR.mjs → chunk-36JGKW6K.mjs} +710 -282
  4. package/dist/chunk-36JGKW6K.mjs.map +1 -0
  5. package/dist/{chunk-SKUG5XVD.mjs → chunk-5EE2EFPE.mjs} +5 -4
  6. package/dist/{chunk-KL2NGIMQ.mjs → chunk-D3DPCDII.mjs} +444 -274
  7. package/dist/chunk-D3DPCDII.mjs.map +1 -0
  8. package/dist/{chunk-I35WHWA6.mjs → chunk-KBSAVUFV.mjs} +7 -4
  9. package/dist/chunk-KBSAVUFV.mjs.map +1 -0
  10. package/dist/{chunk-WPI6YSAR.mjs → chunk-LVEJHB3X.mjs} +4570 -4412
  11. package/dist/chunk-LVEJHB3X.mjs.map +1 -0
  12. package/dist/chunk-M2PXDX4G.mjs +2325 -0
  13. package/dist/chunk-M2PXDX4G.mjs.map +1 -0
  14. package/dist/{chunk-CIB23U32.mjs → chunk-TCZHG3G7.mjs} +101 -41
  15. package/dist/chunk-TCZHG3G7.mjs.map +1 -0
  16. package/dist/{chunk-D4WTE7LV.mjs → chunk-TEX44HNL.mjs} +16 -12
  17. package/dist/chunk-TEX44HNL.mjs.map +1 -0
  18. package/dist/{chunk-7RW4CQAO.mjs → chunk-ULNRUS55.mjs} +5 -3
  19. package/dist/chunk-ULNRUS55.mjs.map +1 -0
  20. package/dist/{chunk-2MZ6G4AC.mjs → chunk-WV5GSRQM.mjs} +2 -2
  21. package/dist/cli.mjs +7 -7
  22. package/dist/contacts-worker.mjs +2 -2
  23. package/dist/{http-5E7ARYFW.mjs → http-L4AMELPZ.mjs} +11 -11
  24. package/dist/{import-3KG6VK6O.mjs → import-WWCSXGVS.mjs} +7 -7
  25. package/dist/index.mjs +11 -11
  26. package/dist/{mcp-JBI4CUQT.mjs → mcp-A4M3LT5O.mjs} +8 -8
  27. package/dist/people-relationships-worker.mjs +2 -2
  28. package/dist/semantic-index-worker.mjs +1 -1
  29. package/dist/{src-UTBQAOJ3.mjs → src-MPNBTFOE.mjs} +14 -6
  30. package/dist/{stream-import-7HZ4IRYJ.mjs → stream-import-HIE7PNL4.mjs} +7 -7
  31. package/dist/{worker-runtime-ALS4MR2A.mjs → worker-runtime-BJXO24XX.mjs} +5 -5
  32. package/dist-web/assets/{BufferResource-MsqP5sq3.js → BufferResource-DPkMC1wo.js} +1 -1
  33. package/dist-web/assets/CanvasRenderer-DokMtSX9.js +1 -0
  34. package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-Ceg-0WOD.js +110 -0
  35. package/dist-web/assets/{Filter-wRJtdXx9.js → Filter-Bo_p3BVX.js} +1 -1
  36. package/dist-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-D_dJuLWJ.js +1 -0
  37. package/dist-web/assets/{MessageExportModal-BCrMf5Kw.js → MessageExportModal-Ch0tqQix.js} +1 -1
  38. package/dist-web/assets/{PageHeader-C_yw54le.js → PageHeader-CRlmZoKw.js} +1 -1
  39. package/dist-web/assets/{RelationshipGalaxyCanvas-DTzJq7q7.js → RelationshipGalaxyCanvas-W_6XfPOG.js} +3 -3
  40. package/dist-web/assets/{RelationshipGalaxyThreeCanvas-DIE-0_iM.js → RelationshipGalaxyThreeCanvas-bB1nCwQ_.js} +1 -1
  41. package/dist-web/assets/{RenderTargetSystem-BSAQFamI.js → RenderTargetSystem-obRi6fMT.js} +1 -1
  42. package/dist-web/assets/{WebGLRenderer-lfzmCZNT.js → WebGLRenderer-xcDlnrCZ.js} +1 -1
  43. package/dist-web/assets/{WebGPURenderer-BnEdfdr_.js → WebGPURenderer-DbAOiiYr.js} +1 -1
  44. package/dist-web/assets/{browserAll-gRNfDyPu.js → browserAll-DVRJimO8.js} +1 -1
  45. package/dist-web/assets/electron-BSGRuxX9.js +1 -0
  46. package/dist-web/assets/{fetch-BW3aO7PS.js → fetch-7UN4YW3A.js} +1 -1
  47. package/dist-web/assets/{fetch-CQt-gb-f.js → fetch-B2alAySK.js} +1 -1
  48. package/dist-web/assets/fetch-B2rVTMYY.js +17 -0
  49. package/dist-web/assets/{fetch-C1fI_KOX.js → fetch-BSShKcMt.js} +1 -1
  50. package/dist-web/assets/{fetch-mFlEBZyB.js → fetch-BmxMf3I6.js} +1 -1
  51. package/dist-web/assets/{fetch-BwF5hNuF.js → fetch-CR5UDFW7.js} +1 -1
  52. package/dist-web/assets/{fetch-CFRoSIAn.js → fetch-ChAsglT5.js} +1 -1
  53. package/dist-web/assets/{fetch-CN91TIwV.js → fetch-DWEjTdcP.js} +1 -1
  54. package/dist-web/assets/{fetch-DPCJ-1l-.js → fetch-DfoxedXR.js} +1 -1
  55. package/dist-web/assets/{fetch-gMB4wuBd.js → fetch-t0WsRKHW.js} +1 -1
  56. package/dist-web/assets/index-B4l3rHie.css +1 -0
  57. package/dist-web/assets/{index-ZdCB7xcf.js → index-BVUTV9_w.js} +4 -4
  58. package/dist-web/assets/index-BmXNdMV5.js +2 -0
  59. package/dist-web/assets/index-BsXljrlg.js +22 -0
  60. package/dist-web/assets/{index-MBRD3wPd.css → index-C1p9CbmN.css} +1 -1
  61. package/dist-web/assets/index-COpza1A4.css +1 -0
  62. package/dist-web/assets/index-CQ5lRCHt.js +173 -0
  63. package/dist-web/assets/index-CZv0ZOID.js +2 -0
  64. package/dist-web/assets/{index-DveHdPfK.js → index-CfgDqd_z.js} +1 -1
  65. package/dist-web/assets/{index-Bg4GGPXv.js → index-CtVR_KuP.js} +1 -1
  66. package/dist-web/assets/index-DT0Bu8mH.js +64 -0
  67. package/dist-web/assets/index-DjcWJv4b.js +1 -0
  68. package/dist-web/assets/{vendor-nuxt-ui-Dr2T8_OZ.js → vendor-nuxt-ui-DaLxYaC4.js} +1 -1
  69. package/dist-web/assets/{web-BakeV58u.js → web-knHSvvNj.js} +1 -1
  70. package/dist-web/assets/{webworkerAll-D_6PgURS.js → webworkerAll-CMKoykfD.js} +1 -1
  71. package/dist-web/index.html +3 -3
  72. package/package.json +1 -1
  73. package/dist/chunk-7RW4CQAO.mjs.map +0 -1
  74. package/dist/chunk-ARZM6HBX.mjs +0 -542
  75. package/dist/chunk-ARZM6HBX.mjs.map +0 -1
  76. package/dist/chunk-CIB23U32.mjs.map +0 -1
  77. package/dist/chunk-D4WTE7LV.mjs.map +0 -1
  78. package/dist/chunk-I35WHWA6.mjs.map +0 -1
  79. package/dist/chunk-KL2NGIMQ.mjs.map +0 -1
  80. package/dist/chunk-QQK7MLCR.mjs.map +0 -1
  81. package/dist/chunk-WPI6YSAR.mjs.map +0 -1
  82. package/dist-web/assets/CanvasRenderer-BKCvcc2p.js +0 -1
  83. package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-HGJb0Et1.js +0 -110
  84. package/dist-web/assets/electron-BHaEaaZP.js +0 -1
  85. package/dist-web/assets/fetch-CBZbgZqk.js +0 -17
  86. package/dist-web/assets/index--6C0sK6a.css +0 -1
  87. package/dist-web/assets/index-B6wEGata.js +0 -173
  88. package/dist-web/assets/index-BgVbj5qX.js +0 -12
  89. package/dist-web/assets/index-BkoXaBV_.js +0 -64
  90. package/dist-web/assets/index-C56IuV5U.css +0 -1
  91. package/dist-web/assets/index-CLRaKwpT.js +0 -2
  92. package/dist-web/assets/index-Dj1BSD7O.js +0 -1
  93. package/dist-web/assets/index-RoDgJcHU.js +0 -2
  94. package/dist-web/assets/index-aljYO5ms.js +0 -1
  95. /package/dist/{chat-command-JKG3FY5B.mjs.map → chat-command-VBDMWOKL.mjs.map} +0 -0
  96. /package/dist/{chunk-6FPEP2ZX.mjs.map → chunk-326OCJOT.mjs.map} +0 -0
  97. /package/dist/{chunk-SKUG5XVD.mjs.map → chunk-5EE2EFPE.mjs.map} +0 -0
  98. /package/dist/{chunk-2MZ6G4AC.mjs.map → chunk-WV5GSRQM.mjs.map} +0 -0
  99. /package/dist/{http-5E7ARYFW.mjs.map → http-L4AMELPZ.mjs.map} +0 -0
  100. /package/dist/{import-3KG6VK6O.mjs.map → import-WWCSXGVS.mjs.map} +0 -0
  101. /package/dist/{mcp-JBI4CUQT.mjs.map → mcp-A4M3LT5O.mjs.map} +0 -0
  102. /package/dist/{src-UTBQAOJ3.mjs.map → src-MPNBTFOE.mjs.map} +0 -0
  103. /package/dist/{stream-import-7HZ4IRYJ.mjs.map → stream-import-HIE7PNL4.mjs.map} +0 -0
  104. /package/dist/{worker-runtime-ALS4MR2A.mjs.map → worker-runtime-BJXO24XX.mjs.map} +0 -0
@@ -0,0 +1,110 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BsXljrlg.js","assets/vendor-reka-ui-CzM4kDQ7.js","assets/vendor-nuxt-ui-DaLxYaC4.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-B4l3rHie.css","assets/EChartWordcloud-Clg60FMo.js","assets/vendor-echarts-wordcloud-k5ih2Jl4.js","assets/vendor-echarts-hJVnODyU.js","assets/vendor-zrender-5DcYjSZk.js"])))=>i.map(i=>d[i]);
2
+ import{L as za,M as na,N as $e,m as Fe,u as ke,l as Ne,_ as rt,j as Je,o as dt,O as Ea,P as ut,t as at,Q as Ct,R as Ba,y as ra,S as gt,s as St,U as Wt,V as la,r as pt,W as wt,X as ja,T as et,g as Zt,a as Ua,q as ia,Y as De,k as ca,Z as ea,$ as Fa,a0 as Va,x as ta,w as Na,a1 as Oa}from"./index-BsXljrlg.js";import{t as Ke,w as pe,h,b as x,d as ze,p as fe,G as o,P as i,Q as le,a5 as e,U as z,L as p,O as Qe,H as K,K as U,T as n,a0 as Ge,R as se,Z as oe,u as a,a3 as ue,bw as Oe,bx as st,a9 as Ue,bz as Xe,J as zt,W as Et,n as Ve,F as lt,bF as Ha,bC as ot,by as nt,z as Tt,bA as da,k as Wa}from"./vendor-reka-ui-CzM4kDQ7.js";import{_ as Mt}from"./vendor-snapdom-XnBoh1gd.js";import{_ as _e,c as Re,n as ua,f as He,i as vt,d as yt,q as Ya,b as ma,j as It,r as ga,p as Yt,o as Ka,s as Kt,e as Qa,m as Ga,h as Ja}from"./vendor-nuxt-ui-DaLxYaC4.js";import{_ as mt}from"./LoadingState.vue_vue_type_script_setup_true_lang-D_dJuLWJ.js";import{a as ct,M as Qt,_ as Xa}from"./index-BVUTV9_w.js";import"./vendor-echarts-wordcloud-k5ih2Jl4.js";import{u as ht,i as ft,q as pa,n as va,w as Za,t as Gt,x as es,j as Dt,p as ts,o as ya,v as Jt,y as as,k as xt,z as ha,A as ss}from"./vendor-echarts-hJVnODyU.js";import{P as os}from"./PageHeader-CRlmZoKw.js";const ns={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"]},aa=/^(?!.*-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 rs(l,s){const t=s.toLowerCase(),c=l.toLowerCase();if(t.includes("-non-reasoning")||c==="anthropic")return"none";if(c==="gemini")return/gemini-(?:2\.5|3(?:\.\d+)?-(?:flash|pro)|flash-latest|pro-latest)/i.test(t)?"gemini":"none";if(c==="qwen"||/\bqwen|qwq/i.test(t))return"qwen";if(/deepseek[_-]v([4-9]|\d{2,})/i.test(t)||/deepseek-ai\/deepseek-r1/i.test(t))return"deepseek_v4";if(/deepseek[_-]chat|deepseek[_-]v3/i.test(t))return"deepseek_hybrid";if(c==="openai"||c==="openai-compatible"){if(/gpt-5\.[2-9]|gpt-5\.[1-9]\d/.test(t))return"gpt5_2plus";if(/gpt-5\.1/.test(t))return"gpt5_1";if(/gpt-5/.test(t))return"gpt5";if(/^o\d/.test(t))return"o_series"}return/^o\d/.test(t)?"o_series":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)||c==="kimi"&&/thinking/i.test(t)?"kimi":/\bdoubao-.*seed/i.test(t)||c==="doubao"&&/seed/i.test(t)?"doubao":/\bhunyuan-(?:t1|a13b)/i.test(t)?"hunyuan":c==="glm"||/\bglm-?(?:5|4\.[5-7]|z1|zero)/i.test(t)?"qwen":c==="siliconflow"&&/r[1-9]/i.test(t)?"deepseek_v4":c==="openrouter"?/deepseek.*(v[4-9]|r\d)/i.test(t)?"deepseek_v4":/deepseek[_-]?(chat|v3)/i.test(t)?"deepseek_hybrid":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)?"kimi":aa.test(t)?"default":"none":/\bmimo-v2/i.test(t)||/\bminimax-m[123]/i.test(t)||/\bseed-oss/i.test(t)?"deepseek_hybrid":/\bbaichuan-m[23]/i.test(t)||/\bmagistral/i.test(t)||/\bmistral-small-2603/i.test(t)||/\bstep-(?:3|r1-v-mini)/i.test(t)||/\bgemma-?4/i.test(t)||/\bpangu-pro-moe/i.test(t)||/\bsonar-deep-research/i.test(t)||/\bring-(?:1t|mini|flash)/i.test(t)?"default":/\bqwen|qwq/i.test(t)?"qwen":/deepseek[_-]?r\d|deepseek[_-]?v[4-9]/i.test(t)?"deepseek_v4":/^o\d/i.test(t)?"o_series":aa.test(t)?"default":"none"}function ls(l,s){const t=rs(l,s);return ns[t]}function is(l,s,t,c="group",r="zh-CN"){const m=za(),{chatKey:u,state:d}=m.ensureSessionState({sessionId:l,sessionName:s,timeFilter:t,chatType:c,locale:r});return m.resetToSelectorOnEnter(u),m.applySessionAssistantSelection(u),{messages:Ke(d,"messages"),sourceMessages:Ke(d,"sourceMessages"),currentKeywords:Ke(d,"currentKeywords"),isLoadingSource:Ke(d,"isLoadingSource"),isAIThinking:Ke(d,"isAIThinking"),currentAIChatId:Ke(d,"currentAIChatId"),currentToolStatus:Ke(d,"currentToolStatus"),toolsUsedInCurrentRound:Ke(d,"toolsUsedInCurrentRound"),sessionTokenUsage:Ke(d,"sessionTokenUsage"),agentStatus:Ke(d,"agentStatus"),selectedAssistantId:Ke(d,"selectedAssistantId"),sendMessage:(g,v)=>m.sendMessage(u,g,v),editMessageAndRegenerate:(g,v,y)=>m.editMessageAndRegenerate(u,g,v,y),loadAIChat:g=>m.loadAIChat(u,g),startNewAIChat:g=>m.startNewAIChat(u,g),loadMoreSourceMessages:()=>m.loadMoreSourceMessages(),updateMaxMessages:()=>m.updateMaxMessages(),stopGeneration:()=>m.stopGeneration(u),selectAssistantForSession:g=>m.selectAssistantForSession(u,g)}}const At=new Map;function cs(l,s,t){const{activeTab:c,isInitialLoad:r,currentSessionId:m,onTimeRangeChange:u}=t,d=x(null),g=x(null),v=x([]),y=h(()=>{const M=d.value;if(M)return{startTs:M.startTs,endTs:M.endTs}}),C=h(()=>{const M=d.value;return M?`${M.startTs}-${M.endTs}`:"init"}),f=h(()=>{const M=l.query,R=M.timeMode;return R?{mode:R,recentDays:M.timeDays?Number(M.timeDays):void 0,year:M.timeYear?Number(M.timeYear):void 0,quarterYear:M.timeYear?Number(M.timeYear):void 0,quarter:M.timeQuarter?Number(M.timeQuarter):void 0,customStart:M.timeStart||void 0,customEnd:M.timeEnd||void 0}:m.value&&At.has(m.value)?At.get(m.value):{mode:"recent",recentDays:365}});pe([c,d],([M,R])=>{if(r.value||!R)return;const w=R.state,S={tab:M,timeMode:w.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};w.mode==="recent"&&(S.timeDays=w.recentDays),w.mode==="year"&&(S.timeYear=w.year),w.mode==="quarter"&&(S.timeYear=w.quarterYear,S.timeQuarter=w.quarter),w.mode==="custom"&&(S.timeStart=w.customStart,S.timeEnd=w.customEnd),s.replace({query:{...l.query,...S}})}),pe(d,M=>{!M||!m.value||(na(),At.set(m.value,M.state),u?.())},{immediate:!0});function b(){d.value=null,g.value=null,v.value=[]}return{timeRangeValue:d,fullTimeRange:g,availableYears:v,timeFilter:y,timeFilterKey:C,initialTimeState:f,resetTimeRange:b}}function sa(l){const s=new Date(l*1e3),t=s.getFullYear(),c=String(s.getMonth()+1).padStart(2,"0"),r=String(s.getDate()).padStart(2,"0");return`${t}-${c}-${r}`}function $k(l){return $e.unix(l).format("YYYY-MM-DD HH:mm:ss")}function Ck(l,s){const t=sa(l);if(s===null)return`${t} ~ 至今`;const c=sa(s);return t===c?t:`${t} ~ ${c}`}function Bt(l,s,t="YYYY/MM/DD",c=" - "){const r=$e.unix(l).format(t),m=$e.unix(s).format(t);return r===m?r:`${r}${c}${m}`}function ds(l){return l===0?"bg-linear-to-r from-amber-400 to-orange-500 text-white":l===1?"bg-linear-to-r from-gray-300 to-gray-400 text-white":l===2?"bg-linear-to-r from-amber-600 to-amber-700 text-white":"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"}function Sk(l){const s=["from-amber-400 to-orange-500","from-gray-300 to-gray-400","from-amber-600 to-amber-700","from-pink-400 to-pink-600","from-pink-300 to-rose-500","from-cyan-400 to-blue-500","from-green-400 to-emerald-500","from-rose-400 to-pink-500"];return s[l%s.length]}function us(l){return l.content.trim()?l.content:l.contentBlocks?.filter(t=>t.type==="text"&&!!t.text).map(t=>t.text).join("")??""}function jt(l){return l.flatMap(s=>{if(s.role!=="user"&&s.role!=="assistant")return[];const t=us(s);return t.trim()?[{role:s.role,content:t,timestamp:s.timestamp}]:[]})}function ms(l){return jt(l).length>0}function gs(l,s,t,c){const r=[];r.push(`# ${l}`),r.push(""),r.push(`> ${c.createdAt}: ${$e(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("---"),r.push("");for(const m of s){const u=$e(m.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=m.role==="user"?c.user:c.assistant;r.push(`### ${d}`),r.push(`*${u}*`),r.push(""),r.push(m.content),r.push(""),r.push("---"),r.push("")}return r.join(`
3
+ `)}function ps(l,s,t,c){const r=[];r.push(`${l}`),r.push(`${c.createdAt}: ${$e(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("=".repeat(50)),r.push("");for(const m of s){const u=$e(m.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=m.role==="user"?c.user:c.assistant;r.push(`[${d}] ${u}`),r.push(""),r.push(m.content),r.push(""),r.push("-".repeat(50)),r.push("")}return r.join(`
4
+ `)}function vs(l){return l.replace(/[/\\?%*:|"<>]/g,"_")}async function ys(l,s,t,c,r){if(s.length===0)return{success:!1,error:"No messages to export"};let m,u;const d=$e(t).format("YYYYMMDD_HHmmss"),g=vs(l);c==="markdown"?(m=gs(l,s,t,r),u=`${g}_${d}.md`):(m=ps(l,s,t,r),u=`${g}_${d}.txt`);const v=`data:text/plain;charset=utf-8,${encodeURIComponent(m)}`,{useCacheService:y}=await Mt(async()=>{const{useCacheService:f}=await import("./index-BsXljrlg.js").then(b=>b.a3);return{useCacheService:f}},__vite__mapDeps([0,1,2,3,4]));return await y().saveToDownloads(u,v)}function hs(l){const s=l.columns.join(","),t=l.rows.map(c=>c.map(r=>r===null?"":`"${String(r).replace(/"/g,'""')}"`).join(","));return[s,...t].join(`
5
+ `)}function fs(l){const s=l.rows.map(t=>{const c={};return l.columns.forEach((r,m)=>{c[r]=t[m]}),c});return JSON.stringify(s,null,2)}async function xs(l,s){if(l.rows.length===0)return{success:!1,error:"No data to export"};const c=`sql_result_${$e().format("YYYYMMDD_HHmmss")}.${s}`;let r,m;s==="json"?(r=fs(l),m="application/json"):(r=hs(l),m="text/csv");const u=`data:${m};charset=utf-8,${encodeURIComponent(r)}`,{useCacheService:d}=await Mt(async()=>{const{useCacheService:v}=await import("./index-BsXljrlg.js").then(y=>y.a3);return{useCacheService:v}},__vite__mapDeps([0,1,2,3,4]));return await d().saveToDownloads(c,u)}function Tk(l){const{route:s,router:t,currentSessionId:c,selectSession:r,defaultTab:m,validTabIds:u}=l,d=x(!0),g=x(!0),v=x(null),y=x([]),C=x([]),f=x([]),b=x([]);function M(){const A=s.query.tab;return A&&u.includes(A)?A:m}const R=x(M()),{timeRangeValue:w,fullTimeRange:S,availableYears:T,timeFilter:D,initialTimeState:k}=cs(s,t,{activeTab:R,isInitialLoad:g,currentSessionId:c,onTimeRangeChange:()=>q()});function $(){const A=s.params.id;A&&(r(A),c.value!==A&&t.replace("/"))}async function I(){if(c.value)try{const A=await Fe().getSession(c.value);v.value=A}catch(A){console.error("加载基础数据失败:",A)}}async function q(){if(c.value){d.value=!0;try{const A=D.value,_=Fe(),[L,Y,ae,W]=await Promise.all([_.getMemberActivity(c.value,A),_.getHourlyActivity(c.value,A),_.getDailyActivity(c.value,A),_.getMessageTypeDistribution(c.value,A)]);y.value=L,C.value=Y,f.value=ae,b.value=W}catch(A){console.error("加载分析数据失败:",A)}finally{d.value=!1}}}async function E(){c.value&&(g.value=!0,await I(),g.value=!1)}return pe(()=>s.params.id,()=>{R.value=M(),$()}),pe(()=>s.query.tab,()=>{R.value=M()}),pe(c,()=>{na(),E()},{immediate:!0}),ze(()=>{$()}),{activeTab:R,isLoading:d,isInitialLoad:g,session:v,memberActivity:y,hourlyActivity:C,dailyActivity:f,messageTypes:b,timeRangeValue:w,fullTimeRange:S,availableYears:T,timeFilter:D,initialTimeState:k,syncSession:$,loadData:E,loadAnalysisData:q}}const bs=["data-theme-card"],ks={key:0,class:"pointer-events-none absolute inset-0 overflow-hidden"},_s={key:1,class:"absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:opacity-100"},it=fe({__name:"ThemeCard",props:{variant:{default:"section"},decorative:{type:Boolean,default:!1},capturable:{type:Boolean,default:!0}},setup(l){const s=l,t={section:"rounded-xl border border-gray-200 bg-card-bg shadow-sm dark:border-white/5 dark:bg-card-dark",card:"rounded-[20px] border border-gray-200/60 bg-card-bg shadow-sm transition-all hover:shadow-md dark:border-white/5 dark:bg-card-dark",elevated:"rounded-[24px] bg-card-bg shadow-xl ring-1 ring-gray-900/5 dark:bg-card-dark dark:ring-white/10"},c=h(()=>{const m=`relative isolate overflow-hidden ${t[s.variant]}`;return s.capturable?`group/card ${m}`:m}),r=h(()=>s.decorative&&s.variant==="elevated");return(m,u)=>(o(),i("div",{class:le(c.value),"data-theme-card":l.capturable?"":void 0},[r.value?(o(),i("div",ks,[...u[0]||(u[0]=[e("div",{class:"absolute -left-[20%] -top-[20%] h-[70%] w-[70%] rounded-full bg-blue-400/10 blur-[80px] dark:bg-blue-500/20"},null,-1),e("div",{class:"absolute -right-[20%] top-[10%] h-[70%] w-[70%] rounded-full bg-pink-400/10 blur-[80px] dark:bg-pink-500/20"},null,-1)])])):z("",!0),l.capturable?(o(),i("div",_s,[p(ct,{type:"element","target-selector":"[data-theme-card]",size:"xs"})])):z("",!0),Qe(m.$slots,"default")],10,bs))}}),ws={class:"flex items-center justify-between"},$s={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},Cs={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Ye=fe({__name:"SectionCard",props:{title:{},description:{},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(l){const s=l,t=h(()=>{if(s.scrollable)return{maxHeight:`${s.maxHeightVh}vh`,overflowY:"auto"}});return(c,r)=>(o(),K(it,{variant:"section"},{default:U(()=>[e("div",{class:le(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":l.showDivider&&c.$slots.default}])},[e("div",ws,[e("div",null,[e("p",$s,n(l.title),1),l.description?(o(),i("p",Cs,n(l.description),1)):z("",!0)]),Qe(c.$slots,"headerRight")])],2),l.scrollable?(o(),i("div",{key:0,style:Ge(t.value)},[Qe(c.$slots,"default")],4)):Qe(c.$slots,"default",{key:1}),Qe(c.$slots,"footer")]),_:3}))}}),Ss={class:"flex items-start justify-between"},Ts={class:"min-w-0 flex-1"},Ms={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Is={key:1,class:"text-xl"},Ds={key:0,class:"mt-4 flex items-center text-sm"},Ls={class:"text-gray-500 dark:text-gray-400"},Ze=fe({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(l){const s={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"},t={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(c,r)=>{const m=_e;return o(),K(it,{variant:"card",class:"p-5"},{default:U(()=>[e("div",Ss,[e("div",Ts,[e("p",Ms,n(l.label),1),e("p",{class:le(["mt-2 truncate text-2xl font-bold tracking-tight",l.valueColor?s[l.valueColor]:"text-gray-900 dark:text-white"])},n(l.value),3)]),l.icon?(o(),i("div",{key:0,class:le(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[l.iconBg||"gray"]])},[l.icon.startsWith("i-")?(o(),K(m,{key:0,name:l.icon,class:"h-5 w-5"},null,8,["name"])):(o(),i("span",Is,n(l.icon),1))],2)):z("",!0)]),l.subtext||c.$slots.subtext?(o(),i("div",Ds,[Qe(c.$slots,"subtext",{},()=>[e("span",Ls,n(l.subtext),1)])])):z("",!0)]),_:3})}}}),As={key:0,class:"mb-2 block text-2xl"},Mk=fe({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(l){const s={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,c)=>(o(),i("div",{class:le(["text-center text-sm text-gray-400",s[l.padding||"md"]])},[l.icon?(o(),i("span",As,n(l.icon),1)):z("",!0),se(" "+n(l.text||"暂无数据"),1)],2))}}),qs=["disabled"],Rs={key:0,class:"flex-1 overflow-y-auto p-2"},Ps={key:0,class:"flex items-center justify-center py-8"},zs={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},Es={class:"flex h-12 w-12 items-center justify-center rounded-full bg-gray-50 dark:bg-gray-800"},Bs={class:"mt-3 text-xs text-gray-400"},js={key:2,class:"space-y-3"},Us={class:"px-2 pb-1 pt-1.5 text-[10px] font-medium tracking-wide text-gray-400 dark:text-gray-500"},Fs={class:"space-y-0.5"},Vs=["onClick"],Ns=["placeholder","onBlur","onKeyup"],Os={key:1,class:"flex items-center"},Hs={class:"line-clamp-1 min-w-0 flex-1 text-sm leading-snug"},Ws={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"},Ys={class:"w-28 p-1"},Ks=["disabled","onClick"],Qs=["onClick"],Gs=["disabled","onClick"],Js={key:1,class:"flex flex-1 flex-col items-center gap-2 overflow-y-auto py-2"},Xs=["title","disabled"],Zs=["title","onClick"],eo=fe({__name:"ConversationList",props:{sessionId:{},activeId:{},disabled:{type:Boolean}},emits:["select","create","delete"],setup(l,{expose:s,emit:t}){const{t:c}=ke(),r=l,m=t,u=x([]),d=x(!1),g=x(null),v=x(""),y=x(!1),C=x(null);async function f(){d.value=!0;try{u.value=await Ne().getAIChats(r.sessionId)}catch($){console.error("加载对话列表失败:",$)}finally{d.value=!1}}const b=h(()=>{if(u.value.length===0)return[];const $=$e(),I=$.subtract(7,"day").startOf("day"),q=$.subtract(30,"day").startOf("day"),E=[],A=[],_=new Map;for(const ae of u.value){const W=$e(ae.updatedAt*1e3);if(W.isAfter(I))E.push(ae);else if(W.isAfter(q))A.push(ae);else{const ve=W.format("YYYY-MM");_.has(ve)||_.set(ve,[]),_.get(ve).push(ae)}}const L=[];E.length>0&&L.push({label:c("ai.chat.conversation.group.last7Days"),conversations:E}),A.length>0&&L.push({label:c("ai.chat.conversation.group.last30Days"),conversations:A});const Y=[..._.keys()].sort((ae,W)=>W.localeCompare(ae));for(const ae of Y){const W=$e(ae+"-01");L.push({label:W.format(W.year()===$.year()?"M月":"YYYY年M月"),conversations:_.get(ae)})}return L});function M($){return $.title||c("ai.chat.conversation.newChat")}function R($){r.disabled||(g.value=$.id,v.value=$.title||"")}async function w($){if(!r.disabled){if(v.value.trim())try{await Ne().updateAIChatTitle($,v.value.trim());const I=u.value.find(q=>q.id===$);I&&(I.title=v.value.trim())}catch(I){console.error("更新标题失败:",I)}g.value=null}}function S($){C.value=null,R($)}function T($){C.value=null,navigator.clipboard.writeText($)}function D($){C.value=null,k($)}async function k($){if(!r.disabled)try{await Ne().deleteAIChat($),u.value=u.value.filter(I=>I.id!==$),m("delete",$)}catch(I){console.error("删除对话失败:",I)}}return ze(()=>{f()}),pe(()=>r.sessionId,()=>{f()}),s({refresh:f}),($,I)=>{const q=_e,E=Re,A=ua;return o(),i("div",{class:le(["flex flex-col border-r border-gray-200 bg-white transition-all dark:border-gray-800 dark:bg-page-dark",y.value?"w-10":"w-64"])},[e("div",{class:le(["flex items-center border-b border-gray-200 dark:border-gray-800",y.value?"justify-center px-0 py-2":"justify-between pl-3 pr-2 py-2"])},[y.value?(o(),i("button",{key:1,class:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:I[2]||(I[2]=_=>y.value=!y.value)},[p(q,{name:"i-heroicons-chevron-right",class:"h-4 w-4"})])):(o(),i(oe,{key:0},[e("button",{class:le(["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":l.disabled}]),disabled:l.disabled,onClick:I[0]||(I[0]=_=>!l.disabled&&m("create"))},[p(q,{name:"i-heroicons-plus",class:"h-3.5 w-3.5"}),e("span",null,n(a(c)("ai.chat.conversation.newConversation")),1)],10,qs),e("button",{class:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:I[1]||(I[1]=_=>y.value=!y.value)},[p(q,{name:"i-heroicons-chevron-left",class:"h-4 w-4"})])],64))],2),y.value?(o(),i("div",Js,[e("button",{class:le(["rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-pink-500 dark:hover:bg-gray-800",{"cursor-not-allowed opacity-50":l.disabled}]),title:a(c)("ai.chat.conversation.newConversation"),disabled:l.disabled,onClick:I[7]||(I[7]=_=>!l.disabled&&m("create"))},[p(q,{name:"i-heroicons-plus",class:"h-4 w-4"})],10,Xs),I[8]||(I[8]=e("div",{class:"h-px w-6 bg-gray-200 dark:bg-gray-800"},null,-1)),(o(!0),i(oe,null,ue(u.value,_=>(o(),i("button",{key:_.id,class:le(["rounded p-1 transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",[l.activeId===_.id?"text-pink-500":"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"]]),title:M(_),onClick:L=>m("select",_.id)},[p(q,{name:"i-heroicons-chat-bubble-left",class:"h-4 w-4"})],10,Zs))),128))])):(o(),i("div",Rs,[d.value?(o(),i("div",Ps,[p(q,{name:"i-heroicons-arrow-path",class:"h-5 w-5 animate-spin text-gray-400"})])):u.value.length===0?(o(),i("div",zs,[e("div",Es,[p(q,{name:"i-heroicons-chat-bubble-left",class:"h-6 w-6 text-gray-300 dark:text-gray-600"})]),e("p",Bs,n(a(c)("ai.chat.conversation.empty")),1),p(E,{class:"mt-2",size:"xs",variant:"link",color:"primary",disabled:l.disabled,onClick:I[3]||(I[3]=_=>!l.disabled&&m("create"))},{default:U(()=>[se(n(a(c)("ai.chat.conversation.startNew")),1)]),_:1},8,["disabled"])])):(o(),i("div",js,[(o(!0),i(oe,null,ue(b.value,_=>(o(),i("div",{key:_.label},[e("div",Us,n(_.label),1),e("div",Fs,[(o(!0),i(oe,null,ue(_.conversations,L=>(o(),i("div",{key:L.id,class:le(["group relative rounded-lg px-3 py-2 transition-all",["cursor-pointer",l.activeId===L.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:Y=>m("select",L.id)},[g.value===L.id?Oe((o(),i("input",{key:0,"onUpdate:modelValue":I[4]||(I[4]=Y=>v.value=Y),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:a(c)("ai.chat.conversation.titlePlaceholder"),autoFocus:"",onBlur:Y=>w(L.id),onKeyup:Xe(Y=>w(L.id),["enter"]),onClick:I[5]||(I[5]=Ue(()=>{},["stop"]))},null,40,Ns)),[[st,v.value]]):(o(),i("div",Os,[e("p",Hs,n(M(L)),1),e("div",{class:le(["ml-1 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",{"opacity-100":l.activeId===L.id||C.value===L.id}]),onClick:I[6]||(I[6]=Ue(()=>{},["stop"]))},[p(A,{open:C.value===L.id,ui:{content:"z-50 p-0"},"onUpdate:open":Y=>C.value=Y?L.id:null},{content:U(()=>[e("div",Ys,[e("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:l.disabled,onClick:Y=>S(L)},[p(q,{name:"i-heroicons-pencil",class:"h-3.5 w-3.5"}),se(" "+n(a(c)("ai.chat.conversation.rename")),1)],8,Ks),e("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:Y=>T(L.id)},[p(q,{name:"i-heroicons-clipboard-document",class:"h-3.5 w-3.5"}),se(" "+n(a(c)("ai.chat.conversation.copyId")),1)],8,Qs),e("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:l.disabled,onClick:Y=>D(L.id)},[p(q,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"}),se(" "+n(a(c)("ai.chat.conversation.delete")),1)],8,Gs)])]),default:U(()=>[e("button",Ws,[p(q,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4"})])]),_:2},1032,["open","onUpdate:open"])],2)]))],10,Vs))),128))])]))),128))]))]))],2)}}}),to={class:"writing-vertical text-xs"},ao={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},so={class:"flex items-center gap-2"},oo={class:"font-medium text-gray-900 dark:text-white"},no={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},ro={class:"flex flex-wrap items-center gap-2"},lo={class:"text-xs text-gray-500"},io={class:"flex-1 overflow-y-auto"},co={key:0,class:"flex items-center justify-center py-8"},uo={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},mo={class:"mt-2 text-sm text-gray-500"},go={class:"text-xs text-gray-400"},po={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},vo={class:"mb-1 flex items-center justify-between"},yo={class:"text-sm font-medium text-gray-900 dark:text-white"},ho={class:"text-xs text-gray-400"},fo=["innerHTML"],xo={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},bo={class:"flex items-center justify-between"},ko={class:"text-xs text-gray-500"},_o={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},wo=fe({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle","loadMore"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s;function m(d){return $e(d).format("MM-DD HH:mm")}function u(d){if(!c.keywords.length)return d;const g=c.keywords.join("|"),v=new RegExp(`(${g})`,"gi");return d.replace(v,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(d,g)=>{const v=_e,y=Re;return o(),i("div",{class:le(["relative flex flex-col rounded-xl bg-white shadow-sm transition-all duration-300 dark:bg-page-dark",[l.isCollapsed?"w-12":"w-full"]])},[l.isCollapsed?(o(),i("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]=C=>r("toggle"))},[p(v,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),e("span",to,n(a(t)("ai.chat.dataSource.title")),1)])):(o(),i(oe,{key:1},[e("div",ao,[e("div",so,[p(v,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),e("span",oo,n(a(t)("ai.chat.dataSource.title")),1)]),p(y,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:g[1]||(g[1]=C=>r("toggle"))})]),l.keywords.length>0?(o(),i("div",no,[e("div",ro,[e("span",lo,n(a(t)("ai.chat.dataSource.keywords")),1),(o(!0),i(oe,null,ue(l.keywords,C=>(o(),i("span",{key:C,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"},n(C),1))),128))])])):z("",!0),e("div",io,[l.isLoading?(o(),i("div",co,[p(v,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):l.messages.length===0?(o(),i("div",uo,[p(v,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),e("p",mo,n(a(t)("ai.chat.dataSource.empty")),1),e("p",go,n(a(t)("ai.chat.dataSource.emptyHint")),1)])):(o(),i("div",po,[(o(!0),i(oe,null,ue(l.messages,C=>(o(),i("div",{key:C.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[e("div",vo,[e("span",yo,n(C.senderName),1),e("span",ho,n(m(C.timestamp)),1)]),e("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:u(C.content)},null,8,fo)]))),128))]))]),l.messages.length>0?(o(),i("div",xo,[e("div",bo,[e("span",ko,n(a(t)("ai.chat.dataSource.totalRecords",{count:l.messages.length})),1),p(y,{size:"xs",variant:"ghost",onClick:g[2]||(g[2]=C=>r("loadMore"))},{default:U(()=>[se(n(a(t)("ai.chat.dataSource.loadMore")),1)]),_:1})])])):z("",!0)],64)),l.isCollapsed?z("",!0):(o(),i("div",_o,[...g[3]||(g[3]=[e("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),$o=rt(wo,[["__scopeId","data-v-5097a3ad"]]),Co={class:"flex max-h-[80vh] flex-col overflow-hidden"},So={class:"shrink-0 border-b border-gray-200 px-6 py-4 dark:border-gray-800"},To={class:"flex items-center justify-between"},Mo={class:"flex items-center gap-3"},Io={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-red-100 dark:bg-red-900/40"},Do={class:"text-lg font-semibold text-gray-900 dark:text-white"},Lo={class:"flex-1 overflow-y-auto px-6 py-4"},Ao={class:"flex flex-col gap-4"},qo={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},Ro={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"},Po={class:"m-0 whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-red-600 dark:text-red-400"},zo={key:1,class:"rounded-md border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},Eo={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"},Bo={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"},jo={key:0,class:"py-8 text-center text-sm text-gray-400 dark:text-gray-500"},Uo={class:"shrink-0 border-t border-gray-200 px-6 py-3 dark:border-gray-800"},Fo={class:"flex justify-end"},Vo=fe({__name:"ErrorDetailModal",props:Et({error:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:["update:open"],setup(l){const{t:s}=ke(),t=Je(),c=zt(l,"open"),r=l,m=h(()=>{const g=r.error,v=[];return g.url&&v.push({label:s("ai.chat.error.requestUrl"),value:g.url}),g.statusCode!=null&&v.push({label:s("ai.chat.error.statusCode"),value:String(g.statusCode)}),g.responseBody&&v.push({label:s("ai.chat.error.responseBody"),value:u(g.responseBody),isCode:!0}),g.responseHeaders&&v.push({label:s("ai.chat.error.responseHeaders"),value:JSON.stringify(g.responseHeaders,null,2),isCode:!0}),g.name&&v.push({label:s("ai.chat.error.name"),value:g.name}),g.message&&v.push({label:s("ai.chat.error.message"),value:g.message}),g.stack&&v.push({label:s("ai.chat.error.stack"),value:g.stack,isStack:!0}),g.cause&&v.push({label:s("ai.chat.error.cause"),value:u(g.cause),isCode:!0}),g.provider&&v.push({label:s("ai.chat.error.provider"),value:g.provider}),g.requestBody&&v.push({label:s("ai.chat.error.requestBody"),value:u(g.requestBody),isCode:!0}),v});function u(g){try{return JSON.stringify(JSON.parse(g),null,2)}catch{return g}}function d(){const g=m.value.map(v=>`${v.label}: ${v.value}`).join(`
6
+
7
+ `);navigator.clipboard.writeText(g).then(()=>{t.success(s("ai.chat.error.copied"))})}return(g,v)=>{const y=_e,C=Re,f=He;return o(),K(f,{open:c.value,"onUpdate:open":v[1]||(v[1]=b=>c.value=b),ui:{content:"sm:max-w-[700px] z-[100]",overlay:"backdrop-blur-sm z-[99]"}},{content:U(()=>[e("div",Co,[e("div",So,[e("div",To,[e("div",Mo,[e("div",Io,[p(y,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4 text-red-600 dark:text-red-400"})]),e("h2",Do,n(a(s)("ai.chat.error.detail")),1)]),p(C,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:v[0]||(v[0]=b=>c.value=!1)})])]),e("div",Lo,[e("div",Ao,[(o(!0),i(oe,null,ue(m.value,(b,M)=>(o(),i("div",{key:M,class:"flex flex-col gap-1.5"},[e("div",qo,n(b.label),1),b.isStack?(o(),i("div",Ro,[e("pre",Po,n(b.value),1)])):b.isCode?(o(),i("div",zo,[e("pre",Eo,n(b.value),1)])):(o(),i("div",Bo,n(b.value),1))]))),128)),m.value.length===0?(o(),i("div",jo,n(a(s)("ai.chat.error.unknown")),1)):z("",!0)])]),e("div",Uo,[e("div",Fo,[p(C,{icon:"i-heroicons-document-duplicate",variant:"soft",color:"neutral",size:"sm",onClick:d},{default:U(()=>[se(n(a(s)("ai.chat.error.copyAll")),1)]),_:1})])])])]),_:1},8,["open"])}}}),No={class:"mb-1.5 flex items-center gap-2"},Oo={class:"flex shrink-0 items-center justify-center text-red-500 dark:text-red-400"},Ho={class:"pr-5 text-[13px] font-semibold leading-[1.4] text-red-600 dark:text-red-400"},Wo={class:"ml-6 line-clamp-3 break-words text-xs leading-normal text-gray-600 dark:text-gray-400"},Yo={class:"mt-2.5 ml-6 flex items-center"},Ko={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"},Qo=fe({__name:"ErrorBlock",props:{error:{}},setup(l){const{t:s}=ke(),t=x(!1);function c(r){return r.friendlyMessage||r.message||s("ai.chat.error.unknown")}return(r,m)=>{const u=_e;return o(),i(oe,null,[e("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:m[0]||(m[0]=d=>t.value=!0)},[e("div",No,[e("div",Oo,[p(u,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4"})]),e("div",Ho,n(a(s)("ai.chat.error.title")),1)]),e("div",Wo,n(c(l.error)),1),e("div",Yo,[e("div",Ko,[se(n(a(s)("ai.chat.error.viewDetail"))+" ",1),p(u,{name:"i-heroicons-chevron-right",class:"h-3.5 w-3.5"})])])]),p(Vo,{open:t.value,"onUpdate:open":m[1]||(m[1]=d=>t.value=d),error:l.error},null,8,["open","error"])],64)}}}),bt=fe({__name:"EChart",props:{option:{},height:{default:300},loading:{type:Boolean,default:!1},theme:{default:"auto"}},setup(l,{expose:s}){ht([ft,pa,va,Za,Gt,es,Dt,ts,ya,Jt,as]);const t=l,c=x();let r=null,m=null;const u=h(()=>typeof t.height=="number"?`${t.height}px`:t.height),d=h(()=>t.theme==="auto"?document.documentElement.classList.contains("dark"):t.theme==="dark");function g(){c.value&&(r&&r.dispose(),r=xt(c.value,d.value?"dark":void 0),r.setOption({backgroundColor:"transparent",...t.option}))}function v(){if(!r){g();return}r.setOption({backgroundColor:"transparent",...t.option},{notMerge:!0})}function y(){r?.resize()}pe(()=>t.option,v,{deep:!0}),pe(()=>t.height,()=>{setTimeout(()=>{r?.resize()},0)}),pe(d,()=>{g()}),pe(()=>t.loading,f=>{f?r?.showLoading("default",{text:"",spinnerRadius:12,lineWidth:2}):r?.hideLoading()});let C=null;return ze(()=>{Ve(()=>{g()}),window.addEventListener("resize",y),c.value&&(m=new ResizeObserver(()=>y()),m.observe(c.value)),C=new MutationObserver(()=>{t.theme==="auto"&&g()}),C.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),lt(()=>{window.removeEventListener("resize",y),m?.disconnect(),C?.disconnect(),r?.dispose(),r=null}),s({getInstance:()=>r,resize:y}),(f,b)=>(o(),i("div",{ref_key:"chartRef",ref:c,style:Ge({height:u.value,width:"100%"})},null,4))}}),tt=fe({__name:"EChartBar",props:{data:{},height:{default:200},mode:{default:"expanded"},horizontal:{type:Boolean,default:!1},gradient:{type:Boolean,default:!0},borderRadius:{default:4}},setup(l){const s=l,t={type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},c=h(()=>{const r=s.horizontal,m=s.mode==="compact",u=s.data.labels.length;return{tooltip:{trigger:"axis",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:r?m?72:96:36,right:16,top:20,bottom:r?20:u>8?48:30,outerBoundsMode:"same"},xAxis:r?{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:"#e5e7eb"}}}:{type:"category",data:s.data.labels,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#6b7280",interval:"auto",rotate:!r&&u>8?28:0,hideOverlap:!0}},yAxis:r?{type:"category",data:s.data.labels,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#6b7280",overflow:"truncate",width:m?70:110}}:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:"#e5e7eb"}}},series:[{type:"bar",data:s.data.values,itemStyle:{color:s.gradient?t:"#ee4567",borderRadius:s.borderRadius},barMaxWidth:40,emphasis:{itemStyle:{color:s.gradient?{...t,colorStops:[{offset:0,color:"#de335e"},{offset:1,color:"#ee4567"}]}:"#de335e"}}}]}});return(r,m)=>(o(),K(bt,{option:c.value,height:l.height},null,8,["option","height"]))}}),Ut=fe({__name:"EChartHeatmap",props:{data:{},height:{default:280},mode:{default:"expanded"},minColor:{default:"#fee5e8"},maxColor:{default:"#ee4567"}},setup(l){const s=l,t=h(()=>{let r=0;for(const[,,m]of s.data.data)m>r&&(r=m);return r||1}),c=h(()=>{const r=s.mode==="compact",m=s.data.xLabels.length,u=s.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=s.data.xLabels[d.data[0]],v=s.data.yLabels[d.data[1]],y=d.data[2];return`${v} ${g}<br/>消息数: <strong>${y}</strong>`},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:r?52:72,right:20,top:r?12:24,bottom:r?52:70,outerBoundsMode:"same"},xAxis:{type:"category",data:s.data.xLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:r?10:11,color:"#6b7280",interval:r&&m>16?"auto":0,hideOverlap:!0}},yAxis:{type:"category",data:s.data.yLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:r?10:11,color:"#6b7280",interval:r&&u>14?"auto":0,hideOverlap:!0}},visualMap:{min:0,max:t.value,calculable:!0,orient:"horizontal",left:"center",bottom:0,itemWidth:r?8:10,itemHeight:r?84:120,inRange:{color:[s.minColor,s.maxColor]},textStyle:{color:"#6b7280",fontSize:11}},series:[{type:"heatmap",data:s.data.data,label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]}});return(r,m)=>(o(),K(bt,{option:c.value,height:l.height},null,8,["option","height"]))}}),Ft=fe({__name:"EChartLine",props:{data:{},height:{default:288},mode:{default:"expanded"},showArea:{type:Boolean,default:!0},smooth:{type:Boolean,default:!0}},setup(l){const s=l,t=h(()=>{const c=!!s.data.series?.length,r=s.mode==="compact",m=s.data.series?.length??0,u=s.data.labels.length,d=m>(r?3:8),g=!r&&u>30,v=c?s.data.series.map(y=>({name:y.name,type:"line",data:y.values,smooth:s.smooth,symbol:"circle",symbolSize:4,showSymbol:!r&&u<=80,lineStyle:{width:2},areaStyle:s.showArea?{opacity:.08}:void 0,emphasis:{focus:"series"}})):[{type:"line",data:s.data.values,smooth:s.smooth,symbol:"circle",symbolSize:4,showSymbol:!r&&u<=80,lineStyle:{width:2,color:"#ee4567"},itemStyle:{color:"#ee4567"},areaStyle:s.showArea?{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(238, 69, 103, 0.3)"},{offset:1,color:"rgba(238, 69, 103, 0.05)"}]}}:void 0,emphasis:{focus:"series",itemStyle:{color:"#ee4567",borderColor:"#fff",borderWidth:2}}}];return{tooltip:{trigger:"axis",confine:!0,extraCssText:"max-width: min(420px, 76vw); white-space: normal; word-break: break-word;",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:c?r?44:56:20,bottom:g?66:34,outerBoundsMode:"same"},legend:c?{type:d?"scroll":"plain",top:0,left:8,right:8,height:32,textStyle:{color:"#6b7280",fontSize:11}}:void 0,xAxis:{type:"category",data:s.data.labels,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#6b7280",interval:"auto",hideOverlap:!0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:"#e5e7eb"}}},dataZoom:g?[{type:"inside",throttle:50},{type:"slider",height:18,bottom:18,showDetail:!1}]:void 0,series:v}});return(c,r)=>(o(),K(bt,{option:t.value,height:l.height},null,8,["option","height"]))}}),Vt=fe({__name:"EChartPie",props:{data:{},height:{default:280},mode:{default:"expanded"},doughnut:{type:Boolean,default:!0},innerRadius:{default:"50%"},showLegend:{type:Boolean,default:!0}},setup(l){const s=l,t=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"],c=h(()=>{const r=s.data.labels.map((f,b)=>({name:f,value:s.data.values[b]})),m=s.data.labels.length,u=s.mode==="compact",d=m>(u?8:14),g=m>(u?6:12),v=u?{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=!u&&!d,C=s.showLegend&&!y;return{color:t,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:C?v:void 0,series:[{type:"pie",radius:s.doughnut?[s.innerRadius,u?"58%":"68%"]:u?"58%":"68%",center:C?u?["50%","42%"]:["38%","50%"]:["50%",u?"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:r}]}});return(r,m)=>(o(),K(bt,{option:c.value,height:l.height},null,8,["option","height"]))}}),Go={class:"my-2 w-full overflow-hidden rounded-lg border border-gray-200 bg-white/80 shadow-sm dark:border-gray-700/70 dark:bg-page-dark/70"},Jo={class:"border-b border-gray-100 px-3 py-2 dark:border-gray-800"},Xo={class:"flex min-w-0 items-start justify-between gap-3"},Zo={class:"min-w-0"},en={class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100"},tn={key:0,class:"mt-0.5 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},an={class:"flex shrink-0 items-center gap-1.5"},sn={class:"rounded-md bg-gray-100 px-1.5 py-0.5 text-[10px] uppercase text-gray-500 dark:bg-gray-800"},on={class:"flex max-h-[92vh] flex-col overflow-hidden bg-white dark:bg-page-dark"},nn={class:"flex items-start justify-between gap-4 border-b border-gray-200 px-5 py-4 dark:border-gray-800"},rn={class:"min-w-0"},ln={class:"truncate text-base font-semibold text-gray-900 dark:text-gray-100"},cn={key:0,class:"mt-1 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},dn={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},un={class:"min-h-0 flex-1 overflow-auto p-4"},mn={key:0,class:"flex h-64 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},gn={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},pn={class:"px-2 py-3"},vn={key:0,class:"flex h-32 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},yn=fe({__name:"ChartBlockRenderer",props:{chart:{}},setup(l){const{t:s}=ke(),t=l,c=x(!1),r=h(()=>t.chart.spec.title),m=h(()=>t.chart.spec.subtitle||t.chart.spec.description||""),u=h(()=>t.chart.spec.display?.height??(t.chart.spec.type==="heatmap"?300:260)),d=h(()=>t.chart.rowCount===0),g=h(()=>{const S=[];return t.chart.spec.unit&&S.push(t.chart.spec.unit),t.chart.truncated&&S.push(s("ai.chat.message.chart.truncated")),S.push(s("ai.chat.message.chart.rows",{count:t.chart.rowCount})),S.join(" · ")}),v=h(()=>t.chart.data),y=h(()=>t.chart.data),C=h(()=>t.chart.data),f=h(()=>t.chart.data),b=h(()=>t.chart.spec.type==="pie"?C.value.labels.length>8:t.chart.spec.type==="line"?y.value.labels.length>28||(y.value.series?.length??0)>4:t.chart.spec.type==="bar"?v.value.labels.length>12:t.chart.spec.type==="heatmap"?f.value.xLabels.length*f.value.yLabels.length>180:!1),M=h(()=>{const S=b.value?320:380;return Math.min(u.value,S)}),R=h(()=>{const S=u.value;if(t.chart.spec.type==="pie")return Math.max(S,560);if(t.chart.spec.type==="line")return Math.max(S,y.value.labels.length>40?620:540);if(t.chart.spec.type==="bar"){const T=t.chart.spec.display?.horizontal?v.value.labels.length*28+120:520;return Math.min(Math.max(S,T),820)}return t.chart.spec.type==="heatmap"?Math.min(Math.max(S,f.value.yLabels.length*22+150,560),860):Math.max(S,520)}),w=h(()=>t.chart.spec.type==="pie"?"640px":t.chart.spec.type==="bar"?"720px":"780px");return(S,T)=>{const D=Re,k=He;return o(),i("div",Go,[e("div",Jo,[e("div",Xo,[e("div",Zo,[e("h3",en,n(r.value),1),m.value?(o(),i("p",tn,n(m.value),1)):z("",!0)]),e("div",an,[e("span",sn,n(l.chart.spec.type),1),p(k,{open:c.value,"onUpdate:open":T[2]||(T[2]=$=>c.value=$),ui:{overlay:"z-[10040] backdrop-blur-sm",content:"z-[10050] w-[96vw] max-w-6xl max-h-[92vh] overflow-hidden"}},{content:U(()=>[e("div",on,[e("div",nn,[e("div",rn,[e("h3",ln,n(r.value),1),m.value?(o(),i("p",cn,n(m.value),1)):z("",!0),e("p",dn,n(g.value),1)]),p(D,{icon:"i-heroicons-x-mark",size:"sm",color:"neutral",variant:"ghost",class:"shrink-0",title:a(s)("common.close"),"aria-label":a(s)("common.close"),onClick:T[1]||(T[1]=$=>c.value=!1)},null,8,["title","aria-label"])]),e("div",un,[e("div",{class:"mx-auto w-full",style:Ge({minWidth:w.value})},[d.value?(o(),i("div",mn,n(a(s)("ai.chat.message.chart.empty")),1)):l.chart.spec.type==="bar"?(o(),K(tt,{key:1,data:v.value,height:R.value,mode:"expanded",horizontal:l.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):l.chart.spec.type==="line"?(o(),K(Ft,{key:2,data:y.value,height:R.value,mode:"expanded"},null,8,["data","height"])):l.chart.spec.type==="pie"?(o(),K(Vt,{key:3,data:C.value,height:R.value,mode:"expanded","show-legend":l.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):l.chart.spec.type==="heatmap"?(o(),K(Ut,{key:4,data:f.value,height:R.value,mode:"expanded"},null,8,["data","height"])):z("",!0)],4)])])]),default:U(()=>[p(D,{icon:"i-heroicons-arrows-pointing-out",size:"xs",color:"neutral",variant:"ghost",class:"no-capture",title:a(s)("ai.chat.message.chart.expand"),"aria-label":a(s)("ai.chat.message.chart.expand"),onClick:T[0]||(T[0]=Ue(()=>{},["stop"]))},null,8,["title","aria-label"])]),_:1},8,["open"])])]),e("p",gn,n(g.value),1)]),e("div",pn,[d.value?(o(),i("div",vn,n(a(s)("ai.chat.message.chart.empty")),1)):l.chart.spec.type==="bar"?(o(),K(tt,{key:1,data:v.value,height:M.value,mode:"compact",horizontal:l.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):l.chart.spec.type==="line"?(o(),K(Ft,{key:2,data:y.value,height:M.value,mode:"compact"},null,8,["data","height"])):l.chart.spec.type==="pie"?(o(),K(Vt,{key:3,data:C.value,height:M.value,mode:"compact","show-legend":l.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):l.chart.spec.type==="heatmap"?(o(),K(Ut,{key:4,data:f.value,height:M.value,mode:"compact"},null,8,["data","height"])):z("",!0)])])}}}),hn={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"},fn={class:"text-xs font-semibold text-gray-700 dark:text-gray-200"},xn={key:0,class:"flex min-w-0 items-center gap-2"},bn={key:0,class:"truncate text-[11px] text-gray-400 dark:text-gray-500"},kn={class:"ml-auto flex shrink-0 items-center gap-1.5"},_n={class:"text-[11px] text-gray-400 dark:text-gray-500"},wn={key:0,class:"border-t border-gray-200/70 px-3 py-2 dark:border-gray-700/50"},$n={class:"mb-2 space-y-0.5 text-xs text-gray-600 dark:text-gray-400"},Cn={class:"font-medium"},Sn={key:0},Tn={class:"font-medium"},Mn={key:0,class:"mb-2 space-y-1"},In={key:1,class:"py-1.5 text-center text-xs text-gray-400 dark:text-gray-500"},Dn={key:2,class:"space-y-2"},Ln={class:"flex items-center gap-2"},An={class:"ml-auto shrink-0 text-[11px] text-gray-400 dark:text-gray-500"},qn={key:0,class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Rn={class:"mt-1 space-y-0.5"},Pn=["onClick"],zn={class:"min-w-0 flex-1 text-xs leading-snug text-gray-600 dark:text-gray-300"},En={key:0,class:"mr-1 text-gray-400 dark:text-gray-500"},Bn={class:"line-clamp-2 break-words align-middle"},jn={key:3,class:"mt-1.5 text-right text-[11px] text-gray-400 dark:text-gray-500"},Un=fe({__name:"EvidenceBlock",props:{evidence:{}},setup(l){const s=l,{t}=ke(),c=dt(),r=x(!1),m=["included","uncertain","excluded"],u=h(()=>[...s.evidence.groups].sort((b,M)=>m.indexOf(b.status)-m.indexOf(M.status))),d=h(()=>s.evidence.groups.reduce((b,M)=>b+M.sources.length,0)),g=h(()=>m.map(b=>({status:b,count:s.evidence.groups.filter(M=>M.status===b).length})).filter(b=>b.count>0)),v=h(()=>s.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"},C={included:"bg-emerald-500",uncertain:"bg-amber-500",excluded:"bg-gray-400"};function f(b){c.openChatRecordDrawer({scrollToMessageId:b})}return(b,M)=>{const R=_e;return o(),i("div",hn,[e("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:M[0]||(M[0]=w=>r.value=!r.value)},[p(R,{name:"i-heroicons-document-magnifying-glass",class:"h-4 w-4 shrink-0 text-primary-500"}),e("span",fn,n(a(t)("ai.chat.evidence.title")),1),r.value?z("",!0):(o(),i("div",xn,[(o(!0),i(oe,null,ue(g.value,w=>(o(),i("span",{key:w.status,class:"flex shrink-0 items-center gap-1 text-[11px] text-gray-500 dark:text-gray-400"},[e("span",{class:le(["h-1.5 w-1.5 rounded-full",C[w.status]])},null,2),se(" "+n(a(t)(`ai.chat.evidence.group.${w.status}`))+" "+n(w.count),1)]))),128)),g.value.length===0?(o(),i("span",bn,n(a(t)("ai.chat.evidence.empty")),1)):z("",!0)])),e("span",kn,[e("span",_n,n(a(t)(`ai.chat.evidence.mode.${l.evidence.mode}`)),1),p(R,{name:r.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"])])]),r.value?(o(),i("div",wn,[e("div",$n,[e("div",null,[e("span",Cn,n(a(t)("ai.chat.evidence.query"))+":",1),se(" "+n(l.evidence.query),1)]),l.evidence.criteria?(o(),i("div",Sn,[e("span",Tn,n(a(t)("ai.chat.evidence.criteria"))+":",1),se(" "+n(l.evidence.criteria),1)])):z("",!0)]),v.value.length>0?(o(),i("div",Mn,[(o(!0),i(oe,null,ue(v.value,w=>(o(),i("div",{key:w,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"},[p(R,{name:"i-heroicons-exclamation-triangle",class:"mt-0.5 h-3 w-3 shrink-0"}),e("span",null,n(a(t)(`ai.chat.evidence.warning.${w}`)),1)]))),128))])):z("",!0),u.value.length===0?(o(),i("div",In,n(a(t)("ai.chat.evidence.empty")),1)):(o(),i("div",Dn,[(o(!0),i(oe,null,ue(u.value,w=>(o(),i("div",{key:w.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"},[e("div",Ln,[e("span",{class:le(["rounded px-1.5 py-0.5 text-[11px] font-medium",y[w.status]])},n(a(t)(`ai.chat.evidence.group.${w.status}`)),3),e("span",An,n(w.title),1)]),w.reason?(o(),i("div",qn,n(w.reason),1)):z("",!0),e("ul",Rn,[(o(!0),i(oe,null,ue(w.sources,(S,T)=>(o(),i("li",{key:`${w.id}-${T}`,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:D=>f(S.messageId)},[e("div",zn,[S.senderName?(o(),i("span",En,n(S.senderName)+": ",1)):z("",!0),e("span",Bn,n(S.snippet),1)]),p(R,{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,Pn))),128))])]))),128))])),u.value.length>0?(o(),i("div",jn,n(a(t)("ai.chat.evidence.totalSources",{count:d.value})),1)):z("",!0)])):z("",!0)])}}}),Fn=/^\s*!\[[^\]\n]*\]\(\s*(?:(?:https?:\/\/(?:localhost|127\.0\.0\.1)(?::\d+)?)?\/?|\.\/)?chart[\w-]*(?:\.(?:png|jpg|jpeg|webp|svg))?(?:\?[^)\s]*)?\s*(?:"[^"]*")?\s*\)\s*$/gim;function Vn(l){return l&&l.replace(Fn,"").replace(/\n{3,}/g,`
8
+
9
+ `).replace(/^\n+|\n+$/g,"")}function Nn(l,s,t){for(let c=s+1;c<l.length;c+=1)if(t(l[c]))return!0;return!1}function On(l,s){const t=[];return l.forEach((c,r)=>{if(!(s.isFoldableProcessBlock(c)||s.isTextBlock(c)&&Nn(l,r,s.isFoldableProcessBlock))){t.push({type:"visible",block:c});return}const u=t[t.length-1];u?.type==="process"?u.blocks.push(c):t.push({type:"process",blocks:[c]})}),t}function Hn(l){return l.flatMap(s=>s.type==="visible"?[s.block]:[])}function Wn(l,s){const t=Math.max(0,Math.round(l/1e3));if(s.startsWith("zh")||s.startsWith("ja")){if(t<60)return`${t}秒`;if(t<3600){const v=Math.floor(t/60),y=t%60;return`${v}分${y.toString().padStart(2,"0")}秒`}const u=Math.floor(t/3600),d=Math.floor(t%3600/60),g=t%60;return`${u}时${d.toString().padStart(2,"0")}分${g.toString().padStart(2,"0")}秒`}if(t<60)return`${t}s`;if(t<3600){const u=Math.floor(t/60),d=t%60;return`${u}m ${d.toString().padStart(2,"0")}s`}const c=Math.floor(t/3600),r=Math.floor(t%3600/60),m=t%60;return`${c}h ${r.toString().padStart(2,"0")}m ${m.toString().padStart(2,"0")}s`}function Yn(l,s){return l.type!=="process"?0:l.blocks.reduce((t,c)=>t+(s(c)??0),0)}function Kn(l,s){if(s.isProcessing)return s.labels.processing;const t=Yn(l,s.getBlockDurationMs),c=t>0?` ${Wn(t,s.locale)}`:"";return`${s.labels.processed}${c}`}const Qn={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"},Gn={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"},Jn={class:"border-t border-gray-200/60 px-3 py-2.5 dark:border-gray-700/40"},Xn=["innerHTML"],Zn={class:"mt-2 text-[11px] text-gray-400 dark:text-gray-500"},er={key:0,class:"rounded-2xl bg-primary-50 p-4 text-gray-900 dark:bg-primary-500/50 dark:text-gray-100"},tr=["onKeydown"],ar={class:"mt-2 flex items-center justify-between"},sr={class:"flex cursor-pointer items-center gap-1.5 text-xs text-gray-500 dark:text-gray-400"},or={class:"flex gap-2"},nr={key:1,class:"rounded-3xl bg-primary-50 px-5 py-3 text-gray-900 dark:bg-primary-500/50 dark:text-gray-100"},rr=["innerHTML"],lr={key:2,class:"space-y-2"},ir=["aria-expanded","onClick"],cr={class:"truncate"},dr={key:0,class:"py-1 text-gray-900 dark:text-gray-100"},ur=["innerHTML"],mr={key:0,class:"ml-1 inline-block h-4 w-1.5 animate-pulse rounded-sm bg-gray-800 dark:bg-gray-200"},gr={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"},pr={class:"cursor-pointer select-none text-xs font-medium transition-colors hover:text-gray-700 dark:hover:text-gray-300"},vr={key:0,class:"ml-2 text-xs text-gray-400 dark:text-gray-500"},yr={key:1,class:"ml-2 inline-flex items-center gap-1 text-[11px] text-gray-400 dark:text-gray-500"},hr={class:"mt-2 prose prose-sm dark:prose-invert max-w-none leading-relaxed text-xs"},fr={key:0,class:"mb-2 font-medium text-gray-700 dark:text-gray-200"},xr={class:"not-prose space-y-2 text-xs leading-relaxed"},br={class:"font-medium text-gray-800 dark:text-gray-200"},kr={key:0,class:"mt-1 text-gray-500 dark:text-gray-400"},_r={class:"mt-0.5 text-gray-500 dark:text-gray-400"},wr={key:1,class:"not-prose mt-2 border-t border-gray-100 pt-2 dark:border-gray-800"},$r={class:"text-[11px] font-medium text-gray-500 dark:text-gray-400"},Cr={class:"mt-1 list-disc space-y-0.5 pl-4 text-xs leading-relaxed text-gray-600 dark:text-gray-300"},Sr=["innerHTML"],Tr={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"},Mr={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"},Ir={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"},Dr={class:"min-w-0 truncate"},Lr={class:"mt-2"},Ar=["innerHTML"],qr={key:1,class:"space-y-2"},Rr={class:"font-medium text-gray-800 dark:text-gray-200"},Pr={class:"mt-1 text-gray-500 dark:text-gray-400"},zr={class:"mt-0.5 text-gray-500 dark:text-gray-400"},Er={key:2,class:"mt-2 border-t border-gray-100 pt-2 dark:border-gray-800"},Br={class:"text-[11px] font-medium text-gray-500 dark:text-gray-400"},jr={class:"mt-1 list-disc space-y-0.5 pl-4 text-xs leading-relaxed text-gray-600 dark:text-gray-300"},Ur={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"},Fr={class:"flex items-center gap-2 text-xs font-medium text-gray-500 dark:text-gray-400"},Vr={key:0,class:"inline-flex items-center gap-1 text-[11px] font-normal text-gray-400 dark:text-gray-500"},Nr=["innerHTML"],Or={key:7,class:"w-full max-w-full"},Hr={class:"inline-flex cursor-pointer list-none select-none [&::-webkit-details-marker]:hidden"},Wr={class:"flex min-w-0 items-baseline gap-1.5 font-medium"},Yr={key:0,class:"max-w-[200px] truncate text-[11px] font-normal opacity-75 sm:max-w-[300px]"},Kr={class:"shrink-0 text-[11px] font-normal opacity-75"},Qr={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"},Gr={class:"flex items-center justify-between gap-2 border-b border-gray-200/70 px-3 py-2 dark:border-gray-700/70"},Jr={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Xr={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"},Zr={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"},el={class:"flex min-w-0 items-baseline gap-1.5 font-medium"},tl={key:0,class:"max-w-[200px] truncate text-[11px] font-normal opacity-75 sm:max-w-[300px]"},al={key:1,class:"shrink-0 text-[11px] font-normal opacity-75"},sl={key:0,class:"flex items-center gap-2 px-1 py-2 text-sm text-gray-500 dark:text-gray-400"},ol={key:3,class:"py-1 text-gray-900 dark:text-gray-100"},nl=["innerHTML"],rl={key:0,class:"ml-1 inline-block h-4 w-1.5 animate-pulse rounded-sm bg-gray-800 dark:bg-gray-200"},ll={class:"text-xs text-gray-400"},qt=fe({__name:"ChatMessage",props:{messageId:{},role:{},content:{},timestamp:{},isStreaming:{type:Boolean},contentBlocks:{},showCaptureButton:{type:Boolean},editable:{type:Boolean}},emits:["edit","fork"],setup(l,{emit:s}){const{t,te:c,locale:r}=ke(),m=Je(),u=l,d=s,g=h(()=>$e(u.timestamp).format("HH:mm")),v=h(()=>u.role==="user"),y=h(()=>u.role==="summary"),C=x(!1),f=x(u.content),b=x(null),M=h(()=>v.value&&u.editable&&!u.isStreaming&&!!u.messageId),R=h(()=>!v.value&&!y.value&&!u.isStreaming&&!!u.messageId),w=x(!1),S=new Qt({html:!1,breaks:!0,linkify:!0,typographer:!0});S.renderer.rules.link_open=(P,H,ee,O,j)=>(P[H].attrSet("target","_blank"),P[H].attrSet("rel","noopener noreferrer"),j.renderToken(P,H,ee));function T(P){return P?S.render(P):""}function D(P){const H=P?.toLowerCase()||"think";return H==="analysis"?t("ai.chat.message.think.labels.analysis"):H==="reasoning"?t("ai.chat.message.think.labels.reasoning"):H==="reflection"?t("ai.chat.message.think.labels.reflection"):H==="plan_validation"?t("ai.chat.message.think.labels.planValidation"):H==="think"||H==="thought"||H==="thinking"?t("ai.chat.message.think.labels.think"):t("ai.chat.message.think.labels.other",{tag:P})}function k(P){if(!P)return"";const H=(P/1e3).toFixed(1);return t("ai.chat.message.think.duration",{seconds:H})}const $=h(()=>u.content?S.render(_(u.content)):"");pe(()=>u.content,P=>{C.value||(f.value=P)});function I(){const P=b.value;if(!P)return;P.style.height="auto";const H=384,ee=Math.min(P.scrollHeight,H);P.style.height=`${ee}px`,P.style.overflowY=P.scrollHeight>H?"auto":"hidden"}async function q(){M.value&&(f.value=u.content,C.value=!0,await Ve(),I(),b.value?.focus())}function E(){C.value=!1,f.value=u.content,w.value=!1}function A(){if(!u.messageId)return;const P=f.value.trim();if(!P||P===u.content.trim()){E();return}C.value=!1,d("edit",{messageId:u.messageId,content:P,overwriteSubsequent:w.value}),w.value=!1}function _(P){return Vn(P)}const L=h(()=>{const P=u.contentBlocks||[];return P.filter((H,ee)=>H.type==="text"?_(H.text).trim().length>0:H.type==="think"?H.text.trim().length>0:H.type==="error"?!Ea(P,ee,{isStreaming:u.isStreaming}):!0)});function Y(P){return P.type==="think"||P.type==="tool"||P.type==="plan"||P.type==="plan_draft"}function ae(P){return P.type==="text"}const W=h(()=>On(L.value,{isFoldableProcessBlock:Y,isTextBlock:ae})),ve=h(()=>Hn(W.value)),he=x({});function X(P){return P.type==="process"?P.blocks:[P.block]}function F(P){return`${u.messageId??u.timestamp}:process:${P}`}function te(P){const H=F(P),ee=he.value[H];return ee!==void 0?ee:G(P)}function ye(P){const H=F(P);he.value={...he.value,[H]:!te(P)}}function xe(P){return L.value[L.value.length-1]===P}function G(P){return!!u.isStreaming&&P===W.value.length-1}function B(P){return P.type==="think"?P.durationMs??0:P.type==="tool"?P.tool.durationMs??0:0}function V(P,H){return Kn(P,{getBlockDurationMs:B,isProcessing:G(H),labels:{processed:t("ai.chat.message.process.processed"),processing:t("ai.chat.message.process.processing")},locale:r.value})}const N=h(()=>u.role==="assistant"&&L.value.length>0);function Q(P){return c(`ai.assistant.builtinToolDesc.${P.name}`)?t(`ai.assistant.builtinToolDesc.${P.name}`):P.displayName}function ce(P){return P==="running"?"running":P==="done"?"done":"error"}function de(P){return P.displayResult??P.result??""}function J(P){return P.status!=="running"&&de(P).trim().length>0}function ne(P){return!P.displayResult&&(P.result??"").includes("…[truncated]")}async function be(P){const H=de(P);if(H.trim())try{await navigator.clipboard.writeText(H),m.success(t("ai.chat.message.toolResult.copySuccess"))}catch(ee){m.fail(t("ai.chat.message.toolResult.copyFailed"),{description:String(ee)})}}function ge(P){return P.length===0?t("ai.chat.message.plan.noTools"):P.join(", ")}function we(P){try{const H=JSON.parse(P.trim());if(!H||typeof H!="object")return null;const ee=H,O=Array.isArray(ee.steps)?ee.steps.filter(j=>!!j&&typeof j=="object").map(j=>({goal:typeof j.goal=="string"?j.goal:"",suggestedTools:Array.isArray(j.suggestedTools)?j.suggestedTools.filter(ie=>typeof ie=="string"):[],evidenceNeeded:typeof j.evidenceNeeded=="string"?j.evidenceNeeded:""})).filter(j=>j.goal):[];return{title:typeof ee.title=="string"?ee.title:void 0,steps:O,successCriteria:Array.isArray(ee.successCriteria)?ee.successCriteria.filter(j=>typeof j=="string"):[]}}catch{return null}}const Ie=new Map;function Le(P){const H=Ie.get(P);if(H)return H;const ee=we(P);return ee&&Ie.set(P,ee),ee}function Te(P){if(P.start_time||P.end_time){const H=P.start_time?String(P.start_time):"",ee=P.end_time?String(P.end_time):"";return H&&ee?`${H} ~ ${ee}`:H||ee}if(P.year)if(r.value.startsWith("zh")){let H=`${P.year}年`;return P.month&&(H+=`${P.month}月`,P.day&&(H+=`${P.day}日`,P.hour!==void 0&&(H+=` ${P.hour}点`))),H}else{const H=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];let ee="";if(P.month){if(ee=H[P.month-1]||String(P.month),P.day&&(ee+=` ${P.day}`,P.hour!==void 0)){const O=P.hour,j=O>=12?"pm":"am",ie=O%12||12;ee+=`, ${ie}${j}`}ee+=`, ${P.year}`}else ee=String(P.year);return ee}return""}function Pe(P){if(!P.params)return"";const H=P.name,ee=P.params;if(H==="search_messages"){const j=ee.keywords,ie=[];j&&j.length>0&&ie.push(`${t("ai.chat.message.toolParams.keywords")}: ${j.join(", ")}`);const Z=Te(ee);return Z&&ie.push(`${t("ai.chat.message.toolParams.time")}: ${Z}`),ie.join(" | ")}if(H==="get_recent_messages"){const j=[];j.push(t("ai.chat.message.toolParams.getMessages",{count:ee.limit||100}));const ie=Te(ee);return ie&&j.push(ie),j.join(" | ")}if(H==="get_conversation_between"){const j=[],ie=Te(ee);return ie&&j.push(`${t("ai.chat.message.toolParams.time")}: ${ie}`),ee.limit&&j.push(t("ai.chat.message.toolParams.limit",{count:ee.limit})),j.join(" | ")}if(H==="get_message_context"){const j=ee.message_ids,ie=ee.context_size||20;return j&&j.length>0?t("ai.chat.message.toolParams.contextWithMessages",{msgCount:j.length,contextSize:ie}):t("ai.chat.message.toolParams.context",{size:ie})}if(H==="get_member_stats")return t("ai.chat.message.toolParams.topMembers",{count:ee.top_n||10});if(H==="get_time_stats"){const j=ee.type;return t(`ai.chat.message.toolParams.timeStats.${j}`)||String(ee.type)}if(H==="render_chart"){const j=ee.spec&&typeof ee.spec=="object"?ee.spec:null;return[j?.title,j?.type].filter(Z=>typeof Z=="string"&&Z.length>0).join(" | ")}if(H==="get_members")return ee.search?`${t("ai.chat.message.toolParams.search")}: ${ee.search}`:t("ai.chat.message.toolParams.getMemberList");if(H==="get_member_name_history")return`${t("ai.chat.message.toolParams.memberId")}: ${ee.member_id}`;if(H==="semantic_search_current_chat"){const j=typeof ee.query=="string"?ee.query:"";return j?j.length>40?`“${j.slice(0,40)}…”`:`“${j}”`:""}const O=[];for(const[j,ie]of Object.entries(ee)){if(ie==null||ie==="")continue;const Z=typeof ie=="object"?JSON.stringify(ie):String(ie),re=Z.length>30?Z.substring(0,30)+"...":Z;if(O.push(`${j}: ${re}`),O.length>=3){O.push("...");break}}return O.join(" | ")}const Ee=h(()=>!N.value&&u.content.trim()?_(u.content):N.value?ve.value.map(H=>{if(H.type==="text")return _(H.text);if(H.type==="think"){const ee=D(H.tag),O=H.text.split(`
10
+ `).map(j=>`> ${j}`).join(`
11
+ `);return`> ${ee}
12
+ >
13
+ ${O}`}if(H.type==="skill")return`> ${t("ai.skill.active.label",{name:H.skillName})}`;if(H.type==="chart")return`> Chart: ${H.chart.spec.title}`;if(H.type==="evidence"){const ee=`> ${t("ai.chat.evidence.title")}`,O=H.evidence.groups.map(j=>{const ie=t(`ai.chat.evidence.group.${j.status}`),Z=j.sources.map(re=>`> - ${re.snippet}`).join(`
14
+ `);return`> [${ie}] ${j.title}
15
+ ${Z}`});return[ee,...O].join(`
16
+ `)}if(H.type==="plan"){const ee=H.plan.steps.map((ie,Z)=>`${Z+1}. ${ie.goal}
17
+ - ${t("ai.chat.message.plan.evidenceNeeded")}: ${ie.evidenceNeeded}
18
+ - ${t("ai.chat.message.plan.suggestedTools")}: ${ge(ie.suggestedTools)}`).join(`
19
+ `),O=H.plan.successCriteria.map(ie=>`- ${ie}`).join(`
20
+ `),j=H.displayText?`${H.displayText.split(`
21
+ `).map(ie=>`> ${ie}`).join(`
22
+ `)}
23
+
24
+ `:"";return H.displayText?`> ${t("ai.chat.message.plan.label")}: ${H.plan.title}
25
+
26
+ ${j.trimEnd()}`:`> ${t("ai.chat.message.plan.label")}: ${H.plan.title}
27
+
28
+ ${ee}
29
+
30
+ ${t("ai.chat.message.plan.successCriteria")}:
31
+ ${O}`}if(H.type==="plan_draft")return`> ${t("ai.chat.message.plan.label")}
32
+ >
33
+ ${H.text.split(`
34
+ `).map(ee=>`> ${ee}`).join(`
35
+ `)}`;if(H.type==="tool"){const ee=Q(H.tool),O=Pe(H.tool),j=O?` (${O})`:"";return`- [${ce(H.tool.status)}] ${ee}${j}`}return""}).filter(H=>H.trim().length>0).join(`
36
+
37
+ `):""),je=h(()=>!u.isStreaming&&Ee.value.trim().length>0);async function me(){if(je.value)try{await navigator.clipboard.writeText(Ee.value),m.success(t("ai.chat.message.copy.success"))}catch(P){m.fail(t("ai.chat.message.copy.failed"),{description:String(P)})}}return(P,H)=>{const ee=_e,O=Re,j=vt;return o(),i("div",{class:le(["flex items-start gap-3",[v.value&&!C.value?"flex-row-reverse":"",y.value?"justify-center":""]])},[e("div",{class:le([v.value&&!C.value?"max-w-[85%] min-w-0":"w-full min-w-0"])},[y.value?(o(),i("details",Qn,[e("summary",Gn,[p(ee,{name:"i-heroicons-arrow-path",class:"h-3.5 w-3.5 shrink-0"}),e("span",null,n(a(t)("ai.chat.message.summary.label")),1),p(ee,{name:"i-heroicons-chevron-right",class:"ml-auto h-3 w-3 transition-transform [[open]>&]:rotate-90"})]),e("div",Jn,[e("div",{class:"prose prose-sm dark:prose-invert max-w-none text-xs leading-relaxed text-gray-600 dark:text-gray-300",innerHTML:$.value},null,8,Xn),e("p",Zn,n(a(t)("ai.chat.message.summary.info")),1)])])):v.value?(o(),i(oe,{key:1},[C.value?(o(),i("div",er,[Oe(e("textarea",{ref_key:"editTextareaRef",ref:b,"onUpdate:modelValue":H[0]||(H[0]=ie=>f.value=ie),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:I,onKeydown:[Xe(Ue(E,["prevent"]),["esc"]),Xe(Ue(A,["ctrl","prevent"]),["enter"]),Xe(Ue(A,["meta","prevent"]),["enter"])]},null,40,tr),[[st,f.value]]),e("div",ar,[e("label",sr,[Oe(e("input",{"onUpdate:modelValue":H[1]||(H[1]=ie=>w.value=ie),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),[[Ha,w.value]]),se(" "+n(a(t)("ai.chat.message.edit.overwriteSubsequent")),1)]),e("div",or,[p(O,{size:"xs",variant:"ghost",color:"gray",onClick:E},{default:U(()=>[se(n(a(t)("common.cancel")),1)]),_:1}),p(O,{size:"xs",color:"primary",onClick:A},{default:U(()=>[se(n(a(t)("ai.chat.message.edit.submit")),1)]),_:1})])])])):(o(),i("div",nr,[e("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:$.value},null,8,rr)]))],64)):N.value?(o(),i("div",lr,[(o(!0),i(oe,null,ue(W.value,(ie,Z)=>(o(),i("div",{key:Z,class:le([ie.type==="process"?"py-1":""])},[ie.type==="process"?(o(),i("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":te(Z),onClick:re=>ye(Z)},[p(ee,{name:te(Z)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0"},null,8,["name"]),e("span",cr,n(V(ie,Z)),1),G(Z)?(o(),K(ee,{key:0,name:"i-heroicons-arrow-path",class:"h-3 w-3 shrink-0 animate-spin"})):z("",!0)],8,ir)):z("",!0),Oe(e("div",{class:le([ie.type==="process"?"mt-2 space-y-2 pl-4":""])},[(o(!0),i(oe,null,ue(X(ie),(re,Be)=>(o(),i(oe,{key:`${Z}-${Be}`},[re.type==="text"?(o(),i("div",dr,[e("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:T(_(re.text))},null,8,ur),l.isStreaming&&xe(re)?(o(),i("span",mr)):z("",!0)])):re.type==="think"?(o(),i("details",gr,[e("summary",pr,[se(n(D(re.tag))+" ",1),re.durationMs?(o(),i("span",vr,n(k(re.durationMs)),1)):z("",!0),l.isStreaming&&xe(re)?(o(),i("span",yr,[e("span",null,n(a(t)("ai.chat.message.think.loading")),1),H[3]||(H[3]=e("span",{class:"flex gap-0.5"},[e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1))])):z("",!0)]),e("div",hr,[re.tag==="plan_validation"&&Le(re.text)?(o(),i(oe,{key:0},[Le(re.text)?.title?(o(),i("div",fr,n(Le(re.text)?.title),1)):z("",!0),e("ol",xr,[(o(!0),i(oe,null,ue(Le(re.text)?.steps,(Ae,We)=>(o(),i("li",{key:We,class:"text-gray-600 dark:text-gray-300"},[e("div",br,n(Ae.goal),1),Ae.evidenceNeeded?(o(),i("div",kr,n(a(t)("ai.chat.message.plan.evidenceNeeded"))+": "+n(Ae.evidenceNeeded),1)):z("",!0),e("div",_r,n(a(t)("ai.chat.message.plan.suggestedTools"))+": "+n(ge(Ae.suggestedTools)),1)]))),128))]),Le(re.text)?.successCriteria.length?(o(),i("div",wr,[e("div",$r,n(a(t)("ai.chat.message.plan.successCriteria")),1),e("ul",Cr,[(o(!0),i(oe,null,ue(Le(re.text)?.successCriteria,(Ae,We)=>(o(),i("li",{key:We},n(Ae),1))),128))])])):z("",!0)],64)):(o(),i("div",{key:1,innerHTML:T(re.text)},null,8,Sr))])])):re.type==="skill"?(o(),i("div",Tr,[p(ee,{name:"i-heroicons-bolt",class:"h-3.5 w-3.5"}),e("span",null,n(a(t)("ai.skill.active.label",{name:re.skillName})),1)])):re.type==="plan"?(o(),i("details",Mr,[e("summary",Ir,[p(ee,{name:"i-heroicons-clipboard-document-list",class:"h-3.5 w-3.5 shrink-0"}),e("span",Dr,n(a(t)("ai.chat.message.plan.label"))+" · "+n(re.plan.title),1)]),e("div",Lr,[re.displayText?(o(),i("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:T(re.displayText)},null,8,Ar)):(o(),i("ol",qr,[(o(!0),i(oe,null,ue(re.plan.steps,(Ae,We)=>(o(),i("li",{key:We,class:"text-xs leading-relaxed"},[e("div",Rr,n(We+1)+". "+n(Ae.goal),1),e("div",Pr,n(a(t)("ai.chat.message.plan.evidenceNeeded"))+": "+n(Ae.evidenceNeeded),1),e("div",zr,n(a(t)("ai.chat.message.plan.suggestedTools"))+": "+n(ge(Ae.suggestedTools)),1)]))),128))])),re.displayText?z("",!0):(o(),i("div",Er,[e("div",Br,n(a(t)("ai.chat.message.plan.successCriteria")),1),e("ul",jr,[(o(!0),i(oe,null,ue(re.plan.successCriteria,(Ae,We)=>(o(),i("li",{key:We},n(Ae),1))),128))])]))])])):re.type==="plan_draft"?(o(),i("div",Ur,[e("div",Fr,[p(ee,{name:"i-heroicons-clipboard-document-list",class:"h-3.5 w-3.5 shrink-0"}),e("span",null,n(a(t)("ai.chat.message.plan.label")),1),l.isStreaming?(o(),i("span",Vr,[...H[4]||(H[4]=[e("span",{class:"flex gap-0.5"},[e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1)])])):z("",!0)]),e("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:T(re.text)},null,8,Nr)])):re.type==="chart"?(o(),K(yn,{key:5,chart:re.chart},null,8,["chart"])):re.type==="evidence"?(o(),K(Un,{key:6,evidence:re.evidence},null,8,["evidence"])):re.type==="tool"&&J(re.tool)?(o(),i("details",Or,[e("summary",Hr,[e("div",{class:le(["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",[re.tool.status==="error"?"bg-red-50 text-red-600 dark:bg-red-900/20 dark:text-red-400":""]])},[p(ee,{name:re.tool.status==="error"?"i-heroicons-exclamation-circle":"i-heroicons-wrench-screwdriver",class:"h-3.5 w-3.5 shrink-0"},null,8,["name"]),e("div",Wr,[e("span",null,n(Q(re.tool)),1),Pe(re.tool)?(o(),i("span",Yr,n(Pe(re.tool)),1)):z("",!0),e("span",Kr," · "+n(a(t)("ai.chat.message.toolResult.view")),1)]),p(ee,{name:"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 transition-transform [[open]>&]:rotate-90"})],2)]),e("div",Qr,[e("div",Gr,[e("span",Jr,n(a(t)("ai.chat.message.toolResult.title")),1),p(O,{size:"xs",variant:"ghost",color:"primary",icon:"i-heroicons-document-duplicate",title:a(t)("ai.chat.message.toolResult.copy"),onClick:Ue(Ae=>be(re.tool),["stop"])},null,8,["title","onClick"])]),ne(re.tool)?(o(),i("div",Xr,n(a(t)("ai.chat.message.toolResult.displayTruncated")),1)):z("",!0),e("pre",Zr,n(de(re.tool)),1)])])):re.type==="tool"?(o(),i("div",{key:8,class:le(["flex w-fit items-center gap-1.5 rounded-lg px-2.5 py-1 text-xs transition-colors",[re.tool.status==="running"?"bg-gray-100 text-gray-600 dark:bg-gray-800/50 dark:text-gray-400":re.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"]])},[p(ee,{name:re.tool.status==="running"?"i-heroicons-arrow-path":re.tool.status==="done"?"i-heroicons-wrench-screwdriver":"i-heroicons-exclamation-circle",class:le(["h-3.5 w-3.5 shrink-0",[re.tool.status==="running"?"animate-spin":""]])},null,8,["name","class"]),e("div",el,[e("span",null,n(Q(re.tool)),1),Pe(re.tool)?(o(),i("span",tl,n(Pe(re.tool)),1)):z("",!0),re.tool.status==="done"&&re.tool.durationMs?(o(),i("span",al," · "+n(k(re.tool.durationMs)),1)):z("",!0)])],2)):re.type==="error"?(o(),K(Qo,{key:9,error:re.error},null,8,["error"])):z("",!0)],64))),128))],2),[[ot,ie.type!=="process"||te(Z)]])],2))),128)),l.isStreaming&&L.value.length>0&&L.value[L.value.length-1].type==="tool"?(o(),i("div",sl,[H[5]||(H[5]=e("span",{class:"flex gap-1"},[e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1)),e("span",null,n(a(t)("ai.chat.message.generating")),1)])):z("",!0)])):(o(),i("div",ol,[e("div",{class:"prose prose-sm dark:prose-invert max-w-none leading-relaxed",innerHTML:$.value},null,8,nl),l.isStreaming?(o(),i("span",rl)):z("",!0)])),!y.value&&!l.isStreaming?(o(),i("div",{key:4,class:le(["mt-1 flex items-center gap-2 px-1",[v.value?"flex-row-reverse":""]])},[e("span",ll,n(g.value),1),p(j,{text:a(t)("ai.chat.message.copy.tooltip"),class:"no-capture"},{default:U(()=>[p(O,{icon:"i-heroicons-document-duplicate",variant:"ghost",color:"primary",size:"xs",disabled:!je.value,onClick:me},null,8,["disabled"])]),_:1},8,["text"]),M.value?(o(),K(j,{key:0,text:a(t)("ai.chat.message.edit.tooltip"),class:"no-capture"},{default:U(()=>[p(O,{icon:"i-heroicons-pencil-square",variant:"ghost",color:"primary",size:"xs",onClick:q})]),_:1},8,["text"])):z("",!0),R.value?(o(),K(j,{key:1,text:a(t)("ai.chat.message.fork.tooltip"),class:"no-capture"},{default:U(()=>[p(O,{icon:"i-heroicons-arrow-top-right-on-square",variant:"ghost",color:"primary",size:"xs",onClick:H[2]||(H[2]=ie=>d("fork",l.messageId))})]),_:1},8,["text"])):z("",!0),l.showCaptureButton&&!v.value&&!l.isStreaming?(o(),K(ct,{key:2,size:"xs",type:"element","target-selector":".qa-pair","markdown-fix":""})):z("",!0)],2)):z("",!0)],2)],2)}}}),il={key:0,class:"absolute bottom-full left-0 z-20 mb-1.5 w-[240px] max-w-[calc(100vw-2rem)]"},cl={class:"overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-2xl shadow-gray-900/10 dark:border-gray-700 dark:bg-page-dark"},dl={class:"flex items-center justify-between border-b border-gray-100 px-2.5 py-1.5 dark:border-gray-800"},ul={class:"flex items-center gap-1.5 text-[11px] text-gray-500 dark:text-gray-400"},ml=["title"],gl={key:0,class:"px-3 py-4 text-center text-xs text-gray-500 dark:text-gray-400"},pl=["onMouseenter","onClick"],vl={class:"min-w-0 flex-1"},yl={class:"flex items-center gap-1.5"},hl={class:"truncate text-xs font-medium"},fl={class:"mt-0.5 line-clamp-2 text-[11px] leading-4 text-gray-500 dark:text-gray-400"},xl={key:2,class:"px-3 py-4 text-center"},bl={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},kl={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},_l=fe({__name:"MemberMentionMenu",props:{visible:{type:Boolean},members:{},highlightIndex:{},loading:{type:Boolean}},emits:["select","close","highlight"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s,m=x(null);return pe(()=>[c.visible,c.highlightIndex,c.members.length],async([u,d])=>{if(!u||!m.value)return;await Ve(),m.value.querySelectorAll("[data-mention-item]")[d]?.scrollIntoView({block:"nearest"})}),(u,d)=>{const g=_e;return o(),K(nt,{name:"mention-menu"},{default:U(()=>[l.visible?(o(),i("div",il,[e("div",cl,[e("div",dl,[e("div",ul,[e("span",null,n(a(t)("ai.chat.input.mentionHint")),1)]),e("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:a(t)("common.close"),onClick:d[0]||(d[0]=v=>r("close"))},[p(g,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5"})],8,ml)]),c.loading?(o(),i("div",gl,n(a(t)("common.loading")),1)):c.members.length>0?(o(),i("div",{key:1,ref_key:"listRef",ref:m,class:"max-h-72 overflow-y-auto p-1.5"},[(o(!0),i(oe,null,ue(c.members,(v,y)=>(o(),i("button",{key:`${v.memberId}-${v.insertName}`,type:"button","data-mention-item":"",class:le(["flex w-full items-start justify-between gap-1.5 rounded-lg px-2.5 py-1.5 text-left transition-colors",y===c.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:C=>r("highlight",y),onClick:C=>r("select",v)},[e("div",vl,[e("div",yl,[e("span",hl,"@"+n(v.insertName),1)]),e("p",fl,n(v.subtitle),1)])],42,pl))),128))],512)):(o(),i("div",xl,[e("p",bl,n(a(t)("ai.chat.input.mentionEmpty")),1),e("p",kl,n(a(t)("ai.chat.input.mentionEmptyHint")),1)]))])])):z("",!0)]),_:1})}}}),wl=rt(_l,[["__scopeId","data-v-6b40ada0"]]),$l={key:0,class:"absolute bottom-full left-0 z-20 mb-1.5 w-[240px] max-w-[calc(100vw-2rem)]"},Cl={class:"overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-2xl shadow-gray-900/10 dark:border-gray-700 dark:bg-page-dark"},Sl={class:"flex items-center justify-between border-b border-gray-100 px-2.5 py-1.5 dark:border-gray-800"},Tl={class:"flex items-center gap-1.5 text-[11px] text-gray-500 dark:text-gray-400"},Ml=["title"],Il=["onMouseenter","onClick"],Dl={class:"min-w-0 flex-1"},Ll={class:"flex items-center gap-1.5"},Al={class:"truncate text-xs font-medium"},ql={class:"mt-0.5 line-clamp-1 text-xs leading-4 text-gray-500 dark:text-gray-400"},Rl={key:1,class:"px-3 py-4 text-center"},Pl={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},zl={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},El={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-2xl shadow-gray-900/10 dark:border-gray-700 dark:bg-page-dark"},Bl={class:"border-b border-gray-100 px-3 py-2 dark:border-gray-800"},jl={class:"truncate text-sm font-medium text-gray-900 dark:text-gray-100"},Ul={class:"mt-0.5 text-xs leading-5 text-gray-500 dark:text-gray-400"},Fl={key:0,class:"mt-1 flex items-start gap-1.5 text-[11px] leading-4"},Vl={class:"shrink-0 font-medium text-gray-600 dark:text-gray-300"},Nl={class:"line-clamp-1 min-w-0 flex-1 text-gray-500 dark:text-gray-400"},Ol={key:1,class:"mt-0.5 flex items-start gap-1.5 text-[11px] leading-4"},Hl={class:"shrink-0 font-medium text-gray-600 dark:text-gray-300"},Wl={class:"line-clamp-1 min-w-0 flex-1 text-gray-500 dark:text-gray-400"},Yl={class:"min-h-0 flex-1 overflow-y-auto px-3 py-2"},Kl={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},Ql=["innerHTML"],Gl={key:2,class:"text-xs leading-relaxed text-gray-400 dark:text-gray-500"},Jl=fe({__name:"SlashCommandMenu",props:{visible:{type:Boolean},skills:{},highlightIndex:{},activeSkillId:{}},emits:["select","close","manage","highlight"],setup(l,{emit:s}){const{t,te:c}=ke(),r=ut(),m=l,u=s,d=x({}),g=x(""),v=x(!1),y=x(null),C=new Qt({html:!1,breaks:!0,linkify:!0,typographer:!0}),f=h(()=>{if(m.skills.length===0)return null;const S=Math.min(m.highlightIndex,m.skills.length-1);return m.skills[S]??null}),b=h(()=>g.value?C.render(g.value):"");function M(S){const T=`ai.assistant.builtinToolDesc.${S}`;return c(T)?t(T):S}const R=h(()=>f.value?.tags.join(" / ")||""),w=h(()=>f.value?.tools.map(S=>M(S)).join(" / ")||"");return pe(()=>[m.visible,f.value?.id],async([S,T])=>{if(!S||!T){g.value="",v.value=!1;return}if(d.value[T]){g.value=d.value[T],v.value=!1;return}v.value=!0;const k=(await r.getSkillConfig(T))?.prompt?.trim()||"";d.value={...d.value,[T]:k},f.value?.id===T&&(g.value=k,v.value=!1)},{immediate:!0}),pe(()=>[m.visible,m.highlightIndex,m.skills.length],async([S,T])=>{if(!S||!y.value)return;await Ve(),y.value.querySelectorAll("[data-slash-item]")[T]?.scrollIntoView({block:"nearest"})}),(S,T)=>{const D=_e;return o(),K(nt,{name:"slash-menu"},{default:U(()=>[l.visible?(o(),i("div",$l,[e("div",Cl,[e("div",Sl,[e("div",Tl,[e("span",null,n(a(t)("ai.chat.input.slashHint")),1)]),e("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:a(t)("common.close"),onClick:T[0]||(T[0]=k=>u("close"))},[p(D,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5"})],8,Ml)]),m.skills.length>0?(o(),i("div",{key:0,ref_key:"listRef",ref:y,class:"max-h-72 overflow-y-auto p-1.5"},[(o(!0),i(oe,null,ue(m.skills,(k,$)=>(o(),i("button",{key:k.id,type:"button","data-slash-item":"",class:le(["flex w-full items-start justify-between gap-1.5 rounded-lg px-2.5 py-1.5 text-left transition-colors",$===m.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:I=>u("highlight",$),onClick:I=>u("select",k)},[e("div",Dl,[e("div",Ll,[e("span",Al,n(k.name),1),m.activeSkillId===k.id?(o(),K(D,{key:0,name:"i-heroicons-check-circle-20-solid",class:"h-3.5 w-3.5 shrink-0 text-primary-500"})):z("",!0)]),e("p",ql,n(k.description),1)])],42,Il))),128))],512)):(o(),i("div",Rl,[e("p",Pl,n(a(t)("ai.chat.input.slashEmpty")),1),e("p",zl,n(a(t)("ai.chat.input.slashEmptyHint")),1)])),e("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:T[1]||(T[1]=k=>u("manage"))},[e("span",null,n(a(t)("ai.chat.input.manageSkills")),1),p(D,{name:"i-heroicons-arrow-top-right-on-square",class:"h-3.5 w-3.5"})])]),m.skills.length>0&&f.value?(o(),i("div",El,[e("div",Bl,[e("p",jl,n(f.value.name),1),e("p",Ul,n(f.value.description),1),R.value?(o(),i("div",Fl,[e("span",Vl,n(a(t)("ai.chat.input.previewTagsLabel")),1),e("span",Nl,n(R.value),1)])):z("",!0),w.value?(o(),i("div",Ol,[e("span",Hl,n(a(t)("ai.chat.input.previewToolsLabel")),1),e("span",Wl,n(w.value),1)])):z("",!0)]),e("div",Yl,[v.value?(o(),i("div",Kl,n(a(t)("common.loading")),1)):b.value?(o(),i("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:b.value},null,8,Ql)):(o(),i("div",Gl,n(a(t)("ai.chat.input.previewUnavailable")),1))])])):z("",!0)])):z("",!0)]),_:1})}}}),Xl=rt(Jl,[["__scopeId","data-v-89f6ec48"]]),Zl={class:"shrink-0 pt-2 pb-2"},ei={class:"relative px-4 pt-2.5 pb-2.5"},ti={class:"flex items-start gap-2 pr-10"},ai={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"},si={class:"truncate"},oi=["disabled","placeholder"],ni=["disabled","title"],ri=fe({__name:"AIChatInput",props:{sessionId:{},disabled:{type:Boolean},status:{},chatType:{}},emits:["send","stop","manageSkills","skillActivated"],setup(l,{expose:s,emit:t}){const{t:c}=ke(),r=l,m=t,u=ut(),{compatibleSkills:d,activeSkill:g,activeSkillId:v,isLoaded:y}=at(u),C=x(null),f=x(null),b=x(""),M=x([]),R=x([]),w=x(!1),S=x(!1),T=x(""),D=x(0),k=x(!1),$=x(""),I=x(0),q=x(null),E=x(!1),A=x(null),_=x(null),L=x(!1),Y=h(()=>b.value.trim().length>0&&!r.disabled),ae=h(()=>g.value&&b.value.trim().length===0?c("ai.chat.input.placeholderWithActiveSkill",{name:g.value.name}):c("ai.chat.input.placeholderWithSlash")),W=h(()=>r.status==="streaming"?"":Y.value?c("ai.chat.input.send"):g.value?c("ai.chat.input.needMoreThanSkill"):c("ai.chat.input.needQuestion")),ve=h(()=>{const O=new Map;return M.value.forEach(j=>{const ie=j.groupNickname||j.accountName||j.platformId;O.set(ie,(O.get(ie)??0)+1)}),M.value.map(j=>{const ie=j.groupNickname||j.accountName||j.platformId,Z=(O.get(ie)??0)>1?`${ie}·${j.platformId}`:ie,re=[j.platformId];return j.aliases.length>0&&re.push(j.aliases.join(" / ")),{memberId:j.id,platformId:j.platformId,displayName:ie,aliases:[...j.aliases],mentionText:`@${Z}`,insertName:Z,subtitle:re.join(" · "),searchText:[ie,j.groupNickname||"",j.accountName||"",j.platformId,Z,j.aliases.join(" ")].join(" ").toLocaleLowerCase()}})}),he=h(()=>{const O=T.value.trim().toLocaleLowerCase();return O?d.value.filter(j=>[j.name,j.description,j.tags.join(" ")].join(" ").toLocaleLowerCase().includes(O)):d.value}),X=h(()=>{const O=$.value.trim().toLocaleLowerCase();return O?ve.value.filter(j=>j.searchText.includes(O)):ve.value});function F(){if(!f.value)return;const O=f.value;O.style.height="auto";const j=192,ie=Math.min(O.scrollHeight,j);O.style.height=`${ie}px`,O.style.overflowY=O.scrollHeight>j?"auto":"hidden"}function te(){f.value?.focus()}async function ye(){if(!r.sessionId){M.value=[];return}w.value=!0;try{const O=await Fe().getMembers(r.sessionId);M.value=[...O].sort((j,ie)=>ie.messageCount-j.messageCount)}catch(O){console.error("加载 AI @ 成员列表失败:",O),M.value=[]}finally{w.value=!1}}function xe(){S.value=!1,T.value="",D.value=0}function G(){k.value=!1,$.value="",I.value=0,q.value=null}function B(){/^\s*\/([^\n]*)$/.test(b.value)&&(A.value=b.value),xe()}function V(){q.value&&(_.value=q.value.rawToken),G()}function N(O){if(r.disabled){xe();return}A.value&&A.value!==O&&(A.value=null);const j=O.match(/^\s*\/([^\n]*)$/);if(!j){xe();return}const ie=!S.value||T.value!==j[1];if(T.value=j[1],A.value===O){S.value=!1;return}S.value=!0,ie&&(D.value=0)}function Q(){const O=f.value,j=b.value.length;return{start:O?.selectionStart??j,end:O?.selectionEnd??j}}function ce(O){const{start:j,end:ie}=Q();if(j!==ie)return null;const Z=O.slice(0,j),re=Z.match(/@([^\s@]*)$/);if(!re)return null;const Be=re[1],Ae=Z.length-Be.length-1;return{start:Ae,end:j,rawToken:Z.slice(Ae),query:Be}}function de(O){if(r.disabled||S.value){G();return}const j=ce(O);if(_.value&&_.value!==j?.rawToken&&(_.value=null),!j){G();return}const ie=!k.value||$.value!==j.query||q.value?.rawToken!==j.rawToken;if($.value=j.query,q.value={start:j.start,end:j.end,rawToken:j.rawToken},_.value===j.rawToken){k.value=!1;return}k.value=!0,ie&&(I.value=0)}function J(O){if(N(O),S.value){G();return}de(O)}function ne(O){R.value=R.value.filter(j=>O.includes(j.mentionText))}function be(){const{start:O,end:j}=Q();if(O!==j||O===0)return!1;const ie=[...new Set(R.value.map(Z=>Z.mentionText))].sort((Z,re)=>re.length-Z.length);for(const Z of ie){let re=b.value.indexOf(Z);for(;re!==-1;){const Be=re,Ae=re+Z.length,We=b.value[Ae]===" "?Ae+1:Ae;if(O>Be&&O<=We)return L.value=!0,b.value=b.value.slice(0,Be)+b.value.slice(We),_.value=null,Ve(()=>{F(),te(),f.value?.setSelectionRange(Be,Be),L.value=!1,J(b.value)}),!0;re=b.value.indexOf(Z,re+Z.length)}}return!1}function ge(){u.activateSkill(null),Ve(te)}function we(){r.disabled||(v.value&&u.activateSkill(null),L.value=!0,b.value="/",A.value=null,Ve(()=>{F(),te(),f.value?.setSelectionRange(1,1),L.value=!1,J(b.value)}))}function Ie(O){r.disabled||(L.value=!0,b.value=O,A.value=null,Ve(()=>{F(),te();const j=b.value.length;f.value?.setSelectionRange(j,j),L.value=!1,J(b.value)}))}function Le(O){if(r.disabled||!q.value)return;const j=b.value.slice(0,q.value.start),ie=b.value.slice(q.value.end),Z=`@${O.insertName}`,re=`${j}${Z} ${ie}`;R.value=[...R.value.filter(Be=>Be.memberId!==O.memberId),{memberId:O.memberId,platformId:O.platformId,displayName:O.displayName,aliases:[...O.aliases],mentionText:Z}],L.value=!0,b.value=re,_.value=null,G(),Ve(()=>{const Be=j.length+Z.length+1;F(),te(),f.value?.setSelectionRange(Be,Be),L.value=!1,J(b.value)})}function Te(){Y.value&&(m("send",{content:b.value.trim(),mentionedMembers:[...R.value]}),b.value="",A.value=null,_.value=null,R.value=[],G(),v.value&&u.activateSkill(null))}function Pe(O){r.disabled||(u.activateSkill(O.id),m("skillActivated",O),b.value="",A.value=null,xe(),Ve(()=>{te()}))}function Ee(){B(),m("manageSkills")}function je(O){if(!he.value.length)return;const j=he.value.length;D.value=(D.value+O+j)%j}function me(O){if(!X.value.length)return;const j=X.value.length;I.value=(I.value+O+j)%j}function P(O){if(O.key==="Backspace"&&b.value.length===0&&v.value){O.preventDefault(),ge();return}if(O.key==="Backspace"&&be()){O.preventDefault();return}if(k.value){if(O.key==="ArrowDown"){O.preventDefault(),me(1);return}if(O.key==="ArrowUp"){O.preventDefault(),me(-1);return}if(O.key==="Escape"){O.preventDefault(),V();return}if(O.key==="Enter"&&!O.shiftKey&&!E.value||O.key==="Tab"){O.preventDefault();const j=X.value[I.value];j&&Le(j);return}}if(S.value){if(O.key==="ArrowDown"){O.preventDefault(),je(1);return}if(O.key==="ArrowUp"){O.preventDefault(),je(-1);return}if(O.key==="Escape"){O.preventDefault(),B();return}if(O.key==="Enter"&&!O.shiftKey&&!E.value||O.key==="Tab"){O.preventDefault();const j=he.value[D.value];j&&Pe(j);return}}O.key==="Enter"&&!O.shiftKey&&!E.value&&(O.preventDefault(),Te())}function H(O){if(!S.value&&!k.value||!C.value)return;const j=O.target;j instanceof Node&&!C.value.contains(j)&&(B(),V())}function ee(){L.value||J(b.value)}return pe(()=>r.chatType,O=>{u.setFilterContext(O)},{immediate:!0}),pe(b,async O=>{ne(O),L.value||J(O),await Ve(),F()}),pe(he,O=>{if(O.length===0){D.value=0;return}D.value>=O.length&&(D.value=O.length-1)},{immediate:!0}),pe(X,O=>{if(O.length===0){I.value=0;return}I.value>=O.length&&(I.value=O.length-1)},{immediate:!0}),pe(()=>r.disabled,O=>{O&&(B(),V())}),pe(()=>r.sessionId,()=>{R.value=[],G(),ye()},{immediate:!0}),ze(async()=>{y.value||await u.loadSkills(),await Ve(),F(),document.addEventListener("mousedown",H)}),Tt(()=>{document.removeEventListener("mousedown",H)}),s({fillInput:Ie,openSkillSelector:we}),(O,j)=>{const ie=_e;return o(),i("div",Zl,[e("div",{ref_key:"rootRef",ref:C,class:"relative w-full max-w-4xl mx-auto"},[p(Xl,{visible:S.value,skills:he.value,"highlight-index":D.value,"active-skill-id":a(v),onSelect:Pe,onClose:B,onManage:Ee,onHighlight:j[0]||(j[0]=Z=>D.value=Z)},null,8,["visible","skills","highlight-index","active-skill-id"]),p(wl,{visible:k.value,members:X.value,"highlight-index":I.value,loading:w.value,onSelect:Le,onClose:V,onHighlight:j[1]||(j[1]=Z=>I.value=Z)},null,8,["visible","members","highlight-index","loading"]),e("div",{class:le(["flex flex-col overflow-hidden rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200 transition-all dark:bg-page-dark dark:ring-gray-800",r.disabled?"bg-gray-50/50 dark:bg-page-dark/50":"focus-within:ring-primary-500/50 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:focus-within:ring-primary-500/50"])},[e("div",ei,[e("div",ti,[a(g)?(o(),i("div",ai,[e("span",si,"/"+n(a(g).name),1)])):z("",!0),Oe(e("textarea",{ref_key:"textareaRef",ref:f,"onUpdate:modelValue":j[2]||(j[2]=Z=>b.value=Z),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:ae.value,onKeydown:P,onClick:ee,onKeyup:ee,onSelect:ee,onCompositionstart:j[3]||(j[3]=Z=>E.value=!0),onCompositionend:j[4]||(j[4]=Z=>E.value=!1)},null,40,oi),[[st,b.value]])]),r.status==="streaming"?(o(),i("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:j[5]||(j[5]=Z=>m("stop"))},[p(ie,{name:"i-heroicons-stop-16-solid",class:"h-3.5 w-3.5"})])):(o(),i("button",{key:1,type:"button",class:le(["absolute right-3 bottom-2 flex h-7 w-7 items-center justify-center rounded-full transition-all duration-200",Y.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:!Y.value,title:W.value,onClick:Te},[p(ie,{name:"i-heroicons-arrow-up-20-solid",class:"h-4 w-4"})],10,ni))])],2)],512)])}}}),li={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"},ii={class:"font-medium text-gray-600 dark:text-gray-400"},ci={key:1,class:"flex items-start gap-3"},di={class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-500 to-pink-600"},ui={class:"rounded-2xl rounded-tl-sm bg-gray-100 px-4 py-3 dark:bg-gray-800"},mi={key:0,class:"space-y-2"},gi={class:"flex items-center gap-2"},pi={key:0,class:"flex gap-1"},vi={key:1,class:"flex items-center gap-1.5 text-xs text-gray-500 dark:text-gray-400"},yi={key:0,class:"flex flex-wrap gap-1"},hi={class:"text-xs text-gray-400"},fi={key:1,class:"flex items-center gap-2"},xi={class:"text-sm text-gray-600 dark:text-gray-400"},bi=fe({__name:"AIThinkingIndicator",props:{currentToolStatus:{},toolsUsed:{},agentStatus:{}},setup(l){const{t:s,te:t}=ke();function c(u,d){const g=`ai.assistant.builtinToolDesc.${u}`;return t(g)?s(g):d||u}const r=l,m=h(()=>r.agentStatus?.phase==="compressing");return(u,d)=>{const g=_e;return m.value?(o(),i("div",li,[p(g,{name:"i-heroicons-arrow-path",class:"h-3.5 w-3.5 shrink-0 animate-spin text-gray-600 dark:text-gray-400"}),e("span",ii,n(a(s)("ai.chat.thinking.compressing")),1)])):(o(),i("div",ci,[e("div",di,[p(g,{name:"i-heroicons-sparkles",class:"h-4 w-4 text-white"})]),e("div",ui,[l.currentToolStatus?(o(),i("div",mi,[e("div",gi,[e("span",{class:le(["inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium",[l.currentToolStatus.status==="running"?"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300":l.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"]])},[p(g,{name:l.currentToolStatus.status==="running"?"i-heroicons-cog-6-tooth":l.currentToolStatus.status==="done"?"i-heroicons-check-circle":"i-heroicons-x-circle",class:le(["h-3 w-3",{"animate-spin":l.currentToolStatus.status==="running"}])},null,8,["name","class"]),se(" "+n(c(l.currentToolStatus.name,l.currentToolStatus.displayName)),1)],2),l.currentToolStatus.status==="running"?(o(),i("span",pi,[...d[0]||(d[0]=[e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:0ms]"},null,-1),e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:150ms]"},null,-1),e("span",{class:"h-1.5 w-1.5 animate-bounce rounded-full bg-pink-500 [animation-delay:300ms]"},null,-1)])])):l.currentToolStatus.status==="done"?(o(),i("span",vi,[e("span",null,n(a(s)("ai.chat.thinking.processingResult")),1),d[1]||(d[1]=e("span",{class:"flex gap-1"},[e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:0ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:150ms]"}),e("span",{class:"h-1 w-1 animate-bounce rounded-full bg-gray-400 [animation-delay:300ms]"})],-1))])):z("",!0)]),l.toolsUsed.length>1?(o(),i("div",yi,[e("span",hi,n(a(s)("ai.chat.thinking.called")),1),(o(!0),i(oe,null,ue(l.toolsUsed.slice(0,-1),v=>(o(),i("span",{key:v,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"},[p(g,{name:"i-heroicons-check",class:"h-3 w-3 text-green-500"}),se(" "+n(c(v)),1)]))),128))])):z("",!0)])):(o(),i("div",fi,[e("span",xi,n(a(s)("ai.chat.thinking.analyzing")),1),d[2]||(d[2]=e("span",{class:"flex gap-1"},[e("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:0ms]"}),e("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:150ms]"}),e("span",{class:"h-2 w-2 animate-bounce rounded-full bg-pink-500 [animation-delay:300ms]"})],-1))]))])]))}}}),ki={class:"relative z-20 flex items-center justify-between"},_i={class:"flex items-center gap-1"},wi=["disabled"],$i={class:"max-w-[160px] truncate"},Ci=["title"],Si={class:"w-40 py-1"},Ti={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},Mi=["onClick"],Ii={class:"flex items-center gap-1"},Di=["title"],Li={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"},Ai={class:"h-1.5 w-10 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},qi={class:"text-[10px]"},Ri={class:"space-y-0.5 whitespace-nowrap text-xs"},Pi={key:0},zi=["title","disabled"],Ei={class:"hidden xl:inline"},Bi=["title","disabled"],ji={class:"hidden xl:inline"},Ui=fe({__name:"ChatStatusBar",props:{sessionTokenUsage:{},agentStatus:{},currentAIChatId:{},currentMessages:{},fallbackTitle:{},estimatedContextTokens:{}},setup(l){const{t:s}=ke(),t=Je(),c=dt(),r=l,m=Ct(),u=Ba(),{aiGlobalSettings:d}=at(m),{defaultAssistantConfig:g,isLoading:v}=at(u),y=x(!1),C=h(()=>r.agentStatus?s(`ai.chat.statusBar.agent.phase.${r.agentStatus.phase}`):""),f=h(()=>r.agentStatus?s(`ai.chat.statusBar.agent.phaseShort.${r.agentStatus.phase}`):""),b=h(()=>{if(!r.agentStatus)return"text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-300";switch(r.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 M(B){return Number.isFinite(B)?new Intl.NumberFormat().format(Math.max(0,Math.round(B))):"0"}function R(B){const V=Math.max(0,Math.round(B));return V>=1e6?`${(V/1e6).toFixed(1).replace(/\.0$/,"")}M`:V>=1e3?`${(V/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(V)}const w=h(()=>M(r.sessionTokenUsage.totalTokens)),S=h(()=>R(r.sessionTokenUsage.totalTokens)),T=h(()=>r.sessionTokenUsage.cacheReadTokens>0),D=h(()=>R(r.sessionTokenUsage.cacheReadTokens)),k=h(()=>r.agentStatus?.contextTokens?r.agentStatus.contextTokens:r.estimatedContextTokens&&r.estimatedContextTokens>0?r.estimatedContextTokens:0),$=h(()=>{const B=g.value,V=u.defaultAssistant?.modelId||B?.model;return!B||!V?128e3:(u.getModelById(B.provider,V)||u.findModelAcrossProviders(V))?.contextWindow??128e3}),I=h(()=>k.value<=0||$.value<=0?0:Math.min(100,Math.round(k.value/$.value*100))),q=h(()=>{const B=I.value;return B>=80?"bg-red-500":B>=60?"bg-amber-500":"bg-emerald-500"}),E=h(()=>r.agentStatus?[`${s("ai.chat.statusBar.agent.label")}: ${C.value}`,`${s("ai.chat.statusBar.agent.contextTokens")}: ${M(r.agentStatus.contextTokens)}`,`${s("ai.chat.statusBar.tokenUsageTitle")}: ${w.value}`].join(`
38
+ `):"");function A(){c.openSettings("ai","defaultModel")}const _=x(!1),L=h(()=>jt(r.currentMessages??[])),Y=h(()=>!!r.currentAIChatId||ms(r.currentMessages??[]));function ae(){return{createdAt:s("ai.chat.conversation.export.createdAt"),user:s("ai.chat.conversation.export.user"),assistant:s("ai.chat.conversation.export.assistant")}}function W(B){return B.map(V=>({...V,timestamp:V.timestamp*1e3}))}async function ve(){if(!(_.value||!Y.value)){_.value=!0;try{const B=d.value.exportFormat||"markdown",V=ae();let N=r.fallbackTitle||s("ai.chat.conversation.newChat"),Q=L.value[0]?.timestamp??Date.now(),ce=L.value;if(r.currentAIChatId){const[J,ne]=await Promise.all([Ne().getAIChat(r.currentAIChatId),Ne().getMessages(r.currentAIChatId)]);J&&(N=J.title||N,Q=J.createdAt*1e3);const be=jt(W(ne));be.length>0&&(ce=be)}if(ce.length===0){t.warn(s("ai.chat.conversation.export.noMessages"));return}const de=await ys(N,ce,Q,B,V);if(de.success&&de.filePath){const J=de.filePath.split("/").pop()||de.filePath,ne=de.filePath;t.add({title:s("common.exportSuccess"),description:J,color:"primary",actions:[{label:s("common.openFolder"),onClick:()=>{ra().showInFolder(ne)}}]})}else t.fail(s("common.exportFailed"),{description:de.error})}catch(B){console.error("导出对话失败:",B),t.fail(s("common.exportFailed"),{description:String(B)})}finally{_.value=!1}}}async function he(){if(!y.value){y.value=!0;try{const B=await Ne().showAiLogFile();B?.success||t.fail(s("ai.chat.statusBar.log.openFailed"),{description:B?.error||s("ai.chat.statusBar.log.openFailedDesc")})}catch(B){console.error("打开 AI 日志失败:",B),t.fail(s("ai.chat.statusBar.log.openFailed"),{description:String(B)})}finally{y.value=!1}}}const X=x(!1),F=h(()=>{const B=g.value,V=u.defaultAssistant?.modelId||B?.model;return!B?.provider||!V?[]:ls(B.provider,V)}),te=h(()=>F.value.length>0),ye=h(()=>{const B=u.defaultAssistant;return!B?.configId||!B?.modelId?"default":m.getThinkingLevel(B.configId,B.modelId)??"default"});function xe(B){const V=u.defaultAssistant;!V?.configId||!V?.modelId||(m.setThinkingLevel(V.configId,V.modelId,B),X.value=!1)}const G=h(()=>s(`ai.chat.statusBar.thinking.level.${ye.value}`));return(B,V)=>{const N=_e,Q=ua,ce=vt;return o(),i("div",ki,[e("div",_i,[e("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:a(v),onClick:A},[p(N,{name:"i-heroicons-cpu-chip",class:"h-3.5 w-3.5"}),e("span",$i,n(a(u).defaultAssistant?.modelId?a(u).getModelById(a(g)?.provider??"",a(u).defaultAssistant.modelId)?.name||a(u).defaultAssistant.modelId:a(s)("ai.chat.statusBar.model.notConfigured")),1)],8,wi),te.value?(o(),K(Q,{key:0,open:X.value,"onUpdate:open":V[0]||(V[0]=de=>X.value=de),ui:{content:"z-[80] p-0"}},{content:U(()=>[e("div",Si,[e("div",Ti,n(a(s)("ai.chat.statusBar.thinking.title")),1),(o(!0),i(oe,null,ue(F.value,de=>(o(),i("button",{key:de,class:le(["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",ye.value===de?"text-primary-600 dark:text-primary-400":"text-gray-700 dark:text-gray-300"]),onClick:J=>xe(de)},[p(N,{name:ye.value===de?"i-heroicons-check-circle-solid":"i-heroicons-light-bulb",class:le(["h-4 w-4 shrink-0",ye.value===de?"text-primary-500":"text-gray-400"])},null,8,["name","class"]),e("span",null,n(a(s)(`ai.chat.statusBar.thinking.level.${de}`)),1)],10,Mi))),128))])]),default:U(()=>[e("button",{class:le(["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",ye.value==="default"||ye.value==="off"?"text-gray-400 dark:text-gray-500":"text-primary-500 dark:text-primary-400"]),title:a(s)("ai.chat.statusBar.thinking.tooltip")},[p(N,{name:"i-heroicons-light-bulb",class:"h-3.5 w-3.5"}),e("span",null,n(G.value),1)],10,Ci)]),_:1},8,["open"])):z("",!0)]),e("div",Ii,[l.agentStatus?(o(),i("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:E.value},[e("span",{class:le(["rounded px-1 py-0.5 text-[10px] font-medium",b.value])},n(f.value),3)],8,Di)):z("",!0),k.value>0?(o(),K(ce,{key:1,ui:{content:"h-auto py-1.5"}},{content:U(()=>[e("div",Ri,[e("div",null,n(a(s)("ai.chat.statusBar.agent.contextTokens"))+": "+n(R(k.value))+" / "+n(R($.value)),1),e("div",null,n(a(s)("ai.chat.statusBar.tokenUsageTitle"))+": "+n(S.value),1),T.value?(o(),i("div",Pi,n(a(s)("ai.chat.statusBar.cacheHit"))+": "+n(D.value),1)):z("",!0)])]),default:U(()=>[e("div",Li,[e("div",Ai,[e("div",{class:le(["h-full rounded-full transition-all duration-300",q.value]),style:Ge({width:`${I.value}%`})},null,6)]),e("span",qi,n(I.value)+"%",1)])]),_:1})):z("",!0),e("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:a(s)("ai.chat.statusBar.export.title"),disabled:_.value||!Y.value,onClick:ve},[p(N,{name:"i-heroicons-arrow-down-tray",class:"h-3.5 w-3.5"}),e("span",Ei,n(a(s)("ai.chat.statusBar.export.label")),1)],8,zi),e("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:a(s)("ai.chat.statusBar.log.title"),disabled:y.value,onClick:he},[p(N,{name:"i-heroicons-document-text",class:"h-3.5 w-3.5"}),e("span",ji,n(a(s)("ai.chat.statusBar.log.label")),1)],8,Bi)])])}}}),Fi={class:"assistant-bar-wrapper flex justify-center"},Vi=["onClick"],Ni={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-lg backdrop-blur-md dark:border-gray-700 dark:bg-page-dark/95"},Oi={class:"custom-scrollbar max-h-60 space-y-0.5 overflow-y-auto"},Hi=["onClick"],Wi={class:"truncate font-medium"},kt=4,Yi=fe({__name:"AssistantInlineBar",props:{chatType:{},locale:{},selectedId:{}},emits:["select","market"],setup(l,{emit:s}){const t=l,c=s,r=x(!1),m=x(null);function u($){c("select",$),r.value=!1}function d(){R.value.length!==0&&(r.value=!r.value)}function g($){if(!r.value||!m.value)return;const I=$.target;I instanceof Node&&!m.value.contains(I)&&(r.value=!1)}const v=gt(),{filteredAssistants:y,isLoaded:C}=at(v);function f($){return $.startsWith("ja")?"general_ja":$.startsWith("en")?"general_en":"general_cn"}const b=h(()=>{const $=f(t.locale);return[...y.value].sort((I,q)=>I.id===$?-1:q.id===$?1:0)}),M=h(()=>{const $=b.value;if($.length<=kt)return $;const I=$.findIndex(q=>q.id===t.selectedId);if(I!==-1&&I>=kt-1){const q=$.slice(0,kt-1),E=$[I];return[...q,E]}return $.slice(0,kt)}),R=h(()=>{const $=new Set(M.value.map(I=>I.id));return b.value.filter(I=>!$.has(I.id))});pe(()=>[t.chatType,t.locale],([$,I])=>{v.setFilterContext($,I)},{immediate:!0});const w=x([]),S=x(null);let T=null;const D=x({width:"0px",transform:"translateX(0px)",opacity:0}),k=async()=>{await Ve();const $=M.value.findIndex(I=>I.id===t.selectedId);if($!==-1&&w.value[$]){const I=w.value[$];D.value={width:`${I.offsetWidth+6}px`,transform:`translateX(${I.offsetLeft-3}px)`,opacity:1}}else D.value.opacity=0};return pe(()=>[t.selectedId,M.value],()=>{k()},{deep:!0}),ze(async()=>{C.value||await v.loadAssistants(),k(),document.addEventListener("mousedown",g),typeof ResizeObserver<"u"&&S.value&&(T=new ResizeObserver(()=>{k()}),T.observe(S.value))}),lt(()=>{document.removeEventListener("mousedown",g),T&&T.disconnect()}),($,I)=>{const q=_e;return o(),i("div",Fi,[e("div",{ref_key:"containerRef",ref:S,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"},[e("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:Ge(D.value)},null,4),(o(!0),i(oe,null,ue(M.value,(E,A)=>(o(),i("button",{key:E.id,ref_for:!0,ref:_=>{_&&(w.value[A]=_)},class:le(["relative z-10 flex h-[32px] items-center justify-center whitespace-nowrap rounded-full px-4 text-[13px] font-medium transition-colors duration-200",[l.selectedId===E.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:_=>c("select",E.id)},n(E.name),11,Vi))),128)),R.value.length>0?(o(),i("div",{key:0,ref_key:"overflowMenuRef",ref:m,class:"relative z-20"},[e("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},[p(q,{name:"i-heroicons-ellipsis-horizontal",class:"h-5 w-5"})]),r.value?(o(),i("div",Ni,[e("div",Oi,[I[1]||(I[1]=e("p",{class:"px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"}," 更多助手 ",-1)),(o(!0),i(oe,null,ue(R.value,E=>(o(),i("button",{key:E.id,type:"button",class:le(["flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",[l.selectedId===E.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:A=>u(E.id)},[e("span",Wi,n(E.name),1),l.selectedId===E.id?(o(),K(q,{key:0,name:"i-heroicons-check",class:"h-4 w-4 shrink-0"})):z("",!0)],10,Hi))),128))])])):z("",!0)],512)):z("",!0),e("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:I[0]||(I[0]=E=>c("market"))},[p(q,{name:"i-heroicons-plus",class:"h-[18px] w-[18px]"})])],512)])}}}),Ki=rt(Yi,[["__scopeId","data-v-61e036f4"]]),Qi={class:"p-6"},Gi={class:"mb-4 flex items-start justify-between gap-3"},Ji={class:"min-w-0"},Xi={class:"text-lg font-semibold text-gray-900 dark:text-white"},Zi={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},ec={key:0,class:"flex items-center justify-center py-12"},tc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},ac={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"},sc={class:"max-h-[500px] overflow-y-auto pr-1"},oc={class:"space-y-5"},nc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},rc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},lc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},ic={class:"flex flex-wrap gap-2"},cc=["disabled","onClick"],dc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},uc={class:"flex flex-wrap gap-2"},mc=["disabled","onClick"],gc={class:"mt-1 text-[10px] text-gray-400"},pc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},vc={class:"space-y-2"},yc={key:0,class:"flex items-center gap-2"},hc={class:"space-y-5"},fc={class:"mb-1 text-sm font-medium text-gray-700 dark:text-gray-300"},xc={class:"mb-2.5 text-[10px] text-gray-400"},bc={class:"grid grid-cols-2 gap-1.5"},kc={class:"min-w-0"},_c={class:"truncate text-xs font-medium text-gray-600 dark:text-gray-400"},wc={class:"truncate text-[10px] text-gray-400 dark:text-gray-500"},$c={class:"mb-1 flex items-center justify-between"},Cc={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Sc={key:0,class:"flex gap-2"},Tc={class:"mb-2.5 text-[10px] text-gray-400"},Mc={class:"grid grid-cols-2 gap-1.5"},Ic=["checked","disabled","onChange"],Dc={class:"min-w-0"},Lc={class:"truncate text-xs font-medium text-gray-800 dark:text-gray-200"},Ac={class:"truncate text-[10px] text-gray-500 dark:text-gray-400"},qc={class:"mt-6 flex items-center justify-between"},Rc={class:"flex gap-2"},Pc=fe({__name:"AssistantConfigModal",props:{open:{type:Boolean},assistantId:{},readonly:{type:Boolean},scrollToSection:{}},emits:["update:open","saved","created"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s,m=Je(),u=gt(),d=x(!1),g=x(!1),v=x(null),y=x(!1),C=x("basic"),f=h(()=>[{value:"",label:t("ai.assistant.config.chatTypeAll")},{value:"group",label:t("ai.assistant.config.chatTypeGroup")},{value:"private",label:t("ai.assistant.config.chatTypePrivate")}]),b=[{value:"zh",label:"简体中文"},{value:"en",label:"English"},{value:"ja",label:"日本語"}],M=h(()=>u.builtinToolCatalog.filter(X=>X.category==="core").map(X=>({name:X.name,description:t(`ai.assistant.builtinToolDesc.${X.name}`)}))),R=h(()=>u.builtinToolCatalog.filter(X=>X.category==="analysis").map(X=>({name:X.name,description:t(`ai.assistant.builtinToolDesc.${X.name}`)}))),w=x({name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]}),S=x(""),T=x(null),D=h(()=>w.value.allowedBuiltinTools.length);ze(async()=>{u.builtinToolCatalog.length===0&&await u.loadBuiltinToolCatalog()}),pe(()=>[c.open,c.assistantId],async([X,F])=>{X&&(C.value="basic",F?(y.value=!1,await $(F)):c.readonly||(y.value=!0,k()),c.scrollToSection==="presetQuestions"&&(await Ve(),setTimeout(()=>{T.value?.scrollIntoView({behavior:"smooth",block:"center"})},100)))},{immediate:!0});function k(){v.value={id:"",name:"",systemPrompt:"",presetQuestions:[],allowedBuiltinTools:[],applicableChatTypes:[],supportedLocales:[]},w.value={name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]},d.value=!1}async function $(X){d.value=!0;try{v.value=await u.getAssistantConfig(X),v.value&&(w.value={name:v.value.name,systemPrompt:v.value.systemPrompt,presetQuestions:[...v.value.presetQuestions],applicableChatType:v.value.applicableChatTypes?.[0]||"",supportedLocales:[...v.value.supportedLocales||[]],allowedBuiltinTools:[...v.value.allowedBuiltinTools||[]]})}catch(F){console.error("[AssistantConfigModal] Failed to load config:",F),m.fail(t("ai.assistant.toast.loadFailed"),{description:String(F)})}finally{d.value=!1}}async function I(){g.value=!0;try{const X={name:w.value.name,systemPrompt:w.value.systemPrompt,presetQuestions:[...w.value.presetQuestions],applicableChatTypes:w.value.applicableChatType?[w.value.applicableChatType]:[],supportedLocales:[...w.value.supportedLocales],allowedBuiltinTools:[...w.value.allowedBuiltinTools]};if(y.value){const F=await u.createAssistant(X);F.success?(m.success(t("ai.assistant.toast.createSuccess")),r("created",F.id),he()):m.fail(t("ai.assistant.toast.createFailed"),{description:F.error||t("ai.assistant.toast.unknownError")})}else{if(!c.assistantId)return;const F=await u.updateAssistant(c.assistantId,X);F.success?(m.success(t("ai.assistant.toast.saveSuccess")),r("saved"),he()):m.fail(t("ai.assistant.toast.saveFailed"),{description:F.error||t("ai.assistant.toast.unknownError")})}}catch(X){console.error("[AssistantConfigModal] Save failed:",X),m.fail(t("ai.assistant.toast.saveFailed"),{description:String(X)})}finally{g.value=!1}}async function q(){if(!(!c.assistantId||!v.value?.builtinId)){g.value=!0;try{const X=await u.resetAssistant(c.assistantId);X.success?(m.success(t("ai.assistant.toast.resetSuccess")),await $(c.assistantId),r("saved")):m.fail(t("ai.assistant.toast.resetFailed"),{description:X.error||t("ai.assistant.toast.unknownError")})}catch(X){m.fail(t("ai.assistant.toast.resetFailed"),{description:String(X)})}finally{g.value=!1}}}function E(){const X=S.value.trim();X&&!w.value.presetQuestions.includes(X)&&(w.value.presetQuestions.push(X),S.value="")}function A(X){w.value.presetQuestions.splice(X,1)}function _(X){const F=w.value.allowedBuiltinTools.indexOf(X);F>=0?w.value.allowedBuiltinTools.splice(F,1):w.value.allowedBuiltinTools.push(X)}function L(X){return w.value.allowedBuiltinTools.includes(X)}function Y(){w.value.allowedBuiltinTools=R.value.map(X=>X.name)}function ae(){w.value.allowedBuiltinTools=[]}function W(X){w.value.applicableChatType=X}function ve(X){const F=w.value.supportedLocales.indexOf(X);F>=0?w.value.supportedLocales.splice(F,1):w.value.supportedLocales.push(X)}function he(){r("update:open",!1)}return(X,F)=>{const te=Re,ye=_e,xe=yt,G=Ya,B=He;return o(),K(B,{open:l.open,ui:{content:"sm:max-w-2xl z-100"},"onUpdate:open":F[5]||(F[5]=V=>r("update:open",V))},{content:U(()=>[e("div",Qi,[e("div",Gi,[e("div",Ji,[e("h2",Xi,n(l.readonly?a(t)("ai.assistant.config.viewTitle"):y.value?a(t)("ai.assistant.config.createTitle"):a(t)("ai.assistant.config.editTitle")),1),l.readonly?z("",!0):(o(),i("p",Zi,n(a(t)("ai.assistant.config.betaWarning")),1))]),p(te,{icon:"i-heroicons-x-mark",variant:"ghost",size:"sm",class:"shrink-0",onClick:he})]),d.value?(o(),i("div",ec,[p(ye,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):v.value?(o(),i(oe,{key:1},[e("div",tc,[e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",C.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:F[0]||(F[0]=V=>C.value="basic")},n(a(t)("ai.assistant.config.tabs.basic")),3),e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",C.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:F[1]||(F[1]=V=>C.value="tools")},[se(n(a(t)("ai.assistant.config.tabs.tools"))+" ",1),D.value>0?(o(),i("span",ac,n(D.value),1)):z("",!0)],2)]),e("div",sc,[Oe(e("div",oc,[e("div",null,[e("label",nc,n(a(t)("ai.assistant.config.name")),1),p(xe,{modelValue:w.value.name,"onUpdate:modelValue":F[2]||(F[2]=V=>w.value.name=V),class:"w-full",disabled:l.readonly},null,8,["modelValue","disabled"])]),e("div",null,[e("label",rc,n(a(t)("ai.assistant.config.systemPrompt")),1),p(G,{modelValue:w.value.systemPrompt,"onUpdate:modelValue":F[3]||(F[3]=V=>w.value.systemPrompt=V),rows:5,autoresize:"",class:"w-full font-mono text-sm",disabled:l.readonly},null,8,["modelValue","disabled"])]),e("div",null,[e("label",lc,n(a(t)("ai.assistant.config.chatType")),1),e("div",ic,[(o(!0),i(oe,null,ue(f.value,V=>(o(),i("button",{key:V.value,type:"button",class:le(["rounded-lg border px-3 py-1.5 text-xs transition-colors",w.value.applicableChatType===V.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:l.readonly,onClick:N=>W(V.value)},n(V.label),11,cc))),128))])]),e("div",null,[e("label",dc,n(a(t)("ai.assistant.config.locale")),1),e("div",uc,[(o(),i(oe,null,ue(b,V=>e("button",{key:V.value,type:"button",class:le(["rounded-lg border px-3 py-1.5 text-xs transition-colors",w.value.supportedLocales.includes(V.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:l.readonly,onClick:N=>ve(V.value)},n(V.label),11,mc)),64))]),e("p",gc,n(a(t)("ai.assistant.config.localeHint")),1)]),e("div",{ref_key:"presetQuestionsRef",ref:T},[e("label",pc,n(a(t)("ai.assistant.config.presetQuestions")),1),e("div",vc,[(o(!0),i(oe,null,ue(w.value.presetQuestions,(V,N)=>(o(),i("div",{key:N,class:"flex items-center gap-2"},[p(xe,{modelValue:w.value.presetQuestions[N],"onUpdate:modelValue":Q=>w.value.presetQuestions[N]=Q,class:"min-w-0 flex-1",size:"sm",disabled:l.readonly},null,8,["modelValue","onUpdate:modelValue","disabled"]),l.readonly?z("",!0):(o(),K(te,{key:0,color:"error",variant:"ghost",icon:"i-heroicons-trash",size:"xs",class:"shrink-0",onClick:Q=>A(N)},null,8,["onClick"]))]))),128)),l.readonly?z("",!0):(o(),i("div",yc,[p(xe,{modelValue:S.value,"onUpdate:modelValue":F[4]||(F[4]=V=>S.value=V),placeholder:a(t)("ai.assistant.config.addQuestion"),class:"min-w-0 flex-1",size:"sm",onKeyup:Xe(E,["enter"])},null,8,["modelValue","placeholder"]),p(te,{color:"primary",variant:"soft",icon:"i-heroicons-plus",size:"xs",class:"shrink-0",onClick:E})]))])],512)],512),[[ot,C.value==="basic"]]),Oe(e("div",hc,[e("div",null,[e("h3",fc,n(a(t)("ai.assistant.config.coreTools")),1),e("p",xc,n(a(t)("ai.assistant.config.coreToolsHint")),1),e("div",bc,[(o(!0),i(oe,null,ue(M.value,V=>(o(),i("label",{key:V.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"},[F[6]||(F[6]=e("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)),e("div",kc,[e("div",_c,n(V.name),1),e("div",wc,n(V.description),1)])]))),128))])]),e("div",null,[e("div",$c,[e("h3",Cc,n(a(t)("ai.assistant.config.analysisTools")),1),l.readonly?z("",!0):(o(),i("div",Sc,[e("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:Y},n(a(t)("ai.assistant.config.selectAll")),1),F[7]||(F[7]=e("span",{class:"text-[10px] text-gray-300 dark:text-gray-600"},"|",-1)),e("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:ae},n(a(t)("ai.assistant.config.deselectAll")),1)]))]),e("p",Tc,n(a(t)("ai.assistant.config.analysisToolsHint")),1),e("div",Mc,[(o(!0),i(oe,null,ue(R.value,V=>(o(),i("label",{key:V.name,class:le(["flex cursor-pointer items-start gap-2 rounded-md border px-2.5 py-2 transition-colors",L(V.name)?"border-primary-200 bg-primary-50/50 dark:border-primary-800 dark:bg-primary-950/20":"border-gray-200 dark:border-gray-700"])},[e("input",{type:"checkbox",checked:L(V.name),disabled:l.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:N=>_(V.name)},null,40,Ic),e("div",Dc,[e("div",Lc,n(V.name),1),e("div",Ac,n(V.description),1)])],2))),128))])])],512),[[ot,C.value==="tools"]])]),e("div",qc,[e("div",null,[!l.readonly&&!y.value&&v.value?.builtinId?(o(),K(te,{key:0,variant:"outline",color:"warning",loading:g.value,onClick:q},{default:U(()=>[se(n(a(t)("ai.assistant.config.resetDefault")),1)]),_:1},8,["loading"])):z("",!0)]),e("div",Rc,[p(te,{variant:"ghost",onClick:he},{default:U(()=>[se(n(l.readonly?a(t)("common.close"):a(t)("common.cancel")),1)]),_:1}),l.readonly?z("",!0):(o(),K(te,{key:0,color:"primary",loading:g.value,onClick:I},{default:U(()=>[se(n(y.value?a(t)("ai.assistant.config.create"):a(t)("common.save")),1)]),_:1},8,["loading"]))])])],64)):z("",!0)])]),_:1},8,["open"])}}}),zc={class:"p-6"},Ec={class:"mb-4 flex items-center justify-between"},Bc={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},jc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Uc={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"},Fc={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Vc={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Nc={class:"min-w-0 flex-1"},Oc={class:"flex items-center gap-2"},Hc={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Wc={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"},Yc={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"},Kc={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Qc={class:"flex shrink-0 items-center gap-1.5"},Gc=["title","onClick"],Jc=["title","onClick"],Xc=["title","onClick"],Zc={key:0,class:"py-12 text-center text-sm text-gray-400"},ed={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},td={key:0,class:"py-12 text-center text-sm text-gray-400"},ad={key:1,class:"py-12 text-center"},sd={class:"text-sm text-gray-500 dark:text-gray-400"},od={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},nd={class:"min-w-0 flex-1"},rd={class:"flex items-center gap-2"},ld={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},id={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"},cd={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"},dd={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},ud={class:"flex shrink-0 items-center gap-2"},md=["disabled","onClick"],gd={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},pd=["disabled","onClick"],vd=["title","onClick"],yd={key:3,class:"py-12 text-center text-sm text-gray-400"},hd=fe({__name:"AssistantMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","view-config","create"],setup(l,{emit:s}){const{t,locale:c}=ke(),r=Je(),m=l,u=s,d=gt(),{assistants:g,cloudCatalogWithStatus:v,cloudLoading:y,cloudError:C}=at(d),f=x("local"),b=h(()=>{const _=c.value;return[...g.value].filter(L=>!L.supportedLocales?.length||L.supportedLocales.some(Y=>_.startsWith(Y))).sort((L,Y)=>L.name.localeCompare(Y.name))}),M=h(()=>[...v.value].sort((_,L)=>_.name.localeCompare(L.name))),R=x(new Set);pe(()=>[m.open,f.value],([_,L])=>{_&&L==="market"&&d.fetchCloudCatalog(c.value)},{immediate:!0});function w(_){return _==="general_cn"||_==="general_en"||_==="general_ja"}function S(_){u("configure",_)}async function T(_){w(_)||await d.deleteAssistant(_)}async function D(_){await d.duplicateAssistant(_)}function k(){u("create")}async function $(_){if(!R.value.has(_.id)){R.value=new Set([...R.value,_.id]);try{const L=await d.importFromCloud(_);L.success?r.success(t("ai.assistant.market.importSuccess")):r.fail(t("ai.assistant.market.importFailed"),{description:L.error})}finally{const L=new Set(R.value);L.delete(_.id),R.value=L}}}async function I(_){if(!R.value.has(_.id)){R.value=new Set([...R.value,_.id]);try{const L=await d.deleteAssistant(_.id);if(!L.success){r.fail(t("ai.assistant.market.importFailed"),{description:L.error});return}const Y=await d.importFromCloud(_);Y.success?r.success(t("ai.assistant.market.importSuccess")):r.fail(t("ai.assistant.market.importFailed"),{description:Y.error})}finally{const L=new Set(R.value);L.delete(_.id),R.value=L}}}function q(_){u("view-config",_)}function E(){d.fetchCloudCatalog(c.value)}function A(_){return _?.length?_.map(Y=>t(Y==="group"?"ai.assistant.config.chatTypeGroup":"ai.assistant.config.chatTypePrivate")).join(" / "):null}return(_,L)=>{const Y=_e,ae=He;return o(),K(ae,{open:l.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":L[3]||(L[3]=W=>u("update:open",W))},{content:U(()=>[e("div",zc,[e("div",Ec,[e("h2",Bc,n(a(t)("ai.assistant.market.title")),1),e("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]=W=>u("update:open",!1))},[p(Y,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),e("div",jc,[e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",f.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]=W=>f.value="local")},[se(n(a(t)("ai.assistant.market.tabs.local"))+" ",1),b.value.length?(o(),i("span",Uc,n(b.value.length),1)):z("",!0)],2),e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",f.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]=W=>f.value="market")},n(a(t)("ai.assistant.market.tabs.market")),3)]),Oe(e("div",null,[e("p",Fc,n(a(t)("ai.assistant.market.localHint")),1),e("div",Vc,[(o(!0),i(oe,null,ue(b.value,W=>(o(),i("div",{key:W.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"},[e("div",Nc,[e("div",Oc,[e("h3",Hc,n(W.name),1),A(W.applicableChatTypes)?(o(),i("span",Wc,n(A(W.applicableChatTypes)),1)):z("",!0),w(W.id)?(o(),i("span",Yc,n(a(t)("ai.assistant.market.default")),1)):z("",!0)]),e("p",Kc,n(W.systemPrompt),1)]),e("div",Qc,[e("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:a(t)("common.edit"),onClick:Ue(ve=>S(W.id),["stop"])},[p(Y,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,Gc),e("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:a(t)("ai.assistant.market.duplicate"),onClick:Ue(ve=>D(W.id),["stop"])},[p(Y,{name:"i-heroicons-document-duplicate",class:"h-4 w-4"})],8,Jc),w(W.id)?z("",!0):(o(),i("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:a(t)("common.delete"),onClick:Ue(ve=>T(W.id),["stop"])},[p(Y,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,Xc))])]))),128))]),e("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:k},[p(Y,{name:"i-heroicons-plus",class:"h-4 w-4"}),se(" "+n(a(t)("ai.assistant.market.addAssistant")),1)]),b.value.length===0?(o(),i("div",Zc,n(a(t)("ai.assistant.market.noLocal")),1)):z("",!0)],512),[[ot,f.value==="local"]]),Oe(e("div",null,[e("p",ed,n(a(t)("ai.assistant.market.marketHint")),1),a(y)?(o(),i("div",td,n(a(t)("ai.assistant.market.loading")),1)):a(C)?(o(),i("div",ad,[e("p",sd,n(a(t)("ai.assistant.market.loadFailed")),1),e("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:E},n(a(t)("ai.assistant.market.retry")),1)])):(o(),i("div",od,[(o(!0),i(oe,null,ue(M.value,W=>(o(),i("div",{key:W.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"},[e("div",nd,[e("div",rd,[e("h3",ld,n(W.name),1),A(W.applicableChatTypes)?(o(),i("span",id,n(A(W.applicableChatTypes)),1)):z("",!0),w(W.id)?(o(),i("span",cd,n(a(t)("ai.assistant.market.default")),1)):z("",!0)]),e("p",dd,n(W.description),1)]),e("div",ud,[W.imported?(o(),i(oe,{key:1},[e("span",gd,n(a(t)("ai.assistant.market.imported")),1),e("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:R.value.has(W.id),onClick:ve=>I(W)},n(R.value.has(W.id)?a(t)("ai.assistant.market.importing"):a(t)("ai.assistant.market.reimport")),9,pd)],64)):(o(),i("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:R.value.has(W.id),onClick:ve=>$(W)},n(R.value.has(W.id)?a(t)("ai.assistant.market.importing"):a(t)("ai.assistant.market.import")),9,md)),W.imported?(o(),i("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:a(t)("ai.assistant.market.viewConfig"),onClick:Ue(ve=>q(W.id),["stop"])},[p(Y,{name:"i-heroicons-eye",class:"h-4 w-4"})],8,vd)):z("",!0)])]))),128))])),!a(y)&&!a(C)&&M.value.length===0?(o(),i("div",yd,n(a(t)("ai.assistant.market.noCatalog")),1)):z("",!0)],512),[[ot,f.value==="market"]])])]),_:1},8,["open"])}}}),fd={class:"p-6"},xd={class:"mb-4 flex items-center justify-between"},bd={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},kd={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},_d={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"},wd={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},$d={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Cd={class:"min-w-0 flex-1"},Sd={class:"flex items-center gap-2"},Td={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Md={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"},Id={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Dd={key:0,class:"mt-1.5 flex flex-wrap gap-1"},Ld={class:"flex shrink-0 items-center gap-1.5"},Ad=["title","onClick"],qd=["title","onClick"],Rd={key:0,class:"py-12 text-center text-sm text-gray-400"},Pd={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},zd={key:0,class:"py-12 text-center text-sm text-gray-400"},Ed={key:1,class:"py-12 text-center"},Bd={class:"text-sm text-gray-500 dark:text-gray-400"},jd={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Ud={class:"min-w-0 flex-1"},Fd={class:"flex items-center gap-2"},Vd={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Nd={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"},Od={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Hd={key:0,class:"mt-1.5 flex flex-wrap gap-1"},Wd={class:"flex shrink-0 items-center gap-2"},Yd=["disabled","onClick"],Kd={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},Qd=["disabled","onClick"],Gd={key:3,class:"py-12 text-center text-sm text-gray-400"},Jd=fe({__name:"SkillMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","create"],setup(l,{emit:s}){const{t,locale:c}=ke(),r=Je(),m=l,u=s,d=ut(),{skills:g,cloudCatalogWithStatus:v,cloudLoading:y,cloudError:C}=at(d),f=x("local"),b=x(new Set);ze(()=>{d.setFilterContext("group",c.value)}),pe(()=>[m.open,f.value],([q,E])=>{q&&E==="market"&&(d.setFilterContext("group",c.value),d.fetchCloudCatalog())},{immediate:!0});const M=h(()=>[...g.value].sort((q,E)=>q.name.localeCompare(E.name))),R=h(()=>[...v.value].sort((q,E)=>q.name.localeCompare(E.name)));function w(q){return t(q==="group"?"ai.skill.config.chatScopeGroup":q==="private"?"ai.skill.config.chatScopePrivate":"ai.skill.config.chatScopeAll")}function S(q){u("configure",q)}async function T(q){await d.deleteSkill(q)}function D(){u("create")}async function k(q){if(!b.value.has(q.id)){b.value=new Set([...b.value,q.id]);try{const E=await d.importFromCloud(q);E.success?r.success(t("ai.skill.market.importSuccess")):r.fail(t("ai.skill.market.importFailed"),{description:E.error})}finally{const E=new Set(b.value);E.delete(q.id),b.value=E}}}async function $(q){if(!b.value.has(q.id)){b.value=new Set([...b.value,q.id]);try{const E=await d.deleteSkill(q.id);if(!E.success){r.fail(t("ai.skill.market.importFailed"),{description:E.error});return}const A=await d.importFromCloud(q);A.success?r.success(t("ai.skill.market.importSuccess")):r.fail(t("ai.skill.market.importFailed"),{description:A.error})}finally{const E=new Set(b.value);E.delete(q.id),b.value=E}}}function I(){d.fetchCloudCatalog()}return(q,E)=>{const A=_e,_=He;return o(),K(_,{open:l.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":E[3]||(E[3]=L=>u("update:open",L))},{content:U(()=>[e("div",fd,[e("div",xd,[e("h2",bd,n(a(t)("ai.skill.market.title")),1),e("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:E[0]||(E[0]=L=>u("update:open",!1))},[p(A,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),e("div",kd,[e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",f.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:E[1]||(E[1]=L=>f.value="local")},[se(n(a(t)("ai.skill.market.tabs.local"))+" ",1),a(g).length?(o(),i("span",_d,n(a(g).length),1)):z("",!0)],2),e("button",{class:le(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",f.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:E[2]||(E[2]=L=>f.value="market")},n(a(t)("ai.skill.market.tabs.market")),3)]),Oe(e("div",null,[e("p",wd,n(a(t)("ai.skill.market.localHint")),1),e("div",$d,[(o(!0),i(oe,null,ue(M.value,L=>(o(),i("div",{key:L.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"},[e("div",Cd,[e("div",Sd,[e("h3",Td,n(L.name),1),e("span",Md,n(w(L.chatScope)),1)]),e("p",Id,n(L.description),1),L.tags.length?(o(),i("div",Dd,[(o(!0),i(oe,null,ue(L.tags,Y=>(o(),i("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"},n(Y),1))),128))])):z("",!0)]),e("div",Ld,[e("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:a(t)("common.edit"),onClick:Ue(Y=>S(L.id),["stop"])},[p(A,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,Ad),e("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:a(t)("common.delete"),onClick:Ue(Y=>T(L.id),["stop"])},[p(A,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,qd)])]))),128))]),e("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:D},[p(A,{name:"i-heroicons-plus",class:"h-4 w-4"}),se(" "+n(a(t)("ai.skill.market.addSkill")),1)]),M.value.length===0?(o(),i("div",Rd,n(a(t)("ai.skill.market.noLocal")),1)):z("",!0)],512),[[ot,f.value==="local"]]),Oe(e("div",null,[e("p",Pd,n(a(t)("ai.skill.market.marketHint")),1),a(y)?(o(),i("div",zd,n(a(t)("ai.skill.market.loading")),1)):a(C)?(o(),i("div",Ed,[e("p",Bd,n(a(t)("ai.skill.market.loadFailed")),1),e("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:I},n(a(t)("ai.skill.market.retry")),1)])):(o(),i("div",jd,[(o(!0),i(oe,null,ue(R.value,L=>(o(),i("div",{key:L.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"},[e("div",Ud,[e("div",Fd,[e("h3",Vd,n(L.name),1),e("span",Nd,n(w(L.chatScope)),1)]),e("p",Od,n(L.description),1),L.tags?.length?(o(),i("div",Hd,[(o(!0),i(oe,null,ue(L.tags,Y=>(o(),i("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"},n(Y),1))),128))])):z("",!0)]),e("div",Wd,[L.imported?(o(),i(oe,{key:1},[e("span",Kd,n(a(t)("ai.skill.market.imported")),1),e("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:b.value.has(L.id),onClick:Y=>$(L)},n(b.value.has(L.id)?a(t)("ai.skill.market.importing"):a(t)("ai.skill.market.reimport")),9,Qd)],64)):(o(),i("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:b.value.has(L.id),onClick:Y=>k(L)},n(b.value.has(L.id)?a(t)("ai.skill.market.importing"):a(t)("ai.skill.market.import")),9,Yd))])]))),128))])),!a(y)&&!a(C)&&R.value.length===0?(o(),i("div",Gd,n(a(t)("ai.skill.market.noCatalog")),1)):z("",!0)],512),[[ot,f.value==="market"]])])]),_:1},8,["open"])}}}),Xd={class:"p-6"},Zd={class:"mb-4 flex items-center justify-between"},eu={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},tu={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},au={key:0,class:"flex h-64 items-center justify-center text-gray-400"},su={class:"mt-4 flex justify-end gap-2"},ou=["disabled"],nu=`---
39
+ name: ""
40
+ description: ""
41
+ tags: []
42
+ chatScope: all
43
+ tools: []
44
+ ---
45
+
46
+ `,ru=fe({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s,m=ut(),u=x(""),d=x(!1),g=x(!1),v=x(!1);pe(()=>[c.open,c.skillId],async([C,f])=>{if(C){if(!f){v.value=!0,u.value=nu;return}v.value=!1,d.value=!0;try{const b=await m.getSkillConfig(f);if(b){const M=["---",`name: "${b.name}"`,`description: "${b.description}"`,`tags: [${b.tags.map(R=>`"${R}"`).join(", ")}]`,`chatScope: ${b.chatScope}`,b.tools.length?`tools: [${b.tools.map(R=>`"${R}"`).join(", ")}]`:"tools: []",b.builtinId?`builtinId: ${b.builtinId}`:"","---","",b.prompt].filter(Boolean).join(`
47
+ `);u.value=M}}finally{d.value=!1}}},{immediate:!0});async function y(){if(u.value.trim()){g.value=!0;try{if(v.value){const C=await m.createSkill(u.value);C.success&&C.id&&(r("created",C.id),r("update:open",!1))}else c.skillId&&(await m.updateSkill(c.skillId,u.value)).success&&(r("saved"),r("update:open",!1))}finally{g.value=!1}}}return(C,f)=>{const b=_e,M=He;return o(),K(M,{open:l.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":f[3]||(f[3]=R=>r("update:open",R))},{content:U(()=>[e("div",Xd,[e("div",Zd,[e("h2",eu,n(v.value?a(t)("ai.skill.config.createTitle"):a(t)("ai.skill.config.editTitle")),1),e("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:f[0]||(f[0]=R=>r("update:open",!1))},[p(b,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),e("p",tu,n(a(t)("ai.skill.config.rawEditorHint")),1),d.value?(o(),i("div",au,[p(b,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):Oe((o(),i("textarea",{key:1,"onUpdate:modelValue":f[1]||(f[1]=R=>u.value=R),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)),[[st,u.value]]),e("div",su,[e("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:f[2]||(f[2]=R=>r("update:open",!1))},n(a(t)("common.cancel")),1),e("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||!u.value.trim(),onClick:y},n(v.value?a(t)("ai.skill.config.create"):a(t)("ai.skill.config.save")),9,ou)])])]),_:1},8,["open"])}}}),lu={key:0,class:"relative"},iu={class:"relative flex flex-nowrap gap-2"},cu=["disabled"],du=["disabled"],uu={class:"inline-flex items-center gap-1"},mu={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},gu={class:"mb-1.5 flex justify-start"},pu={class:"flex flex-wrap gap-2"},vu=["disabled","onClick"],Rt="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",yu=fe({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s,m=x(!1);let u=null;function d(C){m.value=!1,r("select",C)}function g(){c.disabled||c.questions.length===0||(u&&(clearTimeout(u),u=null),m.value=!0)}function v(){u=setTimeout(()=>{m.value=!1},150)}function y(){m.value=!1,r("editQuestions")}return Tt(()=>{u&&clearTimeout(u)}),(C,f)=>{const b=_e;return l.leadingActionLabel||l.questions.length>0?(o(),i("div",lu,[e("div",iu,[l.leadingActionLabel?(o(),i("button",{key:0,class:le(Rt),disabled:c.disabled,onClick:f[0]||(f[0]=M=>r("leadingAction"))},n(l.leadingActionLabel),9,cu)):z("",!0),l.questions.length>0?(o(),i("div",{key:1,class:"relative shrink-0",onMouseenter:g,onMouseleave:v},[e("button",{class:le([Rt,m.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:c.disabled},[e("span",uu,[p(b,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),se(" "+n(a(t)("ai.chat.input.quickAsk")),1)])],10,du),p(nt,{"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:U(()=>[m.value?(o(),i("div",mu,[e("div",gu,[e("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},[p(b,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),se(" "+n(a(t)("ai.chat.input.editQuickAsk")),1)])]),e("div",pu,[(o(!0),i(oe,null,ue(l.questions,(M,R)=>(o(),i("button",{key:R,class:le(Rt),disabled:c.disabled,onClick:w=>d(M)},n(M),9,vu))),128))])])):z("",!0)]),_:1})],32)):z("",!0)])])):z("",!0)}}}),hu=30;function fu(l,s){const t=x(null),c=x(!0),r=x(!1);function m(v=!1){setTimeout(()=>{t.value&&(v||c.value)&&(t.value.scrollTop=t.value.scrollHeight,c.value=!0,r.value=!1)},100)}function u(v){v.deltaY<0&&s.value&&(c.value=!1,r.value=!0)}function d(){if(!t.value)return;const{scrollTop:v,scrollHeight:y,clientHeight:C}=t.value;y-v-C<hu&&(c.value=!0,r.value=!1)}function g(){m(!0)}return pe(()=>{const v=l.value[l.value.length-1];return[l.value.length,v?.content,v?.contentBlocks?.length]},()=>m()),ze(()=>{t.value&&(t.value.addEventListener("scroll",d),t.value.addEventListener("wheel",u,{passive:!0})),l.value.length>0&&m(!0)}),Tt(()=>{t.value&&(t.value.removeEventListener("scroll",d),t.value.removeEventListener("wheel",u))}),{messagesContainer:t,showScrollToBottom:r,scrollToBottom:m,handleScrollToBottom:g}}function xu(){const l=gt(),s=ut(),t=x(!1),c=x(null),r=x(!1),m=x(!1),u=x(!1),d=x(!1),g=x(null);function v($){c.value=$,r.value=!1,t.value=!0}function y(){m.value=!0}function C($){c.value=$,r.value=!1,t.value=!0}function f($){c.value=$,r.value=!0,t.value=!0}function b(){c.value=null,r.value=!1,t.value=!0}async function M($){await l.loadAssistants(),await l.loadBuiltinCatalog()}async function R(){await l.loadAssistants()}function w(){u.value=!0}function S($){g.value=$,d.value=!0}function T(){g.value=null,d.value=!0}async function D(){await s.loadSkills()}async function k($){await s.loadSkills(),await s.loadBuiltinCatalog()}return{configModalVisible:t,configModalAssistantId:c,configModalReadonly:r,marketModalVisible:m,handleConfigureAssistant:v,handleOpenMarket:y,handleMarketConfigure:C,handleMarketViewConfig:f,handleCreateAssistant:b,handleAssistantCreated:M,handleAssistantConfigSaved:R,skillMarketModalVisible:u,skillConfigModalVisible:d,skillConfigModalSkillId:g,handleOpenSkillMarket:w,handleSkillMarketConfigure:S,handleCreateSkill:T,handleSkillConfigSaved:D,handleSkillCreated:k}}function bu(l){const s=[];let t=null;for(const c of l)c.role==="user"?(t&&s.push({user:t,assistant:null,standalone:null,id:t.id}),t=c):c.role==="assistant"?(s.push({user:t,assistant:c,standalone:null,id:t?.id||c.id}),t=null):(t&&(s.push({user:t,assistant:null,standalone:null,id:t.id}),t=null),s.push({user:null,assistant:null,standalone:c,id:c.id}));return t&&s.push({user:t,assistant:null,standalone:null,id:t.id}),s}const ku={class:"main-content flex h-full overflow-hidden"},_u={class:"flex h-full flex-1 overflow-hidden"},wu={class:"flex h-full flex-1"},$u={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Cu={key:0,class:"flex items-center gap-1.5 px-3 py-1.5"},Su=["disabled"],Tu={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Mu={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},Iu={class:"text-primary-600 dark:text-primary-400"},Du={key:1,class:"relative mb-8 w-full max-w-lg"},Lu={class:"flex w-full justify-center"},Au={key:1,class:"qa-pair space-y-6 pb-4"},qu={key:1,class:"px-4 pb-2"},Ru={class:"mx-auto max-w-3xl"},Pu={class:"px-4 pb-2"},zu={class:"mx-auto max-w-[740px]"},Eu={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"},Bu=fe({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(l,{expose:s}){const{t}=ke(),c=Je(),r=St(),m=gt(),u=ut(),d=l,{messages:g,sourceMessages:v,currentKeywords:y,isLoadingSource:C,isAIThinking:f,currentAIChatId:b,currentToolStatus:M,toolsUsedInCurrentRound:R,sessionTokenUsage:w,agentStatus:S,selectedAssistantId:T,sendMessage:D,editMessageAndRegenerate:k,loadAIChat:$,startNewAIChat:I,loadMoreSourceMessages:q,updateMaxMessages:E,stopGeneration:A,selectAssistantForSession:_}=is(d.sessionId,d.sessionName,d.timeFilter,d.chatType??"group",r.locale),L=fu(g,f),{showScrollToBottom:Y,scrollToBottom:ae,handleScrollToBottom:W}=L,{configModalVisible:ve,configModalAssistantId:he,configModalReadonly:X,marketModalVisible:F,skillMarketModalVisible:te,skillConfigModalVisible:ye,skillConfigModalSkillId:xe,handleConfigureAssistant:G,handleOpenMarket:B,handleMarketConfigure:V,handleMarketViewConfig:N,handleCreateAssistant:Q,handleAssistantCreated:ce,handleAssistantConfigSaved:de,handleOpenSkillMarket:J,handleSkillMarketConfigure:ne,handleCreateSkill:be,handleSkillConfigSaved:ge,handleSkillCreated:we}=xu(),Ie=Ct(),Le=x(0);pe(()=>b.value,async Se=>{if(!Se){Le.value=0;return}try{const Me=await Ne().estimateContextTokens(Se);Me.success&&(Le.value=Me.tokens)}catch{Le.value=0}},{immediate:!0});const Te=h(()=>m.selectedAssistant?.presetQuestions??[]),Pe=h(()=>d.chatType??"group"),Ee=x(!1),je=x(!1),me=x(!0),P=x(void 0),H=x(null),ee=x(null),O=h(()=>bu(g.value));async function j(){me.value=!0;try{je.value=await Wt().hasConfig()}catch(Se){console.error("检查 LLM 配置失败:",Se),je.value=!1}finally{me.value=!1}}async function ie(){await j(),je.value&&await E()}s({refreshConfig:ie});const Z=h(()=>{const Se=m.selectedAssistant;if(!Se)return{name:"",preview:""};const Me=Se.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:Se.name,preview:Me}}),re=h(()=>!!T.value&&g.value.length===0&&!f.value);function Be(){c.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function Ae(){c.warn(t("ai.chat.backgroundTask.blockedAction"))}function We(Se){if(Se!==T.value){if(!_(Se)){Ae();return}u.activateSkill(null),I()}}async function ka(Se){const Me=await D(Se);!Me.success&&Me.reason==="busy"&&Be()}function _a(){const Se=m.selectedAssistant?.id;Se&&(P.value="presetQuestions",G(Se))}function wa(Se){ve.value=Se,Se||(P.value=void 0)}function $a(){ee.value?.openSkillSelector()}function Ca(){ae(!0)}async function Sa(Se){const Me=await D(Se.content,{mentionedMembers:Se.mentionedMembers});if(!Me.success){Me.reason==="busy"&&Be();return}ae(!0),H.value?.refresh()}async function Ta(Se){const Me=await k(Se.messageId,Se.content,{overwriteSubsequent:Se.overwriteSubsequent});if(!Me.success){Me.reason==="busy"&&Be();return}ae(!0),H.value?.refresh()}async function Ma(Se){if(b.value)try{const Me=await Ne().forkAIChat(b.value,Se);await $(Me.id),H.value?.refresh(),ae(!0),c.success(t("ai.chat.fork.success"))}catch(Me){c.fail(t("ai.chat.fork.failed"),{description:String(Me)})}}function Ia(){Ee.value=!Ee.value}async function Da(){await q()}async function La(Se){await $(Se),ae(!0)}function Aa(){if(f.value){Ae();return}I()}function qa(Se){b.value===Se&&I()}function Ra(){A()}return j(),E(),pe(()=>Ie.aiConfigVersion,async()=>{await ie()}),(Se,Me)=>{const Lt=_e,Pa=vt;return o(),i("div",ku,[p(eo,{ref_key:"conversationListRef",ref:H,"session-id":l.sessionId,"active-id":a(b),disabled:a(f),class:"h-full shrink-0",onSelect:La,onCreate:Aa,onDelete:qa},null,8,["session-id","active-id","disabled"]),e("div",_u,[e("div",wu,[e("div",$u,[a(g).length>0||a(f)?(o(),i("div",Cu,[e("button",{class:le(["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":a(f)||!a(m).selectedAssistant?.id}]),disabled:a(f)||!a(m).selectedAssistant?.id,onClick:Me[0]||(Me[0]=Ce=>a(G)(a(m).selectedAssistant.id))},[p(Lt,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),e("span",null,n(a(m).selectedAssistant?.name||a(t)("ai.assistant.fallbackName")),1)],10,Su)])):z("",!0),e("div",{ref:a(L).messagesContainer,class:le(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":a(g).length===0&&!a(f)}])},[e("div",{class:le(["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!":a(g).length===0&&!a(f),"px-4":a(g).length>0||a(f)}])},[a(g).length===0&&!a(f)?(o(),i("div",Tu,[Z.value.name?(o(),i("h2",Mu,[se(n(a(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),e("span",Iu,n(Z.value.name),1),se(" "+n(a(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):z("",!0),re.value&&Z.value.name?(o(),i("div",Du,[e("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:Me[1]||(Me[1]=Ce=>a(G)(a(m).selectedAssistant.id))},[p(Pa,{text:a(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:U(()=>[se(n(Z.value.preview),1)]),_:1},8,["text"])]),e("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:Me[2]||(Me[2]=Ue(Ce=>a(G)(a(m).selectedAssistant.id),["stop"]))},[p(Lt,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):z("",!0),e("div",Lu,[p(Ki,{"chat-type":Pe.value,locale:a(r).locale,"selected-id":a(T),onSelect:We,onMarket:a(B)},null,8,["chat-type","locale","selected-id","onMarket"])])])):z("",!0),(o(!0),i(oe,null,ue(O.value,Ce=>(o(),i(oe,{key:Ce.id},[Ce.standalone?(o(),K(qt,{key:0,role:Ce.standalone.role,content:Ce.standalone.content,timestamp:Ce.standalone.timestamp},null,8,["role","content","timestamp"])):(o(),i("div",Au,[Ce.user&&(Ce.user.role==="user"||Ce.user.content)?(o(),K(qt,{key:0,role:Ce.user.role,"message-id":Ce.user.id,content:Ce.user.content,timestamp:Ce.user.timestamp,"is-streaming":Ce.user.isStreaming,"content-blocks":Ce.user.contentBlocks,editable:!a(f),onEdit:Ta},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):z("",!0),Ce.assistant&&(Ce.assistant.content||Ce.assistant.contentBlocks&&Ce.assistant.contentBlocks.length>0)?(o(),K(qt,{key:1,role:Ce.assistant.role,"message-id":Ce.assistant.id,content:Ce.assistant.content,timestamp:Ce.assistant.timestamp,"is-streaming":Ce.assistant.isStreaming,"content-blocks":Ce.assistant.contentBlocks,"show-capture-button":!Ce.assistant.isStreaming,onFork:Ma},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","show-capture-button"])):z("",!0)]))],64))),128)),a(f)&&!a(g)[a(g).length-1]?.content&&!(a(g)[a(g).length-1]?.contentBlocks?.length??0)?(o(),K(bi,{key:1,"current-tool-status":a(M),"tools-used":a(R),"agent-status":a(S)},null,8,["current-tool-status","tools-used","agent-status"])):z("",!0)],2)],2),p(nt,{name:"fade-up"},{default:U(()=>[a(Y)?(o(),i("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:Me[3]||(Me[3]=(...Ce)=>a(W)&&a(W)(...Ce))},[p(Lt,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),e("span",null,n(a(t)("ai.chat.scrollToBottom")),1)])):z("",!0)]),_:1}),a(g).length===0&&!a(f)?(o(),i("div",qu,[e("div",Ru,[p(yu,{questions:Te.value,"leading-action-label":a(t)("ai.chat.input.useSkill"),onSelect:ka,onLeadingAction:$a,onEditQuestions:_a},null,8,["questions","leading-action-label"])])])):z("",!0),e("div",Pu,[e("div",zu,[p(ri,{ref_key:"chatInputRef",ref:ee,"session-id":l.sessionId,disabled:a(f),status:a(f)?"streaming":"ready","chat-type":Pe.value,onSend:Sa,onStop:Ra,onManageSkills:a(J),onSkillActivated:Ca},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),p(Ui,{"session-token-usage":a(w),"agent-status":a(S),"current-ai-chat-id":a(b),"current-messages":a(g),"fallback-title":l.sessionName,"estimated-context-tokens":Le.value},null,8,["session-token-usage","agent-status","current-ai-chat-id","current-messages","fallback-title","estimated-context-tokens"])])])])]),p(nt,{name:"slide-fade"},{default:U(()=>[a(v).length>0&&!Ee.value?(o(),i("div",Eu,[p($o,{messages:a(v),keywords:a(y),"is-loading":a(C),"is-collapsed":Ee.value,class:"h-full",onToggle:Ia,onLoadMore:Da},null,8,["messages","keywords","is-loading","is-collapsed"])])):z("",!0)]),_:1})]),p(Pc,{open:a(ve),"assistant-id":a(he),readonly:a(X),"scroll-to-section":P.value,"onUpdate:open":wa,onSaved:a(de),onCreated:a(ce)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),p(hd,{open:a(F),"onUpdate:open":Me[4]||(Me[4]=Ce=>F.value=Ce),onConfigure:a(V),onViewConfig:a(N),onCreate:a(Q)},null,8,["open","onConfigure","onViewConfig","onCreate"]),p(Jd,{open:a(te),"onUpdate:open":Me[5]||(Me[5]=Ce=>te.value=Ce),onConfigure:a(ne),onCreate:a(be)},null,8,["open","onConfigure","onCreate"]),p(ru,{open:a(ye),"skill-id":a(xe),"onUpdate:open":Me[6]||(Me[6]=Ce=>ye.value=Ce),onSaved:a(ge),onCreated:a(we)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),ju=rt(Bu,[["__scopeId","data-v-b4435ee7"]]),Uu={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},Nt={"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 Ot(l,s="zh-CN"){return Uu[fa(s)]?.[l]||l}function Xt(l,s,t="zh-CN"){return Nt[fa(t)]?.[l]?.[s]||s}function fa(l){return l.startsWith("zh")?"zh-CN":"en-US"}const Fu={class:"flex items-center justify-between border-b border-gray-200 p-2 dark:border-gray-800"},Vu={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Nu={key:0,class:"flex-1 overflow-y-auto p-2"},Ou=["onClick"],Hu={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Wu={class:"flex-1 truncate text-right text-xs text-gray-400"},Yu={key:0,class:"ml-4 mt-1 space-y-0.5"},Ku=["title","onDblclick"],Qu={class:"font-mono text-gray-700 dark:text-gray-300"},Gu={class:"flex-1 truncate text-right text-[10px] text-gray-400"},Ju={key:1,class:"flex flex-1 flex-col items-center gap-2 overflow-y-auto py-2"},Xu=["title","onClick"],Zu=fe({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(l,{expose:s,emit:t}){const{t:c,locale:r}=ke(),m=l,u=t,d=x(!1),g=x([]),v=x(new Set);async function y(){try{g.value=await Fe().getSchema(m.sessionId),g.value.forEach(M=>v.value.add(M.name))}catch(M){console.error("加载 Schema 失败:",M)}}function C(M){v.value.has(M)?v.value.delete(M):v.value.add(M)}function f(M){d.value=!1,v.value.add(M)}function b(M,R){u("insertColumn",M,R)}return s({loadSchema:y,schema:g}),ze(()=>{y()}),(M,R)=>{const w=_e;return o(),i("div",{class:le(["flex flex-col border-r border-gray-200 bg-white transition-all dark:border-gray-800 dark:bg-page-dark",d.value?"w-10":"w-56"])},[e("div",Fu,[d.value?z("",!0):(o(),i("span",Vu,n(a(c)("ai.sqlLab.schema.tables")),1)),e("button",{class:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:R[0]||(R[0]=S=>d.value=!d.value)},[p(w,{name:d.value?"i-heroicons-chevron-right":"i-heroicons-chevron-left",class:"h-4 w-4"},null,8,["name"])])]),d.value?(o(),i("div",Ju,[(o(!0),i(oe,null,ue(g.value,S=>(o(),i("button",{key:S.name,class:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-pink-500 dark:hover:bg-gray-800",title:`${a(Ot)(S.name,a(r))} (${S.name})`,onClick:T=>f(S.name)},[p(w,{name:"i-heroicons-table-cells",class:"h-4 w-4"})],8,Xu))),128))])):(o(),i("div",Nu,[(o(!0),i(oe,null,ue(g.value,S=>(o(),i("div",{key:S.name,class:"mb-2"},[e("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:T=>C(S.name)},[p(w,{name:v.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"]),p(w,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),e("span",Hu,n(S.name),1),e("span",Wu,n(a(Ot)(S.name,a(r))),1)],8,Ou),v.value.has(S.name)?(o(),i("div",Yu,[(o(!0),i(oe,null,ue(S.columns,T=>(o(),i("button",{key:T.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:a(c)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:D=>b(S.name,T.name)},[T.pk?(o(),K(w,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:a(c)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):z("",!0),e("span",Qu,n(T.name),1),e("span",Gu,n(a(Xt)(S.name,T.name,a(r))),1)],40,Ku))),128))])):z("",!0)]))),128))]))],2)}}}),e0={class:"max-h-[70vh] overflow-hidden p-6"},t0={class:"mb-4 flex items-center gap-2"},a0={class:"text-lg font-semibold text-gray-900 dark:text-white"},s0={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},o0={class:"mb-2 flex items-start justify-between gap-2"},n0={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},r0={class:"shrink-0 text-xs text-gray-400"},l0={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},i0={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},c0={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},d0={class:"flex justify-end gap-2"},u0={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},m0={class:"text-sm"},g0={class:"mt-4 flex justify-end"},p0=fe({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(l,{emit:s}){const{t}=ke(),c=s;function r(m){const u=new Date(m),d=new Date,g=d.getTime()-m;return g<6e4?t("ai.sqlLab.history.justNow"):g<36e5?t("ai.sqlLab.history.minutesAgo",{count:Math.floor(g/6e4)}):g<864e5?t("ai.sqlLab.history.hoursAgo",{count:Math.floor(g/36e5)}):u.toDateString()===d.toDateString()?t("ai.sqlLab.history.today"):`${u.getMonth()+1}/${u.getDate()}`}return(m,u)=>{const d=_e,g=Re,v=He;return o(),K(v,{open:l.open,ui:{content:"max-w-5xl"},"onUpdate:open":u[1]||(u[1]=y=>c("update:open",y))},{content:U(()=>[e("div",e0,[e("div",t0,[p(d,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),e("h3",a0,n(a(t)("ai.sqlLab.history.title")),1)]),l.history.length>0?(o(),i("div",s0,[(o(!0),i(oe,null,ue(l.history,y=>(o(),i("div",{key:y.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[e("div",o0,[e("p",n0,n(y.prompt),1),e("span",r0,n(r(y.timestamp)),1)]),e("div",l0,[e("pre",i0,n(y.sql),1)]),y.explanation?(o(),i("p",c0,n(y.explanation),1)):z("",!0),e("div",d0,[p(g,{variant:"ghost",size:"xs",color:"error",onClick:C=>c("delete",y.id)},{default:U(()=>[p(d,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),p(g,{size:"xs",onClick:C=>c("execute",y)},{default:U(()=>[p(d,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),se(" "+n(a(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(o(),i("div",u0,[p(d,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),e("p",m0,n(a(t)("ai.sqlLab.history.empty")),1)])),e("div",g0,[p(g,{variant:"ghost",onClick:u[0]||(u[0]=y=>c("update:open",!1))},{default:U(()=>[se(n(a(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),v0={class:"flex flex-1 flex-col overflow-hidden"},y0={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},h0={class:"flex items-start gap-2"},f0={class:"min-w-0 flex-1"},x0={class:"text-sm font-medium text-red-800 dark:text-red-200"},b0={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},k0={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"},_0={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},w0={class:"flex cursor-pointer items-center gap-1.5"},$0={class:"text-xs"},C0={class:"flex items-center gap-2"},S0={key:2,class:"flex-1 overflow-auto"},T0={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},M0={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},I0=["onClick"],D0={class:"flex items-center gap-1"},L0={class:"flex flex-col"},A0={class:"text-gray-700 dark:text-gray-300"},q0={key:0,class:"font-mono text-[10px] text-gray-400"},R0={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},P0={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},z0=["title"],E0={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},B0={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"},j0={class:"flex items-center gap-1"},U0={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},F0={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},V0={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},N0={class:"text-center"},O0={class:"mt-2 text-sm"},H0={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},W0={class:"text-center"},Y0={class:"mt-2 text-sm"},K0={class:"mt-1 text-xs text-gray-400"},Q0={class:"max-h-[70vh] overflow-hidden p-6"},G0={class:"mb-4 flex items-center gap-2"},J0={class:"text-lg font-semibold text-gray-900 dark:text-white"},X0={key:0,class:"flex items-center justify-center py-8"},Z0={class:"ml-2 text-sm text-gray-500"},em={key:1,class:"max-h-[50vh] overflow-y-auto"},tm=["innerHTML"],am={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},sm={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},om={class:"text-sm text-red-600 dark:text-red-400"},nm={class:"mt-4 flex justify-end gap-2"},rm=fe({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(l,{expose:s}){const{t,locale:c}=ke(),r=Je(),m=Ct(),u=dt(),{aiGlobalSettings:d}=at(m),g=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function v(J){return g.some(ne=>ne.test(J))}function y(J){if(typeof J!="number"||!Number.isFinite(J))return!1;const ne=946684800,be=4102444800,ge=ne*1e3,we=be*1e3;return J>=ne&&J<=be||J>=ge&&J<=we}function C(J){const be=J>1e10?J:J*1e3;return $e(be).format("YYYY-MM-DD HH:mm:ss")}const f=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function b(J){return J.findIndex(ne=>f.some(be=>be.test(ne)))}function M(J){u.openChatRecordDrawer({scrollToMessageId:J})}const R=new Qt({html:!1,breaks:!0,linkify:!0,typographer:!0}),w=l,S=x(null),T=x("asc"),D=x(1),k=x(100),$=[50,100,200,500],I=x(localStorage.getItem("sql-lab-readable-time")!=="false");function q(){I.value=!I.value,localStorage.setItem("sql-lab-readable-time",String(I.value))}const E=x(!1),A=x(!1),_=x(""),L=x(null),Y=x(""),ae=x(!1);function W(J){const ne=J.split("."),be=ne.length>1?ne[ne.length-1]:J,ge=Nt[c.value]||Nt["zh-CN"];for(const we of Object.values(ge))if(we[be])return we[be];return null}const ve=h(()=>{if(!w.result||!S.value)return w.result?.rows||[];const J=w.result.columns.indexOf(S.value);return J===-1?w.result.rows:[...w.result.rows].sort((ne,be)=>{const ge=ne[J],we=be[J];if(ge===null)return 1;if(we===null)return-1;if(typeof ge=="number"&&typeof we=="number")return T.value==="asc"?ge-we:we-ge;const Ie=String(ge).localeCompare(String(we));return T.value==="asc"?Ie:-Ie})}),he=h(()=>w.result?Math.ceil(ve.value.length/k.value):0),X=h(()=>{const J=(D.value-1)*k.value,ne=J+k.value;return ve.value.slice(J,ne)}),F=h(()=>w.result?b(w.result.columns):-1),te=h(()=>F.value!==-1);function ye(J){S.value===J?T.value=T.value==="asc"?"desc":"asc":(S.value=J,T.value="asc"),D.value=1}function xe(J){k.value=J,D.value=1}function G(J,ne){return J===null?"NULL":typeof J=="object"?JSON.stringify(J):I.value&&ne&&v(ne)&&y(J)?C(J):String(J)}async function B(){if(!(!w.result||ae.value)){ae.value=!0;try{const J=d.value.sqlExportFormat??"csv",ne=await xs({columns:w.result.columns,rows:w.result.rows},J);if(ne.success&&ne.filePath){const be=ne.filePath.split("/").pop()||ne.filePath;r.add({title:t("common.exportSuccess"),description:be,color:"primary",actions:[{label:t("common.openFolder"),onClick:()=>{ra().showInFolder(ne.filePath)}}]})}else r.fail(t("common.exportFailed"),{description:ne.error})}catch(J){console.error("导出失败:",J),r.fail(t("common.exportFailed"),{description:String(J)})}finally{ae.value=!1}}}function V(){S.value=null,T.value="asc",D.value=1}function N(){if(!w.result)return"";const J=50,ne=w.result.rows.slice(0,J),be=w.result.columns.join(" | "),ge=w.result.columns.map(()=>"---").join(" | "),we=ne.map(Le=>Le.map(Te=>Te===null?"NULL":String(Te).slice(0,50)).join(" | "));let Ie=`| ${be} |
48
+ | ${ge} |
49
+ `;return Ie+=we.map(Le=>`| ${Le} |`).join(`
50
+ `),w.result.rows.length>J&&(Ie+=`
51
+
52
+ (仅展示前 ${J} 行,共 ${w.result.rowCount} 行)`),Ie}async function Q(){E.value=!0,_.value="",L.value=null,Y.value="",await ce()}async function ce(){if(!await Wt().hasConfig()){L.value=t("common.errorNoAIConfig");return}A.value=!0,L.value=null,Y.value="";try{const ne=N();let be="";w.prompt&&(be=`用户的查询意图:${w.prompt}
53
+
54
+ `),w.sql&&(be+=`执行的 SQL 语句:
55
+ \`\`\`sql
56
+ ${w.sql}
57
+ \`\`\`
58
+
59
+ `);const ge=`请分析以下 SQL 查询结果,用简洁的中文总结关键发现和洞察。
60
+
61
+ ${be}查询结果(共 ${w.result?.rowCount||0} 行):
62
+
63
+ ${ne}
64
+
65
+ 请提供:
66
+ 1. 结果概述(一句话总结)
67
+ 2. 关键发现(2-4 个要点)
68
+ 3. 如有明显的趋势或异常,请指出`,we=await la().chatStream([{role:"system",content:"你是一个数据分析专家,擅长从查询结果中提取关键信息和洞察。请用简洁清晰的中文回答。"},{role:"user",content:ge}],{temperature:.3,maxTokens:1e3},Ie=>{Ie.content&&(Y.value+=Ie.content)});we.success?_.value=Y.value:L.value=we.error||t("ai.sqlLab.result.errorSummary")}catch(ne){L.value=ne.message||String(ne)}finally{A.value=!1}}function de(){E.value=!1,_.value="",L.value=null,Y.value=""}return s({resetSort:V}),(J,ne)=>{const be=_e,ge=ma,we=Re,Ie=It,Le=He;return o(),i("div",v0,[l.error?(o(),i("div",y0,[e("div",h0,[p(be,{name:"i-heroicons-exclamation-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-red-500"}),e("div",f0,[e("p",x0,n(a(t)("ai.sqlLab.result.queryError")),1),e("p",b0,n(l.error),1)])])])):z("",!0),l.result?(o(),i("div",k0,[e("div",_0,[e("label",w0,[p(ge,{"model-value":I.value,size:"xs","onUpdate:modelValue":q},null,8,["model-value"]),e("span",$0,n(a(t)("ai.sqlLab.result.readableTime")),1)]),ne[5]||(ne[5]=e("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),e("span",null,[p(be,{name:"i-heroicons-table-cells",class:"mr-1 inline h-4 w-4"}),se(" "+n(a(t)("ai.sqlLab.result.rows",{count:l.result.rowCount})),1)]),e("span",null,[p(be,{name:"i-heroicons-clock",class:"mr-1 inline h-4 w-4"}),se(" "+n(l.result.duration)+" ms ",1)])]),e("div",C0,[p(we,{variant:"ghost",size:"xs",onClick:Q},{default:U(()=>[p(be,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),se(" "+n(a(t)("ai.sqlLab.result.summarize")),1)]),_:1}),p(we,{variant:"ghost",size:"xs",loading:ae.value,onClick:B},{default:U(()=>[p(be,{name:"i-heroicons-arrow-down-tray",class:"mr-1 h-4 w-4"}),se(" "+n(a(t)("common.export")),1)]),_:1},8,["loading"])])])):z("",!0),l.result&&l.result.rows.length>0?(o(),i("div",S0,[e("table",T0,[e("thead",M0,[e("tr",null,[(o(!0),i(oe,null,ue(l.result.columns,(Te,Pe)=>(o(),i("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:Ee=>ye(Te)},[e("div",D0,[e("div",L0,[e("span",A0,n(W(Te)||Te),1),W(Te)?(o(),i("span",q0,n(Te),1)):z("",!0)]),S.value===Te?(o(),K(be,{key:0,name:T.value==="asc"?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3 w-3 text-gray-500"},null,8,["name"])):z("",!0)])],8,I0))),128)),te.value?(o(),i("th",R0)):z("",!0)])]),e("tbody",P0,[(o(!0),i(oe,null,ue(X.value,(Te,Pe)=>(o(),i("tr",{key:Pe,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[(o(!0),i(oe,null,ue(Te,(Ee,je)=>(o(),i("td",{key:je,class:le(["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":Ee===null}]),title:G(Ee,l.result.columns[je])},n(G(Ee,l.result.columns[je])),11,z0))),128)),te.value?(o(),i("td",E0,[p(we,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:a(t)("ai.sqlLab.result.viewChat"),onClick:Ee=>M(Te[F.value])},null,8,["title","onClick"])])):z("",!0)]))),128))])])])):z("",!0),l.result&&l.result.rows.length>0&&he.value>1?(o(),i("div",B0,[e("div",j0,[p(we,{icon:"i-heroicons-chevron-double-left",variant:"ghost",size:"xs",disabled:D.value===1,onClick:ne[0]||(ne[0]=Te=>D.value=1)},null,8,["disabled"]),p(we,{icon:"i-heroicons-chevron-left",variant:"ghost",size:"xs",disabled:D.value===1,onClick:ne[1]||(ne[1]=Te=>D.value--)},null,8,["disabled"]),e("span",U0,n(D.value)+" / "+n(he.value),1),p(we,{icon:"i-heroicons-chevron-right",variant:"ghost",size:"xs",disabled:D.value>=he.value,onClick:ne[2]||(ne[2]=Te=>D.value++)},null,8,["disabled"]),p(we,{icon:"i-heroicons-chevron-double-right",variant:"ghost",size:"xs",disabled:D.value>=he.value,onClick:ne[3]||(ne[3]=Te=>D.value=he.value)},null,8,["disabled"])]),e("div",F0,[e("span",null,n(a(t)("ai.sqlLab.result.pageSize")),1),p(Ie,{"model-value":k.value,items:$.map(Te=>({label:String(Te),value:Te})),size:"xs",class:"w-20","onUpdate:modelValue":xe},null,8,["model-value","items"])])])):z("",!0),l.result&&l.result.rows.length===0?(o(),i("div",V0,[e("div",N0,[p(be,{name:"i-heroicons-inbox",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",O0,n(a(t)("ai.sqlLab.result.emptyResult")),1)])])):z("",!0),!l.result&&!l.error?(o(),i("div",H0,[e("div",W0,[p(be,{name:"i-heroicons-command-line",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",Y0,n(a(t)("ai.sqlLab.result.initialState")),1),e("p",K0,n(a(t)("ai.sqlLab.result.initialHint")),1)])])):z("",!0),p(Le,{open:E.value,"onUpdate:open":ne[4]||(ne[4]=Te=>E.value=Te)},{content:U(()=>[e("div",Q0,[e("div",G0,[p(be,{name:"i-heroicons-sparkles",class:"h-5 w-5 text-pink-500"}),e("h3",J0,n(a(t)("ai.sqlLab.result.summaryTitle")),1)]),A.value&&!Y.value?(o(),i("div",X0,[p(be,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-pink-500"}),e("span",Z0,n(a(t)("ai.sqlLab.result.analyzing")),1)])):Y.value||_.value?(o(),i("div",em,[e("div",{class:"prose prose-sm max-w-none rounded-lg bg-gray-50 p-4 dark:prose-invert dark:bg-page-dark",innerHTML:a(R).render(Y.value||_.value)},null,8,tm),A.value?(o(),i("div",am,[p(be,{name:"i-heroicons-arrow-path",class:"mr-1 h-3 w-3 animate-spin"}),se(" "+n(a(t)("common.generating")),1)])):z("",!0)])):z("",!0),L.value?(o(),i("div",sm,[e("p",om,n(L.value),1)])):z("",!0),e("div",nm,[!A.value&&_.value?(o(),K(we,{key:0,variant:"outline",onClick:ce},{default:U(()=>[p(be,{name:"i-heroicons-arrow-path",class:"mr-1 h-4 w-4"}),se(" "+n(a(t)("common.regenerate")),1)]),_:1})):z("",!0),p(we,{variant:"ghost",onClick:de},{default:U(()=>[se(n(a(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])])}}}),lm={class:"main-content flex h-full"},im={class:"flex flex-1 flex-col overflow-hidden"},cm={class:"flex flex-col border-b border-gray-200 bg-gray-50 p-4 dark:border-gray-800 dark:bg-page-dark"},dm={class:"mx-auto w-full max-w-3xl"},um=["placeholder"],mm=["placeholder"],gm={class:"mt-1 flex items-center justify-between"},pm={class:"flex items-center gap-2"},vm={key:0,class:"text-xs text-gray-400"},ym={class:"flex items-center gap-2"},hm={key:0,class:"ml-1 text-xs text-gray-400"},fm={key:0,class:"flex-1 overflow-auto p-4"},xm={class:"mx-auto w-full max-w-3xl rounded-lg border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-page-dark"},bm={class:"mb-2 flex items-center gap-1.5 text-sm font-medium text-gray-600 dark:text-gray-300"},km={key:0,class:"text-gray-500"},_m={key:1,class:"text-pink-500"},wm=["open"],$m={class:"cursor-pointer select-none text-xs font-medium text-gray-500 dark:text-gray-400"},Cm={key:1,class:"whitespace-pre-wrap break-all font-mono text-xs leading-5 text-gray-600 dark:text-gray-400"},Sm={key:2,class:"font-mono text-xs text-gray-400"},Tm=fe({__name:"SQLLabTab",props:{sessionId:{},chatType:{}},setup(l){const{t:s,locale:t}=ke(),c=l,r=x(null),m=x(null);function u(F){return s(F==="group"?"ai.sqlLab.generate.defaultPromptGroup":"ai.sqlLab.generate.defaultPromptPrivate")}const d=x("SELECT * FROM message LIMIT 10"),g=x(u(c.chatType)),v=x("prompt"),y=x(!1),C=x(!1),f=x(null),b=x(null),M=x(""),R=x(""),w=x(""),S=x(!1),T=x(null),D=x(!1),k=x([]);function $(){try{const F=`sql-lab-history-${c.sessionId}`,te=localStorage.getItem(F);te&&(k.value=JSON.parse(te))}catch(F){console.error("加载历史记录失败:",F)}}function I(){try{const F=`sql-lab-history-${c.sessionId}`;localStorage.setItem(F,JSON.stringify(k.value))}catch(F){console.error("保存历史记录失败:",F)}}function q(F,te,ye){const xe={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,prompt:F,sql:te,explanation:ye,timestamp:Date.now()};k.value.unshift(xe),k.value.length>50&&(k.value=k.value.slice(0,50)),I()}function E(F){k.value=k.value.filter(te=>te.id!==F),I()}async function A(){if(!d.value.trim()){f.value=s("ai.sqlLab.editor.errorEmptySQL");return}y.value=!0,f.value=null,b.value=null,m.value?.resetSort();try{b.value=await Fe().executeSQL(c.sessionId,d.value)}catch(F){f.value=F.message||String(F)}finally{y.value=!1}}function _(F,te){(F.ctrlKey||F.metaKey)&&F.key==="Enter"&&(F.preventDefault(),te==="prompt"?he():A())}function L(F,te){d.value+=`${F}.${te}`}function Y(){v.value=v.value==="prompt"?"sql":"prompt"}function ae(F){const te=[];for(const ye of F){te.push(`### ${ye.name} (${Ot(ye.name,t.value)})`),te.push("| 列名 | 说明 | 类型 |"),te.push("|------|------|------|");for(const xe of ye.columns){const G=xe.pk?" (主键)":"";te.push(`| ${xe.name} | ${Xt(ye.name,xe.name,t.value)}${G} | ${xe.type} |`)}te.push("")}return te.join(`
69
+ `)}function W(F,te){return`你是一个 SQLite 数据库专家。用户需要查询聊天记录数据库。
70
+
71
+ ## 数据库结构
72
+
73
+ ${ae(te)}
74
+
75
+ ## 重要说明
76
+
77
+ 1. message 表的 ts 字段是 Unix 时间戳(秒),查询日期需要使用 datetime(ts, 'unixepoch') 转换
78
+ 2. message.type 字段:0=文本, 1=图片, 2=语音, 3=视频, 4=文件, 5=表情包, 6=系统消息, 99=其他
79
+ 3. member 和 message 表通过 message.sender_id = member.id 关联
80
+ 4. **人名查询**:当识别到人名/昵称查询时,必须同时在 member 表的 account_name、group_nickname 和 aliases 三个字段中模糊搜索,使用 OR 连接:
81
+ \`\`\`
82
+ WHERE m.account_name LIKE '%人名%'
83
+ OR m.group_nickname LIKE '%人名%'
84
+ OR m.aliases LIKE '%人名%'
85
+ \`\`\`
86
+ 5. 显示成员名称时,使用 COALESCE(m.group_nickname, m.account_name, m.platform_id) 来获取最佳显示名
87
+ 6. **查询具体消息时包含消息 ID**:当用户需要查看具体的聊天记录时,SELECT 应包含 msg.id 作为第一个字段,这样用户可以点击查看完整上下文。注意是 msg.id(消息 ID),不是 m.id(成员 ID)。
88
+ 7. **统计查询不需要消息 ID**:当用户需要统计分析时,不需要返回 msg.id
89
+ 8. **严禁使用不存在的字段**:只能使用上方 Schema 中明确存在的表名和列名,禁止使用如 sender.display_name、member.display_name 等虚构字段
90
+ 9. **成员显示名写法**:如果需要显示成员名称,优先使用 COALESCE(m.group_nickname, m.account_name, m.platform_id);若不联表 member,可使用 COALESCE(msg.sender_group_nickname, msg.sender_account_name, msg.sender_id)
91
+ 10. **单次只做一个分析目标**:一次 SQL 只返回一个语义一致的结果集,不要把多个分析目标用 UNION ALL/UNION 混合到同一结果表
92
+
93
+ ## 用户需求
94
+
95
+ ${F}
96
+
97
+ ## 要求
98
+
99
+ 请以 JSON 格式输出,包含两个字段:
100
+ - sql: SQLite 查询语句(不要用代码块包裹)
101
+ - explanation: 用简洁的中文解释这条 SQL 做了什么
102
+
103
+ 示例格式:
104
+ {"sql": "SELECT ...", "explanation": "这条SQL查询了..."}
105
+
106
+ 注意:
107
+ 1. 仅输出 JSON,不要有任何其他文字
108
+ 2. SQL 中的查询结果限制在合理范围内(建议 LIMIT 100)
109
+ 3. 确保 SQL 语法正确
110
+ 4. 若用户需求包含多个分析目标,仅选择第一个目标生成 SQL`}function ve(F){let te=F.trim();te=te.replace(/^```json?\n?/i,"").replace(/\n?```$/i,"");try{const ye=JSON.parse(te);return{sql:(ye.sql||"").trim(),explanation:(ye.explanation||"").trim()}}catch{return te=te.replace(/^```sql?\n?/i,"").replace(/\n?```$/i,""),{sql:te.trim(),explanation:""}}}async function he(){const F=g.value.trim();if(!F){f.value=s("ai.sqlLab.generate.errorEmptyPrompt");return}if(!await Wt().hasConfig()){f.value=s("common.errorNoAIConfig");return}const ye=r.value?.schema||[];if(ye.length===0){f.value=s("common.error.unknown");return}C.value=!0,b.value=null,f.value=null,R.value="",w.value="",S.value=!1;let xe="";try{const G=W(F,ye),B=await la().chatStream([{role:"system",content:"你是一个 SQLite 专家,请以 JSON 格式输出 sql 和 explanation 字段。"},{role:"user",content:G}],{temperature:.1,maxTokens:4096},N=>{if(N.thinking!==void 0){N.thinkingDone?S.value=!1:(S.value=!0,N.thinking&&(w.value+=N.thinking,Ve(()=>{T.value&&(T.value.scrollTop=T.value.scrollHeight)})));return}N.error&&(xe=N.error),N.isFinished&&N.finishReason==="length"&&(xe=s("ai.sqlLab.generate.errorTokenLimit")),N.content&&(R.value+=N.content)});if(!B.success){f.value=B.error||xe||s("ai.sqlLab.generate.errorGenerate");return}if(xe){f.value=xe;return}const V=ve(R.value);if(!V.sql){f.value=R.value?`${s("ai.sqlLab.generate.errorGenerate")}: ${R.value.slice(0,200)}`:s("ai.sqlLab.generate.errorGenerate");return}d.value=V.sql,M.value=F,q(F,V.sql,V.explanation),await A()}catch(G){f.value=G.message||String(G)}finally{C.value=!1}}async function X(F){d.value=F.sql,M.value=F.prompt,D.value=!1,await A()}return ze(()=>{$()}),pe(()=>c.chatType,F=>{g.value=u(F)}),(F,te)=>{const ye=_e,xe=Re;return o(),i("div",lm,[p(a(Zu),{ref_key:"schemaPanelRef",ref:r,"session-id":l.sessionId,onInsertColumn:L},null,8,["session-id"]),e("div",im,[e("div",cm,[e("div",dm,[v.value==="prompt"?Oe((o(),i("textarea",{key:0,"onUpdate:modelValue":te[0]||(te[0]=G=>g.value=G),class:"h-32 w-full resize-none rounded-lg border border-gray-300 bg-white p-3 text-sm text-gray-800 focus:border-pink-500 focus:outline-none focus:ring-1 focus:ring-pink-500 dark:border-gray-700 dark:bg-page-dark dark:text-gray-200",placeholder:a(s)("ai.sqlLab.generate.placeholder"),spellcheck:"false",onKeydown:te[1]||(te[1]=G=>_(G,"prompt"))},null,40,um)),[[st,g.value]]):Oe((o(),i("textarea",{key:1,"onUpdate:modelValue":te[2]||(te[2]=G=>d.value=G),class:"h-32 w-full resize-none rounded-lg border border-gray-300 bg-white p-3 font-mono text-sm text-gray-800 focus:border-pink-500 focus:outline-none focus:ring-1 focus:ring-pink-500 dark:border-gray-700 dark:bg-page-dark dark:text-gray-200",placeholder:a(s)("ai.sqlLab.editor.placeholder"),spellcheck:"false",onKeydown:te[3]||(te[3]=G=>_(G,"sql"))},null,40,mm)),[[st,d.value]]),e("div",gm,[e("div",pm,[p(xe,{variant:"ghost",size:"xs",onClick:Y},{default:U(()=>[p(ye,{name:"i-heroicons-arrows-right-left",class:"mr-1 h-3.5 w-3.5"}),se(" "+n(v.value==="prompt"?a(s)("ai.sqlLab.editor.switchToSQLMode"):a(s)("ai.sqlLab.editor.switchToPromptMode")),1)]),_:1}),v.value==="sql"?(o(),i("span",vm,n(a(s)("ai.sqlLab.editor.tip")),1)):z("",!0)]),e("div",ym,[p(xe,{variant:"ghost",size:"sm",disabled:k.value.length===0,onClick:te[4]||(te[4]=G=>D.value=!0)},{default:U(()=>[p(ye,{name:"i-heroicons-clock",class:"mr-1 h-4 w-4"}),se(" "+n(a(s)("ai.sqlLab.editor.history"))+" ",1),k.value.length>0?(o(),i("span",hm,"("+n(k.value.length)+")",1)):z("",!0)]),_:1},8,["disabled"]),v.value==="prompt"?(o(),K(xe,{key:0,color:"primary",size:"sm",loading:C.value||y.value,disabled:!g.value.trim(),onClick:he},{default:U(()=>[p(ye,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),se(" "+n(a(s)("ai.sqlLab.editor.generateAndRun")),1)]),_:1},8,["loading","disabled"])):(o(),K(xe,{key:1,color:"primary",size:"sm",loading:y.value,onClick:A},{default:U(()=>[p(ye,{name:"i-heroicons-play",class:"mr-1 h-4 w-4"}),se(" "+n(a(s)("ai.sqlLab.editor.run")),1)]),_:1},8,["loading"]))])])])]),v.value==="prompt"&&!b.value&&!f.value&&(R.value||w.value||C.value)?(o(),i("div",fm,[e("div",xm,[e("p",bm,[p(ye,{name:"i-heroicons-cpu-chip",class:"h-4 w-4"}),se(" "+n(a(s)("ai.sqlLab.generate.aiOutput"))+" ",1),S.value?(o(),i("span",km,n(a(s)("ai.sqlLab.generate.thinking")),1)):C.value?(o(),i("span",_m,n(a(s)("common.generating")),1)):z("",!0)]),w.value?(o(),i("details",{key:0,class:"mb-3",open:S.value},[e("summary",$m,n(a(s)("ai.sqlLab.generate.thinkingProcess")),1),e("pre",{ref_key:"thinkingPreRef",ref:T,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"},n(w.value),513)],8,wm)):z("",!0),R.value?(o(),i("pre",Cm,n(R.value),1)):w.value?z("",!0):(o(),i("p",Sm,n(a(s)("ai.sqlLab.generate.waitingAI")),1))])])):(o(),K(a(rm),{key:1,ref_key:"resultTableRef",ref:m,result:b.value,error:f.value,sql:d.value,prompt:M.value},null,8,["result","error","sql","prompt"]))]),p(a(p0),{open:D.value,"onUpdate:open":te[5]||(te[5]=G=>D.value=G),history:k.value,onExecute:X,onDelete:E},null,8,["open","history"])])}}}),Mm=fe({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(l){ht([Gt,ha,Dt,Jt,ft]);const s=l,{t,locale:c}=ke(),r=pt(),m=x(null);let u=null;const d=h(()=>{if(s.year)return s.year;if(s.data.length===0)return new Date().getFullYear();const R=s.data.map(w=>parseInt(w.date.split("-")[0]));return Math.max(...R)}),g=h(()=>s.data.length===0?10:Math.max(...s.data.map(R=>R.value),1)),v=h(()=>s.data.map(R=>[R.date,R.value])),y={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},C=h(()=>({tooltip:{trigger:"item",formatter:R=>{const w=R.data[0],S=R.data[1];return`${w}<br/>${t("views.message.calendarTooltipMessages")}: ${S}`}},visualMap:{min:0,max:g.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${g.value}`,"0"],inRange:{color:r.value?y.dark:y.light},textStyle:{color:r.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(d.value),itemStyle:{borderWidth:2,borderColor:r.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:r.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:r.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:r.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[t("common.weekday.sun"),t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:v.value}]}));function f(){m.value&&(u=xt(m.value,r.value?"dark":void 0,{renderer:"canvas"}),u.setOption({backgroundColor:"transparent",...C.value}))}function b(){u&&u.setOption({backgroundColor:"transparent",...C.value},{notMerge:!0})}function M(){u?.resize()}return pe([()=>s.data,r,c],()=>{b()}),pe(()=>s.year,()=>{b()}),ze(()=>{f(),window.addEventListener("resize",M)}),lt(()=>{window.removeEventListener("resize",M),u?.dispose()}),(R,w)=>(o(),i("div",{ref_key:"chartRef",ref:m,style:Ge({height:`${l.height}px`,width:"100%"})},null,4))}}),Im={class:"flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-800"},Dm={class:"font-semibold text-gray-900 whitespace-nowrap dark:text-white"},Lm={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Am={class:"no-capture flex items-center gap-2"},qm={class:"flex w-full items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700"},Rm={class:"flex items-center gap-2"},Pm={class:"text-lg font-semibold text-gray-900 whitespace-nowrap dark:text-white"},zm={class:"text-sm text-gray-500"},Em={class:"max-h-[60vh] p-4 divide-y divide-gray-100 overflow-y-auto dark:divide-gray-800"},Bm={class:"divide-y divide-gray-100 dark:divide-gray-800"},jm={key:0},Um={class:"px-5 py-8 text-center text-sm text-gray-400"},Fm=fe({__name:"ListPro",props:{items:{},title:{},description:{},topN:{default:10},countTemplate:{}},setup(l){const{t:s}=ke(),t=l,c=x(!1),r=x(null),m=x(null),u=h(()=>t.items.slice(0,t.topN)),d=h(()=>t.items.length>t.topN),g=h(()=>(t.countTemplate||s("views.charts.listPro.countTemplate")).replace("{count}",String(t.items.length)));return(v,y)=>{const C=Re,f=He;return o(),i("div",{ref_key:"cardRef",ref:r,class:"rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-800 dark:bg-page-dark"},[e("div",Im,[e("div",null,[e("h3",Dm,n(l.title),1),l.description?(o(),i("p",Lm,n(l.description),1)):z("",!0)]),e("div",Am,[Qe(v.$slots,"headerRight"),p(ct,{size:"xs",type:"element","target-element":r.value},null,8,["target-element"]),p(f,{open:c.value,"onUpdate:open":y[0]||(y[0]=b=>c.value=b),ui:{content:"md:w-full max-w-3xl"}},{content:U(()=>[e("div",{ref_key:"modalBodyRef",ref:m,class:"section-content flex flex-col"},[e("div",qm,[e("div",Rm,[e("h3",Pm,n(l.title),1),e("span",zm,"("+n(g.value)+")",1)]),p(ct,{size:"xs",type:"element","target-element":m.value},null,8,["target-element"])]),e("div",Em,[(o(!0),i(oe,null,ue(l.items,(b,M)=>(o(),i("div",{key:M,class:"px-5 py-3"},[Qe(v.$slots,"item",{item:b,index:M})]))),128))])],512)]),default:U(()=>[d.value?(o(),K(C,{key:0,icon:"i-heroicons-list-bullet",variant:"ghost"},{default:U(()=>[se(n(a(s)("views.charts.listPro.fullRanking")),1)]),_:1})):z("",!0)]),_:3},8,["open"])])]),Qe(v.$slots,"config"),e("div",Bm,[(o(!0),i(oe,null,ue(u.value,(b,M)=>(o(),i("div",{key:M,class:"px-5 py-3"},[Qe(v.$slots,"item",{item:b,index:M})]))),128))]),l.items.length===0?(o(),i("div",jm,[Qe(v.$slots,"empty",{},()=>[e("div",Um,n(a(s)("views.charts.listPro.empty")),1)])])):z("",!0)],512)}}}),Vm={class:"border-b border-gray-100 p-4 dark:border-gray-800"},Nm={class:"mb-3 flex flex-wrap items-center gap-2"},Om={class:"text-xs text-gray-500 dark:text-gray-400"},Hm=["onClick"],Wm={class:"p-4"},Ym={class:"mb-3 font-semibold text-gray-900 dark:text-white"},Km={class:"space-y-3"},Qm={class:"mb-1 block text-xs text-gray-500"},Gm={class:"mb-1 block text-xs text-gray-500"},Jm={class:"flex flex-wrap items-center gap-2"},Xm={class:"mt-4 flex justify-end gap-2"},Zm={class:"flex flex-wrap items-center gap-2"},eg={class:"mt-1.5 text-xs text-gray-400"},tg={key:0,class:"border-b border-gray-100 px-5 py-4 dark:border-gray-800"},ag={class:"mb-3 flex items-center justify-between"},sg={class:"text-base font-medium text-gray-700 dark:text-gray-300"},og={class:"flex cursor-pointer items-center gap-1.5 text-xs text-gray-500"},ng={class:"flex flex-wrap gap-2"},rg={class:"text-xs text-gray-500"},lg={class:"flex items-center gap-3"},ig={class:"w-32 shrink-0"},cg={class:"truncate font-medium text-gray-900 dark:text-white"},dg={class:"flex flex-1 items-center"},ug={class:"flex h-2.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},mg=["title"],gg={class:"flex shrink-0 items-baseline gap-2"},pg={class:"text-lg font-bold text-gray-900 dark:text-white"},vg={class:"text-sm text-gray-500"},yg={key:0,class:"flex h-64 flex-col items-center justify-center text-gray-400"},hg={class:"text-sm"},fg={key:1,class:"h-64"},xg=fe({__name:"KeywordAnalysis",props:{sessionId:{},timeFilter:{}},setup(l){const{t:s}=ke(),t=l,c=Ct(),r=x(!1),m={bg:"bg-pink-400",text:"text-pink-700",badge:"pink",wrapBg:"bg-pink-50 dark:bg-pink-900/20"},u=[{bg:"bg-amber-400",text:"text-amber-700",badge:"amber",wrapBg:"bg-amber-50 dark:bg-amber-900/20"},{bg:"bg-pink-400",text:"text-pink-700",badge:"pink",wrapBg:"bg-pink-50 dark:bg-pink-900/20"},{bg:"bg-blue-400",text:"text-blue-700",badge:"blue",wrapBg:"bg-blue-50 dark:bg-blue-900/20"},{bg:"bg-green-400",text:"text-green-700",badge:"green",wrapBg:"bg-green-50 dark:bg-green-900/20"},{bg:"bg-purple-400",text:"text-purple-700",badge:"purple",wrapBg:"bg-purple-50 dark:bg-purple-900/20"},{bg:"bg-red-400",text:"text-red-700",badge:"red",wrapBg:"bg-red-50 dark:bg-red-900/20"},{bg:"bg-cyan-400",text:"text-cyan-700",badge:"cyan",wrapBg:"bg-cyan-50 dark:bg-cyan-900/20"},{bg:"bg-orange-400",text:"text-orange-700",badge:"orange",wrapBg:"bg-orange-50 dark:bg-orange-900/20"}];function d(B){if(!r.value)return m;const V=f.value.indexOf(B);return u[V%u.length]}const g=["laugh","sad","praise","slacker","gossip","polite","curious"],v=h(()=>[{id:"laugh",name:s("quotes.keywords.templates.laugh.name"),keywords:s("quotes.keywords.templates.laugh.keywords").split(","),description:s("quotes.keywords.templates.laugh.description")},{id:"sad",name:s("quotes.keywords.templates.sad.name"),keywords:s("quotes.keywords.templates.sad.keywords").split(","),description:s("quotes.keywords.templates.sad.description")},{id:"praise",name:s("quotes.keywords.templates.praise.name"),keywords:s("quotes.keywords.templates.praise.keywords").split(","),description:s("quotes.keywords.templates.praise.description")},{id:"slacker",name:s("quotes.keywords.templates.slacker.name"),keywords:s("quotes.keywords.templates.slacker.keywords").split(","),description:s("quotes.keywords.templates.slacker.description")},{id:"gossip",name:s("quotes.keywords.templates.gossip.name"),keywords:s("quotes.keywords.templates.gossip.keywords").split(","),description:s("quotes.keywords.templates.gossip.description")},{id:"polite",name:s("quotes.keywords.templates.polite.name"),keywords:s("quotes.keywords.templates.polite.keywords").split(","),description:s("quotes.keywords.templates.polite.description")},{id:"curious",name:s("quotes.keywords.templates.curious.name"),keywords:s("quotes.keywords.templates.curious.keywords").split(","),description:s("quotes.keywords.templates.curious.description")}]),y=h(()=>{const B=c.customKeywordTemplates.map(N=>({...N,isCustom:!0}));return[...v.value.filter(N=>!c.deletedPresetTemplateIds.includes(N.id)),...B]}),C=x("laugh"),f=x([]);pe(v,B=>{B.length>0&&f.value.length===0&&(f.value=[...B[0].keywords])},{immediate:!0});const b=h(()=>{const B=y.value.find(V=>V.id===C.value);return B?B.name:""}),M=x(null),R=x(!1),w=x(!1),S=x(null),T=x(""),D=x([]),k=x(""),$=h(()=>S.value!==null),I=h(()=>$.value?s("quotes.keywords.modal.editTitle"):s("quotes.keywords.modal.createTitle"));function q(){S.value=null,T.value="",D.value=[],k.value="",w.value=!0}function E(B){S.value=B.id,T.value=B.name,D.value=[...B.keywords],w.value=!0}function A(){const B=k.value.trim();B&&!D.value.includes(B)&&(D.value=[...D.value,B]),k.value=""}function _(B){D.value=D.value.filter(V=>V!==B)}function L(B){C.value=B.id,f.value=[...B.keywords],M.value=null,te()}function Y(){f.value=[],M.value=null,C.value=""}const ae=x("");function W(){const B=ae.value.trim();B&&!f.value.includes(B)&&(f.value=[...f.value,B],te()),ae.value=""}function ve(B){f.value=f.value.filter(V=>V!==B),te()}function he(B){return g.includes(B)}function X(){if(T.value.trim()){if($.value&&S.value)if(he(S.value)){const B={id:`custom_${Date.now()}`,name:T.value.trim(),keywords:[...D.value]};c.addCustomKeywordTemplate(B),C.value=B.id,f.value=[...B.keywords],te()}else c.updateCustomKeywordTemplate(S.value,{name:T.value.trim(),keywords:[...D.value]}),C.value===S.value&&(f.value=[...D.value],te());else{const B={id:`custom_${Date.now()}`,name:T.value.trim(),keywords:[...D.value]};c.addCustomKeywordTemplate(B),C.value=B.id,f.value=[...B.keywords],te()}w.value=!1}}function F(B){he(B)?c.addDeletedPresetTemplateId(B):c.removeCustomKeywordTemplate(B),C.value===B&&(y.value.length>0?L(y.value[0]):Y())}async function te(){if(!t.sessionId||f.value.length===0){M.value=null;return}R.value=!0;try{M.value=await Fe().getLaughAnalysis(t.sessionId,t.timeFilter,[...f.value])}catch(B){console.error("加载词频分析失败:",B),M.value=null}finally{R.value=!1}}const ye=h(()=>M.value?M.value.rankByCount.map(B=>({id:B.memberId.toString(),name:B.name,value:B.laughCount,percentage:B.percentage,keywordDistribution:B.keywordDistribution||[]})):[]);function xe(B){if(ye.value.length===0)return 0;const V=ye.value[0].value;return V===0?0:Math.round(ye.value[B].value/V*100)}function G(B,V){const N=xe(V);return!B.keywordDistribution||B.keywordDistribution.length===0?[{keyword:"default",width:N,bg:"bg-amber-400"}]:B.keywordDistribution.map(Q=>({keyword:Q.keyword,width:Q.percentage/100*N,bg:d(Q.keyword).bg}))}return pe(()=>[t.sessionId,t.timeFilter],()=>{te()},{immediate:!0,deep:!0}),(B,V)=>{const N=ga,Q=yt,ce=Yt,de=Re,J=He,ne=Ka,be=_e;return o(),K(a(Fm),{items:ye.value,title:a(s)("quotes.keywords.title"),description:a(s)("quotes.keywords.description"),"top-n":10,"count-template":a(s)("quotes.keywords.countTemplate")},{config:U(()=>[e("div",Vm,[e("div",Nm,[e("span",Om,n(a(s)("quotes.keywords.templateLabel")),1),(o(!0),i(oe,null,ue(y.value,ge=>(o(),K(N,{key:ge.id,items:[[{label:a(s)("quotes.keywords.contextMenu.edit"),icon:"i-lucide-pencil",disabled:!ge.isCustom,onSelect:()=>E(ge)},{label:a(s)("quotes.keywords.contextMenu.delete"),icon:"i-lucide-trash",color:"error",onSelect:()=>F(ge.id)}]]},{default:U(()=>[e("button",{class:le(["rounded-md border px-2.5 py-1 text-sm transition-all",C.value===ge.id?"border-pink-500 bg-pink-50 text-pink-600 dark:border-pink-400 dark:bg-pink-900/20 dark:text-pink-400":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400 dark:hover:border-gray-600"]),onClick:we=>L(ge)},n(ge.name),11,Hm)]),_:2},1032,["items"]))),128)),p(J,{open:w.value,"onUpdate:open":V[3]||(V[3]=ge=>w.value=ge)},{content:U(()=>[e("div",Wm,[e("h3",Ym,n(I.value),1),e("div",Km,[e("div",null,[e("label",Qm,n(a(s)("quotes.keywords.modal.templateName")),1),p(Q,{modelValue:T.value,"onUpdate:modelValue":V[0]||(V[0]=ge=>T.value=ge),placeholder:a(s)("quotes.keywords.modal.templateNamePlaceholder")},null,8,["modelValue","placeholder"])]),e("div",null,[e("label",Gm,n(a(s)("quotes.keywords.modal.keywords")),1),e("div",Jm,[(o(!0),i(oe,null,ue(D.value,ge=>(o(),K(ce,{key:ge,variant:"soft",class:"cursor-pointer",onClick:we=>_(ge)},{default:U(()=>[se(n(ge)+" ",1),V[6]||(V[6]=e("span",{class:"ml-0.5 hover:text-red-500"},"×",-1))]),_:2},1032,["onClick"]))),128)),p(Q,{modelValue:k.value,"onUpdate:modelValue":V[1]||(V[1]=ge=>k.value=ge),placeholder:a(s)("quotes.keywords.modal.keywordPlaceholder"),class:"w-full",onKeydown:Xe(Ue(A,["prevent"]),["enter"])},null,8,["modelValue","placeholder","onKeydown"])])])]),e("div",Xm,[p(de,{variant:"soft",onClick:V[2]||(V[2]=ge=>w.value=!1)},{default:U(()=>[se(n(a(s)("common.cancel")),1)]),_:1}),p(de,{color:"primary",disabled:!T.value.trim()||D.value.length===0,onClick:X},{default:U(()=>[se(n($.value?a(s)("quotes.keywords.modal.update"):a(s)("common.save")),1)]),_:1},8,["disabled"])])])]),default:U(()=>[e("button",{class:"rounded-md border border-dashed border-gray-300 px-2.5 py-1 text-sm text-gray-500 transition-all hover:border-pink-400 hover:text-pink-500 dark:border-gray-600",onClick:q},n(a(s)("quotes.keywords.newTemplate")),1)]),_:1},8,["open"])]),e("div",Zm,[(o(!0),i(oe,null,ue(f.value,ge=>(o(),K(ce,{key:ge,class:"cursor-pointer",onClick:we=>ve(ge)},{default:U(()=>[se(n(ge)+" ",1),V[7]||(V[7]=e("span",{class:"ml-0.5 hover:text-red-500"},"×",-1))]),_:2},1032,["onClick"]))),128)),p(Q,{modelValue:ae.value,"onUpdate:modelValue":V[4]||(V[4]=ge=>ae.value=ge),placeholder:a(s)("quotes.keywords.searchPlaceholder"),class:"w-32",onKeydown:Xe(Ue(W,["prevent"]),["enter"])},null,8,["modelValue","placeholder","onKeydown"]),f.value.length>0?(o(),i("button",{key:0,class:"text-sm text-pink-500 hover:text-red-500",onClick:Y},n(a(s)("quotes.keywords.clear")),1)):z("",!0)]),e("div",eg,n(a(s)("quotes.keywords.templateHint")),1)]),M.value&&M.value.typeDistribution.length>0?(o(),i("div",tg,[e("div",ag,[e("span",sg,n(b.value?b.value:f.value.length===1?f.value[0]:a(s)("quotes.keywords.keyword"))+n(a(s)("quotes.keywords.ranking")),1),e("label",og,[e("span",null,n(a(s)("quotes.keywords.multiColorMode")),1),p(ne,{modelValue:r.value,"onUpdate:modelValue":V[5]||(V[5]=ge=>r.value=ge),size:"md"},null,8,["modelValue"])])]),e("div",ng,[(o(!0),i(oe,null,ue(M.value.typeDistribution,ge=>(o(),i("div",{key:ge.type,class:le(["flex items-center gap-2 rounded-lg px-2 py-2 text-xs",d(ge.type).wrapBg])},[e("span",{class:le(["h-2.5 w-2.5 shrink-0 rounded-full",d(ge.type).bg])},null,2),e("span",{class:le(["font-medium",d(ge.type).text])},n(ge.type),3),e("span",rg,n(a(s)("quotes.keywords.times",{count:ge.count})),1),p(ce,{color:d(ge.type).badge,variant:"soft",size:"xs"},{default:U(()=>[se(n(ge.percentage)+"%",1)]),_:2},1032,["color"])],2))),128))])])):z("",!0),R.value&&ye.value.length===0?(o(),K(a(mt),{key:1,text:a(s)("quotes.keywords.loading")},null,8,["text"])):z("",!0)]),item:U(({item:ge,index:we})=>[e("div",lg,[e("div",{class:le(["flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-bold",a(ds)(we)])},n(we+1),3),e("div",ig,[e("p",cg,n(ge.name),1)]),e("div",dg,[e("div",ug,[(o(!0),i(oe,null,ue(G(ge,we),Ie=>(o(),i("div",{key:Ie.keyword,class:le(["h-full transition-all first:rounded-l-full last:rounded-r-full",Ie.bg]),style:Ge({width:`${Ie.width}%`}),title:`${Ie.keyword}: ${Ie.width.toFixed(1)}%`},null,14,mg))),128))])]),e("div",gg,[e("span",pg,n(ge.value),1),e("span",vg,n(a(s)("quotes.keywords.timesWithPercent",{count:ge.value,percent:ge.percentage})),1)])])]),empty:U(()=>[R.value?(o(),i("div",fg)):(o(),i("div",yg,[p(be,{name:"i-heroicons-magnifying-glass",class:"mb-2 h-8 w-8 opacity-50"}),e("p",hg,n(a(s)("quotes.keywords.empty")),1)]))]),_:1},8,["items","title","description","count-template"])}}}),bg={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},kg={class:"flex items-center gap-6 sm:gap-10"},_g={class:"min-w-0 flex-1"},wg={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},$g={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Cg={class:"flex items-baseline gap-x-1.5"},Sg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Tg={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Mg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Ig={class:"flex items-baseline gap-x-1.5"},Dg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Lg={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Ag={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},qg={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Rg={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Pg=["onClick"],zg={key:0,class:"text-gray-400"},Eg={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Bg={class:"relative",style:{width:"360px",height:"220px"}},jg={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Ug={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Fg={class:"min-w-0 flex-1"},Vg={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ng={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Og={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"},Hg={class:"flex items-center gap-1.5"},Wg={class:"text-[9px] font-medium uppercase tracking-widest"},Yg=fe({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(l,{emit:s}){const t=da(()=>Mt(()=>import("./EChartWordcloud-Clg60FMo.js"),__vite__mapDeps([5,6,7,8,1]))),{t:c}=ke(),r=l,m=s,u=h(()=>{const{startTs:M,endTs:R}=r.timeFilter??{};return M&&R?`${$e(M*1e3).format("YYYY/MM/DD")} – ${$e(R*1e3).format("YYYY/MM/DD")}`:""}),d=h(()=>(r.topicWords?.length?r.topicWords:r.topWords).slice(0,5)),g=h(()=>({words:(r.topicWords?.length?r.topicWords:r.topWords).slice(0,50).map(R=>({word:R.word,count:R.count,percentage:R.percentage}))})),v=h(()=>r.totalWords===0?0:Math.round(r.uniqueWords/r.totalWords*100)),y=h(()=>{if(!r.posTagStats?.length)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const M=new Map(r.posTagStats.map(I=>[I.tag,I.count])),R=(M.get("n")||0)+(M.get("ns")||0)+(M.get("nt")||0)+(M.get("nz")||0),w=(M.get("v")||0)+(M.get("vn")||0)+(M.get("vd")||0),S=(M.get("a")||0)+(M.get("ad")||0)+(M.get("an")||0),T=R+w+S;if(T===0)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const D=R/T,k=w/T,$=S/T;return D>.5?{key:"Encyclopedia",label:c("quotes.topicProfile.styleEncyclopedia"),desc:c("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:k>.45?{key:"Action",label:c("quotes.topicProfile.styleAction"),desc:c("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:$>.3?{key:"Expressive",label:c("quotes.topicProfile.styleExpressive"),desc:c("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),C=h(()=>{if(r.topWords.length===0)return{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const M=r.topWords.reduce((S,T)=>S+T.word.length*T.count,0),R=r.topWords.reduce((S,T)=>S+T.count,0),w=M/R;return w<2.5?{label:c("quotes.topicProfile.expressionCasual"),desc:c("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:w>3.5?{label:c("quotes.topicProfile.expressionFormal"),desc:c("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),f=h(()=>[{icon:"i-heroicons-fire-solid",label:c("quotes.topicProfile.hotTopic"),value:d.value[0]?.word??"-",subtext:d.value[0]?c("quotes.topicProfile.hotTopicDesc",{count:d.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:c("quotes.topicProfile.richness"),value:c("quotes.topicProfile.richnessValue",{value:v.value}),subtext:c("quotes.topicProfile.richnessDesc",{unique:r.uniqueWords.toLocaleString(),total:r.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:y.value.icon,label:c("quotes.topicProfile.chatStyle"),value:y.value.label,subtext:y.value.desc,colorClass:y.value.colorClass},{icon:C.value.icon,label:c("quotes.topicProfile.expressionStyle"),value:C.value.label,subtext:C.value.desc,colorClass:C.value.colorClass}]),b=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(M,R)=>{const w=_e;return o(),K(a(it),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:U(()=>[e("div",bg,[e("div",kg,[e("div",_g,[e("div",wg,[u.value?(o(),i("p",$g,n(u.value),1)):z("",!0),e("div",Cg,[e("span",Sg,n(a(c)("quotes.topicProfile.heroPrefix")),1),e("span",Tg,n(l.totalMessages.toLocaleString()),1),e("span",Mg,n(a(c)("quotes.topicProfile.heroMiddle")),1)]),e("div",Ig,[e("span",Dg,n(a(c)("quotes.topicProfile.heroMiddleSecond")),1),e("span",Lg,n(l.uniqueWords.toLocaleString()),1),e("span",Ag,n(a(c)("quotes.topicProfile.heroSuffix")),1)]),d.value.length>0?(o(),i("div",qg,[e("span",Rg,n(a(c)("quotes.topicProfile.topTopicsPrefix")),1),(o(!0),i(oe,null,ue(d.value,(S,T)=>(o(),i(oe,{key:S.word},[e("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:Ge({color:b[T%b.length]}),onClick:D=>m("wordClick",S.word)},n(S.word),13,Pg),T<d.value.length-1?(o(),i("span",zg,"·")):z("",!0)],64))),128))])):z("",!0)])]),g.value.words.length>0?(o(),i("div",Eg,[e("div",Bg,[p(a(t),{data:g.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:R[0]||(R[0]=S=>m("wordClick",S))},null,8,["data"])])])):z("",!0)])]),e("div",jg,[R[1]||(R[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),e("div",Ug,[(o(!0),i(oe,null,ue(f.value,S=>(o(),i("div",{key:S.label,class:"flex items-start gap-2 rounded-lg bg-white/60 p-2.5 ring-1 ring-gray-900/5 dark:bg-white/5 dark:ring-white/10"},[p(w,{name:S.icon,class:le(["mt-0.5 h-3.5 w-3.5 shrink-0",S.colorClass])},null,8,["name","class"]),e("div",Fg,[e("div",{class:le(["truncate font-mono text-sm font-black leading-tight tabular-nums",S.colorClass])},n(S.value),3),e("div",Vg,n(S.label),1),e("div",Ng,n(S.subtext),1)])]))),128))])]),e("div",Og,[e("div",Hg,[p(w,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),R[2]||(R[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Wg,n(a(c)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Kg={class:"px-5 py-4 sm:px-6"},Qg={class:"mb-4 flex items-center gap-2"},Gg={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Jg={class:"flex flex-wrap justify-center gap-2"},Xg=["onClick"],Zg=fe({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(l,{emit:s}){const{t}=ke(),c=St(),r=l,m=s,u=h(()=>c.locale),d=x([]),g=x([]),v=h(()=>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 C(){if(r.sessionId)try{g.value.length===0&&(g.value=await Fe().getMembers(r.sessionId));const f=[...g.value].sort((T,D)=>D.messageCount-T.messageCount).slice(0,2);if(f.length<2){d.value=[];return}const b={sessionId:r.sessionId,locale:u.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:r.dictType??"default",excludeWords:r.excludeWords?.length?[...r.excludeWords]:void 0},[M,R]=await Promise.all([wt("/nlp/word-frequency",{...b,memberId:f[0].id}),wt("/nlp/word-frequency",{...b,memberId:f[1].id})]),w=new Map(R.words.map(T=>[T.word,T.count])),S=[];for(const T of M.words){const D=w.get(T.word);D&&S.push({word:T.word,countA:T.count,countB:D})}S.sort((T,D)=>D.countA+D.countB-(T.countA+T.countB)),d.value=S.slice(0,30)}catch(f){console.error("加载共同话题数据失败:",f),d.value=[]}}return pe(()=>r.sessionId,()=>{g.value=[]}),pe(()=>[r.sessionId,r.timeFilter,r.dictType,r.excludeWords],()=>{C()},{immediate:!0,deep:!0}),(f,b)=>{const M=_e;return v.value.length>0?(o(),K(a(it),{key:0,variant:"section"},{default:U(()=>[e("div",Kg,[e("div",Qg,[p(M,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),e("span",Gg,n(a(t)("quotes.topicProfile.sharedTopics")),1)]),e("div",Jg,[(o(!0),i(oe,null,ue(v.value,(R,w)=>(o(),i("span",{key:R.word,class:le(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",y[w%y.length]]),onClick:S=>m("wordClick",R.word)},n(R.word),11,Xg))),128))])])]),_:1})):z("",!0)}}}),Pt="__ALL__",ep=fe({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(l,{emit:s}){const{t}=ke(),c=l,r=s,m=x([]),u=x(!1),d=h({get:()=>c.modelValue===null?Pt:String(c.modelValue),set:y=>{r("update:modelValue",y===Pt?null:parseInt(y))}}),g=h(()=>{const y=[{value:Pt,label:t("common.userSelect.allMembers")}];return m.value.forEach(C=>{const f=C.groupNickname||C.accountName||C.platformId;y.push({value:String(C.id),label:`${f} (${C.messageCount})`})}),y});async function v(){if(c.sessionId){u.value=!0;try{const y=await Fe().getMembers(c.sessionId);m.value=y.sort((C,f)=>f.messageCount-C.messageCount)}catch(y){console.error("加载成员列表失败:",y)}finally{u.value=!1}}}return pe(()=>c.sessionId,()=>{r("update:modelValue",null),v()},{immediate:!0}),(y,C)=>{const f=Kt;return o(),K(f,{modelValue:d.value,"onUpdate:modelValue":C[0]||(C[0]=b=>d.value=b),items:g.value,loading:u.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),xa=ja("wordFilter",()=>{const l=x([]),s=x(null),t=x({}),c=x(!1);function r(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function m(S,T=[]){const D={id:r(),name:S,words:[...T],createdAt:Date.now()};return l.value.push(D),D}function u(S,T){const D=l.value.find(k=>k.id===S);D&&(T.name!==void 0&&(D.name=T.name),T.words!==void 0&&(D.words=[...T.words]))}function d(S){l.value=l.value.filter(T=>T.id!==S),s.value===S&&(s.value=null);for(const[T,D]of Object.entries(t.value))D===S&&delete t.value[T]}function g(S){s.value=S}function v(S,T){t.value[S]=T}function y(S){delete t.value[S]}function C(S){return S in t.value?t.value[S]:s.value}function f(S){const T=C(S);return T?l.value.find(k=>k.id===T)?.words??[]:[]}function b(S){return l.value.find(T=>T.id===S)}const M=h(()=>l.value.map(S=>({label:S.name,value:S.id,isDefault:S.id===s.value,wordCount:S.words.length})));function R(){c.value=!0}function w(){c.value=!1}return{schemes:l,defaultSchemeId:s,sessionSchemeOverrides:t,showWordFilterModal:c,schemeOptions:M,createScheme:m,updateScheme:u,deleteScheme:d,setDefaultScheme:g,setSessionScheme:v,clearSessionScheme:y,getActiveSchemeId:C,getExcludeWords:f,getSchemeById:b,openModal:R,closeModal:w}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),tp={class:"flex flex-col",style:{height:"520px"}},ap={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},sp={class:"flex items-center gap-3"},op={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},np={class:"text-lg font-semibold text-gray-900 dark:text-white"},rp={class:"flex flex-1 overflow-hidden"},lp={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},ip={class:"flex items-center justify-between px-3 py-2"},cp={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},dp={class:"flex-1 overflow-y-auto px-2 pb-2"},up=["onClick"],mp={class:"truncate text-sm"},gp={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},pp={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},vp={class:"flex flex-1 flex-col overflow-hidden"},yp={class:"flex-1 space-y-4 overflow-y-auto p-5"},hp={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},fp={class:"flex items-center gap-2"},xp={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},bp={class:"flex gap-2"},kp={class:"mb-1.5 flex items-center justify-between"},_p={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},wp={class:"ml-1 text-gray-400 dark:text-gray-500"},$p={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"},Cp={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"},Sp={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},Tp={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},Mp={class:"text-sm"},Ip=fe({__name:"WordFilterModal",setup(l){const{t:s}=ke(),t=xa(),c=h({get:()=>t.showWordFilterModal,set:T=>T?t.openModal():t.closeModal()}),r=x(null),m=x(""),u=x(""),d=x(null),g=h(()=>r.value?t.getSchemeById(r.value)??null:null),v=h(()=>r.value===t.defaultSchemeId);pe(c,T=>{T&&(t.schemes.length>0&&!r.value&&(r.value=t.schemes[0].id),y())}),pe(r,()=>{y(),u.value=""});function y(){m.value=g.value?.name??""}function C(){const T=t.createScheme(s("wordFilter.defaultSchemeName"));r.value=T.id,Ve(()=>{d.value?.focus(),d.value?.select()})}function f(){if(!r.value)return;const T=t.schemes.findIndex(D=>D.id===r.value);if(t.deleteScheme(r.value),t.schemes.length>0){const D=Math.min(T,t.schemes.length-1);r.value=t.schemes[D].id}else r.value=null}function b(){!r.value||!m.value.trim()||t.updateScheme(r.value,{name:m.value.trim()})}function M(){r.value&&(v.value?t.setDefaultScheme(null):t.setDefaultScheme(r.value))}function R(){if(!r.value||!u.value.trim())return;const D=u.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(q=>q.trim()).filter(q=>q.length>0);if(D.length===0)return;const k=g.value;if(!k)return;const $=new Set(k.words.map(q=>q.toLowerCase())),I=D.filter(q=>!$.has(q.toLowerCase()));I.length>0&&t.updateScheme(r.value,{words:[...k.words,...I]}),u.value=""}function w(T){if(!r.value)return;const D=g.value;D&&t.updateScheme(r.value,{words:D.words.filter(k=>k!==T)})}function S(){r.value&&t.updateScheme(r.value,{words:[]})}return(T,D)=>{const k=_e,$=Re,I=yt,q=Yt,E=He;return o(),K(E,{open:c.value,"onUpdate:open":D[4]||(D[4]=A=>c.value=A),ui:{content:"max-w-3xl z-50"}},{content:U(()=>[e("div",tp,[e("div",ap,[e("div",sp,[e("div",op,[p(k,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),e("h2",np,n(a(s)("wordFilter.title")),1)]),p($,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:D[0]||(D[0]=A=>c.value=!1)})]),e("div",rp,[e("div",lp,[e("div",ip,[e("span",cp,n(a(s)("wordFilter.schemeList")),1),p($,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:C})]),e("div",dp,[(o(!0),i(oe,null,ue(a(t).schemes,A=>(o(),i("div",{key:A.id,class:le(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",r.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:_=>r.value=A.id},[A.id===a(t).defaultSchemeId?(o(),K(k,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):z("",!0),e("span",mp,n(A.name),1),e("span",gp,n(A.words.length),1)],10,up))),128)),a(t).schemes.length===0?(o(),i("div",pp,n(a(s)("wordFilter.emptyScheme")),1)):z("",!0)])]),e("div",vp,[g.value?(o(),i(oe,{key:0},[e("div",yp,[e("div",null,[e("label",hp,n(a(s)("wordFilter.schemeName")),1),p(I,{ref_key:"nameInputRef",ref:d,modelValue:m.value,"onUpdate:modelValue":D[1]||(D[1]=A=>m.value=A),size:"sm",placeholder:a(s)("wordFilter.schemeNamePlaceholder"),onBlur:b,onKeydown:Xe(b,["enter"])},null,8,["modelValue","placeholder"])]),e("div",fp,[p($,{size:"xs",variant:v.value?"solid":"soft",color:v.value?"warning":"neutral",icon:v.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:M},{default:U(()=>[se(n(v.value?a(s)("wordFilter.isDefault"):a(s)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),p($,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:f},{default:U(()=>[se(n(a(s)("wordFilter.deleteScheme")),1)]),_:1})]),e("div",null,[e("label",xp,n(a(s)("wordFilter.addWords")),1),e("div",bp,[p(I,{modelValue:u.value,"onUpdate:modelValue":D[2]||(D[2]=A=>u.value=A),size:"sm",class:"flex-1",placeholder:a(s)("wordFilter.addWordsPlaceholder"),onKeydown:Xe(R,["enter"])},null,8,["modelValue","placeholder"]),p($,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:R},{default:U(()=>[se(n(a(s)("wordFilter.add")),1)]),_:1})])]),e("div",null,[e("div",kp,[e("label",_p,[se(n(a(s)("wordFilter.wordList"))+" ",1),e("span",wp,"("+n(g.value.words.length)+")",1)]),g.value.words.length>0?(o(),K($,{key:0,size:"xs",variant:"ghost",color:"error",onClick:S},{default:U(()=>[se(n(a(s)("wordFilter.clearAll")),1)]),_:1})):z("",!0)]),g.value.words.length>0?(o(),i("div",$p,[(o(!0),i(oe,null,ue(g.value.words,A=>(o(),K(q,{key:A,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:U(()=>[se(n(A)+" ",1),p(k,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:_=>w(A)},null,8,["onClick"])]),_:2},1024))),128))])):(o(),i("div",Cp,n(a(s)("wordFilter.emptyWords")),1))])]),e("div",Sp,[p($,{color:"primary",variant:"soft",onClick:D[3]||(D[3]=A=>c.value=!1)},{default:U(()=>[se(n(a(s)("wordFilter.close")),1)]),_:1})])],64)):(o(),i("div",Tp,[p(k,{name:"i-heroicons-funnel",class:"h-10 w-10"}),e("p",Mp,n(a(s)("wordFilter.selectOrCreate")),1),p($,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:C},{default:U(()=>[se(n(a(s)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),Dp={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Lp={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"},Ap={class:"flex min-w-0 items-start gap-3"},qp={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},Rp={class:"flex shrink-0 flex-wrap gap-2"},Pp={key:1,class:"space-y-6"},zp={class:"flex gap-6 p-4 sm:p-6"},Ep={class:"flex min-w-0 flex-1 flex-col"},Bp={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},jp={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"},Up={class:"text-xs font-medium"},Fp={class:"px-4 text-center text-[11px]"},Vp={class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},Np={class:"w-[280px] shrink-0 space-y-4"},Op={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Hp={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Wp={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Yp={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Kp={class:"space-y-2"},Qp={class:"text-xs text-gray-400 dark:text-gray-500"},Gp={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Jp={class:"flex items-center"},Xp={key:0,class:"space-y-2"},Zp={class:"flex items-center justify-between"},ev={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},tv={class:"flex gap-1"},av={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},sv={key:0,class:"ml-1 opacity-60"},ov={class:"mb-2 flex items-center justify-between"},nv={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},rv={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},lv={class:"space-y-4"},iv={class:"text-sm text-gray-600 dark:text-gray-300"},cv={class:"flex justify-end gap-2"},dv="default",oa="chatlab_zhTW_dict_prompt_dismissed",Ik=fe({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean}},setup(l){const s=da(()=>Mt(()=>import("./EChartWordcloud-Clg60FMo.js"),__vite__mapDeps([5,6,7,8,1]))),{t}=ke(),c=St(),r=dt(),m=xa(),u=Je(),d=l,g=x(!1),v=x([]),y=x({totalMessages:0,totalWords:0,uniqueWords:0}),C=x(1.25),f=x(150),b=h(()=>{const me=v.value.slice(0,f.value),P=me.reduce((H,ee)=>H+ee.count,0);return{words:me.map(H=>({word:H.word,count:H.count,percentage:P>0?Math.round(H.count/P*1e4)/100:0}))}}),M=x("meaningful"),R=x(!0),w=x([]),S=x([]),T=x(new Map),D=["n","nr","ns","nt","nz","nw","vn","a","an"],k=x([]),$=h(()=>b.value.words.map(me=>({word:me.word,count:me.count,percentage:me.percentage??0}))),I=h(()=>[...T.value.entries()].map(([me,P])=>({tag:me,count:P}))),q=x(null),E=h({get:()=>m.getActiveSchemeId(d.sessionId),set:me=>m.setSessionScheme(d.sessionId,me)}),A=h(()=>[{label:t("wordFilter.noFilter"),value:"__none__"},...m.schemeOptions.map(me=>({label:me.isDefault?`${me.label} ★`:me.label,value:me.value}))]),_=h({get:()=>E.value??"__none__",set:me=>{E.value=me==="__none__"?null:me}}),L=h(()=>m.getExcludeWords(d.sessionId)),Y=x("default"),ae=x([]),W=x(!1),ve=x(null),he=x(!1),X=x(!1),F=h(()=>c.locale),te=h(()=>c.locale==="zh-TW"),ye=h(()=>F.value.startsWith("zh")),xe=h(()=>ae.value.filter(me=>me.downloaded).map(me=>({label:t(`quotes.wordcloud.dict.${me.id==="zh-CN"?"zhCN":me.id==="zh-TW"?"zhTW":me.id}`),value:me.id}))),G=h(()=>ae.value.some(me=>me.downloaded)),B=h(()=>!ye.value||X.value),V=h(()=>ae.value.filter(me=>!me.downloaded));async function N(){try{ae.value=await Zt("/nlp/dicts"),te.value&&Y.value==="default"&&ae.value.find(H=>H.id==="zh-TW")?.downloaded&&(Y.value="zh-TW"),ae.value.find(P=>P.id==="zh-CN")?.downloaded&&Y.value==="default"&&(Y.value="zh-CN")}catch(me){console.error("Failed to get dict list:",me)}finally{X.value=!0}}async function Q(me){W.value=!0,ve.value=me;try{const P=await Ua(`/nlp/dicts/${me}/download`);P.success?(await N(),Y.value=me,u.success(t("quotes.wordcloud.dict.downloadSuccess"))):u.fail(t("quotes.wordcloud.dict.downloadFailed"),{description:P.error})}catch{u.fail(t("quotes.wordcloud.dict.downloadFailed"))}finally{W.value=!1,ve.value=null,he.value=!1}}function ce(){he.value=!1,localStorage.setItem(oa,"true")}function de(){const me=ae.value.find(P=>P.id==="zh-TW");te.value&&me&&!me.downloaded&&!localStorage.getItem(oa)&&(he.value=!0)}const J=h(()=>[{label:t("quotes.wordcloud.posFilter.all"),value:"all"},{label:t("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:t("quotes.wordcloud.posFilter.custom"),value:"custom"}]),ne=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],be=Math.max(...ne.map(me=>me.value)),ge=h(()=>[{label:t("quotes.wordcloud.size.small"),value:.75},{label:t("quotes.wordcloud.size.medium"),value:1},{label:t("quotes.wordcloud.size.large"),value:1.25},{label:t("quotes.wordcloud.size.xlarge"),value:1.5}]),we=h(()=>S.value.map(me=>({label:me.name,tag:me.tag,value:me.tag,count:T.value.get(me.tag)||0,meaningful:me.meaningful})));async function Ie(){try{const me=await Zt("/nlp/pos-tags");S.value=me,w.value=me.filter(P=>P.meaningful).map(P=>P.tag)}catch(me){console.error("加载词性标签失败:",me)}}let Le=0;async function Te(){if(!d.sessionId||!B.value)return;const me=++Le;try{const P=await wt("/nlp/word-frequency",{sessionId:d.sessionId,locale:F.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:q.value??void 0,topN:50,minCount:2,posFilterMode:"custom",customPosTags:[...D],enableStopwords:!0,dictType:Y.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(me!==Le)return;k.value=P.words.map(H=>({word:H.word,count:H.count,percentage:H.percentage}))}catch(P){if(console.error("加载话题迷你词云数据失败:",P),me!==Le)return;k.value=[]}}let Pe=0;async function Ee(){if(!d.sessionId||!B.value)return;const me=++Pe;v.value.length===0&&(g.value=!0);try{const P=await wt("/nlp/word-frequency",{sessionId:d.sessionId,locale:F.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:q.value??void 0,topN:be,minCount:2,posFilterMode:M.value,customPosTags:M.value==="custom"?[...w.value]:void 0,enableStopwords:R.value,dictType:Y.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(me!==Pe)return;if(v.value=P.words.map(H=>({word:H.word,count:H.count,percentage:H.percentage})),y.value={totalMessages:P.totalMessages,totalWords:P.totalWords,uniqueWords:P.uniqueWords},P.posTagStats){const H=new Map;for(const ee of P.posTagStats)H.set(ee.tag,ee.count);T.value=H}}catch(P){if(console.error("加载词频数据失败:",P),me!==Pe)return;v.value=[]}finally{me===Pe&&(g.value=!1)}}pe(()=>d.sessionId,()=>{q.value=null,v.value=[],k.value=[],y.value={totalMessages:0,totalWords:0,uniqueWords:0},T.value=new Map}),pe(()=>[d.sessionId,d.timeFilter,q.value,M.value,R.value,Y.value,L.value,B.value],()=>{Ee()},{immediate:!0,deep:!0}),pe(()=>[d.sessionId,d.timeFilter,q.value,Y.value,L.value,B.value],()=>{Te()},{immediate:!0,deep:!0}),pe(w,()=>{M.value==="custom"&&Ee()},{deep:!0}),pe(F,()=>{Ee()});function je(me){r.openChatRecordDrawer({keywords:[me]})}return ze(async()=>{Ie(),await N(),de()}),(me,P)=>{const H=_e,ee=Re,O=ma,j=Yt,ie=He;return o(),i("div",Dp,[ye.value&&!G.value?(o(),i("div",Lp,[e("div",Ap,[p(H,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),e("p",qp,n(a(t)("quotes.wordcloud.dict.needDownload")),1)]),e("div",Rp,[(o(!0),i(oe,null,ue(ae.value,Z=>(o(),K(ee,{key:Z.id,size:"sm",color:"primary",loading:W.value&&ve.value===Z.id,disabled:W.value&&ve.value!==Z.id,icon:"i-heroicons-arrow-down-tray",onClick:re=>Q(Z.id)},{default:U(()=>[se(n(a(t)(`quotes.wordcloud.dict.download_${Z.id}`,Z.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):z("",!0),B.value?(o(),i("div",Pp,[g.value&&$.value.length===0?(o(),K(a(mt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):z("",!0),p(Yg,{"total-messages":y.value.totalMessages,"total-words":y.value.totalWords,"unique-words":y.value.uniqueWords,"top-words":$.value,"topic-words":k.value,"pos-tag-stats":I.value,"time-filter":d.timeFilter,onWordClick:je},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),d.showSharedTopics?(o(),K(Zg,{key:1,"session-id":d.sessionId,"time-filter":d.timeFilter,"dict-type":Y.value,"exclude-words":L.value,onWordClick:je},null,8,["session-id","time-filter","dict-type","exclude-words"])):z("",!0),p(a(Ye),{title:a(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:U(()=>[e("div",zp,[e("div",Ep,[e("div",Bp,[g.value?(o(),K(a(mt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):$.value.length===0?(o(),i("div",jp,[p(H,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),e("p",Up,n(a(t)("quotes.wordcloud.empty.title")),1),e("p",Fp,n(a(t)("quotes.wordcloud.empty.description")),1)])):(o(),K(a(s),{key:2,data:b.value,height:"100%","max-words":f.value,"color-scheme":dv,"size-scale":C.value,loading:g.value,onWordClick:je},null,8,["data","max-words","size-scale","loading"]))]),e("p",Vp,n(a(t)("quotes.wordcloud.stats.clickHint")),1)]),e("div",Np,[e("div",null,[e("h4",Op,n(a(t)("quotes.wordcloud.config.maxWords")),1),p(a(et),{modelValue:f.value,"onUpdate:modelValue":P[0]||(P[0]=Z=>f.value=Z),size:"xs",items:ne},null,8,["modelValue"])]),e("div",null,[e("h4",Hp,n(a(t)("quotes.wordcloud.config.sizeScale")),1),p(a(et),{modelValue:C.value,"onUpdate:modelValue":P[1]||(P[1]=Z=>C.value=Z),size:"xs",items:ge.value},null,8,["modelValue","items"])]),e("div",null,[e("h4",Wp,n(a(t)("quotes.wordcloud.config.userFilter")),1),p(ep,{modelValue:q.value,"onUpdate:modelValue":P[2]||(P[2]=Z=>q.value=Z),"session-id":d.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),e("div",null,[e("h4",Yp,n(a(t)("quotes.wordcloud.config.dict")),1),e("div",Kp,[xe.value.length>1?(o(),K(a(et),{key:0,modelValue:Y.value,"onUpdate:modelValue":P[3]||(P[3]=Z=>Y.value=Z),size:"xs",items:xe.value},null,8,["modelValue","items"])):z("",!0),(o(!0),i(oe,null,ue(V.value,Z=>(o(),i("div",{key:Z.id,class:"flex items-center gap-2"},[p(ee,{size:"xs",variant:"soft",color:"primary",loading:W.value&&ve.value===Z.id,disabled:W.value&&ve.value!==Z.id,icon:"i-heroicons-arrow-down-tray",onClick:re=>Q(Z.id)},{default:U(()=>[se(n(a(t)(`quotes.wordcloud.dict.download_${Z.id}`,a(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),e("span",Qp,n(a(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])]),e("div",null,[e("h4",Gp,n(a(t)("quotes.wordcloud.config.posFilter")),1),p(a(et),{modelValue:M.value,"onUpdate:modelValue":P[4]||(P[4]=Z=>M.value=Z),size:"xs",items:J.value},null,8,["modelValue","items"])]),e("div",Jp,[p(O,{modelValue:R.value,"onUpdate:modelValue":P[5]||(P[5]=Z=>R.value=Z),label:a(t)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),M.value==="custom"?(o(),i("div",Xp,[e("div",Zp,[e("h4",ev,n(a(t)("quotes.wordcloud.posFilter.customHint")),1),e("div",tv,[p(ee,{size:"xs",variant:"ghost",color:"neutral",onClick:P[6]||(P[6]=Z=>w.value=S.value.filter(re=>re.meaningful).map(re=>re.tag))},{default:U(()=>[se(n(a(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),p(ee,{size:"xs",variant:"ghost",color:"neutral",onClick:P[7]||(P[7]=Z=>w.value=S.value.map(re=>re.tag))},{default:U(()=>[se(n(a(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),p(ee,{size:"xs",variant:"ghost",color:"neutral",onClick:P[8]||(P[8]=Z=>w.value=[])},{default:U(()=>[se(n(a(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),e("div",av,[(o(!0),i(oe,null,ue(we.value,Z=>(o(),K(j,{key:Z.value,color:w.value.includes(Z.value)?"primary":"neutral",variant:w.value.includes(Z.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{w.value.includes(Z.value)?w.value=w.value.filter(re=>re!==Z.value):w.value=[...w.value,Z.value]}},{default:U(()=>[se(n(Z.label)+" ",1),Z.count>0?(o(),i("span",sv,"("+n(Z.count)+")",1)):z("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):z("",!0),e("div",null,[e("div",ov,[e("h4",nv,n(a(t)("wordFilter.filterScheme")),1),p(ee,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":a(t)("wordFilter.manage"),onClick:P[9]||(P[9]=Z=>a(m).openModal())},null,8,["aria-label"])]),p(a(et),{modelValue:_.value,"onUpdate:modelValue":P[10]||(P[10]=Z=>_.value=Z),size:"xs",items:A.value},null,8,["modelValue","items"]),L.value.length>0?(o(),i("p",rv,n(a(t)("wordFilter.activeCount",{count:L.value.length})),1)):z("",!0)])])])]),_:1},8,["title"])])):z("",!0),p(ie,{open:he.value,"onUpdate:open":P[12]||(P[12]=Z=>he.value=Z),title:a(t)("quotes.wordcloud.dict.promptTitle")},{body:U(()=>[e("div",lv,[e("p",iv,n(a(t)("quotes.wordcloud.dict.promptDescription")),1),e("div",cv,[p(ee,{variant:"ghost",color:"neutral",onClick:ce},{default:U(()=>[se(n(a(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),p(ee,{color:"primary",loading:W.value,onClick:P[11]||(P[11]=Z=>Q("zh-TW"))},{default:U(()=>[se(n(a(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"]),p(Ip)])}}}),uv={class:"flex h-full flex-col"},mv={class:"flex-1 min-h-0 overflow-hidden"},gv={key:1,class:"h-full overflow-auto"},pv={class:"main-content mx-auto max-w-3xl p-6"},vv=fe({__name:"AITab",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{},mode:{}},setup(l,{expose:s}){const{t}=ke(),c=Qa(),r=l,m=h(()=>r.mode==="sql-only"?[{id:"sql-lab",label:t("ai.tab.sqlLab"),icon:"i-heroicons-command-line"},{id:"keyword",label:t("analysis.subTabs.quotes.keywordAnalysis"),icon:"i-heroicons-magnifying-glass"}]:[{id:"chat-explorer",label:t("ai.tab.chatExplorer"),icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"sql-lab",label:t("ai.tab.sqlLab"),icon:"i-heroicons-command-line"}]),u=x(r.mode==="sql-only"?"sql-lab":c.query.aiSubTab||"chat-explorer");pe(()=>c.query.aiSubTab,v=>{if(r.mode==="sql-only"){(v==="keyword"||v==="sql-lab")&&(u.value=v);return}(v==="chat-explorer"||v==="sql-lab")&&(u.value=v)});const d=x(null);function g(){d.value?.refreshConfig()}return s({refreshAIConfig:g}),(v,y)=>(o(),i("div",uv,[p(a(ia),{modelValue:u.value,"onUpdate:modelValue":y[0]||(y[0]=C=>u.value=C),items:m.value,"persist-key":"aiTab"},null,8,["modelValue","items"]),e("div",mv,[p(nt,{name:"fade",mode:"out-in"},{default:U(()=>[u.value==="chat-explorer"?(o(),K(a(ju),{key:0,ref_key:"chatExplorerRef",ref:d,class:"h-full","session-id":l.sessionId,"session-name":l.sessionName,"time-filter":l.timeFilter,"chat-type":l.chatType},null,8,["session-id","session-name","time-filter","chat-type"])):u.value==="keyword"?(o(),i("div",gv,[e("div",pv,[p(a(xg),{"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])])])):(o(),K(Tm,{key:2,class:"h-full","session-id":r.sessionId,"chat-type":r.chatType},null,8,["session-id","chat-type"]))]),_:1})])]))}}),Dk=rt(vv,[["__scopeId","data-v-0df46b7b"]]),yv={class:"flex h-full items-center justify-center"},hv={class:"max-w-sm text-center"},fv={class:"mt-3 text-sm text-gray-400 dark:text-gray-500"},xv=["href"],Lk=fe({__name:"MemoryTab",props:{sessionId:{},sessionName:{}},setup(l){const{t:s,te:t}=ke(),c=h(()=>t("analysis.memory.joinLink")?s("analysis.memory.joinLink"):"");return(r,m)=>{const u=_e;return o(),i("div",yv,[e("div",hv,[p(u,{name:"i-heroicons-light-bulb",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",fv,n(a(s)("analysis.memory.comingSoon")),1),c.value?(o(),i("a",{key:0,href:c.value,target:"_blank",rel:"noopener noreferrer",class:"mt-2 inline-block text-sm text-primary-500 hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300"},n(c.value),9,xv)):z("",!0)])])}}}),bv={class:"flex h-full flex-col"},kv={class:"relative z-20 flex items-center gap-2 border-b border-gray-200 px-4 py-2 dark:border-gray-700"},_v={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"},wv={class:"flex-1 overflow-auto"},$v={key:0,class:"flex h-full items-center justify-center"},Cv={class:"text-sm text-gray-400"},Sv={key:1,class:"w-full border-collapse text-xs"},Tv={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},Mv={class:"font-mono text-xs font-medium text-gray-700 dark:text-gray-300"},Iv={class:"text-[10px] leading-tight text-gray-400"},Dv={class:"border-b border-r border-gray-100 px-2 py-1.5 text-gray-400 dark:border-gray-800"},Lv=["title"],Av=["onUpdate:modelValue"],qv={class:"w-full truncate px-2 py-1.5"},Rv={key:0,class:"italic text-gray-400"},Pv={key:1},zv={class:"border-b border-gray-100 px-2 py-1.5 text-center dark:border-gray-800"},Ev={key:0,class:"flex items-center justify-center gap-1"},Bv={key:1,class:"flex items-center justify-center gap-1"},jv={class:"flex items-center justify-between border-t border-gray-200 px-4 py-2 dark:border-gray-700"},Uv={class:"text-xs text-gray-500 dark:text-gray-400"},Fv={key:0,class:"flex items-center gap-3"},Vv={class:"text-xs text-gray-500 dark:text-gray-400"},_t=100,Nv=fe({__name:"TableBrowser",props:{sessionId:{}},setup(l){const s=["member","meta","message","message_context","member_name_history"],{t,locale:c}=ke(),r=l,m=x(localStorage.getItem("debug_dbSource")||"chat"),u=x([]),d=x(""),g=x(null),v=x(!1),y=x(null),C=x(1),f=x(0),b=h(()=>Math.max(1,Math.ceil(f.value/_t))),M=x(null),R=x({}),w=x(!1),S=h(()=>m.value==="ai"),T=x([]),D=x(""),k=h(()=>S.value&&d.value==="ai_message"&&T.value.length>0),$=h(()=>{const G={label:t("analysis.debug.tableBrowser.allConversations"),value:"__all__"},B=T.value.map(V=>({label:V.title||V.id.slice(0,16),value:V.id}));return[G,...B]});async function I(){if(!S.value){T.value=[];return}try{const G=r.sessionId.replace(/'/g,"''"),B=await Ne().executeAiSQL(`SELECT id, title FROM ai_chat WHERE session_id = '${G}' ORDER BY updated_at DESC`);T.value=B.rows.map(V=>({id:String(V[0]),title:V[1]?String(V[1]):null})),D.value="__all__"}catch{T.value=[]}}const q=h(()=>[{label:t("analysis.debug.tableBrowser.chatDb"),value:"chat"},{label:t("analysis.debug.tableBrowser.aiDb"),value:"ai"}]),E=h(()=>{const G=[...u.value];return G.sort((B,V)=>{const N=s.indexOf(B.name),Q=s.indexOf(V.name);return N!==-1&&Q!==-1?N-Q:N!==-1?-1:Q!==-1?1:0}),G}),A=h(()=>E.value.map(G=>({label:G.name,value:G.name})));async function _(G){return m.value==="ai"?await Ne().executeAiSQL(G):await Fe().executeSQL(r.sessionId,G)}async function L(){try{if(m.value==="ai"?u.value=await Ne().getAiSchema():u.value=await Fe().getSchema(r.sessionId),E.value.length>0){const G=S.value?"ai_message":E.value[0].name;d.value=E.value.some(B=>B.name===G)?G:E.value[0].name}else d.value="",g.value=null}catch(G){console.error("Failed to load schema:",G)}}function Y(){if(!S.value)return"";const G=r.sessionId.replace(/'/g,"''"),B=d.value;return B==="ai_chat"?` WHERE "session_id" = '${G}'`:B==="ai_message"?D.value&&D.value!=="__all__"?` WHERE "ai_chat_id" = '${D.value.replace(/'/g,"''")}'`:` WHERE "ai_chat_id" IN (SELECT "id" FROM "ai_chat" WHERE "session_id" = '${G}')`:""}async function ae(){if(d.value){v.value=!0,y.value=null,M.value=null;try{const G=Y(),B=await _(`SELECT COUNT(*) as cnt FROM "${d.value}"${G}`);f.value=B?.rows?.[0]?.[0]??0;const V=(C.value-1)*_t;g.value=await _(`SELECT * FROM "${d.value}"${G} ORDER BY rowid DESC LIMIT ${_t} OFFSET ${V}`)}catch(G){y.value=G.message||String(G),g.value=null}finally{v.value=!1}}}function W(G){if(!g.value)return;M.value=G;const B=g.value.rows[G],V={};g.value.columns.forEach((N,Q)=>{V[N]=B[Q]==null?"":String(B[Q])}),R.value=V}function ve(){M.value=null,R.value={}}async function he(){if(M.value===null||!g.value)return;const G=d.value,B=u.value.find(ne=>ne.name===G);if(!B)return;const V=B.columns.find(ne=>ne.pk);if(!V){y.value="No primary key found for this table";return}const N=g.value.rows[M.value],Q=g.value.columns.indexOf(V.name),ce=N[Q],de=g.value.columns.filter(ne=>ne!==V.name).map(ne=>`"${ne}" = '${R.value[ne].replace(/'/g,"''")}'`).join(", "),J=`UPDATE "${G}" SET ${de} WHERE "${V.name}" = '${String(ce).replace(/'/g,"''")}'`;try{await _(J),ve(),await ae()}catch(ne){y.value=ne.message||String(ne)}}async function X(G){if(!g.value)return;const B=d.value,V=u.value.find(ne=>ne.name===B);if(!V)return;const N=V.columns.find(ne=>ne.pk);if(!N){y.value="No primary key found for this table";return}const Q=g.value.rows[G],ce=g.value.columns.indexOf(N.name),de=Q[ce],J=`DELETE FROM "${B}" WHERE "${N.name}" = '${String(de).replace(/'/g,"''")}'`;try{await _(J),await ae()}catch(ne){y.value=ne.message||String(ne)}}function F(G){confirm(t("analysis.debug.tableBrowser.confirmDelete"))&&X(G)}async function te(){if(confirm(t("analysis.debug.tableBrowser.confirmClearDebug"))){w.value=!0;try{(await Ne().clearDebugContext()).success&&await ae()}catch(G){y.value=G.message||String(G)}finally{w.value=!1}}}function ye(G){navigator.clipboard.writeText(G)}function xe(G,B,V){if(!g.value)return[];const N=G==null?"NULL":String(G),Q=g.value.rows[V],ce={};return g.value.columns.forEach((de,J)=>{ce[de]=Q[J]}),[[{label:t("analysis.debug.tableBrowser.copyCell"),class:"p-2",onSelect:()=>ye(N)},{label:t("analysis.debug.tableBrowser.editRow"),class:"p-2",onSelect:()=>W(V)},{label:t("analysis.debug.tableBrowser.copyRow"),class:"p-2",onSelect:()=>ye(JSON.stringify(ce,null,2))},{label:t("analysis.debug.tableBrowser.deleteRow"),class:"p-2 text-red-600 dark:text-red-400",onSelect:()=>X(V)}]]}return pe(m,G=>{localStorage.setItem("debug_dbSource",G),d.value="",g.value=null,f.value=0,C.value=1,D.value="",L(),I()}),pe(d,G=>{G&&(C.value=1,ae())}),pe(D,()=>{d.value==="ai_message"&&(C.value=1,ae())}),pe(C,()=>{ae()}),ze(async()=>{await Promise.all([L(),I()]),d.value&&await ae()}),(G,B)=>{const V=Kt,N=Re,Q=ga;return o(),i("div",bv,[e("div",kv,[p(a(et),{modelValue:m.value,"onUpdate:modelValue":B[0]||(B[0]=ce=>m.value=ce),items:q.value,size:"xs"},null,8,["modelValue","items"]),B[5]||(B[5]=e("div",{class:"mx-1 h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),e("div",{class:le([S.value?"max-w-[50%]":"flex-1","min-w-0"])},[p(a(et),{modelValue:d.value,"onUpdate:modelValue":B[1]||(B[1]=ce=>d.value=ce),items:A.value,size:"xs"},null,8,["modelValue","items"])],2),k.value?(o(),K(V,{key:0,modelValue:D.value,"onUpdate:modelValue":B[2]||(B[2]=ce=>D.value=ce),items:$.value,"value-key":"value",class:"w-48",size:"xs",ui:{content:"z-50"}},null,8,["modelValue","items"])):z("",!0),B[6]||(B[6]=e("div",{class:"flex-1"},null,-1)),S.value&&d.value==="ai_message"?(o(),K(N,{key:1,variant:"ghost",size:"xs",color:"error",icon:"i-heroicons-trash",loading:w.value,onClick:te},{default:U(()=>[se(n(a(t)("analysis.debug.tableBrowser.clearDebugContext")),1)]),_:1},8,["loading"])):z("",!0),p(N,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",loading:v.value,onClick:ae},{default:U(()=>[se(n(a(t)("analysis.debug.tableBrowser.refresh")),1)]),_:1},8,["loading"])]),y.value?(o(),i("div",_v,n(y.value),1)):z("",!0),e("div",wv,[!g.value&&!v.value?(o(),i("div",$v,[e("p",Cv,n(a(t)("analysis.debug.tableBrowser.noData")),1)])):g.value?(o(),i("table",Sv,[e("thead",Tv,[e("tr",null,[B[7]||(B[7]=e("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)),(o(!0),i(oe,null,ue(g.value.columns,ce=>(o(),i("th",{key:ce,class:"border-b border-r border-gray-200 px-2 py-1.5 text-left dark:border-gray-700"},[e("div",Mv,n(ce),1),e("div",Iv,n(a(Xt)(d.value,ce,a(c))),1)]))),128)),B[8]||(B[8]=e("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))])]),e("tbody",null,[(o(!0),i(oe,null,ue(g.value.rows,(ce,de)=>(o(),i("tr",{key:de,class:"transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[e("td",Dv,n((C.value-1)*_t+de+1),1),(o(!0),i(oe,null,ue(ce,(J,ne)=>(o(),i("td",{key:ne,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)},[M.value===de?Oe((o(),i("input",{key:0,"onUpdate:modelValue":be=>R.value[g.value.columns[ne]]=be,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,Av)),[[st,R.value[g.value.columns[ne]]]]):(o(),K(Q,{key:1,items:xe(J,ne,de)},{default:U(()=>[e("div",qv,[J==null?(o(),i("span",Rv,"NULL")):(o(),i("span",Pv,n(String(J).slice(0,200)),1))])]),_:2},1032,["items"]))],8,Lv))),128)),e("td",zv,[M.value===de?(o(),i("div",Ev,[p(N,{size:"xs",color:"primary",variant:"ghost",icon:"i-heroicons-check",onClick:he}),p(N,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-x-mark",onClick:ve})])):(o(),i("div",Bv,[p(N,{size:"xs",variant:"ghost",icon:"i-heroicons-pencil-square",onClick:J=>W(de)},null,8,["onClick"]),p(N,{size:"xs",variant:"ghost",color:"error",icon:"i-heroicons-trash",onClick:J=>F(de)},null,8,["onClick"])]))])]))),128))])])):z("",!0)]),e("div",jv,[e("span",Uv,n(f.value>0?a(t)("analysis.debug.tableBrowser.rowCount",{count:f.value}):""),1),b.value>1?(o(),i("div",Fv,[p(N,{size:"xs",variant:"ghost",disabled:C.value<=1,icon:"i-heroicons-chevron-left",onClick:B[3]||(B[3]=ce=>C.value--)},null,8,["disabled"]),e("span",Vv,n(a(t)("analysis.debug.tableBrowser.page",{current:C.value,total:b.value})),1),p(N,{size:"xs",variant:"ghost",disabled:C.value>=b.value,icon:"i-heroicons-chevron-right",onClick:B[4]||(B[4]=ce=>C.value++)},null,8,["disabled"])])):z("",!0)])])}}}),Ov={class:"flex h-full"},Hv={class:"w-56 shrink-0 overflow-y-auto border-r border-gray-200 bg-gray-50/50 dark:border-gray-700 dark:bg-page-dark/50"},Wv={key:0,class:"py-2"},Yv={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Kv=["title","onClick"],Qv={class:"truncate text-xs font-medium"},Gv={class:"truncate text-[10px] opacity-50"},Jv={key:1,class:"border-t border-gray-200 py-2 dark:border-gray-700"},Xv={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Zv=["title","onClick"],ey={class:"truncate text-xs font-medium"},ty={class:"truncate text-[10px] opacity-50"},ay={class:"flex flex-1 flex-col gap-4 overflow-y-auto p-4"},sy={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"},oy={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},ny={class:"mt-1 text-xs text-primary-600/70 dark:text-primary-400/70"},ry={key:1,class:"flex flex-col gap-3"},ly={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},iy={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},cy={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},dy={key:0,class:"text-red-500"},uy={key:1,class:"ml-1 text-gray-400"},my={key:2,class:"ml-1 text-gray-400"},gy={class:"flex items-center gap-3"},py={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},vy={key:2,class:"flex-1 min-h-0"},yy={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},hy={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"},fy={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"},xy={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"},by=fe({__name:"ToolTestTab",props:{sessionId:{}},setup(l){const{t:s}=ke(),t=l,c=x([]),r=x(""),m=x({}),u=x(!1),d=x(null),g=x(null),v=x(null),y=x(!1),C=x(null);function f(k){const $=`ai.assistant.builtinToolDesc.${k}`,I=s($);return I!==$?I:k}const b=h(()=>c.value.filter(k=>k.category==="core")),M=h(()=>c.value.filter(k=>k.category==="analysis")),R=h(()=>c.value.find(k=>k.name===r.value)),w=h(()=>{const k=R.value;if(!k?.parameters)return[];const $=k.parameters;if(!$.properties)return[];const I=new Set($.required??[]);return Object.entries($.properties).map(([q,E])=>{const A={name:q,type:E.type??"string",description:E.description??"",required:I.has(q),defaultValue:E.default};if(E.enum&&(A.enumValues=E.enum),E.type==="array"){A.isArray=!0;const _=E.items;A.arrayItemType=_?.type??"string"}return A})});pe(r,()=>{m.value={},g.value=null,v.value=null,C.value=null}),ze(async()=>{try{c.value=await Ne().getToolCatalog(),c.value.length>0&&(r.value=c.value[0].name)}catch(k){console.error("Failed to load tool catalog:",k)}});function S(){const k={};for(const $ of w.value){const I=m.value[$.name];if(!(I===void 0||I===""))if($.type==="number"){const q=Number(I);isNaN(q)||(k[$.name]=q)}else $.isArray?k[$.name]=I.split(",").map(q=>q.trim()).filter(Boolean):k[$.name]=I}return k}async function T(){if(!r.value||u.value)return;u.value=!0,g.value=null,v.value=null,y.value=!1,C.value=null;const k=`tool_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;d.value=k;try{const $=S(),I=await Ne().executeTool(k,r.value,$,t.sessionId);if(I.error==="cancelled")return;I.success?(C.value=I.elapsed??null,y.value=!!I.truncated,g.value=I.truncated?I.details?._preview??"":JSON.stringify(I.details??I.content,null,2)):v.value=I.error??"Unknown error"}catch($){v.value=String($)}finally{u.value=!1,d.value=null}}async function D(){d.value&&(await Ne().cancelToolTest(d.value),u.value=!1,d.value=null)}return(k,$)=>{const I=Kt,q=yt,E=Re,A=_e;return o(),i("div",Ov,[e("div",Hv,[b.value.length>0?(o(),i("div",Wv,[e("div",Yv,n(a(s)("ai.lab.toolTest.coreTools")),1),(o(!0),i(oe,null,ue(b.value,_=>(o(),i("button",{key:_.name,class:le(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[r.value===_.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:_.description,onClick:L=>r.value=_.name},[e("span",Qv,n(f(_.name)),1),e("span",Gv,n(_.name),1)],10,Kv))),128))])):z("",!0),M.value.length>0?(o(),i("div",Jv,[e("div",Xv,n(a(s)("ai.lab.toolTest.analysisTools")),1),(o(!0),i(oe,null,ue(M.value,_=>(o(),i("button",{key:_.name,class:le(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[r.value===_.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:_.description,onClick:L=>r.value=_.name},[e("span",ey,n(f(_.name)),1),e("span",ty,n(_.name),1)],10,Zv))),128))])):z("",!0)]),e("div",ay,[R.value?(o(),i("div",sy,[e("div",oy,n(f(R.value.name)),1),e("div",ny,n(R.value.description),1)])):z("",!0),w.value.length>0?(o(),i("div",ry,[e("h3",ly,n(a(s)("ai.lab.toolTest.parameters")),1),e("div",iy,[(o(!0),i(oe,null,ue(w.value,_=>(o(),i("div",{key:_.name,class:"flex flex-col gap-1"},[e("label",cy,[se(n(_.name)+" ",1),_.required?(o(),i("span",dy,"*")):z("",!0),_.type==="number"?(o(),i("span",uy,"(number)")):z("",!0),_.isArray?(o(),i("span",my,"("+n(_.arrayItemType)+"[])",1)):z("",!0)]),_.enumValues?(o(),K(I,{key:0,modelValue:m.value[_.name],"onUpdate:modelValue":L=>m.value[_.name]=L,items:_.enumValues,placeholder:_.description,size:"sm"},null,8,["modelValue","onUpdate:modelValue","items","placeholder"])):(o(),K(q,{key:1,modelValue:m.value[_.name],"onUpdate:modelValue":L=>m.value[_.name]=L,placeholder:_.isArray?a(s)("ai.lab.toolTest.arrayPlaceholder"):_.defaultValue!==void 0?String(_.defaultValue):_.description,type:_.type==="number"?"number":"text",size:"sm"},null,8,["modelValue","onUpdate:modelValue","placeholder","type"]))]))),128))])])):z("",!0),e("div",gy,[u.value?(o(),K(E,{key:1,color:"error",icon:"i-heroicons-stop",onClick:D},{default:U(()=>[se(n(a(s)("ai.lab.toolTest.cancel")),1)]),_:1})):(o(),K(E,{key:0,color:"primary",disabled:!r.value,icon:"i-heroicons-play",onClick:T},{default:U(()=>[se(n(a(s)("ai.lab.toolTest.execute")),1)]),_:1},8,["disabled"])),u.value?(o(),K(A,{key:2,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-gray-400"})):z("",!0),C.value!==null?(o(),i("span",py,n(a(s)("ai.lab.toolTest.elapsed",{ms:C.value})),1)):z("",!0)]),g.value||v.value?(o(),i("div",vy,[e("h3",yy,n(a(s)("ai.lab.toolTest.result")),1),v.value?(o(),i("div",hy,n(v.value),1)):(o(),i(oe,{key:1},[y.value?(o(),i("div",fy,n(a(s)("ai.lab.toolTest.truncated")),1)):z("",!0),e("pre",xy,n(g.value),1)],64))])):z("",!0)])])}}}),ky={class:"flex h-full flex-col"},_y={class:"min-h-0 flex-1 overflow-hidden"},wy=fe({__name:"DebugTab",props:{sessionId:{}},setup(l){const{t:s}=ke(),t=l,c=[{id:"sql-tables",label:s("analysis.debug.sqlTables"),icon:"i-heroicons-table-cells"},{id:"basic-tools",label:s("analysis.debug.basicTools"),icon:"i-heroicons-wrench-screwdriver"}],r=x("sql-tables");return(m,u)=>(o(),i("div",ky,[p(a(ia),{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=d=>r.value=d),items:c,"persist-key":"debugTab"},null,8,["modelValue"]),e("div",_y,[p(nt,{name:"fade",mode:"out-in"},{default:U(()=>[r.value==="sql-tables"?(o(),K(Nv,{key:0,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):r.value==="basic-tools"?(o(),K(by,{key:1,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):z("",!0)]),_:1})])]))}}),Ak=rt(wy,[["__scopeId","data-v-d712cb76"]]),$y={[De.TEXT]:"text",[De.IMAGE]:"image",[De.VOICE]:"voice",[De.VIDEO]:"video",[De.FILE]:"file",[De.EMOJI]:"emoji",[De.LINK]:"link",[De.LOCATION]:"location",[De.RED_PACKET]:"redPacket",[De.TRANSFER]:"transfer",[De.POKE]:"poke",[De.CALL]:"call",[De.SHARE]:"share",[De.REPLY]:"reply",[De.FORWARD]:"forward",[De.CONTACT]:"contact",[De.SYSTEM]:"system",[De.RECALL]:"recall",[De.OTHER]:"other"};function Ht(l,s){const t=$y[l];return s&&t?s(`common.messageType.${t}`):s?s("common.messageType.unknown"):"未知"}function qk(l){const s=h(()=>Wa(l)),t=h(()=>{const r=s.value;return r.length<2?!1:new Set(r.map(u=>$e(u.date).year())).size>1}),c=h(()=>{const r=s.value,m=50;if(r.length<=m){const v=t.value?"YYYY/MM/DD":"MM/DD";return{labels:r.map(y=>$e(y.date).format(v)),values:r.map(y=>y.messageCount)}}const u=Math.ceil(r.length/m),d=[],g=[];for(let v=0;v<r.length;v+=u){const y=r.slice(v,v+u);if(y.length===0)continue;const C=Math.floor(y.length/2),f=y[C].date,b=t.value?"YYYY/MM/DD":"MM/DD";d.push($e(f).format(b));const M=y.reduce((w,S)=>w+S.messageCount,0),R=Math.round(M/y.length);g.push(R)}return{labels:d,values:g}});return{isMultiYear:t,dailyChartData:c}}const Cy=86400;function $t(l){return typeof l=="number"&&Number.isFinite(l)}function Sy(l){return $t(l?.startTs)&&$t(l?.endTs)}function ba(l,s){const t=s?.startTs??l?.start,c=s?.endTs??l?.end;return!$t(t)||!$t(c)||c<t?null:{start:t,end:c}}function Ty(l){return!l||l.end<l.start?0:Math.max(Math.ceil((l.end-l.start)/Cy),1)}function My(l){return l?[$e.unix(l.start).format("YYYY-MM-DD"),$e.unix(l.end).format("YYYY-MM-DD")]:null}function Iy(l,s){const{t}=ke(),c=h(()=>ba(l.timeRange,l.timeFilter)),r=h(()=>Sy(l.timeFilter)),m=h(()=>Ty(c.value)),u=h(()=>r.value?l.filteredMessageCount:l.session.messageCount),d=h(()=>r.value?l.filteredMemberCount??l.session.memberCount:l.session.memberCount),g=h(()=>m.value),v=h(()=>g.value===0?0:Math.round(u.value/g.value)),y=h(()=>m.value===0?0:Math.round(u.value/m.value)),C=h(()=>l.messageTypes.find(q=>q.type===1)?.count||0),f=h(()=>l.hourlyActivity.length?l.hourlyActivity.reduce((I,q)=>q.messageCount>I.messageCount?q:I,l.hourlyActivity[0]):null),b=h(()=>s.value.length?s.value.reduce((I,q)=>q.messageCount>I.messageCount?q:I,s.value[0]):null),M=h(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),R=h(()=>{if(!s.value.length)return{weekday:0,weekend:0};const I=s.value.filter(A=>A.weekday>=1&&A.weekday<=5).reduce((A,_)=>A+_.messageCount,0),q=s.value.filter(A=>A.weekday>=6&&A.weekday<=7).reduce((A,_)=>A+_.messageCount,0),E=I+q;return{weekday:E>0?Math.round(I/E*100):0,weekend:E>0?Math.round(q/E*100):0}}),w=h(()=>l.dailyActivity.length?l.dailyActivity.reduce((I,q)=>q.messageCount>I.messageCount?q:I,l.dailyActivity[0]):null),S=h(()=>l.dailyActivity.filter(I=>I.messageCount>0).length),T=h(()=>m.value),D=h(()=>T.value>0?Math.round(S.value/T.value*100):0),k=h(()=>{if(!l.hourlyActivity.length)return{count:0,ratio:0};const I=l.hourlyActivity.reduce((E,A)=>E+A.messageCount,0),q=l.hourlyActivity.filter(E=>E.hour>=0&&E.hour<=4).reduce((E,A)=>E+A.messageCount,0);return{count:q,ratio:I>0?Math.round(q/I*100):0}}),$=h(()=>{if(!l.dailyActivity.length)return 0;const I=[...l.dailyActivity].filter(A=>A.messageCount>0).sort((A,_)=>$e(A.date).valueOf()-$e(_.date).valueOf());if(I.length===0)return 0;let q=1,E=1;for(let A=1;A<I.length;A++){const _=$e(I[A-1].date);$e(I[A].date).diff(_,"day")===1?E++:(E>q&&(q=E),E=1)}return E>q&&(q=E),q});return{durationDays:m,displayMessageCount:u,displayMemberCount:d,dailyAvgMessages:y,totalDurationDays:g,totalDailyAvgMessages:v,imageCount:C,peakHour:f,peakWeekday:b,weekdayNames:M,weekdayVsWeekend:R,peakDay:w,activeDays:S,totalDays:T,activeRate:D,lateNightChat:k,maxConsecutiveDays:$}}const Dy={key:0,class:"relative z-10 px-6 pb-6 pt-2 sm:px-8"},Ly={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Ay={class:"min-w-0"},qy={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ry={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Py={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},zy={class:"text-sm text-gray-500"},Ey={class:"text-sm text-gray-500"},By={class:"ml-1 font-semibold text-pink-500"},jy={class:"text-sm text-gray-500"},Uy={class:"text-sm text-gray-500"},Fy={class:"text-sm text-gray-500"},Vy={class:"text-sm text-gray-500"},Ny={class:"text-sm text-gray-500"},Oy={class:"text-sm text-gray-500"},Hy=fe({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(l){const{t:s}=ke(),t=l,c=h(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:s("analysis.overview.statCards.dailyAvgMessages"),value:s("analysis.overview.statCards.messagesCount",{count:t.dailyAvgMessages}),subtext:s("analysis.overview.statCards.daysCount",{count:t.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:s("analysis.overview.statCards.imageMessages"),value:s("analysis.overview.statCards.imagesCount",{count:t.imageCount}),subtext:`${s("analysis.overview.statCards.peakHour")} ${t.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:s("analysis.overview.statCards.mostActiveWeekday"),value:t.peakWeekday?t.weekdayNames[t.peakWeekday.weekday-1]:"-",subtext:s("analysis.overview.statCards.messagesOnDay",{count:t.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:s("analysis.overview.statCards.weekendActivity"),value:`${t.weekdayVsWeekend.weekend}%`,subtext:s("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:s("analysis.overview.statCards.mostActiveDate"),value:t.peakDay?$e(t.peakDay.date).format("MM/DD"):"-",subtext:s("analysis.overview.statCards.messagesOnDay",{count:t.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:s("analysis.overview.statCards.lateNightChat"),value:s("analysis.overview.statCards.messagesCount",{count:t.lateNightCount}),subtext:s("analysis.overview.statCards.lateNightRatio",{ratio:t.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:s("analysis.overview.statCards.consecutiveStreak"),value:s("analysis.overview.statCards.daysStreak",{count:t.maxConsecutiveDays}),subtext:s("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:s("analysis.overview.statCards.activityRate"),value:`${t.activeRate}%`,subtext:s("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(r,m)=>{const u=_e;return l.flat?(o(),i("div",Dy,[m[0]||(m[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),e("div",Ly,[(o(!0),i(oe,null,ue(c.value,d=>(o(),i("div",{key:d.icon+d.label,class:"flex items-start gap-2 rounded-lg bg-white/60 p-2.5 ring-1 ring-gray-900/5 dark:bg-white/5 dark:ring-white/10"},[p(u,{name:d.icon,class:le(["mt-0.5 h-3.5 w-3.5 shrink-0",d.colorClass])},null,8,["name","class"]),e("div",Ay,[e("div",{class:le(["truncate font-mono text-sm font-black leading-tight tabular-nums",d.colorClass])},n(d.value),3),e("div",qy,n(d.label),1),e("div",Ry,n(d.subtext),1)])]))),128))])])):(o(),i("div",Py,[p(a(Ze),{label:a(s)("analysis.overview.statCards.dailyAvgMessages"),value:a(s)("analysis.overview.statCards.messagesCount",{count:l.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:U(()=>[e("span",zy,n(a(s)("analysis.overview.statCards.daysCount",{count:l.durationDays})),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.imageMessages"),value:a(s)("analysis.overview.statCards.imagesCount",{count:l.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:U(()=>[e("span",Ey,n(a(s)("analysis.overview.statCards.peakHour")),1),e("span",By,n(l.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.mostActiveWeekday"),value:l.peakWeekday?l.weekdayNames[l.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:U(()=>[e("span",jy,n(a(s)("analysis.overview.statCards.messagesOnDay",{count:l.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.weekendActivity"),value:`${l.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:U(()=>[e("span",Uy,n(a(s)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.mostActiveDate"),value:l.peakDay?a($e)(l.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:U(()=>[e("span",Fy,n(a(s)("analysis.overview.statCards.messagesOnDay",{count:l.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.lateNightChat"),value:a(s)("analysis.overview.statCards.messagesCount",{count:l.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:U(()=>[e("span",Vy,n(a(s)("analysis.overview.statCards.lateNightRatio",{ratio:l.lateNightRatio})),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.consecutiveStreak"),value:a(s)("analysis.overview.statCards.daysStreak",{count:l.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:U(()=>[e("span",Ny,n(a(s)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),p(a(Ze),{label:a(s)("analysis.overview.statCards.activityRate"),value:`${l.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:U(()=>[e("span",Oy,n(a(s)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),Wy={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Yy={class:"text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100"},Ky={class:"mt-4 flex items-start gap-6 sm:gap-24"},Qy={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Gy={class:"flex items-center gap-2"},Jy={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Xy={class:"whitespace-nowrap"},Zy={key:0,class:"flex items-center gap-2"},eh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},th={class:"font-mono text-xs opacity-90 whitespace-nowrap"},ah={class:"flex shrink-0 gap-6"},sh={class:"flex flex-col gap-1 text-center"},oh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},nh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},rh={class:"flex flex-col gap-1 text-center"},lh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},ih={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ch={class:"flex flex-col gap-1 text-center"},dh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},uh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},mh={class:"flex flex-col gap-1 text-center"},gh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},ph={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},vh={class:"relative z-10 px-6 pb-2 sm:px-8"},yh={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},Rk=fe({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(l){ht([Gt,ss,ha,Dt,Jt,ft]);const{t:s,locale:t}=ke(),c=pt(),r=l,m=x([]);async function u(){if(r.session.id)try{m.value=await Fe().getWeekdayActivity(r.session.id,r.timeFilter)}catch(F){console.error("加载星期活跃度失败:",F)}}pe(()=>[r.session.id,r.timeFilter],()=>u(),{immediate:!0,deep:!0});const{durationDays:d,displayMessageCount:g,dailyAvgMessages:v,imageCount:y,peakHour:C,peakWeekday:f,weekdayNames:b,weekdayVsWeekend:M,peakDay:R,activeDays:w,totalDays:S,activeRate:T,lateNightChat:D,maxConsecutiveDays:k}=Iy(r,m),$=x(null);let I=null;const q=h(()=>ba(r.timeRange,r.timeFilter)),E=h(()=>q.value?Bt(q.value.start,q.value.end,"YYYY/MM/DD"):""),A=h(()=>{const F=My(q.value);if(F)return F;const xe=(G=>G.toISOString().slice(0,10))(new Date);return[xe,xe]}),_=h(()=>{const[F,te]=A.value,ye=new Date(F+"T00:00:00Z"),xe=new Date(te+"T00:00:00Z"),G=new Map;r.dailyActivity.filter(N=>N.date>=F&&N.date<=te).forEach(N=>G.set(N.date,N.messageCount));const B=[],V=new Date(ye);for(;V<=xe;){const N=V.toISOString().slice(0,10),Q=G.get(N)||0;B.push({value:[N,Q],itemStyle:Q===0?{color:ae.value}:void 0}),V.setUTCDate(V.getUTCDate()+1)}return B}),L=h(()=>r.dailyActivity.length===0?10:Math.max(...r.dailyActivity.map(F=>F.messageCount),1)),Y={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)"]},ae=h(()=>c.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),W=h(()=>({tooltip:{trigger:"item",formatter:F=>{const te=F.value[0],ye=F.value[1];return`${te}<br/>${s("views.message.calendarTooltipMessages")}: ${ye}`}},visualMap:{min:1,max:L.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${L.value}`,"1"],inRange:{color:c.value?Y.dark:Y.light},textStyle:{color:c.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:A.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:c.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[s("common.month.jan"),s("common.month.feb"),s("common.month.mar"),s("common.month.apr"),s("common.month.may"),s("common.month.jun"),s("common.month.jul"),s("common.month.aug"),s("common.month.sep"),s("common.month.oct"),s("common.month.nov"),s("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:c.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[s("common.weekday.sun"),s("common.weekday.mon"),s("common.weekday.tue"),s("common.weekday.wed"),s("common.weekday.thu"),s("common.weekday.fri"),s("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:_.value,renderItem:(F,te)=>{const ye=te.coord(te.value(0)),xe=F.coordSys.cellWidth,G=F.coordSys.cellHeight,B=Math.min(xe,G)-3;return{type:"rect",shape:{x:ye[0]-B/2,y:ye[1]-B/2,width:B,height:B,r:3},style:{fill:te.visual("color")}}},itemStyle:{borderColor:c.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function ve(){$.value&&(I=xt($.value,void 0,{renderer:"canvas"}),I.setOption({backgroundColor:"transparent",...W.value}))}function he(){I&&I.setOption({backgroundColor:"transparent",...W.value},{notMerge:!0})}function X(){I?.resize()}return pe([()=>r.dailyActivity,t,A],()=>he()),pe(c,()=>{I?.dispose(),ve()}),ze(()=>{ve(),window.addEventListener("resize",X)}),lt(()=>{window.removeEventListener("resize",X),I?.dispose()}),(F,te)=>{const ye=_e;return o(),K(a(it),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:U(()=>[e("div",Wy,[e("h2",Yy,n(l.session.name),1),e("div",Ky,[e("div",Qy,[e("div",Gy,[e("div",Jy,[l.session.type==="group"?(o(),K(ye,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(o(),K(ye,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),e("span",Xy,n(l.session.platform.toUpperCase())+" · "+n(l.session.type==="private"?a(s)("analysis.overview.identity.privateChat"):a(s)("analysis.overview.identity.groupChat")),1)]),E.value?(o(),i("div",Zy,[e("div",eh,[p(ye,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),e("span",th,n(E.value),1)])):z("",!0)]),e("div",ah,[e("div",sh,[e("span",oh,n(a(g).toLocaleString()),1),e("span",nh,n(a(s)("analysis.overview.identity.totalMessages")),1)]),e("div",rh,[e("span",lh,n(a(d).toLocaleString()),1),e("span",ih,n(a(s)("analysis.overview.identity.durationDays")),1)]),e("div",ch,[e("span",dh,n(a(w).toLocaleString()),1),e("span",uh,n(a(s)("analysis.overview.identity.activeDays")),1)]),e("div",mh,[e("span",gh,n(a(v).toLocaleString()),1),e("span",ph,n(a(s)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),e("div",vh,[te[0]||(te[0]=e("div",{class:"mb-2 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),e("div",yh,[e("div",{ref_key:"chartRef",ref:$,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),p(Hy,{flat:"","daily-avg-messages":a(v),"duration-days":a(d),"image-count":a(y),"peak-hour":a(C),"peak-weekday":a(f),"weekday-names":a(b),"weekday-vs-weekend":a(M),"peak-day":a(R),"active-days":a(w),"total-days":a(S),"active-rate":a(T),"late-night-count":a(D).count,"late-night-ratio":a(D).ratio,"max-consecutive-days":a(k)},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})}}}),hh={class:"p-5"},Pk=fe({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{}},setup(l){const{t:s}=ke();return(t,c)=>l.dailyActivity.length>0?(o(),K(a(Ye),{key:0,title:a(s)("analysis.overview.dailyTrend.title"),"show-divider":!1},{default:U(()=>[e("div",hh,[p(a(Ft),{data:l.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title"])):z("",!0)}}),fh={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},xh={class:"flex items-center gap-6 sm:gap-10"},bh={class:"min-w-0 flex-1"},kh={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},_h={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},wh={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},$h={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Ch={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Sh={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Th={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},Mh={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Ih={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},Dh={class:"flex shrink-0 flex-col items-center"},Lh={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Ah={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},qh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Rh={class:"min-w-0 flex-1"},Ph={class:"flex items-center justify-between gap-1"},zh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Eh={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Bh={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"},jh={class:"flex items-center gap-1.5"},Uh={class:"text-[9px] font-medium uppercase tracking-widest"},Fh=fe({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(l){ht([pa,Dt,ft]);const{t:s}=ke(),t=pt(),c=l,r=h(()=>c.messageTypes.reduce((_,L)=>_+L.count,0)),m=h(()=>c.messageTypes.find(_=>_.type===De.TEXT)?.count??0),u=h(()=>{if(r.value===0)return 0;const _=r.value-m.value;return Math.round(_/r.value*100)}),d=h(()=>c.textStats.textCount===0?0:Math.round(c.textStats.shortCount/c.textStats.textCount*100)),g=x({first:"",last:""});async function v(){if(c.sessionId)try{const _=await Fe().getDailyActivity(c.sessionId,c.timeFilter);if(_.length>0){const L=[..._].sort((Y,ae)=>Y.date.localeCompare(ae.date));g.value={first:$e(L[0].date).format("YYYY/MM/DD"),last:$e(L[L.length-1].date).format("YYYY/MM/DD")}}}catch{}}function y(_){return c.messageTypes.find(L=>L.type===_)?.count??0}const C=h(()=>[{label:s("views.message.typeCard.nonTextImage"),count:y(De.IMAGE),unit:s("views.message.typeCard.unitImage")},{label:s("views.message.typeCard.nonTextEmoji"),count:y(De.EMOJI),unit:s("views.message.typeCard.unitEmoji")},{label:s("views.message.typeCard.nonTextVoice"),count:y(De.VOICE),unit:s("views.message.typeCard.unitVoice")},{label:s("views.message.typeCard.nonTextVideo"),count:y(De.VIDEO),unit:s("views.message.typeCard.unitVideo")},{label:s("views.message.typeCard.nonTextFile"),count:y(De.FILE),unit:s("views.message.typeCard.unitFile")},{label:s("views.message.typeCard.nonTextLink"),count:y(De.LINK),unit:s("views.message.typeCard.unitLink")}].filter(_=>_.count>0)),f=x(30),b=x(0),M=x(!1),R=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],w=h({get:()=>f.value,set:_=>{f.value!==_&&(f.value=_,S())}});async function S(){if(c.sessionId){M.value=!0;try{b.value=await Fe().getLongMessageCount(c.sessionId,c.timeFilter,f.value)}catch(_){console.error("[chart-message] Failed to load essay count:",_)}finally{M.value=!1}}}pe(()=>[c.sessionId,c.timeFilter],()=>{S(),v()},{immediate:!0,deep:!0});const T=h(()=>[{icon:"i-heroicons-pencil-square",label:s("views.message.profile.textExpression"),value:s("views.message.profile.avgLengthUnit",{count:c.textStats.avgLength||0}),subtext:c.textStats.maxLength>0?s("views.message.profile.textExpressionDesc",{count:c.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:s("views.message.profile.shortMaster"),value:`${d.value}%`,subtext:s("views.message.profile.shortMasterDesc",{count:c.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:s("views.message.profile.essayLover"),value:b.value.toLocaleString(),subtext:s("views.message.profile.essayLoverDesc",{threshold:f.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:s("views.message.profile.mediaRichness"),value:`${u.value}%`,subtext:C.value.slice(0,3).map(_=>`${_.label} ${_.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),D=x(null);let k=null;const $=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],I=h(()=>[...c.messageTypes].sort((L,Y)=>Y.count-L.count).slice(0,8).map((L,Y)=>({name:Ht(L.type,s),value:L.count,itemStyle:{color:$[Y%$.length]}})));function q(){D.value&&(k=xt(D.value,void 0,{renderer:"canvas"}),E())}function E(){k&&k.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:I.value}]},{notMerge:!0})}function A(){k?.resize()}return pe(()=>c.messageTypes,()=>E()),pe(t,()=>{k?.dispose(),q()}),ze(()=>{q(),window.addEventListener("resize",A)}),lt(()=>{window.removeEventListener("resize",A),k?.dispose()}),(_,L)=>{const Y=_e,ae=It;return o(),K(a(it),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:U(()=>[e("div",fh,[e("div",xh,[e("div",bh,[e("div",kh,[g.value.first?(o(),i("p",_h,n(g.value.first)+" – "+n(g.value.last),1)):z("",!0),e("div",wh,[e("span",$h,n(a(s)("views.message.profile.heroLine1Prefix")),1),e("span",Ch,n(r.value.toLocaleString()),1),e("span",Sh,n(a(s)("views.message.profile.heroLine1Suffix")),1)]),C.value.length>0?(o(),i("div",Th,[e("span",Mh,n(a(s)("views.message.typeCard.nonTextPrefix")),1),(o(!0),i(oe,null,ue(C.value,W=>(o(),i("span",{key:W.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"},[e("span",Ih,n(W.count.toLocaleString()),1),e("span",null,n(W.unit),1)]))),128))])):z("",!0)])]),e("div",Dh,[e("div",Lh,n(a(s)("views.message.profile.typeDistribution")),1),e("div",{ref_key:"donutRef",ref:D,style:{width:"130px",height:"130px"}},null,512)])])]),e("div",Ah,[L[1]||(L[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),e("div",qh,[(o(!0),i(oe,null,ue(T.value,W=>(o(),i("div",{key:W.icon+W.label,class:"flex items-start gap-2 rounded-lg bg-white/60 p-2.5 ring-1 ring-gray-900/5 dark:bg-white/5 dark:ring-white/10"},[p(Y,{name:W.icon,class:le(["mt-0.5 h-3.5 w-3.5 shrink-0",W.colorClass])},null,8,["name","class"]),e("div",Rh,[e("div",Ph,[e("div",{class:le(["truncate font-mono text-sm font-black leading-tight tabular-nums",W.colorClass])},n(W.value),3),W.slot==="essay-threshold"?(o(),K(ae,{key:0,modelValue:w.value,"onUpdate:modelValue":L[0]||(L[0]=ve=>w.value=ve),items:R,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:M.value},null,8,["modelValue","disabled"])):z("",!0)]),e("div",zh,n(W.label),1),e("div",Eh,n(W.subtext),1)])]))),128))])]),e("div",Bh,[e("div",jh,[p(Y,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),L[2]||(L[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Uh,n(a(s)("views.message.typeCard.watermark")),1)])]),_:1})}}}),Vh={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Nh={class:"p-5"},Oh={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Hh={class:"space-y-3"},Wh={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},Yh={class:"flex-1"},Kh={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},Qh={class:"shrink-0 text-right"},Gh={class:"text-sm font-medium text-gray-900 dark:text-white"},Jh={class:"ml-1 text-xs text-gray-400"},Xh={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Zh={class:"p-5"},ef={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},tf={class:"rounded-lg bg-gray-50 p-3 dark:bg-gray-800/50"},af={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},sf={class:"mt-1 text-xs text-gray-500"},of={class:"rounded-lg bg-gray-50 p-3 dark:bg-gray-800/50"},nf={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},rf={class:"mt-1 text-xs text-gray-500"},lf={class:"rounded-lg bg-gray-50 p-3 dark:bg-gray-800/50"},cf={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},df={class:"mt-1 text-xs text-gray-500"},uf={class:"rounded-lg bg-gray-50 p-3 dark:bg-gray-800/50"},mf={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},gf={class:"mt-1 text-xs text-gray-500"},pf={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},vf={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},yf={class:"flex items-center gap-4 text-sm"},hf={class:"flex items-center gap-1.5"},ff={class:"font-mono font-medium text-gray-900 dark:text-white"},xf={class:"flex items-center gap-1.5"},bf={class:"font-mono font-medium text-gray-900 dark:text-white"},kf={class:"flex items-center gap-1.5"},_f={class:"font-mono font-medium text-gray-900 dark:text-white"},wf={class:"flex items-center gap-1.5"},$f={class:"font-mono font-medium text-gray-900 dark:text-white"},Cf={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},Sf={class:"text-gray-500"},Tf={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},Mf={class:"text-gray-400"},If={class:"text-gray-500"},Df={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},Lf={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Af={class:"text-xs text-gray-400"},qf={class:"p-5"},Rf={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Pf={class:"text-xs text-gray-400"},zf={class:"p-5"},Ef={key:1,class:"flex h-48 items-center justify-center text-gray-400"},zk=fe({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const s=l,{t}=ke(),c=x(!0),r=x([]),m=x([]),u=x([]),d=x({textCount:0,avgLength:0,maxLength:0,shortCount:0}),g=x({p25:0,p50:0,p75:0,p90:0}),v=x(0),y=h(()=>{const T=[...r.value].sort((D,k)=>k.count-D.count);return{labels:T.map(D=>Ht(D.type,t)),values:T.map(D=>D.count)}}),C=h(()=>{const T=r.value.reduce((k,$)=>k+$.count,0);return[...r.value].sort((k,$)=>$.count-k.count).map(k=>({name:Ht(k.type,t),count:k.count,percentage:T>0?Math.round(k.count/T*100):0}))}),f=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function b(T){return f[T%f.length]}const M=h(()=>({labels:m.value.map(T=>String(T.len)),values:m.value.map(T=>T.count)})),R=h(()=>({labels:u.value.map(T=>T.range),values:u.value.map(T=>T.count)})),w=h(()=>d.value.textCount===0?0:Math.round(d.value.shortCount/d.value.textCount*100));async function S(){if(s.sessionId){c.value=!0;try{const T=Fe(),[D,k,$,I,q]=await Promise.all([T.getMessageTypeDistribution(s.sessionId,s.timeFilter),T.getMessageLengthDistribution(s.sessionId,s.timeFilter),T.getTextStats(s.sessionId,s.timeFilter),T.getTextLengthPercentiles(s.sessionId,s.timeFilter),T.getLongMessageCount(s.sessionId,s.timeFilter,30)]);r.value=D,m.value=k.detail,u.value=k.grouped,d.value=$,g.value=I,v.value=q}catch(T){console.error("[chart-message] Failed to load type analysis data:",T)}finally{c.value=!1}}}return pe(()=>[s.sessionId,s.timeFilter],()=>S(),{immediate:!0,deep:!0}),(T,D)=>(o(),i("div",{class:le(c.value?"h-full":"")},[c.value?(o(),K(a(mt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(o(),i("div",Vh,[r.value.length>0?(o(),K(Fh,{key:0,"session-id":l.sessionId,"message-types":r.value,"text-stats":d.value,"time-filter":l.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):z("",!0),p(a(Ye),{title:a(t)("views.message.typeDistribution"),"show-divider":!1},{default:U(()=>[e("div",Nh,[y.value.values.length>0?(o(),i("div",Oh,[e("div",null,[p(a(Vt),{data:y.value,height:280,"show-legend":!1},null,8,["data"])]),e("div",null,[e("div",Hh,[(o(!0),i(oe,null,ue(C.value,(k,$)=>(o(),i("div",{key:$,class:"flex items-center gap-3"},[e("div",{class:"h-3 w-3 shrink-0 rounded-full",style:Ge({backgroundColor:b($)})},null,4),e("div",Wh,n(k.name),1),e("div",Yh,[e("div",Kh,[e("div",{class:"h-full rounded-full transition-all",style:Ge({width:`${k.percentage}%`,backgroundColor:b($)})},null,4)])]),e("div",Qh,[e("span",Gh,n(k.count.toLocaleString()),1),e("span",Jh,"("+n(k.percentage)+"%)",1)])]))),128))])])])):(o(),i("div",Xh,n(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:U(()=>[e("div",Zh,[e("div",ef,[e("div",tf,[e("div",af,n(d.value.textCount.toLocaleString()),1),e("div",sf,n(a(t)("views.message.typeAnalysis.textTotal")),1)]),e("div",of,[e("div",nf,n(d.value.avgLength||0),1),e("div",rf,n(a(t)("views.message.typeAnalysis.avgLength")),1)]),e("div",lf,[e("div",cf,n(g.value.p50),1),e("div",df,n(a(t)("views.message.typeAnalysis.medianLength")),1)]),e("div",uf,[e("div",mf,n(d.value.maxLength),1),e("div",gf,n(a(t)("views.message.typeAnalysis.maxLength")),1)])]),e("div",pf,[e("div",vf,n(a(t)("views.message.typeAnalysis.percentiles")),1),e("div",yf,[e("div",hf,[D[0]||(D[0]=e("span",{class:"text-gray-500"},"P25",-1)),e("span",ff,n(g.value.p25),1)]),e("div",xf,[D[1]||(D[1]=e("span",{class:"text-gray-500"},"P50",-1)),e("span",bf,n(g.value.p50),1)]),e("div",kf,[D[2]||(D[2]=e("span",{class:"text-gray-500"},"P75",-1)),e("span",_f,n(g.value.p75),1)]),e("div",wf,[D[3]||(D[3]=e("span",{class:"text-gray-500"},"P90",-1)),e("span",$f,n(g.value.p90),1)])]),e("div",Cf,[e("div",null,[e("span",Sf,n(a(t)("views.message.typeAnalysis.shortMessages")),1),e("span",Tf,n(w.value)+"%",1),e("span",Mf,"("+n(d.value.shortCount)+")",1)]),e("div",null,[e("span",If,n(a(t)("views.message.typeAnalysis.essayMessages")),1),e("span",Df,n(v.value),1)])])])])]),_:1},8,["title"]),e("div",Lf,[p(a(Ye),{title:a(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:U(()=>[e("span",Af,n(a(t)("views.message.lengthDetailHint")),1)]),default:U(()=>[e("div",qf,[M.value.values.some(k=>k>0)?(o(),K(a(tt),{key:0,data:M.value,height:200},null,8,["data"])):(o(),i("div",Rf,n(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:U(()=>[e("span",Pf,n(a(t)("views.message.lengthGroupedHint")),1)]),default:U(()=>[e("div",zf,[R.value.values.some(k=>k>0)?(o(),K(a(tt),{key:0,data:R.value,height:200},null,8,["data"])):(o(),i("div",Ef,n(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),Bf={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},jf={class:"flex items-start gap-6 sm:gap-10"},Uf={class:"min-w-0 flex-1"},Ff={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},Vf={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Nf={class:"mb-3 flex items-baseline gap-2"},Of={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Hf={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Wf={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},Yf={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Kf={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Qf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Gf={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},Jf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Xf={class:"text-base font-medium text-amber-600 dark:text-amber-400"},Zf={class:"flex shrink-0 flex-col items-center"},ex={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},tx={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},ax={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},sx={class:"min-w-0 flex-1"},ox={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},nx={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},rx={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"},ix={class:"text-[9px] font-medium uppercase tracking-widest"},cx=fe({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(l){ht([va,ya,ft]);const{t:s}=ke(),t=pt(),c=l,r=h(()=>c.dailyActivity.filter(k=>k.messageCount>0).length),m=h(()=>c.dailyActivity.reduce((k,$)=>k+$.messageCount,0)),u=h(()=>{if(c.dailyActivity.length===0)return{first:"",last:"",days:0};const k=[...c.dailyActivity].sort((q,E)=>q.date.localeCompare(E.date)),$=$e(k[0].date),I=$e(k[k.length-1].date);return{first:$.format("YYYY/MM/DD"),last:I.format("YYYY/MM/DD"),days:I.diff($,"day")+1}}),d=h(()=>r.value===0?0:Math.round(m.value/r.value)),g=h(()=>c.dailyActivity.length===0?null:c.dailyActivity.reduce((k,$)=>$.messageCount>k.messageCount?$:k,c.dailyActivity[0])),v=h(()=>c.hourlyActivity.length===0?[]:[...c.hourlyActivity].sort((k,$)=>$.messageCount-k.messageCount).slice(0,3)),y=h(()=>{if(c.hourlyActivity.length===0&&c.weekdayActivity.length===0)return null;const k=u.value.days>0?r.value/u.value.days:0,$=c.weekdayActivity.filter(X=>X.weekday===6||X.weekday===7),I=c.weekdayActivity.filter(X=>X.weekday>=1&&X.weekday<=5),q=$.reduce((X,F)=>X+F.messageCount,0),E=I.reduce((X,F)=>X+F.messageCount,0),A=q+E,_=A>0?q/A:0,L=c.hourlyActivity.reduce((X,F)=>X+F.messageCount,0),Y=c.hourlyActivity.filter(X=>X.hour>=22||X.hour<5).reduce((X,F)=>X+F.messageCount,0),ae=c.hourlyActivity.filter(X=>X.hour>=18&&X.hour<22).reduce((X,F)=>X+F.messageCount,0),W=L>0?Y/L:0,ve=L>0?ae/L:0;if(k>=.9)return{label:s("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(_>=.55)return{label:s("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(_<=.2&&A>0)return{label:s("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(W>=.3)return{label:s("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(ve>=.4)return{label:s("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const he=[...c.hourlyActivity].sort((X,F)=>F.messageCount-X.messageCount)[0];return he?he.hour>=5&&he.hour<9?{label:s("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:he.hour>=12&&he.hour<14?{label:s("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:s("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),C=h(()=>{const k=c.weekdayActivity.filter(A=>A.weekday===6||A.weekday===7),$=c.weekdayActivity.filter(A=>A.weekday>=1&&A.weekday<=5),I=k.reduce((A,_)=>A+_.messageCount,0),q=$.reduce((A,_)=>A+_.messageCount,0),E=I+q;return E===0?0:Math.round(I/E*100)}),f=h(()=>[s("common.weekday.mon"),s("common.weekday.tue"),s("common.weekday.wed"),s("common.weekday.thu"),s("common.weekday.fri"),s("common.weekday.sat"),s("common.weekday.sun")]),b=h(()=>{if(c.weekdayActivity.length===0)return null;const k=[...c.weekdayActivity].sort(($,I)=>I.messageCount-$.messageCount)[0];return{name:f.value[k.weekday-1],count:k.messageCount}}),M=h(()=>[{icon:"i-heroicons-fire",label:s("views.message.timeCard.peakRecord"),value:g.value?$e(g.value.date).format("MM/DD"):"-",subtext:g.value?s("views.message.timeCard.peakRecordDesc",{count:g.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:s("views.message.timeCard.topHoursLabel"),value:v.value.length>0?`${v.value[0].hour}:00`:"-",subtext:v.value.length>=2?v.value.map(k=>`${k.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:s("views.message.timeCard.peakWeekdayLabel"),value:b.value?.name||"-",subtext:b.value?`${b.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:s("views.message.timeCard.weekendRatio"),value:`${C.value}%`,subtext:s("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),R=x(null);let w=null;function S(){R.value&&(w=xt(R.value,void 0,{renderer:"canvas"}),T())}function T(){if(!w)return;const k=new Map(c.hourlyActivity.map(E=>[E.hour,E.messageCount])),$=[];for(let E=0;E<24;E++)$.push(k.get(E)||0);const I=Math.max(...$,1),q=$.map(E=>{const A=E/I;return A>.8?t.value?"#f472b6":"#ec4899":A>.5?t.value?"#a78bfa":"#8b5cf6":t.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});w.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:E=>`${E[0].axisValue}:00 — ${E[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(E,A)=>`${A}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:t.value?"#6b7280":"#9ca3af",interval:E=>E%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:$.map((E,A)=>({value:E,itemStyle:{color:q[A]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function D(){w?.resize()}return pe(()=>c.hourlyActivity,()=>T()),pe(t,()=>{w?.dispose(),S()}),ze(()=>{S(),window.addEventListener("resize",D)}),lt(()=>{window.removeEventListener("resize",D),w?.dispose()}),(k,$)=>{const I=_e;return o(),K(a(it),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:U(()=>[e("div",Bf,[e("div",jf,[e("div",Uf,[e("div",Ff,[u.value.first?(o(),i("p",Vf,n(u.value.first)+" – "+n(u.value.last),1)):z("",!0),e("div",Nf,[e("span",Of,n(u.value.days),1),e("span",Hf,n(a(s)("views.message.timeCard.heroDaysIn")),1),e("span",Wf,n(r.value),1),e("span",Yf,n(a(s)("views.message.timeCard.heroDaysActive")),1)]),e("div",Kf,[e("span",Qf,n(a(s)("views.message.timeCard.heroAvgPrefix")),1),e("span",Gf,n(d.value),1),e("span",Jf,n(a(s)("views.message.timeCard.heroAvgSuffix")),1),y.value?(o(),i(oe,{key:0},[p(I,{name:y.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),e("span",Xf,n(y.value.label),1)],64)):z("",!0)])])]),e("div",Zf,[e("div",ex,n(a(s)("views.message.timeCard.hourlyDistribution")),1),e("div",{ref_key:"barRef",ref:R,style:{width:"180px",height:"110px"}},null,512)])])]),e("div",tx,[$[0]||($[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),e("div",ax,[(o(!0),i(oe,null,ue(M.value,q=>(o(),i("div",{key:q.icon+q.label,class:"flex items-start gap-2 rounded-lg bg-white/60 p-2.5 ring-1 ring-gray-900/5 dark:bg-white/5 dark:ring-white/10"},[p(I,{name:q.icon,class:le(["mt-0.5 h-3.5 w-3.5 shrink-0",q.colorClass])},null,8,["name","class"]),e("div",sx,[e("div",{class:le(["truncate font-mono text-sm font-black leading-tight tabular-nums",q.colorClass])},n(q.value),3),e("div",ox,n(q.label),1),e("div",nx,n(q.subtext),1)])]))),128))])]),e("div",rx,[e("div",lx,[p(I,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),$[1]||($[1]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",ix,n(a(s)("views.message.timeCard.watermark")),1)])]),_:1})}}}),dx={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},ux={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},mx={class:"p-5"},gx={class:"p-5"},px={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},vx={class:"p-5"},yx={class:"p-5"},hx={key:1,class:"flex h-48 items-center justify-center text-gray-400"},fx={class:"text-xs text-gray-400"},xx={class:"p-5"},bx={key:1,class:"flex h-48 items-center justify-center text-gray-400"},kx={class:"text-xs text-gray-400"},_x={class:"p-5"},wx={class:"flex items-center gap-2"},$x={class:"text-xs text-gray-400"},Cx={class:"p-5"},Sx={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Ek=fe({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const s=l,{t}=ke(),c=x(!0),r=x([]),m=x([]),u=x([]),d=x([]),g=x([]),v=x([]),y=x([]),C=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],f=h(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),b=h(()=>[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]),M=h(()=>{const A=new Map(m.value.map(Y=>[Y.hour,Y.messageCount])),_=[],L=[];for(let Y=0;Y<24;Y++)_.push(`${Y}`),L.push(A.get(Y)||0);return{labels:_,values:L}}),R=h(()=>{const A=new Map(u.value.map(L=>[L.weekday,L.messageCount])),_=[];for(let L=1;L<=7;L++)_.push(A.get(L)||0);return{labels:f.value,values:_}}),w=h(()=>{const A=new Map(d.value.map(L=>[L.month,L.messageCount])),_=[];for(let L=1;L<=12;L++)_.push(A.get(L)||0);return{labels:b.value,values:_}}),S=h(()=>{const A=[...g.value].sort((_,L)=>_.year-L.year);return{labels:A.map(_=>String(_.year)),values:A.map(_=>_.messageCount)}}),T=h(()=>{const A=Array.from({length:24},(ae,W)=>`${W}:00`),_=f.value,L=r.value.reduce((ae,W)=>ae+W.count,0)||1,Y=[];for(let ae=1;ae<=7;ae++)for(let W=0;W<24;W++){const ve=u.value.find(F=>F.weekday===ae)?.messageCount||0,he=m.value.find(F=>F.hour===W)?.messageCount||0,X=Math.round(ve*he/L);Y.push([W,ae-1,X])}return{xLabels:A,yLabels:_,data:Y}}),D=h(()=>v.value.map(A=>({date:A.date,value:A.messageCount}))),k=h(()=>{const A=new Set;return v.value.forEach(_=>{const L=parseInt(_.date.split("-")[0]);isNaN(L)||A.add(L)}),Array.from(A).sort((_,L)=>L-_)}),$=x(new Date().getFullYear()),I=h(()=>{const A=$.value;return D.value.filter(_=>_.date.startsWith(`${A}-`))}),q=h(()=>{if(y.value.length===0)return{};const A=[...new Set(y.value.map(W=>W.month))].sort(),_=new Map;if(y.value.forEach(W=>{const ve=_.get(W.memberId);ve?ve.total+=W.count:_.set(W.memberId,{name:W.memberName,total:W.count})}),_.size<=2){const W=new Map;return y.value.forEach(ve=>{W.set(ve.month,(W.get(ve.month)||0)+ve.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(ve=>W.get(ve)||0)}]}}const ae=[..._.entries()].sort((W,ve)=>ve[1].total-W[1].total).slice(0,10).map(([W,ve],he)=>{const X=new Map(y.value.filter(F=>F.memberId===W).map(F=>[F.month,F.count]));return{name:ve.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:C[he%C.length]},data:A.map(F=>X.get(F)||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:ae}});async function E(){if(s.sessionId){c.value=!0;try{const A=Fe(),[_,L,Y,ae,W,ve,he]=await Promise.all([A.getMessageTypeDistribution(s.sessionId,s.timeFilter),A.getHourlyActivity(s.sessionId,s.timeFilter),A.getWeekdayActivity(s.sessionId,s.timeFilter),A.getMonthlyActivity(s.sessionId,s.timeFilter),A.getYearlyActivity(s.sessionId,s.timeFilter),A.getDailyActivity(s.sessionId,s.timeFilter),A.getMemberMonthlyTrend(s.sessionId,s.timeFilter)]);r.value=_,m.value=L,u.value=Y,d.value=ae,g.value=W,v.value=ve,y.value=he,k.value.length>0&&($.value=k.value[0])}catch(A){console.error("[chart-message] Failed to load time analysis data:",A)}finally{c.value=!1}}}return pe(()=>[s.sessionId,s.timeFilter],()=>E(),{immediate:!0,deep:!0}),(A,_)=>{const L=It;return o(),i("div",{class:le(c.value?"h-full":"")},[c.value?(o(),K(a(mt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(o(),i("div",dx,[v.value.length>0?(o(),K(cx,{key:0,"hourly-activity":m.value,"weekday-activity":u.value,"daily-activity":v.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):z("",!0),e("div",ux,[p(a(Ye),{title:a(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:U(()=>[e("div",mx,[p(a(tt),{data:M.value,height:200},null,8,["data"])])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:U(()=>[e("div",gx,[p(a(tt),{data:R.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),e("div",px,[p(a(Ye),{title:a(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:U(()=>[e("div",vx,[p(a(tt),{data:w.value,height:200},null,8,["data"])])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:U(()=>[e("div",yx,[S.value.values.length>0?(o(),K(a(tt),{key:0,data:S.value,height:200},null,8,["data"])):(o(),i("div",hx,n(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]),p(a(Ye),{title:a(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:U(()=>[e("span",fx,n(a(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:U(()=>[e("div",xx,[y.value.length>0?(o(),K(a(bt),{key:0,option:q.value,height:280},null,8,["option"])):(o(),i("div",bx,n(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:U(()=>[e("span",kx,n(a(t)("views.message.heatmapHint")),1)]),default:U(()=>[e("div",_x,[p(a(Ut),{data:T.value,height:320},null,8,["data"])])]),_:1},8,["title"]),p(a(Ye),{title:a(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:U(()=>[e("div",wx,[e("span",$x,n(a(t)("views.message.calendarHint")),1),k.value.length>1?(o(),K(L,{key:0,modelValue:$.value,"onUpdate:modelValue":_[0]||(_[0]=Y=>$.value=Y),items:k.value.map(Y=>({value:Y,label:String(Y)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):z("",!0)])]),default:U(()=>[e("div",Cx,[I.value.length>0?(o(),K(a(Mm),{key:0,data:I.value,year:$.value,height:180},null,8,["data","year"])):(o(),i("div",Sx,n(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),Tx={class:"p-6"},Mx={class:"mb-4 flex items-center justify-between"},Ix={class:"flex items-center gap-3"},Dx={class:"text-lg font-semibold text-gray-900 dark:text-white"},Lx={class:"text-sm text-gray-500 dark:text-gray-400"},Ax={class:"h-56 overflow-y-auto rounded-lg border border-gray-200 dark:border-gray-700"},qx={key:0,class:"flex h-full items-center justify-center"},Rx={key:1,class:"flex h-full items-center justify-center"},Px={class:"text-sm text-gray-500 dark:text-gray-400"},zx={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},Ex=["onClick"],Bx=["src","alt"],jx={key:1,class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-gray-300 to-gray-400 text-xs font-medium text-white dark:from-gray-600 dark:to-gray-700"},Ux={class:"min-w-0 flex-1"},Fx={class:"truncate text-sm font-medium text-gray-900 dark:text-white"},Vx={class:"truncate text-xs text-gray-500 dark:text-gray-400"},Nx={class:"mt-3 text-xs text-gray-500 dark:text-gray-400"},Ox={key:0,class:"mt-2"},Hx={class:"mt-5 flex items-center justify-between gap-2"},Wx={key:1},Yx={class:"flex gap-2"},Kx=fe({__name:"OwnerPromptModal",props:{sessionId:{},modelValue:{type:Boolean,default:!1},chatType:{default:"group"},autoCheck:{type:Boolean,default:!1}},emits:["update:modelValue","saved","cleared"],setup(l,{emit:s}){const t=l,c=s,{t:r}=ke(),m=Je(),u=ca(),d=h({get:()=>t.modelValue,set:q=>c("update:modelValue",q)}),g=x([]),v=x(!1),y=x(!1),C=x(!1),f=x(""),b=x(null),M=h(()=>u.currentSession?.ownerId??null);function R(q){return q.groupNickname||q.accountName||q.platformId}const w=h(()=>{const q=f.value.trim().toLowerCase(),E=g.value.filter(A=>A.platformId&&A.platformId.trim()!=="");return q?E.filter(A=>[A.platformId,A.accountName??"",A.groupNickname??"",...A.aliases].some(_=>_.toLowerCase().includes(q))):E});async function S(){if(t.sessionId){v.value=!0;try{g.value=await Fe().getMembers(t.sessionId)}catch(q){console.error("加载成员列表失败:",q)}finally{v.value=!1}}}async function T(){if(!(!t.sessionId||!t.autoCheck)&&!M.value)try{const q=await u.tryApplyOwnerProfile(t.sessionId);if(q.applied||q.reason==="already_set"||q.reason==="missing_session"||q.dismissed)return;d.value=!0}catch(q){console.error("检查会话 owner 失败:",q)}}async function D(){if(!(!b.value||!t.sessionId)){y.value=!0;try{const q=await u.setOwnerAndApplyProfile(t.sessionId,b.value);q.updatedSessionIds.length>0?m.success(r("members.ownerPrompt.saved"),{description:r("members.ownerPrompt.appliedToOthers",{count:q.updatedSessionIds.length})}):m.success(r("members.ownerPrompt.saved")),c("saved",q.ownerId),d.value=!1}catch(q){console.error("设置会话 owner 失败:",q),m.fail(r("members.ownerPrompt.saveFailed"))}finally{y.value=!1}}}async function k(){if(!(!t.sessionId||!M.value)){y.value=!0;try{await u.updateSessionOwnerId(t.sessionId,null)&&(b.value=null,c("cleared"),d.value=!1)}catch(q){console.error("清除会话 owner 失败:",q)}finally{y.value=!1}}}async function $(){if(t.sessionId){C.value=!0;try{await u.dismissOwnerPrompt(t.sessionId),d.value=!1}catch(q){console.error("忽略 owner 提醒失败:",q)}finally{C.value=!1}}}function I(){d.value=!1}return pe(d,q=>{q&&(f.value="",b.value=M.value,S())}),pe(()=>t.sessionId,()=>{T()}),ze(()=>{T()}),(q,E)=>{const A=_e,_=Re,L=yt,Y=He;return o(),K(Y,{open:d.value,"onUpdate:open":E[1]||(E[1]=ae=>d.value=ae),ui:{content:"max-w-md"}},{content:U(()=>[e("div",Tx,[e("div",Mx,[e("div",Ix,[e("div",{class:le(["flex h-10 w-10 items-center justify-center rounded-full bg-linear-to-br",l.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[p(A,{name:"i-heroicons-user",class:"h-5 w-5 text-white"})],2),e("div",null,[e("h3",Dx,n(a(r)("members.ownerPrompt.title")),1),e("p",Lx,n(a(r)("members.ownerPrompt.subtitle")),1)])]),p(_,{icon:"i-heroicons-x-mark",color:"neutral",variant:"ghost",size:"sm",onClick:I})]),p(L,{modelValue:f.value,"onUpdate:modelValue":E[0]||(E[0]=ae=>f.value=ae),placeholder:a(r)("members.ownerPrompt.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"mb-3 w-full"},null,8,["modelValue","placeholder"]),e("div",Ax,[v.value?(o(),i("div",qx,[p(A,{name:"i-heroicons-arrow-path",class:"h-5 w-5 animate-spin text-gray-400"})])):w.value.length===0?(o(),i("div",Rx,[e("p",Px,n(f.value?a(r)("members.ownerPrompt.noMatch"):a(r)("members.ownerPrompt.empty")),1)])):(o(),i("ul",zx,[(o(!0),i(oe,null,ue(w.value,ae=>(o(),i("li",{key:ae.id},[e("button",{type:"button",class:le(["flex w-full items-center gap-3 px-3 py-2 text-left hover:bg-gray-50 dark:hover:bg-gray-800/50",b.value===ae.platformId?"bg-primary-50 dark:bg-primary-900/20":""]),onClick:W=>b.value=ae.platformId},[ae.avatar?(o(),i("img",{key:0,src:ae.avatar,alt:R(ae),class:"h-8 w-8 shrink-0 rounded-full object-cover"},null,8,Bx)):(o(),i("div",jx,n(R(ae).slice(0,1)),1)),e("div",Ux,[e("p",Fx,n(R(ae)),1),e("p",Vx,n(ae.platformId),1)]),b.value===ae.platformId?(o(),K(A,{key:2,name:"i-heroicons-check-circle-solid",class:"h-5 w-5 shrink-0 text-primary-500"})):z("",!0)],10,Ex)]))),128))]))]),e("p",Nx,n(a(r)("members.ownerPrompt.description")),1),M.value?(o(),i("div",Ox,[p(_,{variant:"link",color:"neutral",size:"xs",disabled:y.value,onClick:k},{default:U(()=>[se(n(a(r)("members.ownerPrompt.clear")),1)]),_:1},8,["disabled"])])):z("",!0),e("div",Hx,[M.value?(o(),i("span",Wx)):(o(),K(_,{key:0,variant:"ghost",color:"neutral",size:"sm",loading:C.value,onClick:$},{default:U(()=>[se(n(a(r)("members.ownerPrompt.dontRemind")),1)]),_:1},8,["loading"])),e("div",Yx,[p(_,{variant:"ghost",color:"neutral",onClick:I},{default:U(()=>[se(n(a(r)("members.ownerPrompt.later")),1)]),_:1}),p(_,{color:"primary",loading:y.value,disabled:!b.value,onClick:D},{default:U(()=>[se(n(a(r)("members.ownerPrompt.save")),1)]),_:1},8,["loading","disabled"])])])])]),_:1},8,["open"])}}}),Qx={class:"w-150 rounded-lg border border-gray-200 bg-white p-3 shadow-sm dark:border-gray-700 dark:bg-page-dark"},Gx={class:"flex items-center justify-between gap-3"},Jx={class:"flex items-center gap-2"},Xx={class:"text-sm font-medium text-gray-900 dark:text-white"},Zx={class:"text-xs text-gray-500 dark:text-gray-400"},Bk=fe({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(l){const{t:s}=ke(),t=ca(),c=l,r=x(!1);function m(g){return g.groupNickname||g.accountName||g.platformId}const u=h(()=>{const g=t.currentSession?.ownerId;return g&&c.members.find(v=>v.platformId===g)||null}),d=h(()=>u.value?m(u.value):t.currentSession?.ownerId??"");return(g,v)=>{const y=_e,C=Re;return o(),i("div",Qx,[e("div",Gx,[e("div",Jx,[e("div",{class:le(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",l.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[p(y,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),e("div",null,[e("h3",Xx,n(d.value?a(s)("members.ownerPrompt.currentOwner",{name:d.value}):a(s)("members.ownerPrompt.choose")),1),e("p",Zx,n(a(s)("members.ownerPrompt.helper")),1)])]),p(C,{size:"sm",variant:d.value?"outline":"solid",color:"primary",onClick:v[0]||(v[0]=f=>r.value=!0)},{default:U(()=>[se(n(d.value?a(s)("members.ownerPrompt.change"):a(s)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),p(Kx,{modelValue:r.value,"onUpdate:modelValue":v[1]||(v[1]=f=>r.value=f),"session-id":l.sessionId,"chat-type":l.chatType},null,8,["modelValue","session-id","chat-type"])])}}}),eb={key:1,class:"flex items-center"},tb={class:"whitespace-nowrap px-0.5 text-sm font-medium text-gray-700 dark:text-gray-300"},ab={key:2,class:"flex items-center"},sb={class:"whitespace-nowrap px-0.5 text-sm font-medium text-gray-700 dark:text-gray-300"},ob={key:3,class:"flex items-center gap-1"},nb=fe({__name:"TimeSelect",props:{sessionId:{},modelValue:{},visible:{type:Boolean,default:!0},initialState:{}},emits:["update:modelValue","update:fullRange","update:availableYears"],setup(l,{emit:s}){const t=l,c=s,{t:r}=ke(),m=x(!1),u=x([]),d=x(null),g=x("recent"),v=x(365),y=x(0),C=x(0),f=x(1),b=x(""),M=x(""),R=x(!1);function w(N){const Q=new Date(N*1e3);return{year:Q.getFullYear(),quarter:Math.floor(Q.getMonth()/3)+1}}function S(N,Q){const ce=(Q-1)*3,de=new Date(N,ce,1,0,0,0),J=new Date(N,ce+3,0,23,59,59);return{startTs:Math.floor(de.getTime()/1e3),endTs:Math.floor(J.getTime()/1e3)}}function T(N){const Q=new Date(N,0,1,0,0,0),ce=new Date(N,11,31,23,59,59);return{startTs:Math.floor(Q.getTime()/1e3),endTs:Math.floor(ce.getTime()/1e3)}}const D=h(()=>[{label:r("common.timeSelect.mode.recent"),value:"recent"},{label:r("common.timeSelect.mode.quarter"),value:"quarter"},{label:r("common.timeSelect.mode.year"),value:"year"},{label:r("common.timeSelect.mode.custom"),value:"custom"}]),k=h(()=>[{label:r("common.timeSelect.recent.oneYear"),value:365},{label:r("common.timeSelect.recent.twoYears"),value:730},{label:r("common.timeSelect.recent.fiveYears"),value:1825},{label:r("common.timeSelect.recent.all"),value:0}]),$=h(()=>d.value?w(d.value.start):{year:0,quarter:1}),I=h(()=>d.value?w(d.value.end):{year:0,quarter:1}),q=h(()=>{const N=$.value;return C.value>N.year||C.value===N.year&&f.value>N.quarter}),E=h(()=>{const N=I.value;return C.value<N.year||C.value===N.year&&f.value<N.quarter}),A=h(()=>u.value.length===0?!1:u.value.indexOf(y.value)<u.value.length-1),_=h(()=>u.value.length===0?!1:u.value.indexOf(y.value)>0),L=h(()=>r("common.timeSelect.quarter.label",{year:C.value,quarter:f.value})),Y=h(()=>r("common.timeSelect.year.label",{year:y.value}));function ae(N){return{365:r("common.timeSelect.display.recent365"),730:r("common.timeSelect.display.recent730"),1825:r("common.timeSelect.display.recent1825")}[N]||""}function W(N){return[365,730,1825,0].includes(N)?N:365}function ve(){if(!d.value)return null;const N={mode:g.value};switch(g.value){case"recent":{if(N.recentDays=v.value,v.value===0)return{startTs:d.value.start,endTs:d.value.end,displayLabel:Bt(d.value.start,d.value.end),isFullRange:!0,state:N};const Q=d.value.end;return{startTs:Math.max(Q-v.value*86400,d.value.start),endTs:Q,displayLabel:ae(v.value),isFullRange:!1,state:N}}case"quarter":return N.quarterYear=C.value,N.quarter=f.value,{...S(C.value,f.value),displayLabel:L.value,isFullRange:!1,state:N};case"year":return N.year=y.value,{...T(y.value),displayLabel:Y.value,isFullRange:!1,state:N};case"custom":{if(N.customStart=b.value,N.customEnd=M.value,!b.value||!M.value)return null;let Q=$e(b.value).startOf("day").unix(),ce=$e(M.value).endOf("day").unix();return Q>ce&&([Q,ce]=[ce,Q]),{startTs:Q,endTs:ce,displayLabel:Bt(Q,ce),isFullRange:!1,state:N}}}}function he(){const N=ve();N&&c("update:modelValue",N)}function X(N){let Q=C.value,ce=f.value+N;ce>4&&(Q++,ce=1),ce<1&&(Q--,ce=4);const de=$.value,J=I.value;Q<de.year||Q===de.year&&ce<de.quarter||Q>J.year||Q===J.year&&ce>J.quarter||(C.value=Q,f.value=ce,he())}function F(N){const Q=u.value,de=Q.indexOf(y.value)-N;de>=0&&de<Q.length&&(y.value=Q[de],he())}function te(N){if(d.value)switch(N){case"recent":v.value=W(v.value);break;case"quarter":{const{year:Q,quarter:ce}=w(d.value.end);C.value=Q,f.value=ce;break}case"year":{y.value=u.value[0]||new Date(d.value.end*1e3).getFullYear();break}case"custom":{const Q=d.value.end,ce=Math.max(Q-30*86400,d.value.start);b.value=$e.unix(ce).format("YYYY-MM-DD"),M.value=$e.unix(Q).format("YYYY-MM-DD");break}}}const ye=h({get:()=>g.value,set:N=>{g.value=N,R.value=!0,te(N),R.value=!1,he()}}),xe=h({get:()=>v.value,set:N=>{v.value=N,he()}}),G=h({get:()=>b.value,set:N=>{b.value=N,M.value&&he()}}),B=h({get:()=>M.value,set:N=>{M.value=N,b.value&&he()}});async function V(){if(!t.sessionId){u.value=[],d.value=null,c("update:fullRange",null),c("update:availableYears",[]),m.value=!0;return}try{const N=Fe(),[Q,ce]=await Promise.all([N.getAvailableYears(t.sessionId),N.getTimeRange(t.sessionId)]);u.value=Q,d.value=ce,c("update:fullRange",ce),c("update:availableYears",Q);const de=t.initialState,J=de?.mode??"recent";switch(g.value=J,R.value=!0,J){case"recent":v.value=W(de?.recentDays??365);break;case"quarter":{if(de?.quarterYear&&de?.quarter)C.value=de.quarterYear,f.value=de.quarter;else if(ce){const{year:ne,quarter:be}=w(ce.end);C.value=ne,f.value=be}break}case"year":{de?.year&&Q.includes(de.year)?y.value=de.year:y.value=Q[0]||0;break}case"custom":{if(de?.customStart&&de?.customEnd)b.value=de.customStart,M.value=de.customEnd;else if(ce){const ne=ce.end,be=Math.max(ne-30*86400,ce.start);b.value=$e.unix(be).format("YYYY-MM-DD"),M.value=$e.unix(ne).format("YYYY-MM-DD")}break}}R.value=!1,he()}catch(N){console.error("TimeSelect 加载数据失败:",N),u.value=[],d.value=null,c("update:fullRange",null),c("update:availableYears",[])}finally{m.value=!0}}return ze(()=>V()),pe(()=>t.sessionId,()=>{m.value=!1,V()}),(N,Q)=>{const ce=It,de=Re;return m.value?(o(),i("div",{key:0,class:le(["flex items-center gap-2",{invisible:!l.visible}])},[p(ce,{modelValue:ye.value,"onUpdate:modelValue":Q[0]||(Q[0]=J=>ye.value=J),items:D.value,size:"md",class:"w-28 shrink-0"},null,8,["modelValue","items"]),g.value==="recent"?(o(),K(et,{key:0,modelValue:xe.value,"onUpdate:modelValue":Q[1]||(Q[1]=J=>xe.value=J),items:k.value,size:"sm",class:"min-w-0 shrink"},null,8,["modelValue","items"])):g.value==="quarter"?(o(),i("div",eb,[p(de,{icon:"i-heroicons-chevron-left",size:"sm",variant:"ghost",color:"neutral",disabled:!q.value,onClick:Q[2]||(Q[2]=J=>X(-1))},null,8,["disabled"]),e("span",tb,n(L.value),1),p(de,{icon:"i-heroicons-chevron-right",size:"sm",variant:"ghost",color:"neutral",disabled:!E.value,onClick:Q[3]||(Q[3]=J=>X(1))},null,8,["disabled"])])):g.value==="year"?(o(),i("div",ab,[p(de,{icon:"i-heroicons-chevron-left",size:"sm",variant:"ghost",color:"neutral",disabled:!A.value,onClick:Q[4]||(Q[4]=J=>F(-1))},null,8,["disabled"]),e("span",sb,n(Y.value),1),p(de,{icon:"i-heroicons-chevron-right",size:"sm",variant:"ghost",color:"neutral",disabled:!_.value,onClick:Q[5]||(Q[5]=J=>F(1))},null,8,["disabled"])])):g.value==="custom"?(o(),i("div",ob,[p(ea,{modelValue:G.value,"onUpdate:modelValue":Q[6]||(Q[6]=J=>G.value=J),"width-class":"w-28",clearable:!1},null,8,["modelValue"]),Q[8]||(Q[8]=e("span",{class:"text-xs text-gray-400"},"-",-1)),p(ea,{modelValue:B.value,"onUpdate:modelValue":Q[7]||(Q[7]=J=>B.value=J),"width-class":"w-28",clearable:!1},null,8,["modelValue"])])):z("",!0)],2)):z("",!0)}}}),rb={class:"mt-3 flex items-center justify-between gap-3"},lb={class:"flex shrink-0 items-center gap-0.5 overflow-x-auto scrollbar-hide"},ib=["onClick"],cb={class:"whitespace-nowrap"},jk=fe({__name:"SessionAnalysisHeader",props:Et({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:Et(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears"],["update:activeTab","update:timeRangeValue"]),setup(l,{emit:s}){const t=zt(l,"activeTab"),c=zt(l,"timeRangeValue"),r=s,{t:m}=ke(),u=dt(),d=h(()=>!["ai-chat","memory","lab","debug"].includes(t.value));return(g,v)=>{const y=Re,C=vt,f=_e;return o(),K(os,{title:l.title,avatar:l.avatar,size:"compact",icon:l.icon,"icon-class":l.iconClass},{actions:U(()=>[a(u).toolsPanelPosition==="header"?(o(),i(oe,{key:0},[p(C,{text:a(m)("analysis.tooltip.viewChatRecord")},{default:U(()=>[p(y,{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:v[0]||(v[0]=b=>r("openChatRecord"))})]),_:1},8,["text"]),p(C,{text:a(m)("analysis.tooltip.incrementalImport")},{default:U(()=>[p(y,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:v[1]||(v[1]=b=>r("openIncrementalImport"))})]),_:1},8,["text"]),p(C,{text:a(m)("analysis.tooltip.memberManagement")},{default:U(()=>[p(y,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:v[2]||(v[2]=b=>r("openMemberManagement"))})]),_:1},8,["text"]),p(ct,{color:"gray"}),p(C,{text:a(m)("analysis.tooltip.more")},{default:U(()=>[p(y,{"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:v[3]||(v[3]=b=>a(u).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):(o(),K(ct,{key:1,color:"gray"}))]),default:U(()=>[e("div",rb,[e("div",lb,[(o(!0),i(oe,null,ue(l.tabs,b=>(o(),i("button",{key:b.id,class:le(["flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs font-semibold transition-all",[t.value===b.id?"bg-pink-500 text-white dark:bg-pink-900/30 dark:text-pink-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]]),onClick:M=>t.value=b.id},[p(f,{name:b.icon,class:"h-3.5 w-3.5"},null,8,["name"]),e("span",cb,n(a(m)(b.labelKey)),1)],10,ib))),128))]),p(nb,{modelValue:c.value,"onUpdate:modelValue":v[4]||(v[4]=b=>c.value=b),"session-id":l.currentSessionId??void 0,visible:d.value,"initial-state":l.initialTimeState,"onUpdate:fullRange":v[5]||(v[5]=b=>r("update:fullRange",b)),"onUpdate:availableYears":v[6]||(v[6]=b=>r("update:availableYears",b))},null,8,["modelValue","session-id","visible","initial-state"])])]),_:1},8,["title","avatar","icon","icon-class"])}}}),db={class:"space-y-4 p-5"},ub={class:"flex items-center gap-2"},mb={class:"text-base font-semibold text-gray-900 dark:text-white"},gb={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},pb={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},vb={class:"flex items-center justify-between"},yb={class:"text-gray-500"},hb={class:"font-medium text-gray-800 dark:text-gray-200"},fb={key:0,class:"mt-1 flex items-center justify-between"},xb={class:"text-gray-500"},bb={class:"text-gray-700 dark:text-gray-300"},kb={key:1,class:"mt-2"},_b={class:"flex items-center justify-between text-xs text-gray-500"},wb={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},$b={key:2,class:"mt-1 text-xs text-red-500"},Cb={class:"text-sm text-gray-600 dark:text-gray-400"},Sb={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"},Tb={class:"flex justify-end gap-2"},Mb={class:"text-xs text-gray-400"},Ib={class:"flex flex-wrap justify-end gap-2"},qe="settings.ai.semanticIndex",Uk=fe({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(l,{emit:s}){const t=l,c=s,{t:r}=ke(),m=Fa(),u=h({get:()=>t.modelValue,set:D=>c("update:modelValue",D)}),d=x(null),g=x(!1),v=x(!1),y=x(!1),C=h(()=>{const D=d.value;return!D||!D.enabled?r(`${qe}.session.notEnabled`):D.needsRebuild?r(`${qe}.state.needsRebuild`):D.running||D.queued||D.indexStatus==="running"?r(`${qe}.state.building`):D.indexStatus==="completed"?r(`${qe}.state.completed`):D.indexStatus==="failed"?r(`${qe}.state.failed`):D.indexStatus==="paused"?r(`${qe}.state.paused`):r(`${qe}.state.pending`)}),f=h(()=>{const D=d.value;return!!D&&(D.running||D.queued||D.indexStatus==="running")}),b=h(()=>d.value&&d.value.totalMessages>0?Math.round(d.value.indexedMessages/d.value.totalMessages*100):0);let M=null;function R(){M&&(clearTimeout(M),M=null)}function w(){R(),M=setTimeout(async()=>{try{d.value=await m.status(t.sessionId)}catch(D){console.error("[semantic-index] poll status failed:",D)}f.value&&t.modelValue?w():R()},1500)}async function S(){v.value=!0;try{const[D,k]=await Promise.all([m.getConfig(),m.status(t.sessionId)]);g.value=D.config.enabled&&D.configured&&(D.config.mode==="local"?!!D.config.local.modelId:!!D.config.api?.baseUrl&&!!D.config.api?.model&&(!Va(D.config.api?.baseUrl)||D.apiKeySet)),d.value=k}catch(D){console.error("[semantic-index] load session status failed:",D)}finally{v.value=!1}f.value&&w()}async function T(D){y.value=!0;try{d.value=await m[D](t.sessionId)}catch(k){console.error(`[semantic-index] ${D} failed:`,k)}finally{y.value=!1}f.value?w():R()}return pe(()=>t.modelValue,D=>{D?S():R()}),lt(R),(D,k)=>{const $=_e,I=Re,q=He;return o(),K(q,{open:u.value,"onUpdate:open":k[10]||(k[10]=E=>u.value=E),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:U(()=>[e("div",db,[e("div",ub,[p($,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),e("h3",mb,n(a(r)(`${qe}.title`)),1)]),v.value?(o(),i("div",gb,[p($,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),se(" "+n(a(r)("common.loading")),1)])):(o(),i(oe,{key:1},[e("div",pb,[e("div",vb,[e("span",yb,n(a(r)(`${qe}.session.statusLabel`)),1),e("span",hb,n(C.value),1)]),d.value?.enabled&&d.value.indexStatus==="completed"?(o(),i("div",fb,[e("span",xb,n(a(r)(`${qe}.session.coverageLabel`)),1),e("span",bb,n(b.value)+"%",1)])):z("",!0),f.value?(o(),i("div",kb,[e("div",_b,[e("span",null,n(a(r)(`${qe}.session.progressLabel`)),1),e("span",null,n(d.value?.indexedMessages??0)+" / "+n(d.value?.totalMessages??0)+" ("+n(b.value)+"%) ",1)]),e("div",wb,[e("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:Ge({width:`${b.value}%`})},null,4)])])):z("",!0),d.value?.error?(o(),i("p",$b,n(d.value.error),1)):z("",!0)]),d.value?.enabled?(o(),i(oe,{key:1},[e("p",Mb,n(a(r)(`${qe}.session.buildVsEnable`)),1),e("div",Ib,[f.value?(o(),i(oe,{key:0},[p(I,{variant:"soft",loading:y.value,onClick:k[2]||(k[2]=E=>T("pause"))},{default:U(()=>[se(n(a(r)(`${qe}.action.pause`)),1)]),_:1},8,["loading"]),p(I,{color:"error",variant:"soft",disabled:y.value,onClick:k[3]||(k[3]=E=>T("cancel"))},{default:U(()=>[se(n(a(r)(`${qe}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):d.value?.indexStatus==="completed"&&!d.value?.needsRebuild?(o(),K(I,{key:1,variant:"soft",loading:y.value,onClick:k[4]||(k[4]=E=>T("rebuild"))},{default:U(()=>[se(n(a(r)(`${qe}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.needsRebuild?(o(),K(I,{key:2,color:"primary",loading:y.value,onClick:k[5]||(k[5]=E=>T("rebuild"))},{default:U(()=>[se(n(a(r)(`${qe}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="failed"?(o(),K(I,{key:3,color:"primary",loading:y.value,onClick:k[6]||(k[6]=E=>T("build"))},{default:U(()=>[se(n(a(r)(`${qe}.session.retry`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="paused"?(o(),K(I,{key:4,color:"primary",loading:y.value,onClick:k[7]||(k[7]=E=>T("build"))},{default:U(()=>[se(n(a(r)(`${qe}.session.continue`)),1)]),_:1},8,["loading"])):(o(),K(I,{key:5,color:"primary",loading:y.value,onClick:k[8]||(k[8]=E=>T("build"))},{default:U(()=>[se(n(a(r)(`${qe}.action.build`)),1)]),_:1},8,["loading"])),p(I,{variant:"ghost",color:"neutral",disabled:y.value,onClick:k[9]||(k[9]=E=>T("remove"))},{default:U(()=>[se(n(a(r)(`${qe}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(o(),i(oe,{key:0},[e("p",Cb,n(a(r)(`${qe}.session.enableHint`)),1),g.value?z("",!0):(o(),i("p",Sb,n(a(r)(`${qe}.session.configFirst`)),1)),e("div",Tb,[p(I,{variant:"ghost",onClick:k[0]||(k[0]=E=>u.value=!1)},{default:U(()=>[se(n(a(r)("common.close")),1)]),_:1}),p(I,{color:"primary",loading:y.value,disabled:!g.value,onClick:k[1]||(k[1]=E=>T("enable"))},{default:U(()=>[se(n(a(r)(`${qe}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),Db={class:"min-h-[200px]"},Lb={key:0,class:"space-y-4"},Ab={class:"text-sm text-gray-600 dark:text-gray-400"},qb={class:"text-sm text-gray-600 dark:text-gray-400"},Rb={key:1,class:"flex flex-col items-center justify-center py-10"},Pb={class:"text-gray-600 dark:text-gray-400"},zb={class:"mt-2 text-sm text-gray-500"},Eb={key:2,class:"space-y-6"},Bb={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},jb={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Ub={class:"grid grid-cols-3 gap-4 text-center"},Fb={class:"text-2xl font-bold text-gray-900 dark:text-white"},Vb={class:"text-xs text-gray-500"},Nb={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Ob={class:"text-xs text-gray-500"},Hb={class:"text-2xl font-bold text-gray-400"},Wb={class:"text-xs text-gray-500"},Yb={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Kb={key:3,class:"flex flex-col items-center justify-center py-10"},Qb={class:"text-gray-600 dark:text-gray-400"},Gb={key:0,class:"mt-4 w-full max-w-xs"},Jb={key:4,class:"flex flex-col items-center justify-center py-10"},Xb={class:"text-lg font-medium text-gray-900 dark:text-white"},Zb={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},ek={key:5,class:"flex flex-col items-center justify-center py-10"},tk={class:"text-lg font-medium text-gray-900 dark:text-white"},ak={class:"mt-2 text-sm text-red-600 dark:text-red-400"},sk={class:"flex w-full justify-end gap-2"},Fk=fe({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(l,{emit:s}){const t=l,c=s,{t:r}=ke(),m=x("select"),u=x(null),d=x(null),g=x(null),v=x(null),y=x(null),C=x(null),f=h({get:()=>t.modelValue,set:$=>c("update:modelValue",$)});pe(f,$=>{$||b()});function b(){m.value="select",u.value=null,g.value=null,v.value=null,y.value=null,C.value=null}async function M({files:$,paths:I}){if($.length>0)u.value={source:$[0],name:$[0].name};else{y.value=r("home.import.cannotReadPath");return}await w()}function R(){d.value?.openFileDialog()}async function w(){if(u.value){m.value="analyzing",y.value=null;try{const $=await ta().analyzeIncrementalImport(t.sessionId,u.value.source);if($.error){m.value="error",y.value=k($.error);return}g.value={newMessageCount:$.newMessageCount,duplicateCount:$.duplicateCount,totalInFile:$.totalInFile},m.value="preview"}catch($){m.value="error",y.value=String($)}}}async function S(){if(u.value){m.value="importing",v.value={stage:"saving",progress:0,message:""};try{const $=await ta().incrementalImport(t.sessionId,u.value.source,I=>{v.value=I});$.success?(C.value={newMessageCount:$.newMessageCount},m.value="done"):(m.value="error",y.value=k($.error||"error.import_failed"))}catch($){m.value="error",y.value=String($)}}}function T(){C.value&&c("imported",C.value.newMessageCount),f.value=!1}function D(){m.value="select",u.value=null,g.value=null,y.value=null}function k($){if($.startsWith("error.")){const I=`home.import.errors.${$.slice(6)}`,q=r(I);return q!==I?q:$}return $}return($,I)=>{const q=_e,E=Ga,A=Re,_=He;return o(),K(_,{open:f.value,"onUpdate:open":I[1]||(I[1]=L=>f.value=L),title:a(r)("analysis.incremental.title")},{body:U(()=>[e("div",Db,[m.value==="select"?(o(),i("div",Lb,[e("p",Ab,n(a(r)("analysis.incremental.description",{name:l.sessionName})),1),p(a(Xa),{ref_key:"dropZoneRef",ref:d,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:M},{default:U(({isDragOver:L})=>[e("div",{class:le(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",L?"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:Ue(R,["stop"])},[p(q,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),e("p",qb,n(L?a(r)("home.import.dropHint"):a(r)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):m.value==="analyzing"?(o(),i("div",Rb,[p(q,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Pb,n(a(r)("analysis.incremental.analyzing")),1),e("p",zb,n(u.value?.name),1)])):m.value==="preview"&&g.value?(o(),i("div",Eb,[e("div",Bb,[e("p",jb,n(u.value?.name),1),e("div",Ub,[e("div",null,[e("p",Fb,n(g.value.totalInFile.toLocaleString()),1),e("p",Vb,n(a(r)("analysis.incremental.totalInFile")),1)]),e("div",null,[e("p",Nb,n(g.value.newMessageCount.toLocaleString()),1),e("p",Ob,n(a(r)("analysis.incremental.newMessages")),1)]),e("div",null,[e("p",Hb,n(g.value.duplicateCount.toLocaleString()),1),e("p",Wb,n(a(r)("analysis.incremental.duplicates")),1)])])]),g.value.newMessageCount===0?(o(),i("p",Yb,[p(q,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),se(" "+n(a(r)("analysis.incremental.noNewMessages")),1)])):z("",!0)])):m.value==="importing"?(o(),i("div",Kb,[p(q,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Qb,n(a(r)("analysis.incremental.importing")),1),v.value?(o(),i("div",Gb,[p(E,{value:v.value.progress,size:"sm"},null,8,["value"])])):z("",!0)])):m.value==="done"&&C.value?(o(),i("div",Jb,[p(q,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),e("p",Xb,n(a(r)("analysis.incremental.success")),1),e("p",Zb,n(a(r)("analysis.incremental.successDetail",{count:C.value.newMessageCount})),1)])):m.value==="error"?(o(),i("div",ek,[p(q,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),e("p",tk,n(a(r)("analysis.incremental.failed")),1),e("p",ak,n(y.value),1)])):z("",!0)])]),footer:U(()=>[e("div",sk,[m.value==="select"?(o(),K(A,{key:0,color:"neutral",variant:"ghost",onClick:I[0]||(I[0]=L=>f.value=!1)},{default:U(()=>[se(n(a(r)("common.cancel")),1)]),_:1})):m.value==="preview"?(o(),i(oe,{key:1},[p(A,{color:"neutral",variant:"ghost",onClick:D},{default:U(()=>[se(n(a(r)("common.back")),1)]),_:1}),p(A,{color:"primary",disabled:!g.value||g.value.newMessageCount===0,onClick:S},{default:U(()=>[se(n(a(r)("analysis.incremental.import",{count:g.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):m.value==="done"||m.value==="error"?(o(),i(oe,{key:2},[m.value==="error"?(o(),K(A,{key:0,color:"neutral",variant:"ghost",onClick:D},{default:U(()=>[se(n(a(r)("common.retry")),1)]),_:1})):z("",!0),p(A,{color:"primary",onClick:T},{default:U(()=>[se(n(a(r)("common.done")),1)]),_:1})],64)):z("",!0)])]),_:1},8,["open","title"])}}}),ok={key:0,class:"fixed right-0 top-1/3"},nk={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"},rk=["onClick"],lk={class:"mb-2 flex items-center justify-between"},ik={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},ck={class:"flex flex-col gap-1.5"},dk=["onClick"],uk={class:"whitespace-nowrap"},Vk=fe({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(l,{emit:s}){const{t}=ke(),c=dt(),{isToolsPanelMini:r,toolsPanelPosition:m,isToolsPanelOpen:u}=at(c),d=h(()=>m.value==="header"),g=h(()=>!d.value||u.value),v=x(null),y=s;function C(w){y(w),d.value&&(u.value=!1)}function f(w){if(!d.value||!u.value)return;const S=w.target;S instanceof Element&&(v.value?.contains(S)||S.closest("[data-tools-panel-trigger]")||(u.value=!1))}const b=[{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"}],M=[{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"}],R=h(()=>d.value?M:b);return pe(m,()=>{u.value=!1}),ze(()=>{document.addEventListener("mousedown",f)}),Tt(()=>{document.removeEventListener("mousedown",f)}),(w,S)=>{const T=_e,D=vt;return!d.value&&a(r)?(o(),i("div",ok,[e("div",nk,[(o(),i(oe,null,ue(b,k=>p(D,{key:k.event,text:a(t)(k.labelKey),popper:{placement:"left"}},{default:U(()=>[e("button",{class:le(["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",k.miniHoverBg]),onClick:$=>C(k.event)},[p(T,{name:k.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,rk)]),_:2},1032,["text"])),64)),S[2]||(S[2]=e("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),p(D,{text:a(t)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:U(()=>[e("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:S[0]||(S[0]=k=>a(c).toggleToolsPanelMini())},[p(T,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(o(),i("div",{key:1,class:le(["fixed right-0 z-40",d.value?"top-14":"top-1/3"])},[e("div",{class:le(["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"])},[e("div",{ref_key:"panelRef",ref:v,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-lg dark:border-white/5 dark:bg-page-dark"},[e("div",lk,[e("span",ik,n(a(t)("analysis.overview.tools")),1),d.value?z("",!0):(o(),K(D,{key:0,text:a(t)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:U(()=>[e("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:S[1]||(S[1]=k=>a(c).toggleToolsPanelMini())},[p(T,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),e("div",ck,[(o(!0),i(oe,null,ue(R.value,k=>(o(),i("button",{key:k.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(k.event)},[p(T,{name:k.icon,class:le(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",k.hoverColor])},null,8,["name","class"]),e("span",uk,n(a(t)(k.labelKey)),1)],8,dk))),128))])],512)],2)],2))}}}),mk={class:"no-capture flex w-28 flex-col items-center rounded-l-xl border border-r-0 border-amber-200/60 bg-white p-3 shadow-lg dark:border-amber-500/10 dark:bg-page-dark"},gk={class:"flex w-full flex-col items-center gap-3"},pk={class:"whitespace-nowrap"},Nk=fe({__name:"DebugToolsPanel",setup(l){const s=St(),t=pt(),c=Oa(t),r=x(!1);let m=null;const u=h(()=>r.value);function d(){m&&(clearTimeout(m),m=null),r.value=!0}function g(){m=setTimeout(()=>{r.value=!1},200)}const v=h({get:()=>s.locale,set:C=>s.setLocale(C)}),y=Na.map(C=>({label:C.nativeName,value:C.code}));return(C,f)=>{const b=_e,M=Ja;return o(),i("div",{class:"fixed right-0 top-[70%] z-40",onMouseenter:d,onMouseleave:g},[e("div",{class:le(["h-10 w-6 cursor-pointer items-center justify-center rounded-l-lg border border-r-0 border-amber-300/50 bg-amber-50 text-amber-500 shadow-sm transition-opacity duration-200 hover:bg-amber-100 dark:border-amber-500/30 dark:bg-amber-950 dark:text-amber-400 dark:hover:bg-amber-900",u.value?"pointer-events-none flex opacity-0":"flex opacity-100"])},[p(b,{name:"i-heroicons-bug-ant",class:"h-3.5 w-3.5"})],2),e("div",{class:le(["absolute right-0 top-0 transition-all duration-250 ease-in-out",u.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[e("div",mk,[f[2]||(f[2]=e("div",{class:"mb-2"},[e("span",{class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-amber-500 dark:text-amber-400"}," Debug ")],-1)),e("div",gk,[e("button",{class:"group flex items-center gap-1.5 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:f[0]||(f[0]=R=>a(c)())},[p(b,{name:a(t)?"i-heroicons-moon-solid":"i-heroicons-sun-solid",class:le(["h-3.5 w-3.5 transition-colors",a(t)?"text-indigo-400":"text-amber-400"])},null,8,["name","class"]),e("span",pk,n(a(t)?"Dark":"Light"),1)]),p(M,{modelValue:v.value,"onUpdate:modelValue":f[1]||(f[1]=R=>v.value=R),items:a(y),content:!1,orientation:"vertical",size:"xs"},null,8,["modelValue","items"])])])],2)],32)}}});export{Dk as A,tt as B,ju as C,Ak as D,Ck as E,it as _,Mk as a,Rk as b,Ye as c,Vt as d,Pk as e,bt as f,Ht as g,ep as h,zk as i,Ek as j,Ik as k,Bk as l,Tk as m,jk as n,Vk as o,Uk as p,Kx as q,Fk as r,Lk as s,Nk as t,qk as u,ds as v,Sk as w,Fm as x,sa as y,$k as z};