chatlab-cli 0.37.1 → 0.37.2

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 (151) hide show
  1. package/dist/{chat-command-YAFRLHMQ.mjs → chat-command-G2EX7VHR.mjs} +24 -12
  2. package/dist/chat-command-G2EX7VHR.mjs.map +1 -0
  3. package/dist/{chunk-2PY4XCH3.mjs → chunk-E6LCCPIB.mjs} +2 -2
  4. package/dist/{chunk-N4SB6QZV.mjs → chunk-EFX66A2O.mjs} +2 -2
  5. package/dist/{chunk-UP6JIV3S.mjs → chunk-EK5QIJLZ.mjs} +16 -12
  6. package/dist/chunk-EK5QIJLZ.mjs.map +1 -0
  7. package/dist/{chunk-JWJREWVN.mjs → chunk-F4HVCFZL.mjs} +27 -3
  8. package/dist/chunk-F4HVCFZL.mjs.map +1 -0
  9. package/dist/{chunk-PDQV4RUA.mjs → chunk-FCUUAGGC.mjs} +2 -2
  10. package/dist/{chunk-GKCIRKOH.mjs → chunk-H46CLFWK.mjs} +4 -4
  11. package/dist/{chunk-OTYNMDDL.mjs → chunk-HBAQPF6X.mjs} +2118 -1907
  12. package/dist/chunk-HBAQPF6X.mjs.map +1 -0
  13. package/dist/{chunk-MMTEGUQA.mjs → chunk-HMVM7VCA.mjs} +3 -3
  14. package/dist/{chunk-73TJ2S7W.mjs → chunk-L6RJIVLS.mjs} +2 -2
  15. package/dist/{chunk-ARIBCH47.mjs → chunk-T5H56AZV.mjs} +16 -8
  16. package/dist/chunk-T5H56AZV.mjs.map +1 -0
  17. package/dist/{chunk-WDLO7OLX.mjs → chunk-XQ6Z2KNN.mjs} +2 -2
  18. package/dist/{chunk-FPVRSXQ4.mjs → chunk-YI3EQYEG.mjs} +12 -12
  19. package/dist/cli.mjs +9 -9
  20. package/dist/contacts-worker.mjs +2 -2
  21. package/dist/global-insight-worker.mjs +1 -1
  22. package/dist/{http-LPFPVTBC.mjs → http-5BRVWAJR.mjs} +12 -12
  23. package/dist/{import-T4WX2ZJL.mjs → import-IAECQDKC.mjs} +7 -7
  24. package/dist/index.mjs +12 -12
  25. package/dist/{mcp-SMF3NWIN.mjs → mcp-XXSQJBGU.mjs} +8 -8
  26. package/dist/people-relationships-worker.mjs +2 -2
  27. package/dist/semantic-index-worker.mjs +1 -1
  28. package/dist/{src-EGLLMTAU.mjs → src-4HLKMQ7S.mjs} +6 -6
  29. package/dist/{stream-import-2BXJTTCE.mjs → stream-import-PUG42I36.mjs} +7 -7
  30. package/dist/{worker-runtime-RDLSPXFT.mjs → worker-runtime-X5563TVT.mjs} +5 -5
  31. package/dist-cli-web/assets/{AISettingsTab-CEhrXlYR.js → AISettingsTab-m_r2fFEj.js} +1 -1
  32. package/dist-cli-web/assets/{AboutTab-Bbu0SsMM.js → AboutTab-J65UqIuk.js} +1 -1
  33. package/dist-cli-web/assets/{Alert-510jTN3l.js → Alert-qBIGn_CW.js} +1 -1
  34. package/dist-cli-web/assets/{ApiSettingsTab-Bi1GRMN4.js → ApiSettingsTab-CxWRJI9j.js} +1 -1
  35. package/dist-cli-web/assets/{BatchManageTab-DhnqMCSM.js → BatchManageTab-BINNVwm1.js} +1 -1
  36. package/dist-cli-web/assets/{BufferResource-CKZxnACp.js → BufferResource-C-jLPrHv.js} +1 -1
  37. package/dist-cli-web/assets/{CanvasRenderer-BeK5POBy.js → CanvasRenderer-kDLW8GSt.js} +1 -1
  38. package/dist-cli-web/assets/{CardDecoration-RuBA3N2j.js → CardDecoration-CnYxleQM.js} +1 -1
  39. package/dist-cli-web/assets/{ChatRecordDrawer-BY_-lIEj.js → ChatRecordDrawer-CMg3FEWH.js} +1 -1
  40. package/dist-cli-web/assets/{ChatRecordWorkspace-7prKd-Tq.js → ChatRecordWorkspace-AfFIMUbZ.js} +1 -1
  41. package/dist-cli-web/assets/{Checkbox-_eH64bb0.js → Checkbox-D-hAv15R.js} +1 -1
  42. package/dist-cli-web/assets/{DataDirCleanupNotice-BHaXwlfr.js → DataDirCleanupNotice-P80h2p4l.js} +1 -1
  43. package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js → DatePicker.vue_vue_type_script_setup_true_lang-CSp691Uv.js} +1 -1
  44. package/dist-cli-web/assets/{DebugToolsPanel-ByKItGrS.js → DebugToolsPanel-BK2VbKB0.js} +1 -1
  45. package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js → EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js} +1 -1
  46. package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js → EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js} +1 -1
  47. package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js → EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js} +1 -1
  48. package/dist-cli-web/assets/{EChartWordcloud-C6XM4KOX.js → EChartWordcloud-0rihhg03.js} +1 -1
  49. package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js → FileDropZone.vue_vue_type_script_setup_true_lang-Dyuzh7Ex.js} +1 -1
  50. package/dist-cli-web/assets/{Filter-CByj_rCR.js → Filter-rD_jWpbO.js} +1 -1
  51. package/dist-cli-web/assets/{GlobalTaskBar-BdELjzrs.js → GlobalTaskBar-sXQuGvF-.js} +1 -1
  52. package/dist-cli-web/assets/{GroupRelationshipGalaxyView-CnzPEgUS.js → GroupRelationshipGalaxyView-BN1L9DFf.js} +1 -1
  53. package/dist-cli-web/assets/{Label-DCIcxkhU.js → Label-Ce4wl_Ph.js} +1 -1
  54. package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js → LoadingState.vue_vue_type_script_setup_true_lang-DmVfwvnD.js} +1 -1
  55. package/dist-cli-web/assets/{MessageExportModal-DNU16Bs8.js → MessageExportModal-C2IUNPhg.js} +1 -1
  56. package/dist-cli-web/assets/{PageHeader-CKeZjNNR.js → PageHeader-D5BcYKBs.js} +1 -1
  57. package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js → PageTabs.vue_vue_type_script_setup_true_lang-DHly2-fe.js} +1 -1
  58. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-CDhljGyJ.js → RelationshipGalaxyCanvas-CHPqtqQz.js} +3 -3
  59. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-BP8fsvvf.js → RelationshipGalaxyThreeCanvas-qR4S-9n7.js} +1 -1
  60. package/dist-cli-web/assets/{RenderTargetSystem-D76QrDT_.js → RenderTargetSystem-BaIFulUj.js} +1 -1
  61. package/dist-cli-web/assets/{RovingFocusItem-BJMUQ5DJ.js → RovingFocusItem-Bqgmzo42.js} +1 -1
  62. package/dist-cli-web/assets/{ScreenCaptureModal-DkX4z-M1.js → ScreenCaptureModal-sJqB_hrK.js} +1 -1
  63. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-BPt98e6z.js +1 -0
  64. package/dist-cli-web/assets/{Select-B5oJc5y1.js → Select-BAnN4HMs.js} +1 -1
  65. package/dist-cli-web/assets/{SettingsModal-BO-QKQ2h.js → SettingsModal-C4ANMlJJ.js} +2 -2
  66. package/dist-cli-web/assets/{StorageTab-CPPXXaRm.js → StorageTab-BgNQliz4.js} +1 -1
  67. package/dist-cli-web/assets/{Switch-CDk3LZ4_.js → Switch-DddEvDJa.js} +1 -1
  68. package/dist-cli-web/assets/{Tabs-DqWTBV8x.js → Tabs-DwjL-ueH.js} +1 -1
  69. package/dist-cli-web/assets/{Tabs-BMq9wODW.js → Tabs-xVtuBuO0.js} +1 -1
  70. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js → ThemeCard.vue_vue_type_script_setup_true_lang-CNCVa86b.js} +1 -1
  71. package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js → TimeSelect.vue_vue_type_script_setup_true_lang-BehUIWki.js} +1 -1
  72. package/dist-cli-web/assets/{VisuallyHiddenInput-BAFpkxMI.js → VisuallyHiddenInput-ST6JNfSG.js} +1 -1
  73. package/dist-cli-web/assets/{WebGLRenderer-DjCPvR_O.js → WebGLRenderer-DRraqD4Y.js} +1 -1
  74. package/dist-cli-web/assets/{WebGPURenderer-C2B_u03z.js → WebGPURenderer-CnzaYARg.js} +1 -1
  75. package/dist-cli-web/assets/aiChat-CeJy-gG-.js +8 -0
  76. package/dist-cli-web/assets/{base-F6s0vTrr.js → base-BHbtUviQ.js} +1 -1
  77. package/dist-cli-web/assets/{browserAll-DiUAZg4L.js → browserAll-DYxkitnx.js} +1 -1
  78. package/dist-cli-web/assets/{chatMessages-Bd33SSXI.js → chatMessages-Dj1u-tFB.js} +3 -3
  79. package/dist-cli-web/assets/{cli-web-DoibEdj2.js → cli-web-BtH8nfjA.js} +1 -1
  80. package/dist-cli-web/assets/{fetch-BEaW1j5H.js → fetch-BJ82mWvv.js} +1 -1
  81. package/dist-cli-web/assets/{fetch-BeX69kpS.js → fetch-C1Tm66i9.js} +1 -1
  82. package/dist-cli-web/assets/{fetch-4nh1LaVF.js → fetch-CAEyoWQA.js} +1 -1
  83. package/dist-cli-web/assets/{fetch-7lUvXbhU.js → fetch-CGnWNSsG.js} +1 -1
  84. package/dist-cli-web/assets/{fetch-DKBBS9Op.js → fetch-D7hfFyoG.js} +1 -1
  85. package/dist-cli-web/assets/{fetch-CXM-cjDS.js → fetch-DNmRaRxX.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-B_YFABxI.js → fetch-DogRrvT6.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-DBpDMy29.js → fetch-JEEBqR_7.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-CxVcHNid.js → fetch-T5Gi1TUZ.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-epFXmPIQ.js → fetch-U9QyidNZ.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-CXqeAbnY.js → fetch-ejEMWPM2.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-CRocA-4C.js → fetch-emZXHmoE.js} +1 -1
  92. package/dist-cli-web/assets/{host-CtSqR_Zm.js → host-BUvwCvZR.js} +1 -1
  93. package/dist-cli-web/assets/{host-C4rU8pKA.js → host-VTWF81F5.js} +1 -1
  94. package/dist-cli-web/assets/{index-ekvsNmfe.js → index-B3MCGDwx.js} +1 -1
  95. package/dist-cli-web/assets/index-BI2Rb_L3.js +2 -0
  96. package/dist-cli-web/assets/{index-mbLXPIyC.js → index-BLYSew5C.js} +1 -1
  97. package/dist-cli-web/assets/index-Bs7gk1gf.css +1 -0
  98. package/dist-cli-web/assets/{index-BgelKQTW.css → index-C75W1B5J.css} +1 -1
  99. package/dist-cli-web/assets/{index-BvMAw3Zd.js → index-CVRBBnQw.js} +1 -1
  100. package/dist-cli-web/assets/index-Cza8BzZE.js +137 -0
  101. package/dist-cli-web/assets/{index-B1oj9KDv.js → index-D9C3dyV8.js} +4 -4
  102. package/dist-cli-web/assets/{index-_m1mf1jm.js → index-DDt7Tfda.js} +1 -1
  103. package/dist-cli-web/assets/{index-CuCQ1d9f.js → index-DQFcmWSa.js} +1 -1
  104. package/dist-cli-web/assets/{index-BFH1j_R9.js → index-DUBl6aBF.js} +1 -1
  105. package/dist-cli-web/assets/{index-mXe1LssU.js → index-DZK9Njvy.js} +1 -1
  106. package/dist-cli-web/assets/{index-4DVZ2g0M.js → index-HjrJ3DXO.js} +1 -1
  107. package/dist-cli-web/assets/index-KpnLSzzX.js +64 -0
  108. package/dist-cli-web/assets/{index-DlHuILT_.js → index-e6fOnhNS.js} +1 -1
  109. package/dist-cli-web/assets/{index-D8cHMqV-.js → index-iEQnKg2R.js} +2 -2
  110. package/dist-cli-web/assets/{people-page-header-BbYSSpsO.js → people-page-header-DWXwFJ8M.js} +1 -1
  111. package/dist-cli-web/assets/{prompt-C-ofJ7t_.js → prompt-Cepfb-5-.js} +1 -1
  112. package/dist-cli-web/assets/{semantic-index-config-builder-D3TYVYC-.js → semantic-index-config-builder-hTY6QyCe.js} +1 -1
  113. package/dist-cli-web/assets/service-BjE0YJaM.js +1 -0
  114. package/dist-cli-web/assets/service-DQxttlJp.js +1 -0
  115. package/dist-cli-web/assets/{service-CppETV4a.js → service-DwCmXFtI.js} +1 -1
  116. package/dist-cli-web/assets/useFormControl-CJyJY8AK.js +1 -0
  117. package/dist-cli-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js → useInsightTabAnalytics-CplGbsbe.js} +8 -8
  118. package/dist-cli-web/assets/{useTable-Clk7ecq-.js → useTable-Dmpbk7fZ.js} +1 -1
  119. package/dist-cli-web/assets/{useToast-B5LaA6c-.js → useToast-Bmgpd3sl.js} +1 -1
  120. package/dist-cli-web/assets/{webworkerAll-CyA4b4LT.js → webworkerAll-DkPWEyVL.js} +1 -1
  121. package/dist-cli-web/index.html +1 -1
  122. package/package.json +1 -1
  123. package/dist/chat-command-YAFRLHMQ.mjs.map +0 -1
  124. package/dist/chunk-ARIBCH47.mjs.map +0 -1
  125. package/dist/chunk-JWJREWVN.mjs.map +0 -1
  126. package/dist/chunk-OTYNMDDL.mjs.map +0 -1
  127. package/dist/chunk-UP6JIV3S.mjs.map +0 -1
  128. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js +0 -1
  129. package/dist-cli-web/assets/aiChat--CR4g2M7.js +0 -8
  130. package/dist-cli-web/assets/index-CIIyg_o9.css +0 -1
  131. package/dist-cli-web/assets/index-CaYtkONV.js +0 -64
  132. package/dist-cli-web/assets/index-D3Hyjv4e.js +0 -137
  133. package/dist-cli-web/assets/index-R4LqAnx9.js +0 -2
  134. package/dist-cli-web/assets/service-BYOUkk7V.js +0 -1
  135. package/dist-cli-web/assets/service-tEx-5LUL.js +0 -1
  136. package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +0 -1
  137. /package/dist/{chunk-2PY4XCH3.mjs.map → chunk-E6LCCPIB.mjs.map} +0 -0
  138. /package/dist/{chunk-N4SB6QZV.mjs.map → chunk-EFX66A2O.mjs.map} +0 -0
  139. /package/dist/{chunk-PDQV4RUA.mjs.map → chunk-FCUUAGGC.mjs.map} +0 -0
  140. /package/dist/{chunk-GKCIRKOH.mjs.map → chunk-H46CLFWK.mjs.map} +0 -0
  141. /package/dist/{chunk-MMTEGUQA.mjs.map → chunk-HMVM7VCA.mjs.map} +0 -0
  142. /package/dist/{chunk-73TJ2S7W.mjs.map → chunk-L6RJIVLS.mjs.map} +0 -0
  143. /package/dist/{chunk-WDLO7OLX.mjs.map → chunk-XQ6Z2KNN.mjs.map} +0 -0
  144. /package/dist/{chunk-FPVRSXQ4.mjs.map → chunk-YI3EQYEG.mjs.map} +0 -0
  145. /package/dist/{http-LPFPVTBC.mjs.map → http-5BRVWAJR.mjs.map} +0 -0
  146. /package/dist/{import-T4WX2ZJL.mjs.map → import-IAECQDKC.mjs.map} +0 -0
  147. /package/dist/{mcp-SMF3NWIN.mjs.map → mcp-XXSQJBGU.mjs.map} +0 -0
  148. /package/dist/{src-EGLLMTAU.mjs.map → src-4HLKMQ7S.mjs.map} +0 -0
  149. /package/dist/{stream-import-2BXJTTCE.mjs.map → stream-import-PUG42I36.mjs.map} +0 -0
  150. /package/dist/{worker-runtime-RDLSPXFT.mjs.map → worker-runtime-X5563TVT.mjs.map} +0 -0
  151. /package/dist-cli-web/assets/{ActionToolsPanel-DDNXXH8v.css → useInsightTabAnalytics-DDNXXH8v.css} +0 -0
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-C2IUNPhg.js","assets/index-D9C3dyV8.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/useToast-Bmgpd3sl.js","assets/Tabs-DwjL-ueH.js","assets/Tabs-xVtuBuO0.js","assets/RovingFocusItem-Bqgmzo42.js"])))=>i.map(i=>d[i]);
2
+ import{d as K,a6 as Y,ac as ge,K as X,x as ve,y as he,o as n,f as V,g as t,w as H,c as u,a as e,p as o,F as O,j as G,n as F,l as B,z as j,a7 as ee,O as pe,e as $,b as U,J as Re,L as Ce,ar as Le,r as Be,a8 as De,a9 as $e,a5 as Ne,aD as Ve,ay as Fe,ap as Oe,ab as Ue,aA as Ee,be as Pe,aE as We,bs as He,aa as Je,bt as Ge,H as Ke,ah as Ye}from"./index-D9C3dyV8.js";import{_ as Se,a as Me,b as re,c as Qe,d as Xe,u as Ze,e as et,I as tt,f as at,g as st,h as nt,i as it,j as ot,k as rt,C as lt,l as ct,M as ut,m as dt,n as mt,o as pt,p as gt}from"./useInsightTabAnalytics-CplGbsbe.js";import{_ as vt}from"./SectionTabs.vue_vue_type_script_setup_true_lang-BPt98e6z.js";import{_ as ht}from"./Select-BAnN4HMs.js";import{_ as xe,L as xt}from"./LoadingState.vue_vue_type_script_setup_true_lang-DmVfwvnD.js";import{T as Ae}from"./Tabs-DwjL-ueH.js";import{_ as Te}from"./EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{u as fe,x as ft,q as ye,j as be,i as se,m as qe,t as ze,s as yt,k as bt}from"./vendor-echarts-C9ugTmum.js";import{_ as ke}from"./ThemeCard.vue_vue_type_script_setup_true_lang-CNCVa86b.js";import{g as kt}from"./base-BHbtUviQ.js";import{i as Ie}from"./chatMessages-Dj1u-tFB.js";import{_ as _t}from"./useTable-Dmpbk7fZ.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-HjrJ3DXO.js";import"./useToast-Bmgpd3sl.js";import"./service-DwCmXFtI.js";import"./Checkbox-D-hAv15R.js";import"./useFormControl-CJyJY8AK.js";import"./VisuallyHiddenInput-ST6JNfSG.js";import"./RovingFocusItem-Bqgmzo42.js";import"./Label-Ce4wl_Ph.js";import"./prompt-Cepfb-5-.js";import"./aiChat-CeJy-gG-.js";import"./chatlabSiteLocale-CrCNb8QP.js";import"./ChatRecordWorkspace-AfFIMUbZ.js";import"./DatePicker.vue_vue_type_script_setup_true_lang-CSp691Uv.js";import"./clamp-jFYhBC76.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js";import"./Tabs-xVtuBuO0.js";import"./semantic-index-config-builder-hTY6QyCe.js";import"./TimeSelect.vue_vue_type_script_setup_true_lang-BehUIWki.js";import"./CardDecoration-CnYxleQM.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js";import"./PageHeader-D5BcYKBs.js";import"./PageTabs.vue_vue_type_script_setup_true_lang-DHly2-fe.js";import"./Alert-qBIGn_CW.js";import"./FileDropZone.vue_vue_type_script_setup_true_lang-Dyuzh7Ex.js";import"./vendor-zrender-D8psf1AA.js";const wt={key:0,class:"relative z-10 flex flex-col h-full"},$t={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},Ct={class:"w-full flex-1 min-w-0"},St={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},Mt={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},jt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},Pt={class:"grid grid-cols-2 gap-4 sm:gap-10"},Tt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},It={class:"flex flex-col gap-2.5"},Rt=["title","onClick"],Dt={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},At={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},qt={class:"hidden shrink-0 sm:block"},zt={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},Lt={class:"mb-3 flex items-center justify-between"},Bt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Nt={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Vt={class:"mb-4 flex items-center gap-2.5"},Ft={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Ot={class:"flex items-center justify-between mb-4 w-full"},Ut={class:"flex flex-col flex-1 min-w-0"},Et={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Wt={class:"flex flex-col flex-1 min-w-0 items-end text-right"},Ht={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Jt={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Gt={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Kt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Yt={key:0,class:"text-[11px] text-gray-400"},Qt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Xt={key:0,class:"text-[11px] text-gray-400"},Zt={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},ea=["onClick"],ta={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},aa={key:0,class:"text-[11px] text-gray-400"},sa={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},na={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},ia={class:"flex items-center gap-1.5"},oa={class:"text-[9px] font-medium uppercase tracking-widest"},ra=K({__name:"LanguagePreferenceCard",props:{data:{},enableRecordNavigation:{type:Boolean,default:!0}},emits:["wordClick"],setup(C,{emit:a}){fe([ft,ye,be]);const{t:s}=Y(),p=ge(),i=C,g=a,D=$(()=>i.data.members[0]),y=$(()=>i.data.members[1]);function v(r,l){return r.length<=l?r:r.slice(0,l)+"…"}function z(r){const l=r.posDistribution,c=l.noun+l.verb+l.adjective+l.adverb+l.modalParticle+l.interjection+l.other;return c===0?s("quotes.languagePreference.pos.styleBalanced"):l.noun/c>.5?s("quotes.languagePreference.pos.styleEncyclopedia"):l.verb/c>.45?s("quotes.languagePreference.pos.styleAction"):l.adjective/c>.3?s("quotes.languagePreference.pos.styleExpressive"):s("quotes.languagePreference.pos.styleBalanced")}function A(r){const c=[["ellipsis",r.ellipsis],["exclamation",r.exclamation],["question",r.question],["tilde",r.tilde],["noPunct",r.noPunct],["period",r.period]].reduce((k,P)=>k[1]>=P[1]?k:P);return{ellipsis:s("quotes.languagePreference.punctuation.personalityDeep"),exclamation:s("quotes.languagePreference.punctuation.personalityPassionate"),question:s("quotes.languagePreference.punctuation.personalityCurious"),tilde:s("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:s("quotes.languagePreference.punctuation.personalityFreeflow"),period:s("quotes.languagePreference.punctuation.personalityPrecise")}[c[0]]||"-"}function w(r,l=5){return[["...",r.ellipsis],["!",r.exclamation],["?",r.question],["~",r.tilde],["。",r.period]].filter(([,m])=>m>0).sort((m,k)=>k[1]-m[1]).slice(0,l).map(([m])=>m)}const M=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],b=$(()=>{const r=D.value,l=y.value;if(!r||!l)return[];const c=i.data.sharedWords.slice(0,6).map((m,k)=>({word:m.word,color:M[k%M.length]}));return[{icon:"i-heroicons-book-open",iconBgClass:"bg-blue-100 dark:bg-blue-500/20",iconColorClass:"text-blue-600 dark:text-blue-400",title:s("quotes.languagePreference.card.diversityTitle"),leftName:r.name,leftValue:`${r.lexicalDiversity}%`,rightName:l.name,rightValue:`${l.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:c},desc:s("quotes.languagePreference.card.diversityDesc")},{icon:"i-heroicons-sparkles",iconBgClass:"bg-violet-100 dark:bg-violet-500/20",iconColorClass:"text-violet-600 dark:text-violet-400",title:s("quotes.languagePreference.card.styleTitle"),leftName:r.name,leftValue:z(r),rightName:l.name,rightValue:z(l),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:r.modalParticles.slice(0,4).map(m=>m.word),rightTags:l.modalParticles.slice(0,4).map(m=>m.word)},desc:s("quotes.languagePreference.card.styleDesc")},{icon:"i-heroicons-finger-print",iconBgClass:"bg-orange-100 dark:bg-orange-500/20",iconColorClass:"text-orange-600 dark:text-orange-400",title:s("quotes.languagePreference.card.punctTitle"),leftName:r.name,leftValue:A(r.punctuation),rightName:l.name,rightValue:A(l.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:w(r.punctuation,4),rightTags:w(l.punctuation,4)},desc:s("quotes.languagePreference.card.punctDesc")}]}),q=U(null);let S=null;function _(){q.value&&(S=se(q.value,void 0,{renderer:"canvas"}),f())}function f(){if(!S||!D.value||!y.value)return;const r=D.value.posDistribution,l=y.value.posDistribution,c=[{name:s("quotes.languagePreference.card.radarFactual"),max:0},{name:s("quotes.languagePreference.card.radarActive"),max:0},{name:s("quotes.languagePreference.card.radarDescriptive"),max:0},{name:s("quotes.languagePreference.card.radarAffable"),max:0},{name:s("quotes.languagePreference.card.radarIntense"),max:0}],m=[r.noun,r.verb,r.adjective,r.modalParticle+r.interjection,r.adverb],k=[l.noun,l.verb,l.adjective,l.modalParticle+l.interjection,l.adverb];for(let E=0;E<c.length;E++)c[E].max=Math.max(m[E],k[E],1)*1.3;const P=p.value?"#9ca3af":"#6b7280";S.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:P},data:[D.value.name,y.value.name]},radar:{indicator:c,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:p.value?["rgba(255,255,255,0.02)","rgba(255,255,255,0.04)"]:["rgba(0,0,0,0.01)","rgba(0,0,0,0.03)"]}},axisName:{color:P,fontSize:10},splitLine:{lineStyle:{color:p.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:p.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:m,name:D.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:k,name:y.value.name,lineStyle:{color:"#ec4899",width:2},areaStyle:{color:"rgba(236,72,153,0.15)"},itemStyle:{color:"#ec4899"},symbol:"circle",symbolSize:4}]}]},{notMerge:!0})}function d(){S?.resize()}return X(()=>i.data,()=>f(),{deep:!0}),X(p,()=>{S?.dispose(),_()}),ve(()=>{_(),window.addEventListener("resize",d)}),he(()=>{window.removeEventListener("resize",d),S?.dispose()}),(r,l)=>{const c=ee;return n(),V(t(Se),null,{default:H(()=>[D.value&&y.value?(n(),u("div",wt,[e("div",$t,[e("div",Ct,[e("div",St,[e("span",Mt,o(D.value.name),1),l[0]||(l[0]=e("span",{class:"text-sm sm:text-lg font-black text-gray-300 dark:text-gray-600 italic px-1 sm:px-2 shrink-0"}," VS ",-1)),e("span",jt,o(y.value.name),1)]),e("div",Pt,[(n(!0),u(O,null,G([D.value,y.value],(m,k)=>(n(),u("div",{key:m.memberId,class:"flex flex-col gap-3"},[e("div",Tt,o(t(s)("quotes.languagePreference.card.topCatchphrases")),1),e("div",It,[(n(!0),u(O,null,G(m.catchphrases.slice(0,3),(P,E)=>(n(),u("div",{key:E,class:"flex items-center gap-2 group"},[e("span",{class:F(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",k===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+o(E+1),3),e("span",{class:F(["truncate text-sm font-bold text-gray-700 transition-opacity dark:text-gray-200 sm:text-base",i.enableRecordNavigation?"cursor-pointer hover:opacity-70":""]),title:P.content,onClick:J=>i.enableRecordNavigation&&g("wordClick",P.content)}," 「"+o(v(P.content,12))+"」 ",11,Rt),e("span",Dt," ×"+o(P.count),1)]))),128)),m.catchphrases.length===0?(n(),u("div",At,"-")):B("",!0)])]))),128))])]),e("div",qt,[e("div",{ref_key:"radarRef",ref:q,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",zt,[e("div",Lt,[e("span",Bt,o(t(s)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Nt,[(n(!0),u(O,null,G(b.value,m=>(n(),u("div",{key:m.title,class:"flex min-w-0 flex-col p-4"},[e("div",Vt,[e("div",{class:F(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",m.iconBgClass])},[j(c,{name:m.icon,class:F(["h-4 w-4",m.iconColorClass])},null,8,["name","class"])],2),e("span",Ft,o(m.title),1)]),e("div",Ot,[e("div",Ut,[e("span",Et,o(m.leftName),1),e("span",{class:F(["truncate text-xl font-black font-mono leading-none",m.valueClass])},o(m.leftValue),3)]),l[1]||(l[1]=e("div",{class:"px-2 shrink-0"},[e("span",{class:"text-[10px] font-black text-gray-300 dark:text-gray-600 italic"},"VS")],-1)),e("div",Wt,[e("span",Ht,o(m.rightName),1),e("span",{class:F(["truncate text-xl font-black font-mono leading-none",m.valueClass])},o(m.rightValue),3)])]),e("div",Jt,[m.detail.kind==="tags-vs"?(n(),u("div",Gt,[e("div",Kt,[(n(!0),u(O,null,G(m.detail.leftTags,k=>(n(),u("span",{key:k,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400"},o(k),1))),128)),m.detail.leftTags.length===0?(n(),u("span",Yt,"-")):B("",!0)]),e("div",Qt,[(n(!0),u(O,null,G(m.detail.rightTags,k=>(n(),u("span",{key:k,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"},o(k),1))),128)),m.detail.rightTags.length===0?(n(),u("span",Xt,"-")):B("",!0)])])):m.detail.kind==="tags-single"?(n(),u("div",Zt,[(n(!0),u(O,null,G(m.detail.tags.slice(0,6),(k,P)=>(n(),u(O,{key:k.word},[e("span",{class:F(["shrink-0 text-[11px] font-bold transition-opacity",i.enableRecordNavigation?"cursor-pointer hover:opacity-80":""]),style:pe({color:k.color}),onClick:E=>i.enableRecordNavigation&&g("wordClick",k.word)},o(k.word),15,ea),P<m.detail.tags.slice(0,6).length-1?(n(),u("span",ta," · ")):B("",!0)],64))),128)),m.detail.tags.length===0?(n(),u("span",aa,"-")):B("",!0)])):B("",!0),e("p",sa,o(m.desc),1)])]))),128))])]),e("div",na,[e("div",ia,[j(c,{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",oa,o(t(s)("quotes.languagePreference.card.watermark")),1)])])):B("",!0)]),_:1})}}}),la={class:"px-5 py-4 sm:px-6"},ca={class:"mb-4 flex items-center justify-between"},ua={class:"flex items-center gap-2"},da={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},ma={key:0,class:"rounded-full bg-pink-100 px-2 py-0.5 text-[10px] font-bold text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},pa={key:0,class:"grid grid-cols-2 gap-6"},ga={class:"mb-3 text-center"},va={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},ha={class:"flex flex-wrap gap-2"},xa=["title","onClick"],fa={class:"text-[10px] font-semibold opacity-60"},ya={class:"mb-3 text-center"},ba={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},ka={class:"flex flex-wrap gap-2"},_a=["title","onClick"],wa={class:"text-[10px] font-semibold opacity-60"},$a={key:1,class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},Ca=K({__name:"CatchphrasePKSection",props:{members:{},enableRecordNavigation:{type:Boolean,default:!0}},emits:["wordClick"],setup(C,{emit:a}){const{t:s}=Y(),p=C,i=a,g=U(20),D=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],y=$(()=>p.members[0]),v=$(()=>p.members[1]),z=$(()=>y.value?.catchphrases.slice(0,g.value)??[]),A=$(()=>v.value?.catchphrases.slice(0,g.value)??[]),w=$(()=>{if(!y.value||!v.value)return new Set;const S=new Set(y.value.catchphrases.map(f=>f.content)),_=new Set(v.value.catchphrases.map(f=>f.content));return new Set([...S].filter(f=>_.has(f)))}),M=[{bg:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30",text:"text-amber-700 dark:text-amber-400 font-bold",badge:"bg-amber-500 text-white dark:bg-amber-600"},{bg:"bg-slate-50 text-slate-600 ring-1 ring-slate-500/20 dark:bg-slate-500/10 dark:text-slate-400 dark:ring-slate-500/30",text:"text-slate-700 dark:text-slate-300 font-bold",badge:"bg-slate-400 text-white dark:bg-slate-500"},{bg:"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",text:"text-orange-700 dark:text-orange-400 font-bold",badge:"bg-orange-400 text-white dark:bg-orange-500"}];function b(S){return S<M.length?M[S]:{bg:"bg-gray-50/50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/30 dark:text-gray-400 dark:ring-white/10",text:"text-gray-600 dark:text-gray-400",badge:"bg-transparent text-gray-400"}}function q(S,_=20){return S.length<=_?S:S.slice(0,_)+"..."}return(S,_)=>{const f=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",la,[e("div",ca,[e("div",ua,[j(f,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",da,o(t(s)("quotes.languagePreference.catchphrasePK.title")),1),w.value.size>0?(n(),u("span",ma,o(t(s)("quotes.languagePreference.catchphrasePK.sharedCount",{count:w.value.size})),1)):B("",!0)]),j(t(Ae),{modelValue:g.value,"onUpdate:modelValue":_[0]||(_[0]=d=>g.value=d),size:"xs",items:D},null,8,["modelValue"])]),y.value&&v.value?(n(),u("div",pa,[e("div",null,[e("div",ga,[e("span",va,o(y.value.name),1)]),e("div",ha,[(n(!0),u(O,null,G(z.value,(d,r)=>(n(),u("div",{key:d.content,class:F(["inline-flex items-center gap-1.5 rounded-full px-3 py-1 transition-opacity",[p.enableRecordNavigation?"cursor-pointer hover:opacity-75":"",w.value.has(d.content)?"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 shadow-sm":b(r).bg]]),title:d.content,onClick:l=>p.enableRecordNavigation&&i("wordClick",d.content)},[r<3?(n(),u("span",{key:0,class:F(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",b(r).badge])},o(r+1),3)):B("",!0),e("span",{class:F(["text-[13px] font-medium",w.value.has(d.content)?"font-bold":b(r).text])},o(q(d.content)),3),e("span",fa,"×"+o(d.count),1)],10,xa))),128))])]),e("div",null,[e("div",ya,[e("span",ba,o(v.value.name),1)]),e("div",ka,[(n(!0),u(O,null,G(A.value,(d,r)=>(n(),u("div",{key:d.content,class:F(["inline-flex items-center gap-1.5 rounded-full px-3 py-1 transition-opacity",[p.enableRecordNavigation?"cursor-pointer hover:opacity-75":"",w.value.has(d.content)?"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 shadow-sm":b(r).bg]]),title:d.content,onClick:l=>p.enableRecordNavigation&&i("wordClick",d.content)},[r<3?(n(),u("span",{key:0,class:F(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",b(r).badge])},o(r+1),3)):B("",!0),e("span",{class:F(["text-[13px] font-medium",w.value.has(d.content)?"font-bold":b(r).text])},o(q(d.content)),3),e("span",wa,"×"+o(d.count),1)],10,_a))),128))])])])):B("",!0),p.enableRecordNavigation?(n(),u("p",$a,o(t(s)("quotes.languagePreference.catchphrasePK.hint")),1)):B("",!0)])]),_:1})}}}),Sa={class:"px-5 py-4 sm:px-6"},Ma={class:"mb-4 flex items-center gap-2"},ja={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Pa={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},Ta={class:"flex-1"},Ia={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ra={class:"min-w-0"},Da={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Aa=K({__name:"PosPortraitSection",props:{members:{}},setup(C){fe([qe,ze,ye,yt,be]);const{t:a}=Y(),s=ge(),p=C,i=$(()=>p.members[0]),g=$(()=>p.members[1]);function D(M){const b=M.posDistribution,q=b.noun+b.verb+b.adjective+b.adverb+b.modalParticle+b.interjection+b.other;if(q===0)return{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const S=b.noun/q,_=b.verb/q,f=b.adjective/q;return S>.5?{label:a("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:_>.45?{label:a("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:f>.3?{label:a("quotes.languagePreference.pos.styleExpressive"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}const y=U(null);let v=null;function z(){y.value&&(v=se(y.value,void 0,{renderer:"canvas"}),A())}function A(){if(!v||!i.value||!g.value)return;const M=i.value.posDistribution,b=g.value.posDistribution,q=[a("quotes.languagePreference.card.radarNoun"),a("quotes.languagePreference.card.radarVerb"),a("quotes.languagePreference.card.radarAdj"),a("quotes.languagePreference.card.radarModal"),a("quotes.languagePreference.card.radarAdv")],S=[M.noun,M.verb,M.adjective,M.modalParticle+M.interjection,M.adverb],_=[b.noun,b.verb,b.adjective,b.modalParticle+b.interjection,b.adverb],f=s.value?"#9ca3af":"#6b7280";v.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[i.value.name,g.value.name],top:0,textStyle:{fontSize:11,color:f}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:q,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:f}},series:[{name:i.value.name,type:"bar",data:S,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:g.value.name,type:"bar",data:_,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function w(){v?.resize()}return X(()=>p.members,()=>A(),{deep:!0}),X(s,()=>{v?.dispose(),z()}),ve(()=>{z(),window.addEventListener("resize",w)}),he(()=>{window.removeEventListener("resize",w),v?.dispose()}),(M,b)=>{const q=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",Sa,[e("div",Ma,[j(q,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",ja,o(t(a)("quotes.languagePreference.pos.title")),1)]),e("div",Pa,[e("div",Ta,[e("div",{ref_key:"chartRef",ref:y,style:{width:"100%",height:"220px"}},null,512)]),i.value&&g.value?(n(),u("div",Ia,[(n(!0),u(O,null,G([i.value,g.value],S=>(n(),u("div",{key:S.memberId,class:"flex min-w-0 items-center gap-3 px-1 py-3"},[j(q,{name:D(S).icon,class:F(["h-5 w-5 shrink-0",D(S).colorClass])},null,8,["name","class"]),e("div",Ra,[e("div",Da,o(S.name),1),e("div",{class:F(["truncate text-sm font-bold",D(S).colorClass])},o(D(S).label),3)])]))),128))])):B("",!0)])])]),_:1})}}}),qa={class:"px-5 py-4 sm:px-6"},za={class:"mb-4 flex items-center gap-2"},La={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Ba={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Na={class:"mb-2 flex items-center justify-between"},Va={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Fa=K({__name:"ModalParticleSection",props:{members:{}},setup(C){fe([qe,ze,ye,be]);const{t:a}=Y(),s=ge(),p=C,i=$(()=>p.members[0]),g=$(()=>p.members[1]),D=new Set(["呀","哒","滴","啦","哇","耶"]),y=new Set(["呢","吗","嘛"]),v=new Set(["吧","喔","噢","嘛"]),z=new Set(["嗯","哦","额","呃"]);function A(d){const r={label:a("quotes.languagePreference.modal.toneMixed"),colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"};if(d.modalParticles.length===0)return r;let l=0,c=0,m=0,k=0,P=0;for(const J of d.modalParticles)P+=J.count,D.has(J.word)&&(l+=J.count),y.has(J.word)&&(c+=J.count),v.has(J.word)&&(m+=J.count),z.has(J.word)&&(k+=J.count);if(P===0)return r;const E=Math.max(l,c,m,k);return E===l&&l/P>.3?{label:a("quotes.languagePreference.modal.toneSoft"),colorClass:"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"}:E===c&&c/P>.3?{label:a("quotes.languagePreference.modal.toneCurious"),colorClass:"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"}:E===m&&m/P>.3?{label:a("quotes.languagePreference.modal.toneCasual"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"}:E===k&&k/P>.3?{label:a("quotes.languagePreference.modal.toneCalm"),colorClass:"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"}:r}const w=U(null),M=U(null);let b=null,q=null;function S(d,r){const l=d.modalParticles.slice(0,8),c=s.value?"#9ca3af":"#6b7280";return{backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:40,right:20,top:4,bottom:4},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:l.map(m=>m.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:c},inverse:!1},series:[{type:"bar",data:l.map(m=>m.count).reverse(),itemStyle:{color:r,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:c,formatter:"{c}"}}]}}function _(){w.value&&i.value&&(b=se(w.value,void 0,{renderer:"canvas"}),b.setOption(S(i.value,"#3b82f6"),{notMerge:!0})),M.value&&g.value&&(q=se(M.value,void 0,{renderer:"canvas"}),q.setOption(S(g.value,"#ec4899"),{notMerge:!0}))}function f(){b?.resize(),q?.resize()}return X(()=>p.members,()=>{b&&i.value&&b.setOption(S(i.value,"#3b82f6"),{notMerge:!0}),q&&g.value&&q.setOption(S(g.value,"#ec4899"),{notMerge:!0})},{deep:!0}),X(s,()=>{b?.dispose(),q?.dispose(),_()}),ve(()=>{_(),window.addEventListener("resize",f)}),he(()=>{window.removeEventListener("resize",f),b?.dispose(),q?.dispose()}),(d,r)=>{const l=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",qa,[e("div",za,[j(l,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",La,o(t(a)("quotes.languagePreference.modal.title")),1)]),i.value&&g.value?(n(),u("div",Ba,[(n(!0),u(O,null,G([i.value,g.value],(c,m)=>(n(),u("div",{key:c.memberId},[e("div",Na,[e("span",{class:F(["text-sm font-semibold",m===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},o(c.name),3),e("span",{class:F(["rounded-full px-2 py-0.5 text-[10px] font-bold",A(c).colorClass])},o(A(c).label),3)]),c.modalParticles.length>0?(n(),u("div",{key:0,ref_for:!0,ref:k=>{m===0?w.value=k:M.value=k},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",Va,o(t(a)("quotes.languagePreference.modal.empty")),1))]))),128))])):B("",!0)])]),_:1})}}}),Oa={class:"px-5 py-4 sm:px-6"},Ua={class:"mb-4 flex items-center gap-2"},Ea={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Wa={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Ha={class:"mb-2 flex items-center gap-2"},Ja={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ga=K({__name:"PunctuationSection",props:{members:{}},setup(C){fe([bt,ye,be]);const{t:a}=Y(),s=ge(),p=C,i=$(()=>p.members[0]),g=$(()=>p.members[1]),D=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function y(_){const d=[["ellipsis",_.ellipsis],["exclamation",_.exclamation],["question",_.question],["tilde",_.tilde],["noPunct",_.noPunct],["period",_.period]].reduce((l,c)=>l[1]>=c[1]?l:c);return{ellipsis:{label:a("quotes.languagePreference.punctuation.personalityDeep"),colorClass:"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"},exclamation:{label:a("quotes.languagePreference.punctuation.personalityPassionate"),colorClass:"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"},question:{label:a("quotes.languagePreference.punctuation.personalityCurious"),colorClass:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30"},tilde:{label:a("quotes.languagePreference.punctuation.personalityCheerful"),colorClass:"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"},noPunct:{label:a("quotes.languagePreference.punctuation.personalityFreeflow"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"},period:{label:a("quotes.languagePreference.punctuation.personalityPrecise"),colorClass:"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"}}[d[0]]||{label:"-",colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"}}function v(_){return[{name:"...",value:_.ellipsis},{name:"!",value:_.exclamation},{name:"?",value:_.question},{name:"~",value:_.tilde},{name:"。",value:_.period},{name:a("quotes.languagePreference.punctuation.none"),value:_.noPunct}].filter(f=>f.value>0)}const z=U(null),A=U(null);let w=null,M=null;function b(_){return{backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["45%","75%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!0,fontSize:10,color:s.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:_.map((f,d)=>({...f,itemStyle:{color:D[d%D.length]}}))}]}}function q(){z.value&&i.value&&(w=se(z.value,void 0,{renderer:"canvas"}),w.setOption(b(v(i.value.punctuation)),{notMerge:!0})),A.value&&g.value&&(M=se(A.value,void 0,{renderer:"canvas"}),M.setOption(b(v(g.value.punctuation)),{notMerge:!0}))}function S(){w?.resize(),M?.resize()}return X(()=>p.members,()=>{w&&i.value&&w.setOption(b(v(i.value.punctuation)),{notMerge:!0}),M&&g.value&&M.setOption(b(v(g.value.punctuation)),{notMerge:!0})},{deep:!0}),X(s,()=>{w?.dispose(),M?.dispose(),q()}),ve(()=>{q(),window.addEventListener("resize",S)}),he(()=>{window.removeEventListener("resize",S),w?.dispose(),M?.dispose()}),(_,f)=>{const d=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",Oa,[e("div",Ua,[j(d,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Ea,o(t(a)("quotes.languagePreference.punctuation.title")),1)]),i.value&&g.value?(n(),u("div",Wa,[(n(!0),u(O,null,G([i.value,g.value],(r,l)=>(n(),u("div",{key:r.memberId,class:"flex flex-col items-center"},[e("div",Ha,[e("span",{class:F(["text-sm font-semibold",l===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},o(r.name),3),e("span",{class:F(["rounded-full px-2 py-0.5 text-[10px] font-bold",y(r.punctuation).colorClass])},o(y(r.punctuation).label),3)]),r.punctuation.total>0?(n(),u("div",{key:0,ref_for:!0,ref:c=>{l===0?z.value=c:A.value=c},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",Ja,o(t(a)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):B("",!0)])]),_:1})}}}),Ka={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Ya=K({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{},enableRecordNavigation:{type:Boolean,default:!0}},setup(C){const{t:a,locale:s}=Y(),p=Re(),i=C,g=U(null),D=U(!1),y=$(()=>g.value&&g.value.members.length>=2);async function v(){if(i.sessionId){D.value=!0;try{g.value=await Ce().getLanguagePreferenceAnalysis(i.sessionId,s.value,i.timeFilter)}catch(A){console.error("[LanguagePreferenceTab] Failed to load:",A)}finally{D.value=!1}}}function z(A){i.enableRecordNavigation&&p.openChatRecordDrawer({keywords:[A]})}return X(()=>[i.sessionId,i.timeFilter],()=>v(),{immediate:!0,deep:!0}),(A,w)=>(n(),u("div",Ka,[D.value?(n(),V(t(xe),{key:0,text:t(a)("quotes.languagePreference.loading")},null,8,["text"])):y.value?g.value?(n(),u(O,{key:2},[j(ra,{data:g.value,"enable-record-navigation":i.enableRecordNavigation,onWordClick:z},null,8,["data","enable-record-navigation"]),j(Ca,{members:g.value.members,"enable-record-navigation":i.enableRecordNavigation,onWordClick:z},null,8,["members","enable-record-navigation"]),j(Aa,{members:g.value.members},null,8,["members"]),j(Fa,{members:g.value.members},null,8,["members"]),j(Ga,{members:g.value.members},null,8,["members"])],64)):B("",!0):(n(),V(t(Me),{key:1,text:t(a)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Qa={class:"flex min-w-0 flex-col p-4"},Xa={class:"mb-2 min-h-8"},Za={class:"flex items-center justify-between gap-2"},es={class:"flex min-w-0 items-center gap-2"},ts={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},as={key:0,class:"shrink-0"},ss={class:"flex h-full flex-col"},ns={class:"grid grid-cols-2 gap-2"},is={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},os=["title"],rs={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},ls=["title"],cs={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},me=K({__name:"RelationshipMetricCard",props:{title:{},iconName:{},iconBgClass:{},iconColorClass:{},leftName:{default:"—"},leftValue:{default:"--"},rightName:{default:"—"},rightValue:{default:"--"},valueClass:{default:"text-gray-700 dark:text-gray-200"},description:{default:""}},setup(C){const a=Le(),s=$(()=>!!a["header-extra"]);return(p,i)=>{const g=ee;return n(),u("div",Qa,[e("div",Xa,[e("div",Za,[e("div",es,[e("div",{class:F(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",C.iconBgClass])},[j(g,{name:C.iconName,class:F(["h-3.5 w-3.5",C.iconColorClass])},null,8,["name","class"])],2),e("span",ts,o(C.title),1)]),s.value?(n(),u("div",as,[Be(p.$slots,"header-extra")])):B("",!0)])]),e("div",ss,[e("div",ns,[e("div",is,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.leftName},o(C.leftName),9,os),e("div",{class:F(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},o(C.leftValue),3)]),e("div",rs,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.rightName},o(C.rightName),9,ls),e("div",{class:F(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},o(C.rightValue),3)])]),e("p",cs,o(C.description),1)])])}}}),us={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},ds={class:"space-y-6"},ms={class:"relative z-10 flex flex-col items-center justify-center gap-10 px-6 pt-10 pb-6 sm:px-8 lg:flex-row lg:items-start lg:justify-between lg:gap-8 xl:gap-12"},ps={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},gs={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},vs={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},hs={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},xs={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},fs={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ys={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},bs={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},ks={class:"text-base font-medium text-gray-600 dark:text-gray-300"},_s={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},ws={class:"text-base font-medium text-gray-600 dark:text-gray-300"},$s={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},Cs={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Ss={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Ms={class:"flex flex-1 flex-col items-center overflow-hidden"},js=["title"],Ps={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ts={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Is={class:"flex flex-1 flex-col items-center overflow-hidden"},Rs=["title"],Ds={class:"mt-1 text-2xl font-black text-pink-500 dark:text-pink-400"},As={class:"mt-0.5 text-[10px] font-medium text-gray-400"},qs={key:0,class:"flex min-w-0 w-full max-w-[400px] flex-1 flex-col justify-center lg:max-w-[460px]"},zs={class:"mb-2 flex items-center justify-between px-1"},Ls={class:"text-sm font-bold text-gray-900 dark:text-white"},Bs={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ns={class:"w-full"},Vs={class:"h-[200px] w-full"},Fs={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Os={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"},Us={class:"flex items-center gap-1.5"},Es={class:"text-[9px] font-medium uppercase tracking-widest"},Ws={class:"px-4 pb-5 sm:px-6 sm:pb-6"},Hs={key:0,class:"mt-6"},Js={class:"mb-3 text-xs font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Gs={class:"grid gap-x-8 gap-y-4 sm:grid-cols-3"},Ks={class:"min-w-0"},Ys={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Qs=["title"],Xs={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},Zs={class:"mt-5 flex justify-center"},en={key:1,class:"mt-3 overflow-x-auto rounded-lg border border-gray-200/80 dark:border-white/10"},tn={class:"min-w-full text-left text-sm"},an={class:"bg-gray-50/80 text-xs text-gray-500 dark:bg-white/[0.03] dark:text-gray-400"},sn={scope:"col",class:"px-4 py-2.5 font-medium"},nn={scope:"col",class:"px-4 py-2.5 text-right font-medium"},on={scope:"col",class:"px-4 py-2.5 text-right font-medium"},rn={scope:"col",class:"max-w-[180px] truncate px-4 py-2.5 text-right font-medium"},ln={scope:"col",class:"max-w-[180px] truncate px-4 py-2.5 text-right font-medium"},cn={class:"divide-y divide-gray-100 dark:divide-white/5"},un={class:"whitespace-nowrap px-4 py-2.5 font-medium text-gray-700 dark:text-gray-300"},dn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},mn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},pn={class:"whitespace-nowrap px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},gn={class:"whitespace-nowrap px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},vn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},hn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},xn=K({__name:"PrivateRelationshipView",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:s}=Y(),p=C,i=U(null),g=U(!1),D=U(!1),y=U("activity"),v=U(!1),z=U(300);async function A(x){if(!p.sessionId)return;const h=x?.localOnly==="perseverance";h?D.value=!0:g.value=!0;try{i.value=await Ce().getRelationshipStats(p.sessionId,p.timeFilter,{perseveranceThreshold:z.value})}catch(L){console.error("Failed to load relationship stats:",L)}finally{h?D.value=!1:g.value=!1}}X(()=>[p.sessionId,p.timeFilter],()=>A(),{immediate:!0,deep:!0});const w=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function M(x){z.value!==x&&(z.value=x,A({localOnly:"perseverance"}))}const b=$({get:()=>z.value,set:x=>M(x)});function q(x){return a("views.relationship.perseverance.thresholdMinutes",{n:Math.round(x/60)})}const S=$(()=>a("views.relationship.perseverance.hintWithThreshold",{threshold:q(z.value)})),_=$(()=>i.value?.hasSessionIndex&&i.value.totalSessions>0),f=$(()=>i.value?.members[0]),d=$(()=>i.value?.members[1]),r=$(()=>{if(!f.value||!i.value)return 50;const x=(f.value.totalInitiateCount??0)+(d.value?.totalInitiateCount??0);return x===0?50:Math.round(f.value.totalInitiateCount/x*100)}),l=$(()=>{if(!i.value||i.value.months.length===0)return"";const x=[...i.value.months].sort((R,I)=>R.month.localeCompare(I.month)),h=x[0].month.replace("-","/"),L=x[x.length-1].month.replace("-","/");return h===L?h:`${h} – ${L}`}),c=$(()=>s.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]"),m=$(()=>{if(!i.value||i.value.months.length===0||!f.value)return{};const x=[...i.value.months].sort((N,te)=>N.month.localeCompare(te.month)),h=x.map(N=>P(N.month)),L=f.value.name,R=d.value?.name??"—",I=x.map(N=>{const te=N.members.find(de=>de.memberId===f.value.memberId);return!te||N.totalSessions===0?50:Math.round(te.initiateCount/N.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(N){const te=N[0],de=te.value;return`${te.axisValue}<br/>${L}: ${de}%<br/>${R}: ${100-de}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:h,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:I,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{width:2,color:"#3b82f6"},itemStyle:{color:"#3b82f6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.15)"},{offset:1,color:"rgba(59, 130, 246, 0)"}]}},markLine:{silent:!0,data:[{yAxis:50,lineStyle:{type:"dashed",color:"#9ca3af"}}],label:{show:!1},symbol:"none"}}]}});function k(x){const[h,L]=x.split("-");return a("views.relationship.monthFormat",{year:h,month:Number.parseInt(L,10)})}function P(x){const h=x.split("-");return a("views.relationship.monthShortFormat",{month:Number.parseInt(h[1],10)})}function E(x){return!x||!i.value?.iceBreakers?.length?0:i.value.iceBreakers.filter(h=>h.memberId===x).reduce((h,L)=>h+L.count,0)}function J(x){if(!x||!i.value?.responseLatency?.length)return null;const h=i.value.responseLatency.find(L=>L.memberId===x);return h?h.avgResponseTime:null}function le(x){return!x||!i.value?.perseverance?.length?0:i.value.perseverance.find(L=>L.memberId===x)?.totalDoubleTexts??0}function ce(x){const h=J(x);return h!=null?T(h):"--"}function ne(x){return i.value?.monthlyResponseLatency?.find(h=>h.month===x)?.members??[]}function _e(x){return i.value?.monthlyPerseverance?.find(h=>h.month===x)?.members??[]}function ie(x,h){return h?ne(x).find(R=>R.memberId===h)?.avgResponseTime??null:null}function ue(x,h){const L=ie(x,h);return L==null?"—":T(L)}function ae(x,h){return h?_e(x).find(R=>R.memberId===h)?.doubleTextCount??0:0}function oe(x){return i.value?.iceBreakers?.filter(h=>h.month===x).reduce((h,L)=>h+L.count,0)??0}function Q(x){const h=ne(x),L=h.reduce((R,I)=>R+I.responseCount,0);return L===0?null:h.reduce((R,I)=>R+I.avgResponseTime*I.responseCount,0)/L}function T(x){const h=Math.max(0,Math.round(x));if(h<60)return a("views.relationship.responseLatency.seconds",{n:h});if(h<3600){const I=Math.floor(h/60),N=h%60;return a("views.relationship.responseLatency.minutesSeconds",{m:I,s:N})}const L=Math.floor(h/3600),R=Math.floor(h%3600/60);return R===0?a("views.relationship.responseLatency.hours",{n:L}):a("views.relationship.responseLatency.hoursMinutes",{h:L,m:R})}const Z=$(()=>[...i.value?.months??[]].sort((x,h)=>x.month.localeCompare(h.month))),we=$(()=>[{label:a("views.relationship.trajectory.metrics.activity"),value:"activity"},{label:a("views.relationship.trajectory.metrics.response"),value:"response"},{label:a("views.relationship.trajectory.metrics.perseverance"),value:"perseverance"}]),W=$(()=>{const x=Z.value,h=new Set(x.map(I=>I.month.slice(0,4))).size>1,L=x.map(I=>h?I.month.replace("-","/"):P(I.month)),R={color:["#3b82f6","#ec4899"],tooltip:{trigger:"axis"},legend:{top:4,textStyle:{fontSize:11}},grid:{left:52,right:24,top:44,bottom:34},xAxis:{type:"category",data:L,axisTick:{show:!1},axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,minInterval:1,axisLabel:{fontSize:11},splitLine:{lineStyle:{type:"dashed"}}}};return y.value==="activity"?{...R,series:[{name:a("views.relationship.trajectory.conversations"),type:"bar",data:x.map(I=>I.totalSessions),barMaxWidth:32,itemStyle:{borderRadius:[4,4,0,0]}},{name:a("views.relationship.trajectory.iceBreaks"),type:"line",data:x.map(I=>oe(I.month)),smooth:!0,symbolSize:7,lineStyle:{width:2}}]}:y.value==="response"?{...R,tooltip:{trigger:"axis",valueFormatter(I){return typeof I=="number"?T(I):String(I??"—")}},yAxis:{type:"value",min:0,axisLabel:{fontSize:11,formatter(I){return T(I)}},splitLine:{lineStyle:{type:"dashed"}}},series:[{name:f.value?.name??"—",type:"line",data:x.map(I=>ie(I.month,f.value?.memberId)),connectNulls:!1,smooth:!0,symbolSize:7,lineStyle:{width:2}},{name:d.value?.name??"—",type:"line",data:x.map(I=>ie(I.month,d.value?.memberId)),connectNulls:!1,smooth:!0,symbolSize:7,lineStyle:{width:2}}]}:{...R,series:[{name:f.value?.name??"—",type:"bar",data:x.map(I=>ae(I.month,f.value?.memberId)),barMaxWidth:24,itemStyle:{borderRadius:[4,4,0,0]}},{name:d.value?.name??"—",type:"bar",data:x.map(I=>ae(I.month,d.value?.memberId)),barMaxWidth:24,itemStyle:{borderRadius:[4,4,0,0]}}]}}),je=$(()=>{const x=Z.value.reduce((R,I)=>!R||I.totalSessions>R.totalSessions?I:R,null),h=Z.value.map(R=>({month:R.month,count:oe(R.month)})).filter(R=>R.count>0).sort((R,I)=>I.count-R.count)[0],L=Z.value.map(R=>({month:R.month,value:Q(R.month)})).filter(R=>R.value!=null).sort((R,I)=>R.value-I.value)[0];return[x&&x.totalSessions>0?{icon:"i-heroicons-chart-bar-square-solid",iconClass:"bg-blue-50 text-blue-500 dark:bg-blue-500/10 dark:text-blue-400",title:a("views.relationship.trajectory.activityPeak"),month:k(x.month),detail:a("views.relationship.trajectory.activityPeakDetail",{count:x.totalSessions})}:null,h?{icon:"i-heroicons-fire-solid",iconClass:"bg-pink-50 text-pink-500 dark:bg-pink-500/10 dark:text-pink-400",title:a("views.relationship.trajectory.iceBreakPeak"),month:k(h.month),detail:a("views.relationship.trajectory.iceBreakPeakDetail",{count:h.count})}:null,L?{icon:"i-heroicons-clock-solid",iconClass:"bg-blue-50 text-blue-500 dark:bg-blue-500/10 dark:text-blue-400",title:a("views.relationship.trajectory.fastestResponse"),month:k(L.month),detail:a("views.relationship.trajectory.fastestResponseDetail",{duration:T(L.value)})}:null].filter(R=>R!=null)});return(x,h)=>{const L=ht,R=ee,I=De;return n(),u("div",{class:F(g.value?"h-full":"")},[g.value?(n(),V(t(xe),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(n(),u("div",us,[i.value&&!_.value?(n(),V(t(Me),{key:0,icon:"i-heroicons-heart",title:t(a)("views.relationship.empty.title"),description:t(a)("views.relationship.empty.description")},null,8,["title","description"])):i.value&&_.value?(n(),u(O,{key:1},[e("div",ds,[j(t(Se),{id:"shareable-poster"},{default:H(()=>[e("div",ms,[e("div",ps,[e("div",{class:F(["flex w-fit min-w-0 flex-col items-start text-left",c.value])},[e("div",gs,[e("p",vs,o(l.value),1),e("div",hs,[e("span",xs,o(t(a)("views.relationship.hero.totalSessionsPrefix")),1),e("span",fs,o(i.value.totalSessions),1),e("span",ys,o(t(a)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",bs,[e("span",ks,o(t(a)("views.relationship.hero.initiativePrefix")),1),e("span",_s,o(r.value>=50?r.value:100-r.value)+"% ",1),e("span",ws,o(t(a)("views.relationship.hero.initiativeByPrefix")),1),e("span",$s,o(r.value>=50?f.value?.name:d.value?.name),1),e("span",Cs,o(t(a)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Ss,[e("div",Ms,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:f.value?.name},o(f.value?.name),9,js),e("div",Ps,o(f.value?.totalInitiateCount),1),e("div",Ts,o(t(a)("views.relationship.hero.initiateTimes")),1)]),h[3]||(h[3]=e("div",{class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-gray-100 font-black text-[10px] italic text-gray-400 shadow-inner dark:bg-page-dark/80 dark:text-gray-500"}," VS ",-1)),e("div",Is,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:d.value?.name},o(d.value?.name),9,Rs),e("div",Ds,o(d.value?.totalInitiateCount),1),e("div",As,o(t(a)("views.relationship.hero.initiateTimes")),1)])])],2)]),i.value.months.length>=2?(n(),u("div",qs,[e("div",zs,[e("span",Ls,o(t(a)("views.relationship.trend.title")),1),e("span",Bs,o(t(a)("views.relationship.trend.hint",{name:f.value?.name??""})),1)]),e("div",Ns,[e("div",Vs,[j(t(Te),{option:m.value,height:200},null,8,["option"])])])])):B("",!0)]),e("div",Fs,[j(me,{title:t(a)("views.relationship.closerTitle"),"icon-name":"i-heroicons-hand-raised-solid","icon-bg-class":"bg-blue-100 dark:bg-blue-500/20","icon-color-class":"text-blue-600 dark:text-blue-400","left-name":f.value?.name,"left-value":f.value?.totalCloseCount??0,"right-name":d.value?.name,"right-value":d.value?.totalCloseCount??0,"value-class":"text-lg text-blue-600 dark:text-blue-400",description:t(a)("views.relationship.closerHint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(a)("views.relationship.iceBreaker.title"),"icon-name":"i-heroicons-fire-solid","icon-bg-class":"bg-pink-100 dark:bg-pink-500/20","icon-color-class":"text-pink-600 dark:text-pink-400","left-name":f.value?.name,"left-value":E(f.value?.memberId),"right-name":d.value?.name,"right-value":E(d.value?.memberId),"value-class":"text-lg text-pink-600 dark:text-pink-400",description:t(a)("views.relationship.iceBreaker.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(a)("views.relationship.responseLatency.title"),"icon-name":"i-heroicons-clock-solid","icon-bg-class":"bg-amber-100 dark:bg-amber-500/20","icon-color-class":"text-amber-600 dark:text-amber-400","left-name":f.value?.name,"left-value":ce(f.value?.memberId),"right-name":d.value?.name,"right-value":ce(d.value?.memberId),"value-class":"text-base text-amber-600 dark:text-amber-400",description:t(a)("views.relationship.responseLatency.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(a)("views.relationship.perseverance.title"),"icon-name":"i-heroicons-arrow-path-solid","icon-bg-class":"bg-purple-100 dark:bg-purple-500/20","icon-color-class":"text-purple-600 dark:text-purple-400","left-name":f.value?.name,"left-value":le(f.value?.memberId),"right-name":d.value?.name,"right-value":le(d.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:S.value},{"header-extra":H(()=>[j(L,{modelValue:b.value,"onUpdate:modelValue":h[0]||(h[0]=N=>b.value=N),items:w,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:D.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Os,[e("div",Us,[j(R,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),h[4]||(h[4]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Es,o(t(a)("views.relationship.watermarkReport")),1)])]),_:1})]),j(t(re),{title:t(a)("views.relationship.trajectory.title"),description:t(a)("views.relationship.trajectory.description"),"show-divider":!1},{headerRight:H(()=>[j(t(Ae),{modelValue:y.value,"onUpdate:modelValue":h[1]||(h[1]=N=>y.value=N),items:we.value,size:"sm",class:"max-w-[58vw] sm:max-w-none"},null,8,["modelValue","items"])]),default:H(()=>[e("div",Ws,[j(t(Te),{option:W.value,height:280},null,8,["option"]),je.value.length>0?(n(),u("div",Hs,[e("p",Js,o(t(a)("views.relationship.trajectory.keyMoments")),1),e("div",Gs,[(n(!0),u(O,null,G(je.value,N=>(n(),u("div",{key:N.title,class:"flex min-w-0 items-start gap-3 py-1"},[e("div",{class:F(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",N.iconClass])},[j(R,{name:N.icon,class:"h-4 w-4"},null,8,["name"])],2),e("div",Ks,[e("p",Ys,o(N.title),1),e("p",{class:"mt-0.5 truncate text-sm font-semibold text-gray-900 dark:text-white",title:N.month},o(N.month),9,Qs),e("p",Xs,o(N.detail),1)])]))),128))])])):B("",!0),e("div",Zs,[j(I,{color:"neutral",variant:"ghost",size:"sm",icon:v.value?"i-heroicons-chevron-up":"i-heroicons-chevron-down",onClick:h[2]||(h[2]=N=>v.value=!v.value)},{default:H(()=>[$e(o(v.value?t(a)("views.relationship.trajectory.hideAll"):t(a)("views.relationship.trajectory.showAll")),1)]),_:1},8,["icon"])]),v.value?(n(),u("div",en,[e("table",tn,[e("thead",an,[e("tr",null,[e("th",sn,o(t(a)("views.relationship.trajectory.month")),1),y.value==="activity"?(n(),u(O,{key:0},[e("th",nn,o(t(a)("views.relationship.trajectory.conversations")),1),e("th",on,o(t(a)("views.relationship.trajectory.iceBreaks")),1)],64)):(n(),u(O,{key:1},[e("th",rn,o(f.value?.name),1),e("th",ln,o(d.value?.name),1)],64))])]),e("tbody",cn,[(n(!0),u(O,null,G([...Z.value].reverse(),N=>(n(),u("tr",{key:N.month},[e("td",un,o(k(N.month)),1),y.value==="activity"?(n(),u(O,{key:0},[e("td",dn,o(N.totalSessions),1),e("td",mn,o(oe(N.month)),1)],64)):y.value==="response"?(n(),u(O,{key:1},[e("td",pn,o(ue(N.month,f.value?.memberId)),1),e("td",gn,o(ue(N.month,d.value?.memberId)),1)],64)):(n(),u(O,{key:2},[e("td",vn,o(ae(N.month,f.value?.memberId)),1),e("td",hn,o(ae(N.month,d.value?.memberId)),1)],64))]))),128))])])])):B("",!0)])]),_:1},8,["title","description"])],64)):B("",!0)]))],2)}}}),fn={class:"relative z-10 px-6 pt-8 pb-5 sm:px-8 sm:pt-10"},yn={class:"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between lg:gap-12"},bn={class:"min-w-0 flex-1"},kn={class:"text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},_n={class:"mt-3 flex flex-wrap items-baseline gap-x-2 gap-y-1"},wn={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},$n={class:"text-4xl font-black tracking-tight text-gray-900 dark:text-white sm:text-5xl"},Cn={class:"mt-3 max-w-xl text-sm leading-6 text-gray-500 dark:text-gray-400"},Sn={class:"w-full min-w-0 lg:max-w-[380px]"},Mn={class:"mb-3 flex items-center justify-between gap-4"},jn={class:"text-xs font-bold tracking-wide text-gray-700 dark:text-gray-300"},Pn={class:"text-[10px] font-medium text-gray-400 dark:text-gray-500"},Tn=["title"],In={class:"mt-2 flex justify-between text-[10px] font-medium text-gray-400 dark:text-gray-500"},Rn={class:"relative z-10 grid grid-cols-2 gap-x-3 gap-y-4 px-4 pt-2 pb-6 sm:px-6 lg:grid-cols-4"},Dn={class:"min-w-0"},An={class:"mt-1 truncate text-[10px] font-semibold text-gray-600 dark:text-gray-300"},qn={class:"mt-0.5 line-clamp-2 text-[9px] leading-4 text-gray-400 dark:text-gray-500"},zn={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"},Ln={class:"flex items-center gap-1.5"},Bn={class:"text-[9px] font-medium uppercase tracking-widest"},Nn=K({__name:"JourneyReportCard",props:{stats:{},filtered:{type:Boolean}},setup(C){const a=C,{t:s,locale:p}=Y(),i=$(()=>new Intl.NumberFormat(p.value)),g=$(()=>new Intl.DateTimeFormat(p.value,{year:"numeric",month:"short",day:"numeric"})),D=$(()=>new Intl.DateTimeFormat(p.value,{year:"numeric",month:"short"})),y=$(()=>a.stats.range),v=$(()=>Math.max(...a.stats.months.map(d=>d.messageCount),1)),z=$(()=>({gridTemplateColumns:`repeat(${a.stats.months.length}, minmax(2px, 1fr))`,gap:a.stats.months.length>96?"1px":"2px"})),A=$(()=>{const d=y.value.spanDays;if(d<30)return s("views.journey.duration.days",{count:d});const r=Math.floor(d/365),l=Math.floor(d%365/30);return r>0?l>0?s("views.journey.duration.yearsMonths",{years:r,months:l}):s("views.journey.duration.years",{count:r}):s("views.journey.duration.months",{count:Math.max(1,l)})}),w=$(()=>[{icon:"i-heroicons-sparkles-solid",colorClass:"text-pink-500 dark:text-pink-400",label:s("views.journey.metrics.peakMonth"),value:a.stats.peakMonth?q(a.stats.peakMonth.month):"—",subtext:a.stats.peakMonth?s("views.journey.metrics.messagesAndDays",{messages:M(a.stats.peakMonth.messageCount),days:M(a.stats.peakMonth.activeDays)}):"—"},{icon:"i-heroicons-calendar-days-solid",colorClass:"text-indigo-500 dark:text-indigo-400",label:s("views.journey.metrics.activeMonths"),value:s("views.journey.metrics.monthsRatio",{active:M(y.value.activeMonths),total:M(y.value.spanMonths)}),subtext:s("views.journey.metrics.activeDays",{count:M(y.value.activeDays)})},{icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-blue-500 dark:text-blue-400",label:s("views.journey.metrics.longestConversation"),value:a.stats.longestSegment?S(a.stats.longestSegment.durationSeconds):"—",subtext:a.stats.longestSegment?s("views.journey.metrics.conversationDetail",{date:b(a.stats.longestSegment.startTs),count:M(a.stats.longestSegment.messageCount)}):s("views.journey.metrics.noIndex")},{icon:"i-heroicons-moon-solid",colorClass:"text-violet-500 dark:text-violet-400",label:s("views.journey.metrics.longestSilence"),value:a.stats.longestSilence?S(a.stats.longestSilence.durationSeconds):"—",subtext:a.stats.longestSilence?a.stats.longestSilence.reopenedBy?s("views.journey.metrics.reopenedBy",{name:a.stats.longestSilence.reopenedBy.name}):s("views.journey.metrics.reopened"):a.stats.hasSessionIndex?s("views.journey.metrics.noSilence"):s("views.journey.metrics.noIndex")}]);function M(d){return i.value.format(d)}function b(d){return g.value.format(d*1e3)}function q(d){const[r,l]=d.split("-").map(Number);return D.value.format(new Date(r,l-1,1))}function S(d){const r=Math.max(0,Math.round(d/60));if(r<1)return s("views.journey.duration.lessThanMinute");if(r<60)return s("views.journey.duration.minutes",{count:r});const l=Math.floor(r/60);if(l<24){const k=r%60;return k>0?s("views.journey.duration.hoursMinutes",{hours:l,minutes:k}):s("views.journey.duration.hours",{count:l})}const c=Math.floor(l/24),m=l%24;return m>0?s("views.journey.duration.daysHours",{days:c,hours:m}):s("views.journey.duration.days",{count:c})}function _(d){if(d===0)return"4px";const r=Math.sqrt(d/v.value);return`${Math.round(10+r*50)}px`}function f(d,r){return s("views.journey.hero.monthTooltip",{month:q(d),count:M(r)})}return(d,r)=>{const l=ee;return n(),V(t(Se),null,{default:H(()=>[e("div",fn,[e("div",yn,[e("div",bn,[e("p",kn,o(b(y.value.firstMessageTs))+" – "+o(b(y.value.lastMessageTs)),1),e("div",_n,[e("span",wn,o(t(s)("views.journey.hero.prefix")),1),e("span",$n,o(A.value),1)]),e("p",Cn,o(t(s)(C.filtered?"views.journey.hero.filteredSummary":"views.journey.hero.summary",{activeMonths:M(y.value.activeMonths),activeDays:M(y.value.activeDays)})),1)]),e("div",Sn,[e("div",Mn,[e("p",jn,o(t(s)("views.journey.hero.footprint")),1),e("p",Pn,o(t(s)("views.journey.hero.monthCount",{count:M(y.value.spanMonths)})),1)]),e("div",{class:"grid h-16 items-end overflow-hidden rounded-xl bg-gray-50/80 px-3 py-2 dark:bg-white/[0.035]",style:pe(z.value)},[(n(!0),u(O,null,G(C.stats.months,c=>(n(),u("div",{key:c.month,class:F(["min-w-0 rounded-t-sm",c.messageCount>0?"bg-pink-400/80 dark:bg-pink-400/75":"bg-gray-200 dark:bg-white/10"]),style:pe({height:_(c.messageCount)}),title:f(c.month,c.messageCount)},null,14,Tn))),128))],4),e("div",In,[e("span",null,o(q(C.stats.months[0].month)),1),e("span",null,o(q(C.stats.months[C.stats.months.length-1].month)),1)])])])]),e("div",Rn,[(n(!0),u(O,null,G(w.value,c=>(n(),u("div",{key:c.label,class:"flex min-w-0 items-start gap-2.5 px-2 py-1"},[j(l,{name:c.icon,class:F(["mt-0.5 h-4 w-4 shrink-0",c.colorClass])},null,8,["name","class"]),e("div",Dn,[e("p",{class:F(["truncate text-sm font-black leading-tight tabular-nums",c.colorClass])},o(c.value),3),e("p",An,o(c.label),1),e("p",qn,o(c.subtext),1)])]))),128))]),e("div",zn,[e("div",Ln,[j(l,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),r[0]||(r[0]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Bn,o(t(s)("views.journey.watermark")),1)])]),_:1})}}}),Vn={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Fn={class:"grid gap-4 px-5 pb-6 sm:grid-cols-2 sm:px-6 lg:grid-cols-3"},On={class:"min-w-0"},Un={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},En={class:"mt-0.5 text-sm font-semibold text-gray-900 dark:text-white"},Wn={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Hn={class:"space-y-3 px-5 pb-5 sm:px-6 sm:pb-6"},Jn={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Gn={class:"min-w-0"},Kn={class:"h-1.5 overflow-hidden rounded-full bg-gray-200/80 dark:bg-white/10"},Yn={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Qn={key:0,class:"text-left sm:min-w-28 sm:text-right"},Xn={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Zn={class:"mt-0.5 text-[10px] text-gray-400 dark:text-gray-500"},ei=K({__name:"JourneyView",props:{sessionId:{},timeFilter:{},timeRange:{}},setup(C){const a=C,{t:s,locale:p}=Y(),i=U(null),g=U(!1),D=U(!1),y=$(()=>new Intl.NumberFormat(p.value)),v=$(()=>new Intl.DateTimeFormat(p.value,{year:"numeric",month:"short",day:"numeric"})),z=$(()=>new Intl.DateTimeFormat(p.value,{year:"numeric",month:"short"})),A=$(()=>a.timeRange?a.timeFilter?.startTs!=null&&a.timeFilter.startTs>a.timeRange.start||a.timeFilter?.endTs!=null&&a.timeFilter.endTs<a.timeRange.end:!1),w=$(()=>i.value?.range!=null),M=$(()=>Math.max(...i.value?.years.map(c=>c.messageCount)??[],1)),b=$(()=>{if(!i.value?.range)return[];const c=[{id:"start",order:0,timestamp:i.value.range.firstMessageTs,icon:"i-heroicons-play-solid",iconClass:"bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400",title:s("views.journey.milestones.start"),date:_(i.value.range.firstMessageTs),detail:s("views.journey.milestones.startDetail")}];return i.value.peakMonth&&c.push({id:"peak",order:1,timestamp:d(i.value.peakMonth.month),icon:"i-heroicons-sparkles-solid",iconClass:"bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400",title:s("views.journey.milestones.peak"),date:f(i.value.peakMonth.month),detail:s("views.journey.milestones.peakDetail",{count:S(i.value.peakMonth.messageCount)})}),i.value.longestSegment&&c.push({id:"conversation",order:2,timestamp:i.value.longestSegment.startTs,icon:"i-heroicons-chat-bubble-left-right-solid",iconClass:"bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400",title:s("views.journey.milestones.longestConversation"),date:_(i.value.longestSegment.startTs),detail:s("views.journey.milestones.conversationDetail",{duration:r(i.value.longestSegment.durationSeconds),count:S(i.value.longestSegment.messageCount)})}),i.value.longestSilence&&c.push({id:"silence",order:3,timestamp:i.value.longestSilence.endTs,icon:"i-heroicons-moon-solid",iconClass:"bg-violet-50 text-violet-600 dark:bg-violet-500/10 dark:text-violet-400",title:s("views.journey.milestones.longestSilence"),date:s("views.journey.milestones.silenceRange",{start:_(i.value.longestSilence.startTs),end:_(i.value.longestSilence.endTs)}),detail:i.value.longestSilence.reopenedBy?s("views.journey.milestones.silenceDetailWithMember",{duration:r(i.value.longestSilence.durationSeconds),name:i.value.longestSilence.reopenedBy.name}):s("views.journey.milestones.silenceDetail",{duration:r(i.value.longestSilence.durationSeconds)})}),c.push({id:"end",order:4,timestamp:i.value.range.lastMessageTs,icon:"i-heroicons-flag-solid",iconClass:"bg-amber-50 text-amber-600 dark:bg-amber-500/10 dark:text-amber-400",title:s("views.journey.milestones.end"),date:_(i.value.range.lastMessageTs),detail:s(A.value?"views.journey.milestones.filteredEndDetail":"views.journey.milestones.endDetail")}),c.sort((m,k)=>m.timestamp-k.timestamp||m.order-k.order)});X(()=>[a.sessionId,a.timeFilter],()=>q(),{immediate:!0,deep:!0});async function q(){if(a.sessionId){g.value=!0,D.value=!1;try{i.value=await Ce().getJourneyStats(a.sessionId,a.timeFilter)}catch(c){i.value=null,D.value=!0;const m=c instanceof Error?c.message:String(c);console.error("Failed to load journey stats:",c),Ne(`Journey stats load failed: ${m}`,c instanceof Error?c.stack:void 0)}finally{g.value=!1}}}function S(c){return y.value.format(c)}function _(c){return v.value.format(c*1e3)}function f(c){const[m,k]=c.split("-").map(Number);return z.value.format(new Date(m,k-1,1))}function d(c){const[m,k]=c.split("-").map(Number);return Math.floor(new Date(m,k-1,1).getTime()/1e3)}function r(c){const m=Math.max(0,Math.round(c/60));if(m<1)return s("views.journey.duration.lessThanMinute");if(m<60)return s("views.journey.duration.minutes",{count:m});const k=Math.floor(m/60);if(k<24){const J=m%60;return J>0?s("views.journey.duration.hoursMinutes",{hours:k,minutes:J}):s("views.journey.duration.hours",{count:k})}const P=Math.floor(k/24),E=k%24;return E>0?s("views.journey.duration.daysHours",{days:P,hours:E}):s("views.journey.duration.days",{count:P})}function l(c){return c===0?"0%":`${Math.max(4,Math.round(c/M.value*100))}%`}return(c,m)=>{const k=ee;return n(),u("div",{class:F(g.value?"h-full":"")},[g.value?(n(),V(t(xe),{key:0,variant:"page",text:t(s)("common.loading")},null,8,["text"])):(n(),u("div",Vn,[w.value?i.value?(n(),u(O,{key:1},[j(Nn,{stats:i.value,filtered:A.value},null,8,["stats","filtered"]),j(t(re),{title:t(s)("views.journey.milestones.title"),description:t(s)("views.journey.milestones.description"),"show-divider":!1},{default:H(()=>[e("div",Fn,[(n(!0),u(O,null,G(b.value,P=>(n(),u("div",{key:P.id,class:"flex min-w-0 items-start gap-3 py-1"},[e("div",{class:F(["flex h-9 w-9 shrink-0 items-center justify-center rounded-xl",P.iconClass])},[j(k,{name:P.icon,class:"h-4 w-4"},null,8,["name"])],2),e("div",On,[e("p",Un,o(P.title),1),e("p",En,o(P.date),1),e("p",Wn,o(P.detail),1)])]))),128))])]),_:1},8,["title","description"]),j(t(re),{title:t(s)("views.journey.years.title"),description:t(s)("views.journey.years.description"),"show-divider":!1},{default:H(()=>[e("div",Hn,[(n(!0),u(O,null,G(i.value.years,P=>(n(),u("div",{key:P.year,class:"grid gap-3 rounded-xl bg-gray-50/70 px-4 py-3 dark:bg-white/[0.025] sm:grid-cols-[72px_minmax(0,1fr)_auto] sm:items-center"},[e("div",Jn,o(P.year),1),e("div",Gn,[e("div",Kn,[e("div",{class:"h-full rounded-full bg-pink-400 dark:bg-pink-400/80",style:pe({width:l(P.messageCount)})},null,4)]),e("p",Yn,[P.messageCount>0?(n(),u(O,{key:0},[$e(o(t(s)("views.journey.years.summary",{messages:S(P.messageCount),days:S(P.activeDays),months:S(P.activeMonths)})),1)],64)):(n(),u(O,{key:1},[$e(o(t(s)("views.journey.years.quiet")),1)],64))])]),P.messageCount>0?(n(),u("div",Qn,[e("p",Xn,o(f(P.peakMonth)),1),e("p",Zn,o(t(s)("views.journey.years.peak",{count:S(P.peakMonthMessageCount)})),1)])):B("",!0)]))),128))])]),_:1},8,["title","description"])],64)):B("",!0):(n(),V(t(Me),{key:0,icon:"🗓️",text:t(s)(D.value?"views.journey.loadError":"views.journey.empty"),padding:"lg"},null,8,["text"]))]))],2)}}}),ti={class:"main-content mx-auto max-w-[920px] space-y-4 p-4 sm:space-y-6 sm:p-6"},ai={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},si={class:"p-3 sm:p-5"},ni={class:"p-3 sm:p-5"},ii=K({__name:"PrivateChatOverview",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(C){const{t:a}=Y(),s=C,{dailyChartData:p}=Ze(()=>s.dailyActivity),i=$(()=>({labels:s.messageTypes.map(y=>kt(y.type,a)),values:s.messageTypes.map(y=>y.count)})),g=$(()=>{if(s.memberActivity.length<2)return null;const v=[...s.memberActivity].sort((A,w)=>w.messageCount-A.messageCount).slice(0,2),z=v[0].messageCount+v[1].messageCount;return{member1:{name:v[0].name,avatar:v[0].avatar,count:v[0].messageCount,percentage:z>0?Math.round(v[0].messageCount/z*100):0},member2:{name:v[1].name,avatar:v[1].avatar,count:v[1].messageCount,percentage:z>0?Math.round(v[1].messageCount/z*100):0},total:z}}),D=$(()=>g.value?{labels:[g.value.member1.name,g.value.member2.name],values:[g.value.member1.count,g.value.member2.count]}:{labels:[],values:[]});return(y,v)=>(n(),u("div",ti,[j(Qe,{session:C.session,"daily-activity":C.dailyActivity,"message-types":C.messageTypes,"hourly-activity":C.hourlyActivity,"time-range":C.timeRange,"filtered-message-count":C.filteredMessageCount,"filtered-member-count":C.filteredMemberCount,"time-filter":C.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","filtered-message-count","filtered-member-count","time-filter"]),e("div",ai,[j(t(re),{title:t(a)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:H(()=>[e("div",si,[j(t(Ie),{data:i.value,height:280},null,8,["data"])])]),_:1},8,["title"]),g.value?(n(),V(t(re),{key:0,title:t(a)("analysis.overview.memberComparison"),"show-divider":!1},{default:H(()=>[e("div",ni,[j(t(Ie),{data:D.value,height:280},null,8,["data"])])]),_:1},8,["title"])):B("",!0)]),j(Xe,{"daily-activity":C.dailyActivity,"daily-chart-data":t(p)},null,8,["daily-activity","daily-chart-data"])]))}}),oi={class:"flex h-full flex-col"},ri={class:"min-h-0 flex-1 overflow-auto"},li=K({__name:"PrivateChatInsights",props:{sessionId:{},session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},emits:["selectTab"],setup(C,{emit:a}){const{t:s}=Y(),p=C,i=$(()=>[{id:"overview",label:s("analysis.tabs.overview"),icon:"i-heroicons-squares-2x2"},{id:"relationship",label:s("analysis.subTabs.insights.relationship"),icon:"i-heroicons-heart"},{id:"journey",label:s("analysis.subTabs.insights.journey"),icon:"i-heroicons-map"},{id:"type-analysis",label:s("analysis.subTabs.insights.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:s("analysis.subTabs.insights.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:s("analysis.subTabs.insights.topic"),icon:"i-heroicons-cloud"},{id:"language-preference",label:s("analysis.subTabs.insights.languagePreference"),icon:"i-heroicons-language"}]),g=U("overview"),D=a,y=U(null),v=$(()=>({...p.timeFilter,memberId:y.value}));return(z,A)=>(n(),u("div",oi,[j(t(vt),{modelValue:g.value,"onUpdate:modelValue":A[1]||(A[1]=w=>g.value=w),items:i.value,"persist-key":"privateInsightsTab",onSelect:A[2]||(A[2]=w=>D("selectTab",w))},{right:H(()=>[g.value==="type-analysis"||g.value==="time-analysis"?(n(),V(et,{key:0,modelValue:y.value,"onUpdate:modelValue":A[0]||(A[0]=w=>y.value=w),"session-id":p.sessionId},null,8,["modelValue","session-id"])):B("",!0)]),_:1},8,["modelValue","items"]),e("div",ri,[j(t(tt),{"active-key":g.value},{default:H(({viewKey:w})=>[w==="overview"?(n(),V(ii,{key:0,session:p.session,"member-activity":p.memberActivity,"message-types":p.messageTypes,"hourly-activity":p.hourlyActivity,"daily-activity":p.dailyActivity,"time-range":p.timeRange,"filtered-message-count":p.filteredMessageCount,"filtered-member-count":p.filteredMemberCount,"time-filter":p.timeFilter},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):w==="type-analysis"?(n(),V(at,{key:1,"session-id":p.sessionId,"session-name":p.session.name,"time-filter":v.value},null,8,["session-id","session-name","time-filter"])):w==="time-analysis"?(n(),V(st,{key:2,"session-id":p.sessionId,"session-name":p.session.name,"time-filter":v.value},null,8,["session-id","session-name","time-filter"])):w==="relationship"?(n(),V(xn,{key:3,"session-id":p.sessionId,"time-filter":p.timeFilter},null,8,["session-id","time-filter"])):w==="journey"?(n(),V(ei,{key:4,"session-id":p.sessionId,"time-filter":p.timeFilter,"time-range":p.timeRange},null,8,["session-id","time-filter","time-range"])):w==="topic"?(n(),V(t(nt),{key:5,"session-id":p.sessionId,"time-filter":p.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):w==="language-preference"?(n(),V(t(Ya),{key:6,"session-id":p.sessionId,"time-filter":p.timeFilter},null,8,["session-id","time-filter"])):B("",!0)]),_:1},8,["active-key"])])]))}}),ci={class:"relative flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},ui=["aria-label"],di={class:"relative flex-1 overflow-y-auto"},mi={class:"h-full"},pi={key:2,class:"flex h-full items-center justify-center"},gi={class:"text-gray-500"},vi={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},hi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},xi={class:"text-lg font-semibold text-gray-900 dark:text-white"},fi={class:"text-sm text-gray-500 dark:text-gray-400"},yi={class:"flex-1 overflow-hidden"},bi=K({__name:"index",setup(C){const a=He(()=>Ge(()=>import("./MessageExportModal-C2IUNPhg.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),{t:s}=Y(),p=Ve(),i=Fe(),g=Oe(),D=Re(),y=Ue(),{currentSessionId:v}=Ee(g),z=U(!1),A=U(!1),w=U(!1),M=U(!1),b=U(!1);function q(){D.openChatRecordDrawer({})}const S=[{id:"insights",labelKey:"analysis.tabs.insights",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"memory",labelKey:"analysis.tabs.memory",icon:"i-heroicons-light-bulb"},{id:"more",labelKey:"analysis.tabs.more",icon:"i-heroicons-squares-2x2"}],{activeTab:_,isLoading:f,isInitialLoad:d,isSessionSwitching:r,session:l,memberActivity:c,hourlyActivity:m,dailyActivity:k,messageTypes:P,timeRangeValue:E,fullTimeRange:J,timeFilter:le,initialTimeState:ce,invalidateAnalysisData:ne,handleTimeRangeInitialized:_e}=it({route:p,router:i,currentSessionId:v,selectSession:g.selectSession,defaultTab:y.defaultSessionTab,validTabIds:S.map(Q=>Q.id)});Ke("session-switch-loading",r);const ie=ot({chatType:"private",isActive:()=>_.value==="insights"&&!r.value,sessionId:v,routePath:()=>p.path}),ue=$(()=>c.value.reduce((Q,T)=>Q+T.messageCount,0)),ae=$(()=>c.value.filter(Q=>Q.messageCount>0).length),oe=$(()=>{if(!l.value)return null;if(l.value.memberAvatar)return l.value.memberAvatar;if(c.value.length===0)return null;if(l.value.ownerId){const T=c.value.find(Z=>Z.platformId!==l.value?.ownerId);if(T?.avatar)return T.avatar}const Q=c.value.find(T=>T.name===l.value?.name);return Q?.avatar?Q.avatar:(c.value.length,null)});return(Q,T)=>{const Z=De,we=Je;return n(),u("div",ci,[t(r)?(n(),u("div",{key:0,"data-testid":"private-chat-switch-loading",class:"absolute inset-0 z-20 flex cursor-wait items-center justify-center bg-page-bg dark:bg-page-dark",style:{paddingTop:"var(--titlebar-area-height)"},role:"status","aria-live":"polite","aria-label":t(s)("common.loading")},[j(t(xt))],8,ui)):B("",!0),t(l)?(n(),u(O,{key:1},[j(rt,{"active-tab":t(_),"onUpdate:activeTab":T[0]||(T[0]=W=>Pe(_)?_.value=W:null),"time-range-value":t(E),"onUpdate:timeRangeValue":T[1]||(T[1]=W=>Pe(E)?E.value=W:null),title:t(l).name,avatar:oe.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:S,"current-session-id":t(v),"initial-time-state":t(ce),onOpenIncrementalImport:T[2]||(T[2]=W=>w.value=!0),onOpenMemberManagement:T[3]||(T[3]=W=>b.value=!0),onOpenChatRecord:q,"onUpdate:fullRange":T[4]||(T[4]=W=>J.value=W),onTimeRangeInitialized:t(_e)},null,8,["active-tab","time-range-value","title","avatar","current-session-id","initial-time-state","onTimeRangeInitialized"]),e("div",di,[t(f)&&!t(r)?(n(),V(t(xe),{key:0,variant:"overlay",text:t(s)("common.loading")},null,8,["text"])):B("",!0),e("div",mi,[j(We,{name:"tab-slide",mode:"out-in"},{default:H(()=>[t(_)==="insights"?(n(),V(li,{key:"insights-"+t(v),"session-id":t(v),session:t(l),"member-activity":t(c),"message-types":t(P),"hourly-activity":t(m),"daily-activity":t(k),"time-range":t(J),"filtered-message-count":ue.value,"filtered-member-count":ae.value,"time-filter":t(le),onSelectTab:t(ie)},null,8,["session-id","session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter","onSelectTab"])):t(_)==="ai-chat"?(n(),V(t(lt),{key:"ai-chat-"+t(v),"session-id":t(v),"session-name":t(l).name,"chat-type":"private"},null,8,["session-id","session-name"])):t(_)==="memory"?(n(),V(ct,{key:"memory-"+t(v),"session-id":t(v),"session-name":t(l).name},null,8,["session-id","session-name"])):t(_)==="more"?(n(),V(ut,{key:"more-"+t(v),"session-id":t(v),"chat-type":"private"},null,8,["session-id"])):B("",!0)]),_:1})])]),j(dt,{onOpenIncrementalImport:T[5]||(T[5]=W=>w.value=!0),onOpenSemanticIndex:T[6]||(T[6]=W=>z.value=!0),onOpenMemberManagement:T[7]||(T[7]=W=>b.value=!0),onOpenChatRecord:q,onOpenMessageExport:T[8]||(T[8]=W=>M.value=!0)})],64)):t(d)?B("",!0):(n(),u("div",pi,[e("p",gi,o(t(s)("analysis.privateChat.loadError")),1)])),t(v)&&t(l)?(n(),V(mt,{key:3,modelValue:z.value,"onUpdate:modelValue":T[9]||(T[9]=W=>z.value=W),"session-id":t(v),"message-count":t(l).messageCount},null,8,["modelValue","session-id","message-count"])):B("",!0),t(v)&&t(l)?(n(),V(_t,{key:4,modelValue:A.value,"onUpdate:modelValue":T[10]||(T[10]=W=>A.value=W),"session-id":t(v),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):B("",!0),t(v)&&t(l)?(n(),V(pt,{key:5,modelValue:w.value,"onUpdate:modelValue":T[11]||(T[11]=W=>w.value=W),"session-id":t(v),"session-name":t(l).name,onImported:T[12]||(T[12]=()=>{t(ne)(),t(g).loadSessions()})},null,8,["modelValue","session-id","session-name"])):B("",!0),t(v)?(n(),V(t(a),{key:6,modelValue:M.value,"onUpdate:modelValue":T[13]||(T[13]=W=>M.value=W)},null,8,["modelValue"])):B("",!0),t(v)?(n(),V(we,{key:7,open:b.value,"onUpdate:open":T[15]||(T[15]=W=>b.value=W),ui:{content:"max-w-6xl h-[85vh]"}},{content:H(()=>[e("div",vi,[e("div",hi,[e("div",null,[e("h2",xi,o(t(s)("analysis.tooltip.memberManagement")),1),e("p",fi,o(t(s)("members.private.description",{count:t(l)?.memberCount??0})),1)]),j(Z,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:T[14]||(T[14]=W=>b.value=!1)})]),e("div",yi,[j(gt,{"session-id":t(v),"show-header":!1,"chat-type":"private",onDataChanged:t(ne)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):B("",!0)])}}}),oo=Ye(bi,[["__scopeId","data-v-223aca33"]]);export{oo as default};
@@ -1 +1 @@
1
- import{d as _e,a6 as ke,aF as we,L as ze,ap as Pe,K,al as Ee,o as c,f as ee,w as E,a as i,p as d,g as n,z as u,a8 as Ue,a9 as B,c as m,aq as je,a7 as Ce,F as te,j as be,n as qe,l as U,b as g,e as H,aa as Re,aD as Fe,ay as Be,J as Le,x as Ne,aG as De,C as ge,y as Oe,aE as Ge,aH as ye}from"./index-B1oj9KDv.js";import{_ as He,u as Ke,a as Je,b as Qe,c as We,d as he,e as Xe,f as Ye,g as Ze,h as et}from"./chatMessages-Bd33SSXI.js";import{_ as tt}from"./Tabs-BMq9wODW.js";import{u as Se}from"./useToast-B5LaA6c-.js";import{P as at}from"./PageHeader-CKeZjNNR.js";import{u as st}from"./aiChat--CR4g2M7.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-4DVZ2g0M.js";import"./service-CppETV4a.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js";import"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import"./prompt-C-ofJ7t_.js";import"./RovingFocusItem-BJMUQ5DJ.js";import"./chatlabSiteLocale-CrCNb8QP.js";const lt={class:"flex max-h-[78vh] min-h-[520px] flex-col overflow-hidden"},ot={class:"flex items-start justify-between border-b border-gray-200 px-5 py-4 dark:border-gray-800"},nt={class:"text-base font-semibold text-gray-900 dark:text-white"},it={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},rt={class:"flex min-h-0 flex-1 flex-col px-5 py-4"},ct={class:"mb-3 flex items-center justify-between gap-3"},ut={class:"flex items-center gap-2"},dt={class:"text-xs text-gray-400"},mt={key:0,class:"mb-3 rounded-xl border border-primary-200 bg-primary-50/40 p-3 dark:border-primary-900/70 dark:bg-primary-950/20"},ft={class:"mb-2 flex items-center justify-between gap-3"},pt={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},vt={class:"truncate text-[11px] text-gray-400"},gt={key:0,class:"mb-3 space-y-2"},yt={class:"max-h-36 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-1 dark:border-gray-800"},ht={key:0,class:"flex h-20 items-center justify-center"},bt=["onClick"],xt={class:"truncate"},_t={class:"shrink-0 text-[10px] text-gray-400"},kt={key:2,class:"flex h-20 items-center justify-center text-xs text-gray-400"},wt={class:"mt-2 flex items-center justify-between gap-3"},Ct={class:"text-[11px] text-gray-400"},St={class:"flex items-center gap-2"},It={class:"min-h-0 flex-1 overflow-y-auto pr-1"},Tt={key:0,class:"flex h-full min-h-56 items-center justify-center"},At={key:1,class:"flex min-h-56 flex-col items-center justify-center text-center"},$t={class:"text-sm text-gray-500 dark:text-gray-400"},Mt={key:2,class:"space-y-2"},Vt={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-500"},zt={class:"truncate"},Pt={key:1},Et={class:"mt-2 flex justify-end gap-2"},Ut={class:"whitespace-pre-wrap break-words text-sm leading-6 text-gray-800 dark:text-gray-200"},jt={class:"mt-2 flex items-center justify-between gap-3"},qt={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-gray-400"},Rt={class:"flex shrink-0 items-center gap-0.5"},Ft={key:0,class:"mt-2 flex flex-wrap items-center justify-between gap-2 border-t border-gray-100 pt-2 text-[11px] dark:border-gray-800"},Bt={key:0,class:"text-amber-600 dark:text-amber-400"},Lt={key:1,class:"ml-auto text-gray-400 dark:text-gray-500"},Nt={class:"flex items-center justify-between border-t border-gray-200 px-5 py-3 dark:border-gray-800"},Dt={class:"flex items-center gap-2"},Ot=1500,Gt=_e({__name:"AIMemoryManagerModal",props:{open:{type:Boolean}},emits:["update:open","view-source"],setup(ue,{emit:_}){const ae=ue,z=_,{t:s,locale:D}=ke(),S=Se(),h=we(),O=ze(),A=Pe(),f=g("preferences"),k=g([]),j=g(new Map),v=g(!1),w=g(null),G=g(null),I=g(""),L=g(!1),q=g(""),C=g("contact"),b=g(null),$=g(""),M=g([]),R=g(!1);let T=null,P=null,F=0;const se=H(()=>[{label:s("ai.global.memory.preferences"),value:"preferences"},{label:s("ai.global.memory.self"),value:"self"},{label:s("ai.global.memory.entities"),value:"entities"}]),J=H(()=>k.value.filter(e=>f.value==="preferences"?e.scopeType==="global":f.value==="self"?e.scopeType==="self":e.scopeType==="contact"||e.scopeType==="group")),re=H(()=>[{label:s("ai.global.entityPicker.contacts"),value:"contact"},{label:s("ai.global.entityPicker.groups"),value:"group"}]),le=H(()=>{const e=$.value.trim().toLocaleLowerCase();return A.sessions.filter(a=>a.type==="group").filter(a=>!e||`${a.name} ${a.platform}`.toLocaleLowerCase().includes(e)).map(a=>({scopeType:"group",scopeId:a.id,label:a.name,detail:a.platform}))}),oe=H(()=>C.value==="contact"?M.value:le.value),ce=H(()=>f.value==="preferences"?s("ai.global.memory.preferences"):f.value==="self"?s("ai.global.memory.self"):b.value?.label??s("ai.global.memory.selectEntity")),Y=H(()=>q.value.trim().length>0&&q.value.trim().length<=2e3&&(f.value!=="entities"||b.value!==null));function Q(){z("update:open",!1)}function ne(e){G.value=e.id,I.value=e.content}function N(){G.value=null,I.value=""}function de(){N(),L.value=!0,q.value="",b.value=null,$.value="",f.value==="entities"&&C.value==="contact"&&t("")}function W(){L.value=!1,q.value="",b.value=null,$.value="",F++,R.value=!1,T&&(clearTimeout(T),T=null),o()}function ie(e){return new Intl.DateTimeFormat(D.value,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(e)}function me(e){!e.sourceAIChatId||e.sourceStatus!=="conversation"&&e.sourceStatus!=="message"||(z("update:open",!1),z("view-source",{aiChatId:e.sourceAIChatId,messageId:e.sourceStatus==="message"?e.sourceMessageId:null}))}function fe(e){return e.scopeId?e.scopeType==="contact"?j.value.get(e.scopeId)??e.scopeId:A.sessions.find(a=>a.id===e.scopeId)?.name??e.scopeId:""}async function pe(e){const a=[...new Set(e.filter(x=>x.scopeType==="contact").map(x=>x.scopeId))].filter(x=>!!x),p=new Map,X=await Promise.allSettled(a.map(async x=>({key:x,detail:await O.getContactDetail(x,{acceptStale:!0})})));for(const x of X)x.status==="fulfilled"&&x.value.detail.contact&&p.set(x.value.key,x.value.detail.contact.displayName);j.value=p}async function t(e){const a=++F;R.value=!0;try{const p={acceptStale:!0,timeRangePreset:"all",page:1,pageSize:100,query:e.trim()||void 0},X=await Promise.all([O.getContacts({...p,pool:"friend"}),O.getContacts({...p,pool:"non_friend"})]);if(a!==F)return;const x=new Map;X.flatMap(V=>V.contacts).forEach(V=>x.set(V.key,V)),M.value=[...x.values()].map(V=>({scopeType:"contact",scopeId:V.key,label:V.displayName,detail:V.platformId})),y(X,e)}catch(p){if(a!==F)return;o(),M.value=[],S.fail(s("ai.global.entityPicker.loadFailed"),{description:String(p)})}finally{a===F&&(R.value=!1)}}function o(){P&&(clearTimeout(P),P=null)}function y(e,a){o(),!(!L.value||f.value!=="entities"||C.value!=="contact")&&e.some(p=>p.task?.status==="running")&&(P=setTimeout(()=>{P=null,t(a)},Ot))}function l(e){T&&clearTimeout(T),o(),F++,T=setTimeout(()=>{T=null,t(e)},200)}async function ve(){v.value=!0;try{const e=await h.getAIMemories();k.value=e,await Promise.all([A.loadSessions(),pe(e)])}catch(e){S.fail(s("ai.global.memory.toast.loadFailed"),{description:String(e)})}finally{v.value=!1}}async function Ie(e){if(I.value.trim()){w.value=e.id;try{const a=await h.updateAIMemory(e.id,I.value);k.value=k.value.map(p=>p.id===a.id?a:p),N(),S.success(s("ai.global.memory.toast.saved"))}catch(a){S.fail(s("ai.global.memory.toast.saveFailed"),{description:String(a)})}finally{w.value=null}}}async function Te(){if(Y.value){w.value="new";try{const e=f.value==="preferences"?{scopeType:"global",scopeId:null}:f.value==="self"?{scopeType:"self",scopeId:null}:{scopeType:b.value.scopeType,scopeId:b.value.scopeId},a=await h.createAIMemory({...e,content:q.value});k.value=[a,...k.value],a.scopeType==="contact"&&a.scopeId&&b.value&&(j.value=new Map(j.value).set(a.scopeId,b.value.label)),W(),S.success(s("ai.global.memory.toast.created"))}catch(e){S.fail(s("ai.global.memory.toast.createFailed"),{description:String(e)})}finally{w.value=null}}}async function Ae(e){if(confirm(s("ai.global.memory.confirmDelete"))){w.value=e.id;try{await h.deleteAIMemory(e.id),k.value=k.value.filter(a=>a.id!==e.id),G.value===e.id&&N(),S.success(s("ai.global.memory.toast.deleted"))}catch(a){S.fail(s("ai.global.memory.toast.deleteFailed"),{description:String(a)})}finally{w.value=null}}}async function $e(){const e=J.value;if(!(e.length===0||!confirm(s("ai.global.memory.confirmClearView")))){v.value=!0;try{f.value==="entities"?await Promise.all(e.map(a=>h.deleteAIMemory(a.id))):await h.clearAIMemories({scopeType:f.value==="preferences"?"global":"self",scopeId:null}),await ve(),S.success(s("ai.global.memory.toast.cleared"))}catch(a){await ve(),S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(a)})}finally{v.value=!1}}}async function Me(){if(!(k.value.length===0||!confirm(s("ai.global.memory.confirmClearAll")))){v.value=!0;try{await h.clearAIMemories({all:!0}),k.value=[],j.value=new Map,N(),S.success(s("ai.global.memory.toast.cleared"))}catch(e){S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(e)})}finally{v.value=!1}}}return K(()=>ae.open,e=>{e?ve():(N(),W())},{immediate:!0}),K(f,()=>W()),K(C,e=>{o(),F++,R.value=!1,b.value=null,$.value="",L.value&&f.value==="entities"&&e==="contact"&&t("")}),K($,e=>{b.value=null,L.value&&f.value==="entities"&&C.value==="contact"&&l(e)}),Ee(()=>{F++,T&&clearTimeout(T),o()}),(e,a)=>{const p=Ue,X=tt,x=je,V=Ce,xe=He,Ve=Re;return c(),ee(Ve,{open:ue.open,ui:{content:"sm:max-w-2xl"},"onUpdate:open":a[6]||(a[6]=r=>z("update:open",r))},{content:E(()=>[i("div",lt,[i("header",ot,[i("div",null,[i("h2",nt,d(n(s)("ai.global.memory.title")),1),i("p",it,d(n(s)("ai.global.memory.description")),1)]),u(p,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm","aria-label":n(s)("common.close"),onClick:Q},null,8,["aria-label"])]),i("div",rt,[i("div",ct,[u(X,{modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=r=>f.value=r),items:se.value,content:!1,size:"sm",class:"min-w-max"},null,8,["modelValue","items"]),i("div",ut,[i("span",dt,d(n(s)("ai.global.memory.count",{count:J.value.length})),1),u(p,{icon:"i-lucide-plus",color:"primary",variant:"soft",size:"xs",disabled:v.value,onClick:a[1]||(a[1]=r=>L.value?W():de())},{default:E(()=>[B(d(n(s)("ai.global.memory.add")),1)]),_:1},8,["disabled"])])]),L.value?(c(),m("div",mt,[i("div",ft,[i("span",pt,d(n(s)("ai.global.memory.createTitle")),1),i("span",vt,d(n(s)("ai.global.memory.scopeLabel",{scope:ce.value})),1)]),f.value==="entities"?(c(),m("div",gt,[u(X,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=r=>C.value=r),items:re.value,content:!1,size:"xs"},null,8,["modelValue","items"]),u(x,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=r=>$.value=r),icon:"i-lucide-search",size:"sm",placeholder:n(s)("ai.global.entityPicker.search")},null,8,["modelValue","placeholder"]),i("div",yt,[R.value?(c(),m("div",ht,[u(V,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin text-gray-400"})])):(c(!0),m(te,{key:1},be(oe.value,r=>(c(),m("button",{key:`${r.scopeType}:${r.scopeId}`,type:"button",class:qe(["flex w-full items-center justify-between gap-3 rounded-md px-2.5 py-2 text-left text-xs transition-colors",b.value?.scopeId===r.scopeId&&b.value.scopeType===r.scopeType?"bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-200":"hover:bg-gray-100 dark:hover:bg-gray-800"]),onClick:Z=>b.value=r},[i("span",xt,d(r.label),1),i("span",_t,d(r.detail),1)],10,bt))),128)),!R.value&&oe.value.length===0?(c(),m("p",kt,d(n(s)("ai.global.entityPicker.empty")),1)):U("",!0)])])):U("",!0),u(xe,{modelValue:q.value,"onUpdate:modelValue":a[4]||(a[4]=r=>q.value=r),rows:3,maxlength:2e3,autoresize:"",class:"w-full",placeholder:n(s)("ai.global.memory.contentPlaceholder")},null,8,["modelValue","placeholder"]),i("div",wt,[i("span",Ct,d(q.value.trim().length)+" / 2000",1),i("div",St,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:W},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value==="new",disabled:!Y.value,onClick:Te},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled"])])])])):U("",!0),i("div",It,[v.value?(c(),m("div",Tt,[u(V,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):J.value.length===0?(c(),m("div",At,[u(V,{name:"i-lucide-brain",class:"mb-3 h-8 w-8 text-gray-300 dark:text-gray-600"}),i("p",$t,d(n(s)("ai.global.memory.empty")),1)])):(c(),m("div",Mt,[(c(!0),m(te,null,be(J.value,r=>(c(),m("article",{key:r.id,class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-gray-800"},[r.scopeType==="contact"||r.scopeType==="group"?(c(),m("div",Vt,[u(V,{name:r.scopeType==="contact"?"i-lucide-user-round":"i-lucide-users-round",class:"h-3.5 w-3.5"},null,8,["name"]),i("span",zt,d(fe(r)),1)])):U("",!0),G.value===r.id?(c(),m("div",Pt,[u(xe,{modelValue:I.value,"onUpdate:modelValue":a[5]||(a[5]=Z=>I.value=Z),rows:3,autoresize:"",class:"w-full"},null,8,["modelValue"]),i("div",Et,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:N},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value===r.id,disabled:!I.value.trim(),onClick:Z=>Ie(r)},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled","onClick"])])])):(c(),m(te,{key:2},[i("p",Ut,d(r.content),1),i("div",jt,[i("div",qt,[i("span",null,d(n(s)(`ai.global.memory.source.${r.sourceType}`)),1),a[8]||(a[8]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.createdAt",{time:ie(r.createdAt)})),1),r.updatedAt!==r.createdAt?(c(),m(te,{key:0},[a[7]||(a[7]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.updatedAt",{time:ie(r.updatedAt)})),1)],64)):U("",!0)]),i("div",Rt,[u(p,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs","aria-label":n(s)("common.edit"),onClick:Z=>ne(r)},null,8,["aria-label","onClick"]),u(p,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",loading:w.value===r.id,"aria-label":n(s)("common.delete"),onClick:Z=>Ae(r)},null,8,["loading","aria-label","onClick"])])]),r.sourceType==="ai"||r.sourceStatus!=="none"?(c(),m("div",Ft,[r.sourceType==="ai"?(c(),m("span",Bt,d(n(s)("ai.global.memory.aiSourceWarning")),1)):U("",!0),r.sourceStatus==="unavailable"?(c(),m("span",Lt,d(n(s)("ai.global.memory.sourceUnavailable")),1)):r.sourceStatus==="conversation"||r.sourceStatus==="message"?(c(),ee(p,{key:2,class:"ml-auto",icon:"i-lucide-external-link",color:"neutral",variant:"ghost",size:"xs",onClick:Z=>me(r)},{default:E(()=>[B(d(n(s)("ai.global.memory.viewSource")),1)]),_:1},8,["onClick"])):U("",!0)])):U("",!0)],64))]))),128))]))])]),i("footer",Nt,[u(p,{color:"error",variant:"ghost",size:"sm",disabled:J.value.length===0||v.value,onClick:$e},{default:E(()=>[B(d(n(s)("ai.global.memory.clearCurrent")),1)]),_:1},8,["disabled"]),i("div",Dt,[u(p,{color:"error",variant:"soft",size:"sm",disabled:k.value.length===0||v.value,onClick:Me},{default:E(()=>[B(d(n(s)("ai.global.memory.clearAll")),1)]),_:1},8,["disabled"]),u(p,{color:"neutral",variant:"outline",size:"sm",onClick:Q},{default:E(()=>[B(d(n(s)("common.close")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ht={class:"flex h-full min-w-0 flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Kt=["aria-expanded"],Jt={class:"main-content flex min-h-0 flex-1 overflow-hidden"},Qt={class:"flex h-full min-w-0 flex-1 flex-col overflow-hidden"},Wt={class:"relative min-h-0 flex-1"},Xt={key:0,class:"flex h-full items-center justify-center"},Yt={key:1,class:"mx-auto flex h-full max-w-lg flex-col items-center justify-center pb-16 text-center"},Zt={class:"mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-50 text-primary-500 dark:bg-primary-500/10 dark:text-primary-300"},ea={class:"text-base text-gray-800 dark:text-gray-100"},ta={class:"mt-2 text-sm leading-6 text-gray-500 dark:text-gray-400"},aa={key:2,class:"mx-auto max-w-3xl space-y-4"},sa={key:0,class:"flex justify-center pb-2"},la={key:1,class:"qa-pair space-y-6 pb-4"},oa={class:"shrink-0 px-4 pb-4"},na={class:"relative mx-auto max-w-3xl overflow-visible rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:ring-white/5"},Ca=_e({__name:"index",setup(ue){const{t:_,locale:ae}=ke(),z=Fe(),s=Be(),D=Se(),S=Le(),h=st(),O=we(),{chatKey:A,state:f}=h.ensureGlobalState(ae.value),k=ye(f,"messages"),j=ye(f,"isAIThinking"),v=ye(f,"currentAIChatId"),w=g([]),G=g(!1),I=g(!0),L=g(null);let q=!1,C=0,b=0,$=null;function M(){return!q&&z.name==="global-ai"}const R=g(0),T=g(!1),P=g(null),F=H(()=>et(k.value)),{messagesContainer:se,showScrollToBottom:J,handleScrollToBottom:re,scrollToBottom:le}=Ke(k,j),{visiblePairs:oe,hasOlderPairs:ce,loadOlderPairs:Y}=Je(F,v,se);async function Q(t){!M()||(typeof z.query.aiChatId=="string"?z.query.aiChatId:null)===t||await s.replace({query:{...z.query,aiChatId:t||void 0}})}async function ne(){G.value=!0;try{w.value=await O.getGlobalAIChats()}catch(t){D.fail(_("ai.global.toast.loadFailed"),{description:String(t)})}finally{G.value=!1}}async function N(t,o=null){const y=++C,l=await h.loadAIChat(A,t);if(!(y!==C||!M())){if(!l){D.fail(_("ai.global.toast.loadFailed"));return}I.value=!1,await Q(t),!(y!==C||!M())&&(await ge(),o?await de(o):(P.value=null,le(!0)))}}async function de(t){if(!F.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t)){D.warn(_("ai.global.memory.sourceUnavailable"));return}for(;ce.value&&!oe.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t);)await Y();P.value=t,await ge(),se.value?.querySelector(`[data-ai-message-id="${CSS.escape(t)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"}),$&&clearTimeout($),$=setTimeout(()=>{P.value===t&&(P.value=null)},4e3)}async function W(t){await N(t.aiChatId,t.messageId)}function ie(){C++,h.startNewAIChat(A)&&(L.value?.clearDraft(),I.value=!1,Q(null))}async function me(t){try{await O.updateAIChatTitle(t.id,t.title);const o=w.value.find(y=>y.id===t.id);o&&(o.title=t.title)}catch(o){D.fail(_("ai.global.toast.renameFailed"),{description:String(o)})}}async function fe(t){try{await O.deleteAIChat(t),w.value=w.value.filter(o=>o.id!==t),v.value===t&&ie()}catch(o){D.fail(_("ai.global.toast.deleteFailed"),{description:String(o)})}}async function pe(t){const o=await h.sendMessage(A,t.content,{entityRefs:t.entityRefs,onAccepted:t.onAccepted});if(o.success){le(!0),await ne();return}if(o.reason!=="aborted"){if(o.reason==="no_config"){S.openSettings("ai","defaultModel");return}o.reason==="busy"&&D.warn(_("ai.global.toast.busy"))}}return K(ae,t=>{h.ensureGlobalState(t)}),K(v,(t,o)=>{t!==o&&(I.value||Q(t),t&&ne())}),K(v,async t=>{const o=++b;if(!t){R.value=0;return}try{const y=await O.estimateContextTokens(t);if(o!==b||v.value!==t)return;R.value=y.success?y.tokens:0}catch{if(o!==b||v.value!==t)return;R.value=0}},{immediate:!0}),K(()=>z.query.aiChatId,t=>{const o=typeof t=="string"?t:null;if(!(I.value||j.value)){if(!o){v.value&&h.startNewAIChat(A);return}o!==v.value&&N(o)}}),Ne(async()=>{if(h.selectAssistantForSession(A,De(ae.value)),await ne(),!M())return;const t=++C,o=typeof z.query.aiChatId=="string"?z.query.aiChatId:null;let y=o?await h.loadAIChat(A,o):!1;if(t!==C||!M())return;const l=w.value[0]?.id;!y&&l&&l!==o&&(y=await h.loadAIChat(A,l),t!==C||!M())||(y||h.startNewAIChat(A),M()&&(I.value=!1,await Q(v.value),M()&&(await ge(),M()&&le(!0))))}),Oe(()=>{q=!0,C++,b++,$&&clearTimeout($)}),(t,o)=>{const y=Ce;return c(),m("div",Ht,[u(at,{title:n(_)("ai.global.title"),description:n(_)("ai.global.subtitle"),icon:"i-heroicons-sparkles","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",size:"compact"},{actions:E(()=>[i("button",{type:"button",class:"flex items-center gap-1 rounded-md px-1.5 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-200","aria-expanded":T.value,onClick:o[0]||(o[0]=l=>T.value=!0)},[u(y,{name:"i-lucide-brain",class:"h-3.5 w-3.5"}),i("span",null,d(n(_)("ai.global.memory.button")),1)],8,Kt),u(Qe,{"current-ai-chat-id":v.value,"current-messages":k.value,"fallback-title":n(_)("ai.global.title")},null,8,["current-ai-chat-id","current-messages","fallback-title"])]),_:1},8,["title","description"]),i("div",Jt,[u(We,{"session-id":"","active-id":v.value,conversations:w.value,loading:G.value,disabled:j.value,onSelect:N,onCreate:ie,onRename:me,onDelete:fe},null,8,["active-id","conversations","loading","disabled"]),i("section",Qt,[i("div",Wt,[i("div",{ref_key:"messagesContainer",ref:se,class:"absolute inset-0 overflow-y-auto px-5 py-6"},[I.value?(c(),m("div",Xt,[u(y,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):k.value.length===0?(c(),m("div",Yt,[i("div",Zt,[u(y,{name:"i-heroicons-chat-bubble-left-right",class:"h-6 w-6"})]),i("h2",ea,d(n(_)("ai.global.empty.title")),1),i("p",ta,d(n(_)("ai.global.empty.description")),1)])):(c(),m("div",aa,[n(ce)?(c(),m("div",sa,[i("button",{type:"button",class:"flex h-8 items-center gap-1.5 rounded-full px-3 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-200",onClick:o[1]||(o[1]=(...l)=>n(Y)&&n(Y)(...l))},[u(y,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.history.loadEarlier")),1)])])):U("",!0),(c(!0),m(te,null,be(n(oe),l=>(c(),m(te,{key:l.id},[l.standalone?(c(),ee(he,{key:0,role:l.standalone.role,content:l.standalone.content,timestamp:l.standalone.timestamp},null,8,["role","content","timestamp"])):(c(),m("div",la,[l.user?(c(),ee(he,{key:0,role:l.user.role,"message-id":l.user.id,content:l.user.content,timestamp:l.user.timestamp,"entity-refs":l.user.entityRefs,highlighted:P.value===l.user.id},null,8,["role","message-id","content","timestamp","entity-refs","highlighted"])):U("",!0),l.assistant&&(l.assistant.content||l.assistant.contentBlocks?.length||!l.assistant.isStreaming)?(c(),ee(he,{key:1,role:l.assistant.role,"message-id":l.assistant.id,content:l.assistant.content,timestamp:l.assistant.timestamp,"is-streaming":l.assistant.isStreaming,"process-duration-ms":l.assistant.processDurationMs,"content-blocks":l.assistant.contentBlocks,"show-capture-button":!l.assistant.isStreaming,"active-tool":l.assistant.isStreaming?n(f).currentToolStatus:null,highlighted:P.value===l.assistant.id},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool","highlighted"])):l.assistant?.isStreaming?(c(),ee(Xe,{key:2,"current-tool-status":n(f).currentToolStatus,"agent-status":n(f).agentStatus},null,8,["current-tool-status","agent-status"])):U("",!0)]))],64))),128))]))],512),u(Ge,{name:"fade-up"},{default:E(()=>[n(J)?(c(),m("button",{key:0,type:"button",class:"absolute bottom-4 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 hover:bg-gray-700 dark:bg-gray-700/90",onClick:o[2]||(o[2]=(...l)=>n(re)&&n(re)(...l))},[u(y,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.scrollToBottom")),1)])):U("",!0)]),_:1})]),i("div",oa,[i("div",na,[u(Ye,{ref_key:"chatInputRef",ref:L,embedded:"",disabled:j.value,status:j.value?"streaming":"ready","mention-scope":"global","skills-enabled":!1,placeholder:n(_)("ai.global.input.placeholder"),onSend:pe,onStop:o[3]||(o[3]=l=>n(h).stopGeneration(n(A)))},null,8,["disabled","status","placeholder"]),u(Ze,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":n(f).sessionTokenUsage,"agent-status":n(f).agentStatus,"estimated-context-tokens":R.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])]),u(Gt,{open:T.value,"onUpdate:open":o[4]||(o[4]=l=>T.value=l),onViewSource:W},null,8,["open"])])}}});export{Ca as default};
1
+ import{d as _e,a6 as ke,aF as we,L as ze,ap as Pe,K,al as Ee,o as c,f as ee,w as E,a as i,p as d,g as n,z as u,a8 as Ue,a9 as B,c as m,aq as je,a7 as Ce,F as te,j as be,n as qe,l as U,b as g,e as H,aa as Re,aD as Fe,ay as Be,J as Le,x as Ne,aG as De,C as ge,y as Oe,aE as Ge,aH as ye}from"./index-D9C3dyV8.js";import{_ as He,u as Ke,a as Je,b as Qe,c as We,d as he,e as Xe,f as Ye,g as Ze,h as et}from"./chatMessages-Dj1u-tFB.js";import{_ as tt}from"./Tabs-xVtuBuO0.js";import{u as Se}from"./useToast-Bmgpd3sl.js";import{P as at}from"./PageHeader-D5BcYKBs.js";import{u as st}from"./aiChat-CeJy-gG-.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-HjrJ3DXO.js";import"./service-DwCmXFtI.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js";import"./EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js";import"./prompt-Cepfb-5-.js";import"./RovingFocusItem-Bqgmzo42.js";import"./chatlabSiteLocale-CrCNb8QP.js";const lt={class:"flex max-h-[78vh] min-h-[520px] flex-col overflow-hidden"},ot={class:"flex items-start justify-between border-b border-gray-200 px-5 py-4 dark:border-gray-800"},nt={class:"text-base font-semibold text-gray-900 dark:text-white"},it={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},rt={class:"flex min-h-0 flex-1 flex-col px-5 py-4"},ct={class:"mb-3 flex items-center justify-between gap-3"},ut={class:"flex items-center gap-2"},dt={class:"text-xs text-gray-400"},mt={key:0,class:"mb-3 rounded-xl border border-primary-200 bg-primary-50/40 p-3 dark:border-primary-900/70 dark:bg-primary-950/20"},ft={class:"mb-2 flex items-center justify-between gap-3"},pt={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},vt={class:"truncate text-[11px] text-gray-400"},gt={key:0,class:"mb-3 space-y-2"},yt={class:"max-h-36 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-1 dark:border-gray-800"},ht={key:0,class:"flex h-20 items-center justify-center"},bt=["onClick"],xt={class:"truncate"},_t={class:"shrink-0 text-[10px] text-gray-400"},kt={key:2,class:"flex h-20 items-center justify-center text-xs text-gray-400"},wt={class:"mt-2 flex items-center justify-between gap-3"},Ct={class:"text-[11px] text-gray-400"},St={class:"flex items-center gap-2"},It={class:"min-h-0 flex-1 overflow-y-auto pr-1"},Tt={key:0,class:"flex h-full min-h-56 items-center justify-center"},At={key:1,class:"flex min-h-56 flex-col items-center justify-center text-center"},$t={class:"text-sm text-gray-500 dark:text-gray-400"},Mt={key:2,class:"space-y-2"},Vt={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-500"},zt={class:"truncate"},Pt={key:1},Et={class:"mt-2 flex justify-end gap-2"},Ut={class:"whitespace-pre-wrap break-words text-sm leading-6 text-gray-800 dark:text-gray-200"},jt={class:"mt-2 flex items-center justify-between gap-3"},qt={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-gray-400"},Rt={class:"flex shrink-0 items-center gap-0.5"},Ft={key:0,class:"mt-2 flex flex-wrap items-center justify-between gap-2 border-t border-gray-100 pt-2 text-[11px] dark:border-gray-800"},Bt={key:0,class:"text-amber-600 dark:text-amber-400"},Lt={key:1,class:"ml-auto text-gray-400 dark:text-gray-500"},Nt={class:"flex items-center justify-between border-t border-gray-200 px-5 py-3 dark:border-gray-800"},Dt={class:"flex items-center gap-2"},Ot=1500,Gt=_e({__name:"AIMemoryManagerModal",props:{open:{type:Boolean}},emits:["update:open","view-source"],setup(ue,{emit:_}){const ae=ue,z=_,{t:s,locale:D}=ke(),S=Se(),h=we(),O=ze(),A=Pe(),f=g("preferences"),k=g([]),j=g(new Map),v=g(!1),w=g(null),G=g(null),I=g(""),L=g(!1),q=g(""),C=g("contact"),b=g(null),$=g(""),M=g([]),R=g(!1);let T=null,P=null,F=0;const se=H(()=>[{label:s("ai.global.memory.preferences"),value:"preferences"},{label:s("ai.global.memory.self"),value:"self"},{label:s("ai.global.memory.entities"),value:"entities"}]),J=H(()=>k.value.filter(e=>f.value==="preferences"?e.scopeType==="global":f.value==="self"?e.scopeType==="self":e.scopeType==="contact"||e.scopeType==="group")),re=H(()=>[{label:s("ai.global.entityPicker.contacts"),value:"contact"},{label:s("ai.global.entityPicker.groups"),value:"group"}]),le=H(()=>{const e=$.value.trim().toLocaleLowerCase();return A.sessions.filter(a=>a.type==="group").filter(a=>!e||`${a.name} ${a.platform}`.toLocaleLowerCase().includes(e)).map(a=>({scopeType:"group",scopeId:a.id,label:a.name,detail:a.platform}))}),oe=H(()=>C.value==="contact"?M.value:le.value),ce=H(()=>f.value==="preferences"?s("ai.global.memory.preferences"):f.value==="self"?s("ai.global.memory.self"):b.value?.label??s("ai.global.memory.selectEntity")),Y=H(()=>q.value.trim().length>0&&q.value.trim().length<=2e3&&(f.value!=="entities"||b.value!==null));function Q(){z("update:open",!1)}function ne(e){G.value=e.id,I.value=e.content}function N(){G.value=null,I.value=""}function de(){N(),L.value=!0,q.value="",b.value=null,$.value="",f.value==="entities"&&C.value==="contact"&&t("")}function W(){L.value=!1,q.value="",b.value=null,$.value="",F++,R.value=!1,T&&(clearTimeout(T),T=null),o()}function ie(e){return new Intl.DateTimeFormat(D.value,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(e)}function me(e){!e.sourceAIChatId||e.sourceStatus!=="conversation"&&e.sourceStatus!=="message"||(z("update:open",!1),z("view-source",{aiChatId:e.sourceAIChatId,messageId:e.sourceStatus==="message"?e.sourceMessageId:null}))}function fe(e){return e.scopeId?e.scopeType==="contact"?j.value.get(e.scopeId)??e.scopeId:A.sessions.find(a=>a.id===e.scopeId)?.name??e.scopeId:""}async function pe(e){const a=[...new Set(e.filter(x=>x.scopeType==="contact").map(x=>x.scopeId))].filter(x=>!!x),p=new Map,X=await Promise.allSettled(a.map(async x=>({key:x,detail:await O.getContactDetail(x,{acceptStale:!0})})));for(const x of X)x.status==="fulfilled"&&x.value.detail.contact&&p.set(x.value.key,x.value.detail.contact.displayName);j.value=p}async function t(e){const a=++F;R.value=!0;try{const p={acceptStale:!0,timeRangePreset:"all",page:1,pageSize:100,query:e.trim()||void 0},X=await Promise.all([O.getContacts({...p,pool:"friend"}),O.getContacts({...p,pool:"non_friend"})]);if(a!==F)return;const x=new Map;X.flatMap(V=>V.contacts).forEach(V=>x.set(V.key,V)),M.value=[...x.values()].map(V=>({scopeType:"contact",scopeId:V.key,label:V.displayName,detail:V.platformId})),y(X,e)}catch(p){if(a!==F)return;o(),M.value=[],S.fail(s("ai.global.entityPicker.loadFailed"),{description:String(p)})}finally{a===F&&(R.value=!1)}}function o(){P&&(clearTimeout(P),P=null)}function y(e,a){o(),!(!L.value||f.value!=="entities"||C.value!=="contact")&&e.some(p=>p.task?.status==="running")&&(P=setTimeout(()=>{P=null,t(a)},Ot))}function l(e){T&&clearTimeout(T),o(),F++,T=setTimeout(()=>{T=null,t(e)},200)}async function ve(){v.value=!0;try{const e=await h.getAIMemories();k.value=e,await Promise.all([A.loadSessions(),pe(e)])}catch(e){S.fail(s("ai.global.memory.toast.loadFailed"),{description:String(e)})}finally{v.value=!1}}async function Ie(e){if(I.value.trim()){w.value=e.id;try{const a=await h.updateAIMemory(e.id,I.value);k.value=k.value.map(p=>p.id===a.id?a:p),N(),S.success(s("ai.global.memory.toast.saved"))}catch(a){S.fail(s("ai.global.memory.toast.saveFailed"),{description:String(a)})}finally{w.value=null}}}async function Te(){if(Y.value){w.value="new";try{const e=f.value==="preferences"?{scopeType:"global",scopeId:null}:f.value==="self"?{scopeType:"self",scopeId:null}:{scopeType:b.value.scopeType,scopeId:b.value.scopeId},a=await h.createAIMemory({...e,content:q.value});k.value=[a,...k.value],a.scopeType==="contact"&&a.scopeId&&b.value&&(j.value=new Map(j.value).set(a.scopeId,b.value.label)),W(),S.success(s("ai.global.memory.toast.created"))}catch(e){S.fail(s("ai.global.memory.toast.createFailed"),{description:String(e)})}finally{w.value=null}}}async function Ae(e){if(confirm(s("ai.global.memory.confirmDelete"))){w.value=e.id;try{await h.deleteAIMemory(e.id),k.value=k.value.filter(a=>a.id!==e.id),G.value===e.id&&N(),S.success(s("ai.global.memory.toast.deleted"))}catch(a){S.fail(s("ai.global.memory.toast.deleteFailed"),{description:String(a)})}finally{w.value=null}}}async function $e(){const e=J.value;if(!(e.length===0||!confirm(s("ai.global.memory.confirmClearView")))){v.value=!0;try{f.value==="entities"?await Promise.all(e.map(a=>h.deleteAIMemory(a.id))):await h.clearAIMemories({scopeType:f.value==="preferences"?"global":"self",scopeId:null}),await ve(),S.success(s("ai.global.memory.toast.cleared"))}catch(a){await ve(),S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(a)})}finally{v.value=!1}}}async function Me(){if(!(k.value.length===0||!confirm(s("ai.global.memory.confirmClearAll")))){v.value=!0;try{await h.clearAIMemories({all:!0}),k.value=[],j.value=new Map,N(),S.success(s("ai.global.memory.toast.cleared"))}catch(e){S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(e)})}finally{v.value=!1}}}return K(()=>ae.open,e=>{e?ve():(N(),W())},{immediate:!0}),K(f,()=>W()),K(C,e=>{o(),F++,R.value=!1,b.value=null,$.value="",L.value&&f.value==="entities"&&e==="contact"&&t("")}),K($,e=>{b.value=null,L.value&&f.value==="entities"&&C.value==="contact"&&l(e)}),Ee(()=>{F++,T&&clearTimeout(T),o()}),(e,a)=>{const p=Ue,X=tt,x=je,V=Ce,xe=He,Ve=Re;return c(),ee(Ve,{open:ue.open,ui:{content:"sm:max-w-2xl"},"onUpdate:open":a[6]||(a[6]=r=>z("update:open",r))},{content:E(()=>[i("div",lt,[i("header",ot,[i("div",null,[i("h2",nt,d(n(s)("ai.global.memory.title")),1),i("p",it,d(n(s)("ai.global.memory.description")),1)]),u(p,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm","aria-label":n(s)("common.close"),onClick:Q},null,8,["aria-label"])]),i("div",rt,[i("div",ct,[u(X,{modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=r=>f.value=r),items:se.value,content:!1,size:"sm",class:"min-w-max"},null,8,["modelValue","items"]),i("div",ut,[i("span",dt,d(n(s)("ai.global.memory.count",{count:J.value.length})),1),u(p,{icon:"i-lucide-plus",color:"primary",variant:"soft",size:"xs",disabled:v.value,onClick:a[1]||(a[1]=r=>L.value?W():de())},{default:E(()=>[B(d(n(s)("ai.global.memory.add")),1)]),_:1},8,["disabled"])])]),L.value?(c(),m("div",mt,[i("div",ft,[i("span",pt,d(n(s)("ai.global.memory.createTitle")),1),i("span",vt,d(n(s)("ai.global.memory.scopeLabel",{scope:ce.value})),1)]),f.value==="entities"?(c(),m("div",gt,[u(X,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=r=>C.value=r),items:re.value,content:!1,size:"xs"},null,8,["modelValue","items"]),u(x,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=r=>$.value=r),icon:"i-lucide-search",size:"sm",placeholder:n(s)("ai.global.entityPicker.search")},null,8,["modelValue","placeholder"]),i("div",yt,[R.value?(c(),m("div",ht,[u(V,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin text-gray-400"})])):(c(!0),m(te,{key:1},be(oe.value,r=>(c(),m("button",{key:`${r.scopeType}:${r.scopeId}`,type:"button",class:qe(["flex w-full items-center justify-between gap-3 rounded-md px-2.5 py-2 text-left text-xs transition-colors",b.value?.scopeId===r.scopeId&&b.value.scopeType===r.scopeType?"bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-200":"hover:bg-gray-100 dark:hover:bg-gray-800"]),onClick:Z=>b.value=r},[i("span",xt,d(r.label),1),i("span",_t,d(r.detail),1)],10,bt))),128)),!R.value&&oe.value.length===0?(c(),m("p",kt,d(n(s)("ai.global.entityPicker.empty")),1)):U("",!0)])])):U("",!0),u(xe,{modelValue:q.value,"onUpdate:modelValue":a[4]||(a[4]=r=>q.value=r),rows:3,maxlength:2e3,autoresize:"",class:"w-full",placeholder:n(s)("ai.global.memory.contentPlaceholder")},null,8,["modelValue","placeholder"]),i("div",wt,[i("span",Ct,d(q.value.trim().length)+" / 2000",1),i("div",St,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:W},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value==="new",disabled:!Y.value,onClick:Te},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled"])])])])):U("",!0),i("div",It,[v.value?(c(),m("div",Tt,[u(V,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):J.value.length===0?(c(),m("div",At,[u(V,{name:"i-lucide-brain",class:"mb-3 h-8 w-8 text-gray-300 dark:text-gray-600"}),i("p",$t,d(n(s)("ai.global.memory.empty")),1)])):(c(),m("div",Mt,[(c(!0),m(te,null,be(J.value,r=>(c(),m("article",{key:r.id,class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-gray-800"},[r.scopeType==="contact"||r.scopeType==="group"?(c(),m("div",Vt,[u(V,{name:r.scopeType==="contact"?"i-lucide-user-round":"i-lucide-users-round",class:"h-3.5 w-3.5"},null,8,["name"]),i("span",zt,d(fe(r)),1)])):U("",!0),G.value===r.id?(c(),m("div",Pt,[u(xe,{modelValue:I.value,"onUpdate:modelValue":a[5]||(a[5]=Z=>I.value=Z),rows:3,autoresize:"",class:"w-full"},null,8,["modelValue"]),i("div",Et,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:N},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value===r.id,disabled:!I.value.trim(),onClick:Z=>Ie(r)},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled","onClick"])])])):(c(),m(te,{key:2},[i("p",Ut,d(r.content),1),i("div",jt,[i("div",qt,[i("span",null,d(n(s)(`ai.global.memory.source.${r.sourceType}`)),1),a[8]||(a[8]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.createdAt",{time:ie(r.createdAt)})),1),r.updatedAt!==r.createdAt?(c(),m(te,{key:0},[a[7]||(a[7]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.updatedAt",{time:ie(r.updatedAt)})),1)],64)):U("",!0)]),i("div",Rt,[u(p,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs","aria-label":n(s)("common.edit"),onClick:Z=>ne(r)},null,8,["aria-label","onClick"]),u(p,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",loading:w.value===r.id,"aria-label":n(s)("common.delete"),onClick:Z=>Ae(r)},null,8,["loading","aria-label","onClick"])])]),r.sourceType==="ai"||r.sourceStatus!=="none"?(c(),m("div",Ft,[r.sourceType==="ai"?(c(),m("span",Bt,d(n(s)("ai.global.memory.aiSourceWarning")),1)):U("",!0),r.sourceStatus==="unavailable"?(c(),m("span",Lt,d(n(s)("ai.global.memory.sourceUnavailable")),1)):r.sourceStatus==="conversation"||r.sourceStatus==="message"?(c(),ee(p,{key:2,class:"ml-auto",icon:"i-lucide-external-link",color:"neutral",variant:"ghost",size:"xs",onClick:Z=>me(r)},{default:E(()=>[B(d(n(s)("ai.global.memory.viewSource")),1)]),_:1},8,["onClick"])):U("",!0)])):U("",!0)],64))]))),128))]))])]),i("footer",Nt,[u(p,{color:"error",variant:"ghost",size:"sm",disabled:J.value.length===0||v.value,onClick:$e},{default:E(()=>[B(d(n(s)("ai.global.memory.clearCurrent")),1)]),_:1},8,["disabled"]),i("div",Dt,[u(p,{color:"error",variant:"soft",size:"sm",disabled:k.value.length===0||v.value,onClick:Me},{default:E(()=>[B(d(n(s)("ai.global.memory.clearAll")),1)]),_:1},8,["disabled"]),u(p,{color:"neutral",variant:"outline",size:"sm",onClick:Q},{default:E(()=>[B(d(n(s)("common.close")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ht={class:"flex h-full min-w-0 flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Kt=["aria-expanded"],Jt={class:"main-content flex min-h-0 flex-1 overflow-hidden"},Qt={class:"flex h-full min-w-0 flex-1 flex-col overflow-hidden"},Wt={class:"relative min-h-0 flex-1"},Xt={key:0,class:"flex h-full items-center justify-center"},Yt={key:1,class:"mx-auto flex h-full max-w-lg flex-col items-center justify-center pb-16 text-center"},Zt={class:"mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-50 text-primary-500 dark:bg-primary-500/10 dark:text-primary-300"},ea={class:"text-base text-gray-800 dark:text-gray-100"},ta={class:"mt-2 text-sm leading-6 text-gray-500 dark:text-gray-400"},aa={key:2,class:"mx-auto max-w-3xl space-y-4"},sa={key:0,class:"flex justify-center pb-2"},la={key:1,class:"qa-pair space-y-6 pb-4"},oa={class:"shrink-0 px-4 pb-4"},na={class:"relative mx-auto max-w-3xl overflow-visible rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:ring-white/5"},Ca=_e({__name:"index",setup(ue){const{t:_,locale:ae}=ke(),z=Fe(),s=Be(),D=Se(),S=Le(),h=st(),O=we(),{chatKey:A,state:f}=h.ensureGlobalState(ae.value),k=ye(f,"messages"),j=ye(f,"isAIThinking"),v=ye(f,"currentAIChatId"),w=g([]),G=g(!1),I=g(!0),L=g(null);let q=!1,C=0,b=0,$=null;function M(){return!q&&z.name==="global-ai"}const R=g(0),T=g(!1),P=g(null),F=H(()=>et(k.value)),{messagesContainer:se,showScrollToBottom:J,handleScrollToBottom:re,scrollToBottom:le}=Ke(k,j),{visiblePairs:oe,hasOlderPairs:ce,loadOlderPairs:Y}=Je(F,v,se);async function Q(t){!M()||(typeof z.query.aiChatId=="string"?z.query.aiChatId:null)===t||await s.replace({query:{...z.query,aiChatId:t||void 0}})}async function ne(){G.value=!0;try{w.value=await O.getGlobalAIChats()}catch(t){D.fail(_("ai.global.toast.loadFailed"),{description:String(t)})}finally{G.value=!1}}async function N(t,o=null){const y=++C,l=await h.loadAIChat(A,t);if(!(y!==C||!M())){if(!l){D.fail(_("ai.global.toast.loadFailed"));return}I.value=!1,await Q(t),!(y!==C||!M())&&(await ge(),o?await de(o):(P.value=null,le(!0)))}}async function de(t){if(!F.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t)){D.warn(_("ai.global.memory.sourceUnavailable"));return}for(;ce.value&&!oe.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t);)await Y();P.value=t,await ge(),se.value?.querySelector(`[data-ai-message-id="${CSS.escape(t)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"}),$&&clearTimeout($),$=setTimeout(()=>{P.value===t&&(P.value=null)},4e3)}async function W(t){await N(t.aiChatId,t.messageId)}function ie(){C++,h.startNewAIChat(A)&&(L.value?.clearDraft(),I.value=!1,Q(null))}async function me(t){try{await O.updateAIChatTitle(t.id,t.title);const o=w.value.find(y=>y.id===t.id);o&&(o.title=t.title)}catch(o){D.fail(_("ai.global.toast.renameFailed"),{description:String(o)})}}async function fe(t){try{await O.deleteAIChat(t),w.value=w.value.filter(o=>o.id!==t),v.value===t&&ie()}catch(o){D.fail(_("ai.global.toast.deleteFailed"),{description:String(o)})}}async function pe(t){const o=await h.sendMessage(A,t.content,{entityRefs:t.entityRefs,onAccepted:t.onAccepted});if(o.success){le(!0),await ne();return}if(o.reason!=="aborted"){if(o.reason==="no_config"){S.openSettings("ai","defaultModel");return}o.reason==="busy"&&D.warn(_("ai.global.toast.busy"))}}return K(ae,t=>{h.ensureGlobalState(t)}),K(v,(t,o)=>{t!==o&&(I.value||Q(t),t&&ne())}),K(v,async t=>{const o=++b;if(!t){R.value=0;return}try{const y=await O.estimateContextTokens(t);if(o!==b||v.value!==t)return;R.value=y.success?y.tokens:0}catch{if(o!==b||v.value!==t)return;R.value=0}},{immediate:!0}),K(()=>z.query.aiChatId,t=>{const o=typeof t=="string"?t:null;if(!(I.value||j.value)){if(!o){v.value&&h.startNewAIChat(A);return}o!==v.value&&N(o)}}),Ne(async()=>{if(h.selectAssistantForSession(A,De(ae.value)),await ne(),!M())return;const t=++C,o=typeof z.query.aiChatId=="string"?z.query.aiChatId:null;let y=o?await h.loadAIChat(A,o):!1;if(t!==C||!M())return;const l=w.value[0]?.id;!y&&l&&l!==o&&(y=await h.loadAIChat(A,l),t!==C||!M())||(y||h.startNewAIChat(A),M()&&(I.value=!1,await Q(v.value),M()&&(await ge(),M()&&le(!0))))}),Oe(()=>{q=!0,C++,b++,$&&clearTimeout($)}),(t,o)=>{const y=Ce;return c(),m("div",Ht,[u(at,{title:n(_)("ai.global.title"),description:n(_)("ai.global.subtitle"),icon:"i-heroicons-sparkles","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",size:"compact"},{actions:E(()=>[i("button",{type:"button",class:"flex items-center gap-1 rounded-md px-1.5 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-200","aria-expanded":T.value,onClick:o[0]||(o[0]=l=>T.value=!0)},[u(y,{name:"i-lucide-brain",class:"h-3.5 w-3.5"}),i("span",null,d(n(_)("ai.global.memory.button")),1)],8,Kt),u(Qe,{"current-ai-chat-id":v.value,"current-messages":k.value,"fallback-title":n(_)("ai.global.title")},null,8,["current-ai-chat-id","current-messages","fallback-title"])]),_:1},8,["title","description"]),i("div",Jt,[u(We,{"session-id":"","active-id":v.value,conversations:w.value,loading:G.value,disabled:j.value,onSelect:N,onCreate:ie,onRename:me,onDelete:fe},null,8,["active-id","conversations","loading","disabled"]),i("section",Qt,[i("div",Wt,[i("div",{ref_key:"messagesContainer",ref:se,class:"absolute inset-0 overflow-y-auto px-5 py-6"},[I.value?(c(),m("div",Xt,[u(y,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):k.value.length===0?(c(),m("div",Yt,[i("div",Zt,[u(y,{name:"i-heroicons-chat-bubble-left-right",class:"h-6 w-6"})]),i("h2",ea,d(n(_)("ai.global.empty.title")),1),i("p",ta,d(n(_)("ai.global.empty.description")),1)])):(c(),m("div",aa,[n(ce)?(c(),m("div",sa,[i("button",{type:"button",class:"flex h-8 items-center gap-1.5 rounded-full px-3 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-200",onClick:o[1]||(o[1]=(...l)=>n(Y)&&n(Y)(...l))},[u(y,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.history.loadEarlier")),1)])])):U("",!0),(c(!0),m(te,null,be(n(oe),l=>(c(),m(te,{key:l.id},[l.standalone?(c(),ee(he,{key:0,role:l.standalone.role,content:l.standalone.content,timestamp:l.standalone.timestamp},null,8,["role","content","timestamp"])):(c(),m("div",la,[l.user?(c(),ee(he,{key:0,role:l.user.role,"message-id":l.user.id,content:l.user.content,timestamp:l.user.timestamp,"entity-refs":l.user.entityRefs,highlighted:P.value===l.user.id},null,8,["role","message-id","content","timestamp","entity-refs","highlighted"])):U("",!0),l.assistant&&(l.assistant.content||l.assistant.contentBlocks?.length||!l.assistant.isStreaming)?(c(),ee(he,{key:1,role:l.assistant.role,"message-id":l.assistant.id,content:l.assistant.content,timestamp:l.assistant.timestamp,"is-streaming":l.assistant.isStreaming,"process-duration-ms":l.assistant.processDurationMs,"content-blocks":l.assistant.contentBlocks,"show-capture-button":!l.assistant.isStreaming,"active-tool":l.assistant.isStreaming?n(f).currentToolStatus:null,highlighted:P.value===l.assistant.id},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool","highlighted"])):l.assistant?.isStreaming?(c(),ee(Xe,{key:2,"current-tool-status":n(f).currentToolStatus,"agent-status":n(f).agentStatus},null,8,["current-tool-status","agent-status"])):U("",!0)]))],64))),128))]))],512),u(Ge,{name:"fade-up"},{default:E(()=>[n(J)?(c(),m("button",{key:0,type:"button",class:"absolute bottom-4 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 hover:bg-gray-700 dark:bg-gray-700/90",onClick:o[2]||(o[2]=(...l)=>n(re)&&n(re)(...l))},[u(y,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.scrollToBottom")),1)])):U("",!0)]),_:1})]),i("div",oa,[i("div",na,[u(Ye,{ref_key:"chatInputRef",ref:L,embedded:"",disabled:j.value,status:j.value?"streaming":"ready","mention-scope":"global","skills-enabled":!1,placeholder:n(_)("ai.global.input.placeholder"),onSend:pe,onStop:o[3]||(o[3]=l=>n(h).stopGeneration(n(A)))},null,8,["disabled","status","placeholder"]),u(Ze,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":n(f).sessionTokenUsage,"agent-status":n(f).agentStatus,"estimated-context-tokens":R.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])]),u(Gt,{open:T.value,"onUpdate:open":o[4]||(o[4]=l=>T.value=l),onViewSource:W},null,8,["open"])])}}});export{Ca as default};
@@ -0,0 +1 @@
1
+ .tab-slide-enter-active[data-v-223aca33]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-223aca33]{opacity:0;transform:translateY(10px)}
@@ -1 +1 @@
1
- .fade-enter-active[data-v-8da082e6],.fade-leave-active[data-v-8da082e6]{transition:opacity .15s ease}.fade-enter-from[data-v-8da082e6],.fade-leave-to[data-v-8da082e6]{opacity:0}.tab-slide-enter-active[data-v-b0a4ab03]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-b0a4ab03]{opacity:0;transform:translateY(10px)}
1
+ .fade-enter-active[data-v-8da082e6],.fade-leave-active[data-v-8da082e6]{transition:opacity .15s ease}.fade-enter-from[data-v-8da082e6],.fade-leave-to[data-v-8da082e6]{opacity:0}.tab-slide-enter-active[data-v-021279bd]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-021279bd]{opacity:0;transform:translateY(10px)}
@@ -1 +1 @@
1
- import{d as a,a6 as n,o,c,a as e,z as r,a7 as i,p as m,g as p}from"./index-B1oj9KDv.js";import"./vendor-snapdom--nZvo8Sg.js";const _={class:"flex min-h-0 flex-1 items-center justify-center px-6 py-12"},l={class:"text-center text-sm text-gray-500 dark:text-gray-400"},h=a({__name:"index",setup(d){const{t}=n();return(x,u)=>{const s=i;return o(),c("main",_,[e("div",l,[r(s,{name:"i-lucide-git-compare-arrows",class:"mx-auto mb-3 h-8 w-8 text-pink-500"}),e("p",null,m(p(t)("insight.reserved")),1)])])}}});export{h as default};
1
+ import{d as a,a6 as n,o,c,a as e,z as r,a7 as i,p as m,g as p}from"./index-D9C3dyV8.js";import"./vendor-snapdom--nZvo8Sg.js";const _={class:"flex min-h-0 flex-1 items-center justify-center px-6 py-12"},l={class:"text-center text-sm text-gray-500 dark:text-gray-400"},h=a({__name:"index",setup(d){const{t}=n();return(x,u)=>{const s=i;return o(),c("main",_,[e("div",l,[r(s,{name:"i-lucide-git-compare-arrows",class:"mx-auto mb-3 h-8 w-8 text-pink-500"}),e("p",null,m(p(t)("insight.reserved")),1)])])}}});export{h as default};